Skip to content

Commit

Permalink
Reformulated to use density difference and temperature difference as …
Browse files Browse the repository at this point in the history
  • Loading branch information
mwetter committed Nov 17, 2020
1 parent c5ab735 commit 636bbcb
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 10 deletions.
3 changes: 2 additions & 1 deletion Buildings/Fluid/Interfaces/ConservationEquation.mo
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,8 @@ model ConservationEquation "Lumped volume with mass and energy balance"

Modelica.SIunits.Mass m(
min=Modelica.Constants.eps,
start=fluidVolume*rho_start)
start=fluidVolume*rho_start,
stateSelect=StateSelect.never)
"Mass of fluid";

Modelica.SIunits.Mass[Medium.nXi] mXi(
Expand Down
19 changes: 12 additions & 7 deletions Buildings/Media/Air.mo
Original file line number Diff line number Diff line change
Expand Up @@ -53,16 +53,16 @@ package Air
final parameter Boolean standardOrderComponents=true
"If true, and reducedX = true, the last element of X will be computed from the other ones";

InputAbsolutePressure p "Absolute pressure of medium";
InputAbsolutePressure p(stateSelect=StateSelect.never) "Absolute pressure of medium";
InputMassFraction[1] Xi(
start=X_default[1:1],
nominal={0.01},
each stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default)
"Structurally independent mass fractions";
InputSpecificEnthalpy h "Specific enthalpy of medium";
Modelica.Media.Interfaces.Types.Density d "Density of medium";
Modelica.Media.Interfaces.Types.Density d
"Density of medium";
Modelica.Media.Interfaces.Types.Temperature T(
stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default,
nominal=100)
"Temperature of medium";
Modelica.Media.Interfaces.Types.MassFraction[2] X(start=reference_X)
Expand Down Expand Up @@ -92,13 +92,18 @@ package Air

// Declarations for Air only
protected
Modelica.SIunits.TemperatureDifference dT(start=T_default-reference_T)
"Temperature difference used to compute enthalpy";

Modelica.SIunits.TemperatureDifference dT(
nominal=10,
stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default) = T - reference_T
"Temperature difference used to compute enthalpy";
// Nominal value is 100/1E5=1E-3
Modelica.Media.Interfaces.Types.Density dd(
nominal=1E-3,
stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default) = d - dStp
"Density of medium";
equation
MM = 1/(X[1]/steam.MM+(X[2])/dryair.MM);

T = dT + reference_T;
h = dT*dryair.cp * X[2] +
(dT * steam.cp + h_fg) * X[1];
R = dryair.R*X[2] + steam.R*X[1];
Expand Down
16 changes: 14 additions & 2 deletions Buildings/Media/Specialized/Air/PerfectGas.mo
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ package PerfectGas "Model for air as a perfect gas"

redeclare replaceable model extends BaseProperties(
u(nominal=1E4),
p(stateSelect=StateSelect.never),
T(start=T_default,
stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default,
nominal=100),
Expand All @@ -47,6 +48,17 @@ package PerfectGas "Model for air as a perfect gas"
constant Modelica.SIunits.MolarMass[2] MMX = {steam.MM,dryair.MM}
"Molar masses of components";

Modelica.SIunits.TemperatureDifference dT(
nominal=10,
stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default) = T - reference_T
"Temperature difference used to compute enthalpy";
// Nominal value is 100/1E5=1E-3
Modelica.Media.Interfaces.Types.Density dd(
nominal=1E-3,
stateSelect=if preferredMediumStates then StateSelect.prefer else StateSelect.default) = d - dStp
"Density of medium";


MassFraction X_steam "Mass fraction of steam water";
MassFraction X_air "Mass fraction of air";
equation
Expand All @@ -62,8 +74,8 @@ as required from medium model \"" + mediumName + "\".");
X_steam = Xi[Water];
X_air = 1-Xi[Water];

h = (T - reference_T)*dryair.cp * (1 - Xi[Water]) +
((T-reference_T) * steam.cp + h_fg) * Xi[Water];
h = dT*dryair.cp * (1 - Xi[Water]) +
(dT * steam.cp + h_fg) * Xi[Water];

R = dryair.R*(1 - X_steam) + steam.R*X_steam;
//
Expand Down

0 comments on commit 636bbcb

Please sign in to comment.