compressible::alphatWallBoilingWallFunction: Improved solution procedure

This boundary condition now solves for the wall temperature by interval
bisection, which should be significantly more robust than the previous
fixed-point iteration procedure. There is a new non-dimensional
"tolerance" setting that controls how tightly this solution procedure
solves the wall temperature. The "relax" setting is no longer used.

The boundary condition no longer triggers re-evaluation of the
temperature condition in order to re-calculate the heat flux within the
solution iteration. Instead, it extracts physical coefficients from the
form of the boundary condition and uses these to form a linearised
approximation of the heat flux. This is a more general approach, and
will not trigger side-effects associated with re-evaluating the
temperature condition.

The fixedMultiphaseHeatFlux condition has been replaced by a
uniformFixedMultiphaseHeatFlux condition, which constructs a mixed
constraint which portions a specified heat flux between the phases in
such a way as to keep the boundary temperature uniform across all
phases. This can be applied to all phases. It is no longer necessary to
apply a heat flux model to one "master" phase, then map the resulting
temperature to the others. An example specification of this boundary
condition is as follows:

    wall
    {
        type            uniformFixedMultiphaseHeatFlux;
        q               1000;
        relax           0.3;
        value           $internalField;
    }

The wall boiling tutorials have been updated to use these new functions,
and time-varying heat input has been used to replace the
stop-modify-restart pattern present in the single-region cases.
This commit is contained in:
Will Bainbridge
2023-01-18 12:27:10 +00:00
parent 42c35a23a8
commit 377080de52
34 changed files with 1050 additions and 781 deletions

View File

@ -35,13 +35,10 @@ boundaryField
otherPhase liquid;
phaseType vapor;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
partitioningModel
{
type Lavieville;
alphaCrit 0.2;
type Lavieville;
alphaCrit 0.2;
}
value uniform 0;
}

View File

@ -32,31 +32,27 @@ boundaryField
wall
{
type compressible::alphatWallBoilingWallFunction;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
relax 1.0;
otherPhase gas;
phaseType liquid;
Prt 0.85;
partitioningModel
{
type Lavieville;
alphaCrit 0.2;
type Lavieville;
alphaCrit 0.2;
}
nucleationSiteModel
{
type LemmertChawla;
Cn 1;
NRef 30000000;
deltaTRef 10;
type LemmertChawla;
Cn 1;
NRef 30000000;
deltaTRef 10;
}
departureDiamModel
{
type TolubinskiKostanchuk;
dRef 0.00024;
dMax 0.0014;
dMin 1e-06;
type TolubinskiKostanchuk;
dRef 0.00024;
dMax 0.0014;
dMin 1e-06;
}
departureFreqModel
{

View File

@ -7,7 +7,7 @@ cd ${0%/*} || exit 1 # run from this directory
runApplication blockMesh
runApplication extrudeMesh
runApplication splitMeshRegions -cellZones -overwrite
runApplication foamDictionary constant/fluid/polyMesh/boundary -entry entry0/inlet/neighbourRegion -set "fluid"
paraFoam -region fluid -touch
paraFoam -region solid -touch
@ -16,6 +16,7 @@ runApplication decomposePar -allRegions
runParallel $(getApplication)
runApplication reconstructPar -latestTime -allRegions
runApplication foamPostProcess -latestTime -region fluid -func "
graphCell
(
@ -24,9 +25,6 @@ runApplication foamPostProcess -latestTime -region fluid -func "
end=(3.4901 0.0096 0),
fields=(alpha.gas T.liquid T.gas)
)"
./validation/createGraphs
runApplication -append foamPostProcess -region fluid -latestTime -func "
patchSurface
(
@ -37,6 +35,10 @@ runApplication -append foamPostProcess -region fluid -latestTime -func "
fields=(dDeparture.liquid fDeparture.liquid nucleationSiteDensity.liquid wetFraction.liquid qQuenching.liquid qEvaporative.liquid)
)"
./validation/createWallBoilingPropertiesGraphs
if ! isTest "$@"
then
./validation/createGraphs
./validation/createWallBoilingPropertiesGraphs
fi
#------------------------------------------------------------------------------