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

@ -34,9 +34,19 @@ boundaryField
}
wall
{
type mappedValue;
neighbourPatch wall;
field T.liquid;
type uniformFixedMultiphaseHeatFlux;
q
{
type scale;
value 73890;
scale
{
type linearRamp;
start 0.5;
duration 0.01;
}
}
relax 0.3;
value $internalField;
}
front

View File

@ -10,7 +10,7 @@ FoamFile
format ascii;
class volScalarField;
location "5";
object T.gas2;
object T.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -34,9 +34,19 @@ boundaryField
}
wall
{
type mappedValue;
neighbourPatch wall;
field T.liquid;
type uniformFixedMultiphaseHeatFlux;
q
{
type scale;
value 73890;
scale
{
type linearRamp;
start 0.5;
duration 0.01;
}
}
relax 0.3;
value $internalField;
}
front

View File

@ -34,10 +34,19 @@ boundaryField
}
wall
{
type fixedMultiphaseHeatFlux;
relax 0.6;
q uniform 0;
phase "liquid";
type uniformFixedMultiphaseHeatFlux;
q
{
type scale;
value 73890;
scale
{
type linearRamp;
start 0.5;
duration 0.01;
}
}
relax 0.3;
value $internalField;
}
front

View File

@ -36,13 +36,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

@ -36,13 +36,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

@ -33,31 +33,27 @@ boundaryField
wall
{
type compressible::alphatWallBoilingWallFunction;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
relax 0.6;
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

@ -11,16 +11,8 @@ runApplication decomposePar
runParallel $(getApplication)
if ! isTest "$@"
then
runApplication -a foamDictionary system/controlDict -entry endTime -set 4
runApplication -a foamDictionary system/controlDict -entry startTime -set 0.5
runParallel -a foamDictionary 0.5/T.liquid -entry boundaryField/wall/q -set "uniform 73890"
runParallel -a foamDictionary 0.5/U.liquid -entry boundaryField/inlet/type -set "fixedValue"
runParallel -a $(getApplication)
fi
runApplication reconstructPar -latestTime
runApplication foamPostProcess -latestTime -func "
graphCell
(
@ -29,9 +21,6 @@ runApplication foamPostProcess -latestTime -func "
end=(3.4901 0.0096 0),
fields=(alpha.gas alpha.gas2 alpha.liquid T.liquid T.gas d.bubbles)
)"
./validation/createGraphs
runApplication -append foamPostProcess -latestTime -func "
patchSurface
(
@ -42,6 +31,10 @@ runApplication -append foamPostProcess -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
#------------------------------------------------------------------------------