extract thermal conductivity calculation to Particle class methods

This commit is contained in:
Yeongdo Park 2018-11-25 16:46:19 -05:00
parent 46f571273c
commit 093153e83d
7 changed files with 58 additions and 45 deletions

View file

@ -37,6 +37,7 @@ SourceFiles
#define Ion_H
#include "Particle.H"
#include "hashedWordList.H"
#include "scalarList.H"
@ -136,6 +137,8 @@ public:
inline scalar Zrot(const GasState &state) const;
inline scalar lambda(const scalar mu, const scalar D, const GasState &state) const;
inline bool hasRct(const word &target) const;
inline scalar Arct(const word &target) const;

View file

@ -68,6 +68,14 @@ inline Foam::scalar Foam::Ion::Zrot(const GasState &state)
}
inline Foam::scalar Foam::Ion::lambda(const scalar mu, const scalar D, const GasState &state)
const
{
return Particle::lambda(mu, D, Zrot(state), state);
}
inline bool Foam::Ion::hasRct(const word &target)
const
{

View file

@ -133,6 +133,8 @@ public:
inline scalar Zrot(scalar T) const;
inline scalar lambda(const scalar mu, const scalar D, const GasState &state) const;
// Check
// Edit

View file

@ -85,6 +85,13 @@ inline Foam::scalar Foam::Neutral::Zrot(const scalar T)
}
inline Foam::scalar Foam::Neutral::lambda(const scalar mu, const scalar D, const GasState &state)
const
{
return Particle::lambda(mu, D, Zrot(state.T()), state);
}
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //

View file

@ -40,6 +40,8 @@ SourceFiles
#include "scalar.H"
#include "thermoPhysicsTypes.H"
#include "GasState.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
@ -183,6 +185,11 @@ public:
inline scalar AB(const scalar rSc) const;
inline scalar fTrans(const scalar rSc) const;
inline scalar lambda(const scalar mu, const scalar D, const GasState &state) const;
inline scalar lambda(const scalar mu, const scalar D, const scalar Zrot, const GasState &state) const;
// Check
// Edit

View file

@ -25,6 +25,8 @@ License
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#include "Particle.H"
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
@ -142,6 +144,30 @@ inline Foam::scalar Foam::Particle::fTrans(const scalar rSc)
}
inline Foam::scalar Foam::Particle::lambda(const scalar mu, const scalar D, const scalar Zrot, const GasState &state)
const
{
const scalar rSc = state.rho() * D / mu;
const scalar A = 5./2. - rSc;
const scalar B = Zrot + (2./pi) * ((5./3.)*CvRot()/R() + rSc);
const scalar AB = (2./pi) * (A/B);
const scalar fTrans = (5./2.) * (1.0 - AB * CvRot() / CvTrans());
const scalar fRot = rSc * (1.0 + AB);
const scalar fVib = rSc;
return (mu/W()) * (fTrans*CvTrans() + fRot*CvRot() + fVib*CvVib(state.p(), state.T()));
}
inline Foam::scalar Foam::Particle::lambda(const scalar mu, const scalar D, const GasState &state)
const
{
return lambda(mu, D, 0.0, state);
}
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //

View file

@ -296,67 +296,28 @@ void Foam::diffusivityModel::calculateK
const GasState &state
)
{
const scalar rhoi = state.rho();
const scalar pi = state.p();
const scalar Ti = state.T();
label ionStart = 0;
if (electron_.valid())
{
ionStart = 1;
const scalar rSc = rhoi * Dii[0] / muI[0];
const scalar A = 5./2. - rSc;
const scalar B = (2./Neutral::pi) * ((5./3.)*electron_->CvRot()/electron_->R() + rSc);
const scalar AB = (2./Neutral::pi)*(A/B);
const scalar fTrans = (5./2.) * (1.0 - AB * electron_->CvRot() / electron_->CvTrans());
const scalar fRot = rSc*(1.0 + AB);
const scalar fVib = rSc;
kI[0] = (muI[0]/electron_->W()) *
(fTrans*electron_->CvTrans() + fRot*electron_->CvRot() + fVib*electron_->CvVib(pi, Ti));
kI[0] = electron_->lambda(muI[0], Dii[0], state);
}
forAll (ions_, j)
{
label i = j + ionStart;
const scalar rSc = rhoi * Dii[i] / muI[i];
const scalar A = 5./2. - rSc;
const scalar B = ions_[j].Zrot(Ti) + (2./Neutral::pi) * ((5./3.)*ions_[j].CvRot()/ions_[j].R() + rSc);
const scalar AB = (2./Neutral::pi)*(A/B);
const scalar fTrans = (5./2.) * (1.0 - AB * ions_[j].CvRot() / ions_[j].CvTrans());
const scalar fRot = rSc*(1.0 + AB);
const scalar fVib = rSc;
kI[i] = (muI[i]/ions_[j].W()) *
(fTrans*ions_[j].CvTrans() + fRot*ions_[j].CvRot() + fVib*ions_[j].CvVib(pi, Ti));
kI[i] = ions_[j].lambda(muI[i], Dii[i], state);
}
forAll (neutrals_, j)
{
label i = j + ionStart + ions_.size();
const scalar rSc = rhoi * Dii[i] / muI[i];
const scalar A = 5./2. - rSc;
const scalar B = neutrals_[j].Zrot(Ti) + (2./Neutral::pi) * ((5./3.)*neutrals_[j].CvRot()/neutrals_[j].R() + rSc);
const scalar AB = (2./Neutral::pi)*(A/B);
const scalar fTrans = (5./2.) * (1.0 - AB * neutrals_[j].CvRot() / neutrals_[j].CvTrans());
const scalar fRot = rSc*(1.0 + AB);
const scalar fVib = rSc;
kI[i] = (muI[i]/neutrals_[j].W()) *
(fTrans*neutrals_[j].CvTrans() + fRot*neutrals_[j].CvRot() + fVib*neutrals_[j].CvVib(pi, Ti));
kI[i] = neutrals_[j].lambda(muI[i], Dii[i], state);
}
}
@ -676,7 +637,6 @@ void Foam::diffusivityModel::correct()
forAll (p, celli)
{
const scalar pi = p[celli];
const scalar Ti = T[celli];
@ -712,8 +672,8 @@ void Foam::diffusivityModel::correct()
forAll(p.boundaryField(), patchi)
{
const volScalarField::Patch &pp = p.boundaryField()[patchi];
const volScalarField::Patch &Tp = T.boundaryField()[patchi];
const volScalarField::Patch &pp = p.boundaryField()[patchi];
const volScalarField::Patch &Tp = T.boundaryField()[patchi];
forAll(pp, facei)
{