alphatWallBoilingWallFunction: Usability improvements

Bubble waiting time ratio has been made a user adjustable parameter, and
the names of the fields reported by the wallBoilingProperties function
have been rationalised.
This commit is contained in:
Will Bainbridge
2022-11-08 10:18:05 +00:00
parent 9a4bcbf7f4
commit aa21d36278
7 changed files with 44 additions and 36 deletions

View File

@ -92,7 +92,7 @@ bool Foam::functionObjects::wallBoilingProperties::execute()
bool Foam::functionObjects::wallBoilingProperties::write() bool Foam::functionObjects::wallBoilingProperties::write()
{ {
volScalarField dDepartureField volScalarField dDeparture
( (
volScalarField::New volScalarField::New
( (
@ -101,7 +101,7 @@ bool Foam::functionObjects::wallBoilingProperties::write()
dimensionedScalar(dimLength, 0) dimensionedScalar(dimLength, 0)
) )
); );
volScalarField fDepartureField volScalarField fDeparture
( (
volScalarField::New volScalarField::New
( (
@ -110,7 +110,7 @@ bool Foam::functionObjects::wallBoilingProperties::write()
dimensionedScalar(inv(dimTime), 0) dimensionedScalar(inv(dimTime), 0)
) )
); );
volScalarField nucSiteDensityField volScalarField nucleationSiteDensity
( (
volScalarField::New volScalarField::New
( (
@ -119,29 +119,29 @@ bool Foam::functionObjects::wallBoilingProperties::write()
dimensionedScalar(inv(dimArea), 0) dimensionedScalar(inv(dimArea), 0)
) )
); );
volScalarField fLiquidField volScalarField wetFraction
( (
volScalarField::New volScalarField::New
( (
IOobject::groupName("fLiquid", phase_.name()), IOobject::groupName("wetFraction", phase_.name()),
mesh_, mesh_,
dimensionedScalar(dimless, 0) dimensionedScalar(dimless, 0)
) )
); );
volScalarField quenchingHeatFluxField volScalarField qQuenching
( (
volScalarField::New volScalarField::New
( (
IOobject::groupName("quenchingHeatFlux", phase_.name()), IOobject::groupName("qQuenching", phase_.name()),
mesh_, mesh_,
dimensionedScalar(dimEnergy*inv(dimTime*dimArea), 0) dimensionedScalar(dimEnergy*inv(dimTime*dimArea), 0)
) )
); );
volScalarField evaporativeHeatFluxField volScalarField qEvaporative
( (
volScalarField::New volScalarField::New
( (
IOobject::groupName("evaporativeHeatFlux", phase_.name()), IOobject::groupName("qEvaporative", phase_.name()),
mesh_, mesh_,
dimensionedScalar(dimEnergy*inv(dimTime*dimArea), 0) dimensionedScalar(dimEnergy*inv(dimTime*dimArea), 0)
) )
@ -170,28 +170,28 @@ bool Foam::functionObjects::wallBoilingProperties::write()
const alphatWallBoilingWallFunction const alphatWallBoilingWallFunction
>(alphatBf[patchi]); >(alphatBf[patchi]);
dDepartureField.boundaryFieldRef()[patchi] = dDeparture.boundaryFieldRef()[patchi] =
alphatw.dDeparture(); alphatw.dDeparture();
fDepartureField.boundaryFieldRef()[patchi] = fDeparture.boundaryFieldRef()[patchi] =
alphatw.depFrequency(); alphatw.fDeparture();
nucSiteDensityField.boundaryFieldRef()[patchi] = nucleationSiteDensity.boundaryFieldRef()[patchi] =
alphatw.nucSiteDensity(); alphatw.nucleationSiteDensity();
fLiquidField.boundaryFieldRef()[patchi] = wetFraction.boundaryFieldRef()[patchi] =
alphatw.wallLiquidFraction(); alphatw.wetFraction();
quenchingHeatFluxField.boundaryFieldRef()[patchi] = qQuenching.boundaryFieldRef()[patchi] =
alphatw.quenching(); alphatw.qQuenching();
evaporativeHeatFluxField.boundaryFieldRef()[patchi] = qEvaporative.boundaryFieldRef()[patchi] =
alphatw.evaporative(); alphatw.qEvaporative();
} }
} }
} }
dDepartureField.write(); dDeparture.write();
fDepartureField.write(); fDeparture.write();
nucSiteDensityField.write(); nucleationSiteDensity.write();
fLiquidField.write(); wetFraction.write();
quenchingHeatFluxField.write(); qQuenching.write();
evaporativeHeatFluxField.write(); qEvaporative.write();
return true; return true;
} }

