Skip to content

Add start values in volumes #117

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 7, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ model SteamExtractionSplitterTest_direct
// Input: Component parameters
input Real alpha(start=0.8, min=0, max=1) "1";

// Output: Observables
output Units.SpecificEnthalpy main_h_out;

// Components
WaterSteam.Pipes.SteamExtractionSplitter steamExtractionSplitter annotation (Placement(transformation(extent={{-27,-26.6667},{27,21.3333}})));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ equation
extracted_Q_sensor.Q = extracted_Q;

// Input: Observables
steamExtractionSplitter.alpha = alpha;
steamExtractionSplitter.mainFlow.h_out = main_h_out;

// Output: Component parameters
steamExtractionSplitter.mainFlow.h_out = main_h_out;
steamExtractionSplitter.alpha = alpha;

// Assertion
assert(alpha <= 1 and alpha >= 0, "From model assertion error: alpha should be within 0 and 1");
Expand Down
14 changes: 6 additions & 8 deletions MetroscopeModelingLibrary/Tests/WaterSteamTests/Volumes.mo
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ package Volumes
source.Q_out = -Q_in;
source.h_out = h_in;


connect(flashTank.C_in, source.C_out)
annotation (Line(points={{-32,12},{-65,12}}, color={28,108,200}));
connect(flashTank.C_hot_steam, steam_sink.C_in)
Expand All @@ -35,7 +34,7 @@ package Volumes
extends Modelica.Icons.Example;

// Boundary Conditions
input Real P(start = 10, nominal=1e5) "barA";
input Real P(start = 10, nominal=10) "barA";
input Real Q_in(start=500, nominal=500) "kg/s";
input Real h_in(start=2e6) "J/kg";

Expand All @@ -60,12 +59,11 @@ package Volumes
// Component parameters
steamDryer.x_steam_out = x_steam_out;

connect(steamDryer.C_in, source.C_out) annotation (Line(points={{-32,
10.1818},{-48,10.1818},{-48,12},{-65,12}},
connect(steamDryer.C_in, source.C_out) annotation (Line(points={{-32,10.1818},{-48,10.1818},{-48,12},{-65,12}},
color={28,108,200}));
connect(steamDryer.C_hot_steam, steam_sink.C_in) annotation (Line(points={{28,
10.1818},{44,10.1818},{44,12},{61,12}}, color={28,108,200}));
connect(steamDryer.C_hot_liquid, liquid_sink.C_in) annotation (Line(points={{28,
-11.6364},{44,-11.6364},{44,-12},{61,-12}}, color={28,108,200}));
connect(steamDryer.C_hot_steam, steam_sink.C_in) annotation (Line(points={{28,10.1818},{44,10.1818},{44,12},{61,12}},
color={28,108,200}));
connect(steamDryer.C_hot_liquid, liquid_sink.C_in) annotation (Line(points={{28,-11.6364},{44,-11.6364},{44,-12},{61,-12}},
color={28,108,200}));
end SteamDryer_direct;
end Volumes;
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,15 @@ model SteamExtractionSplitter
Units.InletMassFlowRate Q_in(start=Q_in_0) "Inlet Mass flow rate";
Units.Pressure P(start=P_0) "Inlet Pressure";
Units.SpecificEnthalpy h_in "Inlet specific enthalpy";
Units.SpecificEnthalpy hesat(start=hesat_0) "Enthalpy of saturated water";
Units.SpecificEnthalpy hvsat(start=hvsat_0) "Enthalpy of saturated vapor";
Units.SpecificEnthalpy h_liq_sat(start=h_liq_sat_0) "Enthalpy of saturated water";
Units.SpecificEnthalpy h_vap_sat(start=h_vap_sat_0) "Enthalpy of saturated vapor";
Units.MassFraction x_ext_out(start=0.8) "Vapor mass fraction at extraction outlet (0 <= x_ext_out <= x_in)";
Units.MassFraction x_main_out(start=0.8) "Vapor mass fraction at main outlet";
Units.MassFraction x_in(start=0.8) "Vapor mass fraction at inlet";

Inputs.InputReal alpha(start=1, min=0, max=1) "Extraction paramater";

// Components
WaterSteam.BaseClasses.WaterIsoPHFlowModel inletFlow(Q_0=Q_in_0, P_0=P_0) annotation (Placement(transformation(extent={{-85,-27},{-35,27}})));
WaterSteam.BaseClasses.WaterIsoPFlowModel extractedFlow(Q_0=Q_ext_0, P_0=P_0) annotation (Placement(transformation(
extent={{-11.5,-10.5},{11.5,10.5}},
rotation=270,
Expand All @@ -36,15 +35,15 @@ model SteamExtractionSplitter
Connectors.WaterOutlet C_main_out(Q(start=-Q_main_0), P(start=P_0)) annotation (Placement(transformation(extent={{100,-10},{120,10}}),iconTransformation(extent={{96,-10},{116,10}})));
Connectors.WaterOutlet C_ext_out(Q(start=-Q_ext_0), P(start=P_0)) annotation (Placement(transformation(extent={{-10,-74},{10,-54}}), iconTransformation(extent={{-10,-78},{10,-58}})));
protected
parameter Units.SpecificEnthalpy hvsat_0 = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P_0));
parameter Units.SpecificEnthalpy hesat_0 = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P_0));
parameter Units.SpecificEnthalpy h_vap_sat_0 = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P_0));
parameter Units.SpecificEnthalpy h_liq_sat_0 = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P_0));
equation
// Definition of all intermediate variables
hvsat = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P));
hesat = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P));
Q_in = inletFlow.Q;
P = inletFlow.P;
h_in = inletFlow.h;
h_vap_sat = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P));
h_liq_sat = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P));
Q_in = extractedFlow.Q + mainFlow.Q;
P = C_in.P;
h_in = inStream(C_in.h_outflow);

