41template<
class Thermo,
class OtherThermo>
42void Foam::meltingEvaporationModels::
43interfaceHeatResistance<Thermo, OtherThermo>
57 forAll(interfaceArea_, celli)
59 label status =
cutCell.calcSubCell(celli, isoAlpha_);
60 interfaceArea_[celli] = 0;
63 interfaceArea_[celli] =
77 const label pCelli =
pp.faceCells()[faceI];
82 && (
T[pCelli] - Tactivate_.value()) > 0
91 && (
T[pCelli] - Tactivate_.value()) < 0
102 alpha[pCelli] < 2*isoAlpha_
103 &&
alpha[pCelli] > 0.5*isoAlpha_
107 interfaceArea_[pCelli] =
108 mag(
pp.faceAreas()[faceI])/
mesh.V()[pCelli];
118template<
class Thermo,
class OtherThermo>
181 isoAlpha_(
dict.getOrDefault<scalar>(
"isoAlpha", 0.5)),
182 spread_(
dict.getOrDefault<scalar>(
"spread", 3))
188template<
class Thermo,
class OtherThermo>
205 auto& deltaT = tdeltaT.ref();
209 if (
sign(R_.value()) > 0)
211 deltaT =
max(
T - Tactivate_,
T0);
215 deltaT =
max(Tactivate_ -
T,
T0);
219 auto tempOpen = fullSpeciesName.find(
'.');
220 const word speciesName(fullSpeciesName.substr(0, tempOpen));
238 if (
max(mDotc_) > MdotMin)
251 mDotc_ = interfaceArea_*htc_*deltaT;
257template<
class Thermo,
class OtherThermo>
266 if (this->modelVariable_ == variable)
270 if (
sign(R_.value()) > 0)
272 return(coeff*
pos(refValue - Tactivate_));
276 return(coeff*
pos(Tactivate_ - refValue));
284template<
class Thermo,
class OtherThermo>
293 if (this->modelVariable_ == variable)
297 if (
sign(R_.value()) > 0)
299 return(-coeff*
pos(refValue - Tactivate_));
303 return(coeff*
pos(Tactivate_ - refValue));
306 else if (interfaceCompositionModel::P == variable)
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
const polyBoundaryMesh & pbm
static tmp< GeometricField< scalar, fvPatchField, volMesh > > New(const word &name, IOobjectOption::registerOption regOpt, const Mesh &mesh, const dimensionSet &dims, const word &patchFieldType=fvPatchField< scalar >::calculatedType())
@ NO_REGISTER
Do not request registration (bool: false).
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Base class for interface composition models, templated on the two thermodynamic models either side of...
virtual tmp< volScalarField > D(const word &speciesName) const
Mass diffusivity.
InterfaceCompositionModel(const dictionary &dict, const phasePair &pair)
Construct from components.
virtual tmp< volScalarField > L(const word &speciesName, const volScalarField &Tf) const
Latent heat (to - from)(thermo - otherThermo).
static FOAM_NO_DANGLING_REFERENCE const volPointInterpolation & New(const fvMesh &mesh, Args &&... args)
Class for cutting a cell, celli, of an fvMesh, mesh_, at its intersection with an isosurface defined ...
Service routines for cutting a cell, celli, of an fvMesh, mesh_, at its intersection with a surface.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Mesh data needed to do the Finite Volume discretisation.
Interface Heat Resistance type of condensation/saturation model using spread source distribution foll...
const fvMesh & mesh_
Reference to mesh.
const word transferSpecie() const
Return the transferring species name.
const phasePair & pair() const
The phase pair.
const word & variable() const
Returns the variable on which the model is based.
modelVariable modelVariable_
Enumeration for the model variable.
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
A polyBoundaryMesh is a polyPatch list with registered IO, a reference to the associated polyMesh,...
A patch is a list of labels that address the faces in the global face list.
A class for managing temporary objects.
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
A class for handling words, derived from Foam::string.
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
Different types of constants.
void spreadSource(volScalarField &mDotOut, const volScalarField &mDotIn, const volScalarField &alpha1, const volScalarField &alpha2, const dimensionedScalar &D, const scalar cutoff)
Type gAverage(const FieldField< Field, Type > &f, const label comm)
The global arithmetic average of a FieldField.
dimensionedScalar pos(const dimensionedScalar &ds)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
const dimensionSet dimPower
const dimensionSet dimless
Dimensionless.
dimensionedScalar sign(const dimensionedScalar &ds)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
GeometricField< scalar, fvPatchField, volMesh > volScalarField
const dimensionSet dimArea(sqr(dimLength))
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
const Type * isA(const U &obj)
Attempt dynamic_cast to Type.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static constexpr const zero Zero
Global zero (0).
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const dimensionSet dimDensity
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
const dimensionedScalar & D
interfaceProperties interface(alpha1, U, thermo->transportPropertiesDict())
#define forAll(list, i)
Loop across all elements in list.
const vector L(dict.get< vector >("L"))