| Name | Description | 
|---|---|
| MoistAirTemperatureEnthalpyInversion | Model to check computation of h(T) and its inverse | 
| MoistAirUnsaturatedTemperatureEnthalpyInversion | Model to check computation of h(T) and its inverse | 
| MoistAirComparison | |
| MoistAirDerivativeCheck | |
| MoistAirUnsaturatedDerivativeCheck | |
|  TestMoistAir | |
|  TestMoistAirUnsaturated | 
| Type | Name | Default | Description | 
|---|---|---|---|
| replaceable package Medium | PartialCondensingGases | ||
| Temperature | T0 | 273.15 + 20 | Temperature [K] | 
| Type | Name | Description | 
|---|---|---|
| replaceable package Medium | ||
model MoistAirTemperatureEnthalpyInversion 
  "Model to check computation of h(T) and its inverse"
  extends Buildings.Media.BaseClasses.TestTemperatureEnthalpyInversion(
    redeclare package Medium = Buildings.Media.PerfectGases.MoistAir);
end MoistAirTemperatureEnthalpyInversion;
 
| Type | Name | Default | Description | 
|---|---|---|---|
| replaceable package Medium | PartialCondensingGases | ||
| Temperature | T0 | 273.15 + 20 | Temperature [K] | 
| Type | Name | Description | 
|---|---|---|
| replaceable package Medium | ||
model MoistAirUnsaturatedTemperatureEnthalpyInversion 
  "Model to check computation of h(T) and its inverse"
  extends Buildings.Media.BaseClasses.TestTemperatureEnthalpyInversion(
    redeclare package Medium =
        Buildings.Media.PerfectGases.MoistAirUnsaturated);
end MoistAirUnsaturatedTemperatureEnthalpyInversion;
 
This example compares the perfect medium model Buildings.Media.PerfectGases.MoistAir with the ideal gas model from Modelica.Media.Air.MoistAir
| Type | Name | Default | Description | 
|---|---|---|---|
| Pressure | P | 101325 | Pressure [Pa] | 
model MoistAirComparison
   package PerfectMedium = Buildings.Media.PerfectGases.MoistAir;
   package IdealMedium =   Modelica.Media.Air.MoistAir;
    Modelica.SIunits.SpecificEnthalpy hLiqPer "Liquid phase enthalpy";
    Modelica.SIunits.SpecificEnthalpy hLiqIde "Liquid phase enthalpy";
    Modelica.SIunits.SpecificEnthalpy hStePer "Water vapor enthalpy";
    Modelica.SIunits.SpecificEnthalpy hSteIde "Water vapor enthalpy";
    Modelica.SIunits.SpecificEnthalpy hAirPer "Air enthalpy";
    Modelica.SIunits.SpecificEnthalpy hAirIde "Air enthalpy";
    Modelica.SIunits.SpecificEnthalpy hMixPer "Mixture specific enthalpy";
    Modelica.SIunits.SpecificEnthalpy hMixIde "Mixture specific enthalpy";
    Modelica.SIunits.MassFraction X[2] = {0.01, 0.09};
    Modelica.SIunits.Temperature T "Temperature";
    Modelica.SIunits.Conversions.NonSIunits.Temperature_degC T_degC 
    "Temperature";
    Real errLiq "Error liquid phase";
    Real errSte "Error steam phase";
    Real errAir "Error gas mixture";
    Real errMix "Error gas mixture";
    Real errT 
    "Error in temperature when enthalpy-temperature relation is inverted";
    parameter Modelica.SIunits.Pressure P = 101325 "Pressure";
equation 
    T_degC = 1+99*time; // exclude 0, to avoid large relative error
    T = 273.15 + T_degC;
    hLiqPer=PerfectMedium.enthalpyOfLiquid(T);
    hStePer=PerfectMedium.enthalpyOfCondensingGas(T);
    hAirPer=PerfectMedium.enthalpyOfGas(T, X);
    hLiqIde=IdealMedium.enthalpyOfLiquid(T);
    hSteIde=IdealMedium.enthalpyOfCondensingGas(T);
    hAirIde=IdealMedium.enthalpyOfGas(T, X);
    hMixPer=PerfectMedium.h_pTX(P, T, X);
    hMixIde=IdealMedium.h_pTX(P, T, X);
    errLiq * abs(hLiqIde+1E-3) = hLiqIde - hLiqPer;
    errSte * abs(hSteIde+1E-3) = hSteIde - hStePer;
    errAir * abs(hAirIde+1E-3) = hAirIde - hAirPer;
    errMix * abs(hMixIde+1E-3) = hMixIde - hMixPer;
    errT * T = T - PerfectMedium.T_phX(P, PerfectMedium.h_pTX(P, T, X), X);
    assert( abs(errLiq) < 0.09, "Error too large. Check medium model.");
    assert( abs(errSte) < 0.01, "Error too large. Check medium model.");
    assert( abs(errAir) < 0.01, "Error too large. Check medium model.");
    assert( abs(errMix) < 2.01, "Error too large. Check medium model.");
    assert( abs(errT) < 0.01, "Error too large. Check medium model.");
end MoistAirComparison;
 