//Energy balance
extractedFlow.W + mainFlow.W = 0;
Expand All @@ -53,15 +52,14 @@ equation
x_ext_out = alpha * x_in;

// Mass Fractions Computation
x_in = (h_in - hesat) / (hvsat - hesat);
x_main_out = (mainFlow.h_out - hesat) / (hvsat - hesat);
x_ext_out = (extractedFlow.h_out - hesat) / (hvsat - hesat);
connect(inletFlow.C_out, mainFlow.C_in) annotation (Line(points={{-35,0},{35,0}}, color={28,108,200}));
x_in = (h_in - h_liq_sat) / (h_vap_sat - h_liq_sat);
x_main_out = (mainFlow.h_out - h_liq_sat) / (h_vap_sat - h_liq_sat);
x_ext_out = (extractedFlow.h_out - h_liq_sat) / (h_vap_sat - h_liq_sat);
connect(extractedFlow.C_in, mainFlow.C_in) annotation (Line(points={{1.77636e-15,-18.5},{1.77636e-15,0},{35,0}}, color={28,108,200}));
connect(extractedFlow.C_out, C_ext_out) annotation (Line(points={{-2.10942e-15,-41.5},{-2.10942e-15,-54},{0,-54},{0,-64}},
color={28,108,200}));
connect(C_in, inletFlow.C_in) annotation (Line(points={{-110,0},{-85,0}}, color={28,108,200}));
connect(C_main_out, mainFlow.C_out) annotation (Line(points={{110,0},{85,0}}, color={28,108,200}));
connect(C_in, mainFlow.C_in) annotation (Line(points={{-110,0},{35,0}}, color={28,108,200}));
annotation (Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,80}}),
graphics={Polygon(
points={{-100,20},{-100,-20},{-46,-20},{-8,-60},{10,-60},{-16,-20},{100,-20},{100,20},{-100,20}},
Expand All @@ -79,9 +77,5 @@ equation
textColor={28,108,200},
origin={-12,-30},
rotation=270,
textString="extracted"),
Text(
extent={{-74,-18},{-32,-28}},
textColor={28,108,200},
textString="inlet")}));
textString="extracted")}));
end SteamExtractionSplitter;
19 changes: 12 additions & 7 deletions MetroscopeModelingLibrary/WaterSteam/Volumes/FlashTank.mo
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,24 @@ model FlashTank
package WaterSteamMedium = MetroscopeModelingLibrary.Media.WaterSteamMedium;

import MetroscopeModelingLibrary.Units;
Units.Pressure P(start=10e5);
Units.InletMassFlowRate Q_in;

WaterSteam.Connectors.WaterInlet C_in
// Initialization parameters
parameter Units.Pressure P_0 = 10e5;
parameter Units.InletMassFlowRate Q_in_0=500;

Units.Pressure P(start=P_0);
Units.InletMassFlowRate Q_in(start=Q_in_0);

WaterSteam.Connectors.WaterInlet C_in(P(start=P_0), Q(start=Q_in_0))
annotation (Placement(transformation(extent={{-110,30},{-90,50}}),
iconTransformation(extent={{-110,30},{-90,50}})));
WaterSteam.Connectors.WaterOutlet C_hot_steam
WaterSteam.Connectors.WaterOutlet C_hot_steam(P(start=P_0), Q(start=-Q_in_0/2))
annotation (Placement(transformation(extent={{90,30},{110,50}})));
WaterSteam.Connectors.WaterOutlet C_hot_liquid
WaterSteam.Connectors.WaterOutlet C_hot_liquid(P(start=P_0), Q(start=-Q_in_0/2))
annotation (Placement(transformation(extent={{90,-50},{110,-30}})));
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase(P_0=P_0, Q_0=Q_in_0/2)
annotation (Placement(transformation(extent={{26,30},{46,50}})));
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase(P_0=P_0, Q_0=Q_in_0/2)
annotation (Placement(transformation(extent={{26,-50},{46,-30}})));
equation