View File

@ -84,6 +84,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField
fLiquid_(p.size(), 0), fLiquid_(p.size(), 0),
qq_(p.size(), 0), qq_(p.size(), 0),
qe_(p.size(), 0), qe_(p.size(), 0),
tau_(0.8),
partitioningModel_(nullptr), partitioningModel_(nullptr),
nucleationSiteModel_(nullptr), nucleationSiteModel_(nullptr),
departureDiamModel_(nullptr), departureDiamModel_(nullptr),
@ -116,6 +117,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField
fLiquid_(p.size(), 0), fLiquid_(p.size(), 0),
qq_(p.size(), 0), qq_(p.size(), 0),
qe_(p.size(), 0), qe_(p.size(), 0),
tau_(dict.lookupOrDefault<scalar>("bubbleWaitingTimeRatio", 0.8)),
partitioningModel_(nullptr), partitioningModel_(nullptr),
nucleationSiteModel_(nullptr), nucleationSiteModel_(nullptr),
departureDiamModel_(nullptr), departureDiamModel_(nullptr),
@ -245,6 +247,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField
fLiquid_(mapper(psf.fLiquid_)), fLiquid_(mapper(psf.fLiquid_)),
qq_(mapper(psf.qq_)), qq_(mapper(psf.qq_)),
qe_(mapper(psf.qe_)), qe_(mapper(psf.qe_)),
tau_(psf.tau_),
partitioningModel_(psf.partitioningModel_, false), partitioningModel_(psf.partitioningModel_, false),
nucleationSiteModel_(psf.nucleationSiteModel_, false), nucleationSiteModel_(psf.nucleationSiteModel_, false),
departureDiamModel_(psf.departureDiamModel_, false), departureDiamModel_(psf.departureDiamModel_, false),
@ -269,6 +272,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField
fLiquid_(psf.fLiquid_), fLiquid_(psf.fLiquid_),
qq_(psf.qq_), qq_(psf.qq_),
qe_(psf.qe_), qe_(psf.qe_),
tau_(psf.tau_),
partitioningModel_(psf.partitioningModel_, false), partitioningModel_(psf.partitioningModel_, false),
nucleationSiteModel_(psf.nucleationSiteModel_, false), nucleationSiteModel_(psf.nucleationSiteModel_, false),
departureDiamModel_(psf.departureDiamModel_, false), departureDiamModel_(psf.departureDiamModel_, false),
@ -598,7 +602,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
2*(alphaw*Cpw)*fDep_ 2*(alphaw*Cpw)*fDep_
*sqrt *sqrt
( (
(0.8/max(fDep_, small))/(pi*alphaw/rhoLiquidw) (tau_/max(fDep_, small))/(pi*alphaw/rhoLiquidw)
) )
); );
@ -719,6 +723,7 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::write(Ostream& os) const
alphatPhaseChangeWallFunctionFvPatchScalarField::write(os); alphatPhaseChangeWallFunctionFvPatchScalarField::write(os);
writeEntry(os, "phaseType", phaseTypeNames_[phaseType_]); writeEntry(os, "phaseType", phaseTypeNames_[phaseType_]);
writeEntry(os, "bubbleWaitingTimeRatio", tau_);
writeEntry(os, "alphatConv", alphatConv_); writeEntry(os, "alphatConv", alphatConv_);
writeEntry(os, "dDeparture", dDep_); writeEntry(os, "dDeparture", dDep_);
writeEntry(os, "depFrequency", fDep_); writeEntry(os, "depFrequency", fDep_);

