32 template<
class Thermo>
35 const scalar mu1,
const scalar T1,
36 const scalar mu2,
const scalar T2
39 scalar rootT1 =
sqrt(T1);
40 scalar mu1rootT2 = mu1*
sqrt(T2);
41 scalar mu2rootT1 = mu2*rootT1;
43 Ts_ = (mu2rootT1 - mu1rootT2)/(mu1rootT2/T1 - mu2rootT1/T2);
45 As_ = mu1*(1.0 + Ts_/T1)/rootT1;
51 template<
class Thermo>
65 template<
class Thermo>
69 const scalar mu1,
const scalar T1,
70 const scalar mu2,
const scalar T2
75 calcCoeffs(mu1, T1, mu2, T2);
79 template<
class Thermo>
92 template<
class Thermo>
100 template<
class Thermo>
113 template<
class Thermo>
124 template<
class Thermo>
127 const scalar
p,
const scalar
T 130 scalar Cv_ = this->
Cv(p,
T);
131 return mu(
p,
T)*Cv_*(1.32 + 1.77*this->
R()/Cv_);
135 template<
class Thermo>
149 template<
class Thermo>
155 scalar Y1 = this->
Y();
157 Thermo::operator+=(st);
159 if (
mag(this->
Y()) > SMALL)
162 scalar Y2 = st.Y()/this->
Y();
164 As_ = Y1*As_ + Y2*st.As_;
165 Ts_ = Y1*Ts_ + Y2*st.Ts_;
170 template<
class Thermo>
176 Thermo::operator*=(
s);
182 template<
class Thermo>
185 const sutherlandTransport<Thermo>& st1,
186 const sutherlandTransport<Thermo>& st2
191 static_cast<const Thermo&>(st1) + static_cast<const Thermo&>(st2)
194 if (
mag(t.Y()) < SMALL)
196 return sutherlandTransport<Thermo>
205 scalar Y1 = st1.Y()/t.Y();
206 scalar Y2 = st2.Y()/t.Y();
208 return sutherlandTransport<Thermo>
211 Y1*st1.As_ + Y2*st2.As_,
212 Y1*st1.Ts_ + Y2*st2.Ts_
218 template<
class Thermo>
222 const sutherlandTransport<Thermo>& st
225 return sutherlandTransport<Thermo>
227 s*
static_cast<const Thermo&
>(st),
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
A list of keyword definitions, which are a keyword followed by a number of values (eg...
scalar kappa(const scalar p, const scalar T) const
Thermal conductivity [W/mK].
dimensionedScalar sqrt(const dimensionedScalar &ds)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
const volScalarField & Cv
const dimensionedScalar kappa
Coulomb constant: default SI units: [N.m2/C2].
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
A class for handling words, derived from Foam::string.
sutherlandTransport(const Thermo &t, const scalar As, const scalar Ts)
Construct from components.
scalar alphah(const scalar p, const scalar T) const
Thermal diffusivity of enthalpy [kg/ms].
autoPtr< sutherlandTransport > clone() const
Construct and return a clone.
static autoPtr< sutherlandTransport > New(const dictionary &dict)
const volScalarField & Cp
const dimensionedScalar mu
Atomic mass unit.
scalar mu(const scalar p, const scalar T) const
Dynamic viscosity [kg/ms].
#define R(A, B, C, D, E, F, K, M)
PtrList< volScalarField > & Y
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
Transport package using Sutherland's formula.
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))