Extension of the StandardWater package
Example: TwoPhaseWater
The TwoPhaseWater package demonstrates how to extend the
parsimonious BaseProperties with a minimal set of properties from
the standard water package with most properties that are needed in
two-phase situations. The model also demonstrates how to compute
additional properties for the medium model. In this scenario,
that builds a new medium model with many more properties than the
default, the standard BaseProperties is used as a basis. For
additional properties, a user has to:
- Declare a new variable of the wanted type, e.g.,
DynamicViscosity eta.
- Compute that variable by calling the function from the package,
e.g.,
eta = dynamicViscosity(state). Note that
the instance of ThermodynamicState is used as an input to the
function. This instance "state" is declared in PartialMedium and
thus available in every medium model. A user does not have to know
what actual variables are required to compute the dynamic
viscosity, because the state instance is guaranteed to contain what
is needed.
- Note: Many properties are not well defined in
the two phase region and the functions might return undesired
values if called there. It is the user's responsibility to
take care of such situations. The example uses one of several
possible models to compute an averaged viscosity for two-phase
flows.
In two phase models, properties are often needed on the phase
boundary just outside the two phase dome, right on the border.. To
compute the thermodynamic state there, two auxiliary functions are
provided: setDewState(sat) and
setBubbleState(sat). They take an instance of
SaturationProperties as input. By default they are in one-phase,
but with the optional phase argument set to 2, the output is forced
to be just inside the phase boundary. This is only needed when
derivatives like cv are computed with are different on both sides
of the boundaries. The usual steps to compute properties on the
phase boundary are:
- Declare an instance of ThermodynamicState, e.g.,
"ThermodynamicState dew".
- Compute the state, using an instance of SaturationProperties,
e.g., dew = setDewState(sat)
- Compute properties on the phase boundary to your full desire,
e.g., "cp_d = specificHeatCapacityCp(dew)".
The sample model TestTwoPhaseStates test the extended
properties
The same procedure can be used to compute properties at other
state points, e.g., when an isentropic reference state is
computed.
Contents
Generated at 2026-04-07T18:18:28Z by OpenModelicaOpenModelica 1.26.3 using
GenerateDoc.mos