| 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 | |
| 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
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
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;