mirror of
https://github.com/OpenFOAM/OpenFOAM-6.git
synced 2025-12-08 06:57:46 +00:00
reactingTwoPhaseEulerFoam: Enhanced support for wall boiling
Contributed by Juho Peltola, VTT
Notable changes:
1. The same wall function is now used for both phases, but user must
specify phaseType ‘liquid’ or ‘vapor’
2. Runtime selectable submodels for:
- wall heat flux partitioning between the phases
- nucleation site density
- bubble departure frequency
- bubble departure diameter
3. An additional iteration loop for the wall boiling model in case
the initial guess for the wall temperature proves to be poor.
The wallBoiling tutorial has been updated to demonstrate this new functionality.
This commit is contained in:
@ -36,10 +36,31 @@ kineticTheoryModels/frictionalStressModel/JohnsonJacksonSchaeffer/JohnsonJackson
|
|||||||
kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
|
kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleTheta/JohnsonJacksonParticleThetaFvPatchScalarField.C
|
||||||
kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
|
kineticTheoryModels/derivedFvPatchFields/JohnsonJacksonParticleSlip/JohnsonJacksonParticleSlipFvPatchVectorField.C
|
||||||
|
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/partitioningModels/partitioningModel/partitioningModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/partitioningModels/partitioningModel/newPartitioningModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/partitioningModels/phaseFraction/phaseFraction.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/partitioningModels/Lavieville/Lavieville.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/partitioningModels/cosine/cosine.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/partitioningModels/linear/linear.C
|
||||||
|
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/nucleationSiteModel/nucleationSiteModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/nucleationSiteModel/newNucleationSiteModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/nucleationSiteModels/LemmertChawla/LemmertChawla.C
|
||||||
|
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/departureDiameterModel/departureDiameterModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/departureDiameterModel/newDepartureDiameterModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/TolubinskiKostanchuk/TolubinskiKostanchuk.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureDiameterModels/KocamustafaogullariIshii/KocamustafaogullariIshii.C
|
||||||
|
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureFrequencyModels/departureFrequencyModel/departureFrequencyModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureFrequencyModels/departureFrequencyModel/newDepartureFrequencyModel.C
|
||||||
|
derivedFvPatchFields/wallBoilingSubModels/departureFrequencyModels/Cole/Cole.C
|
||||||
|
|
||||||
derivedFvPatchFields/alphatPhaseChangeJayatillekeWallFunction/alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.C
|
derivedFvPatchFields/alphatPhaseChangeJayatillekeWallFunction/alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.C
|
||||||
derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
|
derivedFvPatchFields/alphatFixedDmdtWallBoilingWallFunction/alphatFixedDmdtWallBoilingWallFunctionFvPatchScalarField.C
|
||||||
derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C
|
derivedFvPatchFields/alphatWallBoilingWallFunction/alphatWallBoilingWallFunctionFvPatchScalarField.C
|
||||||
derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C
|
derivedFvPatchFields/copiedFixedValue/copiedFixedValueFvPatchScalarField.C
|
||||||
derivedFvPatchFields/fixedMultiPhaseHeatFlux/fixedMultiPhaseHeatFluxFvPatchScalarField.C
|
derivedFvPatchFields/fixedMultiPhaseHeatFlux/fixedMultiPhaseHeatFluxFvPatchScalarField.C
|
||||||
|
|
||||||
|
|
||||||
LIB = $(FOAM_LIBBIN)/libtwoPhaseReactingTurbulenceModels
|
LIB = $(FOAM_LIBBIN)/libtwoPhaseReactingTurbulenceModels
|
||||||
|
|||||||
@ -38,6 +38,31 @@ License
|
|||||||
#include "wallFvPatch.H"
|
#include "wallFvPatch.H"
|
||||||
#include "uniformDimensionedFields.H"
|
#include "uniformDimensionedFields.H"
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
template<>
|
||||||
|
const char* Foam::NamedEnum
|
||||||
|
<
|
||||||
|
Foam::compressible::
|
||||||
|
alphatWallBoilingWallFunctionFvPatchScalarField::phaseType,
|
||||||
|
2
|
||||||
|
>::names[] =
|
||||||
|
{
|
||||||
|
"vapor",
|
||||||
|
"liquid"
|
||||||
|
};
|
||||||
|
|
||||||
|
const Foam::NamedEnum
|
||||||
|
<
|
||||||
|
Foam::compressible::
|
||||||
|
alphatWallBoilingWallFunctionFvPatchScalarField::phaseType,
|
||||||
|
2
|
||||||
|
>
|
||||||
|
Foam::compressible::
|
||||||
|
alphatWallBoilingWallFunctionFvPatchScalarField::phaseTypeNames_;
|
||||||
|
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
@ -55,9 +80,14 @@ alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(p, iF),
|
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(p, iF),
|
||||||
|
phaseType_(liquidPhase),
|
||||||
relax_(0.5),
|
relax_(0.5),
|
||||||
AbyV_(p.size(), 0.0),
|
AbyV_(p.size(), 0),
|
||||||
alphatConv_(p.size(), 0.0)
|
alphatConv_(p.size(), 0),
|
||||||
|
partitioningModel_(nullptr),
|
||||||
|
nucleationSiteModel_(nullptr),
|
||||||
|
departureDiamModel_(nullptr),
|
||||||
|
departureFreqModel_(nullptr)
|
||||||
{
|
{
|
||||||
AbyV_ = this->patch().magSf();
|
AbyV_ = this->patch().magSf();
|
||||||
forAll(AbyV_, facei)
|
forAll(AbyV_, facei)
|
||||||
@ -77,10 +107,58 @@ alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(p, iF, dict),
|
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(p, iF, dict),
|
||||||
|
phaseType_(phaseTypeNames_.read(dict.lookup("phaseType"))),
|
||||||
relax_(dict.lookupOrDefault<scalar>("relax", 0.5)),
|
relax_(dict.lookupOrDefault<scalar>("relax", 0.5)),
|
||||||
AbyV_(p.size(), 0.0),
|
AbyV_(p.size(), 0),
|
||||||
alphatConv_(p.size(), 0.0)
|
alphatConv_(p.size(), 0),
|
||||||
|
partitioningModel_(nullptr),
|
||||||
|
nucleationSiteModel_(nullptr),
|
||||||
|
departureDiamModel_(nullptr),
|
||||||
|
departureFreqModel_(nullptr)
|
||||||
{
|
{
|
||||||
|
switch (phaseType_)
|
||||||
|
{
|
||||||
|
case vaporPhase:
|
||||||
|
{
|
||||||
|
partitioningModel_ =
|
||||||
|
wallBoilingModels::partitioningModel::New
|
||||||
|
(
|
||||||
|
dict.subDict("partitioningModel")
|
||||||
|
);
|
||||||
|
|
||||||
|
dmdt_ = 0;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case liquidPhase:
|
||||||
|
{
|
||||||
|
partitioningModel_ =
|
||||||
|
wallBoilingModels::partitioningModel::New
|
||||||
|
(
|
||||||
|
dict.subDict("partitioningModel")
|
||||||
|
);
|
||||||
|
|
||||||
|
nucleationSiteModel_ =
|
||||||
|
wallBoilingModels::nucleationSiteModel::New
|
||||||
|
(
|
||||||
|
dict.subDict("nucleationSiteModel")
|
||||||
|
);
|
||||||
|
|
||||||
|
departureDiamModel_ =
|
||||||
|
wallBoilingModels::departureDiameterModel::New
|
||||||
|
(
|
||||||
|
dict.subDict("departureDiamModel")
|
||||||
|
);
|
||||||
|
|
||||||
|
departureFreqModel_ =
|
||||||
|
wallBoilingModels::departureFrequencyModel::New
|
||||||
|
(
|
||||||
|
dict.subDict("departureFreqModel")
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (dict.found("alphatConv"))
|
if (dict.found("alphatConv"))
|
||||||
{
|
{
|
||||||
alphatConv_ = scalarField("alphatConv", dict, p.size());
|
alphatConv_ = scalarField("alphatConv", dict, p.size());
|
||||||
@ -89,7 +167,7 @@ alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
AbyV_ = this->patch().magSf();
|
AbyV_ = this->patch().magSf();
|
||||||
forAll(AbyV_, facei)
|
forAll(AbyV_, facei)
|
||||||
{
|
{
|
||||||
label faceCelli = this->patch().faceCells()[facei];
|
const label faceCelli = this->patch().faceCells()[facei];
|
||||||
AbyV_[facei] /= iF.mesh().V()[faceCelli];
|
AbyV_[facei] /= iF.mesh().V()[faceCelli];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -113,7 +191,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
),
|
),
|
||||||
relax_(psf.relax_),
|
relax_(psf.relax_),
|
||||||
AbyV_(psf.AbyV_),
|
AbyV_(psf.AbyV_),
|
||||||
alphatConv_(psf.alphatConv_, mapper)
|
alphatConv_(psf.alphatConv_, mapper),
|
||||||
|
partitioningModel_(psf.partitioningModel_),
|
||||||
|
nucleationSiteModel_(psf.nucleationSiteModel_),
|
||||||
|
departureDiamModel_(psf.departureDiamModel_),
|
||||||
|
departureFreqModel_(psf.departureFreqModel_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -126,7 +208,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(psf),
|
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(psf),
|
||||||
relax_(psf.relax_),
|
relax_(psf.relax_),
|
||||||
AbyV_(psf.AbyV_),
|
AbyV_(psf.AbyV_),
|
||||||
alphatConv_(psf.alphatConv_)
|
alphatConv_(psf.alphatConv_),
|
||||||
|
partitioningModel_(psf.partitioningModel_),
|
||||||
|
nucleationSiteModel_(psf.nucleationSiteModel_),
|
||||||
|
departureDiamModel_(psf.departureDiamModel_),
|
||||||
|
departureFreqModel_(psf.departureFreqModel_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -140,7 +226,11 @@ alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(psf, iF),
|
alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField(psf, iF),
|
||||||
relax_(psf.relax_),
|
relax_(psf.relax_),
|
||||||
AbyV_(psf.AbyV_),
|
AbyV_(psf.AbyV_),
|
||||||
alphatConv_(psf.alphatConv_)
|
alphatConv_(psf.alphatConv_),
|
||||||
|
partitioningModel_(psf.partitioningModel_),
|
||||||
|
nucleationSiteModel_(psf.nucleationSiteModel_),
|
||||||
|
departureDiamModel_(psf.departureDiamModel_),
|
||||||
|
departureFreqModel_(psf.departureFreqModel_)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -153,13 +243,19 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check that partitioningModel has been constructed
|
||||||
|
if (!partitioningModel_.valid())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "partitioningModel has not been constructed!"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
// Lookup the fluid model
|
// Lookup the fluid model
|
||||||
const ThermalPhaseChangePhaseSystem<MomentumTransferPhaseSystem
|
const ThermalPhaseChangePhaseSystem<MomentumTransferPhaseSystem
|
||||||
<
|
<
|
||||||
twoPhaseSystem>
|
twoPhaseSystem>
|
||||||
>&
|
>& fluid = refCast
|
||||||
fluid
|
|
||||||
= refCast
|
|
||||||
<
|
<
|
||||||
const ThermalPhaseChangePhaseSystem
|
const ThermalPhaseChangePhaseSystem
|
||||||
<
|
<
|
||||||
@ -170,6 +266,64 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
db().lookupObject<phaseSystem>("phaseProperties")
|
db().lookupObject<phaseSystem>("phaseProperties")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const label patchi = patch().index();
|
||||||
|
|
||||||
|
switch (phaseType_)
|
||||||
|
{
|
||||||
|
case vaporPhase:
|
||||||
|
{
|
||||||
|
const phaseModel& vapor
|
||||||
|
(
|
||||||
|
fluid.phase1().name() == internalField().group()
|
||||||
|
? fluid.phase1()
|
||||||
|
: fluid.phase2()
|
||||||
|
);
|
||||||
|
|
||||||
|
const phaseModel& liquid(fluid.otherPhase(vapor));
|
||||||
|
|
||||||
|
// Liquid phase fraction at the wall
|
||||||
|
const scalarField liquidw(liquid.boundaryField()[patchi]);
|
||||||
|
|
||||||
|
// Vapor Liquid phase fraction at the wall
|
||||||
|
const scalarField vaporw(vapor.boundaryField()[patchi]);
|
||||||
|
|
||||||
|
const scalarField fLiquid
|
||||||
|
(
|
||||||
|
partitioningModel_->fLiquid(liquidw)
|
||||||
|
);
|
||||||
|
|
||||||
|
operator==
|
||||||
|
(
|
||||||
|
calcAlphat(*this)*(1 - fLiquid)/max(vaporw, scalar(1e-8))
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case liquidPhase:
|
||||||
|
{
|
||||||
|
// Check that nucleationSiteModel has been constructed
|
||||||
|
if (!nucleationSiteModel_.valid())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "nucleationSiteModel has not been constructed!"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that departureDiameterModel has been constructed
|
||||||
|
if (!departureDiamModel_.valid())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "departureDiameterModel has not been constructed!"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that nucleationSiteModel has been constructed
|
||||||
|
if (!departureFreqModel_.valid())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "departureFrequencyModel has not been constructed!"
|
||||||
|
<< abort(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
const phaseModel& liquid
|
const phaseModel& liquid
|
||||||
(
|
(
|
||||||
fluid.phase1().name() == internalField().group()
|
fluid.phase1().name() == internalField().group()
|
||||||
@ -179,10 +333,9 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
|
|
||||||
const phaseModel& vapor(fluid.otherPhase(liquid));
|
const phaseModel& vapor(fluid.otherPhase(liquid));
|
||||||
|
|
||||||
const label patchi = patch().index();
|
|
||||||
|
|
||||||
// Retrieve turbulence properties from model
|
// Retrieve turbulence properties from model
|
||||||
const phaseCompressibleTurbulenceModel& turbModel = liquid.turbulence();
|
const phaseCompressibleTurbulenceModel& turbModel =
|
||||||
|
liquid.turbulence();
|
||||||
|
|
||||||
const tmp<scalarField> tnutw = turbModel.nut(patchi);
|
const tmp<scalarField> tnutw = turbModel.nut(patchi);
|
||||||
|
|
||||||
@ -200,11 +353,13 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
const volScalarField& k = tk();
|
const volScalarField& k = tk();
|
||||||
const fvPatchScalarField& kw = k.boundaryField()[patchi];
|
const fvPatchScalarField& kw = k.boundaryField()[patchi];
|
||||||
|
|
||||||
const fvPatchVectorField& Uw = turbModel.U().boundaryField()[patchi];
|
const fvPatchVectorField& Uw =
|
||||||
|
turbModel.U().boundaryField()[patchi];
|
||||||
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
const scalarField magUp(mag(Uw.patchInternalField() - Uw));
|
||||||
const scalarField magGradUw(mag(Uw.snGrad()));
|
const scalarField magGradUw(mag(Uw.snGrad()));
|
||||||
|
|
||||||
const fvPatchScalarField& rhow = turbModel.rho().boundaryField()[patchi];
|
const fvPatchScalarField& rhow =
|
||||||
|
turbModel.rho().boundaryField()[patchi];
|
||||||
const fvPatchScalarField& hew =
|
const fvPatchScalarField& hew =
|
||||||
liquid.thermo().he().boundaryField()[patchi];
|
liquid.thermo().he().boundaryField()[patchi];
|
||||||
|
|
||||||
@ -212,27 +367,25 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
liquid.thermo().T().boundaryField()[patchi];
|
liquid.thermo().T().boundaryField()[patchi];
|
||||||
const scalarField Tc(Tw.patchInternalField());
|
const scalarField Tc(Tw.patchInternalField());
|
||||||
|
|
||||||
scalarField uTau(Cmu25*sqrt(kw));
|
const scalarField uTau(Cmu25*sqrt(kw));
|
||||||
|
|
||||||
scalarField yPlus(uTau*y/(muw/rhow));
|
const scalarField yPlus(uTau*y/(muw/rhow));
|
||||||
|
|
||||||
scalarField Pr(muw/alphaw);
|
const scalarField Pr(muw/alphaw);
|
||||||
|
|
||||||
// Molecular-to-turbulent Prandtl number ratio
|
// Molecular-to-turbulent Prandtl number ratio
|
||||||
scalarField Prat(Pr/Prt_);
|
const scalarField Prat(Pr/Prt_);
|
||||||
|
|
||||||
// Thermal sublayer thickness
|
// Thermal sublayer thickness
|
||||||
scalarField P(this->Psmooth(Prat));
|
const scalarField P(this->Psmooth(Prat));
|
||||||
|
|
||||||
scalarField yPlusTherm(this->yPlusTherm(P, Prat));
|
const scalarField yPlusTherm(this->yPlusTherm(P, Prat));
|
||||||
|
|
||||||
const scalarField rhoc(rhow.patchInternalField());
|
const fvPatchScalarField& rhoLiquidw =
|
||||||
|
liquid.turbulence().rho().boundaryField()[patchi];
|
||||||
|
|
||||||
tmp<volScalarField> trhoVapor = vapor.thermo().rho();
|
|
||||||
const volScalarField& rhoVapor = trhoVapor();
|
|
||||||
const fvPatchScalarField& rhoVaporw =
|
const fvPatchScalarField& rhoVaporw =
|
||||||
rhoVapor.boundaryField()[patchi];
|
vapor.turbulence().rho().boundaryField()[patchi];
|
||||||
const scalarField rhoVaporp(rhoVaporw.patchInternalField());
|
|
||||||
|
|
||||||
tmp<volScalarField> tCp = liquid.thermo().Cp();
|
tmp<volScalarField> tCp = liquid.thermo().Cp();
|
||||||
const volScalarField& Cp = tCp();
|
const volScalarField& Cp = tCp();
|
||||||
@ -245,10 +398,6 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
const fvPatchScalarField& Tsatw(Tsat.boundaryField()[patchi]);
|
const fvPatchScalarField& Tsatw(Tsat.boundaryField()[patchi]);
|
||||||
const scalarField Tsatc(Tsatw.patchInternalField());
|
const scalarField Tsatc(Tsatw.patchInternalField());
|
||||||
|
|
||||||
// Gravitational acceleration
|
|
||||||
const uniformDimensionedVectorField& g =
|
|
||||||
db().lookupObject<uniformDimensionedVectorField>("g");
|
|
||||||
|
|
||||||
const fvPatchScalarField& pw =
|
const fvPatchScalarField& pw =
|
||||||
liquid.thermo().p().boundaryField()[patchi];
|
liquid.thermo().p().boundaryField()[patchi];
|
||||||
|
|
||||||
@ -257,67 +406,89 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
vapor.thermo().he(pw,Tsatc,patchi)-hew.patchInternalField()
|
vapor.thermo().he(pw,Tsatc,patchi)-hew.patchInternalField()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Liquid phase fraction at the wall
|
||||||
|
const scalarField liquidw(liquid.boundaryField()[patchi]);
|
||||||
|
|
||||||
|
const scalarField fLiquid(partitioningModel_->fLiquid(liquidw));
|
||||||
|
|
||||||
|
for (label i=0; i<10; i++)
|
||||||
|
{
|
||||||
// Liquid temperature at y+=250 is estimated from logarithmic
|
// Liquid temperature at y+=250 is estimated from logarithmic
|
||||||
// thermal wall function (Koncar, Krepper & Egorov, 2005)
|
// thermal wall function (Koncar, Krepper & Egorov, 2005)
|
||||||
scalarField Tplus_y250(Prt_*(log(E_*250)/kappa_ + P));
|
const scalarField Tplus_y250(Prt_*(log(E_*250)/kappa_ + P));
|
||||||
scalarField Tplus(Prt_*(log(E_*yPlus)/kappa_ + P));
|
|
||||||
|
const scalarField Tplus(Prt_*(log(E_*yPlus)/kappa_ + P));
|
||||||
scalarField Tl(Tw - (Tplus_y250/Tplus)*(Tw - Tc));
|
scalarField Tl(Tw - (Tplus_y250/Tplus)*(Tw - Tc));
|
||||||
Tl = max(Tc - 40, min(Tc, Tl));
|
Tl = max(Tc - 40, min(Tc, Tl));
|
||||||
|
const scalarField Tsub(max(Tsatw - Tl, scalar(0)));
|
||||||
|
|
||||||
|
// Wall heat flux partitioning
|
||||||
|
const scalarField fLiquid
|
||||||
|
(
|
||||||
|
partitioningModel_->fLiquid(liquidw)
|
||||||
|
);
|
||||||
|
|
||||||
// Nucleation site density:
|
// Nucleation site density:
|
||||||
// Reformulation of Lemmert & Chawla (Egorov & Menter, 2004)
|
|
||||||
const scalarField N
|
const scalarField N
|
||||||
(
|
(
|
||||||
0.8*9.922e5*pow(max((Tw - Tsatw)/10, scalar(0)), 1.805)
|
nucleationSiteModel_->N
|
||||||
|
(
|
||||||
|
liquid,
|
||||||
|
vapor,
|
||||||
|
patchi,
|
||||||
|
Tsatw
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Bubble departure diameter:
|
// Bubble departure diameter:
|
||||||
// Tolubinski and Kostanchuk (1970)
|
const scalarField dDep
|
||||||
const scalarField Tsub(max(Tsatw - Tl, scalar(0)));
|
|
||||||
const scalarField Ddep
|
|
||||||
(
|
(
|
||||||
max(min(0.0006*exp(-Tsub/45), scalar(0.0014)), scalar(1e-6))
|
departureDiamModel_->dDeparture
|
||||||
|
(
|
||||||
|
liquid,
|
||||||
|
vapor,
|
||||||
|
patchi,
|
||||||
|
Tsub
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Bubble departure frequency:
|
// Bubble departure frequency:
|
||||||
// Cole (1960)
|
const scalarField fDep
|
||||||
const scalarField F
|
|
||||||
(
|
(
|
||||||
sqrt
|
departureFreqModel_->fDeparture
|
||||||
(
|
(
|
||||||
4*mag(g).value()*(max(rhoc - rhoVaporp, scalar(0.1)))/(3*Ddep*rhow)
|
liquid,
|
||||||
|
vapor,
|
||||||
|
patchi,
|
||||||
|
dDep
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Area fractions:
|
// Area fractions:
|
||||||
|
|
||||||
// Del Valle & Kenning (1985)
|
// Del Valle & Kenning (1985)
|
||||||
const scalarField Ja(rhoc*Cpw*Tsub/(rhoVaporp*L));
|
const scalarField Ja(rhoLiquidw*Cpw*Tsub/(rhoVaporw*L));
|
||||||
const scalarField Al(4.8*exp(-Ja/80));
|
const scalarField Al(fLiquid*4.8*exp(-Ja/80));
|
||||||
|
|
||||||
// Liquid phase fraction at the wall
|
const scalarField A2(min(M_PI*sqr(dDep)*N*Al/4, scalar(1)));
|
||||||
const scalarField liquidw(liquid.boundaryField()[patchi]);
|
|
||||||
|
|
||||||
// Damp boiling at high void fractions.
|
|
||||||
const scalarField W(min(liquidw/0.2, scalar(1)));
|
|
||||||
|
|
||||||
const scalarField A2(W*min(M_PI*sqr(Ddep)*N*Al/4, scalar(1)));
|
|
||||||
const scalarField A1(max(1 - A2, scalar(1e-4)));
|
const scalarField A1(max(1 - A2, scalar(1e-4)));
|
||||||
const scalarField A2E(W*min(M_PI*sqr(Ddep)*N*Al/4, scalar(5)));
|
const scalarField A2E(min(M_PI*sqr(dDep)*N*Al/4, scalar(5)));
|
||||||
|
|
||||||
// Wall evaporation heat flux [kg/s3 = J/m2s]
|
// Wall evaporation heat flux [kg/s3 = J/m2s]
|
||||||
const scalarField Qe((1.0/6.0)*A2E*Ddep*rhoVaporw*F*L);
|
const scalarField Qe((1.0/6.0)*A2E*dDep*rhoVaporw*fDep*L);
|
||||||
|
|
||||||
// Volumetric mass source in the near wall cell due to the wall boiling
|
// Volumetric mass source in the near wall cell due to the
|
||||||
|
// wall boiling
|
||||||
dmdt_ = (1 - relax_)*dmdt_ + relax_*Qe*AbyV_/L;
|
dmdt_ = (1 - relax_)*dmdt_ + relax_*Qe*AbyV_/L;
|
||||||
|
|
||||||
// Volumetric source in the near wall cell due to the wall boiling
|
// Volumetric source in the near wall cell due to the wall
|
||||||
|
// boiling
|
||||||
mDotL_ = dmdt_*L;
|
mDotL_ = dmdt_*L;
|
||||||
|
|
||||||
// Quenching heat transfer coefficient
|
// Quenching heat transfer coefficient
|
||||||
const scalarField hQ
|
const scalarField hQ
|
||||||
(
|
(
|
||||||
2*(alphaw*Cpw)*F*sqrt((0.8/F)/(M_PI*alphaw/rhow))
|
2*(alphaw*Cpw)*fDep*sqrt((0.8/fDep)/(M_PI*alphaw/rhow))
|
||||||
);
|
);
|
||||||
|
|
||||||
// Quenching heat flux
|
// Quenching heat flux
|
||||||
@ -325,38 +496,83 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
|
|
||||||
// Convective heat flux
|
// Convective heat flux
|
||||||
alphatConv_ = calcAlphat(alphatConv_);
|
alphatConv_ = calcAlphat(alphatConv_);
|
||||||
//const scalarField Qc(A1*(alphatConv_ + alphaw)*hew.snGrad());
|
|
||||||
|
|
||||||
// Effective thermal diffusivity that corresponds to the calculated
|
// Effective thermal diffusivity that corresponds to the
|
||||||
// convective, quenching and evaporative heat fluxes
|
// calculated convective, quenching and evaporative heat fluxes
|
||||||
|
|
||||||
operator==
|
operator==
|
||||||
(
|
(
|
||||||
A1*alphatConv_ + (Qq + Qe)/max(liquidw*hew.snGrad(), scalar(1e-16))
|
(
|
||||||
|
A1*alphatConv_
|
||||||
|
+ (Qq + Qe)/max(hew.snGrad(), scalar(1e-16))
|
||||||
|
)
|
||||||
|
/max(liquidw, scalar(1e-8))
|
||||||
);
|
);
|
||||||
|
|
||||||
|
scalarField TsupPrev(max((Tw - Tsatw),scalar(0)));
|
||||||
|
const_cast<fvPatchScalarField&>(Tw).evaluate();
|
||||||
|
scalarField TsupNew(max((Tw - Tsatw),scalar(0)));
|
||||||
|
|
||||||
|
scalar maxErr(max(mag(TsupPrev - TsupNew)));
|
||||||
|
|
||||||
|
if (maxErr < 1e-1)
|
||||||
|
{
|
||||||
|
if (i > 0)
|
||||||
|
{
|
||||||
|
Info<< "Wall boiling wall function iterations: "
|
||||||
|
<< i + 1 << endl;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
{
|
{
|
||||||
|
const scalarField Qc
|
||||||
|
(
|
||||||
|
fLiquid*A1*(alphatConv_ + alphaw)*hew.snGrad()
|
||||||
|
);
|
||||||
|
|
||||||
|
const scalarField QEff
|
||||||
|
(
|
||||||
|
liquidw*(*this + alphaw)*hew.snGrad()
|
||||||
|
);
|
||||||
|
|
||||||
Info<< " L: " << gMin(L) << " - " << gMax(L) << endl;
|
Info<< " L: " << gMin(L) << " - " << gMax(L) << endl;
|
||||||
Info<< " Tl: " << gMin(Tl) << " - " << gMax(Tl) << endl;
|
Info<< " Tl: " << gMin(Tl) << " - " << gMax(Tl) << endl;
|
||||||
Info<< " N: " << gMin(N) << " - " << gMax(N) << endl;
|
Info<< " N: " << gMin(N) << " - " << gMax(N) << endl;
|
||||||
Info<< " Ddep: " << gMin(Ddep) << " - " << gMax(Ddep) << endl;
|
Info<< " dDep: " << gMin(dDep) << " - "
|
||||||
Info<< " F: " << gMin(F) << " - " << gMax(F) << endl;
|
<< gMax(dDep) << endl;
|
||||||
|
Info<< " fDep: " << gMin(fDep) << " - "
|
||||||
|
<< gMax(fDep) << endl;
|
||||||
Info<< " Al: " << gMin(Al) << " - " << gMax(Al) << endl;
|
Info<< " Al: " << gMin(Al) << " - " << gMax(Al) << endl;
|
||||||
Info<< " A1: " << gMin(A1) << " - " << gMax(A1) << endl;
|
Info<< " A1: " << gMin(A1) << " - " << gMax(A1) << endl;
|
||||||
Info<< " A2: " << gMin(A2) << " - " << gMax(A2) << endl;
|
Info<< " A2: " << gMin(A2) << " - " << gMax(A2) << endl;
|
||||||
Info<< " A2E: " << gMin(A2E) << " - " << gMax(A2E) << endl;
|
Info<< " A2E: " << gMin(A2E) << " - "
|
||||||
Info<< " dmdtW: " << gMin(dmdt_) << " - " << gMax(dmdt_) << endl;
|
<< gMax(A2E) << endl;
|
||||||
const scalarField Qc(A1*(alphatConv_ + alphaw)*hew.snGrad());
|
Info<< " dmdtW: " << gMin(dmdt_) << " - "
|
||||||
|
<< gMax(dmdt_) << endl;
|
||||||
Info<< " Qc: " << gMin(Qc) << " - " << gMax(Qc) << endl;
|
Info<< " Qc: " << gMin(Qc) << " - " << gMax(Qc) << endl;
|
||||||
Info<< " Qq: " << gMin(Qq) << " - " << gMax(Qq) << endl;
|
Info<< " Qq: " << gMin(fLiquid*Qq) << " - "
|
||||||
Info<< " Qe: " << gMin(Qe) << " - " << gMax(Qe) << endl;
|
<< gMax(fLiquid*Qq) << endl;
|
||||||
const scalarField QEff(liquidw*(*this + alphaw)*hew.snGrad());
|
Info<< " Qe: " << gMin(fLiquid*Qe) << " - "
|
||||||
Info<< " QEff: " << gMin(QEff) << " - " << gMax(QEff) << endl;
|
<< gMax(fLiquid*Qe) << endl;
|
||||||
Info<< " alphat: " << gMin(*this) << " - " << gMax(*this) << endl;
|
Info<< " QEff: " << gMin(QEff) << " - "
|
||||||
|
<< gMax(QEff) << endl;
|
||||||
|
Info<< " alphat: " << gMin(*this) << " - "
|
||||||
|
<< gMax(*this) << endl;
|
||||||
Info<< " alphatConv: " << gMin(alphatConv_)
|
Info<< " alphatConv: " << gMin(alphatConv_)
|
||||||
<< " - " << gMax(alphatConv_) << endl;
|
<< " - " << gMax(alphatConv_) << endl;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Unknown phase type. Valid types are: "
|
||||||
|
<< phaseTypeNames_ << nl << exit(FatalError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fixedValueFvPatchScalarField::updateCoeffs();
|
fixedValueFvPatchScalarField::updateCoeffs();
|
||||||
}
|
}
|
||||||
@ -365,7 +581,47 @@ void alphatWallBoilingWallFunctionFvPatchScalarField::updateCoeffs()
|
|||||||
void alphatWallBoilingWallFunctionFvPatchScalarField::write(Ostream& os) const
|
void alphatWallBoilingWallFunctionFvPatchScalarField::write(Ostream& os) const
|
||||||
{
|
{
|
||||||
fvPatchField<scalar>::write(os);
|
fvPatchField<scalar>::write(os);
|
||||||
|
|
||||||
|
os.writeKeyword("phaseType") << phaseTypeNames_[phaseType_]
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
|
||||||
os.writeKeyword("relax") << relax_ << token::END_STATEMENT << nl;
|
os.writeKeyword("relax") << relax_ << token::END_STATEMENT << nl;
|
||||||
|
|
||||||
|
switch (phaseType_)
|
||||||
|
{
|
||||||
|
case vaporPhase:
|
||||||
|
{
|
||||||
|
os.writeKeyword("partitioningModel") << nl;
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
partitioningModel_->write(os);
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << nl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case liquidPhase:
|
||||||
|
{
|
||||||
|
os.writeKeyword("partitioningModel") << nl;
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
partitioningModel_->write(os);
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << nl;
|
||||||
|
|
||||||
|
os.writeKeyword("nucleationSiteModel") << nl;
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
nucleationSiteModel_->write(os);
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << nl;
|
||||||
|
|
||||||
|
os.writeKeyword("departureDiamModel") << nl;
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
departureDiamModel_->write(os);
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << nl;
|
||||||
|
|
||||||
|
os.writeKeyword("departureFreqModel") << nl;
|
||||||
|
os << indent << token::BEGIN_BLOCK << incrIndent << nl;
|
||||||
|
departureFreqModel_->write(os);
|
||||||
|
os << decrIndent << indent << token::END_BLOCK << nl;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dmdt_.writeEntry("dmdt", os);
|
dmdt_.writeEntry("dmdt", os);
|
||||||
alphatConv_.writeEntry("alphatConv", os);
|
alphatConv_.writeEntry("alphatConv", os);
|
||||||
writeEntry("value", os);
|
writeEntry("value", os);
|
||||||
|
|||||||
@ -28,11 +28,17 @@ Group
|
|||||||
grpCmpWallFunctions
|
grpCmpWallFunctions
|
||||||
|
|
||||||
Description
|
Description
|
||||||
A thermal wall function for simulation of subcooled nucleate wall boiling.
|
A thermal wall function for simulation of subcooled nucleate wall boiling
|
||||||
|
with runtime selctable submodels for:
|
||||||
|
- wall heat flux partitioning model
|
||||||
|
- nucleation site density
|
||||||
|
- bubble departure frequency
|
||||||
|
- bubble departure diameter
|
||||||
|
|
||||||
Implements a version of the well-known RPI wall boiling model
|
Implements a version of the well-known RPI wall boiling model
|
||||||
(Kurul & Podowski, 1991). The model implementation is similar to the model
|
(Kurul & Podowski, 1991). The model implementation is similar to the model
|
||||||
described by Peltola & Pättikangas (2012).
|
described by Peltola & Pättikangas (2012) but has been extended with the
|
||||||
|
wall heat flux partitioning models.
|
||||||
|
|
||||||
References:
|
References:
|
||||||
\verbatim
|
\verbatim
|
||||||
@ -51,8 +57,66 @@ Description
|
|||||||
Daejeon, Korea, September 10-12 2012
|
Daejeon, Korea, September 10-12 2012
|
||||||
\endverbatim
|
\endverbatim
|
||||||
|
|
||||||
See also
|
Usage
|
||||||
Foam::fixedValueFvPatchField
|
\table
|
||||||
|
Property | Description | Required | Default value
|
||||||
|
phaseType | 'vapor' or 'liquid' | yes |
|
||||||
|
relax |wall boiling model relaxation| yes |
|
||||||
|
Prt | inherited from alphatPhaseChangeJayatillekeWallFunction
|
||||||
|
Cmu | inherited from alphatPhaseChangeJayatillekeWallFunction
|
||||||
|
kappa | inherited from alphatPhaseChangeJayatillekeWallFunction
|
||||||
|
E | inherited from alphatPhaseChangeJayatillekeWallFunction
|
||||||
|
dmdt | phase change mass flux | yes |
|
||||||
|
value | initial alphat value | yes |
|
||||||
|
|
||||||
|
if phaseType 'vapor':
|
||||||
|
|
||||||
|
partitioningModel| | yes |
|
||||||
|
|
||||||
|
if phaseType 'liquid':
|
||||||
|
|
||||||
|
partitioningModel| | yes |
|
||||||
|
nucleationSiteModel| | yes |
|
||||||
|
departureDiamModel| | yes |
|
||||||
|
departureFreqModel| | yes |
|
||||||
|
\endtable
|
||||||
|
|
||||||
|
NOTE: Runtime selectabale submodels may require model specific entries
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
\verbatim
|
||||||
|
hotWall
|
||||||
|
{
|
||||||
|
type compressible::alphatWallBoiling2WallFunction;
|
||||||
|
phaseType liquid;
|
||||||
|
Prt 0.85;
|
||||||
|
Cmu 0.09;
|
||||||
|
kappa 0.41;
|
||||||
|
E 9.8;
|
||||||
|
relax 0.001;
|
||||||
|
dmdt uniform 0;
|
||||||
|
partitioningModel
|
||||||
|
{
|
||||||
|
type Lavieville;
|
||||||
|
alphaCrit 0.2;
|
||||||
|
}
|
||||||
|
nucleationSiteModel
|
||||||
|
{
|
||||||
|
type LemmertChawla;
|
||||||
|
}
|
||||||
|
departureDiamModel
|
||||||
|
{
|
||||||
|
type TolubinskiKostanchuk;
|
||||||
|
}
|
||||||
|
departureFreqModel
|
||||||
|
{
|
||||||
|
type Cole;
|
||||||
|
}
|
||||||
|
value uniform 0.01;
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SeeAlso
|
||||||
|
Foam::alphatPhaseChangeJayatillekeWallFunctionFvPatchField
|
||||||
|
|
||||||
SourceFiles
|
SourceFiles
|
||||||
alphatWallBoilingWallFunctionFvPatchScalarField.C
|
alphatWallBoilingWallFunctionFvPatchScalarField.C
|
||||||
@ -63,6 +127,10 @@ SourceFiles
|
|||||||
#define compressiblealphatWallBoilingWallFunctionFvPatchScalarField_H
|
#define compressiblealphatWallBoilingWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
#include "alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.H"
|
#include "alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.H"
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
#include "nucleationSiteModel.H"
|
||||||
|
#include "departureDiameterModel.H"
|
||||||
|
#include "departureFrequencyModel.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -79,8 +147,28 @@ class alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
:
|
:
|
||||||
public alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField
|
public alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField
|
||||||
{
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
// Data types
|
||||||
|
|
||||||
|
//- Enumeration listing the possible operational modes
|
||||||
|
enum phaseType
|
||||||
|
{
|
||||||
|
vaporPhase,
|
||||||
|
liquidPhase
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
// Private data
|
// Private data
|
||||||
|
|
||||||
|
//- Heat source type names
|
||||||
|
static const NamedEnum<phaseType, 2> phaseTypeNames_;
|
||||||
|
|
||||||
|
//- Heat source type
|
||||||
|
phaseType phaseType_;
|
||||||
|
|
||||||
//- dmdt relaxationFactor
|
//- dmdt relaxationFactor
|
||||||
scalar relax_;
|
scalar relax_;
|
||||||
|
|
||||||
@ -90,6 +178,22 @@ class alphatWallBoilingWallFunctionFvPatchScalarField
|
|||||||
//- Convective turbulent thermal diffusivity
|
//- Convective turbulent thermal diffusivity
|
||||||
scalarField alphatConv_;
|
scalarField alphatConv_;
|
||||||
|
|
||||||
|
//- Run-time selected heat flux partitioning model
|
||||||
|
autoPtr<wallBoilingModels::partitioningModel>
|
||||||
|
partitioningModel_;
|
||||||
|
|
||||||
|
//- Run-time selected nucleation site density model
|
||||||
|
autoPtr<wallBoilingModels::nucleationSiteModel>
|
||||||
|
nucleationSiteModel_;
|
||||||
|
|
||||||
|
//- Run-time selected bubble departure diameter model
|
||||||
|
autoPtr<wallBoilingModels::departureDiameterModel>
|
||||||
|
departureDiamModel_;
|
||||||
|
|
||||||
|
//- Run-time selected bubble departure frequency model
|
||||||
|
autoPtr<wallBoilingModels::departureFrequencyModel>
|
||||||
|
departureFreqModel_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,119 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "KocamustafaogullariIshii.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "uniformDimensionedFields.H"
|
||||||
|
#include "compressibleTurbulenceModel.H"
|
||||||
|
#include "ThermalDiffusivity.H"
|
||||||
|
#include "PhaseCompressibleTurbulenceModel.H"
|
||||||
|
#include "phaseSystem.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace departureDiameterModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(KocamustafaogullariIshii, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
departureDiameterModel,
|
||||||
|
KocamustafaogullariIshii,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
KocamustafaogullariIshii::KocamustafaogullariIshii
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
departureDiameterModel(),
|
||||||
|
phi_(readScalar(dict.lookup("phi")))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
KocamustafaogullariIshii::~KocamustafaogullariIshii()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
KocamustafaogullariIshii::dDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& Tsub
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Gravitational acceleration
|
||||||
|
const uniformDimensionedVectorField& g =
|
||||||
|
liquid.mesh().lookupObject<uniformDimensionedVectorField>("g");
|
||||||
|
|
||||||
|
const fvPatchScalarField& rhoLiquid =
|
||||||
|
liquid.turbulence().rho().boundaryField()[patchi];
|
||||||
|
|
||||||
|
const fvPatchScalarField& rhoVapor =
|
||||||
|
vapor.turbulence().rho().boundaryField()[patchi];
|
||||||
|
|
||||||
|
const scalarField rhoM((rhoLiquid-rhoVapor)/rhoVapor);
|
||||||
|
|
||||||
|
const tmp<volScalarField>& tsigma
|
||||||
|
(
|
||||||
|
liquid.fluid().sigma(phasePairKey(liquid.name(),vapor.name()))
|
||||||
|
);
|
||||||
|
const volScalarField& sigma = tsigma();
|
||||||
|
const fvPatchScalarField& sigmaw = sigma.boundaryField()[patchi];
|
||||||
|
|
||||||
|
return
|
||||||
|
0.0012*pow(rhoM,0.9)*0.0208*phi_
|
||||||
|
*sqrt(sigmaw/(mag(g.value())*(rhoLiquid-rhoVapor)));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
KocamustafaogullariIshii::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
departureDiameterModel::write(os);
|
||||||
|
os.writeKeyword("phi") << phi_ << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,112 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::KocamustafaogullariIshii
|
||||||
|
|
||||||
|
Description
|
||||||
|
A correlation for bubble departure diameter.
|
||||||
|
|
||||||
|
Requires model parameter 'phi': contact angle in degrees.
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Kocamustafaogullari, G., & Ishii, M. (1983).
|
||||||
|
Interfacial area and nucleation site density in boiling systems.
|
||||||
|
International Journal of Heat and Mass Transfer, 26(9), 1377-1387.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
KocamustafaogullariIshii.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef KocamustafaogullariIshii_H
|
||||||
|
#define KocamustafaogullariIshii_H
|
||||||
|
|
||||||
|
#include "departureDiameterModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace departureDiameterModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class KocamustafaogullariIshii Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class KocamustafaogullariIshii
|
||||||
|
:
|
||||||
|
public departureDiameterModel
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Contact angle
|
||||||
|
scalar phi_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("KocamustafaogullariIshii");
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
KocamustafaogullariIshii(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~KocamustafaogullariIshii();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the departure diameter field
|
||||||
|
virtual tmp<scalarField> dDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& Tsub
|
||||||
|
) const;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace departureDiameterModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,84 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "TolubinskiKostanchuk.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace departureDiameterModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(TolubinskiKostanchuk, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
departureDiameterModel,
|
||||||
|
TolubinskiKostanchuk,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
TolubinskiKostanchuk::TolubinskiKostanchuk
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
departureDiameterModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
TolubinskiKostanchuk::~TolubinskiKostanchuk()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::
|
||||||
|
TolubinskiKostanchuk::dDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& Tsub
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return max(min(0.0006*exp(-Tsub/45), scalar(0.0014)), scalar(1e-6));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::departureDiameterModels::TolubinskiKostanchuk
|
||||||
|
|
||||||
|
Description
|
||||||
|
Tolubinski-Kostanchuk correlation for bubble departure diameter.
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Tolubinsky, V. I., & Kostanchuk, D. M. (1970).
|
||||||
|
Vapour bubbles growth rate and heat transfer intensity at subcooled
|
||||||
|
water boiling.
|
||||||
|
In International Heat Transfer Conference 4 (Vol. 23). Begel House Inc.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
TolubinskiKostanchuk.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef TolubinskiKostanchuk_H
|
||||||
|
#define TolubinskiKostanchuk_H
|
||||||
|
|
||||||
|
#include "departureDiameterModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace departureDiameterModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class TolubinskiKostanchuk Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class TolubinskiKostanchuk
|
||||||
|
:
|
||||||
|
public departureDiameterModel
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("TolubinskiKostanchuk");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
TolubinskiKostanchuk(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~TolubinskiKostanchuk();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the departure diameter field
|
||||||
|
virtual tmp<scalarField> dDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& Tsub
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace departureDiameterModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,59 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "departureDiameterModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(departureDiameterModel, 0);
|
||||||
|
defineRunTimeSelectionTable(departureDiameterModel, dictionary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureDiameterModel::departureDiameterModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureDiameterModel::~departureDiameterModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::departureDiameterModel::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
os.writeKeyword("type") << this->type() << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::departureDiameterModel
|
||||||
|
|
||||||
|
Description
|
||||||
|
Base class for bubble departure diameter models
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
departureDiameterModel.C
|
||||||
|
newdepartureDiameterModel.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef departureDiameterModel_H
|
||||||
|
#define departureDiameterModel_H
|
||||||
|
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "dictionary.H"
|
||||||
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
|
#include "phaseModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class departureDiameterModel Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class departureDiameterModel
|
||||||
|
{
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
departureDiameterModel(const departureDiameterModel&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const departureDiameterModel&);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("departureDiameterModel");
|
||||||
|
|
||||||
|
|
||||||
|
//- Declare runtime construction
|
||||||
|
declareRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
autoPtr,
|
||||||
|
departureDiameterModel,
|
||||||
|
dictionary,
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
),
|
||||||
|
(dict)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct null
|
||||||
|
departureDiameterModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Selectors
|
||||||
|
|
||||||
|
//- Select null constructed
|
||||||
|
static autoPtr<departureDiameterModel> New(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~departureDiameterModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the departure diameter field
|
||||||
|
virtual tmp<scalarField> dDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& Tsub
|
||||||
|
) const = 0;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "departureDiameterModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::autoPtr<Foam::wallBoilingModels::departureDiameterModel>
|
||||||
|
Foam::wallBoilingModels::departureDiameterModel::New
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
{
|
||||||
|
word departureDiameterModelType(dict.lookup("type"));
|
||||||
|
|
||||||
|
Info<< "Selecting departureDiameterModel: "
|
||||||
|
<< departureDiameterModelType << endl;
|
||||||
|
|
||||||
|
dictionaryConstructorTable::iterator cstrIter =
|
||||||
|
dictionaryConstructorTablePtr_->find(departureDiameterModelType);
|
||||||
|
|
||||||
|
if (cstrIter == dictionaryConstructorTablePtr_->end())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Unknown departureDiameterModelType type "
|
||||||
|
<< departureDiameterModelType << endl << endl
|
||||||
|
<< "Valid departureDiameterModel types are : " << endl
|
||||||
|
<< dictionaryConstructorTablePtr_->sortedToc()
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cstrIter()(dict);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "Cole.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
#include "uniformDimensionedFields.H"
|
||||||
|
#include "compressibleTurbulenceModel.H"
|
||||||
|
#include "ThermalDiffusivity.H"
|
||||||
|
#include "PhaseCompressibleTurbulenceModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace departureFrequencyModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(Cole, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
departureFrequencyModel,
|
||||||
|
Cole,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModels::
|
||||||
|
Cole::Cole(const dictionary& dict)
|
||||||
|
:
|
||||||
|
departureFrequencyModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModels::
|
||||||
|
Cole::~Cole()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModels::
|
||||||
|
Cole::fDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& dDep
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
// Gravitational acceleration
|
||||||
|
const uniformDimensionedVectorField& g =
|
||||||
|
liquid.mesh().lookupObject<uniformDimensionedVectorField>("g");
|
||||||
|
|
||||||
|
const fvPatchScalarField& rhoLiquid =
|
||||||
|
liquid.turbulence().rho().boundaryField()[patchi];
|
||||||
|
|
||||||
|
const fvPatchScalarField& rhoVapor =
|
||||||
|
vapor.turbulence().rho().boundaryField()[patchi];
|
||||||
|
|
||||||
|
return sqrt
|
||||||
|
(
|
||||||
|
4*mag(g).value()
|
||||||
|
*max(rhoLiquid - rhoVapor, scalar(0.1))
|
||||||
|
/(3*dDep*rhoLiquid)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,105 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModels::Cole
|
||||||
|
|
||||||
|
Description
|
||||||
|
Cole correlation for bubble departure frequency.
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Cole, R. (1960).
|
||||||
|
A photographic study of pool boiling in the region of the
|
||||||
|
critical heat flux.
|
||||||
|
AIChE Journal, 6(4), 533-538.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
Cole.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef Cole_H
|
||||||
|
#define Cole_H
|
||||||
|
|
||||||
|
#include "departureFrequencyModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace departureFrequencyModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class Cole Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class Cole
|
||||||
|
:
|
||||||
|
public departureFrequencyModel
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("Cole");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
Cole(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~Cole();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the bubble departure frequency
|
||||||
|
virtual tmp<scalarField> fDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& dDep
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace departureFrequencyModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "departureFrequencyModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(departureFrequencyModel, 0);
|
||||||
|
defineRunTimeSelectionTable(departureFrequencyModel, dictionary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModel::departureFrequencyModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModel::~departureFrequencyModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::departureFrequencyModel::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
os.writeKeyword("type") << this->type() << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::departureFrequencyModel
|
||||||
|
|
||||||
|
Description
|
||||||
|
Base class for bubble departure frequency models
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
departureFrequencyModel.C
|
||||||
|
newdepartureFrequencyModel.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef departureFrequencyModel_H
|
||||||
|
#define departureFrequencyModel_H
|
||||||
|
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "dictionary.H"
|
||||||
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
|
#include "phaseModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class departureFrequencyModel Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class departureFrequencyModel
|
||||||
|
{
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
departureFrequencyModel(const departureFrequencyModel&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const departureFrequencyModel&);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("departureFrequencyModel");
|
||||||
|
|
||||||
|
|
||||||
|
//- Declare runtime construction
|
||||||
|
declareRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
autoPtr,
|
||||||
|
departureFrequencyModel,
|
||||||
|
dictionary,
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
),
|
||||||
|
(dict)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct null
|
||||||
|
departureFrequencyModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Selectors
|
||||||
|
|
||||||
|
//- Select null constructed
|
||||||
|
static autoPtr<departureFrequencyModel> New(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~departureFrequencyModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the bubble departure frequency
|
||||||
|
virtual tmp<scalarField> fDeparture
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const scalarField& dDep
|
||||||
|
) const = 0;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "departureFrequencyModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::autoPtr<Foam::wallBoilingModels::departureFrequencyModel>
|
||||||
|
Foam::wallBoilingModels::departureFrequencyModel::New
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
{
|
||||||
|
word departureFrequencyModelType(dict.lookup("type"));
|
||||||
|
|
||||||
|
Info<< "Selecting departureFrequencyModel: "
|
||||||
|
<< departureFrequencyModelType << endl;
|
||||||
|
|
||||||
|
dictionaryConstructorTable::iterator cstrIter =
|
||||||
|
dictionaryConstructorTablePtr_->find(departureFrequencyModelType);
|
||||||
|
|
||||||
|
if (cstrIter == dictionaryConstructorTablePtr_->end())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Unknown departureFrequencyModelType type "
|
||||||
|
<< departureFrequencyModelType << endl << endl
|
||||||
|
<< "Valid departureFrequencyModel types are : " << endl
|
||||||
|
<< dictionaryConstructorTablePtr_->sortedToc()
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cstrIter()(dict);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,84 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2015-2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "LemmertChawla.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace nucleationSiteModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(LemmertChawla, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
nucleationSiteModel,
|
||||||
|
LemmertChawla,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModels::LemmertChawla::LemmertChawla
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
:
|
||||||
|
nucleationSiteModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModels::LemmertChawla::~LemmertChawla()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModels::LemmertChawla::N
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const fvPatchScalarField& Tsatw
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
const fvPatchScalarField& Tw =
|
||||||
|
liquid.thermo().T().boundaryField()[patchi];
|
||||||
|
|
||||||
|
return 0.8*9.922e5*pow(max((Tw - Tsatw)/10, scalar(0)), 1.805);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModels::LemmertChawla
|
||||||
|
|
||||||
|
Description
|
||||||
|
Lemmert & Chawla function for nucleation site density,
|
||||||
|
correlation by Egorov & Menter.
|
||||||
|
|
||||||
|
References:
|
||||||
|
\verbatim
|
||||||
|
Lemmert, M., & Chawla, J. M. (1977).
|
||||||
|
Influence of flow velocity on surface boiling heat transfer coefficient.
|
||||||
|
Heat Transfer in Boiling, 237, 247.
|
||||||
|
|
||||||
|
Egorov, Y., & Menter, F. (2004).
|
||||||
|
Experimental implementation of the RPI wall boiling model in CFX-5.6.
|
||||||
|
Staudenfeldweg, 12, 83624.
|
||||||
|
Technical Report ANSYS/TR-04-10, ANSYS Gmbh.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
LemmertChawla.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef LemmertChawla_H
|
||||||
|
#define LemmertChawla_H
|
||||||
|
|
||||||
|
#include "nucleationSiteModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace nucleationSiteModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class LemmertChawla Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class LemmertChawla
|
||||||
|
:
|
||||||
|
public nucleationSiteModel
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("LemmertChawla");
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
LemmertChawla(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~LemmertChawla();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the nucleation-site density
|
||||||
|
virtual tmp<scalarField> N
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const fvPatchScalarField& Tsatw
|
||||||
|
) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace nucleationSiteModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "nucleationSiteModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::autoPtr<Foam::wallBoilingModels::nucleationSiteModel>
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModel::New
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
{
|
||||||
|
word nucleationSiteModelType(dict.lookup("type"));
|
||||||
|
|
||||||
|
Info<< "Selecting nucleationSiteModel: "
|
||||||
|
<< nucleationSiteModelType << endl;
|
||||||
|
|
||||||
|
dictionaryConstructorTable::iterator cstrIter =
|
||||||
|
dictionaryConstructorTablePtr_->find(nucleationSiteModelType);
|
||||||
|
|
||||||
|
if (cstrIter == dictionaryConstructorTablePtr_->end())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Unknown nucleationSiteModelType type "
|
||||||
|
<< nucleationSiteModelType << endl << endl
|
||||||
|
<< "Valid nucleationSiteModel types are : " << endl
|
||||||
|
<< dictionaryConstructorTablePtr_->sortedToc()
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cstrIter()(dict);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "nucleationSiteModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(nucleationSiteModel, 0);
|
||||||
|
defineRunTimeSelectionTable(nucleationSiteModel, dictionary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModel::nucleationSiteModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::nucleationSiteModel::~nucleationSiteModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::nucleationSiteModel::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
os.writeKeyword("type") << this->type() << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,125 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::nucleationSiteModel
|
||||||
|
|
||||||
|
Description
|
||||||
|
Base class for nucleation site density models
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
nucleationSiteModel.C
|
||||||
|
newnucleationSiteModel.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef nucleationSiteModel_H
|
||||||
|
#define nucleationSiteModel_H
|
||||||
|
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "dictionary.H"
|
||||||
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
|
#include "phaseModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class nucleationSiteModel Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class nucleationSiteModel
|
||||||
|
{
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
nucleationSiteModel(const nucleationSiteModel&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const nucleationSiteModel&);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("nucleationSiteModel");
|
||||||
|
|
||||||
|
|
||||||
|
//- Declare runtime construction
|
||||||
|
declareRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
autoPtr,
|
||||||
|
nucleationSiteModel,
|
||||||
|
dictionary,
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
),
|
||||||
|
(dict)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct null
|
||||||
|
nucleationSiteModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Selectors
|
||||||
|
|
||||||
|
//- Select null constructed
|
||||||
|
static autoPtr<nucleationSiteModel> New(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~nucleationSiteModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the nucleation-site density
|
||||||
|
virtual tmp<scalarField> N
|
||||||
|
(
|
||||||
|
const phaseModel& liquid,
|
||||||
|
const phaseModel& vapor,
|
||||||
|
const label patchi,
|
||||||
|
const fvPatchScalarField& Tsatw
|
||||||
|
) const = 0;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,95 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "Lavieville.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(Lavieville, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
partitioningModel,
|
||||||
|
Lavieville,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
Lavieville::Lavieville(const dictionary& dict)
|
||||||
|
:
|
||||||
|
partitioningModel(),
|
||||||
|
alphaCrit_(readScalar(dict.lookup("alphaCrit")))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
Lavieville::~Lavieville()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
Lavieville::fLiquid
|
||||||
|
(
|
||||||
|
const scalarField& alphaLiquid
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
pos(alphaLiquid-alphaCrit_)
|
||||||
|
*(
|
||||||
|
1 - 0.5*exp(-20*(alphaLiquid - alphaCrit_))
|
||||||
|
)
|
||||||
|
+ neg(alphaLiquid - alphaCrit_)
|
||||||
|
*(
|
||||||
|
pow(0.5*(alphaLiquid/alphaCrit_), 20*alphaCrit_)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::partitioningModels::
|
||||||
|
Lavieville::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
partitioningModel::write(os);
|
||||||
|
os.writeKeyword("alphaCrit") << alphaCrit_ << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,109 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::Lavieville
|
||||||
|
|
||||||
|
Description
|
||||||
|
Lavieville wall heat flux partitioning model.
|
||||||
|
|
||||||
|
Model parameters:
|
||||||
|
alphaCrit: critical liquid fraction
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Lavieville, J., Quemerais, E., Mimouni, S., Boucker, M., &
|
||||||
|
Mechitoua, N. (2006).
|
||||||
|
NEPTUNE CFD V1. 0 theory manual.
|
||||||
|
NEPTUNE report Nept_2004_L1, 2(3).
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
Lavieville.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef Lavieville_H
|
||||||
|
#define Lavieville_H
|
||||||
|
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class Lavieville Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class Lavieville
|
||||||
|
:
|
||||||
|
public partitioningModel
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Critical liquid fraction
|
||||||
|
scalar alphaCrit_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("Lavieville");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
Lavieville(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~Lavieville();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Liquid blending function
|
||||||
|
virtual tmp<scalarField> fLiquid(const scalarField& alphaLiquid) const;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace partitioningModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,107 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "cosine.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(cosine, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
partitioningModel,
|
||||||
|
cosine,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
cosine::cosine(const dictionary& dict)
|
||||||
|
:
|
||||||
|
partitioningModel(),
|
||||||
|
alphaLiquid1_(readScalar(dict.lookup("alphaLiquid1"))),
|
||||||
|
alphaLiquid0_(readScalar(dict.lookup("alphaLiquid0")))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
cosine::~cosine()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
cosine::fLiquid
|
||||||
|
(
|
||||||
|
const scalarField& alphaLiquid
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return
|
||||||
|
pos(alphaLiquid1_ - alphaLiquid)
|
||||||
|
*(
|
||||||
|
neg(alphaLiquid0_ - alphaLiquid)
|
||||||
|
*(
|
||||||
|
0.5
|
||||||
|
*(
|
||||||
|
1 - cos
|
||||||
|
(
|
||||||
|
constant::mathematical::pi
|
||||||
|
*(alphaLiquid1_ - alphaLiquid)
|
||||||
|
/(alphaLiquid1_ - alphaLiquid0_)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
+ neg(alphaLiquid1_ - alphaLiquid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::partitioningModels::
|
||||||
|
cosine::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
partitioningModel::write(os);
|
||||||
|
os.writeKeyword("alphaLiquid1") << alphaLiquid1_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("alphaLiquid0") << alphaLiquid0_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,113 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::cosine
|
||||||
|
|
||||||
|
Description
|
||||||
|
Cosine wall heat flux partitioning model.
|
||||||
|
|
||||||
|
Proposed threshold liquid fractions:
|
||||||
|
- alphaLiquid1 0.1
|
||||||
|
- alphaLiquid0 0.05
|
||||||
|
|
||||||
|
\verbatim
|
||||||
|
Ioilev, A., Samigulin, M., Ustinenko, V., Kucherova, P., Tentner,
|
||||||
|
A., Lo, S., & Splawski, A. (2007).
|
||||||
|
Advances in the modeling of cladding heat transfer
|
||||||
|
and critical heat flux in boiling water reactor fuel assemblies.
|
||||||
|
In Proc. 12th International Topical Meeting on Nuclear Reactor
|
||||||
|
Thermal Hydraulics (NURETH-12),
|
||||||
|
Pittsburgh, Pennsylvania, USA.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
cosine.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef cosine_H
|
||||||
|
#define cosine_H
|
||||||
|
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class cosine Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class cosine
|
||||||
|
:
|
||||||
|
public partitioningModel
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
// Model parameters, threshold liquid phase fractions
|
||||||
|
scalar alphaLiquid1_;
|
||||||
|
scalar alphaLiquid0_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("cosine");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
cosine(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~cosine();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the wall heat-flux partioning
|
||||||
|
virtual tmp<scalarField> fLiquid(const scalarField& alphaLiquid) const;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace partitioningModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,100 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "linear.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(linear, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
partitioningModel,
|
||||||
|
linear,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
linear::linear(const dictionary& dict)
|
||||||
|
:
|
||||||
|
partitioningModel(),
|
||||||
|
alphaLiquid1_(readScalar(dict.lookup("alphaLiquid1"))),
|
||||||
|
alphaLiquid0_(readScalar(dict.lookup("alphaLiquid0")))
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
linear::~linear()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
linear::fLiquid
|
||||||
|
(
|
||||||
|
const scalarField& alphaLiquid
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return max
|
||||||
|
(
|
||||||
|
scalar(0),
|
||||||
|
min
|
||||||
|
(
|
||||||
|
scalar(1)-(alphaLiquid1_ - alphaLiquid)
|
||||||
|
/(alphaLiquid1_ - alphaLiquid0_),
|
||||||
|
scalar(1)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::partitioningModels::
|
||||||
|
linear::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
partitioningModel::write(os);
|
||||||
|
os.writeKeyword("alphaLiquid1") << alphaLiquid1_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("alphaLiquid0") << alphaLiquid0_
|
||||||
|
<< token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,114 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::linear
|
||||||
|
|
||||||
|
Description
|
||||||
|
Linear wall heat flux partitioning model.
|
||||||
|
|
||||||
|
Proposed threshold liquid fractions:
|
||||||
|
- alphaLiquid1 0.1
|
||||||
|
- alphaLiquid0 0.05
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
\verbatim
|
||||||
|
Ioilev, A., Samigulin, M., Ustinenko, V., Kucherova, P., Tentner, A.,
|
||||||
|
Lo, S., & Splawski, A. (2007).
|
||||||
|
Advances in the modeling of cladding heat transfer
|
||||||
|
and critical heat flux in boiling water reactor fuel assemblies.
|
||||||
|
In Proc. 12th International Topical Meeting on
|
||||||
|
Nuclear Reactor Thermal Hydraulics (NURETH-12),
|
||||||
|
Pittsburgh, Pennsylvania, USA.
|
||||||
|
\endverbatim
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
linear.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef linear_H
|
||||||
|
#define linear_H
|
||||||
|
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class linear Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class linear
|
||||||
|
:
|
||||||
|
public partitioningModel
|
||||||
|
{
|
||||||
|
// Private data
|
||||||
|
|
||||||
|
//- Model parameters, threshold liquid phase fractions
|
||||||
|
scalar alphaLiquid1_;
|
||||||
|
scalar alphaLiquid0_;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("linear");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
linear(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~linear();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the wall heat-flux partioning
|
||||||
|
virtual tmp<scalarField> fLiquid(const scalarField& alphaLiquid) const;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace partitioningModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,58 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Selector * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::autoPtr<Foam::wallBoilingModels::partitioningModel>
|
||||||
|
Foam::wallBoilingModels::partitioningModel::New
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
)
|
||||||
|
{
|
||||||
|
word partitioningModelType(dict.lookup("type"));
|
||||||
|
|
||||||
|
Info<< "Selecting partitioningModel: "
|
||||||
|
<< partitioningModelType << endl;
|
||||||
|
|
||||||
|
dictionaryConstructorTable::iterator cstrIter =
|
||||||
|
dictionaryConstructorTablePtr_->find(partitioningModelType);
|
||||||
|
|
||||||
|
if (cstrIter == dictionaryConstructorTablePtr_->end())
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Unknown partitioningModelType type "
|
||||||
|
<< partitioningModelType << endl << endl
|
||||||
|
<< "Valid partitioningModel types are : " << endl
|
||||||
|
<< dictionaryConstructorTablePtr_->sortedToc()
|
||||||
|
<< exit(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cstrIter()(dict);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,60 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(partitioningModel, 0);
|
||||||
|
defineRunTimeSelectionTable(partitioningModel, dictionary);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModel::partitioningModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModel::~partitioningModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
void Foam::wallBoilingModels::partitioningModel::write(Ostream& os) const
|
||||||
|
{
|
||||||
|
os.writeKeyword("type") << this->type() << token::END_STATEMENT << nl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,120 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::partitioningModel
|
||||||
|
|
||||||
|
Description
|
||||||
|
Base class for wall heat flux partitioning models
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
partitioningModel.C
|
||||||
|
newpartitioningModel.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef partitioningModel_H
|
||||||
|
#define partitioningModel_H
|
||||||
|
|
||||||
|
#include "volFields.H"
|
||||||
|
#include "dictionary.H"
|
||||||
|
#include "runTimeSelectionTables.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class partitioningModel Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class partitioningModel
|
||||||
|
{
|
||||||
|
// Private Member Functions
|
||||||
|
|
||||||
|
//- Disallow default bitwise copy construct
|
||||||
|
partitioningModel(const partitioningModel&);
|
||||||
|
|
||||||
|
//- Disallow default bitwise assignment
|
||||||
|
void operator=(const partitioningModel&);
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("partitioningModel");
|
||||||
|
|
||||||
|
|
||||||
|
//- Declare runtime construction
|
||||||
|
declareRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
autoPtr,
|
||||||
|
partitioningModel,
|
||||||
|
dictionary,
|
||||||
|
(
|
||||||
|
const dictionary& dict
|
||||||
|
),
|
||||||
|
(dict)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct null
|
||||||
|
partitioningModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Selectors
|
||||||
|
|
||||||
|
//- Select null constructed
|
||||||
|
static autoPtr<partitioningModel> New(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~partitioningModel();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the wall heat-flux partitioning
|
||||||
|
virtual tmp<scalarField> fLiquid
|
||||||
|
(
|
||||||
|
const scalarField& alphaLiquid
|
||||||
|
) const = 0;
|
||||||
|
|
||||||
|
virtual void write(Ostream& os) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#include "phaseFraction.H"
|
||||||
|
#include "addToRunTimeSelectionTable.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
defineTypeNameAndDebug(phaseFraction, 0);
|
||||||
|
addToRunTimeSelectionTable
|
||||||
|
(
|
||||||
|
partitioningModel,
|
||||||
|
phaseFraction,
|
||||||
|
dictionary
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
phaseFraction::phaseFraction(const dictionary& dict)
|
||||||
|
:
|
||||||
|
partitioningModel()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
phaseFraction::~phaseFraction()
|
||||||
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
Foam::tmp<Foam::scalarField>
|
||||||
|
Foam::wallBoilingModels::partitioningModels::
|
||||||
|
phaseFraction::fLiquid
|
||||||
|
(
|
||||||
|
const scalarField& alphaLiquid
|
||||||
|
) const
|
||||||
|
{
|
||||||
|
return tmp<scalarField>(alphaLiquid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -0,0 +1,91 @@
|
|||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
========= |
|
||||||
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
|
\\ / O peration |
|
||||||
|
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||||
|
\\/ M anipulation |
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
License
|
||||||
|
This file is part of OpenFOAM.
|
||||||
|
|
||||||
|
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||||
|
under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||||
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||||
|
for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Class
|
||||||
|
Foam::wallBoilingModels::phaseFraction
|
||||||
|
|
||||||
|
Description
|
||||||
|
Wall heat-flux partitioned according to the phase volume fraction.
|
||||||
|
|
||||||
|
SourceFiles
|
||||||
|
phaseFraction.C
|
||||||
|
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
#ifndef phaseFraction_H
|
||||||
|
#define phaseFraction_H
|
||||||
|
|
||||||
|
#include "partitioningModel.H"
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
namespace Foam
|
||||||
|
{
|
||||||
|
namespace wallBoilingModels
|
||||||
|
{
|
||||||
|
namespace partitioningModels
|
||||||
|
{
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------*\
|
||||||
|
Class phaseFraction Declaration
|
||||||
|
\*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
class phaseFraction
|
||||||
|
:
|
||||||
|
public partitioningModel
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
//- Runtime type information
|
||||||
|
TypeName("phaseFraction");
|
||||||
|
|
||||||
|
|
||||||
|
// Constructors
|
||||||
|
|
||||||
|
//- Construct from a dictionary
|
||||||
|
phaseFraction(const dictionary& dict);
|
||||||
|
|
||||||
|
|
||||||
|
//- Destructor
|
||||||
|
virtual ~phaseFraction();
|
||||||
|
|
||||||
|
|
||||||
|
// Member Functions
|
||||||
|
|
||||||
|
//- Calculate and return the wall heat-flux partioning
|
||||||
|
virtual tmp<scalarField> fLiquid(const scalarField& alphaLiquid) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace partitioningModels
|
||||||
|
} // End namespace wallBoilingModels
|
||||||
|
} // End namespace Foam
|
||||||
|
|
||||||
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ************************************************************************* //
|
||||||
@ -1979,11 +1979,17 @@ boundaryField
|
|||||||
}
|
}
|
||||||
wall2
|
wall2
|
||||||
{
|
{
|
||||||
type compressible::alphatPhaseChangeJayatillekeWallFunction;
|
type compressible::alphatWallBoilingWallFunction;
|
||||||
|
phaseType vapor;
|
||||||
Prt 0.85;
|
Prt 0.85;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
partitioningModel
|
||||||
|
{
|
||||||
|
type Lavieville;
|
||||||
|
alphaCrit 0.2;
|
||||||
|
}
|
||||||
value uniform 0;
|
value uniform 0;
|
||||||
}
|
}
|
||||||
defaultFaces
|
defaultFaces
|
||||||
|
|||||||
@ -2060,12 +2060,30 @@ boundaryField
|
|||||||
wall2
|
wall2
|
||||||
{
|
{
|
||||||
type compressible::alphatWallBoilingWallFunction;
|
type compressible::alphatWallBoilingWallFunction;
|
||||||
|
phaseType liquid;
|
||||||
Prt 0.85;
|
Prt 0.85;
|
||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
relax 0.001;
|
relax 0.001;
|
||||||
dmdt uniform 0;
|
dmdt uniform 0;
|
||||||
|
partitioningModel
|
||||||
|
{
|
||||||
|
type Lavieville;
|
||||||
|
alphaCrit 0.2;
|
||||||
|
}
|
||||||
|
nucleationSiteModel
|
||||||
|
{
|
||||||
|
type LemmertChawla;
|
||||||
|
}
|
||||||
|
departureDiamModel
|
||||||
|
{
|
||||||
|
type TolubinskiKostanchuk;
|
||||||
|
}
|
||||||
|
departureFreqModel
|
||||||
|
{
|
||||||
|
type Cole;
|
||||||
|
}
|
||||||
value uniform 0.01;
|
value uniform 0.01;
|
||||||
}
|
}
|
||||||
defaultFaces
|
defaultFaces
|
||||||
|
|||||||
Reference in New Issue
Block a user