Skip to content

Commit 310a722

Browse files
Add start values in volumes (#117)
* simplified Steam extraction splitter with flash tank inspiration Signed-off-by: pepmts <[email protected]> * added icon and start values in volumes Signed-off-by: pepmts <[email protected]>
1 parent fe9f697 commit 310a722

File tree

7 files changed

+150
-51
lines changed

7 files changed

+150
-51
lines changed

MetroscopeModelingLibrary/Tests/WaterSteamTests/Pipes/SteamExtractionSplitterTest_direct.mo

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ model SteamExtractionSplitterTest_direct
99
// Input: Component parameters
1010
input Real alpha(start=0.8, min=0, max=1) "1";
1111

12-
// Output: Observables
13-
output Units.SpecificEnthalpy main_h_out;
14-
1512
// Components
1613
WaterSteam.Pipes.SteamExtractionSplitter steamExtractionSplitter annotation (Placement(transformation(extent={{-27,-26.6667},{27,21.3333}})));
1714

MetroscopeModelingLibrary/Tests/WaterSteamTests/Pipes/SteamExtractionSplitterTest_reverse.mo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ equation
4040
extracted_Q_sensor.Q = extracted_Q;
4141

4242
// Input: Observables
43-
steamExtractionSplitter.alpha = alpha;
43+
steamExtractionSplitter.mainFlow.h_out = main_h_out;
4444

4545
// Output: Component parameters
46-
steamExtractionSplitter.mainFlow.h_out = main_h_out;
46+
steamExtractionSplitter.alpha = alpha;
4747

4848
// Assertion
4949
assert(alpha <= 1 and alpha >= 0, "From model assertion error: alpha should be within 0 and 1");

MetroscopeModelingLibrary/Tests/WaterSteamTests/Volumes.mo

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ package Volumes
2222
source.Q_out = -Q_in;
2323
source.h_out = h_in;
2424

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

3736
// Boundary Conditions
38-
input Real P(start = 10, nominal=1e5) "barA";
37+
input Real P(start = 10, nominal=10) "barA";
3938
input Real Q_in(start=500, nominal=500) "kg/s";
4039
input Real h_in(start=2e6) "J/kg";
4140

@@ -60,12 +59,11 @@ package Volumes
6059
// Component parameters
6160
steamDryer.x_steam_out = x_steam_out;
6261

63-
connect(steamDryer.C_in, source.C_out) annotation (Line(points={{-32,
64-
10.1818},{-48,10.1818},{-48,12},{-65,12}},
62+
connect(steamDryer.C_in, source.C_out) annotation (Line(points={{-32,10.1818},{-48,10.1818},{-48,12},{-65,12}},
6563
color={28,108,200}));
66-
connect(steamDryer.C_hot_steam, steam_sink.C_in) annotation (Line(points={{28,
67-
10.1818},{44,10.1818},{44,12},{61,12}}, color={28,108,200}));
68-
connect(steamDryer.C_hot_liquid, liquid_sink.C_in) annotation (Line(points={{28,
69-
-11.6364},{44,-11.6364},{44,-12},{61,-12}}, color={28,108,200}));
64+
connect(steamDryer.C_hot_steam, steam_sink.C_in) annotation (Line(points={{28,10.1818},{44,10.1818},{44,12},{61,12}},
65+
color={28,108,200}));
66+
connect(steamDryer.C_hot_liquid, liquid_sink.C_in) annotation (Line(points={{28,-11.6364},{44,-11.6364},{44,-12},{61,-12}},
67+
color={28,108,200}));
7068
end SteamDryer_direct;
7169
end Volumes;

MetroscopeModelingLibrary/WaterSteam/Pipes/SteamExtractionSplitter.mo

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,15 @@ model SteamExtractionSplitter
1616
Units.InletMassFlowRate Q_in(start=Q_in_0) "Inlet Mass flow rate";
1717
Units.Pressure P(start=P_0) "Inlet Pressure";
1818
Units.SpecificEnthalpy h_in "Inlet specific enthalpy";
19-
Units.SpecificEnthalpy hesat(start=hesat_0) "Enthalpy of saturated water";
20-
Units.SpecificEnthalpy hvsat(start=hvsat_0) "Enthalpy of saturated vapor";
19+
Units.SpecificEnthalpy h_liq_sat(start=h_liq_sat_0) "Enthalpy of saturated water";
20+
Units.SpecificEnthalpy h_vap_sat(start=h_vap_sat_0) "Enthalpy of saturated vapor";
2121
Units.MassFraction x_ext_out(start=0.8) "Vapor mass fraction at extraction outlet (0 <= x_ext_out <= x_in)";
2222
Units.MassFraction x_main_out(start=0.8) "Vapor mass fraction at main outlet";
2323
Units.MassFraction x_in(start=0.8) "Vapor mass fraction at inlet";
2424

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

2727
// Components
28-
WaterSteam.BaseClasses.WaterIsoPHFlowModel inletFlow(Q_0=Q_in_0, P_0=P_0) annotation (Placement(transformation(extent={{-85,-27},{-35,27}})));
2928
WaterSteam.BaseClasses.WaterIsoPFlowModel extractedFlow(Q_0=Q_ext_0, P_0=P_0) annotation (Placement(transformation(
3029
extent={{-11.5,-10.5},{11.5,10.5}},
3130
rotation=270,
@@ -36,15 +35,15 @@ model SteamExtractionSplitter
3635
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}})));
3736
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}})));
3837
protected
39-
parameter Units.SpecificEnthalpy hvsat_0 = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P_0));
40-
parameter Units.SpecificEnthalpy hesat_0 = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P_0));
38+
parameter Units.SpecificEnthalpy h_vap_sat_0 = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P_0));
39+
parameter Units.SpecificEnthalpy h_liq_sat_0 = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P_0));
4140
equation
4241
// Definition of all intermediate variables
43-
hvsat = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P));
44-
hesat = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P));
45-
Q_in = inletFlow.Q;
46-
P = inletFlow.P;
47-
h_in = inletFlow.h;
42+
h_vap_sat = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P));
43+
h_liq_sat = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P));
44+
Q_in = extractedFlow.Q + mainFlow.Q;
45+
P = C_in.P;
46+
h_in = inStream(C_in.h_outflow);
4847

