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<basicSpecieMixture>(carrierThermo))
173 refCast<const basicSpecieMixture>(carrierThermo);
193 if (curTimeIndex_ == mesh().time().
timeIndex())
198 if (!carrierHasThermo_)
200 tMu_.ref() = tRho_()*tCarrierViscosity_().nu();
203 cloudsPtr_().evolve();
205 curTimeIndex_ = mesh().time().timeIndex();
212 const word& fieldName
220 if (!carrierHasThermo_)
223 <<
"Applying source to compressible equation when carrier thermo "
224 <<
"is not available"
228 if (fieldName == rhoName_)
230 eqn += cloudsPtr_().Srho(eqn.
psi());
239 const word& fieldName
247 if (!carrierHasThermo_)
250 <<
"Applying source to compressible equation when carrier thermo "
251 <<
"is not available"
255 const fluidThermo& carrierThermo = tCarrierThermo_();
257 if (fieldName == rhoName_)
259 eqn += cloudsPtr_().Srho(eqn.
psi());
261 else if (fieldName == carrierThermo.
he().
name())
263 eqn += cloudsPtr_().Sh(eqn.
psi());
267 isA<basicSpecieMixture>(carrierThermo)
268 && refCast<const basicSpecieMixture>(carrierThermo).contains
274 eqn += cloudsPtr_().SYi
276 refCast<const basicSpecieMixture>(carrierThermo).index(eqn.
psi()),
286 const word& fieldName
294 if (carrierHasThermo_)
297 <<
"Applying source to incompressible equation when carrier thermo "
302 if (fieldName == UName_)
304 eqn += cloudsPtr_().SU(eqn.
psi())/tRho_();
313 const word& fieldName
321 if (!carrierHasThermo_)
324 <<
"Applying source to compressible equation when carrier thermo "
325 <<
"is not available"
329 if (fieldName == UName_)
331 eqn += cloudsPtr_().SU(eqn.
psi());
339 cloudsPtr_().storeGlobalPositions();
345 cloudsPtr_().topoChange(map);
351 cloudsPtr_().mapMesh(map);
357 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.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Specialisation of basicMixture for a mixture consisting of a number for molecular species.
virtual volScalarField & he()=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(fvMatrix< scalar > &eqn, const word &fieldName) 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.
List of parcel clouds, with the same interface as an individual parcel cloud. This is the object that...
An abstract 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.
const dimensionSet dimAcceleration
const dimensionSet dimDensity
word name(const complex &)
Return a string representation of a complex.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.
basicSpecieMixture & composition
PtrList< volScalarField > & Y