32 template<
class BasicThermo,
class MixtureType>
36 class PatchFaceMixture,
45 CellMixture cellMixture,
46 PatchFaceMixture patchFaceMixture,
55 IOobject::groupName(psiName, this->
group()),
65 psi[celli] = ((this->*cellMixture)(celli).*psiMethod)(args[celli] ...);
77 ((this->*patchFaceMixture)(patchi, facei).*psiMethod)
79 args.boundaryField()[
patchi][facei] ...
88 template<
class BasicThermo,
class MixtureType>
89 template<
class CellMixture,
class Method,
class ... Args>
93 CellMixture cellMixture,
108 ((this->*cellMixture)(cells[celli]).*psiMethod)(args[celli] ...);
115 template<
class BasicThermo,
class MixtureType>
116 template<
class PatchFaceMixture,
class Method,
class ... Args>
120 PatchFaceMixture patchFaceMixture,
135 ((this->*patchFaceMixture)(patchi, facei).*psiMethod)
145 template<
class BasicThermo,
class MixtureType>
153 if (isA<gradientEnergyFvPatchScalarField>(hBf[patchi]))
155 refCast<gradientEnergyFvPatchScalarField>(hBf[
patchi]).gradient()
156 = hBf[
patchi].fvPatchField::snGrad();
158 else if (isA<mixedEnergyFvPatchScalarField>(hBf[patchi]))
160 refCast<mixedEnergyFvPatchScalarField>(hBf[
patchi]).refGrad()
161 = hBf[
patchi].fvPatchField::snGrad();
169 template<
class BasicThermo,
class MixtureType>
173 const word& phaseName
176 BasicThermo(mesh, phaseName),
177 MixtureType(*
this, mesh, phaseName),
183 BasicThermo::phasePropertyName
185 MixtureType::thermoType::heName()
192 he(this->
p(), this->T_),
193 this->heBoundaryTypes(),
194 this->heBoundaryBaseTypes()
197 heBoundaryCorrection(he_);
201 template<
class BasicThermo,
class MixtureType>
206 const word& phaseName
209 BasicThermo(mesh, dict, phaseName),
210 MixtureType(*
this, mesh, phaseName),
216 BasicThermo::phasePropertyName
218 MixtureType::thermoType::heName()
225 he(this->
p(), this->T_),
226 this->heBoundaryTypes(),
227 this->heBoundaryBaseTypes()
230 heBoundaryCorrection(he_);
236 template<
class BasicThermo,
class MixtureType>
243 template<
class BasicThermo,
class MixtureType>
250 return volScalarFieldProperty
254 &MixtureType::cellMixture,
255 &MixtureType::patchFaceMixture,
256 &MixtureType::thermoType::HE,
263 template<
class BasicThermo,
class MixtureType>
270 return cellSetProperty
272 &MixtureType::cellMixture,
273 &MixtureType::thermoType::HE,
281 template<
class BasicThermo,
class MixtureType>
288 return patchFieldProperty
290 &MixtureType::patchFaceMixture,
291 &MixtureType::thermoType::HE,
293 this->
p().boundaryField()[patchi],
299 template<
class BasicThermo,
class MixtureType>
303 return volScalarFieldProperty
307 &MixtureType::cellMixture,
308 &MixtureType::patchFaceMixture,
316 template<
class BasicThermo,
class MixtureType>
323 return volScalarFieldProperty
327 &MixtureType::cellMixture,
328 &MixtureType::patchFaceMixture,
336 template<
class BasicThermo,
class MixtureType>
343 return cellSetProperty
345 &MixtureType::cellMixture,
354 template<
class BasicThermo,
class MixtureType>
361 return patchFieldProperty
363 &MixtureType::patchFaceMixture,
366 this->
p().boundaryField()[patchi],
372 template<
class BasicThermo,
class MixtureType>
376 return volScalarFieldProperty
380 &MixtureType::cellMixture,
381 &MixtureType::patchFaceMixture,
389 template<
class BasicThermo,
class MixtureType>
396 return volScalarFieldProperty
400 &MixtureType::cellMixture,
401 &MixtureType::patchFaceMixture,
409 template<
class BasicThermo,
class MixtureType>
416 return cellSetProperty
418 &MixtureType::cellMixture,
427 template<
class BasicThermo,
class MixtureType>
434 return patchFieldProperty
436 &MixtureType::patchFaceMixture,
439 this->
p().boundaryField()[patchi],
445 template<
class BasicThermo,
class MixtureType>
449 return volScalarFieldProperty
453 &MixtureType::cellMixture,
454 &MixtureType::patchFaceMixture,
455 &MixtureType::thermoType::Hf
460 template<
class BasicThermo,
class MixtureType>
467 return patchFieldProperty
469 &MixtureType::patchFaceMixture,
472 this->
p().boundaryField()[patchi],
478 template<
class BasicThermo,
class MixtureType>
482 return volScalarFieldProperty
486 &MixtureType::cellMixture,
487 &MixtureType::patchFaceMixture,
495 template<
class BasicThermo,
class MixtureType>
503 return patchFieldProperty
505 &MixtureType::patchFaceMixture,
508 this->
p().boundaryField()[patchi],
514 template<
class BasicThermo,
class MixtureType>
518 return volScalarFieldProperty
522 &MixtureType::cellMixture,
523 &MixtureType::patchFaceMixture,
531 template<
class BasicThermo,
class MixtureType>
538 return patchFieldProperty
540 &MixtureType::patchFaceMixture,
541 &MixtureType::thermoType::gamma,
543 this->
p().boundaryField()[patchi],
549 template<
class BasicThermo,
class MixtureType>
553 return volScalarFieldProperty
557 &MixtureType::cellMixture,
558 &MixtureType::patchFaceMixture,
559 &MixtureType::thermoType::gamma,
566 template<
class BasicThermo,
class MixtureType>
573 return patchFieldProperty
575 &MixtureType::patchFaceMixture,
576 &MixtureType::thermoType::Cpv,
578 this->
p().boundaryField()[patchi],
584 template<
class BasicThermo,
class MixtureType>
588 return volScalarFieldProperty
592 &MixtureType::cellMixture,
593 &MixtureType::patchFaceMixture,
594 &MixtureType::thermoType::Cpv,
601 template<
class BasicThermo,
class MixtureType>
608 return patchFieldProperty
610 &MixtureType::patchFaceMixture,
611 &MixtureType::thermoType::CpByCpv,
613 this->
p().boundaryField()[patchi],
619 template<
class BasicThermo,
class MixtureType>
623 return volScalarFieldProperty
627 &MixtureType::cellMixture,
628 &MixtureType::patchFaceMixture,
629 &MixtureType::thermoType::CpByCpv,
636 template<
class BasicThermo,
class MixtureType>
644 return cellSetProperty
646 &MixtureType::cellMixture,
647 &MixtureType::thermoType::THE,
656 template<
class BasicThermo,
class MixtureType>
664 return patchFieldProperty
666 &MixtureType::patchFaceMixture,
667 &MixtureType::thermoType::THE,
670 this->
p().boundaryField()[patchi],
676 template<
class BasicThermo,
class MixtureType>
680 return volScalarFieldProperty
684 &MixtureType::cellMixture,
685 &MixtureType::patchFaceMixture,
691 template<
class BasicThermo,
class MixtureType>
697 return patchFieldProperty
699 &MixtureType::patchFaceMixture,
706 template<
class BasicThermo,
class MixtureType>
718 template<
class BasicThermo,
class MixtureType>
727 this->T_.boundaryField()[
patchi],
729 )*this->alpha_.boundaryField()[
patchi];
733 template<
class BasicThermo,
class MixtureType>
740 this->CpByCpv()*this->alpha_
745 template<
class BasicThermo,
class MixtureType>
752 this->T_.boundaryField()[
patchi],
755 *this->alpha_.boundaryField()[
patchi];
759 template<
class BasicThermo,
class MixtureType>
769 Cp()*(this->alpha_ + alphat)
774 template<
class BasicThermo,
class MixtureType>
785 this->T_.boundaryField()[
patchi],
788 *(this->alpha_.boundaryField()[
patchi] + alphat);
792 template<
class BasicThermo,
class MixtureType>
802 this->CpByCpv()*(this->alpha_ + alphat)
807 template<
class BasicThermo,
class MixtureType>
818 this->T_.boundaryField()[
patchi],
821 *(this->alpha_.boundaryField()[
patchi] + alphat);
825 template<
class BasicThermo,
class MixtureType>
virtual tmp< volScalarField > kappa() const
Thermal diffusivity for temperature of mixture [W/m/K].
const char *const group
Group name for atomic constants.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
virtual tmp< volScalarField > gamma() const
Gamma = Cp/Cv [].
virtual tmp< volScalarField > CpByCpv() const
Heat capacity ratio [].
scalar Hs(const scalar p, const scalar T) const
A list of keyword definitions, which are a keyword followed by any number of values (e...
T & ref() const
Return non-const reference or generate a fatal error.
const volScalarField & Cv
virtual ~heThermo()
Destructor.
void size(const label)
Override size to be inconsistent with allocated storage.
virtual tmp< volScalarField > Cpv() const
Heat capacity at constant pressure/volume [J/kg/K].
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
static word timeName(const scalar, const int precision=precision_)
Return time name of given scalar time.
const Time & time() const
Return the top-level database.
virtual volScalarField & he()
Enthalpy/Internal energy [J/kg].
virtual tmp< volScalarField > hc() const
Enthalpy of formation [J/kg].
tmp< scalarField > patchFieldProperty(PatchFaceMixture patchFaceMixture, Method psiMethod, const label patchi, const Args &... args) const
Return a scalarField of the given property on a patch.
virtual tmp< volScalarField > Cp() const
Heat capacity at constant pressure [J/kg/K].
Dimension set for the base types.
autoPtr< BasicCompressibleMomentumTransportModel > New(const volScalarField &rho, const volVectorField &U, const surfaceScalarField &phi, const typename BasicCompressibleMomentumTransportModel::transportModel &transport)
A class for handling words, derived from string.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
virtual tmp< volScalarField > alphahe() const
Thermal diffusivity for energy of mixture [kg/m/s].
virtual tmp< volScalarField > hs() const
Sensible enthalpy [J/kg/K].
virtual tmp< volScalarField > ha() const
Absolute enthalpy [J/kg/K].
volScalarField scalarField(fieldObject, mesh)
virtual tmp< volScalarField > alphaEff(const volScalarField &alphat) const
Effective thermal turbulent diffusivity of mixture [kg/m/s].
const dimensionSet dimMoles(0, 0, 0, 0, 1, 0, 0)
tmp< scalarField > cellSetProperty(CellMixture cellMixture, Method psiMethod, const labelList &cells, const Args &... args) const
Return a scalarField of the given property on a cell set.
const dimensionSet dimEnergy
heThermo(const fvMesh &, const word &phaseName)
Construct from mesh.
virtual bool read()
Read thermophysical properties dictionary.
virtual tmp< volScalarField > kappaEff(const volScalarField &) const
Effective thermal turbulent diffusivity for temperature.
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
virtual tmp< volScalarField > Cv() const
Heat capacity at constant volume [J/kg/K].
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
const scalarList W(::W(thermo))
Mesh data needed to do the Finite Volume discretisation.
virtual tmp< scalarField > THE(const scalarField &he, const scalarField &T0, const labelList &cells) const
Temperature from enthalpy/internal energy for cell-set.
scalar Cp(const scalar p, const scalar T) const
scalar Ha(const scalar p, const scalar T) const
const volScalarField & psi
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
A class for managing temporary objects.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
void heBoundaryCorrection(volScalarField &he)
Correct the enthalpy/internal energy field boundaries.
tmp< volScalarField > volScalarFieldProperty(const word &psiName, const dimensionSet &psiDim, CellMixture cellMixture, PatchFaceMixture patchFaceMixture, Method psiMethod, const Args &... args) const
Return a volScalarField of the given property.
virtual tmp< volScalarField > W() const
Molecular weight [kg/kmol].