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));
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...
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)
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.
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
const dimensionSet dimless
Dimensionless.
dimensionedScalar pos(const dimensionedScalar &ds)