Incompressible medium properties based on tables
This is the base package for medium models of incompressible fluids based on tables. The minimal data to provide for a useful medium description is tables of density and heat capacity as functions of temperature.
It should be noted that incompressible media only have 1 state per control volume (usually T), but have both T and p as inputs for fully correct properties. The error of using only T-dependent properties is small, therefore a Boolean flag enthalpyOfT exists. If it is true, the enumeration Choices.IndependentVariables is set to Choices.IndependentVariables.T otherwise it is set to Choices.IndependentVariables.pT.
To implement a new medium model, create a package that extends TableBased and provides one or more of the constant tables:
tableDensity = [T, d]; tableHeatCapacity = [T, Cp]; tableConductivity = [T, lam]; tableViscosity = [T, eta]; tableVaporPressure = [T, pVap];
The table data is used to fit constant polynomials of order npol, the temperature data points do not need to be same for different properties. Properties like enthalpy, inner energy and entropy are calculated consistently from integrals and derivatives of d(T) and Cp(T). The minimal data for a useful medium model is thus density and heat capacity. Transport properties and vapor pressure are optional, if the data tables are empty the corresponding function calls can not be used.
Extends from Modelica.Media.Interfaces.PartialMedium (Partial medium properties (base package of all media packages)).
Name | Description |
---|---|
enthalpyOfT=true | True if enthalpy is approximated as a function of T only, (p-dependence neglected) |
densityOfT=size(tableDensity, 1) > 1 | True if density is a function of temperature |
T_min | Minimum temperature valid for medium model |
T_max | Maximum temperature valid for medium model |
T0=273.15 | Reference Temperature |
h0=0 | Reference enthalpy at T0, reference_p |
s0=0 | Reference entropy at T0, reference_p |
MM_const=0.1 | Molar mass |
npol=2 | Degree of polynomial used for fitting |
npolDensity=npol | Degree of polynomial used for fitting rho(T) |
npolHeatCapacity=npol | Degree of polynomial used for fitting Cp(T) |
npolViscosity=npol | Degree of polynomial used for fitting eta(T) |
npolVaporPressure=npol | Degree of polynomial used for fitting pVap(T) |
npolConductivity=npol | Degree of polynomial used for fitting lambda(T) |
neta=size(tableViscosity, 1) | Number of data points for viscosity |
tableDensity | Table for rho(T) |
tableHeatCapacity | Table for Cp(T) |
tableViscosity | Table for eta(T) |
tableVaporPressure | Table for pVap(T) |
tableConductivity | Table for lambda(T) |
TinK | True if T[K],Kelvin used for table temperatures |
hasDensity=not (size(tableDensity, 1) == 0) | True if table tableDensity is present |
hasHeatCapacity=not (size(tableHeatCapacity, 1) == 0) | True if table tableHeatCapacity is present |
hasViscosity=not (size(tableViscosity, 1) == 0) | True if table tableViscosity is present |
hasVaporPressure=not (size(tableVaporPressure, 1) == 0) | True if table tableVaporPressure is present |
invTK=if size(tableViscosity, 1) > 0 then (if TinK then 1 ./ tableViscosity[:, 1] else 1 ./ Cv.from_degC(tableViscosity[:, 1])) else fill(0, neta) | |
poly_rho=if hasDensity then Polynomials.fitting(tableDensity[:, 1], tableDensity[:, 2], npolDensity) else zeros(npolDensity + 1) | |
poly_Cp=if hasHeatCapacity then Polynomials.fitting(tableHeatCapacity[:, 1], tableHeatCapacity[:, 2], npolHeatCapacity) else zeros(npolHeatCapacity + 1) | |
poly_eta=if hasViscosity then Polynomials.fitting(invTK, Math.log(tableViscosity[:, 2]), npolViscosity) else zeros(npolViscosity + 1) | |
poly_pVap=if hasVaporPressure then Polynomials.fitting(tableVaporPressure[:, 1], tableVaporPressure[:, 2], npolVaporPressure) else zeros(npolVaporPressure + 1) | |
poly_lam=if size(tableConductivity, 1) > 0 then Polynomials.fitting(tableConductivity[:, 1], tableConductivity[:, 2], npolConductivity) else zeros(npolConductivity + 1) | |
invertTemp | Function to invert temperatures |
BaseProperties | Base properties of T dependent medium |
setState_pTX | Returns state record, given pressure and temperature |
setState_dTX | Returns state record, given pressure and temperature |
setState_pT | Returns state record as function of p and T |
setState_phX | Returns state record, given pressure and specific enthalpy |
setState_ph | Returns state record as function of p and h |
setState_psX | Returns state record, given pressure and specific entropy |
setState_ps | Returns state record as function of p and s |
setSmoothState | Return thermodynamic state so that it smoothly approximates: if x > 0 then state_a else state_b |
specificHeatCapacityCv | Specific heat capacity at constant volume (or pressure) of medium |
specificHeatCapacityCp | Specific heat capacity at constant volume (or pressure) of medium |
dynamicViscosity | Return dynamic viscosity as a function of the thermodynamic state record |
thermalConductivity | Return thermal conductivity as a function of the thermodynamic state record |
s_T | Compute specific entropy |
specificEntropy | Return specific entropy as a function of the thermodynamic state record |
h_T | Compute specific enthalpy from temperature |
h_T_der | Compute specific enthalpy from temperature |
h_pT | Compute specific enthalpy from pressure and temperature |
density_T | Return density as function of temperature |
temperature | Return temperature as a function of the thermodynamic state record |
pressure | Return pressure as a function of the thermodynamic state record |
density | Return density as a function of the thermodynamic state record |
specificEnthalpy | Return specific enthalpy as a function of the thermodynamic state record |
specificInternalEnergy | Return specific internal energy as a function of the thermodynamic state record |
T_ph | Compute temperature from pressure and specific enthalpy |
T_ps | Compute temperature from pressure and specific enthalpy |
specificEnthalpyOfT | Return specific enthalpy from pressure and temperature, taking the flag enthalpyOfT into account |
Inherited | |
ThermoStates=if enthalpyOfT then Modelica.Media.Interfaces.Choices.IndependentVariables.T else Modelica.Media.Interfaces.Choices.IndependentVariables.pT | Enumeration type for independent variables |
mediumName="tableMedium" | Name of the medium |
substanceNames={mediumName} | Names of the mixture substances. Set substanceNames={mediumName} if only one substance. |
extraPropertiesNames=fill("", 0) | Names of the additional (extra) transported properties. Set extraPropertiesNames=fill("",0) if unused |
singleState=true | = true, if u and d are not a function of pressure |
reducedX=true | = true if medium contains the equation sum(X) = 1.0; set reducedX=true if only one substance (see docu for details) |
fixedX=true | = true if medium contains the equation X = reference_X |
reference_p=1.013e5 | Reference pressure of Medium: default 1 atmosphere |
reference_T=298.15 | Reference temperature of Medium: default 25 deg Celsius |
reference_X=fill(1/nX, nX) | Default mass fractions of medium |
p_default=101325 | Default value for pressure of medium (for initialization) |
T_default=Modelica.Units.Conversions.from_degC(20) | Default value for temperature of medium (for initialization) |
h_default=specificEnthalpy_pTX(p_default, T_default, X_default) | Default value for specific enthalpy of medium (for initialization) |
X_default=reference_X | Default value for mass fractions of medium (for initialization) |
C_default=fill(0, nC) | Default value for trace substances of medium (for initialization) |
nS=size(substanceNames, 1) | Number of substances |
nX=nS | Number of mass fractions |
nXi=if fixedX then 0 else if reducedX then nS - 1 else nS | Number of structurally independent mass fractions (see docu for details) |
nC=size(extraPropertiesNames, 1) | Number of extra (outside of standard mass-balance) transported properties |
C_nominal=1.0e-6*ones(nC) | Default for the nominal values for the extra properties |
FluidConstants | Critical, triple, molecular and other standard data of fluid |
ThermodynamicState | Minimal variable set that is available as input argument to every medium function |
prandtlNumber | Return the Prandtl number |
specificGibbsEnergy | Return specific Gibbs energy |
specificHelmholtzEnergy | Return specific Helmholtz energy |
heatCapacity_cp | Alias for deprecated name |
heatCapacity_cv | Alias for deprecated name |
isentropicExponent | Return isentropic exponent |
isentropicEnthalpy | Return isentropic enthalpy |
velocityOfSound | Return velocity of sound |
isobaricExpansionCoefficient | Return overall the isobaric expansion coefficient beta |
beta | Alias for isobaricExpansionCoefficient for user convenience |
isothermalCompressibility | Return overall the isothermal compressibility factor |
kappa | Alias of isothermalCompressibility for user convenience |
density_derp_h | Return density derivative w.r.t. pressure at const specific enthalpy |
density_derh_p | Return density derivative w.r.t. specific enthalpy at constant pressure |
density_derp_T | Return density derivative w.r.t. pressure at const temperature |
density_derT_p | Return density derivative w.r.t. temperature at constant pressure |
density_derX | Return density derivative w.r.t. mass fraction |
molarMass | Return the molar mass of the medium |
specificEnthalpy_pTX | Return specific enthalpy from p, T, and X or Xi |
specificEntropy_pTX | Return specific enthalpy from p, T, and X or Xi |
density_pTX | Return density from p, T, and X or Xi |
temperature_phX | Return temperature from p, h, and X or Xi |
density_phX | Return density from p, h, and X or Xi |
temperature_psX | Return temperature from p,s, and X or Xi |
density_psX | Return density from p, s, and X or Xi |
specificEnthalpy_psX | Return specific enthalpy from p, s, and X or Xi |
MassFlowRate | Type for mass flow rate with medium specific attributes |
AbsolutePressure | Type for absolute pressure with medium specific attributes |
Density | Type for density with medium specific attributes |
DynamicViscosity | Type for dynamic viscosity with medium specific attributes |
EnthalpyFlowRate | Type for enthalpy flow rate with medium specific attributes |
MassFraction | Type for mass fraction with medium specific attributes |
MoleFraction | Type for mole fraction with medium specific attributes |
MolarMass | Type for molar mass with medium specific attributes |
MolarVolume | Type for molar volume with medium specific attributes |
IsentropicExponent | Type for isentropic exponent with medium specific attributes |
SpecificEnergy | Type for specific energy with medium specific attributes |
SpecificInternalEnergy | Type for specific internal energy with medium specific attributes |
SpecificEnthalpy | Type for specific enthalpy with medium specific attributes |
SpecificEntropy | Type for specific entropy with medium specific attributes |
SpecificHeatCapacity | Type for specific heat capacity with medium specific attributes |
SurfaceTension | Type for surface tension with medium specific attributes |
Temperature | Type for temperature with medium specific attributes |
ThermalConductivity | Type for thermal conductivity with medium specific attributes |
PrandtlNumber | Type for Prandtl number with medium specific attributes |
VelocityOfSound | Type for velocity of sound with medium specific attributes |
ExtraProperty | Type for unspecified, mass-specific property transported by flow |
CumulativeExtraProperty | Type for conserved integral of unspecified, mass specific property |
ExtraPropertyFlowRate | Type for flow rate of unspecified, mass-specific property |
IsobaricExpansionCoefficient | Type for isobaric expansion coefficient with medium specific attributes |
DipoleMoment | Type for dipole moment with medium specific attributes |
DerDensityByPressure | Type for partial derivative of density with respect to pressure with medium specific attributes |
DerDensityByEnthalpy | Type for partial derivative of density with respect to enthalpy with medium specific attributes |
DerEnthalpyByPressure | Type for partial derivative of enthalpy with respect to pressure with medium specific attributes |
DerDensityByTemperature | Type for partial derivative of density with respect to temperature with medium specific attributes |
DerTemperatureByPressure | Type for partial derivative of temperature with respect to pressure with medium specific attributes |
SaturationProperties | Saturation properties of two phase medium |
FluidLimits | Validity limits for fluid model |
FixedPhase | Phase of the fluid: 1 for 1-phase, 2 for two-phase, 0 for not known, e.g., interactive use |
Basic | The most basic version of a record used in several degrees of detail |
IdealGas | The ideal gas version of a record used in several degrees of detail |
TwoPhase | The two phase fluid version of a record used in several degrees of detail |
Function to invert temperatures
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
table[:] | Table temperature data |
Tink | Flag for Celsius or Kelvin |
Name | Description |
---|---|
invTable[size(table, 1)] | Inverted temperatures |
Base properties of T dependent medium
Note that the inner energy neglects the pressure dependence, which is only true for an incompressible medium with d = constant. The neglected term is (p-reference_p)/rho*(T/rho)*(∂rho /∂T). This is very small for liquids due to proportionality to 1/d^2, but can be problematic for gases that are modeled incompressible.
It should be noted that incompressible media only have 1 state per control volume (usually T), but have both T and p as inputs for fully correct properties. The error of using only T-dependent properties is small, therefore a Boolean flag enthalpyOfT exists. If it is true, the enumeration Choices.IndependentVariables is set to Choices.IndependentVariables.T otherwise it is set to Choices.IndependentVariables.pT.
Enthalpy is never a function of T only (h = h(T) + (p-reference_p)/d), but the error is also small and non-linear systems can be avoided. In particular, non-linear systems are small and local as opposed to large and over all volumes.
Entropy is calculated as
s = s0 + integral(Cp(T)/T,dt)
which is only exactly true for a fluid with constant density d=d0.
Extends from (Base properties (p, d, T, h, u, R_s, MM and, if applicable, X and Xi) of a medium).
Name | Description |
---|---|
standardOrderComponents | If true, and reducedX = true, the last element of X will be computed from the other ones |
T_start | Initial temperature [K] |
Custom Parameters | |
p_bar | Absolute pressure of medium in [bar] [bar] |
Advanced | |
preferredMediumStates | = true if StateSelect.prefer shall be used for the independent property variables of the medium |
Returns state record, given pressure and temperature
Extends from (Return thermodynamic state as function of p, T and composition X or Xi).
Name | Description |
---|---|
p | Pressure [Pa] |
T | Temperature [K] |
X[:] | Mass fractions [kg/kg] |
Name | Description |
---|---|
state | Thermodynamic state record |
Returns state record, given pressure and temperature
Extends from (Return thermodynamic state as function of d, T and composition X or Xi).
Name | Description |
---|---|
d | Density [kg/m3] |
T | Temperature [K] |
X[:] | Mass fractions [kg/kg] |
Name | Description |
---|---|
state | Thermodynamic state record |
Returns state record as function of p and T
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure [Pa] |
T | Temperature [K] |
Name | Description |
---|---|
state | Thermodynamic state |
Returns state record, given pressure and specific enthalpy
Extends from (Return thermodynamic state as function of p, h and composition X or Xi).
Name | Description |
---|---|
p | Pressure [Pa] |
h | Specific enthalpy [J/kg] |
X[:] | Mass fractions [kg/kg] |
Name | Description |
---|---|
state | Thermodynamic state record |
Returns state record as function of p and h
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure [Pa] |
h | Specific enthalpy [J/kg] |
Name | Description |
---|---|
state | Thermodynamic state |
Returns state record, given pressure and specific entropy
Extends from (Return thermodynamic state as function of p, s and composition X or Xi).
Name | Description |
---|---|
p | Pressure [Pa] |
s | Specific entropy [J/(kg.K)] |
X[:] | Mass fractions [kg/kg] |
Name | Description |
---|---|
state | Thermodynamic state record |
Returns state record as function of p and s
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure [Pa] |
s | Specific entropy [J/(kg.K)] |
Name | Description |
---|---|
state | Thermodynamic state |
Return thermodynamic state so that it smoothly approximates: if x > 0 then state_a else state_b
Extends from (Return thermodynamic state so that it smoothly approximates: if x > 0 then state_a else state_b).
Name | Description |
---|---|
x | m_flow or dp |
state_a | Thermodynamic state if x > 0 |
state_b | Thermodynamic state if x < 0 |
x_small | Smooth transition in the region -x_small < x < x_small |
Name | Description |
---|---|
state | Smooth thermodynamic state for all x (continuous and differentiable) |
Specific heat capacity at constant volume (or pressure) of medium
Extends from (Return specific heat capacity at constant volume).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
cv | Specific heat capacity at constant volume [J/(kg.K)] |
Specific heat capacity at constant volume (or pressure) of medium
Extends from (Return specific heat capacity at constant pressure).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
cp | Specific heat capacity at constant pressure [J/(kg.K)] |
Return dynamic viscosity as a function of the thermodynamic state record
Extends from (Return dynamic viscosity).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
eta | Dynamic viscosity [Pa.s] |
Return thermal conductivity as a function of the thermodynamic state record
Extends from (Return thermal conductivity).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
lambda | Thermal conductivity [W/(m.K)] |
Compute specific entropy
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
T | Temperature [K] |
Name | Description |
---|---|
s | Specific entropy [J/(kg.K)] |
Return specific entropy as a function of the thermodynamic state record
Extends from (Return specific entropy).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
s | Specific entropy [J/(kg.K)] |
Compute specific enthalpy from temperature
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
T | Temperature [K] |
Name | Description |
---|---|
h | Specific enthalpy at p, T [J/kg] |
Compute specific enthalpy from temperature
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
T | Temperature [K] |
dT | Temperature derivative |
Name | Description |
---|---|
dh | Derivative of Specific enthalpy at T |
Compute specific enthalpy from pressure and temperature
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure [Pa] |
T | Temperature [K] |
densityOfT | Include or neglect density derivative dependence of enthalpy |
Name | Description |
---|---|
h | Specific enthalpy at p, T [J/kg] |
Return density as function of temperature
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
T | Temperature [K] |
Name | Description |
---|---|
d | Density [kg/m3] |
Return temperature as a function of the thermodynamic state record
Extends from (Return temperature).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
T | Temperature [K] |
Return pressure as a function of the thermodynamic state record
Extends from (Return pressure).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
p | Pressure [Pa] |
Return density as a function of the thermodynamic state record
Extends from (Return density).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
d | Density [kg/m3] |
Return specific enthalpy as a function of the thermodynamic state record
Extends from (Return specific enthalpy).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
h | Specific enthalpy [J/kg] |
Return specific internal energy as a function of the thermodynamic state record
Extends from (Return specific internal energy).
Name | Description |
---|---|
state | Thermodynamic state record |
Name | Description |
---|---|
u | Specific internal energy [J/kg] |
Compute temperature from pressure and specific enthalpy
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure [Pa] |
h | Specific enthalpy [J/kg] |
Name | Description |
---|---|
T | Temperature [K] |
Compute temperature from pressure and specific enthalpy
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure (unused) [Pa] |
s | Specific entropy [J/(kg.K)] |
Name | Description |
---|---|
T | Temperature [K] |
Return specific enthalpy from pressure and temperature, taking the flag enthalpyOfT into account
Extends from Modelica.Icons.Function (Icon for functions).
Name | Description |
---|---|
p | Pressure [Pa] |
T | Temperature [K] |
densityOfT | Include or neglect density derivative dependence of enthalpy |
Name | Description |
---|---|
h | Specific enthalpy [J/kg] |