53 const word& sourceName,
54 const word& modelType,
130 rhoName_(
dict.lookupOrDefault<
word>(
"rho",
"rho")),
131 UName_(
dict.lookupOrDefault<
word>(
"U",
"U")),
160 if (!cloudsPtr_->coupled())
167 if (carrierHasThermo_)
169 const fluidThermo& carrierThermo = tCarrierThermo_();
175 if (isA<multicomponentThermo>(carrierThermo))
178 refCast<const multicomponentThermo>(carrierThermo);
201 if (!carrierHasThermo_)
203 tMu_.ref() = tRho_()*tCarrierViscosity_().nu();
206 cloudsPtr_().evolve();
223 if (!carrierHasThermo_)
226 <<
"Applying source to compressible equation when carrier thermo "
227 <<
"is not available"
231 if (
rho.name() == rhoName_)
233 eqn += cloudsPtr_().Srho(eqn.
psi());
238 <<
"Support for field " <<
rho.name() <<
" is not implemented"
256 if (!carrierHasThermo_)
259 <<
"Applying source to compressible equation when carrier thermo "
260 <<
"is not available"
264 const fluidThermo& carrierThermo = tCarrierThermo_();
266 if (&field == &carrierThermo.
he())
268 eqn += cloudsPtr_().Sh(eqn.
psi());
272 if (isA<multicomponentThermo>(carrierThermo))
275 refCast<const multicomponentThermo>(carrierThermo);
291 <<
"Support for field " << field.
name() <<
" is not implemented"
308 if (carrierHasThermo_)
311 <<
"Applying source to incompressible equation when carrier thermo "
316 if (
U.name() == UName_)
318 eqn += cloudsPtr_().SU(eqn.
psi())/tRho_();
323 <<
"Support for field " <<
U.name() <<
" is not implemented"
341 if (!carrierHasThermo_)
344 <<
"Applying source to compressible equation when carrier thermo "
345 <<
"is not available"
349 if (
U.name() == UName_)
351 eqn += cloudsPtr_().SU(eqn.
psi());
356 <<
"Support for field " <<
U.name() <<
" is not implemented"
365 cloudsPtr_().storeGlobalPositions();
371 cloudsPtr_().topoChange(map);
377 cloudsPtr_().mapMesh(map);
383 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.
label timeIndex() const
Return current time index.
virtual const volScalarField & he() const =0
Enthalpy/Internal energy [J/kg].
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
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.
const Time & time() const
Return the top-level database.
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.
Template function which returns the un-mangled name of a given type. Useful for types which do not ha...
An abstract base class for Newtonian viscosity models.
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
#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)
List< word > wordList
A List of words.
Ostream & endl(Ostream &os)
Add newline and flush stream.
const dimensionSet & dimAcceleration
const dimensionSet & dimDensity
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
fileType type(const fileName &, const bool checkVariants=true, const bool followLink=true)
Return the file type: directory or file.