Name | Description |
---|---|
MoistAirComparison | |
MoistAirDerivativeCheck | |
MoistAirNonsaturatedDerivativeCheck | |
TestMoistAir | |
TestMoistAirNonsaturated |
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"; initial equation hLiqSym = hLiqCod; hSteSym = hSteCod; hAirSym = hAirCod; equation hLiqCod=Medium.enthalpyOfLiquid(time); der(hLiqCod)=der(hLiqSym); assert(abs(hLiqCod-hLiqSym) < 1E-2, "Model has an error"); hSteCod=Medium.enthalpyOfCondensingGas(time); der(hSteCod)=der(hSteSym); assert(abs(hSteCod-hSteSym) < 1E-2, "Model has an error"); hAirCod=Medium.enthalpyOfDryAir(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 MoistAirNonsaturatedDerivativeCheck package Medium = Buildings.Media.PerfectGases.MoistAirNonsaturated; 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"; initial equation hLiqSym = hLiqCod; hSteSym = hSteCod; hAirSym = hAirCod; equation hLiqCod=Medium.enthalpyOfLiquid(time); der(hLiqCod)=der(hLiqSym); assert(abs(hLiqCod-hLiqSym) < 1E-2, "Model has an error"); hSteCod=Medium.enthalpyOfCondensingGas(time); der(hSteCod)=der(hSteSym); assert(abs(hSteCod-hSteSym) < 1E-2, "Model has an error"); hAirCod=Medium.enthalpyOfDryAir(time); der(hAirCod)=der(hAirSym); assert(abs(hAirCod-hAirSym) < 1E-2, "Model has an error"); end MoistAirNonsaturatedDerivativeCheck;
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;
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 TestMoistAirNonsaturated extends Modelica.Media.Examples.Tests.Components.PartialTestModel( redeclare package Medium = Buildings.Media.PerfectGases.MoistAirNonsaturated); end TestMoistAirNonsaturated;