53 const word& sourceName,
54 const word& modelType,
65 mesh.time().constant(),
130 rhoName_(
dict.lookupOrDefault<
word>(
"rho",
"rho")),
131 UName_(
dict.lookupOrDefault<
word>(
"U",
"U")),
162 if (carrierHasThermo_)
164 const fluidThermo& carrierThermo = tCarrierThermo_();
170 if (isA<multicomponentThermo>(carrierThermo))
173 refCast<const multicomponentThermo>(carrierThermo);
191 if (curTimeIndex_ == mesh().time().
timeIndex())
196 if (!carrierHasThermo_)
198 tMu_.ref() = tRho_()*tCarrierViscosity_().nu();
201 cloudsPtr_().evolve();
203 curTimeIndex_ = mesh().time().timeIndex();
218 if (!carrierHasThermo_)
221 <<
"Applying source to compressible equation when carrier thermo "
222 <<
"is not available"
226 if (
rho.name() == rhoName_)
228 eqn += cloudsPtr_().Srho(eqn.
psi());
233 <<
"Support for field " <<
rho.name() <<
" is not implemented"
251 if (!carrierHasThermo_)
254 <<
"Applying source to compressible equation when carrier thermo "
255 <<
"is not available"
259 const fluidThermo& carrierThermo = tCarrierThermo_();
261 if (&field == &carrierThermo.
he())
263 eqn += cloudsPtr_().Sh(eqn.
psi());
267 if (isA<multicomponentThermo>(carrierThermo))
270 refCast<const multicomponentThermo>(carrierThermo);
286 <<
"Support for field " << field.
name() <<
" is not implemented"
303 if (carrierHasThermo_)
306 <<
"Applying source to incompressible equation when carrier thermo "
311 if (
U.name() == UName_)
313 eqn += cloudsPtr_().SU(eqn.
psi())/tRho_();
318 <<
"Support for field " <<
U.name() <<
" is not implemented"
336 if (!carrierHasThermo_)
339 <<
"Applying source to compressible equation when carrier thermo "
340 <<
"is not available"
344 if (
U.name() == UName_)
346 eqn += cloudsPtr_().SU(eqn.
psi());
351 <<
"Support for field " <<
U.name() <<
" is not implemented"
360 cloudsPtr_().storeGlobalPositions();
366 cloudsPtr_().topoChange(map);
372 cloudsPtr_().mapMesh(map);
378 cloudsPtr_().distribute(map);
#define forAll(list, i)
Loop across all elements in list.
Macros for easy insertion into run-time selection tables.
Generic GeometricField class.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const word & name() const
Return name.
void append(const T &)
Append an element at the end of the list.
virtual const volScalarField & he() const =0
Enthalpy/Internal energy [J/kg].
A list of keyword definitions, which are a keyword followed by any number of values (e....
Base-class for fluid thermodynamic properties.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Mesh data needed to do the Finite Volume discretisation.
Finite volume model abstract base class.
This fvModel adds any number of Lagrangian clouds to any single-phase solver. The particles are track...
virtual bool movePoints()
Update for mesh motion.
virtual wordList addSupFields() const
Return the list of fields for which the option adds source term.
virtual void correct()
Solve the Lagrangian clouds and update the sources.
virtual void addSup(const volScalarField &rho, fvMatrix< scalar > &eqn) const
Add source to continuity equation.
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
virtual void distribute(const polyDistributionMap &)
Redistribute or update using the given distribution map.
virtual void preUpdateMesh()
Prepare for mesh update.
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
clouds(const word &sourceName, const word &modelType, const fvMesh &mesh, const dictionary &dict)
Construct from explicit source name and mesh.
Base-class for multi-component thermodynamic properties.
bool solveSpecie(const label speciei) const
Should the given specie be solved for? I.e., is it active and.
virtual PtrList< volScalarField > & Y()=0
Access the mass-fraction fields.
bool containsSpecie(const word &specieName) const
Does the mixture include this specie?
label specieIndex(const volScalarField &Yi) const
Access the specie index of the given mass-fraction field.
List of parcel clouds, with the same interface as an individual parcel cloud. This is the object that...
A base class for physical properties.
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 without reference counting.
A class for managing temporary objects.
An abstract base class for Newtonian viscosity models.
A class for handling words, derived from string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
static List< word > fieldNames
addToRunTimeSelectionTable(fvConstraint, bound, dictionary)
defineTypeNameAndDebug(bound, 0)
errorManipArg< error, int > exit(error &err, const int errNo=1)
Ostream & endl(Ostream &os)
Add newline and flush stream.
word name(const bool)
Return a word representation of a bool.
const dimensionSet dimAcceleration
const dimensionSet dimDensity
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.