mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: Update of alphaBoiling BC, Bromley and tutorial
This commit is contained in:
committed by
Andrew Heather
parent
9449d92fb9
commit
9f11d892f5
@ -378,8 +378,11 @@ updateCoeffs()
|
|||||||
// TvNbr: vapour Tp
|
// TvNbr: vapour Tp
|
||||||
scalarField c(TcNbr*KDeltaLiqNbr + TvNbr*KDeltaVapNbr);
|
scalarField c(TcNbr*KDeltaLiqNbr + TvNbr*KDeltaVapNbr);
|
||||||
|
|
||||||
valueFraction() = KDeltaNbr/(KDeltaNbr + KDelta);
|
//valueFraction() = KDeltaNbr/(KDeltaNbr + KDelta);
|
||||||
refValue() = c/KDeltaNbr;
|
//refValue() = c/KDeltaNbr;
|
||||||
|
scalarField KDeltaLiqVapNbr(KDeltaLiqNbr + KDeltaVapNbr);
|
||||||
|
valueFraction() = KDeltaLiqVapNbr/(KDeltaLiqVapNbr + KDelta);
|
||||||
|
refValue() = c/KDeltaLiqVapNbr;
|
||||||
refGrad() = (qr + qrNbr)/kappa(Tp);
|
refGrad() = (qr + qrNbr)/kappa(Tp);
|
||||||
|
|
||||||
if (debug)
|
if (debug)
|
||||||
@ -393,7 +396,7 @@ updateCoeffs()
|
|||||||
<< " walltemperature "
|
<< " walltemperature "
|
||||||
<< " min:" << gMin(Tp)
|
<< " min:" << gMin(Tp)
|
||||||
<< " max:" << gMax(Tp)
|
<< " max:" << gMax(Tp)
|
||||||
<< " avg:" << gAverage(Tp)
|
<< " avg:" << gAverage(Tp) << nl
|
||||||
<< endl;
|
<< endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,178 @@ const uniformDimensionedVectorField& g = meshObjects::gravity::New(runTime);
|
|||||||
|
|
||||||
PtrList<pimpleControl> pimpleFluid(fluidRegions.size());
|
PtrList<pimpleControl> pimpleFluid(fluidRegions.size());
|
||||||
|
|
||||||
// Populate fluid field pointer lists
|
|
||||||
|
//Debug Fields
|
||||||
|
/*
|
||||||
|
PtrList<volScalarField> faceRegimesFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> qcFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> qFilmFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> htcFilmBoilingFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> qtbFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> qSubCoolFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> CHFtotalFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> TdnbFluid(fluidRegions.size());
|
||||||
|
PtrList<volScalarField> phiFluid(fluidRegions.size());
|
||||||
|
|
||||||
|
forAll(fluidRegions, i)
|
||||||
|
{
|
||||||
|
faceRegimesFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"faceRegimes",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
|
||||||
|
)
|
||||||
|
);
|
||||||
|
qcFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"qc",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
qFilmFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"qFilm",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
htcFilmBoilingFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"htcFilmBoiling",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
qtbFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"qtb",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
qSubCoolFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"qSubCool",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
CHFtotalFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"CHFtotal",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
TdnbFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"Tdnb",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
phiFluid.set
|
||||||
|
(
|
||||||
|
i,
|
||||||
|
new volScalarField
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"phiTb",
|
||||||
|
runTime.timeName(),
|
||||||
|
fluidRegions[i],
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE
|
||||||
|
),
|
||||||
|
fluidRegions[i],
|
||||||
|
dimensionedScalar(dimless, Zero)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
forAll(fluidRegions, i)
|
forAll(fluidRegions, i)
|
||||||
{
|
{
|
||||||
Info<< "*** Reading fluid mesh thermophysical properties for region "
|
Info<< "*** Reading fluid mesh thermophysical properties for region "
|
||||||
|
|||||||
@ -56,3 +56,16 @@
|
|||||||
pimpleControl& pimple = pimpleFluid[i];
|
pimpleControl& pimple = pimpleFluid[i];
|
||||||
|
|
||||||
const dimensionedScalar& pMin = pMinFluid[i];
|
const dimensionedScalar& pMin = pMinFluid[i];
|
||||||
|
|
||||||
|
// Debug fields
|
||||||
|
/*
|
||||||
|
volScalarField& faceRegimes = faceRegimesFluid[i];
|
||||||
|
volScalarField& qc = qcFluid[i];
|
||||||
|
volScalarField& qFilm = qFilmFluid[i];
|
||||||
|
volScalarField& htcFilmBoiling = htcFilmBoilingFluid[i];
|
||||||
|
volScalarField& qtb = qtbFluid[i];
|
||||||
|
volScalarField& qSubCool = qSubCoolFluid[i];
|
||||||
|
volScalarField& CHFtotal = CHFtotalFluid[i];
|
||||||
|
volScalarField& Tdnb = TdnbFluid[i];
|
||||||
|
volScalarField& phiTb = phiFluid[i];
|
||||||
|
*/
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -224,6 +224,8 @@ SourceFiles
|
|||||||
#ifndef compressible_alphatWallBoilingWallFunctionFvPatchScalarField_H
|
#ifndef compressible_alphatWallBoilingWallFunctionFvPatchScalarField_H
|
||||||
#define compressible_alphatWallBoilingWallFunctionFvPatchScalarField_H
|
#define compressible_alphatWallBoilingWallFunctionFvPatchScalarField_H
|
||||||
|
|
||||||
|
#include "Function1.H"
|
||||||
|
|
||||||
#include "alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.H"
|
#include "alphatPhaseChangeJayatillekeWallFunctionFvPatchScalarField.H"
|
||||||
#include "partitioningModel.H"
|
#include "partitioningModel.H"
|
||||||
#include "nucleationSiteModel.H"
|
#include "nucleationSiteModel.H"
|
||||||
@ -287,7 +289,7 @@ private:
|
|||||||
phaseType phaseType_;
|
phaseType phaseType_;
|
||||||
|
|
||||||
//- dmdt relaxationFactor
|
//- dmdt relaxationFactor
|
||||||
scalar relax_;
|
autoPtr<Function1<scalar>> relax_;
|
||||||
|
|
||||||
//- Patch face area by cell volume
|
//- Patch face area by cell volume
|
||||||
scalarField AbyV_;
|
scalarField AbyV_;
|
||||||
|
|||||||
@ -58,7 +58,7 @@ Foam::wallBoilingModels::TDNBModels::Schroeder::Schroeder
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
TDNBModel(),
|
TDNBModel(),
|
||||||
kg_(dict.lookupOrDefault<scalar>("kg", 5/3))
|
kg_(dict.lookupOrDefault<scalar>("kg", 1.666))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,9 @@ License
|
|||||||
#include "Bromley.H"
|
#include "Bromley.H"
|
||||||
#include "addToRunTimeSelectionTable.H"
|
#include "addToRunTimeSelectionTable.H"
|
||||||
#include "uniformDimensionedFields.H"
|
#include "uniformDimensionedFields.H"
|
||||||
|
#include "constants.H"
|
||||||
|
|
||||||
|
using namespace Foam::constant;
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||||
|
|
||||||
@ -55,7 +58,9 @@ Foam::wallBoilingModels::filmBoilingModels::Bromley::Bromley
|
|||||||
)
|
)
|
||||||
:
|
:
|
||||||
filmBoilingModel(),
|
filmBoilingModel(),
|
||||||
Cn_(dict.lookupOrDefault<scalar>("Cn", 0.62))
|
Cn_(dict.lookupOrDefault<scalar>("Cn", 0.62)),
|
||||||
|
emissivity_(dict.lookupOrDefault<scalar>("emissivity", 1)),
|
||||||
|
L_(dict.get<scalar>("L"))
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -84,7 +89,11 @@ Foam::wallBoilingModels::filmBoilingModels::Bromley::htcFilmBoil
|
|||||||
const uniformDimensionedVectorField& g =
|
const uniformDimensionedVectorField& g =
|
||||||
liquid.mesh().time().lookupObject<uniformDimensionedVectorField>("g");
|
liquid.mesh().time().lookupObject<uniformDimensionedVectorField>("g");
|
||||||
|
|
||||||
const scalarField rhoVapor(vapor.thermo().rho(patchi));
|
const fvPatchScalarField& rhoVaporw
|
||||||
|
(
|
||||||
|
vapor.thermo().rho()().boundaryField()[patchi]
|
||||||
|
);
|
||||||
|
|
||||||
const scalarField rhoLiq(liquid.thermo().rho(patchi));
|
const scalarField rhoLiq(liquid.thermo().rho(patchi));
|
||||||
const scalarField kappaVapor(vapor.kappa(patchi));
|
const scalarField kappaVapor(vapor.kappa(patchi));
|
||||||
|
|
||||||
@ -93,17 +102,23 @@ Foam::wallBoilingModels::filmBoilingModels::Bromley::htcFilmBoil
|
|||||||
const scalarField& CpVapor = Cp.boundaryField()[patchi];
|
const scalarField& CpVapor = Cp.boundaryField()[patchi];
|
||||||
|
|
||||||
const scalarField muVapor(vapor.mu(patchi));
|
const scalarField muVapor(vapor.mu(patchi));
|
||||||
const scalarField dbVapor(vapor.d()().boundaryField()[patchi]);
|
//const scalarField dbVapor(vapor.d()().boundaryField()[patchi]);
|
||||||
|
|
||||||
|
const scalarField htcRad
|
||||||
|
(
|
||||||
|
emissivity_*physicoChemical::sigma.value()*(pow4(Tw) - pow4(Tsatw))
|
||||||
|
/ max((Tw - Tsatw), scalar(1e-4))
|
||||||
|
);
|
||||||
|
|
||||||
return
|
return
|
||||||
Cn_*pow
|
Cn_*pow
|
||||||
(
|
(
|
||||||
pow3(kappaVapor)
|
pow3(kappaVapor)
|
||||||
*rhoVapor*(rhoLiq - rhoVapor)*mag(g.value())
|
*rhoVaporw*(rhoLiq - rhoVaporw)*mag(g.value())
|
||||||
*(L + 0.4*CpVapor*max((Tw-Tsatw), scalar(0)))
|
*(L + 0.4*CpVapor*max((Tw-Tsatw), scalar(0)))
|
||||||
/(dbVapor*muVapor*max((Tw-Tsatw), scalar(1e-4))),
|
/(L_*muVapor*max((Tw-Tsatw), scalar(1e-4))),
|
||||||
0.25
|
0.25
|
||||||
);
|
) + 0.75*htcRad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -114,6 +129,7 @@ void Foam::wallBoilingModels::filmBoilingModels::Bromley::write
|
|||||||
{
|
{
|
||||||
filmBoilingModel::write(os);
|
filmBoilingModel::write(os);
|
||||||
os.writeKeyword("Cn") << Cn_ << token::END_STATEMENT << nl;
|
os.writeKeyword("Cn") << Cn_ << token::END_STATEMENT << nl;
|
||||||
|
os.writeKeyword("emissivity") << emissivity_ << token::END_STATEMENT << nl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -66,6 +66,12 @@ class Bromley
|
|||||||
//- Coefficient for nucleation site density
|
//- Coefficient for nucleation site density
|
||||||
scalar Cn_;
|
scalar Cn_;
|
||||||
|
|
||||||
|
//- Wall emissivity
|
||||||
|
scalar emissivity_;
|
||||||
|
|
||||||
|
//- Characteristic lenght-scale
|
||||||
|
scalar L_;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
//- Runtime type information
|
//- Runtime type information
|
||||||
|
|||||||
@ -43,23 +43,13 @@ boundaryField
|
|||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
relax constant 1;
|
||||||
partitioningModel
|
partitioningModel
|
||||||
{
|
{
|
||||||
type Lavieville;
|
type Lavieville;
|
||||||
alphaCrit 0.2;
|
alphaCrit 0.2;
|
||||||
}
|
}
|
||||||
|
value uniform 1e-8;
|
||||||
LeidenfrostModel
|
|
||||||
{
|
|
||||||
type Spiegler;
|
|
||||||
Tcrit 647;
|
|
||||||
}
|
|
||||||
|
|
||||||
filmBoilingModel
|
|
||||||
{
|
|
||||||
type Bromley;
|
|
||||||
}
|
|
||||||
value uniform 0;
|
|
||||||
}
|
}
|
||||||
maxY
|
maxY
|
||||||
{
|
{
|
||||||
|
|||||||
@ -43,6 +43,7 @@ boundaryField
|
|||||||
Cmu 0.09;
|
Cmu 0.09;
|
||||||
kappa 0.41;
|
kappa 0.41;
|
||||||
E 9.8;
|
E 9.8;
|
||||||
|
relax constant 1;
|
||||||
dmdt uniform 0;
|
dmdt uniform 0;
|
||||||
partitioningModel
|
partitioningModel
|
||||||
{
|
{
|
||||||
@ -88,6 +89,7 @@ boundaryField
|
|||||||
filmBoilingModel
|
filmBoilingModel
|
||||||
{
|
{
|
||||||
type Bromley;
|
type Bromley;
|
||||||
|
L 1e-3;
|
||||||
}
|
}
|
||||||
value uniform 1e-8;
|
value uniform 1e-8;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user