4948
//Energy balance
5049
extractedFlow.W + mainFlow.W = 0;
@@ -53,15 +52,14 @@ equation
5352
x_ext_out = alpha * x_in;
5453

5554
// Mass Fractions Computation
56-
x_in = (h_in - hesat) / (hvsat - hesat);
57-
x_main_out = (mainFlow.h_out - hesat) / (hvsat - hesat);
58-
x_ext_out = (extractedFlow.h_out - hesat) / (hvsat - hesat);
59-
connect(inletFlow.C_out, mainFlow.C_in) annotation (Line(points={{-35,0},{35,0}}, color={28,108,200}));
55+
x_in = (h_in - h_liq_sat) / (h_vap_sat - h_liq_sat);
56+
x_main_out = (mainFlow.h_out - h_liq_sat) / (h_vap_sat - h_liq_sat);
57+
x_ext_out = (extractedFlow.h_out - h_liq_sat) / (h_vap_sat - h_liq_sat);
6058
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}));
6159
connect(extractedFlow.C_out, C_ext_out) annotation (Line(points={{-2.10942e-15,-41.5},{-2.10942e-15,-54},{0,-54},{0,-64}},
6260
color={28,108,200}));
63-
connect(C_in, inletFlow.C_in) annotation (Line(points={{-110,0},{-85,0}}, color={28,108,200}));
6461
connect(C_main_out, mainFlow.C_out) annotation (Line(points={{110,0},{85,0}}, color={28,108,200}));
62+
connect(C_in, mainFlow.C_in) annotation (Line(points={{-110,0},{35,0}}, color={28,108,200}));
6563
annotation (Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,80}}),
6664
graphics={Polygon(
6765
points={{-100,20},{-100,-20},{-46,-20},{-8,-60},{10,-60},{-16,-20},{100,-20},{100,20},{-100,20}},
@@ -79,9 +77,5 @@ equation
7977
textColor={28,108,200},
8078
origin={-12,-30},
8179
rotation=270,
82-
textString="extracted"),
83-
Text(
84-
extent={{-74,-18},{-32,-28}},
85-
textColor={28,108,200},
86-
textString="inlet")}));
80+
textString="extracted")}));
8781
end SteamExtractionSplitter;

MetroscopeModelingLibrary/WaterSteam/Volumes/FlashTank.mo

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,24 @@ model FlashTank
44
package WaterSteamMedium = MetroscopeModelingLibrary.Media.WaterSteamMedium;
55

