diff --git a/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_direct.mo b/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_direct.mo index 89276a3b..1838145e 100644 --- a/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_direct.mo +++ b/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_direct.mo @@ -39,8 +39,8 @@ equation evaporator.Kfr_cold = Kfr_cold; connect(flashTank.C_in, evaporator.C_cold_out) annotation (Line(points={{-26,52},{-10.7,52},{-10.7,25.2}}, color={28,108,200})); - connect(flashTank.C_hot_steam, cold_steam_sink.C_in) annotation (Line(points={{-46,52},{-85,52}}, color={28,108,200})); - connect(flashTank.C_hot_liquid, cold_liquid_sink.C_in) annotation (Line(points={{-46,44},{-76,44},{-76,-52},{-83,-52}}, color={28,108,200})); + connect(flashTank.C_steam_out, cold_steam_sink.C_in) annotation (Line(points={{-46,52},{-85,52}}, color={28,108,200})); + connect(flashTank.C_liquid_out, cold_liquid_sink.C_in) annotation (Line(points={{-46,44},{-76,44},{-76,-52},{-83,-52}}, color={28,108,200})); connect(evaporator.C_hot_in, hot_source.C_out) annotation (Line(points={{-26.3,-0.72},{-55.65,-0.72},{-55.65,0},{-85,0}}, color={95,95,95})); connect(evaporator.C_hot_out, hot_sink.C_in) annotation (Line(points={{28.3,-0.72},{45.65,-0.72},{45.65,0},{59,0}}, color={95,95,95})); connect(evaporator.C_cold_in, cold_source.C_out) annotation (Line(points={{12.7,25.2},{12.7,40},{57,40}}, color={28,108,200})); diff --git a/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_reverse.mo b/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_reverse.mo index f65ebc90..da87863d 100644 --- a/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_reverse.mo +++ b/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_noRecirculation_reverse.mo @@ -63,8 +63,8 @@ equation connect(evaporator.C_hot_out, P_hot_out_sensor.C_in) annotation (Line(points={{28.3,-0.72},{36.15,-0.72},{36.15,0},{44,0}}, color={95,95,95})); connect(hot_sink.C_in, P_hot_out_sensor.C_out) annotation (Line(points={{59,0},{52,0}}, color={95,95,95})); connect(cold_liquid_sink.C_in, Q_cold_liquid_out.C_out) annotation (Line(points={{-83,-52},{-50,-52},{-50,-44}}, color={28,108,200})); - connect(flashTank.C_hot_liquid, Q_cold_liquid_out.C_in) annotation (Line(points={{-46,44},{-50,44},{-50,-28}}, color={28,108,200})); - connect(flashTank.C_hot_steam, P_cold_out_sensor.C_in) annotation (Line(points={{-46,52},{-58,52}}, color={28,108,200})); + connect(flashTank.C_liquid_out, Q_cold_liquid_out.C_in) annotation (Line(points={{-46,44},{-50,44},{-50,-28}}, color={28,108,200})); + connect(flashTank.C_steam_out, P_cold_out_sensor.C_in) annotation (Line(points={{-46,52},{-58,52}}, color={28,108,200})); connect(cold_steam_sink.C_in, P_cold_out_sensor.C_out) annotation (Line(points={{-85,52},{-74,52}}, color={28,108,200})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Ellipse( diff --git a/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_withRecirculation_direct.mo b/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_withRecirculation_direct.mo index 3637a93e..177a4d41 100644 --- a/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_withRecirculation_direct.mo +++ b/MetroscopeModelingLibrary/Examples/CCGT/Evaporator_withRecirculation_direct.mo @@ -55,11 +55,11 @@ equation connect(evaporator.C_hot_out, hot_sink.C_in) annotation (Line(points={{28.3,-0.72},{45.65,-0.72},{45.65,0},{59,0}}, color={95,95,95})); connect(cold_source.C_out, flashTank.C_in) annotation (Line(points={{-28,83},{ -28,69.8},{-18,69.8}}, color={28,108,200})); - connect(flashTank.C_hot_steam, cold_steam_sink.C_in) annotation (Line(points={ + connect(flashTank.C_steam_out, cold_steam_sink.C_in) annotation (Line(points={ {16,69.8},{16,68},{48,68},{48,80},{59,80}}, color={28,108,200})); - connect(cold_liquid_sink.C_in, flashTank.C_hot_liquid) + connect(cold_liquid_sink.C_in,flashTank.C_liquid_out) annotation (Line(points={{59,48},{16,48},{16,56.2}}, color={28,108,200})); - connect(flashTank.C_hot_liquid, evaporator.C_cold_in) annotation (Line(points= + connect(flashTank.C_liquid_out, evaporator.C_cold_in) annotation (Line(points= {{16,56.2},{16,25.2},{12.7,25.2}}, color={28,108,200})); connect(evaporator.C_cold_out, pressureCut.C_in) annotation (Line(points={{-10.7, 25.2},{-46,25.2},{-46,34}}, color={28,108,200})); diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/FeedWater/FlashTank_Reheater.mo b/MetroscopeModelingLibrary/Examples/Nuclear/FeedWater/FlashTank_Reheater.mo index ec060c71..8dcfab83 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/FeedWater/FlashTank_Reheater.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/FeedWater/FlashTank_Reheater.mo @@ -90,8 +90,8 @@ equation connect(reheater_to_flash_tank_DP.C_out, flashTank.C_in) annotation (Line(points={{-12.5,10},{-78,10},{-78,-14.6}}, color={63,81,181})); connect(feed_water_pump.C_out, feed_water_sink.C_in) annotation (Line(points={{-69,-80},{-99,-80},{-99,30},{-115,30}}, color={63,81,181})); connect(flash_tank_to_reheater_DP.C_out, dry_reheater.C_hot_in) annotation (Line(points={{73,55.5},{50,55.5},{50,38}}, color={63,81,181})); - connect(flashTank.C_hot_liquid, feed_water_pump.C_in) annotation (Line(points={{-36,-31.4},{-36,-30},{-28,-30},{-28,-80},{-51,-80}}, color={28,108,200})); - connect(flashTank.C_hot_steam, flash_tank_to_reheater_DP.C_in) annotation (Line(points={{-36,-14.6},{112,-14.6},{112,55.5},{100,55.5}}, color={28,108,200})); + connect(flashTank.C_liquid_out, feed_water_pump.C_in) annotation (Line(points={{-36,-31.4},{-36,-30},{-28,-30},{-28,-80},{-51,-80}}, color={28,108,200})); + connect(flashTank.C_steam_out, flash_tank_to_reheater_DP.C_in) annotation (Line(points={{-36,-14.6},{112,-14.6},{112,55.5},{100,55.5}}, color={28,108,200})); connect(feed_water_pump.VRot, feed_water_pump_VRot_sensor.VRot) annotation (Line(points={{-60,-90.8},{-60,-101.84}}, color={0,0,127})); annotation (Diagram(coordinateSystem(extent={{-140,-140},{140,140}})), Icon(coordinateSystem(extent={{-140,-140},{140,140}}), graphics={ Rectangle( diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_direct.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_direct.mo index e4283190..36f77612 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_direct.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_direct.mo @@ -108,8 +108,8 @@ equation connect(superheater_2.C_cold_out, superheated_steam_T_sensor.C_in) annotation (Line(points={{0,48},{-5.55112e-16,48},{-5.55112e-16,54}}, color={28,108,200})); connect(superheated_steam_T_sensor.C_out, superheated_steam_sink.C_in) annotation (Line(points={{0,74},{0,80},{75,80}}, color={28,108,200})); connect(cold_steam_source.C_out, steam_dryer.C_in) annotation (Line(points={{-65,-60},{-56.5,-60},{-56.5,-60.1983},{-45.5,-60.1983}}, color={28,108,200})); - connect(steam_dryer.C_hot_steam, superheater_1.C_cold_in) annotation (Line(points={{-10.5,-60.1983},{0,-60.1983},{0,-28}}, color={28,108,200})); - connect(steam_dryer.C_hot_liquid, dryer_liq_sink.C_in) annotation (Line(points={{-10.5,-75.8016},{-10.5,-74},{-10,-74},{-10,-86},{75,-86}}, color={28,108,200})); + connect(steam_dryer.C_steam_out, superheater_1.C_cold_in) annotation (Line(points={{-10.5,-60.1983},{0,-60.1983},{0,-28}}, color={28,108,200})); + connect(steam_dryer.C_liquid_out, dryer_liq_sink.C_in) annotation (Line(points={{-10.5,-75.8016},{-10.5,-74},{-10,-74},{-10,-86},{75,-86}}, color={28,108,200})); annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-160,-140},{160,140}}), graphics={ Polygon( points={{-156,80},{-156,60},{-156,-62.5},{-156,-80},{-116,-80},{14,-80},{164,-80},{164,80},{14,80},{-116,80},{-156,80}}, diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_reverse.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_reverse.mo index 0d422800..7c829e47 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_reverse.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MainSteam/MoistureSeparatorReheater_reverse.mo @@ -110,8 +110,8 @@ equation connect(superheater_2.C_cold_out, superheated_steam_T_sensor.C_in) annotation (Line(points={{0,48},{-5.55112e-16,48},{-5.55112e-16,54}}, color={28,108,200})); connect(superheated_steam_T_sensor.C_out, superheated_steam_sink.C_in) annotation (Line(points={{0,74},{0,80},{75,80}}, color={28,108,200})); connect(cold_steam_source.C_out, steam_dryer.C_in) annotation (Line(points={{-65,-60},{-56.5,-60},{-56.5,-60.1983},{-45.5,-60.1983}}, color={28,108,200})); - connect(steam_dryer.C_hot_steam, superheater_1.C_cold_in) annotation (Line(points={{-10.5,-60.1983},{0,-60.1983},{0,-28}}, color={28,108,200})); - connect(steam_dryer.C_hot_liquid, dryer_liq_sink.C_in) annotation (Line(points={{-10.5,-75.8016},{-10.5,-74},{-10,-74},{-10,-86},{75,-86}}, color={28,108,200})); + connect(steam_dryer.C_steam_out, superheater_1.C_cold_in) annotation (Line(points={{-10.5,-60.1983},{0,-60.1983},{0,-28}}, color={28,108,200})); + connect(steam_dryer.C_liquid_out, dryer_liq_sink.C_in) annotation (Line(points={{-10.5,-75.8016},{-10.5,-74},{-10,-74},{-10,-86},{75,-86}}, color={28,108,200})); annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-160,-140},{160,140}}), graphics={ Polygon( points={{-156,80},{-156,60},{-156,-62.5},{-156,-80},{-116,-80},{14,-80},{164,-80},{164,80},{14,80},{-116,80},{-156,80}}, diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct.mo index f1abfa00..21f5a0d9 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct.mo @@ -119,8 +119,6 @@ model MetroscopiaNPP_direct MetroscopeModelingLibrary.Sensors.WaterSteam.PressureSensor HPT_P_out_sensor annotation (Placement(transformation(extent={{26,66},{38,78}}))); MetroscopeModelingLibrary.WaterSteam.Volumes.SteamDryer steam_dryer( P_0=1940000, - T_0=483.95, - h_in_0=2.68e6, Q_in_0=1113, Q_liq_0=50) annotation (Placement(transformation(extent={{56,79.8182},{72,97.8182}}))); MetroscopeModelingLibrary.WaterSteam.HeatExchangers.Superheater superheater( @@ -506,8 +504,8 @@ equation connect(HPT_1.C_W_out, generator.C_in) annotation (Line(points={{-61,78.72},{-54,78.72},{-54,168},{315.6,168}}, color={244,125,35})); connect(HPT_1.C_in, HPT_P_in_sensor.C_out) annotation (Line(points={{-79,72},{-94,72}}, color={28,108,200})); connect(HPT_P_out_sensor.C_in, HPT_2.C_out) annotation (Line(points={{26,72},{9,72}}, color={28,108,200})); - connect(steam_dryer.C_in, HPT_P_out_sensor.C_out) annotation (Line(points={{56,91.2727},{56,92},{46,92},{46,72},{38,72}}, color={28,108,200})); - connect(superheater.C_cold_in, steam_dryer.C_hot_steam) annotation (Line(points={{72,104},{72,91.2727}}, color={28,108,200})); + connect(steam_dryer.C_in, HPT_P_out_sensor.C_out) annotation (Line(points={{56,92.4182},{56,92},{46,92},{46,72},{38,72}}, color={28,108,200})); + connect(superheater.C_cold_in,steam_dryer.C_steam_out) annotation (Line(points={{72,104},{72,92.4182}}, color={28,108,200})); connect(superheater.C_hot_out, superheater_drains_P_sensor.C_in) annotation (Line(points={{88,112},{100,112}}, color={28,108,200})); connect(superheater_T_out_sensor.C_in,superheater. C_cold_out) annotation (Line(points={{88,130},{72,130},{72,120}}, color={28,108,200})); connect(superheater_control_valve.C_in, HP_control_valve.C_in) annotation (Line(points={{-136,112.182},{-136,112},{-158,112},{-158,72},{-135,72}}, color={28,108,200})); @@ -533,7 +531,7 @@ equation connect(LPT1.C_out, LP_extract.C_in) annotation (Line(points={{169,130},{185.4,130}}, color={28,108,200})); connect(LPT2.C_in, LP_extract.C_main_out) annotation (Line(points={{221,130},{206.6,130}}, color={28,108,200})); connect(deaerator_inlet_pipe.C_in, LP_heater_T_out_sensor.C_out) annotation (Line(points={{186,-70},{206,-70}}, color={28,108,200})); - connect(steam_dryer.C_hot_liquid, steam_dryer_liq_out_pipe.C_in) annotation (Line(points={{72,84.7273},{72,-34},{142,-34},{142,-40}}, + connect(steam_dryer.C_liquid_out, steam_dryer_liq_out_pipe.C_in) annotation (Line(points={{72,85.2182},{72,-34},{142,-34},{142,-40}}, color={28,108,200})); connect(deaerator_inlet_pipe.C_out, deaerator_outlet_pipe.C_in) annotation (Line(points={{166,-70},{114,-70}}, color={28,108,200})); connect(steam_dryer_liq_out_pipe.C_out, deaerator_outlet_pipe.C_in) annotation (Line(points={{142,-60},{142,-70},{114,-70}}, color={28,108,200})); diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct_withStartValues.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct_withStartValues.mo index e6a4e0f9..d90cbad3 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct_withStartValues.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_direct_withStartValues.mo @@ -2596,114 +2596,6 @@ d(start=777.39557), h(start=1154502.0), p(start=5000000.0), phase(start=0))), -steam_dryer( -C_hot_liquid( -P(start=1940000.0), -Q(start=-53.485546), -h_outflow(start=901606.56)), -C_hot_steam( -P(start=1940000.0), -Q(start=-1059.745), -h_outflow(start=2778769.2)), -C_in( -P(start=1940000.0), -Q(start=1113.2305), -h_outflow(start=0.0)), -P(start=1940000.0), -P_0(start=1940000.0), -Q_in(start=1113.2305), -Q_in_0(start=1113.0), -Q_liq_0(start=50.0), -Q_vap_0(start=1063.0), -T_0(start=483.95), -h_in_0(start=2680000.0), -h_liq_sat(start=901606.56), -h_vap_sat(start=2797730.5), -liquid_phase( -C_in( -P(start=1940000.0), -Q(start=53.485546), -h_outflow(start=0.0)), -C_out( -P(start=1940000.0), -Q(start=-53.485546), -h_outflow(start=901606.56)), -DP(start=0.0), -DP_0(start=0.0), -P(start=1940000.0), -P_0(start=1940000.0), -P_in(start=1940000.0), -P_in_0(start=1940000.0), -P_out(start=1940000.0), -P_out_0(start=1940000.0), -Q(start=53.485546), -Q_0(start=50.0), -T_in(start=484.00024), -T_in_0(start=483.95), -T_out(start=483.99838), -T_out_0(start=483.95), -W(start=-95577256.0), -W_input(start=-95577256.0), -h_in(start=2688580.2), -h_in_0(start=2680000.0), -h_out(start=901606.56), -h_out_0(start=901606.56), -rho(start=431.01202), -state_in( -T(start=484.00024), -d(start=10.33569), -h(start=2688580.2), -p(start=1940000.0), -phase(start=0)), -state_out( -T(start=483.99838), -d(start=851.68835), -h(start=901606.56), -p(start=1940000.0), -phase(start=0))), -steam_phase( -C_in( -P(start=1940000.0), -Q(start=1059.745), -h_outflow(start=0.0)), -C_out( -P(start=1940000.0), -Q(start=-1059.745), -h_outflow(start=2778769.2)), -DP(start=0.0), -DP_0(start=0.0), -P(start=1940000.0), -P_0(start=1940000.0), -P_in(start=1940000.0), -P_in_0(start=1940000.0), -P_out(start=1940000.0), -P_out_0(start=1940000.0), -Q(start=1059.745), -Q_0(start=1063.0), -T_in(start=484.00024), -T_in_0(start=483.95), -T_out(start=484.00034), -T_out_0(start=483.95), -W(start=95577256.0), -W_input(start=95577256.0), -h_in(start=2688580.2), -h_in_0(start=2680000.0), -h_out(start=2778769.2), -h_out_0(start=2797730.5), -rho(start=10.090268), -state_in( -T(start=484.00024), -d(start=10.33569), -h(start=2688580.2), -p(start=1940000.0), -phase(start=0)), -state_out( -T(start=484.00034), -d(start=9.844848), -h(start=2778769.2), -p(start=1940000.0), -phase(start=0))), -x_steam_out(start=0.99)), steam_dryer_liq_out_pipe( C_in( P(start=1940000.0), diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_faulty_withStartValues.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_faulty_withStartValues.mo index 0c4dfb6b..b25820ca 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_faulty_withStartValues.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_faulty_withStartValues.mo @@ -1848,14 +1848,6 @@ state_in( T(start=537.072), h(start=1154502.0))), steam_dryer( -C_hot_liquid( -P(start=1939992.1), -Q(start=-53.48533), -h_outflow(start=901605.6)), -C_hot_steam( -P(start=1939992.1), -Q(start=-1059.7411), -h_outflow(start=2778769.0)), C_in( P(start=1939992.1), Q(start=1113.2264), @@ -1914,7 +1906,15 @@ h(start=2688580.0)), state_out( T(start=484.00012), h(start=2778769.0))), -x_steam_out(start=0.99)), +x_steam_out(start=0.99), +C_steam_out( +P(start=1939992.1), +Q(start=-1059.7411), +h_outflow(start=2778769.0)), +C_liquid_out( +P(start=1939992.1), +Q(start=-53.48533), +h_outflow(start=901605.6))), steam_dryer_liq_out_pipe( C_in( P(start=1939992.1), diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct.mo index 5ac60f91..8c2cffbc 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct.mo @@ -530,7 +530,7 @@ equation connect(HPT_1.C_in, HPT_P_in_sensor.C_out) annotation (Line(points={{-79,72},{-94,72}}, color={28,108,200})); connect(HPT_P_out_sensor.C_in, HPT_2.C_out) annotation (Line(points={{26,72},{9,72}}, color={28,108,200})); connect(steam_dryer.C_in, HPT_P_out_sensor.C_out) annotation (Line(points={{56,91.2727},{56,92},{46,92},{46,72},{38,72}}, color={28,108,200})); - connect(superheater.C_cold_in, steam_dryer.C_hot_steam) annotation (Line(points={{72,104},{72,91.2727}}, color={28,108,200})); + connect(superheater.C_cold_in,steam_dryer.C_steam_out) annotation (Line(points={{72,104},{72,91.2727}}, color={28,108,200})); connect(superheater.C_hot_out, superheater_drains_P_sensor.C_in) annotation (Line(points={{88,112},{100,112}}, color={28,108,200})); connect(superheater_T_out_sensor.C_in,superheater. C_cold_out) annotation (Line(points={{88,130},{72,130},{72,120}}, color={28,108,200})); connect(superheater_control_valve.C_in, HP_control_valve.C_in) annotation (Line(points={{-136,112.182},{-136,112},{-158,112},{-158,72},{-135,72}}, color={28,108,200})); @@ -556,7 +556,7 @@ equation connect(LPT1.C_out, LP_extract.C_in) annotation (Line(points={{169,130},{185.4,130}}, color={28,108,200})); connect(LPT2.C_in, LP_extract.C_main_out) annotation (Line(points={{221,130},{206.6,130}}, color={28,108,200})); connect(deaerator_inlet_pipe.C_in, LP_heater_T_out_sensor.C_out) annotation (Line(points={{186,-70},{206,-70}}, color={28,108,200})); - connect(steam_dryer.C_hot_liquid, steam_dryer_liq_out_pipe.C_in) annotation (Line(points={{72,84.7273},{72,-34},{142,-34},{142,-40}}, + connect(steam_dryer.C_liquid_out, steam_dryer_liq_out_pipe.C_in) annotation (Line(points={{72,84.7273},{72,-34},{142,-34},{142,-40}}, color={28,108,200})); connect(deaerator_inlet_pipe.C_out, deaerator_outlet_pipe.C_in) annotation (Line(points={{166,-70},{114,-70}}, color={28,108,200})); connect(steam_dryer_liq_out_pipe.C_out, deaerator_outlet_pipe.C_in) annotation (Line(points={{142,-60},{142,-70},{114,-70}}, color={28,108,200})); diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct_withStartValues.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct_withStartValues.mo index 483f4b81..d7689daf 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct_withStartValues.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_internal_ramp_direct_withStartValues.mo @@ -2597,14 +2597,6 @@ h(start=1154502.0), p(start=5000000.0), phase(start=0))), steam_dryer( -C_hot_liquid( -P(start=1940000.0), -Q(start=-53.485546), -h_outflow(start=901606.56)), -C_hot_steam( -P(start=1940000.0), -Q(start=-1059.745), -h_outflow(start=2778769.2)), C_in( P(start=1940000.0), Q(start=1113.2305), @@ -2703,7 +2695,15 @@ d(start=9.844848), h(start=2778769.2), p(start=1940000.0), phase(start=0))), -x_steam_out(start=0.99)), +x_steam_out(start=0.99), +C_steam_out( +P(start=1940000.0), +Q(start=-1059.745), +h_outflow(start=2778769.2)), +C_liquid_out( +P(start=1940000.0), +Q(start=-53.485546), +h_outflow(start=901606.56))), steam_dryer_liq_out_pipe( C_in( P(start=1940000.0), diff --git a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_reverse.mo b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_reverse.mo index d0289793..b23c22e1 100644 --- a/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_reverse.mo +++ b/MetroscopeModelingLibrary/Examples/Nuclear/MetroscopiaNPP/MetroscopiaNPP_reverse.mo @@ -40,7 +40,7 @@ model MetroscopiaNPP_reverse input Real LP_reheater_drains_control_valve_opening(start=0.15); // Feedwater pump input Real HP_pump_P_out(start=59, unit="bar", min=0, nominal=70) "barA"; - input Real HP_pump_T_out(start=80, unit="degC", min=0, nominal=20) "degC"; + input Real HP_pump_T_out(start=84, unit="degC", min=0, nominal=20) "degC"; // HP Reheater input Real HP_heater_P_out(start=58, min=0, nominal=50) "bar"; input Real HP_heater_T_out(start=210, min=0, nominal=100) "degC"; @@ -311,7 +311,7 @@ equation // Feedwater pump // Quantities definitions - HP_pump_T_out_sensor.T_degC = HP_pump_T_out; + HP_pump_T_out_sensor.T_degC = feedwater_pump.T_in + 3 + 273.15; HP_pump_P_out_sensor.P_barA = HP_pump_P_out; // Parameters @@ -363,8 +363,8 @@ equation connect(HPT_1.C_W_out, generator.C_in) annotation (Line(points={{-61,78.72},{-54,78.72},{-54,168},{315.6,168}}, color={244,125,35})); connect(HPT_1.C_in, HPT_P_in_sensor.C_out) annotation (Line(points={{-79,72},{-94,72}}, color={28,108,200})); connect(HPT_P_out_sensor.C_in, HPT_2.C_out) annotation (Line(points={{26,72},{9,72}}, color={28,108,200})); - connect(steam_dryer.C_in, HPT_P_out_sensor.C_out) annotation (Line(points={{56,91.2727},{56,92},{46,92},{46,72},{38,72}}, color={28,108,200})); - connect(superheater.C_cold_in, steam_dryer.C_hot_steam) annotation (Line(points={{72,104},{72,91.2727}}, color={28,108,200})); + connect(steam_dryer.C_in, HPT_P_out_sensor.C_out) annotation (Line(points={{56,92.4182},{56,92},{46,92},{46,72},{38,72}}, color={28,108,200})); + connect(superheater.C_cold_in,steam_dryer.C_steam_out) annotation (Line(points={{72,104},{72,92.4182}}, color={28,108,200})); connect(superheater.C_hot_out, superheater_drains_P_sensor.C_in) annotation (Line(points={{88,112},{100,112}}, color={28,108,200})); connect(superheater_T_out_sensor.C_in,superheater. C_cold_out) annotation (Line(points={{88,130},{72,130},{72,120}}, color={28,108,200})); connect(superheater_control_valve.C_in, HP_control_valve.C_in) annotation (Line(points={{-136,112.182},{-136,112},{-158,112},{-158,72},{-135,72}}, color={28,108,200})); @@ -390,7 +390,7 @@ equation connect(LPT1.C_out, LP_extract.C_in) annotation (Line(points={{169,130},{185.4,130}}, color={28,108,200})); connect(LPT2.C_in, LP_extract.C_main_out) annotation (Line(points={{221,130},{206.6,130}}, color={28,108,200})); connect(deaerator_inlet_pipe.C_in, LP_heater_T_out_sensor.C_out) annotation (Line(points={{186,-70},{206,-70}}, color={28,108,200})); - connect(steam_dryer.C_hot_liquid, steam_dryer_liq_out_pipe.C_in) annotation (Line(points={{72,84.7273},{72,-34},{142,-34},{142,-40}}, + connect(steam_dryer.C_liquid_out, steam_dryer_liq_out_pipe.C_in) annotation (Line(points={{72,85.2182},{72,-34},{142,-34},{142,-40}}, color={28,108,200})); connect(deaerator_inlet_pipe.C_out, deaerator_outlet_pipe.C_in) annotation (Line(points={{166,-70},{114,-70}}, color={28,108,200})); connect(steam_dryer_liq_out_pipe.C_out, deaerator_outlet_pipe.C_in) annotation (Line(points={{142,-60},{142,-70},{114,-70}}, color={28,108,200})); diff --git a/MetroscopeModelingLibrary/Partial/Volumes/PhaseSeparationVolume.mo b/MetroscopeModelingLibrary/Partial/Volumes/PhaseSeparationVolume.mo new file mode 100644 index 00000000..740c7c13 --- /dev/null +++ b/MetroscopeModelingLibrary/Partial/Volumes/PhaseSeparationVolume.mo @@ -0,0 +1,149 @@ +within MetroscopeModelingLibrary.Partial.Volumes; +model PhaseSeparationVolume + + package WaterSteamMedium = MetroscopeModelingLibrary.Media.WaterSteamMedium; + + import MetroscopeModelingLibrary.Units; + + // Initialization parameters + parameter Units.Pressure P_0 = 10e5; + parameter Units.PositiveMassFlowRate Q_in_0=500; + parameter Units.PositiveMassFlowRate Q_liq_0 = 0.5*Q_in_0; + parameter Units.PositiveMassFlowRate Q_vap_0 = Q_in_0 - Q_liq_0; + + // Inlet + Units.Pressure P(start=P_0); + Units.PositiveMassFlowRate Q_in(start=Q_in_0); + + // Saturation + Units.SpecificEnthalpy h_vap_sat(start=h_vap_sat_0); + Units.SpecificEnthalpy h_liq_sat(start=h_liq_sat_0); + + // Outlet + Units.MassFraction x_steam_out(start=1); // Steam mass fraction at steam outlet + + WaterSteam.Connectors.Inlet 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.Outlet C_steam_out( + P(start=P_0), + Q(start=-Q_vap_0), + h_outflow(start=h_vap_sat_0)) annotation (Placement(transformation(extent={{90,30},{110,50}}))); + WaterSteam.Connectors.Outlet C_liquid_out( + P(start=P_0), + Q(start=-Q_liq_0), + h_outflow(start=h_liq_sat_0)) annotation (Placement(transformation(extent={{90,-50},{110,-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 + // Inlet + C_in.h_outflow = 0; + + // Definitions + P = C_in.P; + Q_in = C_in.Q; + h_vap_sat = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P)); + h_liq_sat = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P)); + + // Balances + Q_in * inStream(C_in.h_outflow) + C_steam_out.Q * C_steam_out.h_outflow + C_liquid_out.Q * C_liquid_out.h_outflow = 0; // Energy balance + Q_in + C_steam_out.Q + C_liquid_out.Q = 0; // Mass balance + + // Outlet + C_steam_out.P = P; + C_liquid_out.P = P; + + C_steam_out.h_outflow = x_steam_out * h_vap_sat + (1-x_steam_out)*h_liq_sat; + C_liquid_out.h_outflow = h_liq_sat; + + annotation (Icon(graphics={ + Rectangle( + extent={{-100,40},{100,-40}}, + lineColor={28,108,200}, + fillColor={236,238,248}, + fillPattern=FillPattern.Solid, + lineThickness=1), + Polygon( + points={{-100,-10},{100,-10},{100,-40},{-100,-40},{-100,-10}}, + lineColor={28,108,200}, + lineThickness=0.5, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-88,22},{-82,16}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-80,10},{-74,4}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-74,26},{-68,20}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-92,0},{-86,-6}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-84,34},{-78,28}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-68,6},{-62,0}}, + lineThickness=1, + 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={{-48,10},{-42,4}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-54,-2},{-48,-8}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-94,14},{-88,8}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-28,0},{-22,-6}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-76,0},{-70,-6}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Rectangle( + extent={{-100,40},{100,-40}}, + lineColor={28,108,200}, + lineThickness=1)})); +end PhaseSeparationVolume; diff --git a/MetroscopeModelingLibrary/Partial/Volumes/package.mo b/MetroscopeModelingLibrary/Partial/Volumes/package.mo new file mode 100644 index 00000000..4487ca46 --- /dev/null +++ b/MetroscopeModelingLibrary/Partial/Volumes/package.mo @@ -0,0 +1,121 @@ +within MetroscopeModelingLibrary.Partial; +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), + Ellipse( + extent={{-80,82},{80,-78}}, + lineColor={215,215,215}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-55,57},{55,-53}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-38,44},{40,-36}}, + lineColor={28,108,200}, + fillColor={236,238,248}, + fillPattern=FillPattern.Solid, + lineThickness=1), + Polygon( + points={{-38,-6},{40,-6},{40,-36},{-38,-36},{-38,-6}}, + lineColor={28,108,200}, + lineThickness=0.5, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-30,28},{-24,22}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-22,16},{-16,10}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-16,32},{-10,26}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-34,6},{-28,0}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-26,40},{-20,34}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-10,12},{-4,6}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-2,28},{4,22}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{10,16},{16,10}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{4,4},{10,-2}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-36,20},{-30,14}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{30,6},{36,0}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Ellipse( + extent={{-18,6},{-12,0}}, + lineThickness=1, + fillColor={79,188,247}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Rectangle( + extent={{-38,44},{40,-36}}, + lineColor={28,108,200}, + lineThickness=1), + Rectangle( + extent={{-60,14},{60,-14}}, + lineColor={215,215,215}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + rotation=45, + origin={0,2})})); +end Volumes; diff --git a/MetroscopeModelingLibrary/Partial/Volumes/package.order b/MetroscopeModelingLibrary/Partial/Volumes/package.order new file mode 100644 index 00000000..15c0ae34 --- /dev/null +++ b/MetroscopeModelingLibrary/Partial/Volumes/package.order @@ -0,0 +1 @@ +PhaseSeparationVolume diff --git a/MetroscopeModelingLibrary/Partial/package.order b/MetroscopeModelingLibrary/Partial/package.order index ff344d83..770bfb72 100644 --- a/MetroscopeModelingLibrary/Partial/package.order +++ b/MetroscopeModelingLibrary/Partial/package.order @@ -6,3 +6,4 @@ Sensors Pipes Machines HeatExchangers +Volumes diff --git a/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/FlashTank.mo b/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/FlashTank.mo index 6c164dbc..65e9ecb6 100644 --- a/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/FlashTank.mo +++ b/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/FlashTank.mo @@ -16,10 +16,7 @@ equation source.Q_out = Q_source; source.h_out = h_source; - 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) - annotation (Line(points={{28,12},{61,12}}, color={28,108,200})); - connect(flashTank.C_hot_liquid, liquid_sink.C_in) - annotation (Line(points={{28,-12},{61,-12}}, color={28,108,200})); + connect(source.C_out, flashTank.C_in) annotation (Line(points={{-65,12},{-32,12}}, color={28,108,200})); + connect(flashTank.C_steam_out, steam_sink.C_in) annotation (Line(points={{28,12},{61,12}}, color={28,108,200})); + connect(flashTank.C_liquid_out, liquid_sink.C_in) annotation (Line(points={{28,-12},{61,-12}}, color={28,108,200})); end FlashTank; diff --git a/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/SteamDryer.mo b/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/SteamDryer.mo index 4934e851..71e62a4c 100644 --- a/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/SteamDryer.mo +++ b/MetroscopeModelingLibrary/Tests/WaterSteam/Volumes/SteamDryer.mo @@ -24,10 +24,10 @@ equation // Component parameters steamDryer.x_steam_out = x_steam_out; - connect(steamDryer.C_in, source.C_out) annotation (Line(points={{-32,12.1818},{-32,12},{-65,12}}, + connect(steamDryer.C_in, source.C_out) annotation (Line(points={{-32,16},{-32,12},{-65,12}}, color={28,108,200})); - connect(steamDryer.C_hot_steam, steam_sink.C_in) annotation (Line(points={{28,12.1818},{28,12},{61,12}}, + connect(steamDryer.C_steam_out, steam_sink.C_in) annotation (Line(points={{28,16},{28,12},{61,12}}, color={28,108,200})); - connect(steamDryer.C_hot_liquid, liquid_sink.C_in) annotation (Line(points={{28,-9.63636},{28,-8},{52,-8},{52,-40},{61,-40}}, + connect(steamDryer.C_liquid_out, liquid_sink.C_in) annotation (Line(points={{28,-8},{28,-8},{52,-8},{52,-40},{61,-40}}, color={28,108,200})); end SteamDryer; diff --git a/MetroscopeModelingLibrary/WaterSteam/Volumes/FlashTank.mo b/MetroscopeModelingLibrary/WaterSteam/Volumes/FlashTank.mo index 6e3fab07..3a165c0c 100644 --- a/MetroscopeModelingLibrary/WaterSteam/Volumes/FlashTank.mo +++ b/MetroscopeModelingLibrary/WaterSteam/Volumes/FlashTank.mo @@ -1,152 +1,6 @@ within MetroscopeModelingLibrary.WaterSteam.Volumes; model FlashTank - - package WaterSteamMedium = MetroscopeModelingLibrary.Media.WaterSteamMedium; - - import MetroscopeModelingLibrary.Units; - - // Initialization parameters - parameter Units.Pressure P_0 = 10e5; - parameter Units.Temperature T_0 = 273.15 + 180; - parameter Units.SpecificEnthalpy h_in_0 = 2e6; - parameter Units.PositiveMassFlowRate Q_in_0=500; - parameter Units.PositiveMassFlowRate Q_liq_0 = 0.5*Q_in_0; - parameter Units.PositiveMassFlowRate Q_vap_0 = Q_in_0 - Q_liq_0; - - - Units.Pressure P(start=P_0); - Units.PositiveMassFlowRate Q_in(start=Q_in_0); - - Connectors.Inlet 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}}))); - Connectors.Outlet C_hot_steam(P(start=P_0), Q(start=-Q_vap_0), - h_outflow(start=h_vap_sat_0)) annotation (Placement(transformation(extent={{90,30},{110,50}}))); - Connectors.Outlet C_hot_liquid(P(start=P_0), Q(start=-Q_liq_0), - h_outflow(start=h_liq_sat_0)) annotation (Placement(transformation(extent={{90,-50},{110,-30}}))); - BaseClasses.IsoPFlowModel steam_phase( - T_in_0=T_0, - T_out_0=T_0, - h_in_0=h_in_0, - h_out_0=h_vap_sat_0, P_0=P_0, - Q_0=Q_vap_0) annotation (Placement(transformation(extent={{26,30},{46,50}}))); - BaseClasses.IsoPFlowModel liquid_phase( - T_in_0=T_0, - T_out_0=T_0, - h_in_0=h_in_0, - h_out_0=h_liq_sat_0, P_0=P_0, - Q_0=Q_liq_0) 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)); - + extends Partial.Volumes.PhaseSeparationVolume; equation - - // Definitions - P = C_in.P; - Q_in = steam_phase.Q + liquid_phase.Q; - - // Saturation at both outlets - steam_phase.h_out = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P)); - liquid_phase.h_out = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P)); - - // Energy balance - steam_phase.W + liquid_phase.W = 0; - - connect(steam_phase.C_in, C_in) - annotation (Line(points={{26,40},{-100,40}}, color={28,108,200})); - connect(steam_phase.C_out, C_hot_steam) - annotation (Line(points={{46,40},{100,40}}, color={28,108,200})); - connect(liquid_phase.C_out, C_hot_liquid) - annotation (Line(points={{46,-40},{100,-40}}, color={28,108,200})); - connect(liquid_phase.C_in, C_in) annotation (Line(points={{26,-40},{-28,-40}, - {-28,40},{-100,40}}, color={28,108,200})); - annotation (Icon(graphics={ - Rectangle( - extent={{-100,40},{100,-40}}, - lineColor={28,108,200}, - fillColor={236,238,248}, - fillPattern=FillPattern.Solid, - lineThickness=1), - Polygon( - points={{-100,-10},{100,-10},{100,-40},{-100,-40},{-100,-10}}, - lineColor={28,108,200}, - lineThickness=0.5, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-88,22},{-82,16}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-80,10},{-74,4}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-74,26},{-68,20}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-92,0},{-86,-6}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-84,34},{-78,28}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-68,6},{-62,0}}, - lineThickness=1, - 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={{-48,10},{-42,4}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-54,-2},{-48,-8}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-94,14},{-88,8}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-28,0},{-22,-6}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Ellipse( - extent={{-76,0},{-70,-6}}, - lineThickness=1, - fillColor={79,188,247}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), - Rectangle( - extent={{-100,40},{100,-40}}, - lineColor={28,108,200}, - lineThickness=1)})); + x_steam_out = 1; end FlashTank; diff --git a/MetroscopeModelingLibrary/WaterSteam/Volumes/SteamDryer.mo b/MetroscopeModelingLibrary/WaterSteam/Volumes/SteamDryer.mo index 39a075a7..3e1d8476 100644 --- a/MetroscopeModelingLibrary/WaterSteam/Volumes/SteamDryer.mo +++ b/MetroscopeModelingLibrary/WaterSteam/Volumes/SteamDryer.mo @@ -1,77 +1,12 @@ within MetroscopeModelingLibrary.WaterSteam.Volumes; model SteamDryer + extends Partial.Volumes.PhaseSeparationVolume annotation(IconMap(primitivesVisible=false)); + import MetroscopeModelingLibrary.Units.Inputs; - package WaterSteamMedium = MetroscopeModelingLibrary.Media.WaterSteamMedium; - - import MetroscopeModelingLibrary.Units; - - - - 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.PositiveMassFlowRate Q_in(start=Q_in_0); - // Inlet mass flow rate - - Units.MassFraction x_steam_out(start=1); // Steam mass fraction at steam outlet - - // Initialization parameters - parameter Units.Pressure P_0 = 10e5; - parameter Units.Temperature T_0 = 273.15 + 180; - parameter Units.SpecificEnthalpy h_in_0 = 2e6; - parameter Units.PositiveMassFlowRate Q_in_0=500; - parameter Units.PositiveMassFlowRate Q_liq_0 = 0.5*Q_in_0; - parameter Units.PositiveMassFlowRate Q_vap_0 = Q_in_0 - Q_liq_0; - - - Connectors.Inlet 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}}))); - Connectors.Outlet C_hot_steam(P(start=P_0), Q(start=-Q_vap_0), - h_outflow(start=h_vap_sat_0)) annotation (Placement(transformation(extent={{90,30},{110,50}}))); - Connectors.Outlet C_hot_liquid(P(start=P_0), Q(start=-Q_liq_0), - h_outflow(start=h_liq_sat_0)) annotation (Placement(transformation(extent={{90,-50},{110,-30}}))); - BaseClasses.IsoPFlowModel steam_phase( - T_in_0=T_0, - T_out_0=T_0, - h_in_0=h_in_0, - h_out_0=h_vap_sat_0, P_0=P_0, - Q_0=Q_vap_0) annotation (Placement(transformation(extent={{26,30},{46,50}}))); - BaseClasses.IsoPFlowModel liquid_phase( - T_in_0=T_0, - T_out_0=T_0, - h_in_0=h_in_0, - h_out_0=h_liq_sat_0, P_0=P_0, - Q_0=Q_liq_0) 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)); + Inputs.InputMassFraction x_steam_outlet(start=0.99); equation - - // Definitions - P = C_in.P; - Q_in = steam_phase.Q + liquid_phase.Q; - - // Saturation at both outlets - h_vap_sat = WaterSteamMedium.dewEnthalpy(WaterSteamMedium.setSat_p(P)); - h_liq_sat = WaterSteamMedium.bubbleEnthalpy(WaterSteamMedium.setSat_p(P)); - steam_phase.h_out = x_steam_out * h_vap_sat + (1-x_steam_out)*h_liq_sat; - liquid_phase.h_out = h_liq_sat; - - // 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})); - connect(steam_phase.C_in, C_in) annotation (Line(points={{26,40},{-40,40},{-40, - 40},{-100,40}}, - color={28,108,200})); - connect(steam_phase.C_out,C_hot_steam) - annotation (Line(points={{46,40},{100,40}}, color={28,108,200})); - connect(liquid_phase.C_out,C_hot_liquid) - annotation (Line(points={{46,-40},{100,-40}}, color={28,108,200})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, - {100,120}}), graphics={ + x_steam_out = x_steam_outlet; + annotation (Icon(graphics={ Rectangle( extent={{-100,40},{100,-40}}, lineColor={0,0,0}, @@ -182,6 +117,5 @@ equation Rectangle( extent={{-100,40},{100,-40}}, lineColor={64,82,185}, - lineThickness=1)}), Diagram( - coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,120}}))); + lineThickness=1)})); end SteamDryer; diff --git a/MetroscopeModelingLibrary/WaterSteam/Volumes/package.order b/MetroscopeModelingLibrary/WaterSteam/Volumes/package.order index ef0b513a..60adaf93 100644 --- a/MetroscopeModelingLibrary/WaterSteam/Volumes/package.order +++ b/MetroscopeModelingLibrary/WaterSteam/Volumes/package.order @@ -1,2 +1,2 @@ -FlashTank SteamDryer +FlashTank