replaceable record FluidConstants "critical, triple, molecular and other standard data of fluid" extends Modelica.Icons.Record; String iupacName "complete IUPAC name (or common name, if non-existent)"; String casRegistryNumber "chemical abstracts sequencing number (if it exists)"; String chemicalFormula "Chemical formula, (brutto, nomenclature according to Hill"; String structureFormula "Chemical structure formula"; MolarMass molarMass "molar mass"; end FluidConstants;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
PrandtlNumber | Pr | Prandtl number [1] |
replaceable function prandtlNumber "Return the Prandtl number" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output PrandtlNumber Pr "Prandtl number"; algorithm Pr := dynamicViscosity(state)*specificHeatCapacityCp(state)/thermalConductivity( state); end prandtlNumber;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
SpecificEntropy | s | Specific entropy [J/(kg.K)] |
replaceable partial function specificEntropy "Return specific entropy" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output SpecificEntropy s "Specific entropy"; end specificEntropy;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
SpecificEnergy | g | Specific Gibbs energy [J/kg] |
replaceable partial function specificGibbsEnergy "Return specific Gibbs energy" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output SpecificEnergy g "Specific Gibbs energy"; end specificGibbsEnergy;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
SpecificEnergy | f | Specific Helmholtz energy [J/kg] |
replaceable partial function specificHelmholtzEnergy "Return specific Helmholtz energy" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output SpecificEnergy f "Specific Helmholtz energy"; end specificHelmholtzEnergy;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
SpecificHeatCapacity | cp | Specific heat capacity at constant pressure [J/(kg.K)] |
function heatCapacity_cp = specificHeatCapacityCp "alias for deprecated name";
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
SpecificHeatCapacity | cv | Specific heat capacity at constant volume [J/(kg.K)] |
function heatCapacity_cv = specificHeatCapacityCv "alias for deprecated name";
This function computes an isentropic state transformation:
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p_downstream | downstream pressure [Pa] | |
ThermodynamicState | refState | reference state for entropy |
Type | Name | Description |
---|---|---|
SpecificEnthalpy | h_is | Isentropic enthalpy [J/kg] |
replaceable partial function isentropicEnthalpy "Return isentropic enthalpy" extends Modelica.Icons.Function; input AbsolutePressure p_downstream "downstream pressure"; input ThermodynamicState refState "reference state for entropy"; output SpecificEnthalpy h_is "Isentropic enthalpy";end isentropicEnthalpy;
beta is defined as 1/v * der(v,T), with v = 1/d, at constant pressure p.Extends from Modelica.Icons.Function (Icon for functions).
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
IsobaricExpansionCoefficient | beta | Isobaric expansion coefficient [1/K] |
replaceable partial function isobaricExpansionCoefficient "Return overall the isobaric expansion coefficient beta" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output IsobaricExpansionCoefficient beta "Isobaric expansion coefficient";end isobaricExpansionCoefficient;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
IsobaricExpansionCoefficient | beta | Isobaric expansion coefficient [1/K] |
function beta = isobaricExpansionCoefficient "alias for isobaricExpansionCoefficient for user convenience";
kappa is defined as - 1/v * der(v,p), with v = 1/d at constant temperature T.Extends from Modelica.Icons.Function (Icon for functions).
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
IsothermalCompressibility | kappa | Isothermal compressibility [1/Pa] |
replaceable partial function isothermalCompressibility "Return overall the isothermal compressibility factor" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output SI.IsothermalCompressibility kappa "Isothermal compressibility";end isothermalCompressibility;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
IsothermalCompressibility | kappa | Isothermal compressibility [1/Pa] |
function kappa = isothermalCompressibility "alias of isothermalCompressibility for user convenience";
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
DerDensityByPressure | ddph | Density derivative w.r.t. pressure [s2/m2] |
replaceable partial function density_derp_h "Return density derivative w.r.t. pressure at const specific enthalpy" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output DerDensityByPressure ddph "Density derivative w.r.t. pressure"; end density_derp_h;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
DerDensityByEnthalpy | ddhp | Density derivative w.r.t. specific enthalpy [kg.s2/m5] |
replaceable partial function density_derh_p "Return density derivative w.r.t. specific enthalpy at constant pressure" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output DerDensityByEnthalpy ddhp "Density derivative w.r.t. specific enthalpy"; end density_derh_p;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
DerDensityByPressure | ddpT | Density derivative w.r.t. pressure [s2/m2] |
replaceable partial function density_derp_T "Return density derivative w.r.t. pressure at const temperature" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output DerDensityByPressure ddpT "Density derivative w.r.t. pressure"; end density_derp_T;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
DerDensityByTemperature | ddTp | Density derivative w.r.t. temperature [kg/(m3.K)] |
replaceable partial function density_derT_p "Return density derivative w.r.t. temperature at constant pressure" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output DerDensityByTemperature ddTp "Density derivative w.r.t. temperature"; end density_derT_p;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
Density | dddX[nX] | Derivative of density w.r.t. mass fraction [kg/m3] |
replaceable partial function density_derX "Return density derivative w.r.t. mass fraction" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output Density[nX] dddX "Derivative of density w.r.t. mass fraction"; end density_derX;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
MolarMass | MM | Mixture molar mass [kg/mol] |
replaceable partial function molarMass "Return the molar mass of the medium" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output MolarMass MM "Mixture molar mass"; end molarMass;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
Temperature | T | Temperature [K] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
SpecificEntropy | s | Specific entropy [J/(kg.K)] |
replaceable function specificEntropy_pTX "Return specific enthalpy from p, T, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input Temperature T "Temperature"; input MassFraction X[:]=reference_X "Mass fractions"; output SpecificEntropy s "Specific entropy"; algorithm s := specificEntropy(setState_pTX(p,T,X));end specificEntropy_pTX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
Temperature | T | Temperature [K] | |
MassFraction | X[:] | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
Density | d | Density [kg/m3] |
replaceable function density_pTX "Return density from p, T, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input Temperature T "Temperature"; input MassFraction X[:] "Mass fractions"; output Density d "Density"; algorithm d := density(setState_pTX(p,T,X)); end density_pTX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
SpecificEntropy | s | Specific entropy [J/(kg.K)] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
Temperature | T | Temperature [K] |
replaceable function temperature_psX "Return temperature from p,s, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEntropy s "Specific entropy"; input MassFraction X[:]=reference_X "Mass fractions"; output Temperature T "Temperature"; algorithm T := temperature(setState_psX(p,s,X));end temperature_psX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
SpecificEntropy | s | Specific entropy [J/(kg.K)] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
Density | d | Density [kg/m3] |
replaceable function density_psX "Return density from p, s, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEntropy s "Specific entropy"; input MassFraction X[:]=reference_X "Mass fractions"; output Density d "Density"; algorithm d := density(setState_psX(p,s,X)); end density_psX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
SpecificEntropy | s | Specific entropy [J/(kg.K)] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
SpecificEnthalpy | h | Specific enthalpy [J/kg] |
replaceable function specificEnthalpy_psX "Return specific enthalpy from p, s, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEntropy s "Specific entropy"; input MassFraction X[:]=reference_X "Mass fractions"; output SpecificEnthalpy h "Specific enthalpy"; algorithm h := specificEnthalpy(setState_psX(p,s,X)); end specificEnthalpy_psX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
SpecificEntropy | s | Specific entropy [J/(kg.K)] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
ThermodynamicState | state | thermodynamic state record |
replaceable partial function setState_psX "Return thermodynamic state as function of p, s and composition X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEntropy s "Specific entropy"; input MassFraction X[:]=reference_X "Mass fractions"; output ThermodynamicState state "thermodynamic state record"; end setState_psX;
This function is used to approximate the equation
state = if x > 0 then state_a else state_b;
by a smooth characteristic, so that the expression is continuous and differentiable:
state := smooth(1, if x > x_small then state_a else if x < -x_small then state_b else f(state_a, state_b));
This is performed by applying function Media.Common.smoothStep(..) on every element of the thermodynamic state record.
If mass fractions X[:] are approximated with this function then this can be performed for all nX mass fractions, instead of applying it for nX-1 mass fractions and computing the last one by the mass fraction constraint sum(X)=1. The reason is that the approximating function has the property that sum(state.X) = 1, provided sum(state_a.X) = sum(state_b.X) = 1. This can be shown by evaluating the approximating function in the abs(x) < x_small region (otherwise state.X is either state_a.X or state_b.X):
X[1] = smoothStep(x, X_a[1] , X_b[1] , x_small); X[2] = smoothStep(x, X_a[2] , X_b[2] , x_small); ... X[nX] = smoothStep(x, X_a[nX], X_b[nX], x_small);
or
X[1] = c*(X_a[1] - X_b[1]) + (X_a[1] + X_b[1])/2 X[2] = c*(X_a[2] - X_b[2]) + (X_a[2] + X_b[2])/2; ... X[nX] = c*(X_a[nX] - X_b[nX]) + (X_a[nX] + X_b[nX])/2; c = (x/x_small)*((x/x_small)^2 - 3)/4
Summing all mass fractions together results in
sum(X) = c*(sum(X_a) - sum(X_b)) + (sum(X_a) + sum(X_b))/2 = c*(1 - 1) + (1 + 1)/2 = 1Extends from Modelica.Icons.Function (Icon for functions).
Type | Name | Default | Description |
---|---|---|---|
Real | x | m_flow or dp | |
ThermodynamicState | state_a | Thermodynamic state if x > 0 | |
ThermodynamicState | state_b | Thermodynamic state if x < 0 | |
Real | x_small | Smooth transition in the region -x_small < x < x_small |
Type | Name | Description |
---|---|---|
ThermodynamicState | state | Smooth thermodynamic state for all x (continuous and differentiable) |
replaceable partial function setSmoothState "Return thermodynamic state so that it smoothly approximates: if x > 0 then state_a else state_b" extends Modelica.Icons.Function; input Real x "m_flow or dp"; input ThermodynamicState state_a "Thermodynamic state if x > 0"; input ThermodynamicState state_b "Thermodynamic state if x < 0"; input Real x_small(min=0) "Smooth transition in the region -x_small < x < x_small"; output ThermodynamicState state "Smooth thermodynamic state for all x (continuous and differentiable)";end setSmoothState;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
IsentropicExponent | gamma | Isentropic exponent [1] |
replaceable partial function isentropicExponent "Return isentropic exponent" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output IsentropicExponent gamma "Isentropic exponent"; end isentropicExponent;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
VelocityOfSound | a | Velocity of sound [m/s] |
replaceable partial function velocityOfSound "Return velocity of sound" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output VelocityOfSound a "Velocity of sound"; end velocityOfSound;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
Temperature | T | Temperature [K] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
SpecificEnthalpy | h | Specific enthalpy [J/kg] |
replaceable function specificEnthalpy_pTX "Return specific enthalpy from p, T, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input Temperature T "Temperature"; input MassFraction X[:]=reference_X "Mass fractions"; output SpecificEnthalpy h "Specific enthalpy"; algorithm h := specificEnthalpy(setState_pTX(p,T,X));end specificEnthalpy_pTX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
SpecificEnthalpy | h | Specific enthalpy [J/kg] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
Temperature | T | Temperature [K] |
replaceable function temperature_phX "Return temperature from p, h, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEnthalpy h "Specific enthalpy"; input MassFraction X[:]=reference_X "Mass fractions"; output Temperature T "Temperature"; algorithm T := temperature(setState_phX(p,h,X)); end temperature_phX;
Type | Name | Default | Description |
---|---|---|---|
AbsolutePressure | p | Pressure [Pa] | |
SpecificEnthalpy | h | Specific enthalpy [J/kg] | |
MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
Type | Name | Description |
---|---|---|
Density | d | Density [kg/m3] |
replaceable function density_phX "Return density from p, h, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEnthalpy h "Specific enthalpy"; input MassFraction X[:]=reference_X "Mass fractions"; output Density d "Density"; algorithm d := density(setState_phX(p,h,X)); end density_phX;
Type | Name | Default | Description |
---|---|---|---|
ThermodynamicState | state | thermodynamic state record |
Type | Name | Description |
---|---|---|
SpecificEnergy | u | Specific internal energy [J/kg] |
replaceable partial function specificInternalEnergy "Return specific internal energy" extends Modelica.Icons.Function; input ThermodynamicState state "thermodynamic state record"; output SpecificEnergy u "Specific internal energy"; end specificInternalEnergy;