This medium package models moist air using a gas law in which pressure and temperature are independent, which often leads to significantly faster and more robust computations. The specific heat capacities at constant pressure and at constant volume are constant. The air is assumed to be not saturated.
This medium uses the gas law
ρ/ρstp = p/pstp,
where pstd and ρstp are constant reference temperature and density, rathern than the ideal gas law
ρ = p ⁄(R T),
where R is the gas constant and T is the temperature.
This formulation often leads to smaller systems of nonlinear equations because equations for pressure and temperature are decoupled. Therefore, if air inside a control volume such as room air is heated, it does not increase its specific volume. Consequently, merely heating or cooling a control volume does not affect the air flow calculations in a duct network that may be connected to that volume. Note that multizone air exchange simulation in which buoyancy drives the air flow is still possible as the models in IBPSA.Airflow.Multizone compute the mass density using the function IBPSA.Utilities.Psychrometrics.Functions.density_pTX in which density is a function of temperature.
Note that models in this package implement the equation for the internal energy as
u = h - pstp ⁄ ρstp,
where u is the internal energy per unit mass, h is the enthalpy per unit mass, pstp is the static pressure and ρstp is the mass density at standard pressure and temperature. The reason for this implementation is that in general,
h = u + p v,
from which follows that
u = h - p v = h - p ⁄ ρ = h - pstp ⁄ ρstd,
because p ⁄ ρ = pstp ⁄ ρstp in this medium model.
The enthalpy is computed using the convention that h=0 if T=0 °C and no water vapor is present.
Name | Description |
---|---|
ThermodynamicState | ThermodynamicState record for moist air |
BaseProperties | Base properties |
density | Gas density |
dynamicViscosity | Return the dynamic viscosity of dry air |
enthalpyOfCondensingGas | Enthalpy of steam per unit mass of steam |
enthalpyOfGas | Enthalpy of gas mixture per unit mass of gas mixture |
enthalpyOfLiquid | Enthalpy of liquid (per unit mass of liquid) which is linear in the temperature |
enthalpyOfNonCondensingGas | Enthalpy of non-condensing gas per unit mass of steam |
enthalpyOfVaporization | Enthalpy of vaporization of water |
gasConstant | Return ideal gas constant as a function from thermodynamic state, only valid for phi<1 |
pressure | Returns pressure of ideal gas as a function of the thermodynamic state record |
isobaricExpansionCoefficient | Isobaric expansion coefficient beta |
isothermalCompressibility | Isothermal compressibility factor |
saturationPressure | Saturation curve valid for 223.16 <= T <= 373.16 (and slightly outside with less accuracy) |
specificEntropy | Return the specific entropy, only valid for phi<1 |
density_derp_T | Return the partial derivative of density with respect to pressure at constant temperature |
density_derT_p | Return the partial derivative of density with respect to temperature at constant pressure |
density_derX | Return the partial derivative of density with respect to mass fractions at constant pressure and temperature |
specificHeatCapacityCp | Specific heat capacity of gas mixture at constant pressure |
specificHeatCapacityCv | Specific heat capacity of gas mixture at constant volume |
setState_dTX | Return thermodynamic state as function of density d, temperature T and composition X |
setState_phX | Return thermodynamic state as function of pressure p, specific enthalpy h and composition X |
setState_pTX | Return thermodynamic state as function of p, T and composition X or Xi |
setState_psX | Return the thermodynamic state as function of p, s and composition X or Xi |
specificEnthalpy | Compute specific enthalpy from pressure, temperature and mass fraction |
specificEnthalpy_pTX | Specific enthalpy |
specificGibbsEnergy | Specific Gibbs energy |
specificHelmholtzEnergy | Specific Helmholtz energy |
isentropicEnthalpy | Return the isentropic enthalpy |
specificInternalEnergy | Specific internal energy |
temperature | Return temperature of ideal gas as a function of the thermodynamic state record |
molarMass | Return the molar mass |
temperature_phX | Compute temperature from specific enthalpy and mass fraction |
thermalConductivity | Thermal conductivity of dry air as a polynomial in the temperature |
dT.start
in base properties.AbsolutePressure(start=p_default)
to avoid
a translation error if
IBPSA.Fluid.Sources.Examples.TraceSubstancesFlowSource
is translated in pedantic mode in Dymola 2016.
The reason is that pressures use Medium.p_default
as start values,
but
Modelica.Media.Interfaces.Types
sets a default value of 1E-5.
A similar change has been done for pressure.
This fixes
#266.
stateSelect
attribute in BaseProperties.T
to allow correct use of preferredMediumState
as
described in
Modelica.Media.Interfaces.PartialMedium.
Note that the default is preferredMediumState=false
and hence the same states are used as were used before.
This is for
#260.
p(stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default)
in declaration of BaseProperties
.
Otherwise, when models that contain a fluid volume
are exported as an FMU, their pressure would be
differentiated with respect to time. This would require
the time derivative of the inlet pressure, which is not available,
causing the translation to stop with an error.
Inline=true
for
issue 227.
state.p/reference_p
in function
specificEntropy
.
#193.
stateSelect.prefer
for temperature.
This is for
#160.
HeatCapacityOfWater
which is neither needed nor implemented in the
Modelica Standard Library.
specificEnthalpy_pTX
and
in temperature_phX
.
final standardOrderComponents=true
in the
BaseProperties
declaration. This avoids an error
when models are checked in Dymola 2014 in the pedenatic mode.
each
to Xi(stateSelect=...)
.
ThermodynamicState
to avoid a warning
during model check and translation.
u=h-R*T
, which is only valid for ideal gases.
For this medium, the function is u=h-pStd/dStp
.
else
branch of function setState_phX
that lead to a run-time error when the constructor of this function was called.