66
import MetroscopeModelingLibrary.Units;
7-
Units.Pressure P(start=10e5);
8-
Units.InletMassFlowRate Q_in;
97

10-
WaterSteam.Connectors.WaterInlet C_in
8+
// Initialization parameters
9+
parameter Units.Pressure P_0 = 10e5;
10+
parameter Units.InletMassFlowRate Q_in_0=500;
11+
12+
Units.Pressure P(start=P_0);
13+
Units.InletMassFlowRate Q_in(start=Q_in_0);
14+
15+
WaterSteam.Connectors.WaterInlet C_in(P(start=P_0), Q(start=Q_in_0))
1116
annotation (Placement(transformation(extent={{-110,30},{-90,50}}),
1217
iconTransformation(extent={{-110,30},{-90,50}})));
13-
WaterSteam.Connectors.WaterOutlet C_hot_steam
18+
WaterSteam.Connectors.WaterOutlet C_hot_steam(P(start=P_0), Q(start=-Q_in_0/2))
1419
annotation (Placement(transformation(extent={{90,30},{110,50}})));
15-
WaterSteam.Connectors.WaterOutlet C_hot_liquid
20+
WaterSteam.Connectors.WaterOutlet C_hot_liquid(P(start=P_0), Q(start=-Q_in_0/2))
1621
annotation (Placement(transformation(extent={{90,-50},{110,-30}})));
17-
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase
22+
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase(P_0=P_0, Q_0=Q_in_0/2)
1823
annotation (Placement(transformation(extent={{26,30},{46,50}})));
19-
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase
24+
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase(P_0=P_0, Q_0=Q_in_0/2)
2025
annotation (Placement(transformation(extent={{26,-50},{46,-30}})));
2126
equation
2227

MetroscopeModelingLibrary/WaterSteam/Volumes/SteamDryer.mo

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,32 @@ model SteamDryer
55

66
import MetroscopeModelingLibrary.Units;
77

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

11-
Units.Pressure P(start=10e5); // Pressure in dryer
12-
Units.InletMassFlowRate Q_in; // Inlet mass flow rate
12+
Units.SpecificEnthalpy h_vap_sat(start=h_vap_sat_0); // Saturated liquid enthalpy
13+
Units.SpecificEnthalpy h_liq_sat(start=h_liq_sat_0); // Saturated steam enthalpy
14+
15+
Units.Pressure P(start=P_0); // Pressure in dryer
16+
Units.InletMassFlowRate Q_in(start=Q_in_0); // Inlet mass flow rate
1317

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

16-
WaterSteam.Connectors.WaterInlet C_in
20+
WaterSteam.Connectors.WaterInlet C_in(P(start=P_0), Q(start=Q_in_0))
1721
annotation (Placement(transformation(extent={{-110,30},{-90,50}}),
1822
iconTransformation(extent={{-110,30},{-90,50}})));
19-
WaterSteam.Connectors.WaterOutlet C_hot_steam
23+
WaterSteam.Connectors.WaterOutlet C_hot_steam(P(start=P_0), Q(start=-Q_in_0/2))
2024
annotation (Placement(transformation(extent={{90,30},{110,50}})));
21-
WaterSteam.Connectors.WaterOutlet C_hot_liquid
25+
WaterSteam.Connectors.WaterOutlet C_hot_liquid(P(start=P_0), Q(start=-Q_in_0/2))
2226
annotation (Placement(transformation(extent={{90,-50},{110,-30}})));
23-
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase
27+
WaterSteam.BaseClasses.WaterIsoPFlowModel steam_phase(P_0=P_0, Q_0=Q_in_0/2)
2428
annotation (Placement(transformation(extent={{26,30},{46,50}})));
25-
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase
29+
WaterSteam.BaseClasses.WaterIsoPFlowModel liquid_phase(P_0=P_0, Q_0=Q_in_0/2)
2630
annotation (Placement(transformation(extent={{26,-50},{46,-30}})));
31+
protected
32+
parameter Units.SpecificEnthalpy h_vap_sat_0 = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P_0));
33+
parameter Units.SpecificEnthalpy h_liq_sat_0 = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P_0));
2734
equation
2835

2936
// Definitions
@@ -39,8 +46,6 @@ equation
3946
// Energy balance
4047
steam_phase.W + liquid_phase.W = 0;
4148

