53 const word& sourceName,
54 const word& modelType,
59 fvModel(sourceName, modelType, dict, mesh),
122 rhoName_(dict.lookupOrDefault<
word>(
"rho",
"rho")),
123 UName_(dict.lookupOrDefault<
word>(
"U",
"U")),
152 if (carrierHasThermo_)
154 const fluidThermo& carrierThermo = tCarrierThermo_();
156 fieldNames.
append(rhoName_);
160 if (isA<basicSpecieMixture>(carrierThermo))
163 refCast<const basicSpecieMixture>(carrierThermo);
169 if (composition.
solve(i))
188 if (!carrierHasThermo_)
190 tMu_.ref() = tRho_()*tCarrierViscosity_().nu();
193 cloudsPtr_().evolve();
195 curTimeIndex_ =
mesh().time().timeIndex();
202 const word& fieldName
210 if (!carrierHasThermo_)
213 <<
"Applying source to compressible equation when carrier thermo " 214 <<
"is not available" 218 if (fieldName == rhoName_)
220 eqn += cloudsPtr_().Srho(eqn.
psi());
229 const word& fieldName
237 if (!carrierHasThermo_)
240 <<
"Applying source to compressible equation when carrier thermo " 241 <<
"is not available" 245 const fluidThermo& carrierThermo = tCarrierThermo_();
247 if (fieldName == rhoName_)
249 eqn += cloudsPtr_().Srho(eqn.
psi());
251 else if (fieldName == carrierThermo.
he().
name())
253 eqn += cloudsPtr_().Sh(eqn.
psi());
257 isA<basicSpecieMixture>(carrierThermo)
258 && refCast<const basicSpecieMixture>(carrierThermo).contains
264 eqn += cloudsPtr_().SYi
266 refCast<const basicSpecieMixture>(carrierThermo).index(eqn.
psi()),
276 const word& fieldName
284 if (carrierHasThermo_)
287 <<
"Applying source to incompressible equation when carrier thermo " 292 if (fieldName == UName_)
294 eqn += cloudsPtr_().SU(eqn.
psi())/tRho_();
303 const word& fieldName
311 if (!carrierHasThermo_)
314 <<
"Applying source to compressible equation when carrier thermo " 315 <<
"is not available" 319 if (fieldName == UName_)
321 eqn += cloudsPtr_().SU(eqn.
psi());
329 cloudsPtr_().storeGlobalPositions();
343 cloudsPtr_().distribute(map);
clouds(const word &sourceName, const word &modelType, const dictionary &dict, const fvMesh &mesh)
Construct from explicit source name and mesh.
bool solve(label speciei) const
Return true if the specie should be solved for.
defineTypeNameAndDebug(fixedTemperatureConstraint, 0)
#define forAll(list, i)
Loop across all elements in list.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
const word & name() const
Return name.
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
errorManipArg< error, int > exit(error &err, const int errNo=1)
virtual void preUpdateMesh()
Prepare for mesh update.
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
basicSpecieMixture & composition
An abstract base class for physical properties.
const GeometricField< Type, fvPatchField, volMesh > & psi() const
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
Ostream & endl(Ostream &os)
Add newline and flush stream.
bool foundObject(const word &name) const
Is the named Type found?
Finite volume model abstract base class.
List of parcel clouds, with the same interface as an individual parcel cloud. This is the object that...
virtual void addSup(fvMatrix< scalar > &eqn, const word &fieldName) const
Add source to continuity equation.
const Time & time() const
Return the top-level database.
Specialisation of basicMixture for a mixture consisting of a number for molecular species...
const Type & lookupObject(const word &name) const
Lookup and return the object of the given Type.
An abstract base class for Newtonian viscosity models.
Macros for easy insertion into run-time selection tables.
virtual volScalarField & he()=0
Enthalpy/Internal energy [J/kg].
static List< word > fieldNames
virtual void correct()
Solve the Lagrangian clouds and update the sources.
const dimensionSet dimAcceleration
virtual wordList addSupFields() const
Return the list of fields for which the option adds source term.
A class for handling words, derived from string.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Base-class for fluid thermodynamic properties.
void append(const T &)
Append an element at the end of the list.
const dimensionSet dimDensity
const word & constant() const
Return constant name.
virtual bool movePoints()
Update for mesh motion.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
word name(const complex &)
Return a string representation of a complex.
A class for managing temporary objects without reference counting.
addToRunTimeSelectionTable(fvConstraint, fixedTemperatureConstraint, dictionary)
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
PtrList< volScalarField > & Y
Mesh data needed to do the Finite Volume discretisation.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
A class for managing temporary objects.
Class containing mesh-to-mesh mapping information.
PtrList< volScalarField > & Y()
Return the mass-fraction fields.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...