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>
203 mesh.time().timeName(),
209 auto& deltaT = tdeltaT.ref();
213 if (
sign(R_.value()) > 0)
215 deltaT =
max(
T - Tactivate_,
T0);
219 deltaT =
max(Tactivate_ -
T,
T0);
222 word fullSpeciesName = this->transferSpecie();
223 auto tempOpen = fullSpeciesName.find(
'.');
224 const word speciesName(fullSpeciesName.substr(0, tempOpen));
237 spread_/
sqr(
gAverage(this->mesh_.nonOrthDeltaCoeffs()))
242 if (
max(mDotc_) > MdotMin)
255 mDotc_ = interfaceArea_*htc_*deltaT;
261 template<
class Thermo,
class OtherThermo>
270 if (this->modelVariable_ == variable)
274 if (
sign(R_.value()) > 0)
276 return(coeff*
pos(refValue - Tactivate_));
280 return(coeff*
pos(Tactivate_ - refValue));
288 template<
class Thermo,
class OtherThermo>
297 if (this->modelVariable_ == variable)
301 if (
sign(R_.value()) > 0)
303 return(-coeff*
pos(refValue - Tactivate_));
307 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 a new 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.
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...
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)