55 void Foam::fv::phaseSurfaceBoiling::readCoeffs(
const dictionary&
dict)
59 saturationModelPtr_.reset
63 "saturationTemperature",
68 partitioningModel_.
reset
72 dict.subDict(
"partitioningModel")
76 nucleationSiteModel_.
reset
80 dict.subDict(
"nucleationSiteModel")
84 departureDiameterModel_.
reset
88 dict.subDict(
"departureDiameterModel")
92 departureFrequencyModel_.
reset
96 dict.subDict(
"departureFrequencyModel")
102 void Foam::fv::phaseSurfaceBoiling::correctMDot()
const
114 const rhoThermo& solidThermo = solid_.thermo();
116 const rhoThermo& liquidThermo = liquid_.thermo();
118 const rhoThermo& vapourThermo = vapour_.thermo();
123 const Pair<tmp<volScalarField>> Hs =
124 solver_.heatTransfer.Hs(liquid_, solid_, scalar(0));
129 (solidH*solidT + liquidH*liquidT + qEvaporative_ + qQuenching_)
130 /
max(solidH + liquidH, rootVSmallH)
135 saturationModelPtr_->Tsat(liquid_.fluidThermo().p()())
142 partitioningModel_->wetFraction(liquid_()/
max(1 - solid_(), small));
146 departureDiameterModel_->dDeparture
158 departureFrequencyModel_->fDeparture
170 nucleationSiteDensity_ =
171 nucleationSiteModel_->nucleationSiteDensity
183 const tmp<volScalarField> tliquidRho(liquidThermo.rho());
185 const tmp<volScalarField> tvapourRho(vapourThermo.rho());
193 liquidRho*liquidCp*(Tsat -
min(Tsurface, Tsat))/(liquidRho*L)
197 wetFraction_*4.8*
exp(
min(-Ja/80,
log(vGreat)))
201 min(
pi*
sqr(dDeparture_)*nucleationSiteDensity_*Al/4, scalar(1))
205 min(
pi*
sqr(dDeparture_)*nucleationSiteDensity_*Al/4, scalar(5))
217 +
f*(1.0/6.0)*A2E*dDeparture_*vapourRho*fDeparture_*Av;
220 qEvaporative_ = mDot_*L;
231 /
max(fDeparture_, rootVSmallF)
232 /(
pi*(liquidkappa/liquidCp)/liquidRho)
239 +
f*A2*hQuenching*
max(Tsurface - liquidThermo.T(), rooVSmallT)*Av;
248 const word& modelType,
259 readSpecie(coeffs(modelType,
dict), false)
263 fluid_(solver_.fluid),
264 liquid_(fluid_.phases()[phaseNames().
first()]),
265 vapour_(fluid_.phases()[phaseNames().
second()]),
266 solid_(fluid_.phases()[
dict.
lookup(
"phase")]),
267 saturationModelPtr_(nullptr),
268 partitioningModel_(nullptr),
269 nucleationSiteModel_(nullptr),
270 departureDiameterModel_(nullptr),
271 departureFrequencyModel_(nullptr),
272 pressureEquationIndex_(-1),
277 name +
":wetFraction",
290 name +
":dDeparture",
303 name +
":fDeparture",
312 nucleationSiteDensity_
316 name +
":nucleationSiteDensity",
329 name +
":qQuenching",
342 name +
":qEvaporative",
375 || fieldName == solid_.thermo().he().name();
386 name() +
":Lfraction",
433 && (&
rho == &liquid_.rho() || &
rho == &vapour_.rho())
434 && &eqn.
psi() == &solver_.p_rgh
439 if (pressureEquationIndex_ % 2 == 0) correctMDot();
440 pressureEquationIndex_ ++;
458 if (&he == &liquid_.thermo().he() || &he == &solid_.thermo().he())
460 const scalar
sign = &he == &solid_.thermo().he() ? -1 : +1;
462 eqn +=
sign*(qEvaporative_ + qQuenching_);
466 if (&he != &solid_.thermo().he())
476 pressureEquationIndex_ = 0;
487 readCoeffs(coeffs(
dict));
Macros for easy insertion into run-time selection tables.
static tmp< DimensionedField< Type, GeoMesh, PrimitiveField > > New(const word &name, const GeoMesh &mesh, const dimensionSet &, const PrimitiveField< Type > &)
Return a temporary field constructed from name, mesh,.
Generic GeometricField class.
DimensionedField< Type, GeoMesh, PrimitiveField > Internal
Type of the internal field from which this GeometricField is derived.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
void reset(T *=nullptr)
If object pointer already set, delete object and set to given.
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
A special matrix type and solver, designed for finite volume solutions of scalar equations....
Mesh data needed to do the Finite Volume discretisation.
const fvSolution & solution() const
Return the fvSolution.
Finite volume model abstract base class.
static const dictionary & coeffs(const word &modelType, const dictionary &)
Return the coefficients sub-dictionary for a given model type.
virtual void addSup(fvMatrix< scalar > &eqn) const
Add a source term to a field-less proxy equation.
virtual bool addsSupToField(const word &fieldName) const
Return true if the fvModel adds a source term to the given.
Mix-in interface for nucleation models. Provides access to properties of the nucleation process,...
Base class for phase change models.
void reReadSpecie(const dictionary &dict) const
Re-read the names of the transferring specie.
virtual bool read(const dictionary &dict)
Read source dictionary.
void addSup(const volScalarField &alpha, const volScalarField &rho, const volScalarField &heOrYi, fvMatrix< scalar > &eqn) const
Override the energy equation to add the phase change heat, or.
Model for nucleate wall boiling on the surface of a third (solid) phase.
virtual tmp< DimensionedField< scalar, fvMesh > > Lfraction() const
Return the fraction of the latent heat that is transferred into.
virtual void correct()
Correct the fvModel.
virtual tmp< DimensionedField< scalar, fvMesh > > mDot() const
Return the mass transfer rate.
virtual bool read(const dictionary &dict)
Read source dictionary.
virtual tmp< DimensionedField< scalar, fvMesh > > d() const
Return the diameter of nuclei.
virtual tmp< DimensionedField< scalar, fvMesh > > tau() const
Return the nucleation time scale.
void addSup(const volScalarField &alpha, const volScalarField &rho, fvMatrix< scalar > &eqn) const
Override the pressure equation to add the mass transfer rate.
phaseSurfaceBoiling(const word &name, const word &modelType, const fvMesh &mesh, const dictionary &dict)
virtual bool addsSupToField(const word &fieldName) const
Return true if the fvModel adds a source term to the given.
virtual tmp< DimensionedField< scalar, fvMesh > > nDot() const
Return the number rate at which nuclei are generated.
static const dimensionSet dimK
Coefficient dimensions.
static autoPtr< saturationTemperatureModel > New(const word &name, const dictionary &dict)
Select with name within a dictionary.
scalar fieldRelaxationFactor(const word &name) const
Return the relaxation factor for the given field.
Abstract base class for run-time selectable region solvers.
A class for managing temporary objects.
Template function which returns the un-mangled name of a given type. Useful for types which do not ha...
static autoPtr< departureDiameterModel > New(const dictionary &dict)
Select null constructed.
static autoPtr< departureFrequencyModel > New(const dictionary &dict)
Select null constructed.
static autoPtr< nucleationSiteModel > New(const dictionary &dict)
Select null constructed.
static autoPtr< partitioningModel > New(const dictionary &dict)
Select null constructed.
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
volScalarField alpha(IOobject("alpha", runTime.name(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE), lambda *max(Ua &U, zeroSensitivity))
addToRunTimeSelectionTable(fvConstraint, bound, dictionary)
defineTypeNameAndDebug(bound, 0)
const unitSet & lookup(const word &unitName)
Lookup and return the named unit from the table.
dimensionedScalar exp(const dimensionedScalar &ds)
const dimensionSet & dimless
dimensionedScalar sign(const dimensionedScalar &ds)
const dimensionSet & dimLength
const dimensionSet & dimVolume
labelList second(const UList< labelPair > &p)
dimensionedScalar log(const dimensionedScalar &ds)
labelList first(const UList< labelPair > &p)
tmp< DimensionedField< typename outerProduct< Type, Type >::type, GeoMesh, Field >> sqr(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
void inv(pointPatchField< tensor > &, const pointPatchField< tensor > &)
const dimensionSet & dimTime
VolField< scalar > volScalarField
dimensioned< Type > min(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
const dimensionSet & dimDensity
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
const dimensionSet & dimEnergy
const dimensionSet & dimArea
void sqrt(LagrangianPatchField< scalar > &f, const LagrangianPatchField< scalar > &f1)
const dimensionSet & dimTemperature
dimensioned< Type > max(const DimensionedField< Type, GeoMesh, PrimitiveField > &df)
dimensioned< scalar > dimensionedScalar
Dimensioned scalar obtained from generic dimensioned type.