42-
43-
4449
connect(liquid_phase.C_in, C_in) annotation (Line(points={{26,-40},{-40,-40},{
4550
-40,40},{-100,40}},
4651
color={28,108,200}));
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,103 @@
11
within MetroscopeModelingLibrary.WaterSteam;
22
package Volumes
3+
annotation (Icon(graphics={
4+
Rectangle(
5+
lineColor={200,200,200},
6+
fillColor={248,248,248},
7+
fillPattern=FillPattern.HorizontalCylinder,
8+
extent={{-100,-100},{100,100}},
9+
radius=25.0),
10+
Rectangle(
11+
lineColor={128,128,128},
12+
extent={{-100,-100},{100,100}},
13+
radius=25.0),
14+
Rectangle(
15+
extent={{-68,40},{70,-40}},
16+
lineColor={28,108,200},
17+
fillColor={236,238,248},
18+
fillPattern=FillPattern.Solid,
19+
lineThickness=1),
20+
Polygon(
21+
points={{-68,-10},{70,-10},{70,-40},{-68,-40},{-68,-10}},
22+
lineColor={28,108,200},
23+
lineThickness=0.5,
24+
fillColor={79,188,247},
25+
fillPattern=FillPattern.Solid,
26+
pattern=LinePattern.None),
27+
Ellipse(
28+
extent={{-60,22},{-54,16}},
29+
lineThickness=1,
30+
fillColor={79,188,247},
31+
fillPattern=FillPattern.Solid,
32+
pattern=LinePattern.None),
33+
Ellipse(
34+
extent={{-52,10},{-46,4}},
35+
lineThickness=1,
36+
fillColor={79,188,247},
37+
fillPattern=FillPattern.Solid,
38+
pattern=LinePattern.None),
39+
Ellipse(
40+
extent={{-46,26},{-40,20}},
41+
lineThickness=1,
42+
fillColor={79,188,247},
43+
fillPattern=FillPattern.Solid,
44+
pattern=LinePattern.None),
45+
Ellipse(
46+
extent={{-64,0},{-58,-6}},
47+
lineThickness=1,
48+
fillColor={79,188,247},
49+
fillPattern=FillPattern.Solid,
50+
pattern=LinePattern.None),
51+
Ellipse(
52+
extent={{-56,34},{-50,28}},
53+
lineThickness=1,
54+
fillColor={79,188,247},
55+
fillPattern=FillPattern.Solid,
56+
pattern=LinePattern.None),
57+
Ellipse(
58+
extent={{-40,6},{-34,0}},
59+
lineThickness=1,
60+
fillColor={79,188,247},
61+
fillPattern=FillPattern.Solid,
62+
pattern=LinePattern.None),
63+
Ellipse(
64+
extent={{-32,22},{-26,16}},
65+
lineThickness=1,
66+
fillColor={79,188,247},
67+
fillPattern=FillPattern.Solid,
68+
pattern=LinePattern.None),
69+
Ellipse(
70+
extent={{-20,10},{-14,4}},
71+
lineThickness=1,
72+
fillColor={79,188,247},
73+
fillPattern=FillPattern.Solid,
74+
pattern=LinePattern.None),
75+
Ellipse(
76+
extent={{-26,-2},{-20,-8}},
77+
lineThickness=1,
78+
fillColor={79,188,247},
79+
fillPattern=FillPattern.Solid,
80+
pattern=LinePattern.None),
81+
Ellipse(
82+
extent={{-66,14},{-60,8}},
83+
lineThickness=1,
84+
fillColor={79,188,247},
85+
fillPattern=FillPattern.Solid,
86+
pattern=LinePattern.None),
87+
Ellipse(
88+
extent={{0,0},{6,-6}},
89+
lineThickness=1,
90+
fillColor={79,188,247},
91+
fillPattern=FillPattern.Solid,
92+
pattern=LinePattern.None),
93+
Ellipse(
94+
extent={{-48,0},{-42,-6}},
95+
lineThickness=1,
96+
fillColor={79,188,247},
97+
fillPattern=FillPattern.Solid,
98+
pattern=LinePattern.None),
99+
Rectangle(
100+
extent={{-68,40},{70,-40}},
101+
lineColor={28,108,200},
102+
lineThickness=1)}));
3103
end Volumes;

0 commit comments

Comments
 (0)