Go to the documentation of this file.
40 template<
class Thermo,
class OtherThermo>
44 const fvMesh&
mesh = this->mesh_;
53 cutCellIso cutCell(
mesh, ap);
55 forAll(interfaceArea_, celli)
57 label status = cutCell.calcSubCell(celli, isoAlpha_);
58 interfaceArea_[celli] = 0;
61 interfaceArea_[celli] =
62 mag(cutCell.faceArea())/
mesh.V()[celli];
66 for (
const polyPatch& pp :
mesh.boundaryMesh())
68 if (isA<wallPolyPatch>(pp))
70 forAll(pp.faceCells(), faceI)
72 const label pCelli = pp.faceCells()[faceI];
77 && (
T[pCelli] - Tactivate_.value()) > 0
86 && (
T[pCelli] - Tactivate_.value()) < 0
97 alpha[pCelli] < 2*isoAlpha_
98 &&
alpha[pCelli] > 0.5*isoAlpha_
102 interfaceArea_[pCelli] =
103 mag(pp.faceAreas()[faceI])/
mesh.V()[pCelli];
113 template<
class Thermo,
class OtherThermo>
130 this->mesh_.time().timeName(),
143 this->mesh_.time().timeName(),
156 this->mesh_.time().timeName(),
164 isoAlpha_(
dict.getOrDefault<scalar>(
"isoAlpha", 0.5))
169 const typename OtherThermo::thermoType& toThermo =
177 Mv_.value() = toThermo.W()*1
e-3;
179 if (Mv_.value() == -1)
182 <<
" Please provide the molar weight (Mv) of vapour [g/mol] "
190 template<
class Thermo,
class OtherThermo>
220 mesh.time().timeName(),
236 mesh.time().timeName(),
247 if (
sign(C_.value()) > 0)
249 rhov = this->pair().
to().
rho();
250 deltaT =
max(
T - Tactivate_,
T0);
254 rhov = this->pair().
from().
rho();
255 deltaT =
max(Tactivate_ -
T,
T0);
258 htc_ = 2*
mag(C_)/(2-
mag(C_))*(
L()*rhov/HerztKnudsConst);
260 mDotc_ = htc_*deltaT*interfaceArea_;
266 template<
class Thermo,
class OtherThermo>
274 if (this->modelVariable_ == variable)
278 if (
sign(C_.value()) > 0)
280 return(coeff*
pos(refValue - Tactivate_));
284 return(coeff*
pos(Tactivate_ - refValue));
294 template<
class Thermo,
class OtherThermo>
302 if (this->modelVariable_ == variable)
306 if (
sign(C_.value()) > 0)
308 return(-coeff*
pos(refValue - Tactivate_));
312 return(coeff*
pos(Tactivate_ - refValue));
322 template<
class Thermo,
class OtherThermo>
331 template<
class Thermo,
class OtherThermo>
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
const vector L(dict.get< vector >("L"))
Description for mass transfer between a pair of phases. The direction of the mass transfer is from th...
Base class for interface composition models, templated on the two thermodynamic models either side of...
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
virtual tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
Considering the Hertz Knudsen formula, which gives the evaporation-condensation flux based on the kin...
A class for handling words, derived from Foam::string.
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
A class for managing temporary objects.
static constexpr const zero Zero
Global zero (0)
const dimensionSet dimDensity
Different types of constants.
interfaceProperties interface(alpha1, U, thermo->transportPropertiesDict())
kineticGasEvaporation(const dictionary &dict, const phasePair &pair)
Construct from components.
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
static const volPointInterpolation & New(const fvMesh &mesh, Args &&... args)
Get existing or create a new MeshObject.
virtual const phaseModel & to() const
To phase.
const dimensionSet dimMoles(0, 0, 0, 0, 1, 0, 0)
dimensionedScalar sign(const dimensionedScalar &ds)
const dimensionedScalar R
Universal gas constant: default SI units: [J/mol/K].
#define forAll(list, i)
Loop across all elements in list.
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
bool interpolate(const vector &p1, const vector &p2, const vector &o, vector &n, scalar l)
const dimensionSet dimArea(sqr(dimLength))
dimensionedScalar pow3(const dimensionedScalar &ds)
virtual const dimensionedScalar & Tactivate() const
Return Tactivate.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
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.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
errorManip< error > abort(error &err)
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
constexpr scalar pi(M_PI)
dimensionedScalar sqrt(const dimensionedScalar &ds)
word member() const
Return member (name without the extension)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
virtual const phaseModel & from() const
From phase.
const dimensionedScalar e
Elementary charge.
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
const dimensionedScalar & rho() const
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
virtual bool includeDivU()
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
dimensionedScalar pos(const dimensionedScalar &ds)