This example checks whether the function derivative is implemented correctly. If the derivative implementation is not correct, the model will stop with an assert statement.
model MoistAirDerivativeCheck
   package Medium = Buildings.Media.PerfectGases.MoistAir;
    Modelica.SIunits.SpecificEnthalpy hLiqSym "Liquid phase enthalpy";
    Modelica.SIunits.SpecificEnthalpy hLiqCod "Liquid phase enthalpy";
    Modelica.SIunits.SpecificEnthalpy hSteSym "Water vapor enthalpy";
    Modelica.SIunits.SpecificEnthalpy hSteCod "Water vapor enthalpy";
    Modelica.SIunits.SpecificEnthalpy hAirSym "Dry air enthalpy";
    Modelica.SIunits.SpecificEnthalpy hAirCod "Dry air enthalpy";
    constant Real conv(unit="K/s") = 1 
    "Conversion factor to satisfy unit check";
initial equation 
     hLiqSym = hLiqCod;
     hSteSym = hSteCod;
     hAirSym = hAirCod;
equation 
    hLiqCod=Medium.enthalpyOfLiquid(conv*time);
    der(hLiqCod)=der(hLiqSym);
    assert(abs(hLiqCod-hLiqSym) < 1E-2, "Model has an error");
    hSteCod=Medium.enthalpyOfCondensingGas(conv*time);
    der(hSteCod)=der(hSteSym);
    assert(abs(hSteCod-hSteSym) < 1E-2, "Model has an error");
    hAirCod=Medium.enthalpyOfDryAir(conv*time);
    der(hAirCod)=der(hAirSym);
    assert(abs(hAirCod-hAirSym) < 1E-2, "Model has an error");
end MoistAirDerivativeCheck;
 
This example checks whether the function derivative is implemented correctly. If the derivative implementation is not correct, the model will stop with an assert statement.
model MoistAirUnsaturatedDerivativeCheck
   package Medium = Buildings.Media.PerfectGases.MoistAirUnsaturated;
    Modelica.SIunits.SpecificEnthalpy hLiqSym "Liquid phase enthalpy";
    Modelica.SIunits.SpecificEnthalpy hLiqCod "Liquid phase enthalpy";
    Modelica.SIunits.SpecificEnthalpy hSteSym "Water vapor enthalpy";
    Modelica.SIunits.SpecificEnthalpy hSteCod "Water vapor enthalpy";
    Modelica.SIunits.SpecificEnthalpy hAirSym "Dry air enthalpy";
    Modelica.SIunits.SpecificEnthalpy hAirCod "Dry air enthalpy";
    constant Real conv(unit="K/s") = 1 
    "Conversion factor to satisfy unit check";
initial equation 
     hLiqSym = hLiqCod;
     hSteSym = hSteCod;
     hAirSym = hAirCod;
equation 
    hLiqCod=Medium.enthalpyOfLiquid(conv*time);
    der(hLiqCod)=der(hLiqSym);
    assert(abs(hLiqCod-hLiqSym) < 1E-2, "Model has an error");
    hSteCod=Medium.enthalpyOfCondensingGas(conv*time);
    der(hSteCod)=der(hSteSym);
    assert(abs(hSteCod-hSteSym) < 1E-2, "Model has an error");
    hAirCod=Medium.enthalpyOfDryAir(conv*time);
    der(hAirCod)=der(hAirSym);
    assert(abs(hAirCod-hAirSym) < 1E-2, "Model has an error");
end MoistAirUnsaturatedDerivativeCheck;
 
 Buildings.Media.PerfectGases.Examples.TestMoistAir
Buildings.Media.PerfectGases.Examples.TestMoistAir 
Extends from Modelica.Media.Examples.Tests.Components.PartialTestModel (Basic test model to test a medium).
| Type | Name | Default | Description | 
|---|---|---|---|
| replaceable package Medium | PartialMedium | Medium model | |
| AbsolutePressure | p_start | Medium.p_default | Initial value of pressure [Pa] | 
| Temperature | T_start | Medium.T_default | Initial value of temperature [K] | 
| SpecificEnthalpy | h_start | Medium.h_default | Initial value of specific enthalpy [J/kg] | 
| Real | X_start[Medium.nX] | Medium.X_default | Initial value of mass fractions | 
| Type | Name | Description | 
|---|---|---|
| replaceable package Medium | Medium model | |
model TestMoistAir
  extends Modelica.Media.Examples.Tests.Components.PartialTestModel(
     redeclare package Medium =
          Buildings.Media.PerfectGases.MoistAir);
end TestMoistAir;
 
 Buildings.Media.PerfectGases.Examples.TestMoistAirUnsaturated
Buildings.Media.PerfectGases.Examples.TestMoistAirUnsaturated 
Extends from Modelica.Media.Examples.Tests.Components.PartialTestModel (Basic test model to test a medium).
| Type | Name | Default | Description | 
|---|---|---|---|
| replaceable package Medium | PartialMedium | Medium model | |
| AbsolutePressure | p_start | Medium.p_default | Initial value of pressure [Pa] | 
| Temperature | T_start | Medium.T_default | Initial value of temperature [K] | 
| SpecificEnthalpy | h_start | Medium.h_default | Initial value of specific enthalpy [J/kg] | 
| Real | X_start[Medium.nX] | Medium.X_default | Initial value of mass fractions | 
| Type | Name | Description | 
|---|---|---|
| replaceable package Medium | Medium model | |
model TestMoistAirUnsaturated
  extends Modelica.Media.Examples.Tests.Components.PartialTestModel(
     redeclare package Medium =
          Buildings.Media.PerfectGases.MoistAirUnsaturated);
end TestMoistAirUnsaturated;