31 template<
class MixtureType,
class BasicThermoType>
32 template<
class Mixture,
class Method,
class ... Args>
48 IOobject::groupName(psiName, this->
group()),
55 auto Yslicer = this->Yslicer();
59 auto composition = this->elementComposition(Yslicer, i);
61 psi[i] = ((this->*mixture)(composition).*psiMethod)(
args[i] ...);
68 template<
class MixtureType,
class BasicThermoType>
69 template<
class Mixture,
class Method,
class ... Args>
86 IOobject::groupName(subMesh.
sub(psiName), this->group()),
93 auto Yslicer = this->Yslicer();
99 auto composition = this->elementComposition(Yslicer, i);
101 psi[subi] = ((this->*mixture)(composition).*psiMethod)(
args[i] ...);
108 template<
class MixtureType,
class BasicThermoType>
109 template<
class Mixture,
class Method,
class ... Args>
127 IOobject::groupName(subMesh.
sub(psiName), this->group()),
134 auto Yslicer = this->Yslicer(injection, subMesh);
138 auto composition = this->injectionElementComposition(Yslicer, subi);
140 psi[subi] = ((this->*mixture)(composition).*psiMethod)(
args[subi] ...);
149 template<
class MixtureType,
class BasicThermoType>
153 const word& phaseName
157 MixtureType(properties()),
161 static_cast<const MixtureType&>(*this),
171 MixtureType::thermoType::heName(),
179 LagrangianInternalScalarFieldProperty
183 &MixtureType::thermoMixture,
184 &MixtureType::thermoMixtureType::
es,
188 this->eBoundaryTypes(),
189 this->eBoundaryBaseTypes(),
194 this->T_.sources().errorLocation()
201 template<
class MixtureType,
class BasicThermoType>
209 template<
class MixtureType,
class BasicThermoType>
217 template<
class MixtureType,
class BasicThermoType>
225 template<
class MixtureType,
class BasicThermoType>
233 template<
class MixtureType,
class BasicThermoType>
241 LagrangianSubScalarFieldProperty
246 &MixtureType::thermoMixture,
252 template<
class MixtureType,
class BasicThermoType>
261 LagrangianInjectionProperty
267 &MixtureType::thermoMixture,
269 this->p(injection,
T.mesh())(),
275 template<
class MixtureType,
class BasicThermoType>
283 template<
class MixtureType,
class BasicThermoType>
291 template<
class MixtureType,
class BasicThermoType>
300 LagrangianInjectionProperty
306 &MixtureType::thermoMixture,
308 this->p(injection,
T.mesh())(),
314 template<
class MixtureType,
class BasicThermoType>
323 LagrangianInjectionProperty
329 &MixtureType::thermoMixture,
331 this->p(injection,
T.mesh())(),
337 template<
class MixtureType,
class BasicThermoType>
345 LagrangianSubScalarFieldProperty
350 &MixtureType::thermoMixture,
353 subMesh.
sub(this->T_)()
358 template<
class MixtureType,
class BasicThermoType>
366 LagrangianSubScalarFieldProperty
371 &MixtureType::thermoMixture,
372 &MixtureType::thermoMixtureType::alphav,
374 subMesh.
sub(this->T_)()
379 template<
class MixtureType,
class BasicThermoType>
387 typedef decltype(this->Yslicer(injection,
T.mesh())) YslicerType;
390 decltype(this->injectionElementComposition(YslicerType(), -1))
393 const typename MixtureType::transportMixtureType&
394 (MixtureType::*
mixture)(
const compositionType&)
const =
395 &MixtureType::transportMixture;
398 LagrangianInjectionProperty
406 this->p(injection,
T.mesh())(),
412 template<
class MixtureType,
class BasicThermoType>
scalar Cp(const scalar p, const scalar T) const
scalar es(const scalar p, const scalar T) const
scalar Cv(const scalar p, const scalar T) const
#define forAll(list, i)
Loop across all elements in list.
virtual const IOdictionary & properties() const
Access the properties dictionary.
virtual tmp< LagrangianSubScalarField > rho(const LagrangianSubScalarField &T, const LagrangianInjection &) const
Density for an injection [kg/m^3].
virtual tmp< LagrangianSubScalarField > W(const LagrangianSubMesh &) const
Molecular weight for a sub-mesh [kg/kmol].
virtual tmp< LagrangianSubScalarField > Cp(const LagrangianSubMesh &) const
Heat capacity at constant pressure for a sub-mesh [J/kg/K].
BasicLagrangianThermo(const LagrangianMesh &, const word &phaseName)
Construct from mesh and phase name.
virtual const LagrangianScalarDynamicField & e() const
Internal energy [J/kg].
tmp< LagrangianSubScalarField > LagrangianInjectionProperty(const LagrangianInjection &injection, const LagrangianSubMesh &subMesh, const word &psiName, const dimensionSet &psiDim, Mixture mixture, Method psiMethod, const Args &... args) const
Return a LagrangianSubScalarField of the given property.
tmp< LagrangianSubScalarField > LagrangianSubScalarFieldProperty(const LagrangianSubMesh &subMesh, const word &psiName, const dimensionSet &psiDim, Mixture mixture, Method psiMethod, const Args &... args) const
Return a LagrangianSubScalarField of the given property.
tmp< LagrangianInternalScalarField > LagrangianInternalScalarFieldProperty(const word &psiName, const dimensionSet &psiDim, Mixture mixture, Method psiMethod, const Args &... args) const
Return a LagrangianInternalScalarField of the given property.
virtual word thermoName() const
Return the full name of the thermodynamic model.
virtual tmp< LagrangianSubScalarField > kappa(const LagrangianSubScalarField &T, const LagrangianInjection &) const
Thermal conductivity for an injection [W/m/K].
virtual tmp< LagrangianSubScalarField > alphav(const LagrangianSubMesh &) const
Coefficient of thermal expansion for a sub-mesh [1/K].
virtual tmp< LagrangianSubScalarField > Cv(const LagrangianSubScalarField &T, const LagrangianInjection &) const
Heat capacity at constant volume for an injection [J/kg/K].
virtual ~BasicLagrangianThermo()
Destructor.
virtual bool read()
Read thermophysical properties dictionary.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic GeometricField class.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
Base class for Lagrangian injections. Minimal wrapper over LagrangianSource. Implements some utility ...
Class containing Lagrangian geometry and topology.
Mesh that relates to a sub-section of a Lagrangian mesh. This is used to construct fields that relate...
word sub(const word &fieldName) const
Return the name of a field corresponding to this sub-mesh.
label start() const
Return start.
Dimension set for the base types.
Source condition for energy. Applied to the energy model automatically by the Lagrangian thermodynami...
A base class for physical properties.
virtual bool read()
Read physicalProperties dictionary.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
const volScalarField & psi
const char *const group
Group name for atomic constants.
const dimensionedScalar kappa
Coulomb constant: default SI units: [N.m2/C2].
const dimensionSet & dimMoles
const dimensionSet & dimThermalConductivity
const dimensionSet & dimless
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 & dimMass
String typeName(const std::type_info &info)
Return the un-mangled name given the standard type info.
const dimensionSet & dimSpecificHeatCapacity
const dimensionSet & dimDensity
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
const dimensionSet & dimEnergy
tmp< DimensionedField< TypeR, GeoMesh, Field > > New(const tmp< DimensionedField< TypeR, GeoMesh, Field >> &tdf1, const word &name, const dimensionSet &dimensions)
void T(GeometricField< Type, GeoMesh, PrimitiveField1 > &gf, const GeometricField< Type, GeoMesh, PrimitiveField2 > &gf1)
const dimensionSet & dimTemperature
Foam::argList args(argc, argv)
const scalarList W(::W(thermo))