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>
117 const dictionary&
dict,
118 const phasePair& pair
121 InterfaceCompositionModel<Thermo, OtherThermo>(
dict, pair),
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>
196 const fvMesh&
mesh = this->mesh_;
209 tmp<volScalarField>
L = this->
L(speciesName,
T);
213 tmp<volScalarField> tRhov
220 mesh.time().timeName(),
229 tmp<volScalarField> tdeltaT
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));
289 return tmp<volScalarField> ();
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));
317 return tmp<volScalarField> ();
322 template<
class Thermo,
class OtherThermo>
331 template<
class Thermo,
class OtherThermo>
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
const vector L(dict.get< vector >("L"))
const dimensionSet dimless(0, 0, 0, 0, 0, 0, 0)
Dimensionless.
virtual tmp< volScalarField > Kexp(const volScalarField &field)
Explicit total mass transfer coefficient.
Considering the Hertz Knudsen formula, which gives the evaporation-condensation flux based on the kin...
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
A class for managing temporary objects.
virtual const dimensionedScalar & Tactivate() const
Return Tactivate.
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.
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.
virtual tmp< volScalarField > KSp(label modelVariable, const volScalarField &field)
Implicit mass transfer coefficient.
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 tmp< volScalarField > KSu(label modelVariable, const volScalarField &field)
Explicit mass transfer coefficient.
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.
const dimensionSet dimMass(1, 0, 0, 0, 0, 0, 0)
errorManip< error > abort(error &err)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
constexpr scalar pi(M_PI)
Internal & ref(const bool updateAccessTime=true)
Return a reference to the dimensioned internal field.
dimensionedScalar sqrt(const dimensionedScalar &ds)
word member() const
Return member (name without the extension)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
const dimensionedScalar e
Elementary charge.
virtual bool includeDivU()
const dimensionSet dimTemperature(0, 0, 0, 1, 0, 0, 0)
Provides functions smooth spread and sweep which use the FaceCellWave algorithm to smooth and redistr...
dimensionedScalar pos(const dimensionedScalar &ds)