Go to the documentation of this file.
43 namespace regionModels
45 namespace surfaceFilmModels
80 waxSolventEvaporation::waxSolventEvaporation
82 surfaceFilmRegionModel& film,
86 phaseChangeModel(typeName, film,
dict),
95 coeffDict_.
get<scalar>(
"Wwax")
101 typeName +
":Wsolvent",
102 film.regionMesh().time().
constant(),
105 coeffDict_.
get<scalar>(
"Wsolvent")
111 typeName +
":Ysolvent0",
112 film.regionMesh().time().
constant(),
122 typeName +
":Ysolvent",
123 film.regionMesh().time().
timeName(),
130 deltaMin_(coeffDict_.
get<scalar>(
"deltaMin")),
131 L_(coeffDict_.
get<scalar>(
"L")),
132 TbFactor_(coeffDict_.getOrDefault<scalar>(
"TbFactor", 1.1)),
133 YInfZero_(coeffDict_.getOrDefault(
"YInfZero", false)),
136 Function1<scalar>::
New(
"activityCoeff", coeffDict_, &film.regionMesh())
149 template<
class YInfType>
168 const label vapId =
thermo.carrierId(filmThermo.
name());
185 const scalar Wvap =
thermo.carrier().W(vapId);
194 typeName +
":evapRateCoeff",
209 typeName +
":evapRateInf",
220 bool filmPresent =
false;
228 const scalar Ysolvent =
Ysolvent_[celli];
231 const scalar Xsolvent
233 Ysolvent*Wsolvent/((1 - Ysolvent)*Wwax + Ysolvent*Wsolvent)
237 const scalar rhoInfc = rhoInf[celli];
240 const scalar pc = pInf[celli];
243 const scalar Tb = filmThermo.
Tb(pc);
248 const scalar pPartialCoeff
253 scalar XsCoeff = pPartialCoeff/pc;
256 scalar Xs = XsCoeff*Xsolvent;
261 <<
"Solvent vapour pressure > ambient pressure"
271 XsCoeff/(XsCoeff*Xsolvent*Wsolvent + (1 - Xs)*Wvap)
275 const scalar muInfc = muInf[celli];
278 const scalar
Re = rhoInfc*
mag(dU[celli])*
L_/muInfc;
281 const scalar Dab = filmThermo.
D(pc, Tloc);
284 const scalar Sc = muInfc/(rhoInfc*(Dab + ROOTVSMALL));
287 const scalar
Sh = this->
Sh(Re, Sc);
290 evapRateCoeff[celli] = rhoInfc*
Sh*Dab/(
L_ + ROOTVSMALL);
298 *evapRateCoeff[celli]*(YsCoeff*Ysolvent - YInf[celli]),
303 if (dm > limMass[celli])
305 evapRateCoeff[celli] *= limMass[celli]/dm;
308 evapRateInf[celli] = evapRateCoeff[celli]*YInf[celli];
309 evapRateCoeff[celli] *= YsCoeff;
365 dt*magSf*rhoInf*(evapRateCoeff*
Ysolvent_ + evapRateInf)
394 const thermoSingleLayer&
film = filmType<thermoSingleLayer>();
395 const label vapId =
film.thermo().carrierId(
film.filmThermo().
name());
uniformDimensionedScalarField Wwax_
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
virtual const volScalarField & hs() const
Wax solvent mixture evaporation model.
const PtrList< volScalarField > & YPrimary() const
virtual const volVectorField & Us() const
Thermo package for (S)olids (L)iquids and (G)ases Takes reference to thermo package,...
static constexpr const zero Zero
const dimensionSet dimVelocity
const dimensionSet dimDensity
scalar Sh(const scalar Re, const scalar Sc) const
virtual const word & name() const =0
virtual const volScalarField & delta() const =0
static word timeName(const scalar t, const int precision=precision_)
const SLGThermo & thermo() const
Calculate the divergence of the given field.
Basic thermodynamics type based on the use of fitting functions for cp, h, s obtained from the templa...
Ostream & endl(Ostream &os)
const Type & value() const
const volVectorField & UPrimary() const
addToRunTimeSelectionTable(surfaceFilmRegionModel, kinematicSingleLayer, mesh)
const word & name() const
void min(const dimensioned< Type > &dt)
virtual scalar Tb(const scalar p) const =0
label min(const labelHashSet &set, label minValue=labelMax)
Top level data entry class for use in dictionaries. Provides a mechanism to specify a variable as a c...
Calculate the matrix for the divergence of the given field and flux.
virtual const volVectorField & Us() const =0
SolverPerformance< Type > solve(const dictionary &)
const volScalarField & rhoPrimary() const
const dimensionSet dimTime(0, 0, 1, 0, 0, 0, 0)
Thermodynamic form of single-cell layer surface film model.
fvMatrix< scalar > fvScalarMatrix
tmp< fvMatrix< Type > > Sp(const volScalarField::Internal &, const GeometricField< Type, fvPatchField, volMesh > &)
Generic templated field type.
Base class for surface film models.
virtual const volScalarField & T() const =0
const filmThermoModel & filmThermo() const
uniformDimensionedScalarField Ysolvent0_
void relax(const scalar alpha)
virtual const volScalarField & magSf() const
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.
const volScalarField & pPrimary() const
dimensionedScalar pow(const dimensionedScalar &ds, const dimensionedScalar &expt)
label max(const labelHashSet &set, label maxValue=labelMin)
virtual const surfaceScalarField & phi() const
virtual const volScalarField & T() const
const volScalarField & muPrimary() const
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
virtual const volScalarField & hs() const =0
Macros for easy insertion into run-time selection tables.
autoPtr< Function1< scalar > > activityCoeff_
virtual scalar pv(const scalar p, const scalar T) const =0
virtual const volScalarField & rho() const =0
Generic dimensioned Type class.
virtual scalar D(const scalar p, const scalar T) const =0
Calculate the matrix for implicit and explicit sources.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tdf1, const word &name, const dimensionSet &dimensions)
defineTypeNameAndDebug(kinematicSingleLayer, 0)
tmp< fvMatrix< Type > > ddt(const GeometricField< Type, fvPatchField, volMesh > &vf)
void correctModel(const scalar dt, scalarField &availableMass, scalarField &dMass, scalarField &dEnergy, YInfType YInf)
Base class for film thermo models.
dimensionedScalar sqrt(const dimensionedScalar &ds)
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
const volScalarField & delta() const
label carrierId(const word &cmptName, bool allowNotFound=false) const
const surfaceFilmRegionModel & film() const
scalarField Re(const UList< complex > &cf)
virtual ~waxSolventEvaporation()
A special matrix type and solver, designed for finite volume solutions of scalar equations....
uniformDimensionedScalarField Wsolvent_
List< ReturnType > get(const UPtrList< T > &list, const AccessOp &aop)
void max(const dimensioned< Type > &dt)
const Time & time() const
virtual const volScalarField & rho() const
dimensionedScalar cbrt(const dimensionedScalar &ds)
virtual const volScalarField & deltaRho() const
const word & constant() const
Generic GeometricField class.
tmp< fvMatrix< Type > > div(const surfaceScalarField &flux, const GeometricField< Type, fvPatchField, volMesh > &vf, const word &name)
constant condensation/saturation model.
#define WarningInFunction
Calculate the matrix for the first temporal derivative.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
const fvMesh & regionMesh() const
Base class for surface film phase change models.