View File

@ -88,6 +88,7 @@ Usage
nucleationSiteModel| | yes | nucleationSiteModel| | yes |
departureDiamModel| | yes | departureDiamModel| | yes |
departureFreqModel| | yes | departureFreqModel| | yes |
bubbleWaitingTime| | no | yes
\endtable \endtable
NOTE: Runtime selectable submodels may require model specific entries NOTE: Runtime selectable submodels may require model specific entries
@ -202,6 +203,8 @@ private:
//- Evaporative surface heat flux //- Evaporative surface heat flux
scalarField qe_; scalarField qe_;
//- Bubble waiting time ratio
scalar tau_;
//- Run-time selected heat flux partitioning model //- Run-time selected heat flux partitioning model
autoPtr<wallBoilingModels::partitioningModel> autoPtr<wallBoilingModels::partitioningModel>
@ -289,31 +292,31 @@ public:
} }
//- Return the departure frequency field [Hz] //- Return the departure frequency field [Hz]
const scalarField& depFrequency() const const scalarField& fDeparture() const
{ {
return fDep_; return fDep_;
} }
//- Return the nucleation site density field [1/m^2] //- Return the nucleation site density field [1/m^2]
const scalarField& nucSiteDensity() const const scalarField& nucleationSiteDensity() const
{ {
return N_; return N_;
} }
//- Return the wall liquid fraction field [-] //- Return the wall liquid fraction field [-]
const scalarField& wallLiquidFraction() const const scalarField& wetFraction() const
{ {
return fLiquid_; return fLiquid_;
} }
//- Return the quenching surface heat flux field [W/m^2] //- Return the quenching surface heat flux field [W/m^2]
const scalarField& quenching() const const scalarField& qQuenching() const
{ {
return qq_; return qq_;
} }
//- Return the evaporative surface heat flux field [W/m^2] //- Return the evaporative surface heat flux field [W/m^2]
const scalarField& evaporative() const const scalarField& qEvaporative() const
{ {
return qe_; return qe_;
} }

View File

@ -38,7 +38,7 @@ runApplication -append foamPostProcess -latestTime -func "
patch=wall, patch=wall,
surfaceFormat=raw, surfaceFormat=raw,
interpolate=false, interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid) fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid wetFraction.liquid qQuenching.liquid qEvaporative.liquid)
)" )"
./validation/createWallBoilingPropertiesGraphs ./validation/createWallBoilingPropertiesGraphs

View File

@ -38,7 +38,7 @@ runApplication -append foamPostProcess -latestTime -func "
patch=wall, patch=wall,
surfaceFormat=raw, surfaceFormat=raw,
interpolate=false, interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid) fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid wetFraction.liquid qQuenching.liquid qEvaporative.liquid)
)" )"
./validation/createWallBoilingPropertiesGraphs ./validation/createWallBoilingPropertiesGraphs

View File

@ -39,7 +39,7 @@ runApplication -append foamPostProcess -latestTime -func "
patch=wall, patch=wall,
surfaceFormat=raw, surfaceFormat=raw,
interpolate=false, interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid) fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid wetFraction.liquid qQuenching.liquid qEvaporative.liquid)
)" )"
./validation/createWallBoilingPropertiesGraphs ./validation/createWallBoilingPropertiesGraphs

View File

@ -39,7 +39,7 @@ runApplication -append foamPostProcess -latestTime -func "
patch=wall, patch=wall,
surfaceFormat=raw, surfaceFormat=raw,
interpolate=false, interpolate=false,
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid fLiquid.liquid quenchingHeatFlux.liquid evaporativeHeatFlux.liquid) fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid wetFraction.liquid qQuenching.liquid qEvaporative.liquid)
)" )"
./validation/createWallBoilingPropertiesGraphs ./validation/createWallBoilingPropertiesGraphs