Expand Down
27 changes: 16 additions & 11 deletions MetroscopeModelingLibrary/WaterSteam/Volumes/SteamDryer.mo
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,32 @@ model SteamDryer

import MetroscopeModelingLibrary.Units;

Units.SpecificEnthalpy h_vap_sat; // Saturated liquid enthalpy
Units.SpecificEnthalpy h_liq_sat; // Saturated steam enthalpy
// Initialization parameters
parameter Units.Pressure P_0 = 10e5;
parameter Units.InletMassFlowRate Q_in_0=500;

Units.Pressure P(start=10e5); // Pressure in dryer
Units.InletMassFlowRate Q_in; // Inlet mass flow rate
Units.SpecificEnthalpy h_vap_sat(start=h_vap_sat_0); // Saturated liquid enthalpy
Units.SpecificEnthalpy h_liq_sat(start=h_liq_sat_0); // Saturated steam enthalpy

Units.Pressure P(start=P_0); // Pressure in dryer
Units.InletMassFlowRate Q_in(start=Q_in_0); // Inlet mass flow rate

Units.MassFraction x_steam_out; // Steam mass fraction at steam outlet

WaterSteam.Connectors.WaterInlet C_in
WaterSteam.Connectors.WaterInlet C_in(P(start=P_0), Q(start=Q_in_0))
annotation (Placement(transformation(extent={{-110,30},{-90,50}}),
iconTransformation(extent={{-110,30},{-90,50}})));
WaterSteam.Connectors.WaterOutlet C_hot_steam
WaterSteam.Connectors.WaterOutlet C_hot_steam(P(start=P_0), Q(start=-Q_in_0/2))
annotation (Placement(transformation(extent={{90,30},{110,50}})));
WaterSteam.Connectors.WaterOutlet C_hot_liquid
WaterSteam.Connectors.WaterOutlet C_hot_liquid(P(start=P_0), Q(start=-Q_in_0/2))
annotation (Placement(transformation(extent={{90,-50},{110,-30}})));
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase(P_0=P_0, Q_0=Q_in_0/2)
annotation (Placement(transformation(extent={{26,30},{46,50}})));
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase(P_0=P_0, Q_0=Q_in_0/2)
annotation (Placement(transformation(extent={{26,-50},{46,-30}})));
protected
parameter Units.SpecificEnthalpy h_vap_sat_0 = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P_0));
parameter Units.SpecificEnthalpy h_liq_sat_0 = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P_0));
equation

// Definitions
Expand All @@ -39,8 +46,6 @@ equation
// Energy balance
steam_phase.W + liquid_phase.W = 0;



connect(liquid_phase.C_in, C_in) annotation (Line(points={{26,-40},{-40,-40},{
-40,40},{-100,40}},
color={28,108,200}));
Expand Down
100 changes: 100 additions & 0 deletions MetroscopeModelingLibrary/WaterSteam/Volumes/package.mo
Original file line number Diff line number Diff line change
@@ -1,3 +1,103 @@
within MetroscopeModelingLibrary.WaterSteam;
package Volumes
annotation (Icon(graphics={
Rectangle(
lineColor={200,200,200},
fillColor={248,248,248},
fillPattern=FillPattern.HorizontalCylinder,
extent={{-100,-100},{100,100}},
radius=25.0),
Rectangle(
lineColor={128,128,128},
extent={{-100,-100},{100,100}},
radius=25.0),
Rectangle(
extent={{-68,40},{70,-40}},
lineColor={28,108,200},
fillColor={236,238,248},
fillPattern=FillPattern.Solid,
lineThickness=1),
Polygon(
points={{-68,-10},{70,-10},{70,-40},{-68,-40},{-68,-10}},
lineColor={28,108,200},
lineThickness=0.5,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-60,22},{-54,16}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-52,10},{-46,4}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-46,26},{-40,20}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-64,0},{-58,-6}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-56,34},{-50,28}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-40,6},{-34,0}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-32,22},{-26,16}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-20,10},{-14,4}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-26,-2},{-20,-8}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-66,14},{-60,8}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{0,0},{6,-6}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Ellipse(
extent={{-48,0},{-42,-6}},
lineThickness=1,
fillColor={79,188,247},
fillPattern=FillPattern.Solid,
pattern=LinePattern.None),
Rectangle(
extent={{-68,40},{70,-40}},
lineColor={28,108,200},
lineThickness=1)}));
end Volumes;