All of the film transport equations are now formulated with respect to the film
volume fraction in the region cell layer rather than the film thickness which
ensures mass conservation of the film even as it flows over curved surfaces and
around corners. (In the previous formulation the conservation error could be as
large as 15% for a film flowing around a corner.)
The film Courant number is now formulated in terms of the film cell volumetric
flux which avoids the stabilised division by the film thickness and provides a
more reliable estimate for time-step evaluation. As a consequence the film
solution is substantially more robust even though the time-step is now
significantly higher. For film flow dominated problem the simulations now runs
10-30x faster.
The inconsistent extended PISO controls have been replaced by the standard
PIMPLE control system used in all other flow solvers, providing consistent
input, a flexible structure and easier maintenance.
The momentum corrector has been re-formulated to be consistent with the momentum
predictor so the optional PIMPLE outer-corrector loop converges which it did not
previously.
nonuniformTransformCyclic patches and corresponding fields are no longer needed
and have been removed which paves the way for a future rationalisation of the
handling of cyclic transformations in OpenFOAM to improve robustness, usability
and maintainability.
Film sources have been simplified to avoid the need for fictitious boundary
conditions, in particular mappedFixedPushedInternalValueFvPatchField which has
been removed.
Film variables previously appended with an "f" for "film" rather than "face"
have been renamed without the unnecessary and confusing "f" as they are
localised to the film region and hence already directly associated with it.
All film tutorials have been updated to test and demonstrate the developments
and improvements listed above.
Henry G. Weller
CFD Direct Ltd.
Corrected call to model2In1 in one of the evaluate methods
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
When operating on multi-region cases, function files are now searched
for in the following order:
- First the $FOAM_CASE/system/<region> directory is searched
- Second the $FOAM_CASE/system directory is searched
- Finally a search is done through the preconfigured functions in
$WM_PROJECT_DIR/etc
Previously, in a multi-region case, preconfigured objects were
considered before those in the case's (non-region) system directory.
This was considered counter-intuitive. Functions residing in the system
directory should always take precedence, whether they are in the region
subdirectory or not.
This reduces code duplication within heheuPsiThermo. This also resolves
a Clang floating point error issue associated with loop vectorisation.
See commit 9675107f for the corresponding fix to heThermo.
This change formalises the usage of the "log" keyword in function
objects. By default, logging to stdout is activated when running
"postProcess" or "<solver> -postProcess", and deactivated when a
function is being executed as part of a run.
This behaviour can now be overridden in the function object dictionary
when operating in either mode.
The initialisation of energy in heThermo has been rewritten to use the
"he" method.
This has had the effect of resolving a floating point error in the
initialisation by disabling Clang's vectorisation of the loop in which
cell values of energy are calculated from the temperature field.
Usage
\constant
Property | Description
value | Constant property value
\endconstant
Example for the density of water between 280 and 350K
\verbatim
rho
{
type constant;
value 999.87;
}
\endverbatim
Description
Tabulated property function the linearly interpolates between
the table values.
Usage
\table
Property | Description
Tlow | Lower temperature limit of the table
Thigh | Upper temperature limit of the table
values | Property values, assumed uniformly distributed
\endtable
Example for the density of water between 280 and 350K
\verbatim
rho
{
type table;
Tlow 280;
Thigh 350;
values
(
999.87
991.53
973.7
);
}
\endverbatim
If the optional "type" entry is provided for the liquid specie that type is
looked-up rather than the entry name, e.g.
mixture
{
H2O
{
type liquid;
W 18.015;
Tc 647.13;
Pc 2.2055e+7;
Vc 0.05595;
Zc 0.229;
Tt 273.16;
Pt 6.113e+2;
Tb 373.15;
dipm 6.1709e-30;
omega 0.3449;
delta 4.7813e+4;
rho
{
type NSRDSfunc5;
a 98.343885;
b 0.30542;
c 647.13;
d 0.081;
}
.
.
.
}
ethanol
{
type liquid;
W 46.07;
.
.
.
}
}
Description
Generic thermophysical properties class for a liquid in which the
functions and coefficients for each property are run-time selected.
Property functions need only be specified for properties that are actually used
in the simulation, e.g. in the thermophysicalProperties.water dictionary of the
tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D case the water
properties can be specified directly as
mixture
{
liquid
{
W 18.015;
Tc 647.13;
Pc 2.2055e+7;
Vc 0.05595;
Zc 0.229;
Tt 273.16;
Pt 6.113e+2;
Tb 373.15;
dipm 6.1709e-30;
omega 0.3449;
delta 4.7813e+4;
rho
{
type NSRDSfunc5;
a 98.343885;
b 0.30542;
c 647.13;
d 0.081;
}
Cp
{
type NSRDSfunc0;
a 15341.1046350264;
b -116.019983347211;
c 0.451013044684985;
d -0.000783569247849015;
e 5.20127671384957e-07;
f 0;
}
h
{
type NSRDSfunc0;
a -17957283.7993676;
b 15341.1046350264;
c -58.0099916736053;
d 0.150337681561662;
e -0.000195892311962254;
f 1.04025534276991e-07;
}
mu
{
type NSRDSfunc1;
a -51.964;
b 3670.6;
c 5.7331;
d -5.3495e-29;
e 10;
}
kappa
{
type NSRDSfunc0;
a -0.4267;
b 0.0056903;
c -8.0065e-06;
d 1.815e-09;
e 0;
f 0;
}
sigma
{
type NSRDSfunc6;
Tc 647.13;
a 0.18548;
b 2.717;
c -3.554;
d 2.047;
e 0;
}
}
}
This fix ensures that the function still operates even if models only
exist on some interfaces.
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)