31 #include "surfaceInterpolate.H"
41 template<
class BasicThermophysicalTransportModel>
44 const PtrList<volScalarField>&
Y = this->
thermo().
Y();
50 if (mixtureDiffusionCoefficients_)
106 (1/Wm -
Y[i]/this->
thermo().Wi(i))
114 template<
class BasicThermophysicalTransportModel>
129 template<
class BasicThermophysicalTransportModel>
137 BasicThermophysicalTransportModel
146 mixtureDiffusionCoefficients_(
true),
148 DFuncs_(this->
thermo().species().size()),
150 DmFuncs_(this->
thermo().species().size()),
154 this->coeffDict_.found(
"DT")
155 ? this->thermo().species().size()
163 template<
class BasicThermophysicalTransportModel>
170 this->coeffDict_.lookup(
"mixtureDiffusionCoefficients")
171 >> mixtureDiffusionCoefficients_;
173 if (mixtureDiffusionCoefficients_)
201 DFuncs_[i].setSize(species.
size());
207 const word nameij(species[i] +
'-' + species[j]);
208 const word nameji(species[j] +
'-' + species[i]);
212 if (Ddict.
found(nameij) && Ddict.
found(nameji))
217 <<
"Binary mass diffusion coefficients "
218 "for Both " << nameij
219 <<
" and " << nameji <<
" provided, using "
225 else if (Ddict.
found(nameij))
229 else if (Ddict.
found(nameji))
236 <<
"Binary mass diffusion coefficient for pair "
237 << nameij <<
" or " << nameji <<
" not provided"
260 if (this->coeffDict_.found(
"DT"))
262 const dictionary& DTdict = this->coeffDict_.subDict(
"DT");
290 template<
class BasicThermophysicalTransportModel>
299 this->momentumTransport().
rho()
300 *Dm()[this->
thermo().specieIndex(Yi)]
305 template<
class BasicThermophysicalTransportModel>
313 this->momentumTransport().rho().boundaryField()[
patchi]
318 template<
class BasicThermophysicalTransportModel>
328 this->momentumTransport().alphaRhoPhi().
group()
363 if (i != this->
thermo().defaultSpecie())
389 template<
class BasicThermophysicalTransportModel>
433 if (i != this->
thermo().defaultSpecie())
458 template<
class BasicThermophysicalTransportModel>
470 BasicThermophysicalTransportModel::j(Yi)
475 DTFuncs_[this->
thermo().specieIndex(Yi)],
485 return BasicThermophysicalTransportModel::j(Yi);
490 template<
class BasicThermophysicalTransportModel>
502 BasicThermophysicalTransportModel::divj(Yi)
509 DTFuncs_[this->
thermo().specieIndex(Yi)],
521 return BasicThermophysicalTransportModel::divj(Yi);
526 template<
class BasicThermophysicalTransportModel>
529 BasicThermophysicalTransportModel::predict();
534 template<
class BasicThermophysicalTransportModel>
541 template<
class BasicThermophysicalTransportModel>
552 template<
class BasicThermophysicalTransportModel>
563 template<
class BasicThermophysicalTransportModel>
#define forAll(list, i)
Loop across all elements in list.
const dimensionSet & dimensions() const
Return dimensions.
virtual bool movePoints()
Update for mesh motion.
virtual tmp< volScalarField > DEff(const volScalarField &Yi) const
Effective mass diffusion coefficient.
virtual tmp< fvScalarMatrix > divq(volScalarField &he) const
Return the source term for the energy equation.
virtual tmp< fvScalarMatrix > divj(volScalarField &Yi) const
Return the source term for the given specie mass-fraction equation.
virtual void predict()
Update the diffusion coefficients.
virtual void mapMesh(const polyMeshMap &map)
Update from another mesh using the given map.
virtual tmp< surfaceScalarField > j(const volScalarField &Yi) const
Return the specie flux for the given specie mass-fraction [kg/m^2/s].
virtual tmp< surfaceScalarField > q() const
Return the heat flux [W/m^2].
virtual void distribute(const polyDistributionMap &map)
Redistribute or update using the given distribution map.
BasicThermophysicalTransportModel::thermoModel thermoModel
BasicThermophysicalTransportModel::momentumTransportModel momentumTransportModel
Fickian(const word &type, const momentumTransportModel &momentumTransport, const thermoModel &thermo)
Construct from a momentum transport model and a thermo model.
virtual void topoChange(const polyTopoChangeMap &map)
Update topology using the given map.
virtual bool read()
Read thermophysicalTransport dictionary.
Run-time selectable function of two variables.
static autoPtr< Function2< Type > > New(const word &name, const Function2s::unitConversions &units, const dictionary &dict)
Select from dictionary.
Generic GeometricField class.
static tmp< GeometricField< Type, PatchField, GeoMesh > > New(const word &name, const Internal &, const PtrList< PatchField< Type >> &, const HashPtrTable< Source > &=HashPtrTable< Source >())
Return a temporary field constructed from name,.
static word groupName(Name name, const word &group)
void size(const label)
Override size to be inconsistent with allocated storage.
void setSize(const label)
Reset size of List.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
label size() const
Return the number of elements in the UPtrList.
virtual const volScalarField & T() const =0
Temperature [K].
A list of keyword definitions, which are a keyword followed by any number of values (e....
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
virtual const volScalarField & p() const =0
Pressure [Pa].
A wordList with hashed indices for faster lookup by name.
virtual const speciesTable & species() const =0
The table of species.
virtual PtrList< volScalarField > & Y()=0
Access the mass-fraction fields.
virtual dimensionedScalar Wi(const label speciei) const =0
Molecular weight [kg/kmol].
virtual label defaultSpecie() const =0
The index of the default specie.
label specieIndex(const volScalarField &Yi) const
Access the specie index of the given mass-fraction field.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
Class containing mesh-to-mesh mapping information.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
Base class for multi-component Fickian based temperature gradient heat flux models with optional Sore...
A class for handling words, derived from string.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Calculate the divergence of the given field.
Calculate the laplacian of the given field.
Calculate the snGrad of the given volField.
Calculate the matrix for implicit and explicit sources.
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
#define WarningInFunction
Report a warning using Foam::Warning.
const char *const group
Group name for atomic constants.
static tmp< SurfaceField< Type > > interpolate(const VolField< Type > &tvf, const surfaceScalarField &faceFlux, Istream &schemeData)
Interpolate field onto faces using scheme given by Istream.
tmp< VolField< Type > > laplacian(const VolField< Type > &vf, const word &name)
tmp< VolField< Type > > div(const SurfaceField< Type > &ssf)
tmp< SurfaceField< Type > > snGrad(const VolField< Type > &vf, const word &name)
tmp< fvMatrix< Type > > Su(const DimensionedField< Type, volMesh > &, const VolField< Type > &)
tmp< fvMatrix< Type > > laplacianCorrection(const VolField< scalar > &gamma, const VolField< Type > &vf)
errorManipArg< error, int > exit(error &err, const int errNo=1)
const dimensionSet dimDynamicViscosity
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
const dimensionSet dimEnergy
const dimensionSet dimPressure
Ostream & endl(Ostream &os)
Add newline and flush stream.
const dimensionSet dimKinematicViscosity
const dimensionSet dimless
const dimensionSet dimTemperature
const dimensionSet dimTime
scalarList W(const fluidMulticomponentThermo &thermo)
VolField< scalar > volScalarField
layerAndWeight max(const layerAndWeight &a, const layerAndWeight &b)
const dimensionSet dimMass
void evaluate(GeometricField< Type, PatchField, GeoMesh > &result, const Function1< Type > &func, const GeometricField< Type, PatchField, GeoMesh > &x)
const dimensionSet dimArea
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
PtrList< volScalarField > & Y
fluidMulticomponentThermo & thermo