41 template<
class Thermo,
class OtherThermo>
46 const fvMesh&
mesh = this->mesh_;
55 cutCellIso cutCell(
mesh, ap);
57 forAll(interfaceArea_, celli)
59 label status = cutCell.calcSubCell(celli, isoAlpha_);
60 interfaceArea_[celli] = 0;
63 interfaceArea_[celli] =
64 mag(cutCell.faceArea())/
mesh.V()[celli];
68 const polyBoundaryMesh&
pbm =
mesh.boundaryMesh();
72 if (isA<wallPolyPatch>(
pbm[patchi]))
74 const polyPatch&
pp =
pbm[patchi];
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];
118 template<
class Thermo,
class OtherThermo>
181 isoAlpha_(
dict.getOrDefault<scalar>(
"isoAlpha", 0.5)),
182 spread_(
dict.getOrDefault<scalar>(
"spread", 3))
188 template<
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);
218 word fullSpeciesName = this->transferSpecie();
219 auto tempOpen = fullSpeciesName.find(
'.');
220 const word speciesName(fullSpeciesName.substr(0, tempOpen));
233 spread_/
sqr(
gAverage(this->mesh_.nonOrthDeltaCoeffs()))
238 if (
max(mDotc_) > MdotMin)
251 mDotc_ = interfaceArea_*htc_*deltaT;
257 template<
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));
284 template<
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));
Different types of constants.
dimensionedScalar sign(const dimensionedScalar &ds)
const polyBoundaryMesh & pbm
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
A list of keyword definitions, which are a keyword followed by a number of values (eg...
const vector L(dict.get< vector >("L"))
static const volPointInterpolation & New(const fvMesh &mesh, Args &&... args)
Get existing or create MeshObject registered with typeName.
bool interpolate(const vector &p1, const vector &p2, const vector &o, vector &n, scalar l)
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Base class for interface composition models, templated on the two thermodynamic models either side of...
void spreadSource(volScalarField &mDotOut, const volScalarField &mDotIn, const volScalarField &alpha1, const volScalarField &alpha2, const dimensionedScalar &D, const scalar cutoff)
interfaceProperties interface(alpha1, U, thermo->transportPropertiesDict())
const dimensionSet dimless
Dimensionless.
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
#define forAll(list, i)
Loop across all elements in list.
virtual const multiphaseInter::phaseModel & to() const
To phase.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
dimensionedScalar pos(const dimensionedScalar &ds)
const dimensionedScalar e
Elementary charge.
virtual const multiphaseInter::phaseModel & from() const
From phase.
A class for handling words, derived from Foam::string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
static tmp< T > New(Args &&... args)
Construct tmp with forwarding arguments.
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())
Return tmp field (NO_READ, NO_WRITE) from name, mesh, dimensions and patch type. [Takes current timeN...
const dimensionSet dimPower
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
const dimensionSet dimDensity
interfaceHeatResistance(const dictionary &dict, const phasePair &pair)
Construct from components.
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
Type gAverage(const FieldField< Field, Type > &f)
Mesh data needed to do the Finite Volume discretisation.
Interface Heat Resistance type of condensation/saturation model using spread source distribution foll...
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
const dimensionedScalar & D
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
A class for managing temporary objects.
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
Defines the attributes of an object for which implicit objectRegistry management is supported...
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
Do not request registration (bool: false)
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
const dimensionSet dimArea(sqr(dimLength))
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
virtual tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
static constexpr const zero Zero
Global zero (0)