From cdf9ddbc0bcdb301a3026c032419bb117fae250b Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 15 Jun 2022 17:59:09 -0700 Subject: [PATCH 001/183] created package for DHW system models --- Buildings/Experimental/DHC/Loads/Heating.mo | 29 +++++++++++++++++++ .../Experimental/DHC/Loads/package.order | 1 + 2 files changed, 30 insertions(+) create mode 100644 Buildings/Experimental/DHC/Loads/Heating.mo diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo new file mode 100644 index 00000000000..dbfeeb4db1e --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -0,0 +1,29 @@ +within Buildings.Experimental.DHC.Loads; +package Heating "Package of models for district heating loads" + extends Modelica.Icons.Package; + package DHW "Package of models for DHW loads served by district heating" + extends Modelica.Icons.Package; + package BaseClasses + "Package with base classes that are used by multiple models" + extends Modelica.Icons.BasesPackage; + + annotation (Documentation(info=" +

+This package contains base classes that are used to construct the classes in + +Buildings.Experimental.DHC.Loads.Heating.DHW. +

+")); + end BaseClasses; + annotation (preferredView="info", Documentation(info=" +

+This package contains models for building domestic hot water loads served by a district heating network. +

+")); + end DHW; +annotation (preferredView="info", Documentation(info=" +

+This package contains models for building heating loads served by a district network. +

+")); +end Heating; diff --git a/Buildings/Experimental/DHC/Loads/package.order b/Buildings/Experimental/DHC/Loads/package.order index 69fcd99f443..e871dd4a8ee 100644 --- a/Buildings/Experimental/DHC/Loads/package.order +++ b/Buildings/Experimental/DHC/Loads/package.order @@ -1,2 +1,3 @@ Combined +Heating BaseClasses From 2bb3064b6a80f513cf9747a9e0b4fd9125562de6 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 16 Jun 2022 11:05:25 -0700 Subject: [PATCH 002/183] added domestic water fixture base class with thermostatic mixing valve --- Buildings/Experimental/DHC/Loads/Heating.mo | 275 ++++++++++++++++++++ 1 file changed, 275 insertions(+) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index dbfeeb4db1e..4970d98173e 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -7,6 +7,281 @@ package Heating "Package of models for district heating loads" "Package with base classes that are used by multiple models" extends Modelica.Icons.BasesPackage; + model DomesticWaterFixture + "Thermostatic mixing valve and hot water fixture with representative annual load profile" + replaceable package Medium = Buildings.Media.Water "Medium model for water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal + "Design domestic hot water supply flow rate of system"; + parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 + "Temperature setpoint of tempered doemstic hot water outlet"; + Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = + Medium) "Domestic hot water supply port" annotation ( + Placement(transformation(extent={{-210,30},{-190,50}}), + iconTransformation(extent={{-210,30},{-190,50}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{72,10},{52,30}}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw(tableOnFile=true, + table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; + 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; + 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600* + 17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; + 3600*23,0.3; 3600*24,0.1], + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource( + "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{130,10},{110,30}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dcw(redeclare package Medium = + Medium) "Domestic cold water supply port" annotation ( + Placement(transformation(extent={{-210,-50},{-190,-30}}), + iconTransformation(extent={{-210,-50},{-190,-30}}))); + DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet=TDhwSet, + mDhw_flow_nominal=mDhw_flow_nominal) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Blocks.Continuous.Integrator watCon "Integrated hot water consumption" + annotation (Placement(transformation(extent={{110,-50},{130,-30}}))); + Modelica.Blocks.Math.Gain neg(k=-1) + annotation (Placement(transformation(extent={{52,-50},{72,-30}}))); + Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{180,20},{220,60}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" + annotation (Placement(transformation(extent={{180,-60},{220,-20}}), + iconTransformation(extent={{180,-60},{220,-20}}))); + equation + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51,20},{0,20},{0, + -12},{-28,-12}}, color={0,0,127})); + connect(schDhw.y[1], gaiDhw.u) + annotation (Line(points={{109,20},{74,20}}, color={0,0,127})); + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{-90,0},{-70,0},{-70,-20},{-50,-20}}, + color={0,127,255})); + connect(tmv.port_hw, port_dhw) annotation (Line(points={{-110,6},{-150,6},{-150, + 40},{-200,40}}, color={0,127,255})); + connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, + -40},{-200,-40}}, color={0,127,255})); + connect(neg.y, watCon.u) annotation (Line(points={{73,-40},{108,-40}}, + color={0,0,127})); + connect(gaiDhw.y, neg.u) annotation (Line(points={{51,20},{0,20},{0,-40},{50,-40}}, + color={0,0,127})); + connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{131,-40},{200,-40}}, color={0,0,127})); + annotation (Documentation(info=" +

+This is a single zone model based on the envelope of the BESTEST Case 600 +building, though it has some modifications. Supply and return air ports are +included for simulation with air-based HVAC systems. Heating and cooling +setpoints and internal loads are time-varying according to an assumed +occupancy schedule. +

+

+This zone model utilizes schedules and constructions from +the Schedules and Constructions packages. +

+", revisions=" + +"),Diagram(coordinateSystem(extent={{-200,-200},{200,200}})), + Icon(coordinateSystem(extent={{-200,-200},{200,200}}))); + end DomesticWaterFixture; + + model DomesticWaterMixer "A model for a domestic water mixer" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; + Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = + Medium) "Port for tempered water outlet" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Buildings.Controls.Continuous.LimPID conPID( + controllerType=Modelica.Blocks.Types.SimpleController.PI, + k=2, + Ti=15, + reset=Buildings.Types.Reset.Parameter) + annotation (Placement(transformation(extent={{40,40},{20,60}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" + annotation (Placement(transformation(extent={{80,40},{60,60}}))); + IdealValve ideValHea(redeclare package Medium = Medium, final m_flow_nominal= + mDhw_flow_nominal) "Ideal valve" annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=-90, + origin={0,6}))); + Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = + Medium) "Port for hot water supply" + annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = + Medium) "Port for domestic cold water supply" + annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); + Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = + Medium) "Mass flow rate of domestic hot water" + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Modelica.Blocks.Logical.GreaterThreshold greaterThreshold + annotation (Placement(transformation(extent={{54,22},{44,32}}))); + equation + connect(conTSetCon.y, conPID.u_s) + annotation (Line(points={{59,50},{42,50}}, color={0,0,127})); + connect(senTemTw.T, conPID.u_m) + annotation (Line(points={{30,11},{30,38}}, color={0,0,127})); + connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{9.8,-1.77636e-15}, + {20,-1.77636e-15},{20,0}}, color={0,127,255})); + connect(conPID.y, ideValHea.y) annotation (Line(points={{19,50},{1.9984e-15,50}, + {1.9984e-15,17}}, color={0,0,127})); + connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,20},{90,20},{90, + 80},{110,80}}, color={0,0,127})); + connect(ideValHea.port_1, senTemHw.port_b) + annotation (Line(points={{-9.8,0},{-20,0}}, color={0,127,255})); + connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-54,0},{-54, + 60},{-100,60}}, color={0,127,255})); + connect(ideValHea.port_3, senTemCw.port_b) + annotation (Line(points={{0,-4},{0,-60},{-20,-60}}, color={0,127,255})); + connect(senTemCw.port_a, port_cw) + annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); + connect(senTemTw.port_b, senFloDhw.port_a) + annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); + connect(senFloDhw.port_b, port_tw) + annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); + connect(greaterThreshold.u, senFloDhw.m_flow) + annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); + connect(greaterThreshold.y, conPID.trigger) + annotation (Line(points={{43.5,27},{38,27},{38,38}}, color={255,0,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end DomesticWaterMixer; + + model IdealValve "Ideal three-way valve" + extends Modelica.Blocks.Icons.Block; + replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" + annotation (choicesAllMatching = true); + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal + "Design chilled water supply flow"; + parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; + Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium = + Medium) annotation (Placement(transformation(extent={{50,88}, + {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium = + Medium) annotation (Placement(transformation(extent={{50,-108}, + {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium = + Medium) annotation (Placement(transformation(extent={{90,-10}, + {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); + Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( + transformation(extent={{-120,-10},{-100,10}}), + iconTransformation(extent={{-120,-10},{-100,10}}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = + Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( + Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={0,-40}))); + Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( + redeclare package Medium = Medium, + control_m_flow=true, + control_dp=false, + m_flow_small=m_flow_nominal*1E-5, + show_V_flow=false, + allowFlowReversal=false) "Prescribed mass flow rate for the bypass" + annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=180, + origin={50,0}))); + Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" + annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); + Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" + annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); + Modelica.Blocks.Math.Feedback feedback + annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); + Modelica.Blocks.Logical.Switch fraSwi + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" + annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); + Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + equation + connect(feedback.u1, one.y) + annotation (Line(points={{-58,22},{-69,22}}, + color={0,0,127})); + connect(y, feedback.u2) + annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); + connect(preMasFlo.port_a, port_3) + annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, + 0}}, color={0,127,255})); + connect(feedback.y, pro.u1) + annotation (Line(points={{-41,22},{-30,22}}, + color={0,0,127})); + connect(pro.y, preMasFlo.m_flow_in) + annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); + connect(port_1, senMasFlo.port_a) + annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, + -30}}, color={0,127,255})); + connect(senMasFlo.port_b, port_2) + annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, + -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); + connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, + 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, + color={0,127,255})); + connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, + {-60,-12},{-42,-12}}, color={0,0,127})); + connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, + {-42,-28}}, color={0,0,127})); + connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, + {-40,0},{-40,10},{-30,10}}, color={0,0,127})); + connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, + {-42,-20}}, color={255,0,255})); + annotation ( + Icon( + graphics={ + Polygon( + points={{60,0},{68,14},{52,14},{60,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line(points={{60,100},{60,-100}}, color={28,108,200}), + Line(points={{102,0},{62,0}}, color={28,108,200}), + Polygon( + points={{60,0},{68,-14},{52,-14},{60,0}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line(points={{62,0},{-98,0}}, color={0,0,0}), + Rectangle( + visible=use_inputFilter, + extent={{28,-10},{46,10}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Polygon( + points={{72,-8},{72,8},{60,0},{72,-8}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid)})); + end IdealValve; annotation (Documentation(info="

This package contains base classes that are used to construct the classes in From 540e8fc6257ecac95d3665a2f5b66603db79727c Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 16 Jun 2022 11:06:12 -0700 Subject: [PATCH 003/183] added data for typical DHW load profile in single apartment unit --- .../Loads/Heating/DHW/DHW_SingleApartment.mos | 50856 ++++++++++++++++ 1 file changed, 50856 insertions(+) create mode 100644 Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos diff --git a/Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos b/Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos new file mode 100644 index 00000000000..8bd0ec121de --- /dev/null +++ b/Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos @@ -0,0 +1,50856 @@ +#1 +double tab1(50854,2) # comment line +0,0 +2034,0 +2034,0.1410682 +2130,0.1410682 +2130,0 +2148,0 +2148,0.0076946288 +2262,0.0076946288 +2262,0 +2268,0 +2268,0.19779722 +2322,0.19779722 +2322,0 +2382,0 +2382,0.094749547 +2400,0.094749547 +2400,0 +24660,0 +24660,0.35621605 +24996,0.35621605 +24996,0 +26490,0 +26490,0.44719372 +27822,0.44719372 +27822,0 +28632,0 +28632,0.13820157 +28638,0.13820157 +28638,0 +28746,0 +28746,0.251207 +28764,0.251207 +28764,0 +30240,0 +30240,0.36707906 +30258,0.36707906 +30258,0 +30372,0 +30372,0.18482197 +30414,0.18482197 +30414,0 +31560,0 +31560,0.73491249 +31620,0.093240797 +31620,0 +31638,0 +31638,0.093240797 +31710,0.73491249 +31710,0 +31734,0 +31734,0.32830416 +31746,0.32830416 +31746,0 +33624,0 +33624,0.27700664 +33630,0.27700664 +33630,0 +34554,0 +34554,0.27338564 +34602,0.27338564 +34602,0 +34668,0 +34668,0.26659626 +34710,0.26659626 +34710,0 +45222,0 +45222,0.10757393 +45252,0.10757393 +45252,0 +47952,0 +47952,0.20292698 +48072,0.20292698 +48072,0 +48540,0 +48540,0.1991551 +48648,0.1991551 +48648,0 +49122,0 +49122,0.14846107 +49206,0.14846107 +49206,0 +49710,0 +49710,0.12764031 +49854,0.12764031 +49854,0 +50298,0 +50298,0.23461074 +50394,0.23461074 +50394,0 +50886,0 +50886,0.25528063 +50970,0.25528063 +50970,0 +54540,0 +54540,0.11285456 +54582,0.11285456 +54582,0 +57816,0 +57816,0.0046771273 +57822,0.0046771273 +57822,0 +57930,0 +57930,0.17923959 +57936,0.17923959 +57936,0 +58044,0 +58044,0.22284249 +58062,0.22284249 +58062,0 +58164,0 +58164,0.081774291 +58170,0.081774291 +58170,0 +58278,0 +58278,0.14514182 +58320,0.14514182 +58320,0 +58392,0 +58392,0.11270368 +58470,0.11270368 +58470,0 +61092,0 +61092,0.066686783 +61098,0.066686783 +61098,0 +61212,0 +61212,0.12945081 +61242,0.12945081 +61242,0 +61326,0 +61326,0.17380809 +61332,0.17380809 +61332,0 +63618,0 +63618,0.084037417 +63630,0.084037417 +63630,0 +63738,0 +63738,0.027610139 +63744,0.027610139 +63744,0 +63852,0 +63852,0.012975256 +63858,0.012975256 +63858,0 +63966,0 +63966,0.17637296 +64008,0.17637296 +64008,0 +64746,0 +64746,0.27957151 +64782,0.27957151 +64782,0 +69216,0 +69216,0.15178033 +69246,0.15178033 +69246,0 +72516,0 +72516,0.2578455 +72546,0.2578455 +72546,0 +75708,0 +75708,0.10138805 +75720,0.10138805 +75720,0 +75822,0 +75822,0.17682559 +75840,0.17682559 +75840,0 +76470,0 +76470,0.26312613 +76482,0.26312613 +76482,0 +76590,0 +76590,0.14861195 +76668,0.14861195 +76668,0 +76704,0 +76704,0.026554013 +76746,0.026554013 +76746,0 +76818,0 +76818,0.1089318 +76836,0.1089318 +76836,0 +79212,0 +79212,0.23189499 +79218,0.23189499 +79218,0 +81312,0 +81312,0.34595655 +81372,0.34595655 +81372,0 +85236,0 +85236,0.0051297526 +85242,0.0051297526 +85242,0 +94698,0 +94698,0.18995172 +94722,0.18995172 +94722,0 +106188,0 +106188,0.04073627 +106194,0.04073627 +106194,0 +106302,0 +106302,0.12296319 +106368,0.12296319 +106368,0 +113280,0 +113280,0.26146651 +113286,0.26146651 +113286,0 +115314,0 +115314,0.23974049 +115320,0.23974049 +115320,0 +115428,0 +115428,0.34188292 +115458,0.34188292 +115458,0 +121632,0 +121632,0.082679541 +121650,0.082679541 +121650,0 +127380,0 +127380,0.056276403 +127386,0.056276403 +127386,0 +127494,0 +127494,0.25392275 +127512,0.25392275 +127512,0 +136614,0 +136614,0.032589016 +136620,0.032589016 +136620,0 +140868,0 +140868,0.085546168 +140898,0.085546168 +140898,0 +140982,0 +140982,0.0072420036 +140988,0.0072420036 +140988,0 +141102,0 +141102,0.17079059 +141126,0.17079059 +141126,0 +141432,0 +141432,0.11798431 +141438,0.11798431 +141438,0 +149598,0 +149598,0.20850935 +149616,0.20850935 +149616,0 +157806,0 +157806,0.1555522 +157836,0.1555522 +157836,0 +170802,0 +170802,0.00015087508 +170808,0.00015087508 +170808,0 +170916,0 +170916,0.0078455039 +170946,0.0078455039 +170946,0 +180258,0 +180258,0.065178033 +180264,0.065178033 +180264,0 +194400,0 +194400,0.10847918 +194460,0.10847918 +194460,0 +196110,0 +196110,0.22857574 +196134,0.22857574 +196134,0 +200670,0 +200670,0.049185275 +200688,0.049185275 +200688,0 +201762,0 +201762,0.16898008 +201780,0.16898008 +201780,0 +206442,0 +206442,0.13654194 +206472,0.13654194 +206472,0 +209316,0 +209316,0.20866023 +209376,0.20866023 +209376,0 +209466,0 +209466,0.35093543 +209904,0.20549185 +209904,0 +209940,0 +209940,0.35093543 +209952,0.20549185 +209952,0 +210492,0 +210492,0.20141823 +210576,0.20141823 +210576,0 +211074,0 +211074,0.22978274 +211164,0.22978274 +211164,0 +211662,0 +211662,0.16611346 +211776,0.16611346 +211776,0 +231426,0 +231426,0.16686783 +231486,0.16686783 +231486,0 +236184,0 +236184,0.10123718 +236274,0.10123718 +236274,0 +238944,0 +238944,0.18165359 +238950,0.18165359 +238950,0 +241212,0 +241212,0.01961376 +241218,0.01961376 +241218,0 +242238,0 +242238,0.25030175 +242790,0.25030175 +242790,0 +244068,0 +244068,0.36934218 +244608,0.36934218 +244608,0 +247818,0 +247818,0.3080869 +247968,0.3080869 +247968,0 +251220,0 +251220,0.1446892 +251334,0.18316234 +251334,0 +251340,0 +251340,0 +251340,0.18316234 +251340,0.1446892 +252258,0 +252258,0.15932408 +252420,0.15932408 +252420,0 +253464,0 +253464,0.055672903 +253542,0.055672903 +253542,0 +253980,0 +253980,0.063518407 +254076,0.063518407 +254076,0 +254340,0 +254340,0.23280024 +254478,0.23280024 +254478,0 +258666,0 +258666,0.1961376 +258780,0.02942064 +258780,0 +258786,0 +258786,0.02942064 +258792,0.1961376 +258792,0 +258894,0 +258894,0.15268558 +258918,0.15268558 +258918,0 +259014,0 +259014,0.094447797 +259038,0.094447797 +259038,0 +259128,0 +259128,0.022933011 +259158,0.022933011 +259158,0 +259242,0 +259242,0.095956548 +259254,0.095956548 +259254,0 +259362,0 +259362,0.18135184 +259368,0.18135184 +259368,0 +259476,0 +259476,0.25377188 +259560,0.25377188 +259560,0 +283896,0 +283896,0.044055522 +283902,0.044055522 +283902,0 +286320,0 +286320,0.30476765 +286332,0.30476765 +286332,0 +286434,0 +286434,0.34595655 +286452,0.34595655 +286452,0 +286548,0 +286548,0.22299336 +286608,0.22299336 +286608,0 +286668,0 +286668,0.2082076 +286752,0.2082076 +286752,0 +287016,0 +287016,0.25452625 +287484,0.25452625 +287484,0 +288846,0 +288846,0.12613156 +289230,0.12613156 +289230,0 +293046,0 +293046,0.30416415 +293082,0.30416415 +293082,0 +293142,0 +293142,0.0078455039 +293172,0.0078455039 +293172,0 +295266,0 +295266,0.17456246 +295392,0.17456246 +295392,0 +304464,0 +304464,0.031080266 +304470,0.031080266 +304470,0 +311058,0 +311058,0.22751961 +311172,0.047676524 +311172,0 +311184,0 +311184,0.047676524 +311382,0.22751961 +311382,0 +311682,0 +311682,0.01961376 +311718,0.01961376 +311718,0 +315234,0 +315234,0.2990344 +315270,0.2990344 +315270,0 +315348,0 +315348,0.11044056 +315372,0.11044056 +315372,0 +322242,0 +322242,0.12100181 +322290,0.12100181 +322290,0 +324006,0 +324006,0.083433917 +324048,0.083433917 +324048,0 +324120,0 +324120,0.15343995 +324126,0.15343995 +324126,0 +324564,0 +324564,0.075286663 +324582,0.075286663 +324582,0 +324678,0 +324678,0.1507242 +324762,0.1507242 +324762,0 +324798,0 +324798,0.33026554 +324810,0.33026554 +324810,0 +324912,0 +324912,0.26010863 +324984,0.26010863 +324984,0 +326178,0 +326178,0.05944478 +326190,0.05944478 +326190,0 +326736,0 +326736,0.26765238 +326748,0.26765238 +326748,0 +328650,0 +328650,0.23355462 +328692,0.23355462 +328692,0 +328764,0 +328764,0.18331322 +328800,0.20232348 +328800,0 +328854,0 +328854,0.20232348 +328878,0.19809897 +328878,0 +328914,0 +328914,0.19809897 +328920,0.18331322 +328920,0 +328998,0 +328998,0.14438745 +329052,0.14438745 +329052,0 +329112,0 +329112,0.22133374 +329196,0.22133374 +329196,0 +342480,0 +342480,0.027459264 +342486,0.027459264 +342486,0 +378672,0 +378672,0.18980084 +378702,0.18980084 +378702,0 +380364,0 +380364,0.14921545 +380436,0.14921545 +380436,0 +389034,0 +389034,0.13171394 +389058,0.13171394 +389058,0 +391986,0 +391986,0.245172 +392094,0.245172 +392094,0 +393246,0 +393246,0.18044659 +393288,0.18044659 +393288,0 +393360,0 +393360,0.27127339 +393384,0.27127339 +393384,0 +393474,0 +393474,0.33811104 +393546,0.33811104 +393546,0 +393594,0 +393594,0.36481593 +393612,0.36481593 +393612,0 +393708,0 +393708,0.022480386 +393714,0.022480386 +393714,0 +396444,0 +396444,0.39438745 +396450,0.39438745 +396450,0 +400320,0 +400320,0.038774894 +400326,0.038774894 +400326,0 +400902,0 +400902,0.45835848 +400968,0.45835848 +400968,0 +403536,0 +403536,0.21469523 +403614,0.21469523 +403614,0 +405360,0 +405360,0.24502112 +405432,0.24502112 +405432,0 +408756,0 +408756,0.21273386 +408822,0.15464695 +408822,0 +408828,0 +408828,0.21273386 +408870,0.22118286 +408870,0 +408894,0 +408894,0.22118286 +408936,0.15464695 +408936,0 +408984,0 +408984,0.16173808 +408990,0.16173808 +408990,0 +410508,0 +410508,0.27172601 +410622,0 +410622,0 +410622,0.045866023 +410622,0.27172601 +410634,0.045866023 +410634,0 +410832,0 +410832,0.2457755 +410850,0.2457755 +410850,0 +416310,0 +416310,0.082528666 +416316,0.082528666 +416316,0 +416532,0 +416532,0.19100785 +416550,0.19100785 +416550,0 +417702,0 +417702,0.24124925 +417738,0.036662643 +417738,0 +417774,0 +417774,0.24124925 +417786,0.036662643 +417786,0 +417852,0 +417852,0.12251056 +417864,0.12251056 +417864,0 +418284,0 +418284,0.22148461 +418410,0.22148461 +418410,0 +418860,0 +418860,0.16354858 +418872,0.18572722 +418872,0 +418926,0 +418926,0.18572722 +418944,0.16354858 +418944,0 +419460,0 +419460,0.243965 +419520,0.243965 +419520,0 +421146,0 +421146,0.33313217 +421152,0.33313217 +421152,0 +423696,0 +423696,0.0076946288 +423756,0.0076946288 +423756,0 +451266,0 +451266,0.1549487 +451368,0.1549487 +451368,0 +451386,0 +451386,0.08977067 +451422,0.08977067 +451422,0 +451500,0 +451500,0.15570308 +451572,0.15570308 +451572,0 +451614,0 +451614,0.073476162 +451620,0.073476162 +451620,0 +456168,0 +456168,0.27761014 +456174,0.27761014 +456174,0 +456288,0 +456288,0.072872661 +456360,0.072872661 +456360,0 +458244,0 +458244,0.041339771 +458268,0.041339771 +458268,0 +458364,0 +458364,0.11602293 +458370,0.11602293 +458370,0 +458478,0 +458478,0.26463488 +458496,0.26463488 +458496,0 +458592,0 +458592,0.33132167 +458646,0.33132167 +458646,0 +458712,0 +458712,0.25015088 +458736,0.25015088 +458736,0 +469398,0 +469398,0.22661436 +469482,0.22661436 +469482,0 +469890,0 +469890,0.0054315027 +469896,0.0054315027 +469896,0 +469986,0 +469986,0.2530175 +470052,0.2530175 +470052,0 +470568,0 +470568,0.17893784 +470640,0.17893784 +470640,0 +471156,0 +471156,0.16520821 +471198,0.16520821 +471198,0 +471744,0 +471744,0.1913096 +471840,0.1913096 +471840,0 +472128,0 +472128,0.20066385 +472200,0.20066385 +472200,0 +478284,0 +478284,0.07966204 +478314,0.07966204 +478314,0 +480288,0 +480288,0.084339167 +480294,0.084339167 +480294,0 +480312,0 +480312,0.08977067 +480402,0.08977067 +480402,0 +480426,0 +480426,0.039680145 +480456,0.039680145 +480456,0 +480546,0 +480546,0.13910682 +480576,0.13910682 +480576,0 +482268,0 +482268,0.0064876282 +482274,0.0064876282 +482274,0 +482388,0 +482388,0.17154496 +482424,0.17154496 +482424,0 +482502,0 +482502,0.050995775 +482538,0.050995775 +482538,0 +482616,0 +482616,0.0067893784 +482640,0.0067893784 +482640,0 +484104,0 +484104,0.35485818 +484188,0.35485818 +484188,0 +485748,0 +485748,0.098672299 +485820,0.098672299 +485820,0 +497688,0 +497688,0.25769463 +497718,0.25769463 +497718,0 +500202,0 +500202,0.28424864 +500268,0.28424864 +500268,0 +502998,0 +502998,0.11194931 +503058,0.11194931 +503058,0 +503118,0 +503118,0.28605914 +503130,0.28605914 +503130,0 +504864,0 +504864,0.35184068 +505176,0.35184068 +505176,0 +506076,0 +506076,0.032890766 +506154,0.032890766 +506154,0 +506190,0 +506190,0.0090525045 +506196,0.0090525045 +506196,0 +506310,0 +506310,0.14499095 +506364,0.14499095 +506364,0 +506424,0 +506424,0.3062764 +506448,0.3062764 +506448,0 +506538,0 +506538,0.058237779 +506658,0.19960772 +506658,0 +506664,0 +506664,0.19960772 +506682,0.058237779 +506682,0 +506700,0 +506700,0.4957755 +506892,0.4957755 +506892,0 +507948,0 +507948,0.14981895 +507960,0.14981895 +507960,0 +509646,0 +509646,0.14906457 +509664,0.14906457 +509664,0 +545766,0 +545766,0.29375377 +545772,0.29375377 +545772,0 +546132,0 +546132,0.22736874 +546144,0.22736874 +546144,0 +547434,0 +547434,0.27248039 +547440,0.27248039 +547440,0 +548016,0 +548016,0.21031986 +548028,0.21031986 +548028,0 +548136,0 +548136,0.2578455 +548196,0.2578455 +548196,0 +548250,0 +548250,0.047525649 +548256,0.047525649 +548256,0 +548676,0 +548676,0.32951116 +548688,0.32951116 +548688,0 +548790,0 +548790,0.25437538 +548808,0.25437538 +548808,0 +548910,0 +548910,0.084490042 +548916,0.084490042 +548916,0 +549024,0 +549024,0.29948702 +549048,0.29948702 +549048,0 +549138,0 +549138,0.054013277 +549144,0.054013277 +549144,0 +559446,0 +559446,0.27534701 +559464,0.27534701 +559464,0 +560670,0 +560670,0.020368135 +560676,0.020368135 +560676,0 +561102,0 +561102,0.22827399 +561144,0.22827399 +561144,0 +562008,0 +562008,0.044206397 +562020,0.044206397 +562020,0 +566286,0 +566286,0.42426071 +566856,0.42426071 +566856,0 +568116,0 +568116,0.2996379 +568560,0.2996379 +568560,0 +573048,0 +573048,0.26659626 +573054,0.26659626 +573054,0 +577008,0 +577008,0.20850935 +577044,0.20850935 +577044,0 +580998,0 +580998,0.17652384 +581016,0.17652384 +581016,0 +581808,0 +581808,0.38774894 +581814,0.38774894 +581814,0 +583410,0 +583410,0.099728425 +583422,0.099728425 +583422,0 +585534,0 +585534,0.15811708 +585546,0.15811708 +585546,0 +586836,0 +586836,0.051297526 +586848,0.051297526 +586848,0 +596628,0 +596628,0.22314424 +596700,0.22314424 +596700,0 +597486,0 +597486,0.23627037 +597510,0.23627037 +597510,0 +608502,0 +608502,0.056125528 +608508,0.056125528 +608508,0 +608616,0 +608616,0.026101388 +608622,0.026101388 +608622,0 +608736,0 +608736,0.23445987 +608748,0.23445987 +608748,0 +608850,0 +608850,0.19945685 +608874,0.19945685 +608874,0 +625002,0 +625002,0.43602897 +625782,0.43602897 +625782,0 +630702,0 +630702,0.44236572 +630708,0.44236572 +630708,0 +635208,0 +635208,0.17908871 +635226,0.17908871 +635226,0 +635328,0 +635328,0.046620398 +635334,0.046620398 +635334,0 +636066,0 +636066,0.27821364 +636102,0.27821364 +636102,0 +637080,0 +637080,0.17607121 +637092,0.17607121 +637092,0 +639606,0 +639606,0.2542245 +639678,0.2542245 +639678,0 +642192,0 +642192,0.10968618 +642408,0.42214846 +642408,0 +642426,0 +642426,0.10968618 +642708,0.42214846 +642708,0 +654810,0 +654810,0.27519614 +654876,0.27519614 +654876,0 +659268,0 +659268,0.28439952 +659340,0.28439952 +659340,0 +662028,0 +662028,0.06004828 +662034,0.06004828 +662034,0 +662142,0 +662142,0.21635486 +662196,0.21635486 +662196,0 +662256,0 +662256,0.24049487 +662286,0.24049487 +662286,0 +666372,0 +666372,0.06095353 +666378,0.06095353 +666378,0 +666486,0 +666486,0.086602293 +666510,0.086602293 +666510,0 +673284,0 +673284,0.050694025 +673290,0.050694025 +673290,0 +680322,0 +680322,0.0073928787 +680418,0.0073928787 +680418,0 +680436,0 +680436,0.11210018 +680466,0.11210018 +680466,0 +680550,0 +680550,0.071514786 +680556,0.071514786 +680556,0 +685530,0 +685530,0.07936029 +685560,0.07936029 +685560,0 +688074,0 +688074,0.78123114 +688260,0.78123114 +688260,0 +688758,0 +688758,0.27474351 +688842,0.27474351 +688842,0 +689052,0 +689052,0.24411587 +689136,0.24411587 +689136,0 +691194,0 +691194,0.080114665 +691218,0.080114665 +691218,0 +711528,0 +711528,0.31095353 +711888,0.31095353 +711888,0 +714540,0 +714540,0.28741702 +714780,0.28741702 +714780,0 +716196,0 +716196,0.21635486 +716214,0.21635486 +716214,0 +716310,0 +716310,0.17818346 +716430,0.17818346 +716430,0 +718590,0 +718590,0.19824985 +718704,0.22661436 +718704,0 +718722,0 +718722,0 +718722,0.22661436 +718722,0.19824985 +719562,0 +719562,0.10727218 +719586,0.10727218 +719586,0 +721584,0 +721584,0.32754979 +721608,0.32754979 +721608,0 +721698,0 +721698,0.094146047 +721746,0.094146047 +721746,0 +722130,0 +722130,0.27489439 +722214,0.27489439 +722214,0 +722244,0 +722244,0.016898008 +722250,0.016898008 +722250,0 +722334,0 +722334,0.17622209 +722412,0.17622209 +722412,0 +722436,0 +722436,0.26463488 +722448,0.028968014 +722448,0 +722454,0 +722454,0.028968014 +722466,0.26463488 +722466,0 +722562,0 +722562,0.1979481 +722718,0.1979481 +722718,0 +724896,0 +724896,0.23536512 +724926,0.23536512 +724926,0 +727350,0 +727350,0.066686783 +727356,0.066686783 +727356,0 +730266,0 +730266,0.28983102 +730296,0.28983102 +730296,0 +733200,0 +733200,0.19327097 +733242,0.19327097 +733242,0 +733320,0 +733320,0.1483102 +733326,0.1483102 +733326,0 +733434,0 +733434,0.16445383 +733482,0.16445383 +733482,0 +742626,0 +742626,0.19930597 +742674,0.19930597 +742674,0 +742740,0 +742740,0.12054919 +742770,0.12054919 +742770,0 +742854,0 +742854,0.32196741 +742872,0.32196741 +742872,0 +742974,0 +742974,0.087356669 +742980,0.087356669 +742980,0 +750360,0 +750360,0.00045262523 +750366,0.00045262523 +750366,0 +750474,0 +750474,0.21575136 +750516,0.21575136 +750516,0 +750588,0 +750588,0.059293905 +750594,0.059293905 +750594,0 +752418,0 +752418,0.23461074 +752436,0.23461074 +752436,0 +752532,0 +752532,0.025045263 +752700,0.025045263 +752700,0 +757854,0 +757854,0.08916717 +757860,0.08916717 +757860,0 +761214,0 +761214,0.19568497 +761232,0.19568497 +761232,0 +763092,0 +763092,0.252414 +763878,0.252414 +763878,0 +768084,0 +768084,0.032739891 +768126,0.032739891 +768126,0 +769536,0 +769536,0.12039831 +769638,0.12039831 +769638,0 +796830,0 +796830,0.12326494 +796860,0.12326494 +796860,0 +796950,0 +796950,0.2057936 +796974,0.2057936 +796974,0 +797064,0 +797064,0.14378395 +797082,0.14378395 +797082,0 +797178,0 +797178,0.034248642 +797190,0.034248642 +797190,0 +797280,0 +797280,0.18301147 +797298,0.098521424 +797298,0 +797328,0 +797328,0.098521424 +797400,0.18301147 +797400,0 +797412,0 +797412,0.21409173 +797424,0.21409173 +797424,0 +797526,0 +797526,0.24305975 +797634,0.24305975 +797634,0 +797646,0 +797646,0.17757996 +797760,0.14604707 +797760,0 +797766,0 +797766,0.17757996 +797916,0.14604707 +797916,0 +800310,0 +800310,0.33614967 +800628,0.33614967 +800628,0 +810168,0 +810168,0.28379602 +810186,0.28379602 +810186,0 +810288,0 +810288,0.11602293 +810294,0.11602293 +810294,0 +810402,0 +810402,0.0012070006 +810408,0.0012070006 +810408,0 +810684,0 +810684,0.056427278 +810732,0.056427278 +810732,0 +810804,0 +810804,0.069704285 +810810,0.069704285 +810810,0 +810912,0 +810912,0.18964997 +810918,0.21710923 +810918,0 +810942,0 +810942,0.21710923 +810972,0.18964997 +810972,0 +811500,0 +811500,0.2094146 +811590,0.2094146 +811590,0 +812088,0 +812088,0.21228123 +812202,0.21228123 +812202,0 +812676,0 +812676,0.2015691 +812754,0.2015691 +812754,0 +819066,0 +819066,0.076191913 +819072,0.076191913 +819072,0 +836670,0 +836670,0.18225709 +836682,0.18225709 +836682,0 +836784,0 +836784,0.18587809 +836790,0.18587809 +836790,0 +836898,0 +836898,0.11949306 +836904,0.11949306 +836904,0 +840816,0 +840816,0.33705492 +840828,0.33705492 +840828,0 +840936,0 +840936,0.17441159 +841008,0.17441159 +841008,0 +841050,0 +841050,0.2518105 +841122,0.2518105 +841122,0 +841164,0 +841164,0.1083283 +841176,0.1083283 +841176,0 +841284,0 +841284,0.23415812 +841362,0.23415812 +841362,0 +841398,0 +841398,0.024290887 +841404,0.024290887 +841404,0 +841512,0 +841512,0.0092033796 +841578,0.0092033796 +841578,0 +841782,0 +841782,0.14544357 +841788,0.14544357 +841788,0 +841896,0 +841896,0.072118286 +841944,0.072118286 +841944,0 +842016,0 +842016,0.18089922 +842034,0.18089922 +842034,0 +842130,0 +842130,0.16309596 +842238,0.16309596 +842238,0 +842244,0 +842244,0.254828 +842292,0.254828 +842292,0 +842364,0 +842364,0.24260712 +842436,0.24260712 +842436,0 +843816,0 +843816,0.02082076 +843822,0.02082076 +843822,0 +843942,0 +843942,0.17592034 +843972,0.17592034 +843972,0 +845856,0 +845856,0.16535908 +845868,0.16535908 +845868,0 +847296,0 +847296,0.13050694 +847302,0.13050694 +847302,0 +848772,0 +848772,0.21771273 +848802,0.21771273 +848802,0 +849240,0 +849240,0.082528666 +849246,0.082528666 +849246,0 +849360,0 +849360,0.093995172 +849372,0.093995172 +849372,0 +886074,0 +886074,0.28862402 +886488,0.28862402 +886488,0 +887910,0 +887910,0.27263126 +888240,0.27263126 +888240,0 +897456,0 +897456,0.15645745 +897498,0.15645745 +897498,0 +899610,0 +899610,0.48853349 +899856,0.48853349 +899856,0 +900912,0 +900912,0.26689801 +900984,0.26689801 +900984,0 +901488,0 +901488,0.0076946288 +901506,0.0076946288 +901506,0 +902568,0 +902568,0.14453832 +902664,0.14453832 +902664,0 +904302,0 +904302,0.13986119 +904314,0.13986119 +904314,0 +905502,0 +905502,0.044055522 +905508,0 +905508,0 +905508,0.044055522 +905508,0.21891973 +905592,0.21891973 +905592,0 +905628,0 +905628,0.093391672 +905706,0.093391672 +905706,0 +918216,0 +918216,0.17667471 +918252,0.17667471 +918252,0 +918330,0 +918330,0.28138202 +918366,0.28138202 +918366,0 +918444,0 +918444,0.084942667 +918534,0.084942667 +918534,0 +918564,0 +918564,0.026855763 +918570,0.026855763 +918570,0 +919050,0 +919050,0.092184671 +919086,0.092184671 +919086,0 +926316,0 +926316,0.19357272 +926352,0.19357272 +926352,0 +926430,0 +926430,0.11843693 +926466,0.11843693 +926466,0 +926580,0 +926580,0.099728425 +926598,0.099728425 +926598,0 +929856,0 +929856,0.38488232 +930144,0.38488232 +930144,0 +932370,0 +932370,0.22827399 +932442,0.22827399 +932442,0 +933216,0 +933216,0.13639107 +933234,0.13639107 +933234,0 +933336,0 +933336,0.16158721 +933354,0.16158721 +933354,0 +936144,0 +936144,0.27474351 +936270,0.27474351 +936270,0 +940614,0 +940614,0.24894387 +941076,0.24894387 +941076,0 +943026,0 +943026,0.12085094 +943032,0.12085094 +943032,0 +943140,0 +943140,0.28424864 +943146,0.28424864 +943146,0 +943260,0 +943260,0.15147858 +943290,0.15147858 +943290,0 +947016,0 +947016,0.20202173 +947922,0.20202173 +947922,0 +948852,0 +948852,0.37145444 +949200,0.37145444 +949200,0 +967350,0 +967350,0.34837055 +967614,0.34837055 +967614,0 +969180,0 +969180,0.16234158 +969594,0.16234158 +969594,0 +972810,0 +972810,0.24668075 +972888,0.24668075 +972888,0 +975834,0 +975834,0.078605914 +975888,0.078605914 +975888,0 +975954,0 +975954,0.13458057 +975990,0.13458057 +975990,0 +976068,0 +976068,0.08916717 +976134,0.08916717 +976134,0 +976182,0 +976182,0.13986119 +976188,0.13986119 +976188,0 +976302,0 +976302,0.15600483 +976314,0.15600483 +976314,0 +976416,0 +976416,0.050090525 +976566,0.050090525 +976566,0 +977544,0 +977544,0.31668678 +978126,0.31668678 +978126,0 +980394,0 +980394,0.11285456 +980460,0.11285456 +980460,0 +980508,0 +980508,0.078153289 +980514,0.078153289 +980514,0 +980622,0 +980622,0.17003621 +980658,0.17003621 +980658,0 +980730,0 +980730,0.39921545 +980742,0.1471032 +980742,0 +980760,0 +980760,0.1471032 +980796,0.39921545 +980796,0 +980856,0 +980856,0.22042849 +980868,0.22042849 +980868,0 +980970,0 +980970,0.12960169 +980976,0.12960169 +980976,0 +981090,0 +981090,0.29511165 +981114,0.29511165 +981114,0 +981204,0 +981204,0.23657212 +981240,0.23657212 +981240,0 +981318,0 +981318,0.039076645 +981390,0.039076645 +981390,0 +981438,0 +981438,0.22510561 +981444,0.22510561 +981444,0 +981552,0 +981552,0.12085094 +981600,0.12085094 +981600,0 +981666,0 +981666,0.17652384 +981684,0.17652384 +981684,0 +981786,0 +981786,0.12341581 +981798,0.12341581 +981798,0 +981900,0 +981900,0.078756789 +981906,0.078756789 +981906,0 +985050,0 +985050,0.11285456 +985092,0.11285456 +985092,0 +985170,0 +985170,0.067290284 +985176,0.067290284 +985176,0 +985188,0 +985188,0.54707302 +985194,0.54707302 +985194,0 +985284,0 +985284,0.024894387 +985290,0 +985290,0 +985290,0.024894387 +985290,0.35802655 +985398,0.043301147 +985398,0 +985446,0 +985446,0.043301147 +985908,0.35802655 +985908,0 +987588,0 +987588,0.13533494 +987678,0.13533494 +987678,0 +987708,0 +987708,0.17003621 +987732,0.17003621 +987732,0 +987822,0 +987822,0.1410682 +987846,0.1410682 +987846,0 +1002846,0 +1002846,0.083584792 +1002900,0.083584792 +1002900,0 +1004112,0 +1004112,0.13593844 +1004118,0.13593844 +1004118,0 +1008990,0 +1008990,0.097012674 +1009002,0.097012674 +1009002,0 +1009104,0 +1009104,0.31789378 +1009140,0.31789378 +1009140,0 +1009218,0 +1009218,0.044055522 +1009224,0.044055522 +1009224,0 +1015512,0 +1015512,0.0075437538 +1015584,0.0075437538 +1015584,0 +1017054,0 +1017054,0.2590525 +1017066,0.2590525 +1017066,0 +1017084,0 +1017084,0.24547375 +1017186,0.24547375 +1017186,0 +1017672,0 +1017672,0.18301147 +1017732,0.18301147 +1017732,0 +1018260,0 +1018260,0.21590223 +1018332,0.21590223 +1018332,0 +1018842,0 +1018842,0.21047073 +1018908,0.21047073 +1018908,0 +1023396,0 +1023396,0.036662643 +1023402,0.036662643 +1023402,0 +1023516,0 +1023516,0.28123114 +1023630,0.0067893784 +1023630,0 +1023636,0 +1023636,0.0067893784 +1023642,0.28123114 +1023642,0 +1023744,0 +1023744,0.26584188 +1023774,0.26584188 +1023774,0 +1027770,0 +1027770,0.26931201 +1027878,0.26931201 +1027878,0 +1027884,0 +1027884,0.0054315027 +1027890,0.0054315027 +1027890,0 +1028004,0 +1028004,0.23129149 +1028022,0.23129149 +1028022,0 +1028310,0 +1028310,0.11904043 +1028352,0.11904043 +1028352,0 +1028424,0 +1028424,0.12220881 +1028430,0.12220881 +1028430,0 +1060116,0 +1060116,0.23189499 +1060230,0.17712734 +1060230,0 +1060308,0 +1060308,0.17712734 +1060350,0.23189499 +1060350,0 +1060386,0 +1060386,0 +1060386,0.23189499 +1060386,0.23189499 +1062720,0 +1062720,0.21394086 +1062750,0.21394086 +1062750,0 +1063710,0 +1063710,0.31894991 +1063722,0.31894991 +1063722,0 +1066920,0 +1066920,0.39695232 +1066986,0.39695232 +1066986,0 +1077684,0 +1077684,0.27082076 +1077744,0.27082076 +1077744,0 +1079214,0 +1079214,0.16098371 +1079238,0.16098371 +1079238,0 +1079286,0 +1079286,0.35078455 +1079292,0.35078455 +1079292,0 +1085154,0 +1085154,0.17652384 +1085166,0.17652384 +1085166,0 +1085268,0 +1085268,0.092486421 +1085274,0.092486421 +1085274,0 +1085382,0 +1085382,0.41354858 +1085388,0.41354858 +1085388,0 +1086816,0 +1086816,0.18648159 +1086846,0.18648159 +1086846,0 +1091202,0 +1091202,0.020971635 +1091232,0.020971635 +1091232,0 +1094028,0 +1094028,0.093391672 +1094034,0.093391672 +1094034,0 +1096734,0 +1096734,0.086753168 +1096740,0.086753168 +1096740,0 +1096848,0 +1096848,0.084339167 +1096878,0.084339167 +1096878,0 +1096962,0 +1096962,0.14031382 +1096974,0.14031382 +1096974,0 +1097082,0 +1097082,0.11345806 +1097088,0.11345806 +1097088,0 +1098516,0 +1098516,0.23762824 +1098612,0.23762824 +1098612,0 +1099104,0 +1099104,0.22812311 +1099272,0.22812311 +1099272,0 +1099692,0 +1099692,0.1973446 +1099824,0.1973446 +1099824,0 +1100280,0 +1100280,0.21605311 +1100346,0.21605311 +1100346,0 +1100556,0 +1100556,0.26433313 +1100574,0.26433313 +1100574,0 +1100670,0 +1100670,0.094296922 +1100682,0.094296922 +1100682,0 +1100790,0 +1100790,0.04993965 +1100796,0.04993965 +1100796,0 +1100862,0 +1100862,0.16792396 +1100904,0.089619795 +1100904,0 +1100910,0 +1100910,0.089619795 +1100922,0.16792396 +1100922,0 +1101018,0 +1101018,0.27655401 +1101090,0.27655401 +1101090,0 +1101138,0 +1101138,0.30416415 +1101144,0.30416415 +1101144,0 +1104930,0 +1104930,0.053862402 +1105020,0.053862402 +1105020,0 +1105044,0 +1105044,0.17697646 +1105050,0.17697646 +1105050,0 +1109112,0 +1109112,0.085847918 +1109154,0.085847918 +1109154,0 +1117560,0 +1117560,0.24954737 +1117674,0.086300543 +1117674,0 +1117680,0 +1117680,0.086300543 +1117692,0.24954737 +1117692,0 +1119084,0 +1119084,0.036662643 +1119090,0.036662643 +1119090,0 +1119204,0 +1119204,0.22027761 +1119288,0.22027761 +1119288,0 +1119318,0 +1119318,0.19523235 +1119432,0.17939046 +1119432,0 +1119480,0 +1119480,0.17939046 +1119486,0.19523235 +1119486,0 +1119552,0 +1119552,0.024743512 +1119666,0.22163549 +1119666,0 +1119678,0 +1119678,0 +1119678,0.22163549 +1119678,0.024743512 +1122198,0 +1122198,0.033343392 +1122204,0.033343392 +1122204,0 +1144368,0 +1144368,0.12522631 +1144398,0.12522631 +1144398,0 +1145382,0 +1145382,0.15585395 +1145406,0.15585395 +1145406,0 +1153974,0 +1153974,0.23989137 +1153986,0.23989137 +1153986,0 +1155120,0 +1155120,0.27217864 +1155198,0.27217864 +1155198,0 +1156026,0 +1156026,0.28319252 +1156122,0.28319252 +1156122,0 +1156146,0 +1156146,0.30657815 +1156188,0.30657815 +1156188,0 +1159194,0 +1159194,0.13986119 +1159212,0.13986119 +1159212,0 +1160880,0 +1160880,0.20896198 +1160886,0.20896198 +1160886,0 +1161888,0 +1161888,0.1477067 +1161894,0.1477067 +1161894,0 +1164342,0 +1164342,0.16611346 +1164354,0.16611346 +1164354,0 +1165068,0 +1165068,0.28786964 +1165098,0.28786964 +1165098,0 +1169532,0 +1169532,0.35018105 +1169544,0.35018105 +1169544,0 +1169646,0 +1169646,0.1464997 +1169682,0.1464997 +1169682,0 +1172544,0 +1172544,0.31095353 +1172604,0.31095353 +1172604,0 +1175904,0 +1175904,0.11783343 +1175940,0.11783343 +1175940,0 +1176018,0 +1176018,0.11285456 +1176060,0.11285456 +1176060,0 +1177566,0 +1177566,0.037115269 +1177572,0.037115269 +1177572,0 +1177680,0 +1177680,0.19628847 +1177794,0.25859988 +1177794,0 +1177830,0 +1177830,0.19628847 +1177842,0.25859988 +1177842,0 +1177908,0 +1177908,0.19176222 +1177944,0.19176222 +1177944,0 +1178028,0 +1178028,0.2057936 +1178064,0.2057936 +1178064,0 +1182960,0 +1182960,0.25935425 +1182978,0.25935425 +1182978,0 +1183080,0 +1183080,0.17878696 +1183092,0.17878696 +1183092,0 +1183302,0 +1183302,0.0042245021 +1183308,0.0042245021 +1183308,0 +1186626,0 +1186626,0.032589016 +1186680,0.032589016 +1186680,0 +1186740,0 +1186740,0.16249246 +1186788,0.16249246 +1186788,0 +1187592,0 +1187592,0.38608932 +1187604,0.38608932 +1187604,0 +1189914,0 +1189914,0.10078455 +1189932,0.10078455 +1189932,0 +1190016,0 +1190016,0.17018709 +1190028,0.21529873 +1190028,0 +1190064,0 +1190064,0.17018709 +1190094,0.21529873 +1190094,0 +1190136,0 +1190136,0.044960772 +1190142,0.044960772 +1190142,0 +1190148,0 +1190148,0.051750151 +1190154,0.051750151 +1190154,0 +1190460,0 +1190460,0.1985516 +1190484,0.1985516 +1190484,0 +1191540,0 +1191540,0.086753168 +1191654,0.30793603 +1191654,0 +1191660,0 +1191660,0.086753168 +1191690,0.30793603 +1191690,0 +1191768,0 +1191768,0.19809897 +1191822,0.19809897 +1191822,0 +1192026,0 +1192026,0.054164152 +1192044,0.054164152 +1192044,0 +1192302,0 +1192302,0.12145444 +1192320,0.12145444 +1192320,0 +1192422,0 +1192422,0.10018105 +1192446,0.10018105 +1192446,0 +1193358,0 +1193358,0.19040435 +1193394,0.19040435 +1193394,0 +1193592,0 +1193592,0.15042245 +1193622,0.15042245 +1193622,0 +1194084,0 +1194084,0.3916717 +1194144,0.3916717 +1194144,0 +1194384,0 +1194384,0.41038021 +1194552,0.41038021 +1194552,0 +1194846,0 +1194846,0.09957755 +1194852,0.09957755 +1194852,0 +1194966,0 +1194966,0.2003621 +1194996,0.2003621 +1194996,0 +1198686,0 +1198686,0.072872661 +1198794,0.072872661 +1198794,0 +1200600,0 +1200600,0.060500905 +1200612,0.060500905 +1200612,0 +1202394,0 +1202394,0.007996379 +1202430,0.007996379 +1202430,0 +1202508,0 +1202508,0.14152082 +1202586,0.14152082 +1202586,0 +1202628,0 +1202628,0.31744116 +1202640,0.31744116 +1202640,0 +1202742,0 +1202742,0.03032589 +1202748,0.03032589 +1202748,0 +1208976,0 +1208976,0.22540736 +1209048,0.22540736 +1209048,0 +1209276,0 +1209276,0.21816536 +1209336,0.21816536 +1209336,0 +1209576,0 +1209576,0.24230537 +1209582,0.24230537 +1209582,0 +1232532,0 +1232532,0.32468316 +1232586,0.32468316 +1232586,0 +1233114,0 +1233114,0.2076041 +1233216,0.2076041 +1233216,0 +1235556,0 +1235556,0.30310803 +1235568,0.30310803 +1235568,0 +1236564,0 +1236564,0.252414 +1236588,0.252414 +1236588,0 +1242234,0 +1242234,0.29164152 +1242300,0.29164152 +1242300,0 +1242852,0 +1242852,0.23234762 +1242876,0.23234762 +1242876,0 +1242972,0 +1242972,0.18014484 +1243002,0.18014484 +1243002,0 +1250052,0 +1250052,0.096861798 +1250076,0.096861798 +1250076,0 +1250172,0 +1250172,0.1010863 +1250178,0.1010863 +1250178,0 +1252182,0 +1252182,0.28470127 +1252242,0.28470127 +1252242,0 +1252476,0 +1252476,0.31759203 +1252530,0.31759203 +1252530,0 +1252776,0 +1252776,0.28515389 +1252848,0.28515389 +1252848,0 +1256448,0 +1256448,0.16641521 +1256484,0.16641521 +1256484,0 +1256502,0 +1256502,0.021273386 +1256526,0.021273386 +1256526,0 +1256562,0 +1256562,0.25859988 +1256616,0.24969825 +1256616,0 +1256658,0 +1256658,0.25859988 +1256670,0.24969825 +1256670,0 +1257726,0 +1257726,0.26870851 +1257732,0.26870851 +1257732,0 +1259340,0 +1259340,0.12537719 +1259382,0.12537719 +1259382,0 +1272480,0 +1272480,0.18210622 +1272564,0.18210622 +1272564,0 +1273068,0 +1273068,0.22012674 +1273134,0.22012674 +1273134,0 +1273656,0 +1273656,0.21454436 +1273728,0.21454436 +1273728,0 +1274244,0 +1274244,0.16882921 +1274346,0.16882921 +1274346,0 +1285656,0 +1285656,0.17818346 +1285668,0.17818346 +1285668,0 +1289406,0 +1289406,0.11557031 +1289424,0.11557031 +1289424,0 +1291098,0 +1291098,0.28530477 +1291110,0.28530477 +1291110,0 +1291212,0 +1291212,0.067139409 +1291242,0.067139409 +1291242,0 +1291332,0 +1291332,0.18633072 +1291368,0.18633072 +1291368,0 +1291446,0 +1291446,0.24562462 +1291470,0.24562462 +1291470,0 +1292244,0 +1292244,0.54571515 +1292532,0.54571515 +1292532,0 +1292940,0 +1292940,0.051146651 +1292946,0.051146651 +1292946,0 +1293420,0 +1293420,0.26946288 +1293444,0.26946288 +1293444,0 +1316340,0 +1316340,0.42456246 +1316400,0.42456246 +1316400,0 +1316850,0 +1316850,0.096710923 +1316904,0.096710923 +1316904,0 +1320522,0 +1320522,0.16068196 +1320582,0.16068196 +1320582,0 +1320642,0 +1320642,0.27730839 +1320708,0.27730839 +1320708,0 +1321314,0 +1321314,0.087507544 +1321320,0.087507544 +1321320,0 +1321914,0 +1321914,0.063367532 +1321920,0.063367532 +1321920,0 +1322424,0 +1322424,0.17501509 +1322664,0.17501509 +1322664,0 +1329228,0 +1329228,0.25090525 +1329252,0.25090525 +1329252,0 +1331838,0 +1331838,0.0073928787 +1331910,0.0073928787 +1331910,0 +1332840,0 +1332840,0.17501509 +1332906,0.17501509 +1332906,0 +1332954,0 +1332954,0.064725407 +1332966,0.064725407 +1332966,0 +1336320,0 +1336320,0.26689801 +1336326,0.26689801 +1336326,0 +1336434,0 +1336434,0.1907061 +1336446,0.1907061 +1336446,0 +1342110,0 +1342110,0.10983705 +1342134,0.10983705 +1342134,0 +1352916,0 +1352916,0.011768256 +1352922,0.011768256 +1352922,0 +1353912,0 +1353912,0.23264937 +1353924,0.23264937 +1353924,0 +1354026,0 +1354026,0.044508147 +1354032,0.044508147 +1354032,0 +1354146,0 +1354146,0.0049788775 +1354152,0.0049788775 +1354152,0 +1354260,0 +1354260,0.081774291 +1354290,0.081774291 +1354290,0 +1354374,0 +1354374,0.1949306 +1354404,0.1949306 +1354404,0 +1354494,0 +1354494,0.14936632 +1354500,0.0070911285 +1354500,0 +1354506,0 +1354506,0.0070911285 +1354512,0.14936632 +1354512,0 +1354614,0 +1354614,0.12824381 +1354644,0.12824381 +1354644,0 +1354728,0 +1354728,0.013578757 +1354734,0.013578757 +1354734,0 +1354848,0 +1354848,0.11179843 +1354854,0.11179843 +1354854,0 +1354962,0 +1354962,0.15208208 +1354992,0.15208208 +1354992,0 +1360608,0 +1360608,0.019764635 +1360614,0.019764635 +1360614,0 +1361946,0 +1361946,0.15992758 +1361988,0.15992758 +1361988,0 +1362396,0 +1362396,0.18452022 +1362414,0.18452022 +1362414,0 +1362708,0 +1362708,0.17893784 +1362882,0.17893784 +1362882,0 +1364532,0 +1364532,0.17939046 +1364550,0.17939046 +1364550,0 +1370646,0 +1370646,0.16475558 +1370700,0.16475558 +1370700,0 +1370766,0 +1370766,0.11511768 +1370784,0.11511768 +1370784,0 +1372560,0 +1372560,0.20141823 +1372584,0.20141823 +1372584,0 +1401900,0 +1401900,0.0063367532 +1401912,0.0063367532 +1401912,0 +1402014,0 +1402014,0.2003621 +1402080,0.2003621 +1402080,0 +1402134,0 +1402134,0.03032589 +1402140,0.03032589 +1402140,0 +1403436,0 +1403436,0.13473144 +1403442,0.13473144 +1403442,0 +1403556,0 +1403556,0.0073928787 +1403616,0.0073928787 +1403616,0 +1403670,0 +1403670,0.15841883 +1403760,0.15841883 +1403760,0 +1403784,0 +1403784,0.066837658 +1403826,0.066837658 +1403826,0 +1405302,0 +1405302,0.34474955 +1405326,0.34474955 +1405326,0 +1411698,0 +1411698,0.23657212 +1411746,0.23657212 +1411746,0 +1412184,0 +1412184,0.19583585 +1412274,0.19583585 +1412274,0 +1412286,0 +1412286,0.18874472 +1412370,0.18874472 +1412370,0 +1412484,0 +1412484,0.33237779 +1412550,0.33237779 +1412550,0 +1412874,0 +1412874,0.23521424 +1413000,0.23521424 +1413000,0 +1413462,0 +1413462,0.20866023 +1413498,0.17441159 +1413498,0 +1413516,0 +1413516,0.17441159 +1413528,0.20866023 +1413528,0 +1414050,0 +1414050,0.23189499 +1414116,0.23189499 +1414116,0 +1414632,0 +1414632,0.22646349 +1414680,0.22646349 +1414680,0 +1416432,0 +1416432,0.066988533 +1416438,0.066988533 +1416438,0 +1417344,0 +1417344,0.1041038 +1417350,0.1041038 +1417350,0 +1418916,0 +1418916,0.094447797 +1418940,0.094447797 +1418940,0 +1419030,0 +1419030,0.081019916 +1419114,0.081019916 +1419114,0 +1419372,0 +1419372,0.72978274 +1419378,0.72978274 +1419378,0 +1419666,0 +1419666,0.39302957 +1419678,0.39302957 +1419678,0 +1421142,0 +1421142,0.26056126 +1421238,0.26056126 +1421238,0 +1424544,0 +1424544,0.10515993 +1424550,0.10515993 +1424550,0 +1438440,0 +1438440,0.25920338 +1438536,0.25920338 +1438536,0 +1439028,0 +1439028,0.17803259 +1439130,0.17803259 +1439130,0 +1439616,0 +1439616,0.20368135 +1439682,0.20368135 +1439682,0 +1440204,0 +1440204,0.17697646 +1440270,0.17697646 +1440270,0 +1446240,0 +1446240,0.13307182 +1446252,0.13307182 +1446252,0 +1447614,0 +1447614,0.20715148 +1447650,0.20715148 +1447650,0 +1447728,0 +1447728,0.02021726 +1447734,0.02021726 +1447734,0 +1450056,0 +1450056,0.32498491 +1450074,0.32498491 +1450074,0 +1450170,0 +1450170,0.3402233 +1450392,0.3402233 +1450392,0 +1453512,0 +1453512,0.24170187 +1453614,0.24170187 +1453614,0 +1456608,0 +1456608,0.31532891 +1456668,0 +1456668,0 +1456668,0.31532891 +1456668,0.53711527 +1456932,0.53711527 +1456932,0 +1460892,0 +1460892,0.11541943 +1460898,0.11541943 +1460898,0 +1461012,0 +1461012,0.24230537 +1461102,0.24230537 +1461102,0 +1464912,0 +1464912,0.14861195 +1464930,0.14861195 +1464930,0 +1466496,0 +1466496,0.66807483 +1466826,0.66807483 +1466826,0 +1482852,0 +1482852,0.088563669 +1482858,0.088563669 +1482858,0 +1482972,0 +1482972,0.18105009 +1483014,0.18105009 +1483014,0 +1483086,0 +1483086,0.14996982 +1483122,0.14996982 +1483122,0 +1483200,0 +1483200,0.084490042 +1483206,0.084490042 +1483206,0 +1483320,0 +1483320,0.16762221 +1483326,0.16762221 +1483326,0 +1483434,0 +1483434,0.32739891 +1483458,0.32739891 +1483458,0 +1483548,0 +1483548,0.027761014 +1483554,0.027761014 +1483554,0 +1494132,0 +1494132,0.13820157 +1494144,0.13820157 +1494144,0 +1495728,0 +1495728,0.3504828 +1496352,0.3504828 +1496352,0 +1497366,0 +1497366,0.01931201 +1497384,0.01931201 +1497384,0 +1497564,0 +1497564,0.33569704 +1497936,0.33569704 +1497936,0 +1498524,0 +1498524,0.81789378 +1498656,0.81789378 +1498656,0 +1501032,0 +1501032,0.242758 +1501062,0.242758 +1501062,0 +1503054,0 +1503054,0.33796017 +1503102,0.33796017 +1503102,0 +1503168,0 +1503168,0.33101992 +1503204,0.33101992 +1503204,0 +1510068,0 +1510068,0.15826795 +1510242,0.15826795 +1510242,0 +1510830,0 +1510830,0.16656608 +1510926,0.16656608 +1510926,0 +1510950,0 +1510950,0.21786361 +1510986,0.21786361 +1510986,0 +1514022,0 +1514022,0.016294508 +1514028,0.016294508 +1514028,0 +1515510,0 +1515510,0.20896198 +1515600,0.20896198 +1515600,0 +1515624,0 +1515624,0.21394086 +1515642,0.21394086 +1515642,0 +1515744,0 +1515744,0.24366325 +1515750,0.24366325 +1515750,0 +1515858,0 +1515858,0.15826795 +1515888,0.15826795 +1515888,0 +1515972,0 +1515972,0.20051298 +1515978,0.20051298 +1515978,0 +1525038,0 +1525038,0.33207604 +1525098,0.33207604 +1525098,0 +1525500,0 +1525500,0.72254074 +1525854,0.72254074 +1525854,0 +1537674,0 +1537674,0.18753772 +1537722,0.18753772 +1537722,0 +1540212,0 +1540212,0.067139409 +1540260,0.067139409 +1540260,0 +1540404,0 +1540404,0.25286663 +1540428,0.25286663 +1540428,0 +1540518,0 +1540518,0.253621 +1540536,0.253621 +1540536,0 +1542390,0 +1542390,0.071967411 +1542444,0.071967411 +1542444,0 +1542504,0 +1542504,0.23370549 +1542528,0.23370549 +1542528,0 +1542618,0 +1542618,0.1597767 +1542630,0.1597767 +1542630,0 +1542738,0 +1542738,0.036210018 +1542744,0.036210018 +1542744,0 +1542852,0 +1542852,0.17607121 +1542858,0.17607121 +1542858,0 +1542966,0 +1542966,0.1495172 +1542978,0.1495172 +1542978,0 +1543086,0 +1543086,0.13789982 +1543164,0.13789982 +1543164,0 +1543200,0 +1543200,0.0031683766 +1543206,0.0031683766 +1543206,0 +1543314,0 +1543314,0.16656608 +1543356,0.16656608 +1543356,0 +1543434,0 +1543434,0.17833434 +1543542,0.17833434 +1543542,0 +1543548,0 +1543548,0.28500302 +1543554,0.28500302 +1543554,0 +1544412,0 +1544412,0.28877489 +1544580,0.28877489 +1544580,0 +1545066,0 +1545066,0.0073928787 +1545096,0.0073928787 +1545096,0 +1545186,0 +1545186,0.14785757 +1545192,0.14785757 +1545192,0 +1545300,0 +1545300,0.21756186 +1545318,0.21756186 +1545318,0 +1545414,0 +1545414,0.086451418 +1545420,0.086451418 +1545420,0 +1545534,0 +1545534,0.11451418 +1545546,0.11451418 +1545546,0 +1545648,0 +1545648,0.31547978 +1545696,0.31547978 +1545696,0 +1574100,0 +1574100,0.10908268 +1574118,0.10908268 +1574118,0 +1574214,0 +1574214,0.15525045 +1574256,0.15525045 +1574256,0 +1574328,0 +1574328,0.064272782 +1574340,0.064272782 +1574340,0 +1574448,0 +1574448,0.29465902 +1574490,0.29465902 +1574490,0 +1574562,0 +1574562,0.1083283 +1574664,0.1083283 +1574664,0 +1574676,0 +1574676,0.27368739 +1574694,0.27368739 +1574694,0 +1581168,0 +1581168,0.032287266 +1581186,0.032287266 +1581186,0 +1583424,0 +1583424,0.060199155 +1583430,0.060199155 +1583430,0 +1585782,0 +1585782,0.11210018 +1585818,0.11210018 +1585818,0 +1585896,0 +1585896,0.17501509 +1585950,0.17501509 +1585950,0 +1586010,0 +1586010,0.17576946 +1586022,0.17576946 +1586022,0 +1588404,0 +1588404,0.2457755 +1588440,0.2457755 +1588440,0 +1592112,0 +1592112,0.18376584 +1592142,0.18376584 +1592142,0 +1596546,0 +1596546,0.26508751 +1596594,0.26508751 +1596594,0 +1600536,0 +1600536,0.22027761 +1600584,0.22027761 +1600584,0 +1610898,0 +1610898,0.013126132 +1610904,0.013126132 +1610904,0 +1611600,0 +1611600,0.26674713 +1611714,0.26674713 +1611714,0 +1613790,0 +1613790,0.26946288 +1613802,0.26946288 +1613802,0 +1613904,0 +1613904,0.070006035 +1613976,0.070006035 +1613976,0 +1614018,0 +1614018,0.078304164 +1614024,0.078304164 +1614024,0 +1617762,0 +1617762,0.059897405 +1617768,0.059897405 +1617768,0 +1618476,0 +1618476,0.11496681 +1618512,0.11496681 +1618512,0 +1618938,0 +1618938,0.30642728 +1618974,0.30642728 +1618974,0 +1619052,0 +1619052,0.097012674 +1619088,0.097012674 +1619088,0 +1619166,0 +1619166,0.086904043 +1619184,0.086904043 +1619184,0 +1619286,0 +1619286,0.21756186 +1619328,0.21756186 +1619328,0 +1619628,0 +1619628,0.092184671 +1619646,0.092184671 +1619646,0 +1619904,0 +1619904,0.21876886 +1619946,0.21876886 +1619946,0 +1620408,0 +1620408,0.099426675 +1620414,0.099426675 +1620414,0 +1620528,0 +1620528,0.17003621 +1620540,0.17003621 +1620540,0 +1620642,0 +1620642,0.10214243 +1620672,0.10214243 +1620672,0 +1621098,0 +1621098,0.0084490042 +1621104,0.0084490042 +1621104,0 +1621212,0 +1621212,0.1071213 +1621230,0.1071213 +1621230,0 +1621326,0 +1621326,0.17939046 +1621386,0.17939046 +1621386,0 +1627482,0 +1627482,0.047827399 +1627494,0.047827399 +1627494,0 +1627602,0 +1627602,0.041038021 +1627608,0.041038021 +1627608,0 +1627716,0 +1627716,0.12311406 +1627764,0.12311406 +1627764,0 +1641546,0 +1641546,0.0052806276 +1641552,0.0052806276 +1641552,0 +1668396,0 +1668396,0.19704285 +1668402,0.19704285 +1668402,0 +1668510,0 +1668510,0.1931201 +1668516,0.1931201 +1668516,0 +1671648,0 +1671648,0.18210622 +1671654,0.18210622 +1671654,0 +1673010,0 +1673010,0.10033193 +1673016,0.10033193 +1673016,0 +1682208,0 +1682208,0.17139409 +1682316,0.17139409 +1682316,0 +1682322,0 +1682322,0.28681352 +1682328,0.28681352 +1682328,0 +1682442,0 +1682442,0.012371756 +1682448,0.012371756 +1682448,0 +1682556,0 +1682556,0.34640917 +1682628,0.34640917 +1682628,0 +1682670,0 +1682670,0.13578757 +1682706,0.13578757 +1682706,0 +1682784,0 +1682784,0.12341581 +1682808,0.12341581 +1682808,0 +1682904,0 +1682904,0.2469825 +1682922,0.2469825 +1682922,0 +1683018,0 +1683018,0.23989137 +1683054,0.23989137 +1683054,0 +1683378,0 +1683378,0.22118286 +1683420,0.22118286 +1683420,0 +1683492,0 +1683492,0.27595051 +1683552,0.27595051 +1683552,0 +1683612,0 +1683612,0.090223295 +1683630,0.090223295 +1683630,0 +1683726,0 +1683726,0.1991551 +1683798,0.1991551 +1683798,0 +1683840,0 +1683840,0.2003621 +1683930,0.2003621 +1683930,0 +1683954,0 +1683954,0.078605914 +1683960,0.078605914 +1683960,0 +1684074,0 +1684074,0.096258298 +1684086,0.096258298 +1684086,0 +1684188,0 +1684188,0.20262523 +1684272,0.20262523 +1684272,0 +1684302,0 +1684302,0.23611949 +1684374,0.23611949 +1684374,0 +1684422,0 +1684422,0.21439348 +1684482,0.21439348 +1684482,0 +1684536,0 +1684536,0.31578153 +1684560,0.31578153 +1684560,0 +1684650,0 +1684650,0.27549789 +1684662,0.27549789 +1684662,0 +1684770,0 +1684770,0.01961376 +1684776,0.01961376 +1684776,0 +1684884,0 +1684884,0.18210622 +1684932,0.18210622 +1684932,0 +1685820,0 +1685820,0.16098371 +1685874,0.16098371 +1685874,0 +1687398,0 +1687398,0.045111648 +1687404,0.045111648 +1687404,0 +1688916,0 +1688916,0.13774894 +1688940,0.13774894 +1688940,0 +1689030,0 +1689030,0.12190706 +1689108,0.12190706 +1689108,0 +1693566,0 +1693566,0.052202776 +1693590,0.052202776 +1693590,0 +1693680,0 +1693680,0.14785757 +1693758,0.14785757 +1693758,0 +1698006,0 +1698006,0.058690404 +1698042,0.058690404 +1698042,0 +1706322,0 +1706322,0.28590827 +1706436,0.079209415 +1706436,0 +1706442,0 +1706442,0.079209415 +1706484,0.28590827 +1706484,0 +1707534,0 +1707534,0.029571515 +1707540,0.029571515 +1707540,0 +1710690,0 +1710690,0.12175619 +1710696,0.12175619 +1710696,0 +1713546,0 +1713546,0.21243211 +1713564,0.21243211 +1713564,0 +1715244,0 +1715244,0.33992154 +1715280,0.33992154 +1715280,0 +1715358,0 +1715358,0.12386844 +1715364,0.12386844 +1715364,0 +1715472,0 +1715472,0.2911889 +1715586,0.2911889 +1715586,0 +1715592,0 +1715592,0.0081472541 +1715610,0.0081472541 +1715610,0 +1720992,0 +1720992,0.29571515 +1721016,0.29571515 +1721016,0 +1721112,0 +1721112,0.12673506 +1721124,0.12673506 +1721124,0 +1721226,0 +1721226,0.20141823 +1721232,0.20141823 +1721232,0 +1724160,0 +1724160,0.17682559 +1724202,0.17682559 +1724202,0 +1750758,0 +1750758,0.16022933 +1750788,0.16022933 +1750788,0 +1752306,0 +1752306,0.0073928787 +1752384,0.0073928787 +1752384,0 +1752420,0 +1752420,0.026855763 +1752426,0.026855763 +1752426,0 +1752534,0 +1752534,0.22917924 +1752654,0.1507242 +1752654,0 +1752684,0 +1752684,0.1507242 +1752720,0.22917924 +1752720,0 +1753986,0 +1753986,0.032136391 +1753992,0.032136391 +1753992,0 +1754934,0 +1754934,0.17592034 +1754952,0.17592034 +1754952,0 +1759134,0 +1759134,0.028666264 +1759212,0.028666264 +1759212,0 +1765068,0 +1765068,0.033645142 +1765080,0.033645142 +1765080,0 +1765296,0 +1765296,0.063367532 +1765344,0.063367532 +1765344,0 +1782936,0 +1782936,0.063065782 +1782942,0.063065782 +1782942,0 +1783050,0 +1783050,0.31563066 +1783098,0.31563066 +1783098,0 +1784568,0 +1784568,0.38231744 +1784646,0.38231744 +1784646,0 +1789020,0 +1789020,0.37492456 +1789068,0.37492456 +1789068,0 +1790130,0 +1790130,0.16777308 +1790136,0.16777308 +1790136,0 +1790244,0 +1790244,0.14544357 +1790274,0.14544357 +1790274,0 +1790808,0 +1790808,0.13971032 +1790814,0.13971032 +1790814,0 +1791114,0 +1791114,0.19960772 +1791156,0.19960772 +1791156,0 +1791228,0 +1791228,0.047073024 +1791258,0.047073024 +1791258,0 +1791348,0 +1791348,0.058388654 +1791462,0.038624019 +1791462,0 +1791468,0 +1791468,0.038624019 +1791486,0.058388654 +1791486,0 +1791504,0 +1791504,0.14604707 +1791516,0.14604707 +1791516,0 +1791576,0 +1791576,0.091279421 +1791618,0.35983705 +1791618,0 +1791624,0 +1791624,0.35983705 +1791642,0.091279421 +1791642,0 +1791732,0 +1791732,0.20971635 +1791840,0.20971635 +1791840,0 +1794732,0 +1794732,0.033494267 +1794798,0.033494267 +1794798,0 +1794846,0 +1794846,0.23702474 +1794852,0.23702474 +1794852,0 +1794960,0 +1794960,0.0075437538 +1795002,0.0075437538 +1795002,0 +1797624,0 +1797624,0.18074834 +1797690,0.18074834 +1797690,0 +1798704,0 +1798704,0.072269161 +1798818,0.072420036 +1798818,0 +1798824,0 +1798824,0 +1798824,0.072420036 +1798824,0.072269161 +1798932,0 +1798932,0.12990344 +1798968,0.12990344 +1798968,0 +1801416,0 +1801416,0.22254074 +1801422,0.22254074 +1801422,0 +1801530,0 +1801530,0.27232951 +1801566,0.27232951 +1801566,0 +1801644,0 +1801644,0.14001207 +1801674,0.14001207 +1801674,0 +1801764,0 +1801764,0.22933011 +1801782,0.22933011 +1801782,0 +1801878,0 +1801878,0.35365118 +1801902,0.35365118 +1801902,0 +1803180,0 +1803180,0.17954134 +1803192,0.17954134 +1803192,0 +1810134,0 +1810134,0.13986119 +1810140,0.13986119 +1810140,0 +1824690,0 +1824690,0.071062161 +1824726,0.071062161 +1824726,0 +1840182,0 +1840182,0.3516898 +1840236,0.21001811 +1840236,0 +1840242,0 +1840242,0.21001811 +1840464,0.3516898 +1840464,0 +1845066,0 +1845066,0.33283042 +1845072,0.33283042 +1845072,0 +1849392,0 +1849392,0.091279421 +1849404,0.091279421 +1849404,0 +1850262,0 +1850262,0.21967411 +1850316,0.21967411 +1850316,0 +1850376,0 +1850376,0.14544357 +1850388,0.14544357 +1850388,0 +1850490,0 +1850490,0.14755582 +1850526,0.14755582 +1850526,0 +1850610,0 +1850610,0.086149668 +1850646,0.086149668 +1850646,0 +1852932,0 +1852932,0.10093543 +1852950,0.10093543 +1852950,0 +1859100,0 +1859100,0.21016898 +1859148,0.21016898 +1859148,0 +1860624,0 +1860624,0.33735667 +1860690,0.33735667 +1860690,0 +1863840,0 +1863840,0.17184671 +1863930,0.17184671 +1863930,0 +1863954,0 +1863954,0.10863005 +1864026,0.10863005 +1864026,0 +1864074,0 +1864074,0.24788775 +1864080,0.24788775 +1864080,0 +1864188,0 +1864188,0.26508751 +1864266,0.26508751 +1864266,0 +1865082,0 +1865082,0.27051901 +1865178,0.27051901 +1865178,0 +1866390,0 +1866390,0.02972239 +1866414,0.02972239 +1866414,0 +1866504,0 +1866504,0.17531684 +1866594,0.17531684 +1866594,0 +1866624,0 +1866624,0.25709113 +1866654,0.25709113 +1866654,0 +1870500,0 +1870500,0.11149668 +1870518,0.11149668 +1870518,0 +1870614,0 +1870614,0.0073928787 +1870680,0.0073928787 +1870680,0 +1870734,0 +1870734,0.092939046 +1870836,0.092939046 +1870836,0 +1870848,0 +1870848,0.10908268 +1870854,0.10908268 +1870854,0 +1873854,0 +1873854,0.31231141 +1873866,0.31231141 +1873866,0 +1873968,0 +1873968,0.26885938 +1873998,0.26885938 +1873998,0 +1878372,0 +1878372,0.094146047 +1878402,0.094146047 +1878402,0 +1881996,0 +1881996,0.21047073 +1882026,0.21047073 +1882026,0 +1886622,0 +1886622,0.034097767 +1886628,0.034097767 +1886628,0 +1886736,0 +1886736,0.0052806276 +1886742,0.0052806276 +1886742,0 +1889370,0 +1889370,0.16158721 +1889394,0.16158721 +1889394,0 +1889490,0 +1889490,0.18768859 +1889532,0.18768859 +1889532,0 +1889604,0 +1889604,0.071062161 +1889658,0.071062161 +1889658,0 +1889718,0 +1889718,0.19206397 +1889748,0.19206397 +1889748,0 +1898646,0 +1898646,0.026554013 +1898742,0.026554013 +1898742,0 +1898760,0 +1898760,0.13593844 +1898790,0.13593844 +1898790,0 +1898874,0 +1898874,0.11179843 +1898898,0.11179843 +1898898,0 +1925268,0 +1925268,0.056276403 +1925310,0.056276403 +1925310,0 +1928958,0 +1928958,0.25799638 +1929150,0.25799638 +1929150,0 +1929546,0 +1929546,0.24109837 +1929696,0.24109837 +1929696,0 +1930116,0 +1930116,0.36164756 +1930128,0.26508751 +1930128,0 +1930200,0 +1930200,0.36164756 +1930224,0.26508751 +1930224,0 +1930716,0 +1930716,0.24321062 +1930776,0.24321062 +1930776,0 +1932330,0 +1932330,0.17320459 +1932402,0.17320459 +1932402,0 +1932450,0 +1932450,0.18240797 +1932474,0.18240797 +1932474,0 +1932564,0 +1932564,0.098974049 +1932576,0.098974049 +1932576,0 +1932678,0 +1932678,0.16143633 +1932696,0.16143633 +1932696,0 +1932798,0 +1932798,0.07936029 +1932804,0.07936029 +1932804,0 +1932912,0 +1932912,0.24592637 +1932918,0.24592637 +1932918,0 +1933026,0 +1933026,0.17833434 +1933050,0.17833434 +1933050,0 +1933146,0 +1933146,0.27655401 +1933176,0.27655401 +1933176,0 +1933260,0 +1933260,0.18180447 +1933362,0.18180447 +1933362,0 +1933374,0 +1933374,0.31095353 +1933380,0.31095353 +1933380,0 +1933488,0 +1933488,0.066686783 +1933608,0.34127942 +1933608,0 +1933626,0 +1933626,0 +1933626,0.34127942 +1933626,0.066686783 +1935072,0 +1935072,0.23038624 +1935120,0.23038624 +1935120,0 +1945470,0 +1945470,0.065781533 +1945530,0.065781533 +1945530,0 +1945584,0 +1945584,0.024290887 +1945590,0.024290887 +1945590,0 +1945704,0 +1945704,0.045111648 +1945728,0.045111648 +1945728,0 +1962480,0 +1962480,0.09007242 +1962534,0.09007242 +1962534,0 +1962594,0 +1962594,0.19900422 +1962600,0.19900422 +1962600,0 +1962714,0 +1962714,0.19462885 +1962786,0.19462885 +1962786,0 +1963476,0 +1963476,0.15087508 +1963482,0.15087508 +1963482,0 +1970358,0 +1970358,0.18286059 +1970364,0.18286059 +1970364,0 +1970478,0 +1970478,0.32015691 +1970562,0.32015691 +1970562,0 +1970592,0 +1970592,0.26282438 +1970658,0.17365721 +1970658,0 +1970664,0 +1970664,0.17365721 +1970742,0.17184671 +1970742,0 +1970754,0 +1970754,0.26282438 +1970778,0 +1970778,0 +1970778,0.087658419 +1970778,0.17184671 +1970784,0.087658419 +1970784,0 +1972380,0 +1972380,0.26161738 +1972386,0.26161738 +1972386,0 +1982148,0 +1982148,0.11028968 +1982208,0.11028968 +1982208,0 +1983198,0 +1983198,0.26161738 +1983204,0.26161738 +1983204,0 +1983312,0 +1983312,0.22389861 +1983336,0.22389861 +1983336,0 +1983426,0 +1983426,0.17667471 +1983438,0.17667471 +1983438,0 +1983534,0 +1983534,0.30280628 +1983546,0.30280628 +1983546,0 +1983564,0 +1983564,0.15404345 +1983636,0.15404345 +1983636,0 +1983678,0 +1983678,0.033192517 +1983696,0.033192517 +1983696,0 +1983798,0 +1983798,0.16324683 +1983816,0.16324683 +1983816,0 +1983912,0 +1983912,0.083886542 +1983942,0.083886542 +1983942,0 +1984026,0 +1984026,0.014785757 +1984050,0.014785757 +1984050,0 +1984146,0 +1984146,0.18391672 +1984164,0.18391672 +1984164,0 +1988214,0 +1988214,0.28138202 +1988232,0.28138202 +1988232,0 +2009364,0 +2009364,0.0073928787 +2009382,0.0073928787 +2009382,0 +2009484,0 +2009484,0.011315631 +2009490,0.011315631 +2009490,0 +2014254,0 +2014254,0.15509958 +2014266,0.15509958 +2014266,0 +2016192,0 +2016192,0.16369946 +2016222,0.16369946 +2016222,0 +2016306,0 +2016306,0.33147254 +2016378,0.33147254 +2016378,0 +2016420,0 +2016420,0.10923355 +2016426,0.10923355 +2016426,0 +2016768,0 +2016768,0.0030175015 +2016774,0.0030175015 +2016774,0 +2026698,0 +2026698,0.29164152 +2026854,0.29164152 +2026854,0 +2028102,0 +2028102,0.23732649 +2028198,0.23732649 +2028198,0 +2028342,0 +2028342,0.11843693 +2028372,0.11843693 +2028372,0 +2028690,0 +2028690,0.22359686 +2028780,0.22359686 +2028780,0 +2029278,0 +2029278,0.26689801 +2029398,0.26689801 +2029398,0 +2029866,0 +2029866,0.19221485 +2029908,0.19221485 +2029908,0 +2030448,0 +2030448,0.22012674 +2030520,0.22012674 +2030520,0 +2031036,0 +2031036,0.24321062 +2031126,0.24321062 +2031126,0 +2037096,0 +2037096,0.23974049 +2037180,0.23974049 +2037180,0 +2040480,0 +2040480,0.21756186 +2040486,0.21756186 +2040486,0 +2040594,0 +2040594,0.27082076 +2040702,0.27082076 +2040702,0 +2040714,0 +2040714,0.18391672 +2040798,0.18391672 +2040798,0 +2042808,0 +2042808,0.18919734 +2042826,0.18919734 +2042826,0 +2042922,0 +2042922,0.20111648 +2043114,0.20111648 +2043114,0 +2048736,0 +2048736,0.062462281 +2048742,0.062462281 +2048742,0 +2048850,0 +2048850,0.11315631 +2048862,0.11315631 +2048862,0 +2052618,0 +2052618,0.12251056 +2052648,0.12251056 +2052648,0 +2058522,0 +2058522,0.28560652 +2058564,0.28560652 +2058564,0 +2058642,0 +2058642,0.098823174 +2058666,0.098823174 +2058666,0 +2058840,0 +2058840,0.25799638 +2058846,0.25799638 +2058846,0 +2058954,0 +2058954,0.11557031 +2058978,0.11557031 +2058978,0 +2062404,0 +2062404,0.093542547 +2062476,0.093542547 +2062476,0 +2065590,0 +2065590,0.12447194 +2065860,0.12447194 +2065860,0 +2066160,0 +2066160,0.1525347 +2066184,0.1525347 +2066184,0 +2068608,0 +2068608,0.10908268 +2068632,0.10908268 +2068632,0 +2087130,0 +2087130,0.31955341 +2087160,0.31955341 +2087160,0 +2091720,0 +2091720,0.1967411 +2091786,0.1967411 +2091786,0 +2091834,0 +2091834,0.33147254 +2091906,0.33147254 +2091906,0 +2091954,0 +2091954,0.20564273 +2092038,0.20564273 +2092038,0 +2096670,0 +2096670,0.19930597 +2096700,0.19930597 +2096700,0 +2103720,0 +2103720,0.32694629 +2103780,0.32694629 +2103780,0 +2103840,0 +2103840,0.27489439 +2103912,0.27489439 +2103912,0 +2103954,0 +2103954,0.07936029 +2104044,0.07936029 +2104044,0 +2104068,0 +2104068,0.074532287 +2104080,0.074532287 +2104080,0 +2107674,0 +2107674,0.0036210018 +2107680,0.0036210018 +2107680,0 +2107788,0 +2107788,0.12537719 +2107860,0.12537719 +2107860,0 +2115810,0 +2115810,0.077851539 +2115822,0.077851539 +2115822,0 +2119530,0 +2119530,0.19885335 +2119572,0.19885335 +2119572,0 +2123682,0 +2123682,0.19900422 +2124648,0.19900422 +2124648,0 +2126226,0 +2126226,0.17094146 +2126328,0.17094146 +2126328,0 +2130324,0 +2130324,0.094146047 +2130336,0.094146047 +2130336,0 +2130438,0 +2130438,0.13126132 +2130450,0.13126132 +2130450,0 +2130552,0 +2130552,0.22495474 +2130594,0.22495474 +2130594,0 +2135820,0 +2135820,0.27821364 +2135856,0.27821364 +2135856,0 +2135940,0 +2135940,0.20473748 +2135982,0.20473748 +2135982,0 +2136054,0 +2136054,0.044055522 +2136060,0.044055522 +2136060,0 +2136168,0 +2136168,0.16732046 +2136174,0.16732046 +2136174,0 +2136288,0 +2136288,0.11330718 +2136306,0.11330718 +2136306,0 +2136402,0 +2136402,0.090525045 +2136456,0.090525045 +2136456,0 +2137026,0 +2137026,0.37507544 +2137074,0.37507544 +2137074,0 +2137320,0 +2137320,0.23385637 +2137404,0.23385637 +2137404,0 +2137620,0 +2137620,0.29511165 +2137674,0.29511165 +2137674,0 +2137920,0 +2137920,0.27806276 +2137986,0.27806276 +2137986,0 +2141058,0 +2141058,0.20021123 +2141154,0.20021123 +2141154,0 +2141478,0 +2141478,0.31110441 +2141538,0.31110441 +2141538,0 +2141778,0 +2141778,0.54616777 +2141856,0.54616777 +2141856,0 +2142078,0 +2142078,0.32785154 +2142108,0.32785154 +2142108,0 +2142378,0 +2142378,0.41203983 +2142462,0.41203983 +2142462,0 +2145258,0 +2145258,0.21167773 +2145306,0.21167773 +2145306,0 +2145372,0 +2145372,0.1543452 +2145414,0.1543452 +2145414,0 +2145936,0 +2145936,0.14861195 +2145942,0.14861195 +2145942,0 +2146236,0 +2146236,0.41188896 +2146266,0.41188896 +2146266,0 +2146530,0 +2146530,0.3426373 +2146620,0.3426373 +2146620,0 +2146830,0 +2146830,0.33101992 +2146878,0.33101992 +2146878,0 +2148858,0 +2148858,0.23898612 +2148918,0.23898612 +2148918,0 +2181972,0 +2181972,0.14061557 +2182008,0.14061557 +2182008,0 +2193798,0 +2193798,0.16219071 +2193882,0.23747737 +2193882,0 +2193888,0 +2193888,0.23747737 +2193942,0.16219071 +2193942,0 +2197866,0 +2197866,0.14815932 +2197908,0.14815932 +2197908,0 +2203482,0 +2203482,0.36300543 +2203764,0.36300543 +2203764,0 +2207214,0 +2207214,0.1519312 +2207244,0.1519312 +2207244,0 +2212290,0 +2212290,0.051448401 +2212296,0.051448401 +2212296,0 +2212410,0 +2212410,0.077851539 +2212452,0.077851539 +2212452,0 +2212524,0 +2212524,0.030175015 +2212572,0.030175015 +2212572,0 +2212638,0 +2212638,0.2966204 +2212644,0.2966204 +2212644,0 +2212758,0 +2212758,0.18240797 +2212824,0.18240797 +2212824,0 +2212872,0 +2212872,0.17576946 +2212962,0.17576946 +2212962,0 +2212986,0 +2212986,0.078756789 +2212998,0.078756789 +2212998,0 +2213106,0 +2213106,0.18059747 +2213136,0.18059747 +2213136,0 +2213220,0 +2213220,0.0070911285 +2213256,0.0070911285 +2213256,0 +2216244,0 +2216244,0.087356669 +2216268,0.087356669 +2216268,0 +2217282,0 +2217282,0.057030779 +2217324,0.057030779 +2217324,0 +2217636,0 +2217636,0.27414001 +2217678,0.27414001 +2217678,0 +2217756,0 +2217756,0.20383223 +2217822,0.20383223 +2217822,0 +2220738,0 +2220738,0.058086904 +2220750,0.058086904 +2220750,0 +2228256,0 +2228256,0.10365118 +2228262,0.10365118 +2228262,0 +2229918,0 +2229918,0.10500905 +2229966,0.10500905 +2229966,0 +2233806,0 +2233806,0.24894387 +2233878,0.24894387 +2233878,0 +2234220,0 +2234220,0.075588413 +2234238,0.075588413 +2234238,0 +2234340,0 +2234340,0.30718165 +2234358,0.30718165 +2234358,0 +2234388,0 +2234388,0.18768859 +2234472,0.18768859 +2234472,0 +2234574,0 +2234574,0.10138805 +2234724,0.10138805 +2234724,0 +2234976,0 +2234976,0.18904647 +2235066,0.18904647 +2235066,0 +2235288,0 +2235288,0.0992758 +2235300,0.0992758 +2235300,0 +2235402,0 +2235402,0.045111648 +2235408,0.045111648 +2235408,0 +2235516,0 +2235516,0.26659626 +2235564,0.22057936 +2235564,0 +2235582,0 +2235582,0.26659626 +2235690,0.22057936 +2235690,0 +2236152,0 +2236152,0.23038624 +2236212,0.23038624 +2236212,0 +2237718,0 +2237718,0.12975256 +2237724,0.12975256 +2237724,0 +2239998,0 +2239998,0.25618588 +2240010,0.25618588 +2240010,0 +2247006,0 +2247006,0.014634882 +2247012,0.014634882 +2247012,0 +2267520,0 +2267520,0.17908871 +2267628,0.17908871 +2267628,0 +2271774,0 +2271774,0.32196741 +2271780,0.32196741 +2271780,0 +2271894,0 +2271894,0.15298733 +2271954,0.15298733 +2271954,0 +2272008,0 +2272008,0.26795413 +2272014,0.26795413 +2272014,0 +2272122,0 +2272122,0.15419433 +2272146,0.15419433 +2272146,0 +2273496,0 +2273496,0.04043452 +2273574,0.04043452 +2273574,0 +2292156,0 +2292156,0.3038624 +2292198,0.3038624 +2292198,0 +2296122,0 +2296122,0.1907061 +2296164,0.1907061 +2296164,0 +2301246,0 +2301246,0.044960772 +2301252,0.044960772 +2301252,0 +2308680,0 +2308680,0.19643935 +2308752,0.19643935 +2308752,0 +2314272,0 +2314272,0.26041038 +2314386,0 +2314386,0 +2314386,0.1507242 +2314386,0.26041038 +2314458,0.1507242 +2314458,0 +2314524,0 +2314524,0.27051901 +2314572,0.27051901 +2314572,0 +2314644,0 +2314644,0.11210018 +2314650,0.11210018 +2314650,0 +2315130,0 +2315130,0.27082076 +2315184,0.27082076 +2315184,0 +2315244,0 +2315244,0.0052806276 +2315250,0.0052806276 +2315250,0 +2320236,0 +2320236,0.18738684 +2320254,0.18738684 +2320254,0 +2320356,0 +2320356,0.33343392 +2320464,0.33343392 +2320464,0 +2323572,0 +2323572,0.1065178 +2323674,0.1065178 +2323674,0 +2323686,0 +2323686,0.16973446 +2323692,0.16973446 +2323692,0 +2324958,0 +2324958,0.24305975 +2325060,0.24305975 +2325060,0 +2326050,0 +2326050,0.21529873 +2326164,0.15298733 +2326164,0 +2326194,0 +2326194,0.15298733 +2326308,0.21529873 +2326308,0 +2331210,0 +2331210,0.23370549 +2331276,0.23370549 +2331276,0 +2343666,0 +2343666,0.071816536 +2343672,0.071816536 +2343672,0 +2343780,0 +2343780,0.27066989 +2343822,0.27066989 +2343822,0 +2343894,0 +2343894,0.28802052 +2343936,0.28802052 +2343936,0 +2344014,0 +2344014,0.21228123 +2344074,0.21228123 +2344074,0 +2344128,0 +2344128,0.29390465 +2344134,0.29390465 +2344134,0 +2344242,0 +2344242,0.20805673 +2344248,0.20805673 +2344248,0 +2345682,0 +2345682,0.27398914 +2345778,0.27398914 +2345778,0 +2358834,0 +2358834,0.27368739 +2358858,0.27368739 +2358858,0 +2358948,0 +2358948,0.24532287 +2358972,0.24532287 +2358972,0 +2359992,0 +2359992,0.044357272 +2360046,0.044357272 +2360046,0 +2364300,0 +2364300,0.15962583 +2364306,0.15962583 +2364306,0 +2364666,0 +2364666,0.17923959 +2364996,0.17923959 +2364996,0 +2366502,0 +2366502,0.20971635 +2366814,0.20971635 +2366814,0 +2369604,0 +2369604,0.0073928787 +2369658,0.0073928787 +2369658,0 +2369718,0 +2369718,0.16716958 +2369766,0.16716958 +2369766,0 +2370534,0 +2370534,0.16671696 +2370630,0.16671696 +2370630,0 +2371122,0 +2371122,0.23385637 +2371206,0.23385637 +2371206,0 +2371710,0 +2371710,0.17622209 +2371800,0.17622209 +2371800,0 +2372298,0 +2372298,0.23627037 +2372394,0.23627037 +2372394,0 +2375388,0 +2375388,0.12175619 +2375436,0.12175619 +2375436,0 +2379936,0 +2379936,0.18648159 +2379996,0.18648159 +2379996,0 +2380518,0 +2380518,0.21258298 +2380596,0.21258298 +2380596,0 +2381106,0 +2381106,0.18436934 +2381190,0.18436934 +2381190,0 +2381694,0 +2381694,0.22404949 +2381796,0.22404949 +2381796,0 +2382282,0 +2382282,0.25995775 +2382336,0.25995775 +2382336,0 +2383062,0 +2383062,0.24834037 +2383116,0.24834037 +2383116,0 +2387898,0 +2387898,0.48928787 +2388150,0.48928787 +2388150,0 +2389602,0 +2389602,0.066837658 +2389614,0.066837658 +2389614,0 +2389716,0 +2389716,0.19161135 +2389728,0.19161135 +2389728,0 +2394378,0 +2394378,0.082377791 +2394384,0.082377791 +2394384,0 +2396508,0 +2396508,0.074834037 +2396526,0.074834037 +2396526,0 +2396622,0 +2396622,0.10697043 +2396646,0.10697043 +2396646,0 +2396814,0 +2396814,0.0072420036 +2396826,0.0072420036 +2396826,0 +2396928,0 +2396928,0.22254074 +2396952,0.22254074 +2396952,0 +2400216,0 +2400216,0.38624019 +2400978,0.41249246 +2400978,0 +2401038,0 +2401038,0.38624019 +2401890,0.41249246 +2401890,0 +2417106,0 +2417106,0.15404345 +2417124,0.15404345 +2417124,0 +2417220,0 +2417220,0.11662643 +2417286,0.11662643 +2417286,0 +2439528,0 +2439528,0.33599879 +2439534,0.33599879 +2439534,0 +2444424,0 +2444424,0.22404949 +2444466,0.22404949 +2444466,0 +2444544,0 +2444544,0.080416415 +2444556,0.080416415 +2444556,0 +2445402,0 +2445402,0.4091732 +2445732,0.4091732 +2445732,0 +2448534,0 +2448534,0.044508147 +2448546,0.044508147 +2448546,0 +2455326,0 +2455326,0.056879903 +2455332,0.056879903 +2455332,0 +2455446,0 +2455446,0.2493965 +2455458,0.2493965 +2455458,0 +2460468,0 +2460468,0.18738684 +2460504,0.18738684 +2460504,0 +2465748,0 +2465748,0.17033796 +2465790,0.17033796 +2465790,0 +2467392,0 +2467392,0.0081472541 +2467416,0.0081472541 +2467416,0 +2468304,0 +2468304,0.11662643 +2468316,0.11662643 +2468316,0 +2482368,0 +2482368,0.20262523 +2482488,0.20262523 +2482488,0 +2491146,0 +2491146,0.251207 +2491170,0.251207 +2491170,0 +2494752,0 +2494752,0.17637296 +2494854,0.17637296 +2494854,0 +2495340,0 +2495340,0.2088111 +2495394,0.2088111 +2495394,0 +2495922,0 +2495922,0.15208208 +2496012,0.15208208 +2496012,0 +2496510,0 +2496510,0.19357272 +2496576,0.19357272 +2496576,0 +2527740,0 +2527740,0.065932408 +2527746,0.065932408 +2527746,0 +2532186,0 +2532186,0.23370549 +2532282,0.23370549 +2532282,0 +2532300,0 +2532300,0.11028968 +2532318,0.11028968 +2532318,0 +2534418,0 +2534418,0.16566083 +2534544,0.16566083 +2534544,0 +2535192,0 +2535192,0.15600483 +2535216,0.15600483 +2535216,0 +2535282,0 +2535282,0.18391672 +2535330,0.18391672 +2535330,0 +2535396,0 +2535396,0.16611346 +2535444,0.29028365 +2535444,0 +2535450,0 +2535450,0.29028365 +2535498,0.16611346 +2535498,0 +2536404,0 +2536404,0.082528666 +2536470,0.082528666 +2536470,0 +2537574,0 +2537574,0.17456246 +2537646,0.17456246 +2537646,0 +2537688,0 +2537688,0.12552806 +2537700,0.12552806 +2537700,0 +2537802,0 +2537802,0.03002414 +2537916,0.19779722 +2537916,0 +2537922,0 +2537922,0.03002414 +2537952,0.19779722 +2537952,0 +2543430,0 +2543430,0.063971032 +2543466,0.063971032 +2543466,0 +2545794,0 +2545794,0.23098974 +2545866,0.23098974 +2545866,0 +2547252,0 +2547252,0.41837658 +2547696,0.41837658 +2547696,0 +2549082,0 +2549082,0.65223295 +2549592,0.65223295 +2549592,0 +2552724,0 +2552724,0.18391672 +2552784,0.18391672 +2552784,0 +2571720,0 +2571720,0.28334339 +2571738,0.28334339 +2571738,0 +2575632,0 +2575632,0.036662643 +2575644,0.036662643 +2575644,0 +2577084,0 +2577084,0.41219071 +2577348,0.41219071 +2577348,0 +2580534,0 +2580534,0.026855763 +2580540,0.026855763 +2580540,0 +2580648,0 +2580648,0.25045263 +2580672,0.25045263 +2580672,0 +2581800,0 +2581800,0.41007846 +2582520,0.41007846 +2582520,0 +2583636,0 +2583636,0.3492758 +2583990,0.3492758 +2583990,0 +2584302,0 +2584302,0.003922752 +2584308,0.003922752 +2584308,0 +2584422,0 +2584422,0.095654798 +2584434,0.095654798 +2584434,0 +2586096,0 +2586096,0.087960169 +2586102,0.087960169 +2586102,0 +2586804,0 +2586804,0.061858781 +2586810,0.061858781 +2586810,0 +2611044,0 +2611044,0.21680748 +2611098,0.21680748 +2611098,0 +2617254,0 +2617254,0.0076946288 +2617368,0.22812311 +2617368,0 +2617374,0 +2617374,0.22812311 +2617398,0.0076946288 +2617398,0 +2623500,0 +2623500,0.042395896 +2623518,0.042395896 +2623518,0 +2625708,0 +2625708,0.038624019 +2625714,0.038624019 +2625714,0 +2625822,0 +2625822,0.1531382 +2625864,0.1531382 +2625864,0 +2629710,0 +2629710,0.3504828 +2629722,0.3504828 +2629722,0 +2630964,0 +2630964,0.26780326 +2631018,0.26780326 +2631018,0 +2631078,0 +2631078,0.31925166 +2631126,0.31925166 +2631126,0 +2638338,0 +2638338,0.35546168 +2638356,0.35546168 +2638356,0 +2640204,0 +2640204,0.3522933 +2640258,0.3522933 +2640258,0 +2644296,0 +2644296,0.64785757 +2644536,0.64785757 +2644536,0 +2647962,0 +2647962,0.01041038 +2647968,0.01041038 +2647968,0 +2650656,0 +2650656,0.14574532 +2650668,0.14574532 +2650668,0 +2654994,0 +2654994,0.033645142 +2655006,0.033645142 +2655006,0 +2657304,0 +2657304,0.058690404 +2657382,0.058690404 +2657382,0 +2657424,0 +2657424,0.025045263 +2657430,0.025045263 +2657430,0 +2658672,0 +2658672,0.054465902 +2658678,0.054465902 +2658678,0 +2658786,0 +2658786,0.050995775 +2658816,0.050995775 +2658816,0 +2659506,0 +2659506,0.23476162 +2659524,0.23476162 +2659524,0 +2660226,0 +2660226,0.094447797 +2660256,0.094447797 +2660256,0 +2660346,0 +2660346,0.16777308 +2660370,0.16777308 +2660370,0 +2660460,0 +2660460,0.2021726 +2660466,0.2021726 +2660466,0 +2663094,0 +2663094,0.28077852 +2663106,0.28077852 +2663106,0 +2663208,0 +2663208,0.033343392 +2663214,0.033343392 +2663214,0 +2663856,0 +2663856,0.3092939 +2663958,0.3092939 +2663958,0 +2667276,0 +2667276,0.19281835 +2667324,0.19281835 +2667324,0 +2667414,0 +2667414,0.073928787 +2667636,0.073928787 +2667636,0 +2668314,0 +2668314,0.28968014 +2668344,0.28968014 +2668344,0 +2669040,0 +2669040,0.34369342 +2669136,0.34369342 +2669136,0 +2688204,0 +2688204,0.057785154 +2688324,0.057785154 +2688324,0 +2693460,0 +2693460,0.12582981 +2693466,0.12582981 +2693466,0 +2694030,0 +2694030,0.29435727 +2694078,0.29435727 +2694078,0 +2700414,0 +2700414,0.21031986 +2700426,0.21031986 +2700426,0 +2710842,0 +2710842,0.15811708 +2710902,0.04043452 +2710902,0 +2710908,0 +2710908,0 +2710908,0.15811708 +2710908,0.04043452 +2711016,0 +2711016,0.094447797 +2711040,0.094447797 +2711040,0 +2711130,0 +2711130,0.246379 +2711184,0.246379 +2711184,0 +2711424,0 +2711424,0.245172 +2711496,0.245172 +2711496,0 +2712012,0 +2712012,0.16792396 +2712078,0.16792396 +2712078,0 +2712600,0 +2712600,0.19689197 +2712702,0.19689197 +2712702,0 +2713188,0 +2713188,0.20473748 +2713272,0.20473748 +2713272,0 +2716278,0 +2716278,0.31683766 +2716314,0.31683766 +2716314,0 +2725224,0 +2725224,0.16958358 +2725230,0.16958358 +2725230,0 +2725344,0 +2725344,0.19643935 +2725350,0.19643935 +2725350,0 +2728602,0 +2728602,0.13699457 +2728626,0.13699457 +2728626,0 +2728812,0 +2728812,0.33690404 +2729154,0.33690404 +2729154,0 +2730642,0 +2730642,0.34127942 +2730720,0.015691008 +2730720,0 +2730726,0 +2730726,0.015691008 +2730834,0.33524442 +2730834,0 +2730894,0 +2730894,0.33524442 +2730930,0.34127942 +2730930,0 +2733540,0 +2733540,0.30235365 +2733594,0.30235365 +2733594,0 +2738844,0 +2738844,0.21801448 +2738856,0.21801448 +2738856,0 +2738958,0 +2738958,0.26025951 +2738964,0.26025951 +2738964,0 +2740224,0 +2740224,0.19402535 +2740248,0.19402535 +2740248,0 +2740338,0 +2740338,0.18286059 +2740386,0.18286059 +2740386,0 +2743086,0 +2743086,0.030476765 +2743092,0.030476765 +2743092,0 +2743296,0 +2743296,0.25754375 +2743326,0.25754375 +2743326,0 +2743410,0 +2743410,0.13820157 +2743446,0.13820157 +2743446,0 +2750922,0 +2750922,0.0082981291 +2750946,0.0082981291 +2750946,0 +2755812,0 +2755812,0.28108027 +2755842,0.28108027 +2755842,0 +2756814,0 +2756814,0.091581171 +2756880,0.091581171 +2756880,0 +2756886,0 +2756886,0.013578757 +2756958,0.013578757 +2756958,0 +2779554,0 +2779554,0.041792396 +2779584,0.041792396 +2779584,0 +2793504,0 +2793504,0.032589016 +2793510,0.032589016 +2793510,0 +2799006,0 +2799006,0.14695232 +2799036,0.14695232 +2799036,0 +2799126,0 +2799126,0.25196138 +2799192,0.25196138 +2799192,0 +2799240,0 +2799240,0.28077852 +2799330,0.28077852 +2799330,0 +2799342,0 +2799342,0.35304768 +2799354,0.064121907 +2799354,0 +2799462,0 +2799462,0.064121907 +2799474,0.050090525 +2799474,0 +2799480,0 +2799480,0.050090525 +2799588,0.33660229 +2799588,0 +2799702,0 +2799702,0.021726011 +2799708,0.021726011 +2799708,0 +2799726,0 +2799726,0.33660229 +2799822,0.0045262523 +2799822,0 +2799828,0 +2799828,0.0045262523 +2799888,0.35304768 +2799888,0 +2799936,0 +2799936,0.20006035 +2799960,0.20006035 +2799960,0 +2800050,0 +2800050,0.023989137 +2800056,0.023989137 +2800056,0 +2800170,0 +2800170,0.43452022 +2800176,0.43452022 +2800176,0 +2800284,0 +2800284,0.15087508 +2800398,0.16219071 +2800398,0 +2800410,0 +2800410,0.15087508 +2800440,0.16219071 +2800440,0 +2800518,0 +2800518,0.28062764 +2800530,0.28062764 +2800530,0 +2801172,0 +2801172,0.40706095 +2801466,0.40706095 +2801466,0 +2803884,0 +2803884,0.30582378 +2803908,0.30582378 +2803908,0 +2807664,0 +2807664,0.24909475 +2808558,0.24909475 +2808558,0 +2809170,0 +2809170,0.28545564 +2809176,0.28545564 +2809176,0 +2809284,0 +2809284,0.00090525045 +2809290,0.00090525045 +2809290,0 +2809398,0 +2809398,0.24954737 +2809452,0.24954737 +2809452,0 +2826726,0 +2826726,0.0070911285 +2826732,0.0070911285 +2826732,0 +2826876,0 +2826876,0.097465299 +2826900,0.097465299 +2826900,0 +2826990,0 +2826990,0.29149065 +2827026,0.29149065 +2827026,0 +2829510,0 +2829510,0.15389258 +2829522,0.15389258 +2829522,0 +2829624,0 +2829624,0.14785757 +2829648,0.14785757 +2829648,0 +2829828,0 +2829828,0.12929994 +2829924,0.12929994 +2829924,0 +2829942,0 +2829942,0.28515389 +2829948,0.28515389 +2829948,0 +2830056,0 +2830056,0.17863609 +2830092,0.17863609 +2830092,0 +2830416,0 +2830416,0.34173205 +2830596,0.34173205 +2830596,0 +2832588,0 +2832588,0.097163549 +2832600,0.097163549 +2832600,0 +2833032,0 +2833032,0.06985516 +2833044,0.06985516 +2833044,0 +2833332,0 +2833332,0.17667471 +2833410,0.17667471 +2833410,0 +2841000,0 +2841000,0.24803862 +2841078,0.24803862 +2841078,0 +2841114,0 +2841114,0.0075437538 +2841228,0.24954737 +2841228,0 +2841258,0 +2841258,0.24954737 +2841300,0.0075437538 +2841300,0 +2841348,0 +2841348,0.22601086 +2841372,0.22601086 +2841372,0 +2841462,0 +2841462,0.28470127 +2841480,0.28470127 +2841480,0 +2841576,0 +2841576,0.28802052 +2841606,0.28802052 +2841606,0 +2841696,0 +2841696,0.18361497 +2841732,0.18361497 +2841732,0 +2841810,0 +2841810,0.1458962 +2841918,0.1458962 +2841918,0 +2841924,0 +2841924,0.12039831 +2841930,0.12039831 +2841930,0 +2842044,0 +2842044,0.0073928787 +2842056,0.0073928787 +2842056,0 +2843706,0 +2843706,0.030476765 +2843712,0.030476765 +2843712,0 +2843820,0 +2843820,0.31170791 +2843850,0.31170791 +2843850,0 +2843940,0 +2843940,0.16324683 +2843976,0.16324683 +2843976,0 +2844054,0 +2844054,0.28349427 +2844120,0.28349427 +2844120,0 +2844876,0 +2844876,0.27157514 +2844912,0.27157514 +2844912,0 +2845278,0 +2845278,0.11662643 +2845374,0.11662643 +2845374,0 +2845398,0 +2845398,0.057332529 +2845452,0.057332529 +2845452,0 +2845512,0 +2845512,0.22616174 +2845548,0.22616174 +2845548,0 +2845626,0 +2845626,0.18859384 +2845746,0.14755582 +2845746,0 +2845752,0 +2845752,0.14755582 +2845770,0.18859384 +2845770,0 +2869968,0 +2869968,0.23596862 +2869992,0.23596862 +2869992,0 +2870082,0 +2870082,0.15419433 +2870166,0.15419433 +2870166,0 +2870202,0 +2870202,0.072872661 +2870208,0.072872661 +2870208,0 +2870316,0 +2870316,0.15706095 +2870328,0.15706095 +2870328,0 +2878308,0 +2878308,0.20443573 +2878338,0.20443573 +2878338,0 +2878428,0 +2878428,0.1991551 +2878434,0.1991551 +2878434,0 +2879874,0 +2879874,0.11270368 +2879940,0.11270368 +2879940,0 +2880144,0 +2880144,0.0058841279 +2880156,0.0058841279 +2880156,0 +2883924,0 +2883924,0.038020519 +2883930,0.038020519 +2883930,0 +2884614,0 +2884614,0.15389258 +2884632,0.15389258 +2884632,0 +2884728,0 +2884728,0.09957755 +2884758,0.09957755 +2884758,0 +2884800,0 +2884800,0.19628847 +2884818,0.19628847 +2884818,0 +2884848,0 +2884848,0.17275196 +2884896,0.17275196 +2884896,0 +2886630,0 +2886630,0.15841883 +2886786,0.15841883 +2886786,0 +2889252,0 +2889252,0.36134581 +2889342,0.36134581 +2889342,0 +2890710,0 +2890710,0.09067592 +2890716,0.09067592 +2890716,0 +2890824,0 +2890824,0.24607725 +2890860,0.24607725 +2890860,0 +2890944,0 +2890944,0.082076041 +2890962,0.082076041 +2890962,0 +2891436,0 +2891436,0.10259505 +2891442,0.10259505 +2891442,0 +2895240,0 +2895240,0.20805673 +2895270,0.20805673 +2895270,0 +2895354,0 +2895354,0.26855763 +2895450,0.26855763 +2895450,0 +2898516,0 +2898516,0.18980084 +2898546,0.18980084 +2898546,0 +2900316,0 +2900316,0.15781533 +2900364,0.15781533 +2900364,0 +2901846,0 +2901846,0.074381412 +2901852,0.074381412 +2901852,0 +2909838,0 +2909838,0.26991551 +2909880,0.26991551 +2909880,0 +2911476,0 +2911476,0.12884731 +2911506,0.12884731 +2911506,0 +2912292,0 +2912292,0.078002414 +2912298,0.078002414 +2912298,0 +2919450,0 +2919450,0.19930597 +2919564,0.0042245021 +2919564,0 +2919570,0 +2919570,0.0042245021 +2919600,0.19930597 +2919600,0 +2919684,0 +2919684,0.13171394 +2919696,0.13171394 +2919696,0 +2919798,0 +2919798,0.25769463 +2919894,0.25769463 +2919894,0 +2919912,0 +2919912,0.063367532 +2919936,0.063367532 +2919936,0 +2920032,0 +2920032,0.16505733 +2920086,0.16505733 +2920086,0 +2920146,0 +2920146,0.040585395 +2920206,0.040585395 +2920206,0 +2920260,0 +2920260,0.25407363 +2920278,0.25407363 +2920278,0 +2920380,0 +2920380,0.16566083 +2920404,0.16566083 +2920404,0 +2921652,0 +2921652,0.11707906 +2921658,0.11707906 +2921658,0 +2923134,0 +2923134,0.18165359 +2923140,0.18165359 +2923140,0 +2923542,0 +2923542,0.24864212 +2923566,0.24864212 +2923566,0 +2926656,0 +2926656,0.17471334 +2926680,0.17471334 +2926680,0 +2926776,0 +2926776,0.001961376 +2926782,0.001961376 +2926782,0 +2958426,0 +2958426,0.72902836 +2958774,0.72902836 +2958774,0 +2959482,0 +2959482,0.3535003 +2960322,0.3535003 +2960322,0 +2965320,0 +2965320,0.19357272 +2965380,0.19357272 +2965380,0 +2967288,0 +2967288,0.20202173 +2967312,0.20202173 +2967312,0 +2976300,0 +2976300,0.076342788 +2976306,0.076342788 +2976306,0 +2976414,0 +2976414,0.11934218 +2976468,0.11934218 +2976468,0 +2976528,0 +2976528,0.28334339 +2976534,0.28334339 +2976534,0 +2976648,0 +2976648,0.0036210018 +2976654,0.0036210018 +2976654,0 +2980500,0 +2980500,0.31246228 +2980518,0.31246228 +2980518,0 +2990754,0 +2990754,0.26463488 +2990760,0.26463488 +2990760,0 +2996340,0 +2996340,0.33328304 +2996346,0.33328304 +2996346,0 +2996922,0 +2996922,0.15706095 +2997000,0.15706095 +2997000,0 +2997390,0 +2997390,0.018105009 +2997396,0.018105009 +2997396,0 +2998986,0 +2998986,0 +2998986,0.21861798 +2998986,0.21710923 +2999004,0 +2999004,0 +2999004,0.21861798 +2999004,0.21710923 +2999100,0 +2999100,0.16430296 +2999256,0.16430296 +2999256,0 +2999268,0 +2999268,0.10757393 +2999286,0.10757393 +2999286,0 +2999388,0 +2999388,0.32860591 +2999400,0.32860591 +2999400,0 +2999502,0 +2999502,0.20534098 +2999550,0.20534098 +2999550,0 +2999598,0 +2999598,0.16686783 +2999616,0.084188292 +2999616,0 +2999670,0 +2999670,0.084188292 +2999736,0.26282438 +2999736,0 +2999844,0 +2999844,0.26282438 +2999850,0.17833434 +2999850,0 +2999928,0 +2999928,0.17833434 +2999964,0.22902836 +2999964,0 +2999970,0 +2999970,0 +2999970,0.22902836 +2999970,0.16686783 +3000084,0 +3000084,0.21710923 +3000156,0.21710923 +3000156,0 +3000198,0 +3000198,0.003922752 +3000204,0.003922752 +3000204,0 +3000792,0 +3000792,0.54918527 +3000798,0.54918527 +3000798,0 +3002076,0 +3002076,0.43452022 +3002082,0.43452022 +3002082,0 +3002196,0 +3002196,0.11345806 +3002214,0.11345806 +3002214,0 +3002310,0 +3002310,0.1997586 +3002358,0.1997586 +3002358,0 +3002424,0 +3002424,0.092788171 +3002442,0.092788171 +3002442,0 +3002544,0 +3002544,0.18346409 +3002580,0.18346409 +3002580,0 +3002658,0 +3002658,0.20368135 +3002670,0.20368135 +3002670,0 +3002700,0 +3002700,0.24562462 +3002760,0.24562462 +3002760,0 +3003708,0 +3003708,0.22601086 +3003750,0.22601086 +3003750,0 +3003840,0 +3003840,0.036813518 +3003846,0.036813518 +3003846,0 +3006378,0 +3006378,0.32966204 +3006420,0.32966204 +3006420,0 +3006492,0 +3006492,0.06035003 +3006498,0.06035003 +3006498,0 +3006612,0 +3006612,0.21001811 +3006654,0.21001811 +3006654,0 +3006726,0 +3006726,0.24245625 +3006858,0.24245625 +3006858,0 +3008196,0 +3008196,0.22344599 +3008244,0.22344599 +3008244,0 +3010572,0 +3010572,0.22933011 +3010644,0.22933011 +3010644,0 +3010686,0 +3010686,0.035606518 +3010698,0.035606518 +3010698,0 +3011322,0 +3011322,0.33252867 +3011436,0 +3011436,0 +3011436,0.059293905 +3011436,0.33252867 +3011448,0.059293905 +3011448,0 +3011550,0 +3011550,0.13744719 +3011562,0.13744719 +3011562,0 +3013080,0 +3013080,0.30356065 +3013110,0.30356065 +3013110,0 +3014178,0 +3014178,0.1597767 +3014190,0.1597767 +3014190,0 +3015228,0 +3015228,0.2063971 +3015324,0.2063971 +3015324,0 +3015810,0 +3015810,0.19085697 +3015894,0.19085697 +3015894,0 +3016398,0 +3016398,0.17576946 +3016506,0.17576946 +3016506,0 +3016986,0 +3016986,0.1585697 +3017058,0.1585697 +3017058,0 +3017574,0 +3017574,0.22057936 +3017646,0.22057936 +3017646,0 +3018798,0 +3018798,0.35440555 +3019362,0.35440555 +3019362,0 +3027996,0 +3027996,0.27881714 +3028002,0.27881714 +3028002,0 +3028116,0 +3028116,0.17622209 +3028164,0.17622209 +3028164,0 +3043950,0 +3043950,0.21575136 +3043980,0.21575136 +3043980,0 +3044070,0 +3044070,0.089619795 +3044328,0.089619795 +3044328,0 +3055302,0 +3055302,0.12205794 +3055326,0.12205794 +3055326,0 +3055902,0 +3055902,0.0073928787 +3055914,0.0073928787 +3055914,0 +3059244,0 +3059244,0.051146651 +3059250,0.051146651 +3059250,0 +3060288,0 +3060288,0.37341581 +3060342,0.37341581 +3060342,0 +3075864,0 +3075864,0.089619795 +3075954,0.089619795 +3075954,0 +3078786,0 +3078786,0.36934218 +3079596,0.36934218 +3079596,0 +3080892,0 +3080892,0.18482197 +3080934,0.18482197 +3080934,0 +3092196,0 +3092196,0.017803259 +3092208,0.017803259 +3092208,0 +3094266,0 +3094266,0.29737477 +3094278,0.29737477 +3094278,0 +3094314,0 +3094314,0.072872661 +3094410,0.072872661 +3094410,0 +3098934,0 +3098934,0.30129753 +3098958,0.30129753 +3098958,0 +3100836,0 +3100836,0.065479783 +3100878,0.065479783 +3100878,0 +3109746,0 +3109746,0.012220881 +3109776,0.012220881 +3109776,0 +3109860,0 +3109860,0.11451418 +3109878,0.11451418 +3109878,0 +3113340,0 +3113340,0.14755582 +3113424,0.14755582 +3113424,0 +3113454,0 +3113454,0.24381412 +3113520,0.24381412 +3113520,0 +3113574,0 +3113574,0.12945081 +3113610,0.12945081 +3113610,0 +3113688,0 +3113688,0.12733856 +3113694,0.12733856 +3113694,0 +3113802,0 +3113802,0.053560652 +3113808,0.053560652 +3113808,0 +3113814,0 +3113814,0.055823778 +3113820,0.055823778 +3113820,0 +3113922,0 +3113922,0.28545564 +3113958,0.28545564 +3113958,0 +3127500,0 +3127500,0.27911889 +3128016,0.27911889 +3128016,0 +3136536,0 +3136536,0.22797224 +3136566,0.22797224 +3136566,0 +3136650,0 +3136650,0.0092033796 +3136656,0.0092033796 +3136656,0 +3136764,0 +3136764,0.021876886 +3136770,0.021876886 +3136770,0 +3143754,0 +3143754,0.15660833 +3143778,0.15660833 +3143778,0 +3143868,0 +3143868,0.029873265 +3143904,0.11360893 +3143904,0 +3143916,0 +3143916,0.029873265 +3143922,0.11360893 +3143922,0 +3143982,0 +3143982,0.16053108 +3144108,0.16053108 +3144108,0 +3155610,0 +3155610,0.038925769 +3155616,0.038925769 +3155616,0 +3155724,0 +3155724,0.1997586 +3155760,0.1997586 +3155760,0 +3155838,0 +3155838,0.25 +3155868,0.25 +3155868,0 +3169128,0 +3169128,0.23144237 +3169206,0.23144237 +3169206,0 +3169716,0 +3169716,0.21062161 +3169866,0.21062161 +3169866,0 +3170304,0 +3170304,0.18587809 +3170346,0.18587809 +3170346,0 +3170892,0 +3170892,0.2578455 +3170952,0.2578455 +3170952,0 +3171480,0 +3171480,0.18980084 +3171564,0.18980084 +3171564,0 +3171966,0 +3171966,0.0076946288 +3172044,0.0076946288 +3172044,0 +3172062,0 +3172062,0.17939046 +3172206,0.17939046 +3172206,0 +3174972,0 +3174972,0.30552203 +3175506,0.30552203 +3175506,0 +3177294,0 +3177294,0.23204587 +3177324,0.23204587 +3177324,0 +3181362,0 +3181362,0.035153893 +3181494,0.035153893 +3181494,0 +3181698,0 +3181698,0.23445987 +3181740,0.23445987 +3181740,0 +3181818,0 +3181818,0.1985516 +3181842,0.1985516 +3181842,0 +3183072,0 +3183072,0.11738081 +3183120,0.11738081 +3183120,0 +3183186,0 +3183186,0.18542547 +3183204,0.18542547 +3183204,0 +3183306,0 +3183306,0.12235969 +3183354,0.12235969 +3183354,0 +3217986,0 +3217986,0.21741098 +3217998,0.21741098 +3217998,0 +3222444,0 +3222444,0.17546771 +3222462,0.17546771 +3222462,0 +3224352,0 +3224352,0.24803862 +3224436,0.24803862 +3224436,0 +3224940,0 +3224940,0.22133374 +3225018,0.22133374 +3225018,0 +3225528,0 +3225528,0.21575136 +3225618,0.21575136 +3225618,0 +3226116,0 +3226116,0.22359686 +3226218,0.22359686 +3226218,0 +3227886,0 +3227886,0.0072420036 +3227898,0.0072420036 +3227898,0 +3229746,0 +3229746,0.049185275 +3229794,0.049185275 +3229794,0 +3236982,0 +3236982,0.058086904 +3236988,0.058086904 +3236988,0 +3239430,0 +3239430,0.42456246 +3239502,0.42456246 +3239502,0 +3243882,0 +3243882,0.36270368 +3243972,0.36270368 +3243972,0 +3247680,0 +3247680,0.08026554 +3247692,0.08026554 +3247692,0 +3247794,0 +3247794,0.16777308 +3247914,0.075739288 +3247914,0 +3247920,0 +3247920,0.075739288 +3247926,0.16777308 +3247926,0 +3248028,0 +3248028,0.029571515 +3248034,0.029571515 +3248034,0 +3248142,0 +3248142,0.248793 +3248178,0.248793 +3248178,0 +3252342,0 +3252342,0.12960169 +3252360,0.12960169 +3252360,0 +3254088,0 +3254088,0.16747133 +3254106,0.16747133 +3254106,0 +3254208,0 +3254208,0.055672903 +3254220,0.055672903 +3254220,0 +3254286,0 +3254286,0.17048884 +3254334,0.17048884 +3254334,0 +3262980,0 +3262980,0.11421243 +3263022,0.11421243 +3263022,0 +3265908,0 +3265908,0.086904043 +3265914,0.086904043 +3265914,0 +3266784,0 +3266784,0.33705492 +3266814,0.33705492 +3266814,0 +3266946,0 +3266946,0.022480386 +3266952,0.022480386 +3266952,0 +3273048,0 +3273048,0.17576946 +3273066,0.17576946 +3273066,0 +3273168,0 +3273168,0.1077248 +3273174,0.1077248 +3273174,0 +3273282,0 +3273282,0.28243814 +3273300,0.28243814 +3273300,0 +3273396,0 +3273396,0.018406759 +3273402,0.018406759 +3273402,0 +3273516,0 +3273516,0.066686783 +3273564,0.066686783 +3273564,0 +3273630,0 +3273630,0.0073928787 +3273648,0.0073928787 +3273648,0 +3273744,0 +3273744,0.10727218 +3273762,0.10727218 +3273762,0 +3273864,0 +3273864,0.01931201 +3273876,0.01931201 +3273876,0 +3286590,0 +3286590,0.078002414 +3286596,0.078002414 +3286596,0 +3301212,0 +3301212,0.17003621 +3301320,0.17003621 +3301320,0 +3301800,0 +3301800,0.14846107 +3301884,0.14846107 +3301884,0 +3302388,0 +3302388,0.17229934 +3302460,0.17229934 +3302460,0 +3302976,0 +3302976,0.25769463 +3303060,0.25769463 +3303060,0 +3305994,0 +3305994,0.24547375 +3306132,0.24547375 +3306132,0 +3308772,0 +3308772,0.27202776 +3308802,0.27202776 +3308802,0 +3309198,0 +3309198,0.016294508 +3309204,0.016294508 +3309204,0 +3310278,0 +3310278,0.15600483 +3310302,0.15600483 +3310302,0 +3311862,0 +3311862,0.43225709 +3311886,0.20066385 +3311886,0 +3311892,0 +3311892,0.20066385 +3311952,0.43225709 +3311952,0 +3312162,0 +3312162,0.2942064 +3312174,0.2942064 +3312174,0 +3315696,0 +3315696,0.1985516 +3315714,0.1985516 +3315714,0 +3315810,0 +3315810,0.2445685 +3315876,0.2445685 +3315876,0 +3315924,0 +3315924,0.20775498 +3315942,0.20775498 +3315942,0 +3316044,0 +3316044,0.2954134 +3316092,0.2954134 +3316092,0 +3320196,0 +3320196,0.21152686 +3320208,0.21152686 +3320208,0 +3320310,0 +3320310,0.01071213 +3320316,0.01071213 +3320316,0 +3320430,0 +3320430,0.25633675 +3320466,0.25633675 +3320466,0 +3320544,0 +3320544,0.11979481 +3320604,0.11979481 +3320604,0 +3323400,0 +3323400,0.0072420036 +3323484,0.0072420036 +3323484,0 +3325734,0 +3325734,0.21001811 +3325812,0.21001811 +3325812,0 +3329754,0 +3329754,0.26719976 +3329766,0.26719976 +3329766,0 +3329868,0 +3329868,0.09957755 +3329940,0.09957755 +3329940,0 +3339978,0 +3339978,0.18980084 +3339984,0.18980084 +3339984,0 +3345222,0 +3345222,0.27232951 +3345336,0.12824381 +3345336,0 +3345402,0 +3345402,0.27232951 +3345444,0.12824381 +3345444,0 +3345456,0 +3345456,0.33856367 +3345492,0.33856367 +3345492,0 +3346992,0 +3346992,0.19809897 +3347010,0.19809897 +3347010,0 +3348600,0 +3348600,0.10199155 +3348606,0.10199155 +3348606,0 +3351150,0 +3351150,0.17637296 +3351276,0.17637296 +3351276,0 +3391758,0 +3391758,0.85968618 +3392202,0.85968618 +3392202,0 +3393582,0 +3393582,0.18089922 +3393654,0.18089922 +3393654,0 +3394230,0 +3394230,0.0052806276 +3394236,0.0052806276 +3394236,0 +3399024,0 +3399024,0.068497284 +3399030,0.068497284 +3399030,0 +3399138,0 +3399138,0.086753168 +3399174,0.086753168 +3399174,0 +3399252,0 +3399252,0.27248039 +3399264,0.27248039 +3399264,0 +3399366,0 +3399366,0.087507544 +3399372,0.087507544 +3399372,0 +3399486,0 +3399486,0.094598672 +3399600,0.028364514 +3399600,0 +3399606,0 +3399606,0.028364514 +3399636,0.094598672 +3399636,0 +3402264,0 +3402264,0.21016898 +3402282,0.21016898 +3402282,0 +3402378,0 +3402378,0.13427882 +3402480,0.13427882 +3402480,0 +3402498,0 +3402498,0.0016596258 +3402504,0.0016596258 +3402504,0 +3402612,0 +3402612,0.0075437538 +3402684,0.0075437538 +3402684,0 +3404088,0 +3404088,0.41309596 +3404154,0.41309596 +3404154,0 +3408546,0 +3408546,0.19085697 +3408600,0.19085697 +3408600,0 +3412812,0 +3412812,0.19447797 +3412908,0.19447797 +3412908,0 +3417912,0 +3417912,0.13654194 +3417942,0.13654194 +3417942,0 +3418026,0 +3418026,0.02972239 +3418032,0.02972239 +3418032,0 +3421314,0 +3421314,0.21303561 +3421404,0.21303561 +3421404,0 +3425010,0 +3425010,0.29677127 +3425022,0.29677127 +3425022,0 +3425982,0 +3425982,0.22963186 +3426000,0.22963186 +3426000,0 +3426216,0 +3426216,0.0085998793 +3426246,0.0085998793 +3426246,0 +3426924,0 +3426924,0.059293905 +3427056,0.059293905 +3427056,0 +3430842,0 +3430842,0.27293301 +3430860,0.27293301 +3430860,0 +3433272,0 +3433272,0.1519312 +3433278,0.1519312 +3433278,0 +3433386,0 +3433386,0.22344599 +3433404,0.22344599 +3433404,0 +3434214,0 +3434214,0.099124925 +3434220,0.099124925 +3434220,0 +3434328,0 +3434328,0.092788171 +3434358,0.092788171 +3434358,0 +3434442,0 +3434442,0.18346409 +3434562,0.1035003 +3434562,0 +3434580,0 +3434580,0.1035003 +3434598,0.18346409 +3434598,0 +3434676,0 +3434676,0.12024744 +3434682,0.12024744 +3434682,0 +3436620,0 +3436620,0.16867833 +3436662,0.16867833 +3436662,0 +3436722,0 +3436722,0.062914906 +3436728,0.062914906 +3436728,0 +3436734,0 +3436734,0.22902836 +3436764,0.22902836 +3436764,0 +3443340,0 +3443340,0.13865419 +3443346,0.13865419 +3443346,0 +3443916,0 +3443916,0.28968014 +3443958,0.28968014 +3443958,0 +3451536,0 +3451536,0.10274593 +3451548,0.10274593 +3451548,0 +3454116,0 +3454116,0.31894991 +3454188,0.31894991 +3454188,0 +3454410,0 +3454410,0.37009656 +3454422,0.37009656 +3454422,0 +3458568,0 +3458568,0.30838865 +3458652,0.30838865 +3458652,0 +3458868,0 +3458868,0.18255884 +3458976,0.18255884 +3458976,0 +3463428,0 +3463428,0.12658419 +3463452,0.12658419 +3463452,0 +3463542,0 +3463542,0.41158721 +3463548,0.41158721 +3463548,0 +3463656,0 +3463656,0.033645142 +3463752,0.033645142 +3463752,0 +3474792,0 +3474792,0.19040435 +3474864,0.19040435 +3474864,0 +3474906,0 +3474906,0.24019312 +3474924,0.24019312 +3474924,0 +3490710,0 +3490710,0.23234762 +3490782,0.23234762 +3490782,0 +3491280,0 +3491280,0.0075437538 +3491298,0.20413398 +3491298,0 +3491328,0 +3491328,0.0075437538 +3491412,0.20413398 +3491412,0 +3491886,0 +3491886,0.242758 +3491970,0.242758 +3491970,0 +3492468,0 +3492468,0.18602897 +3492576,0.18602897 +3492576,0 +3493056,0 +3493056,0.18421847 +3493140,0.18421847 +3493140,0 +3493512,0 +3493512,0.58796017 +3493644,0.20594448 +3493644,0 +3493692,0 +3493692,0.58796017 +3493710,0.20594448 +3493710,0 +3495420,0 +3495420,0.065178033 +3495426,0.065178033 +3495426,0 +3495540,0 +3495540,0.16173808 +3495546,0.16173808 +3495546,0 +3495654,0 +3495654,0.076795413 +3495660,0.076795413 +3495660,0 +3495768,0 +3495768,0.11481593 +3495774,0.11481593 +3495774,0 +3495888,0 +3495888,0.13111044 +3495900,0.13111044 +3495900,0 +3496002,0 +3496002,0.027006639 +3496008,0.027006639 +3496008,0 +3496116,0 +3496116,0.24562462 +3496140,0.24562462 +3496140,0 +3498630,0 +3498630,0.25347013 +3498666,0.25347013 +3498666,0 +3499482,0 +3499482,0.058539529 +3499488,0.058539529 +3499488,0 +3504102,0 +3504102,0.33765842 +3504216,0.17667471 +3504216,0 +3504228,0 +3504228,0.17667471 +3504240,0.33765842 +3504240,0 +3504348,0 +3504348,0.072269161 +3504390,0.072269161 +3504390,0 +3517110,0 +3517110,0.256035 +3517152,0.256035 +3517152,0 +3518934,0 +3518934,0.27761014 +3518946,0.27761014 +3518946,0 +3519330,0 +3519330,0.15208208 +3519336,0.15208208 +3519336,0 +3519450,0 +3519450,0.068648159 +3519462,0.068648159 +3519462,0 +3519564,0 +3519564,0.15872058 +3519624,0.15872058 +3519624,0 +3519966,0 +3519966,0.11436331 +3520008,0.11436331 +3520008,0 +3520536,0 +3520536,0.15811708 +3520548,0.15811708 +3520548,0 +3522600,0 +3522600,0.27323476 +3522684,0.27323476 +3522684,0 +3522900,0 +3522900,0.13246832 +3522912,0.13246832 +3522912,0 +3522954,0 +3522954,0.23430899 +3523002,0.23430899 +3523002,0 +3523776,0 +3523776,0.21107423 +3523788,0.21107423 +3523788,0 +3525438,0 +3525438,0.19161135 +3525480,0.19161135 +3525480,0 +3525552,0 +3525552,0.0048280024 +3525558,0.0048280024 +3525558,0 +3527514,0 +3527514,0.11149668 +3527616,0.11149668 +3527616,0 +3527634,0 +3527634,0.046922148 +3527640,0.046922148 +3527640,0 +3527748,0 +3527748,0.017048884 +3527754,0.017048884 +3527754,0 +3532230,0 +3532230,0.13095957 +3532338,0.13095957 +3532338,0 +3539934,0 +3539934,0.22948099 +3540024,0.22948099 +3540024,0 +3543810,0 +3543810,0.15826795 +3543834,0.15826795 +3543834,0 +3566388,0 +3566388,0.22540736 +3566400,0.22540736 +3566400,0 +3566502,0 +3566502,0.24773687 +3566574,0.24773687 +3566574,0 +3568194,0 +3568194,0.035304768 +3568200,0.035304768 +3568200,0 +3568308,0 +3568308,0.14121907 +3568320,0.14121907 +3568320,0 +3568428,0 +3568428,0.10802655 +3568440,0.10802655 +3568440,0 +3570450,0 +3570450,0.096560048 +3570522,0.096560048 +3570522,0 +3575592,0 +3575592,0.21605311 +3575640,0.21605311 +3575640,0 +3578118,0 +3578118,0.16294508 +3578238,0.25165963 +3578238,0 +3578268,0 +3578268,0.25165963 +3578370,0.16294508 +3578370,0 +3587850,0 +3587850,0.15525045 +3587856,0.15525045 +3587856,0 +3588648,0 +3588648,0.056578153 +3588654,0.056578153 +3588654,0 +3588768,0 +3588768,0.28621002 +3588774,0.28621002 +3588774,0 +3588882,0 +3588882,0.019161135 +3588888,0.019161135 +3588888,0 +3588996,0 +3588996,0.020669885 +3589002,0.020669885 +3589002,0 +3589116,0 +3589116,0.26071213 +3589122,0.26071213 +3589122,0 +3589230,0 +3589230,0.045262523 +3589236,0.045262523 +3589236,0 +3589344,0 +3589344,0.3480688 +3589428,0.3480688 +3589428,0 +3589458,0 +3589458,0.092788171 +3589464,0.092788171 +3589464,0 +3589578,0 +3589578,0.2942064 +3589590,0.2942064 +3589590,0 +3589692,0 +3589692,0.26629451 +3589716,0.26629451 +3589716,0 +3589806,0 +3589806,0.1022933 +3589812,0.1022933 +3589812,0 +3589926,0 +3589926,0.15178033 +3589986,0.15178033 +3589986,0 +3590526,0 +3590526,0.089619795 +3590574,0.089619795 +3590574,0 +3594558,0 +3594558,0.058237779 +3594564,0.058237779 +3594564,0 +3596934,0 +3596934,0.19402535 +3596940,0.19402535 +3596940,0 +3597234,0 +3597234,0.45081473 +3597324,0.45081473 +3597324,0 +3605292,0 +3605292,0.12764031 +3605328,0.12764031 +3605328,0 +3605412,0 +3605412,0.17923959 +3605418,0.17923959 +3605418,0 +3605526,0 +3605526,0.32709716 +3605544,0.32709716 +3605544,0 +3609744,0 +3609744,0.0073928787 +3609768,0.0073928787 +3609768,0 +3612138,0 +3612138,0.22359686 +3612144,0.22359686 +3612144,0 +3613956,0 +3613956,0.091581171 +3613968,0.091581171 +3613968,0 +3614070,0 +3614070,0.18391672 +3614082,0.18391672 +3614082,0 +3614184,0 +3614184,0.020368135 +3614208,0.020368135 +3614208,0 +3614304,0 +3614304,0.018255884 +3614454,0.018255884 +3614454,0 +3619218,0 +3619218,0.30537115 +3619266,0.30537115 +3619266,0 +3619332,0 +3619332,0.012824381 +3619338,0.012824381 +3619338,0 +3619998,0 +3619998,0.19960772 +3620004,0.19960772 +3620004,0 +3620118,0 +3620118,0.18346409 +3620244,0.18346409 +3620244,0 +3647028,0 +3647028,0.1997586 +3647226,0.1997586 +3647226,0 +3651408,0 +3651408,0.004073627 +3651414,0.004073627 +3651414,0 +3651528,0 +3651528,0.23838262 +3651642,0.09957755 +3651642,0 +3651648,0 +3651648,0.23838262 +3651732,0.09957755 +3651732,0 +3653238,0 +3653238,0.14272782 +3653418,0.14272782 +3653418,0 +3655068,0 +3655068,0.33977067 +3655290,0.33977067 +3655290,0 +3656604,0 +3656604,0.1035003 +3656616,0.1035003 +3656616,0 +3656724,0 +3656724,0.16038021 +3656838,0.095051298 +3656838,0 +3656880,0 +3656880,0.16038021 +3656886,0.095051298 +3656886,0 +3658764,0 +3658764,0.18527459 +3658830,0.18527459 +3658830,0 +3666606,0 +3666606,0.14257695 +3666714,0.14257695 +3666714,0 +3666726,0 +3666726,0.18995172 +3666774,0.18995172 +3666774,0 +3666840,0 +3666840,0.025950513 +3666846,0.025950513 +3666846,0 +3666954,0 +3666954,0.1925166 +3666960,0.1925166 +3666960,0 +3667074,0 +3667074,0.13186482 +3667086,0.13186482 +3667086,0 +3667728,0 +3667728,0.29677127 +3667752,0.29677127 +3667752,0 +3669840,0 +3669840,0.13307182 +3669852,0.13307182 +3669852,0 +3669960,0 +3669960,0.12311406 +3670002,0.12311406 +3670002,0 +3670074,0 +3670074,0.1471032 +3670086,0.1471032 +3670086,0 +3675834,0 +3675834,0.34897405 +3675918,0.34897405 +3675918,0 +3677928,0 +3677928,0.16958358 +3678036,0.16958358 +3678036,0 +3678042,0 +3678042,0.22872661 +3678138,0.22872661 +3678138,0 +3678162,0 +3678162,0.088412794 +3678210,0.088412794 +3678210,0 +3678276,0 +3678276,0.28771877 +3678282,0.28771877 +3678282,0 +3678390,0 +3678390,0.17426071 +3678396,0.17426071 +3678396,0 +3678510,0 +3678510,0.36360893 +3678522,0.36360893 +3678522,0 +3678624,0 +3678624,0.16309596 +3678684,0.16309596 +3678684,0 +3678738,0 +3678738,0.1004828 +3678768,0.1004828 +3678768,0 +3678852,0 +3678852,0.31366928 +3678888,0.31366928 +3678888,0 +3680484,0 +3680484,0.54028365 +3680922,0.10681955 +3680922,0 +3680952,0 +3680952,0.54028365 +3680976,0.10681955 +3680976,0 +3685752,0 +3685752,0.025347013 +3685758,0.025347013 +3685758,0 +3687276,0 +3687276,0.2003621 +3687318,0.2003621 +3687318,0 +3687396,0 +3687396,0.27700664 +3687444,0.27700664 +3687444,0 +3687510,0 +3687510,0.12175619 +3687636,0.12175619 +3687636,0 +3698772,0 +3698772,0.086602293 +3698796,0.086602293 +3698796,0 +3704472,0 +3704472,0.10878093 +3704478,0.10878093 +3704478,0 +3707874,0 +3707874,0.20066385 +3708000,0.20066385 +3708000,0 +3708462,0 +3708462,0.21967411 +3708546,0.21967411 +3708546,0 +3709050,0 +3709050,0.21303561 +3709158,0.21303561 +3709158,0 +3709632,0 +3709632,0.23551599 +3709734,0.23551599 +3709734,0 +3716916,0 +3716916,0.32785154 +3716976,0.32785154 +3716976,0 +3741768,0 +3741768,0.22254074 +3741774,0.22254074 +3741774,0 +3741882,0 +3741882,0.38880507 +3741900,0.38880507 +3741900,0 +3741996,0 +3741996,0.0055823778 +3742002,0.0055823778 +3742002,0 +3742110,0 +3742110,0.32890766 +3742170,0.32890766 +3742170,0 +3743850,0 +3743850,0.36406156 +3743916,0.36406156 +3743916,0 +3749154,0 +3749154,0.42667471 +3749334,0.42667471 +3749334,0 +3755778,0 +3755778,0.22359686 +3755892,0.074984912 +3755892,0 +3755898,0 +3755898,0.22359686 +3755934,0.074984912 +3755934,0 +3757908,0 +3757908,0.10123718 +3757926,0.10123718 +3757926,0 +3759360,0 +3759360,0.11934218 +3759366,0.11934218 +3759366,0 +3760836,0 +3760836,0.15781533 +3760872,0.15781533 +3760872,0 +3760896,0 +3760896,0.12281231 +3760914,0.12281231 +3760914,0 +3760956,0 +3760956,0.084942667 +3760962,0.084942667 +3760962,0 +3761016,0 +3761016,0.0063367532 +3761022,0.0063367532 +3761022,0 +3761070,0 +3761070,0.3062764 +3761130,0.083584792 +3761130,0 +3761142,0 +3761142,0.3062764 +3761160,0.083584792 +3761160,0 +3768378,0 +3768378,0.24592637 +3768420,0.24592637 +3768420,0 +3769884,0 +3769884,0.18436934 +3770238,0.18436934 +3770238,0 +3773226,0 +3773226,0.30009053 +3773298,0.30009053 +3773298,0 +3773520,0 +3773520,0.27444176 +3773586,0.27444176 +3773586,0 +3773820,0 +3773820,0.37356669 +3773886,0.37356669 +3773886,0 +3773928,0 +3773928,0.096861798 +3773988,0.096861798 +3773988,0 +3774120,0 +3774120,0.32392879 +3774138,0.32392879 +3774138,0 +3774420,0 +3774420,0.33720579 +3774456,0.33720579 +3774456,0 +3774492,0 +3774492,0.080114665 +3774522,0.080114665 +3774522,0 +3774606,0 +3774606,0.16792396 +3774672,0.16792396 +3774672,0 +3774726,0 +3774726,0.18859384 +3774792,0.18859384 +3774792,0 +3774828,0 +3774828,0.12658419 +3774834,0.12658419 +3774834,0 +3774840,0 +3774840,0.17954134 +3774852,0.17954134 +3774852,0 +3777096,0 +3777096,0.33298129 +3777186,0.33298129 +3777186,0 +3777990,0 +3777990,0.22344599 +3778038,0.22344599 +3778038,0 +3778104,0 +3778104,0.094447797 +3778110,0.094447797 +3778110,0 +3780918,0 +3780918,0.21891973 +3780972,0.21891973 +3780972,0 +3783084,0 +3783084,0.093089922 +3783090,0.093089922 +3783090,0 +3783204,0 +3783204,0.13473144 +3783282,0.13473144 +3783282,0 +3783318,0 +3783318,0.007996379 +3783324,0.007996379 +3783324,0 +3788544,0 +3788544,0.092335546 +3788550,0.092335546 +3788550,0 +3792444,0 +3792444,0.10018105 +3792456,0.10018105 +3792456,0 +3793164,0 +3793164,0.17335546 +3793212,0.17335546 +3793212,0 +3793284,0 +3793284,0.021273386 +3793290,0.021273386 +3793290,0 +3793296,0 +3793296,0.24728425 +3793302,0.24728425 +3793302,0 +3793410,0 +3793410,0.12296319 +3793440,0.12296319 +3793440,0 +3793524,0 +3793524,0.26946288 +3793596,0.26946288 +3793596,0 +3796890,0 +3796890,0.07905854 +3796920,0.07905854 +3796920,0 +3800994,0 +3800994,0.055823778 +3801000,0.055823778 +3801000,0 +3801108,0 +3801108,0.32045866 +3801132,0.32045866 +3801132,0 +3826356,0 +3826356,0.29692215 +3826854,0.29692215 +3826854,0 +3830676,0 +3830676,0.56321666 +3830856,0.56321666 +3830856,0 +3831516,0 +3831516,0.20232348 +3831570,0.20232348 +3831570,0 +3831630,0 +3831630,0.16626433 +3831654,0.16626433 +3831654,0 +3831744,0 +3831744,0.06985516 +3831786,0.06985516 +3831786,0 +3831858,0 +3831858,0.19764635 +3831930,0.19764635 +3831930,0 +3831978,0 +3831978,0.03922752 +3832008,0.03922752 +3832008,0 +3833328,0 +3833328,0.19704285 +3833376,0.19704285 +3833376,0 +3841872,0 +3841872,0.32392879 +3841878,0.32392879 +3841878,0 +3841986,0 +3841986,0.32573929 +3842004,0.32573929 +3842004,0 +3848550,0 +3848550,0.13684369 +3848580,0.13684369 +3848580,0 +3860298,0 +3860298,0.1071213 +3860304,0.1071213 +3860304,0 +3865044,0 +3865044,0.12960169 +3865176,0.12960169 +3865176,0 +3868032,0 +3868032,0.14604707 +3868128,0.14604707 +3868128,0 +3868776,0 +3868776,0.10425468 +3868788,0.10425468 +3868788,0 +3868890,0 +3868890,0.16852746 +3868932,0.16852746 +3868932,0 +3869004,0 +3869004,0.12507544 +3869070,0.12507544 +3869070,0 +3870996,0 +3870996,0.023234762 +3871002,0.023234762 +3871002,0 +3871182,0 +3871182,0.13563669 +3871230,0.13563669 +3871230,0 +3872088,0 +3872088,0.15223295 +3872148,0.15223295 +3872148,0 +3876798,0 +3876798,0.14876282 +3876864,0.14876282 +3876864,0 +3876912,0 +3876912,0.20066385 +3876930,0.20066385 +3876930,0 +3877032,0 +3877032,0.25980688 +3877092,0.25980688 +3877092,0 +3877146,0 +3877146,0.042546771 +3877152,0.042546771 +3877152,0 +3877260,0 +3877260,0.19930597 +3877314,0.19930597 +3877314,0 +3886446,0 +3886446,0.051599276 +3886488,0.051599276 +3886488,0 +3911856,0 +3911856,0.243965 +3911916,0.243965 +3911916,0 +3911970,0 +3911970,0.2990344 +3911976,0.2990344 +3911976,0 +3912084,0 +3912084,0.25528063 +3912144,0.25528063 +3912144,0 +3914226,0 +3914226,0.16807483 +3914232,0.16807483 +3914232,0 +3914340,0 +3914340,0.14076645 +3914442,0.14076645 +3914442,0 +3915456,0 +3915456,0.038774894 +3915492,0.038774894 +3915492,0 +3917898,0 +3917898,0.10938443 +3918012,0.085546168 +3918012,0 +3918018,0 +3918018,0.085546168 +3918042,0.10938443 +3918042,0 +3920250,0 +3920250,0.011919131 +3920256,0.011919131 +3920256,0 +3935286,0 +3935286,0.14061557 +3935310,0.14061557 +3935310,0 +3943440,0 +3943440,0.26704888 +3943464,0.26704888 +3943464,0 +3943554,0 +3943554,0.26086301 +3943620,0.26086301 +3943620,0 +3943674,0 +3943674,0.091882921 +3943716,0.091882921 +3943716,0 +3943788,0 +3943788,0.29616777 +3943806,0.29616777 +3943806,0 +3943902,0 +3943902,0.27700664 +3943962,0.27700664 +3943962,0 +3944022,0 +3944022,0.066988533 +3944028,0.066988533 +3944028,0 +3953868,0 +3953868,0.15117683 +3953898,0.15117683 +3953898,0 +3955092,0 +3955092,0.098370549 +3955104,0.098370549 +3955104,0 +3958722,0 +3958722,0.17471334 +3958740,0.17471334 +3958740,0 +3959814,0 +3959814,0.22963186 +3959874,0.22963186 +3959874,0 +3960090,0 +3960090,0.16400121 +3960174,0.16400121 +3960174,0 +3960204,0 +3960204,0.059897405 +3960288,0.059897405 +3960288,0 +3960318,0 +3960318,0.2063971 +3960402,0.23385637 +3960402,0 +3960426,0 +3960426,0.2063971 +3960438,0.13307182 +3960438,0 +3960450,0 +3960450,0.13307182 +3960480,0.23385637 +3960480,0 +3960990,0 +3960990,0.1925166 +3961092,0.1925166 +3961092,0 +3961578,0 +3961578,0.23974049 +3961692,0.23974049 +3961692,0 +3962166,0 +3962166,0.27519614 +3962286,0.27519614 +3962286,0 +3962406,0 +3962406,0.41928183 +3962472,0.41928183 +3962472,0 +3967062,0 +3967062,0.3450513 +3967752,0.3450513 +3967752,0 +3979278,0 +3979278,0.017652384 +3979284,0.017652384 +3979284,0 +3997452,0 +3997452,0.15645745 +3997476,0.15645745 +3997476,0 +3997566,0 +3997566,0.29450815 +3997596,0.29450815 +3997596,0 +3998658,0 +3998658,0.16581171 +3998742,0.16581171 +3998742,0 +4000326,0 +4000326,0.28258902 +4000386,0.28258902 +4000386,0 +4003740,0 +4003740,0.096861798 +4003818,0.096861798 +4003818,0 +4015860,0 +4015860,0.23310199 +4015944,0.23310199 +4015944,0 +4015974,0 +4015974,0.0490344 +4016022,0.0490344 +4016022,0 +4016094,0 +4016094,0.28786964 +4016130,0.28786964 +4016130,0 +4016508,0 +4016508,0.14499095 +4016550,0.14499095 +4016550,0 +4017222,0 +4017222,0.076644538 +4017264,0.076644538 +4017264,0 +4017336,0 +4017336,0.095805673 +4017426,0.095805673 +4017426,0 +4023306,0 +4023306,0.18980084 +4023318,0.18980084 +4023318,0 +4028886,0 +4028886,0.1489137 +4028946,0.1489137 +4028946,0 +4029000,0 +4029000,0.33117079 +4029096,0.33117079 +4029096,0 +4029120,0 +4029120,0.044659022 +4029126,0.044659022 +4029126,0 +4029234,0 +4029234,0.16626433 +4029246,0.16626433 +4029246,0 +4029348,0 +4029348,0.063669282 +4029372,0.063669282 +4029372,0 +4029468,0 +4029468,0.040887145 +4029474,0.040887145 +4029474,0 +4029582,0 +4029582,0.29631865 +4029606,0.29631865 +4029606,0 +4029696,0 +4029696,0.32619191 +4029732,0.32619191 +4029732,0 +4029816,0 +4029816,0.22570911 +4029894,0.22570911 +4029894,0 +4029930,0 +4029930,0.22329511 +4029948,0.22329511 +4029948,0 +4034172,0 +4034172,0.32332529 +4034544,0.32332529 +4034544,0 +4043514,0 +4043514,0.17109234 +4043628,0.11089318 +4043628,0 +4043640,0 +4043640,0.11089318 +4043658,0.17109234 +4043658,0 +4043748,0 +4043748,0.18346409 +4043784,0.18346409 +4043784,0 +4043862,0 +4043862,0.20202173 +4043946,0.20202173 +4043946,0 +4043976,0 +4043976,0.06955341 +4044036,0.06955341 +4044036,0 +4044090,0 +4044090,0.12929994 +4044096,0.12929994 +4044096,0 +4044210,0 +4044210,0.22163549 +4044384,0.22163549 +4044384,0 +4045620,0 +4045620,0.22465299 +4045704,0.22465299 +4045704,0 +4047024,0 +4047024,0.097314424 +4047030,0.097314424 +4047030,0 +4047264,0 +4047264,0.1004828 +4047270,0.1004828 +4047270,0 +4047378,0 +4047378,0.047223899 +4047384,0.047223899 +4047384,0 +4047492,0 +4047492,0.090826795 +4047528,0.090826795 +4047528,0 +4047612,0 +4047612,0.39544357 +4047624,0.39544357 +4047624,0 +4047726,0 +4047726,0.0049788775 +4047732,0.0049788775 +4047732,0 +4047840,0 +4047840,0.27972239 +4047882,0.27972239 +4047882,0 +4052616,0 +4052616,0.00030175015 +4052622,0.00030175015 +4052622,0 +4052658,0 +4052658,0.35757393 +4052730,0.23868437 +4052730,0 +4052760,0 +4052760,0.23868437 +4052826,0.35757393 +4052826,0 +4057224,0 +4057224,0.11647556 +4057242,0.06095353 +4057242,0 +4057248,0 +4057248,0.06095353 +4057260,0.11647556 +4057260,0 +4082472,0 +4082472,0.22314424 +4082514,0.22314424 +4082514,0 +4093086,0 +4093086,0.11707906 +4093116,0.11707906 +4093116,0 +4095360,0 +4095360,0.12975256 +4095378,0.12975256 +4095378,0 +4097982,0 +4097982,0.11149668 +4098024,0.11149668 +4098024,0 +4099386,0 +4099386,0.14182257 +4099500,0.10817743 +4099500,0 +4099506,0 +4099506,0.14182257 +4099512,0.10817743 +4099512,0 +4099620,0 +4099620,0.31366928 +4099638,0.31366928 +4099638,0 +4108170,0 +4108170,0.21152686 +4108200,0.21152686 +4108200,0 +4108290,0 +4108290,0.0073928787 +4108368,0.0073928787 +4108368,0 +4112076,0 +4112076,0.12899819 +4112190,0.31729028 +4112190,0 +4112196,0 +4112196,0.31729028 +4112208,0.12899819 +4112208,0 +4112304,0 +4112304,0.059897405 +4112310,0.059897405 +4112310,0 +4114524,0 +4114524,0.16143633 +4114560,0.16143633 +4114560,0 +4115520,0 +4115520,0.21409173 +4115610,0.21409173 +4115610,0 +4123440,0 +4123440,0.13684369 +4123452,0.13684369 +4123452,0 +4123554,0 +4123554,0.23627037 +4123590,0.23627037 +4123590,0 +4125612,0 +4125612,0.26523838 +4125636,0.26523838 +4125636,0 +4131786,0 +4131786,0.21016898 +4131816,0.07076041 +4131816,0 +4131834,0 +4131834,0.07076041 +4131858,0.21016898 +4131858,0 +4131930,0 +4131930,0.055823778 +4131936,0.055823778 +4131936,0 +4132044,0 +4132044,0.15706095 +4132056,0.15706095 +4132056,0 +4132164,0 +4132164,0.17592034 +4132206,0.17592034 +4132206,0 +4132374,0 +4132374,0.1937236 +4132458,0.1937236 +4132458,0 +4132962,0 +4132962,0.21997586 +4133064,0.21997586 +4133064,0 +4133130,0 +4133130,0.037417019 +4133136,0.037417019 +4133136,0 +4133544,0 +4133544,0.22178636 +4133592,0.22178636 +4133592,0 +4136676,0 +4136676,0.0076946288 +4136694,0.0076946288 +4136694,0 +4176780,0 +4176780,0.25150875 +4176822,0.25150875 +4176822,0 +4177686,0 +4177686,0.057030779 +4177704,0.057030779 +4177704,0 +4177800,0 +4177800,0.067592034 +4177818,0.067592034 +4177818,0 +4177920,0 +4177920,0.075890163 +4177926,0.075890163 +4177926,0 +4178034,0 +4178034,0.096861798 +4178040,0.096861798 +4178040,0 +4178148,0 +4178148,0.10274593 +4178220,0.10274593 +4178220,0 +4178268,0 +4178268,0.1985516 +4178304,0.1985516 +4178304,0 +4178382,0 +4178382,0.20684973 +4178460,0.20684973 +4178460,0 +4178496,0 +4178496,0.29616777 +4178514,0.29616777 +4178514,0 +4178616,0 +4178616,0.28379602 +4178670,0.28379602 +4178670,0 +4181496,0 +4181496,0.054013277 +4181580,0.054013277 +4181580,0 +4181610,0 +4181610,0.047374774 +4181616,0.047374774 +4181616,0 +4181724,0 +4181724,0.10817743 +4181784,0.10817743 +4181784,0 +4181844,0 +4181844,0.14755582 +4181850,0.14755582 +4181850,0 +4181958,0 +4181958,0.13503319 +4182018,0.13503319 +4182018,0 +4182072,0 +4182072,0.25271575 +4182090,0.25271575 +4182090,0 +4182792,0 +4182792,0.089016295 +4182882,0.089016295 +4182882,0 +4182906,0 +4182906,0.23687387 +4182972,0.23687387 +4182972,0 +4183032,0 +4183032,0.1955341 +4183044,0.1955341 +4183044,0 +4183686,0 +4183686,0.068949909 +4183716,0.068949909 +4183716,0 +4183800,0 +4183800,0.21907061 +4183836,0.21907061 +4183836,0 +4186398,0 +4186398,0.34821967 +4186452,0.34821967 +4186452,0 +4195986,0 +4195986,0.33554617 +4196220,0.33554617 +4196220,0 +4198572,0 +4198572,0.16415208 +4198632,0.16415208 +4198632,0 +4198686,0 +4198686,0.089016295 +4198716,0.089016295 +4198716,0 +4200042,0 +4200042,0.21816536 +4200072,0.21816536 +4200072,0 +4202586,0 +4202586,0.30838865 +4202628,0.30838865 +4202628,0 +4204662,0 +4204662,0.0502414 +4204680,0.0502414 +4204680,0 +4204776,0 +4204776,0.11692818 +4204866,0.11692818 +4204866,0 +4204896,0 +4204896,0.028062764 +4204944,0.028062764 +4204944,0 +4208436,0 +4208436,0.052051901 +4208442,0.052051901 +4208442,0 +4208448,0 +4208448,0.23551599 +4208484,0.23551599 +4208484,0 +4208556,0 +4208556,0.3050694 +4208592,0.3050694 +4208592,0 +4208670,0 +4208670,0.25980688 +4208712,0.25980688 +4208712,0 +4209996,0 +4209996,0.12507544 +4210032,0.12718769 +4210032,0 +4210044,0 +4210044,0.12507544 +4210110,0.016143633 +4210110,0 +4210116,0 +4210116,0.016143633 +4210134,0.12718769 +4210134,0 +4210224,0 +4210224,0.16566083 +4210230,0.16566083 +4210230,0 +4210344,0 +4210344,0.17109234 +4210392,0.17109234 +4210392,0 +4212126,0 +4212126,0.1955341 +4212228,0.1955341 +4212228,0 +4214250,0 +4214250,0.33388654 +4214256,0.33388654 +4214256,0 +4216734,0 +4216734,0.14318045 +4216758,0.14318045 +4216758,0 +4216848,0 +4216848,0.21786361 +4216854,0.21786361 +4216854,0 +4216968,0 +4216968,0.21197948 +4216992,0.21197948 +4216992,0 +4217628,0 +4217628,0.055220278 +4217634,0.055220278 +4217634,0 +4217742,0 +4217742,0.04993965 +4217784,0.04993965 +4217784,0 +4217862,0 +4217862,0.089921545 +4217868,0.089921545 +4217868,0 +4217976,0 +4217976,0.24713337 +4217982,0.24713337 +4217982,0 +4218090,0 +4218090,0.25286663 +4218120,0.25286663 +4218120,0 +4218306,0 +4218306,0.027459264 +4218312,0.027459264 +4218312,0 +4219194,0 +4219194,0.15328908 +4219338,0.15328908 +4219338,0 +4220442,0 +4220442,0.33841279 +4220478,0.33841279 +4220478,0 +4222548,0 +4222548,0.014484007 +4222668,0.054465902 +4222668,0 +4222680,0 +4222680,0.014484007 +4222716,0.054465902 +4222716,0 +4222782,0 +4222782,0.11813518 +4222788,0.11813518 +4222788,0 +4222896,0 +4222896,0.084490042 +4222920,0.084490042 +4222920,0 +4223016,0 +4223016,0.1961376 +4223034,0.1961376 +4223034,0 +4223130,0 +4223130,0.30175015 +4223208,0.30175015 +4223208,0 +4223244,0 +4223244,0.0076946288 +4223250,0.0076946288 +4223250,0 +4231038,0 +4231038,0.1065178 +4231068,0.1065178 +4231068,0 +4231152,0 +4231152,0.038020519 +4231158,0.038020519 +4231158,0 +4231602,0 +4231602,0.4431201 +4231686,0.4431201 +4231686,0 +4235940,0 +4235940,0.25467713 +4235976,0.25467713 +4235976,0 +4256808,0 +4256808,0.0069402535 +4256814,0.0069402535 +4256814,0 +4260114,0 +4260114,0.1035003 +4260120,0.1035003 +4260120,0 +4263144,0 +4263144,0.32951116 +4263234,0.32951116 +4263234,0 +4263606,0 +4263606,0.41505733 +4264254,0.41505733 +4264254,0 +4264902,0 +4264902,0.39740495 +4264974,0.39740495 +4264974,0 +4265202,0 +4265202,0.30537115 +4265268,0.30537115 +4265268,0 +4269828,0 +4269828,0.06955341 +4269852,0.06955341 +4269852,0 +4272990,0 +4272990,0.056879903 +4273002,0.30597465 +4273002,0 +4273020,0 +4273020,0.056879903 +4273074,0.30597465 +4273074,0 +4273104,0 +4273104,0.078304164 +4273110,0.078304164 +4273110,0 +4273608,0 +4273608,0.0036210018 +4273614,0.0036210018 +4273614,0 +4275018,0 +4275018,0.017501509 +4275132,0.082981291 +4275132,0 +4275156,0 +4275156,0.017501509 +4275210,0.082981291 +4275210,0 +4275252,0 +4275252,0.039680145 +4275258,0.039680145 +4275258,0 +4282434,0 +4282434,0.0078455039 +4282452,0.0078455039 +4282452,0 +4282548,0 +4282548,0.0075437538 +4282626,0.0075437538 +4282626,0 +4282668,0 +4282668,0.16309596 +4282674,0.16309596 +4282674,0 +4288452,0 +4288452,0.11074231 +4288458,0.11074231 +4288458,0 +4294194,0 +4294194,0.22103199 +4294308,0.22103199 +4294308,0 +4294746,0 +4294746,0.16128546 +4294776,0.16128546 +4294776,0 +4294782,0 +4294782,0.23777912 +4294854,0.23777912 +4294854,0 +4294860,0 +4294860,0.34580567 +4294890,0.34580567 +4294890,0 +4295370,0 +4295370,0.22797224 +4295484,0.22797224 +4295484,0 +4295958,0 +4295958,0.25890163 +4296018,0.25890163 +4296018,0 +4301850,0 +4301850,0.0043753772 +4301856,0.0043753772 +4301856,0 +4307424,0 +4307424,0.13020519 +4307526,0.13020519 +4307526,0 +4307976,0 +4307976,0.29269765 +4308132,0.29269765 +4308132,0 +4315104,0 +4315104,0.12492456 +4315110,0.12492456 +4315110,0 +4319892,0 +4319892,0.20730235 +4319958,0.20730235 +4319958,0 +4352424,0 +4352424,0.15525045 +4352448,0.15525045 +4352448,0 +4357476,0 +4357476,0.085697043 +4357512,0.085697043 +4357512,0 +4358232,0 +4358232,0.36149668 +4358244,0.36149668 +4358244,0 +4360980,0 +4360980,0.50859988 +4361316,0.50859988 +4361316,0 +4362816,0 +4362816,0.3934822 +4363050,0.3934822 +4363050,0 +4363920,0 +4363920,0.044960772 +4363980,0.044960772 +4363980,0 +4366500,0 +4366500,0.052806276 +4366506,0.052806276 +4366506,0 +4366614,0 +4366614,0.16762221 +4366638,0.16762221 +4366638,0 +4366728,0 +4366728,0.22299336 +4366812,0.22299336 +4366812,0 +4367070,0 +4367070,0.23943874 +4367124,0.23943874 +4367124,0 +4367328,0 +4367328,0.19040435 +4367340,0.19040435 +4367340,0 +4367742,0 +4367742,0.087658419 +4367754,0.087658419 +4367754,0 +4367856,0 +4367856,0.18467109 +4367874,0.18467109 +4367874,0 +4371528,0 +4371528,0.29073627 +4371594,0.29073627 +4371594,0 +4374930,0 +4374930,0.37643331 +4375488,0.37643331 +4375488,0 +4375986,0 +4375986,0.40660833 +4376040,0.40660833 +4376040,0 +4380438,0 +4380438,0.36919131 +4380504,0.0072420036 +4380504,0 +4380570,0 +4380570,0.0072420036 +4380582,0.36919131 +4380582,0 +4380984,0 +4380984,0.048581774 +4380990,0.048581774 +4380990,0 +4386246,0 +4386246,0.08026554 +4386318,0.08026554 +4386318,0 +4386360,0 +4386360,0.1591732 +4386420,0.1591732 +4386420,0 +4386480,0 +4386480,0.11375981 +4386528,0.11375981 +4386528,0 +4393224,0 +4393224,0.21409173 +4393272,0.21409173 +4393272,0 +4393338,0 +4393338,0.0075437538 +4393356,0.0075437538 +4393356,0 +4393452,0 +4393452,0.21756186 +4393542,0.21756186 +4393542,0 +4393572,0 +4393572,0.03062764 +4393662,0.03062764 +4393662,0 +4395576,0 +4395576,0.0076946288 +4395678,0.0076946288 +4395678,0 +4397352,0 +4397352,0.16369946 +4397400,0.16369946 +4397400,0 +4397466,0 +4397466,0.23098974 +4397478,0.23098974 +4397478,0 +4399500,0 +4399500,0.15328908 +4399506,0.15328908 +4399506,0 +4402752,0 +4402752,0.20141823 +4402758,0.20141823 +4402758,0 +4405554,0 +4405554,0.16807483 +4405656,0.16807483 +4405656,0 +4406448,0 +4406448,0.051146651 +4406454,0.051146651 +4406454,0 +4421154,0 +4421154,0.072118286 +4421220,0.072118286 +4421220,0 +4426752,0 +4426752,0.10817743 +4426758,0.10817743 +4426758,0 +4428258,0 +4428258,0.21258298 +4428276,0.21258298 +4428276,0 +4431102,0 +4431102,0.1525347 +4431156,0.1525347 +4431156,0 +4431216,0 +4431216,0.12658419 +4431264,0.12658419 +4431264,0 +4440408,0 +4440408,0.081170791 +4440414,0.081170791 +4440414,0 +4445094,0 +4445094,0.027610139 +4445100,0.027610139 +4445100,0 +4451454,0 +4451454,0.21077248 +4451466,0.21077248 +4451466,0 +4451568,0 +4451568,0.12507544 +4451580,0.12507544 +4451580,0 +4454334,0 +4454334,0.24622812 +4454418,0.24622812 +4454418,0 +4457718,0 +4457718,0.24894387 +4457748,0.24894387 +4457748,0 +4458174,0 +4458174,0.082076041 +4458180,0.082076041 +4458180,0 +4462788,0 +4462788,0.28017502 +4462812,0.28017502 +4462812,0 +4465044,0 +4465044,0.038624019 +4465050,0.038624019 +4465050,0 +4469094,0 +4469094,0.06095353 +4469100,0.06095353 +4469100,0 +4469214,0 +4469214,0.13880507 +4469322,0.13880507 +4469322,0 +4476648,0 +4476648,0.71409173 +4477062,0.71409173 +4477062,0 +4481910,0 +4481910,0.14725407 +4481946,0.14725407 +4481946,0 +4482030,0 +4482030,0.10561255 +4482036,0.10561255 +4482036,0 +4482924,0 +4482924,0.011164756 +4482930,0.011164756 +4482930,0 +4488120,0 +4488120,0.086753168 +4488144,0.086753168 +4488144,0 +4488234,0 +4488234,0.15932408 +4488246,0.15932408 +4488246,0 +4488354,0 +4488354,0.18195534 +4488378,0.18195534 +4488378,0 +4488468,0 +4488468,0.18829209 +4488576,0.18829209 +4488576,0 +4488582,0 +4488582,0.23023537 +4488606,0.23023537 +4488606,0 +4492338,0 +4492338,0.3038624 +4492404,0.3038624 +4492404,0 +4492452,0 +4492452,0.32875679 +4492494,0.32875679 +4492494,0 +4495002,0 +4495002,0.18919734 +4495014,0.18919734 +4495014,0 +4495044,0 +4495044,0.036210018 +4495098,0.036210018 +4495098,0 +4501068,0 +4501068,0.14031382 +4501134,0.14031382 +4501134,0 +4506438,0 +4506438,0.22872661 +4506582,0.22872661 +4506582,0 +4513170,0 +4513170,0.17063971 +4513176,0.17063971 +4513176,0 +4513284,0 +4513284,0.15887145 +4513302,0.15887145 +4513302,0 +4515762,0 +4515762,0.21891973 +4515768,0.21891973 +4515768,0 +4518516,0 +4518516,0.21439348 +4519116,0.21439348 +4519116,0 +4522350,0 +4522350,0.16656608 +4522356,0.16656608 +4522356,0 +4522650,0 +4522650,0.42561859 +4522716,0.42561859 +4522716,0 +4525416,0 +4525416,0.20835848 +4525434,0.20835848 +4525434,0 +4527798,0 +4527798,0.15872058 +4527834,0.15872058 +4527834,0 +4528386,0 +4528386,0.45488835 +4528458,0.45488835 +4528458,0 +4531548,0 +4531548,0.17260109 +4531560,0.17260109 +4531560,0 +4532844,0 +4532844,0.38744719 +4532910,0.38744719 +4532910,0 +4533978,0 +4533978,0.18964997 +4533990,0.18964997 +4533990,0 +4536438,0 +4536438,0.15706095 +4536492,0.15706095 +4536492,0 +4540530,0 +4540530,0.22933011 +4540602,0.22933011 +4540602,0 +4541118,0 +4541118,0.29692215 +4541184,0.29692215 +4541184,0 +4541556,0 +4541556,0.071363911 +4541568,0.071363911 +4541568,0 +4541706,0 +4541706,0.15766445 +4541766,0.15766445 +4541766,0 +4542288,0 +4542288,0.21680748 +4542342,0.21680748 +4542342,0 +4546926,0 +4546926,0.072872661 +4547250,0.072872661 +4547250,0 +4548054,0 +4548054,0.12899819 +4548126,0.12899819 +4548126,0 +4556382,0 +4556382,0.15660833 +4556466,0.20745323 +4556466,0 +4556478,0 +4556478,0.15660833 +4556538,0.20745323 +4556538,0 +4556574,0 +4556574,0.22073024 +4556586,0.16716958 +4556586,0 +4556622,0 +4556622,0.16716958 +4556682,0.22073024 +4556682,0 +4556934,0 +4556934,0.21560048 +4556940,0.21560048 +4556940,0 +4557162,0 +4557162,0.23687387 +4557240,0.23687387 +4557240,0 +4557750,0 +4557750,0.19945685 +4557864,0.19945685 +4557864,0 +4558338,0 +4558338,0.14815932 +4558470,0.14815932 +4558470,0 +4558920,0 +4558920,0.25950513 +4558998,0.25950513 +4558998,0 +4559508,0 +4559508,0.22073024 +4559592,0.22073024 +4559592,0 +4559952,0 +4559952,0.36828606 +4559970,0.36828606 +4559970,0 +4560096,0 +4560096,0.16958358 +4560174,0.16958358 +4560174,0 +4560684,0 +4560684,0.21424261 +4560768,0.21424261 +4560768,0 +4563678,0 +4563678,0.085093543 +4563696,0.085093543 +4563696,0 +4563792,0 +4563792,0.063065782 +4563816,0.063065782 +4563816,0 +4563912,0 +4563912,0.17260109 +4563930,0.17260109 +4563930,0 +4564026,0 +4564026,0.12960169 +4564050,0.12960169 +4564050,0 +4564140,0 +4564140,0.042546771 +4564158,0.042546771 +4564158,0 +4564698,0 +4564698,0.21816536 +4564770,0.21816536 +4564770,0 +4564992,0 +4564992,0.42667471 +4565022,0.42667471 +4565022,0 +4565292,0 +4565292,0.4019312 +4565370,0.4019312 +4565370,0 +4570332,0 +4570332,0.29088715 +4570368,0.29088715 +4570368,0 +4570446,0 +4570446,0.15691008 +4570452,0.15691008 +4570452,0 +4571526,0 +4571526,0.0028666264 +4571532,0.0028666264 +4571532,0 +4571646,0 +4571646,0.16188896 +4571682,0.16188896 +4571682,0 +4574532,0 +4574532,0.17380809 +4574544,0.17380809 +4574544,0 +4576986,0 +4576986,0.28032589 +4576992,0.28032589 +4576992,0 +4577106,0 +4577106,0.30733253 +4577112,0.30733253 +4577112,0 +4586130,0 +4586130,0.13231744 +4586154,0.13231744 +4586154,0 +4600998,0 +4600998,0.24803862 +4601034,0.24803862 +4601034,0 +4601112,0 +4601112,0.25935425 +4601190,0.25935425 +4601190,0 +4601226,0 +4601226,0.11179843 +4601256,0.11179843 +4601256,0 +4604634,0 +4604634,0.241551 +4604658,0.20564273 +4604658,0 +4604676,0 +4604676,0.20564273 +4604688,0.241551 +4604688,0 +4604772,0 +4604772,0.16173808 +4604868,0.16173808 +4604868,0 +4606248,0 +4606248,0.007996379 +4606302,0.007996379 +4606302,0 +4606782,0 +4606782,0.21454436 +4606800,0.21454436 +4606800,0 +4606896,0 +4606896,0.26282438 +4606908,0.26282438 +4606908,0 +4607010,0 +4607010,0.047827399 +4607016,0.047827399 +4607016,0 +4610220,0 +4610220,0.027761014 +4610226,0.027761014 +4610226,0 +4613352,0 +4613352,0.20262523 +4613364,0.20262523 +4613364,0 +4613472,0 +4613472,0.061858781 +4613478,0.061858781 +4613478,0 +4613586,0 +4613586,0.20383223 +4613592,0.20383223 +4613592,0 +4613700,0 +4613700,0.19900422 +4613736,0.19900422 +4613736,0 +4613922,0 +4613922,0.31125528 +4613988,0.31125528 +4613988,0 +4616304,0 +4616304,0.31940253 +4616358,0.31940253 +4616358,0 +4616604,0 +4616604,0.31155703 +4616622,0.31155703 +4616622,0 +4622100,0 +4622100,0.19659022 +4622106,0.19659022 +4622106,0 +4622802,0 +4622802,0.21605311 +4622898,0.21605311 +4622898,0 +4623390,0 +4623390,0.23672299 +4623504,0.23672299 +4623504,0 +4623624,0 +4623624,0.26327701 +4623666,0.26327701 +4623666,0 +4628220,0 +4628220,0.062462281 +4628226,0.062462281 +4628226,0 +4628340,0 +4628340,0.16128546 +4628370,0.16128546 +4628370,0 +4631478,0 +4631478,0.23461074 +4631574,0.23461074 +4631574,0 +4639176,0 +4639176,0.21424261 +4639200,0.21424261 +4639200,0 +4639290,0 +4639290,0.25090525 +4639332,0.25090525 +4639332,0 +4639404,0 +4639404,0.10395293 +4639422,0.10395293 +4639422,0 +4639524,0 +4639524,0.18059747 +4639578,0.18059747 +4639578,0 +4639638,0 +4639638,0.17546771 +4639728,0.17546771 +4639728,0 +4639752,0 +4639752,0.16777308 +4639866,0.16777308 +4639866,0 +4639872,0 +4639872,0.020368135 +4639878,0.020368135 +4639878,0 +4639986,0 +4639986,0.20715148 +4640040,0.20715148 +4640040,0 +4640100,0 +4640100,0.32030779 +4640118,0.32030779 +4640118,0 +4644084,0 +4644084,0.076946288 +4644090,0.076946288 +4644090,0 +4644198,0 +4644198,0.25150875 +4644264,0.25150875 +4644264,0 +4644936,0 +4644936,0.28138202 +4645026,0.28138202 +4645026,0 +4645908,0 +4645908,0.18421847 +4645998,0.18421847 +4645998,0 +4649394,0 +4649394,0.52926976 +4649448,0.52926976 +4649448,0 +4653444,0 +4653444,0.058690404 +4653546,0.058690404 +4653546,0 +4653558,0 +4653558,0.065781533 +4653564,0.065781533 +4653564,0 +4653672,0 +4653672,0.11210018 +4653720,0.11210018 +4653720,0 +4653792,0 +4653792,0.15600483 +4653852,0.40841883 +4653852,0 +4653864,0 +4653864,0.15600483 +4653876,0.40841883 +4653876,0 +4653906,0 +4653906,0.095353048 +4653930,0.095353048 +4653930,0 +4654020,0 +4654020,0.21514786 +4654068,0.21514786 +4654068,0 +4660446,0 +4660446,0.11194931 +4660476,0.11194931 +4660476,0 +4660560,0 +4660560,0.26961376 +4660596,0.26961376 +4660596,0 +4663836,0 +4663836,0.095353048 +4663842,0.095353048 +4663842,0 +4674312,0 +4674312,0.13533494 +4674426,0.13533494 +4674426,0 +4688358,0 +4688358,0.27187689 +4688388,0.27187689 +4688388,0 +4692624,0 +4692624,0.16701871 +4692744,0.13925769 +4692744,0 +4692828,0 +4692828,0 +4692828,0.16701871 +4692828,0.13925769 +4694106,0 +4694106,0.25015088 +4694190,0.25015088 +4694190,0 +4694220,0 +4694220,0.0034701267 +4694226,0.0034701267 +4694226,0 +4694334,0 +4694334,0.43693422 +4694340,0.43693422 +4694340,0 +4694454,0 +4694454,0.33539529 +4694502,0.33539529 +4694502,0 +4694568,0 +4694568,0.19402535 +4694610,0.19402535 +4694610,0 +4696356,0 +4696356,0.18044659 +4696440,0.18044659 +4696440,0 +4697556,0 +4697556,0.17878696 +4697568,0.17878696 +4697568,0 +4697676,0 +4697676,0.18255884 +4697700,0.18255884 +4697700,0 +4697790,0 +4697790,0.019161135 +4697796,0.019161135 +4697796,0 +4704180,0 +4704180,0.24441762 +4704186,0.24441762 +4704186,0 +4704396,0 +4704396,0.27655401 +4704456,0.27655401 +4704456,0 +4706868,0 +4706868,0.32015691 +4706898,0.32015691 +4706898,0 +4709640,0 +4709640,0.33961979 +4709760,0.23989137 +4709760,0 +4709802,0 +4709802,0.23989137 +4709826,0.33961979 +4709826,0 +4711422,0 +4711422,0.2923959 +4711482,0.2923959 +4711482,0 +4711722,0 +4711722,0.30009053 +4711794,0.30009053 +4711794,0 +4712850,0 +4712850,0.28968014 +4712874,0.28968014 +4712874,0 +4712964,0 +4712964,0.21861798 +4712976,0.21861798 +4712976,0 +4713264,0 +4713264,0.15570308 +4713276,0.15570308 +4713276,0 +4718298,0 +4718298,0.28153289 +4718340,0.28153289 +4718340,0 +4723818,0 +4723818,0.1422752 +4723842,0.1422752 +4723842,0 +4726134,0 +4726134,0.1022933 +4726140,0.1022933 +4726140,0 +4726380,0 +4726380,0.22842486 +4726458,0.22842486 +4726458,0 +4726890,0 +4726890,0.21575136 +4727268,0.21575136 +4727268,0 +4730694,0 +4730694,0.34912492 +4730718,0.34912492 +4730718,0 +4732668,0 +4732668,0.098219674 +4732674,0.098219674 +4732674,0 +4732782,0 +4732782,0.063971032 +4732794,0.063971032 +4732794,0 +4733160,0 +4733160,0.35847918 +4733178,0.35847918 +4733178,0 +4733280,0 +4733280,0.28243814 +4733334,0.28243814 +4733334,0 +4733394,0 +4733394,0.2493965 +4733442,0.2493965 +4733442,0 +4733508,0 +4733508,0.2542245 +4733556,0.2542245 +4733556,0 +4746012,0 +4746012,0.51976463 +4746372,0.51976463 +4746372,0 +4749444,0 +4749444,0.13986119 +4749456,0.13986119 +4749456,0 +4753362,0 +4753362,0.063367532 +4753374,0.063367532 +4753374,0 +4759758,0 +4759758,0.040585395 +4759764,0.040585395 +4759764,0 +4759872,0 +4759872,0.18059747 +4759926,0.18059747 +4759926,0 +4769670,0 +4769670,0.25045263 +4769700,0.25045263 +4769700,0 +4773126,0 +4773126,0.20368135 +4773234,0.20368135 +4773234,0 +4773714,0 +4773714,0.23430899 +4773780,0.23430899 +4773780,0 +4774302,0 +4774302,0.18693422 +4774374,0.18693422 +4774374,0 +4774890,0 +4774890,0.20911285 +4774980,0.20911285 +4774980,0 +4775478,0 +4775478,0.21001811 +4775592,0.21001811 +4775592,0 +4776060,0 +4776060,0.16792396 +4776114,0.16792396 +4776114,0 +4776648,0 +4776648,0.19900422 +4776720,0.19900422 +4776720,0 +4777236,0 +4777236,0.18723597 +4777338,0.18723597 +4777338,0 +4777824,0 +4777824,0.21016898 +4777884,0.21016898 +4777884,0 +4778364,0 +4778364,0.068949909 +4778412,0.23627037 +4778412,0 +4778430,0 +4778430,0.068949909 +4778484,0.23627037 +4778484,0 +4778994,0 +4778994,0.22359686 +4779072,0.22359686 +4779072,0 +4786854,0 +4786854,0.19206397 +4786860,0.19206397 +4786860,0 +4792752,0 +4792752,0.29405552 +4793004,0.29405552 +4793004,0 +4793934,0 +4793934,0.37311406 +4794348,0.37311406 +4794348,0 +4794588,0 +4794588,0.5 +4794948,0.5 +4794948,0 +4811850,0 +4811850,0.042999396 +4811856,0.042999396 +4811856,0 +4811964,0 +4811964,0.2923959 +4812006,0.2923959 +4812006,0 +4812084,0 +4812084,0.087658419 +4812096,0.087658419 +4812096,0 +4812102,0 +4812102,0.13940857 +4812150,0.13940857 +4812150,0 +4812198,0 +4812198,0.10304768 +4812222,0.10304768 +4812222,0 +4812312,0 +4812312,0.24185275 +4812360,0.24185275 +4812360,0 +4812432,0 +4812432,0.11300543 +4812438,0.11300543 +4812438,0 +4812546,0 +4812546,0.28092939 +4812606,0.28092939 +4812606,0 +4812660,0 +4812660,0.32800241 +4812726,0.32800241 +4812726,0 +4814604,0 +4814604,0.22540736 +4814616,0.22540736 +4814616,0 +4814718,0 +4814718,0.29465902 +4814814,0.29465902 +4814814,0 +4815684,0 +4815684,0.12975256 +4815792,0.12975256 +4815792,0 +4815804,0 +4815804,0.14136995 +4815894,0.14136995 +4815894,0 +4815918,0 +4815918,0.22314424 +4815936,0.22314424 +4815936,0 +4816032,0 +4816032,0.12598069 +4816098,0.12598069 +4816098,0 +4816152,0 +4816152,0.012975256 +4816158,0.012975256 +4816158,0 +4825752,0 +4825752,0.26403138 +4825800,0.26403138 +4825800,0 +4829934,0 +4829934,0.06955341 +4829940,0.06955341 +4829940,0 +4830054,0 +4830054,0.12326494 +4830084,0.12326494 +4830084,0 +4832988,0 +4832988,0.072420036 +4832994,0.072420036 +4832994,0 +4833102,0 +4833102,0.038020519 +4833162,0.038020519 +4833162,0 +4865622,0 +4865622,0.048280024 +4865634,0.048280024 +4865634,0 +4872174,0 +4872174,0.92607121 +4872504,0.92607121 +4872504,0 +4881696,0 +4881696,0.0081472541 +4881720,0.0081472541 +4881720,0 +4886316,0 +4886316,0.18587809 +4886352,0.18587809 +4886352,0 +4886430,0 +4886430,0.17546771 +4886460,0.17546771 +4886460,0 +4887510,0 +4887510,0.28289077 +4887570,0.46318648 +4887570,0 +4887630,0 +4887630,0.28289077 +4887642,0.46318648 +4887642,0 +4887792,0 +4887792,0.13774894 +4887858,0.13774894 +4887858,0 +4896732,0 +4896732,0.21348823 +4896756,0.21348823 +4896756,0 +4899126,0 +4899126,0.14665057 +4899150,0.14665057 +4899150,0 +4899240,0 +4899240,0.0034701267 +4899246,0.0034701267 +4899246,0 +4899354,0 +4899354,0.082679541 +4899396,0.082679541 +4899396,0 +4899468,0 +4899468,0.2590525 +4899552,0.2590525 +4899552,0 +4899588,0 +4899588,0.075739288 +4899618,0.075739288 +4899618,0 +4901160,0 +4901160,0.0075437538 +4901226,0.0075437538 +4901226,0 +4901274,0 +4901274,0.26825588 +4901292,0.26825588 +4901292,0 +4901388,0 +4901388,0.0073928787 +4901430,0.0073928787 +4901430,0 +4901508,0 +4901508,0.094598672 +4901538,0.094598672 +4901538,0 +4901622,0 +4901622,0.017652384 +4901796,0.017652384 +4901796,0 +4902312,0 +4902312,0.32377791 +4902336,0.32377791 +4902336,0 +4903590,0 +4903590,0.014484007 +4903596,0.014484007 +4903596,0 +4909704,0 +4909704,0.2929994 +4909728,0.2929994 +4909728,0 +4910346,0 +4910346,0.27640314 +4910388,0.27640314 +4910388,0 +4910460,0 +4910460,0.00030175015 +4910466,0.00030175015 +4910466,0 +4911396,0 +4911396,0.21107423 +4911408,0.21107423 +4911408,0 +4911510,0 +4911510,0.26433313 +4911588,0.26433313 +4911588,0 +4916184,0 +4916184,0.094749547 +4916256,0.094749547 +4916256,0 +4918020,0 +4918020,0.066988533 +4918038,0.066988533 +4918038,0 +4918134,0 +4918134,0.14136995 +4918158,0.14136995 +4918158,0 +4949280,0 +4949280,0.14423657 +4949328,0.14423657 +4949328,0 +4949400,0 +4949400,0.038473144 +4949406,0.038473144 +4949406,0 +4949514,0 +4949514,0.10365118 +4949568,0.10365118 +4949568,0 +4952460,0 +4952460,0.245172 +4952502,0.245172 +4952502,0 +4952580,0 +4952580,0.09007242 +4952586,0.09007242 +4952586,0 +4952694,0 +4952694,0.0070911285 +4952700,0.0070911285 +4952700,0 +4955454,0 +4955454,0.53862402 +4955976,0.53862402 +4955976,0 +4959894,0 +4959894,0.063367532 +4959900,0.063367532 +4959900,0 +4960008,0 +4960008,0.084037417 +4960044,0.084037417 +4960044,0 +4960392,0 +4960392,0.32392879 +4960446,0.32392879 +4960446,0 +4962390,0 +4962390,0.066988533 +4962408,0.066988533 +4962408,0 +4962870,0 +4962870,0.038020519 +4962876,0.038020519 +4962876,0 +4962984,0 +4962984,0.20171998 +4963008,0.20171998 +4963008,0 +4963098,0 +4963098,0.12492456 +4963128,0.12492456 +4963128,0 +4963218,0 +4963218,0.0085998793 +4963224,0.0085998793 +4963224,0 +4964586,0 +4964586,0.14257695 +4964640,0.14257695 +4964640,0 +4964700,0 +4964700,0.21967411 +4964742,0.21967411 +4964742,0 +4964820,0 +4964820,0.12175619 +4964892,0.011013881 +4964892,0 +4964898,0 +4964898,0.011013881 +4964976,0.12175619 +4964976,0 +4965006,0 +4965006,0.13971032 +4965012,0.13971032 +4965012,0 +4976142,0 +4976142,0.05914303 +4976154,0.05914303 +4976154,0 +4979310,0 +4979310,0.11375981 +4979364,0.11375981 +4979364,0 +4979430,0 +4979430,0.014484007 +4979454,0.014484007 +4979454,0 +4981482,0 +4981482,0.15238383 +4981554,0.15238383 +4981554,0 +4984146,0 +4984146,0.246379 +4984260,0 +4984260,0 +4984260,0.04013277 +4984260,0.246379 +4984266,0.04013277 +4984266,0 +4984374,0 +4984374,0.08056729 +4984380,0.08056729 +4984380,0 +4987638,0 +4987638,0.0084490042 +4987644,0.0084490042 +4987644,0 +4990758,0 +4990758,0.16309596 +4990872,0.22027761 +4990872,0 +4990968,0 +4990968,0.16309596 +4991034,0.22027761 +4991034,0 +4996674,0 +4996674,0.22827399 +4996770,0.22827399 +4996770,0 +4996794,0 +4996794,0.23642124 +4996812,0.23642124 +4996812,0 +4996908,0 +4996908,0.35093543 +4996914,0.35093543 +4996914,0 +4997592,0 +4997592,0.25165963 +4997640,0.25165963 +4997640,0 +4999584,0 +4999584,0.1452927 +4999602,0.1452927 +4999602,0 +5001738,0 +5001738,0.11240193 +5001756,0.11240193 +5001756,0 +5001852,0 +5001852,0.28183464 +5001858,0.28183464 +5001858,0 +5005164,0 +5005164,0.056276403 +5005170,0.056276403 +5005170,0 +5005278,0 +5005278,0.13126132 +5005284,0.13126132 +5005284,0 +5005392,0 +5005392,0.054315027 +5005398,0.054315027 +5005398,0 +5005860,0 +5005860,0.15660833 +5005890,0.15660833 +5005890,0 +5012472,0 +5012472,0.27776101 +5012538,0.27776101 +5012538,0 +5016930,0 +5016930,0.45669885 +5016936,0.45669885 +5016936,0 +5022864,0 +5022864,0.022178636 +5022870,0.022178636 +5022870,0 +5022978,0 +5022978,0.0069402535 +5023002,0.0069402535 +5023002,0 +5033400,0 +5033400,0.0064876282 +5033412,0.0064876282 +5033412,0 +5033628,0 +5033628,0.038322269 +5033718,0.038322269 +5033718,0 +5033742,0 +5033742,0.094146047 +5033814,0.094146047 +5033814,0 +5039610,0 +5039610,0.29450815 +5039628,0.29450815 +5039628,0 +5042478,0 +5042478,0.12039831 +5042508,0.12039831 +5042508,0 +5042592,0 +5042592,0.014333132 +5042598,0.014333132 +5042598,0 +5042982,0 +5042982,0.18693422 +5043036,0.18693422 +5043036,0 +5045568,0 +5045568,0.24954737 +5045610,0.24954737 +5045610,0 +5045682,0 +5045682,0.22540736 +5045700,0.22540736 +5045700,0 +5045802,0 +5045802,0.11949306 +5045832,0.11949306 +5045832,0 +5048820,0 +5048820,0.21016898 +5048826,0.21016898 +5048826,0 +5052654,0 +5052654,0.22420036 +5052738,0.22420036 +5052738,0 +5053098,0 +5053098,0.27278214 +5053140,0.27278214 +5053140,0 +5053242,0 +5053242,0.22435124 +5053350,0.22435124 +5053350,0 +5053830,0 +5053830,0.21907061 +5053956,0.21907061 +5053956,0 +5054412,0 +5054412,0.19930597 +5054466,0.19930597 +5054466,0 +5055000,0 +5055000,0.19357272 +5055072,0.19357272 +5055072,0 +5066088,0 +5066088,0.21152686 +5066262,0.21152686 +5066262,0 +5074974,0 +5074974,0.22540736 +5075040,0.22540736 +5075040,0 +5075094,0 +5075094,0.27323476 +5075106,0.27323476 +5075106,0 +5081184,0 +5081184,0.38820157 +5082042,0.38820157 +5082042,0 +5083026,0 +5083026,0.23400724 +5083068,0.23400724 +5083068,0 +5084952,0 +5084952,0.17441159 +5084982,0.17441159 +5084982,0 +5085066,0 +5085066,0.18014484 +5085090,0.18014484 +5085090,0 +5090148,0 +5090148,0.048732649 +5090154,0.048732649 +5090154,0 +5095908,0 +5095908,0.26538926 +5095932,0.26538926 +5095932,0 +5096022,0 +5096022,0.014484007 +5096028,0.014484007 +5096028,0 +5097132,0 +5097132,0.082226916 +5097162,0.082226916 +5097162,0 +5099502,0 +5099502,0.32377791 +5099508,0.32377791 +5099508,0 +5125668,0 +5125668,0.18678334 +5125686,0.18678334 +5125686,0 +5126760,0 +5126760,0.029269765 +5126766,0.029269765 +5126766,0 +5126856,0 +5126856,0.32905854 +5126874,0.13201569 +5126874,0 +5126910,0 +5126910,0.32905854 +5126970,0.32317441 +5126970,0 +5126976,0 +5126976,0.32317441 +5127000,0.13201569 +5127000,0 +5127084,0 +5127084,0.3086904 +5127102,0.3086904 +5127102,0 +5127720,0 +5127720,0.21695836 +5127750,0.21695836 +5127750,0 +5127834,0 +5127834,0.22525649 +5127930,0.22525649 +5127930,0 +5128374,0 +5128374,0.0072420036 +5128416,0.0072420036 +5128416,0 +5128488,0 +5128488,0.13020519 +5128542,0.13020519 +5128542,0 +5131122,0 +5131122,0.32060954 +5131506,0.32060954 +5131506,0 +5131548,0 +5131548,0.13820157 +5131554,0.13820157 +5131554,0 +5131662,0 +5131662,0.24064575 +5131680,0.24064575 +5131680,0 +5131782,0 +5131782,0.01991551 +5131794,0.065328908 +5131794,0 +5131812,0 +5131812,0.01991551 +5131818,0.065328908 +5131818,0 +5131896,0 +5131896,0.29375377 +5131956,0.29375377 +5131956,0 +5132952,0 +5132952,0.32196741 +5133294,0.32196741 +5133294,0 +5140836,0 +5140836,0.22661436 +5140902,0.22661436 +5140902,0 +5141136,0 +5141136,0.44749547 +5141202,0.44749547 +5141202,0 +5145210,0 +5145210,0.26659626 +5145222,0.26659626 +5145222,0 +5145324,0 +5145324,0.0075437538 +5145348,0.0075437538 +5145348,0 +5145444,0 +5145444,0.015691008 +5145450,0.015691008 +5145450,0 +5152128,0 +5152128,0.028968014 +5152134,0.028968014 +5152134,0 +5152242,0 +5152242,0.22721786 +5152284,0.22721786 +5152284,0 +5152356,0 +5152356,0.31940253 +5152374,0.31940253 +5152374,0 +5153022,0 +5153022,0.00075437538 +5153028,0.00075437538 +5153028,0 +5160012,0 +5160012,0.27263126 +5160018,0.27263126 +5160018,0 +5165712,0 +5165712,0.25950513 +5165910,0.25950513 +5165910,0 +5170182,0 +5170182,0.13442969 +5170188,0.13442969 +5170188,0 +5175888,0 +5175888,0.082226916 +5175912,0.082226916 +5175912,0 +5176002,0 +5176002,0.11089318 +5176026,0.11089318 +5176026,0 +5202384,0 +5202384,0.14393482 +5202414,0.14393482 +5202414,0 +5202498,0 +5202498,0.31759203 +5202516,0.31759203 +5202516,0 +5202612,0 +5202612,0.016294508 +5202618,0.016294508 +5202618,0 +5205144,0 +5205144,0.23445987 +5205210,0.23445987 +5205210,0 +5209878,0 +5209878,0.01071213 +5209884,0.01071213 +5209884,0 +5215416,0 +5215416,0.18512372 +5215452,0.18512372 +5215452,0 +5215536,0 +5215536,0.23280024 +5215578,0.23280024 +5215578,0 +5215950,0 +5215950,0.39212432 +5216382,0.39212432 +5216382,0 +5219736,0 +5219736,0.31231141 +5220078,0.31231141 +5220078,0 +5233536,0 +5233536,0.2057936 +5233554,0.2057936 +5233554,0 +5234418,0 +5234418,0.19583585 +5234490,0.19583585 +5234490,0 +5243514,0 +5243514,0.17124321 +5243538,0.17124321 +5243538,0 +5244540,0 +5244540,0.17833434 +5244606,0.17833434 +5244606,0 +5247846,0 +5247846,0.27036814 +5247960,0.067592034 +5247960,0 +5247966,0 +5247966,0.067592034 +5247996,0.27036814 +5247996,0 +5248590,0 +5248590,0.078455039 +5248686,0.078455039 +5248686,0 +5249586,0 +5249586,0.22374774 +5249682,0.22374774 +5249682,0 +5250174,0 +5250174,0.33494267 +5250426,0.075739288 +5250426,0 +5250468,0 +5250468,0.075739288 +5251494,0.33494267 +5251494,0 +5257482,0 +5257482,0.32423054 +5257590,0.32423054 +5257590,0 +5257788,0 +5257788,0.13050694 +5257872,0.13050694 +5257872,0 +5257902,0 +5257902,0.16716958 +5258022,0 +5258022,0 +5258022,0.16716958 +5258022,0.31110441 +5258028,0.31110441 +5258028,0 +5262978,0 +5262978,0.17003621 +5263026,0.17003621 +5263026,0 +5290590,0 +5290590,0.081925166 +5290620,0.081925166 +5290620,0 +5297610,0 +5297610,0.14785757 +5297634,0.14785757 +5297634,0 +5297724,0 +5297724,0.023234762 +5297730,0.023234762 +5297730,0 +5301552,0 +5301552,0.053108027 +5301570,0.053108027 +5301570,0 +5302254,0 +5302254,0.14665057 +5302260,0.14665057 +5302260,0 +5302374,0 +5302374,0.3553108 +5302380,0.3553108 +5302380,0 +5302488,0 +5302488,0.3522933 +5302542,0.3522933 +5302542,0 +5304018,0 +5304018,0.20549185 +5304054,0.20549185 +5304054,0 +5304132,0 +5304132,0.39665057 +5304138,0.39665057 +5304138,0 +5311860,0 +5311860,0.13714544 +5311896,0.13714544 +5311896,0 +5312760,0 +5312760,0.058539529 +5312766,0.058539529 +5312766,0 +5314452,0 +5314452,0.21454436 +5314482,0.21454436 +5314482,0 +5315016,0 +5315016,0.27640314 +5315154,0.27640314 +5315154,0 +5323380,0 +5323380,0.27549789 +5323392,0.27549789 +5323392,0 +5323722,0 +5323722,0.2481895 +5324094,0.2481895 +5324094,0 +5324850,0 +5324850,0.060500905 +5324856,0.060500905 +5324856,0 +5325504,0 +5325504,0.1495172 +5325570,0.1495172 +5325570,0 +5325624,0 +5325624,0.0072420036 +5325678,0.0072420036 +5325678,0 +5325738,0 +5325738,0.31442366 +5325768,0.31442366 +5325768,0 +5325852,0 +5325852,0.24562462 +5325864,0.24562462 +5325864,0 +5329416,0 +5329416,0.12809294 +5329464,0.12809294 +5329464,0 +5333562,0 +5333562,0.32196741 +5333652,0.32196741 +5333652,0 +5337054,0 +5337054,0.12326494 +5337084,0.12326494 +5337084,0 +5337168,0 +5337168,0.247586 +5337192,0.247586 +5337192,0 +5337408,0 +5337408,0.11149668 +5337420,0.11149668 +5337420,0 +5342580,0 +5342580,0.15841883 +5342586,0.15841883 +5342586,0 +5348388,0 +5348388,0.30039228 +5348832,0.30039228 +5348832,0 +5350224,0 +5350224,0.32845504 +5350818,0.32845504 +5350818,0 +5372268,0 +5372268,0.045866023 +5372274,0.045866023 +5372274,0 +5382066,0 +5382066,0.16234158 +5382096,0.16234158 +5382096,0 +5383260,0 +5383260,0.21982498 +5383296,0.21982498 +5383296,0 +5383374,0 +5383374,0.11104406 +5383386,0.11104406 +5383386,0 +5383494,0 +5383494,0.19417622 +5383590,0.19417622 +5383590,0 +5386224,0 +5386224,0.18346409 +5386266,0.18346409 +5386266,0 +5389944,0 +5389944,0.21590223 +5389956,0.21590223 +5389956,0 +5397384,0 +5397384,0.1004828 +5397390,0.1004828 +5397390,0 +5397504,0 +5397504,0.044357272 +5397516,0.044357272 +5397516,0 +5397618,0 +5397618,0.21499698 +5397672,0.21499698 +5397672,0 +5397732,0 +5397732,0.1597767 +5397768,0.1597767 +5397768,0 +5397852,0 +5397852,0.20805673 +5397864,0.20805673 +5397864,0 +5397966,0 +5397966,0.1446892 +5397978,0.1446892 +5397978,0 +5398080,0 +5398080,0.17395896 +5398128,0.17395896 +5398128,0 +5401320,0 +5401320,0.2045866 +5401344,0.2045866 +5401344,0 +5401350,0 +5401350,0.18301147 +5401434,0.14604707 +5401434,0 +5401446,0 +5401446,0.18301147 +5401452,0.14604707 +5401452,0 +5401632,0 +5401632,0.3038624 +5401650,0.3038624 +5401650,0 +5402742,0 +5402742,0.20730235 +5402760,0.20730235 +5402760,0 +5403654,0 +5403654,0.090223295 +5403660,0.090223295 +5403660,0 +5410758,0 +5410758,0.35485818 +5411166,0.35485818 +5411166,0 +5412228,0 +5412228,0.1961376 +5412288,0.1961376 +5412288,0 +5412594,0 +5412594,0.28696439 +5412888,0.28696439 +5412888,0 +5415546,0 +5415546,0.12613156 +5415618,0.12613156 +5415618,0 +5416248,0 +5416248,0.28741702 +5416260,0.28741702 +5416260,0 +5419722,0 +5419722,0.039378395 +5419824,0.039378395 +5419824,0 +5424144,0 +5424144,0.0024140012 +5424150,0.0024140012 +5424150,0 +5427786,0 +5427786,0.21394086 +5427864,0.21394086 +5427864,0 +5427900,0 +5427900,0.1979481 +5427924,0.1979481 +5427924,0 +5431674,0 +5431674,0.26508751 +5431698,0.26508751 +5431698,0 +5433906,0 +5433906,0.10274593 +5434020,0.19885335 +5434020,0 +5434038,0 +5434038,0.10274593 +5434086,0.19885335 +5434086,0 +5434134,0 +5434134,0.04013277 +5434230,0.04013277 +5434230,0 +5434254,0 +5434254,0.084942667 +5434266,0.084942667 +5434266,0 +5441460,0 +5441460,0.17999396 +5441610,0.17999396 +5441610,0 +5443524,0 +5443524,0.06985516 +5443572,0.06985516 +5443572,0 +5445312,0 +5445312,0.054767652 +5445318,0.054767652 +5445318,0 +5450394,0 +5450394,0.12130356 +5450400,0.12130356 +5450400,0 +5466330,0 +5466330,0.24049487 +5466426,0.24049487 +5466426,0 +5466450,0 +5466450,0.040585395 +5466474,0.040585395 +5466474,0 +5466564,0 +5466564,0.11013881 +5466612,0.11013881 +5466612,0 +5472522,0 +5472522,0.50814725 +5472528,0.017350634 +5472528,0 +5472534,0 +5472534,0.017350634 +5472918,0.50814725 +5472918,0 +5485398,0 +5485398,0.23747737 +5485440,0.23747737 +5485440,0 +5485518,0 +5485518,0.30280628 +5485548,0.30280628 +5485548,0 +5489232,0 +5489232,0.049185275 +5489238,0.049185275 +5489238,0 +5492076,0 +5492076,0.14996982 +5492094,0.14996982 +5492094,0 +5497278,0 +5497278,0.18633072 +5497362,0.18633072 +5497362,0 +5500392,0 +5500392,0.14272782 +5500434,0.14272782 +5500434,0 +5500506,0 +5500506,0.011768256 +5500512,0.011768256 +5500512,0 +5502462,0 +5502462,0.058992154 +5502468,0.058992154 +5502468,0 +5504730,0 +5504730,0.032438141 +5504736,0.032438141 +5504736,0 +5508090,0 +5508090,0.0075437538 +5508168,0.0075437538 +5508168,0 +5513592,0 +5513592,0.057483404 +5513598,0.057483404 +5513598,0 +5513910,0 +5513910,0.30944478 +5514078,0.30944478 +5514078,0 +5517420,0 +5517420,0.33041642 +5517462,0.33041642 +5517462,0 +5518392,0 +5518392,0.14785757 +5518422,0.14785757 +5518422,0 +5519772,0 +5519772,0.20006035 +5519826,0.20006035 +5519826,0 +5520360,0 +5520360,0.18949909 +5520438,0.18949909 +5520438,0 +5520942,0 +5520942,0.21303561 +5521044,0.21303561 +5521044,0 +5521530,0 +5521530,0.25316838 +5521608,0.25316838 +5521608,0 +5522682,0 +5522682,0.18150272 +5522730,0.18150272 +5522730,0 +5523810,0 +5523810,0.059595655 +5523900,0.059595655 +5523900,0 +5524902,0 +5524902,0.18029572 +5524920,0.18029572 +5524920,0 +5525022,0 +5525022,0.27474351 +5525064,0.27474351 +5525064,0 +5525136,0 +5525136,0.25196138 +5525208,0.25196138 +5525208,0 +5525250,0 +5525250,0.15162945 +5525352,0.15162945 +5525352,0 +5525370,0 +5525370,0.18436934 +5525382,0.18436934 +5525382,0 +5539020,0 +5539020,0.089016295 +5539116,0.089016295 +5539116,0 +5539134,0 +5539134,0.28907664 +5539152,0.28907664 +5539152,0 +5557158,0 +5557158,0.11044056 +5557170,0.11044056 +5557170,0 +5562360,0 +5562360,0.12854556 +5562402,0.12854556 +5562402,0 +5562474,0 +5562474,0.29707302 +5562480,0.29707302 +5562480,0 +5562630,0 +5562630,0.20971635 +5562696,0.20971635 +5562696,0 +5562744,0 +5562744,0.082679541 +5562750,0.082679541 +5562750,0 +5562798,0 +5562798,0.096710923 +5562834,0.096710923 +5562834,0 +5562864,0 +5562864,0.26131563 +5562954,0.26131563 +5562954,0 +5562978,0 +5562978,0.067139409 +5562984,0.067139409 +5562984,0 +5565672,0 +5565672,0.2518105 +5565678,0.2518105 +5565678,0 +5571822,0 +5571822,0.11089318 +5571846,0.11089318 +5571846,0 +5573556,0 +5573556,0.17079059 +5573604,0.17079059 +5573604,0 +5573670,0 +5573670,0.34173205 +5573682,0.34173205 +5573682,0 +5574348,0 +5574348,0.043904647 +5574354,0.043904647 +5574354,0 +5574468,0 +5574468,0.16973446 +5574486,0.16973446 +5574486,0 +5575200,0 +5575200,0.26191913 +5575212,0.26191913 +5575212,0 +5580456,0 +5580456,0.26342788 +5580462,0.092335546 +5580462,0 +5580492,0 +5580492,0.092335546 +5580624,0.26342788 +5580624,0 +5583582,0 +5583582,0.33584792 +5583612,0.33584792 +5583612,0 +5588700,0 +5588700,0.2076041 +5588736,0.2076041 +5588736,0 +5589090,0 +5589090,0.033796017 +5589096,0.033796017 +5589096,0 +5591880,0 +5591880,0.43150272 +5591958,0.43150272 +5591958,0 +5593380,0 +5593380,0.0063367532 +5593392,0.0063367532 +5593392,0 +5593494,0 +5593494,0.23325287 +5593614,0.21846711 +5593614,0 +5593656,0 +5593656,0.21846711 +5593704,0.23325287 +5593704,0 +5599536,0 +5599536,0.15208208 +5599542,0.15208208 +5599542,0 +5599650,0 +5599650,0.16490646 +5599656,0.16490646 +5599656,0 +5599770,0 +5599770,0.25015088 +5599884,0.13880507 +5599884,0 +5599890,0 +5599890,0.25015088 +5599980,0.13880507 +5599980,0 +5599998,0 +5599998,0.28560652 +5600040,0.28560652 +5600040,0 +5600118,0 +5600118,0.11149668 +5600136,0.11149668 +5600136,0 +5601222,0 +5601222,0.0058841279 +5601234,0.0058841279 +5601234,0 +5601342,0 +5601342,0.17018709 +5601480,0.17018709 +5601480,0 +5603460,0 +5603460,0.21167773 +5603472,0.21167773 +5603472,0 +5608290,0 +5608290,0.26508751 +5608428,0.26508751 +5608428,0 +5614278,0 +5614278,0.3020519 +5614320,0.3020519 +5614320,0 +5614398,0 +5614398,0.071213036 +5614428,0.071213036 +5614428,0 +5615982,0 +5615982,0.041792396 +5615988,0.041792396 +5615988,0 +5616096,0 +5616096,0.25497888 +5616120,0.25497888 +5616120,0 +5617170,0 +5617170,0.23883524 +5617200,0.23883524 +5617200,0 +5639976,0 +5639976,0.13624019 +5639982,0.13624019 +5639982,0 +5642706,0 +5642706,0.12447194 +5642724,0.12447194 +5642724,0 +5642820,0 +5642820,0.16641521 +5642826,0.16641521 +5642826,0 +5642940,0 +5642940,0.30537115 +5642946,0.30537115 +5642946,0 +5644908,0 +5644908,0.1410682 +5644938,0.1410682 +5644938,0 +5645478,0 +5645478,0.24260712 +5645496,0.24260712 +5645496,0 +5645922,0 +5645922,0.21303561 +5645928,0.21303561 +5645928,0 +5646534,0 +5646534,0.4037417 +5646606,0.4037417 +5646606,0 +5646834,0 +5646834,0.3402233 +5646858,0.3402233 +5646858,0 +5647134,0 +5647134,0.41807483 +5647182,0.41807483 +5647182,0 +5647428,0 +5647428,0.41128546 +5647482,0.41128546 +5647482,0 +5650992,0 +5650992,0.52444176 +5651106,0.52444176 +5651106,0 +5651292,0 +5651292,0.42622209 +5651364,0.42622209 +5651364,0 +5651586,0 +5651586,0.34127942 +5651646,0.34127942 +5651646,0 +5651886,0 +5651886,0.40781533 +5651958,0.40781533 +5651958,0 +5656974,0 +5656974,0.090826795 +5656986,0.090826795 +5656986,0 +5658048,0 +5658048,0.19477972 +5658114,0.19477972 +5658114,0 +5658162,0 +5658162,0.17954134 +5658186,0.17954134 +5658186,0 +5659992,0 +5659992,0.24728425 +5660076,0.24728425 +5660076,0 +5660580,0 +5660580,0.16535908 +5660640,0.053108027 +5660640,0 +5660646,0 +5660646,0.053108027 +5660670,0.16535908 +5660670,0 +5661168,0 +5661168,0.21816536 +5661228,0.21816536 +5661228,0 +5661756,0 +5661756,0.21514786 +5661828,0.21514786 +5661828,0 +5674806,0 +5674806,0.097465299 +5674818,0.097465299 +5674818,0 +5677566,0 +5677566,0.4055522 +5678118,0.029873265 +5678118,0 +5678124,0 +5678124,0.4055522 +5678148,0.029873265 +5678148,0 +5683302,0 +5683302,0.10998793 +5683350,0.10998793 +5683350,0 +5683560,0 +5683560,0.0021122511 +5683566,0.0021122511 +5683566,0 +5683674,0 +5683674,0.078605914 +5683686,0.078605914 +5683686,0 +5684838,0 +5684838,0.040585395 +5684844,0.040585395 +5684844,0 +5688546,0 +5688546,0.030175015 +5688576,0.030175015 +5688576,0 +5692518,0 +5692518,0.03062764 +5692524,0.03062764 +5692524,0 +5693760,0 +5693760,0.12205794 +5693832,0.12205794 +5693832,0 +5694888,0 +5694888,0.0070911285 +5694930,0.0070911285 +5694930,0 +5695002,0 +5695002,0.14740495 +5695026,0.14740495 +5695026,0 +5695122,0 +5695122,0.26372963 +5695128,0.14318045 +5695128,0 +5695164,0 +5695164,0.26372963 +5695176,0.14318045 +5695176,0 +5708820,0 +5708820,0.18572722 +5708856,0.18572722 +5708856,0 +5708940,0 +5708940,0.012673506 +5708946,0.012673506 +5708946,0 +5709054,0 +5709054,0.30190103 +5709072,0.30190103 +5709072,0 +5709168,0 +5709168,0.15841883 +5709186,0.15841883 +5709186,0 +5709288,0 +5709288,0.18089922 +5709324,0.18089922 +5709324,0 +5709402,0 +5709402,0.27036814 +5709474,0.27036814 +5709474,0 +5709516,0 +5709516,0.17033796 +5709534,0.17033796 +5709534,0 +5709636,0 +5709636,0.0042245021 +5709642,0.0042245021 +5709642,0 +5709750,0 +5709750,0.36300543 +5709780,0.36300543 +5709780,0 +5709864,0 +5709864,0.30295715 +5709876,0.30295715 +5709876,0 +5709984,0 +5709984,0.28545564 +5710014,0.28545564 +5710014,0 +5710098,0 +5710098,0.23340374 +5710134,0.23340374 +5710134,0 +5710212,0 +5710212,0.094296922 +5710260,0.094296922 +5710260,0 +5710332,0 +5710332,0.00045262523 +5710338,0.00045262523 +5710338,0 +5730618,0 +5730618,0.26463488 +5730630,0.26463488 +5730630,0 +5730852,0 +5730852,0.1567592 +5730888,0.1567592 +5730888,0 +5731122,0 +5731122,0.12598069 +5731152,0.12598069 +5731152,0 +5733366,0 +5733366,0.16264333 +5733390,0.16264333 +5733390,0 +5740986,0 +5740986,0.16943271 +5741010,0.16943271 +5741010,0 +5741100,0 +5741100,0.27368739 +5741118,0.27368739 +5741118,0 +5756868,0 +5756868,0.18980084 +5756880,0.18980084 +5756880,0 +5756982,0 +5756982,0.19643935 +5757030,0.19643935 +5757030,0 +5757096,0 +5757096,0.25875075 +5757132,0.25875075 +5757132,0 +5757216,0 +5757216,0.22691611 +5757228,0.22691611 +5757228,0 +5760102,0 +5760102,0.16505733 +5760114,0.14725407 +5760114,0 +5760126,0 +5760126,0.16505733 +5760216,0.1434822 +5760216,0 +5760240,0 +5760240,0.14725407 +5760246,0.1434822 +5760246,0 +5760330,0 +5760330,0.1919131 +5760432,0.1919131 +5760432,0 +5760450,0 +5760450,0.2082076 +5760462,0.2082076 +5760462,0 +5760564,0 +5760564,0.1483102 +5760594,0.1483102 +5760594,0 +5760678,0 +5760678,0.017501509 +5760684,0.017501509 +5760684,0 +5760798,0 +5760798,0.092788171 +5760876,0.092788171 +5760876,0 +5760912,0 +5760912,0.26388051 +5761008,0.26388051 +5761008,0 +5761026,0 +5761026,0.23068799 +5761062,0.23068799 +5761062,0 +5761146,0 +5761146,0.15570308 +5761158,0.15570308 +5761158,0 +5761260,0 +5761260,0.18497284 +5761332,0.18497284 +5761332,0 +5766024,0 +5766024,0.27097164 +5766096,0.27097164 +5766096,0 +5766138,0 +5766138,0.29465902 +5766144,0.29465902 +5766144,0 +5770710,0 +5770710,0.26252263 +5770716,0.26252263 +5770716,0 +5774652,0 +5774652,0.251207 +5774766,0.19824985 +5774766,0 +5774778,0 +5774778,0.251207 +5774784,0.19824985 +5774784,0 +5774880,0 +5774880,0.16264333 +5774964,0.16264333 +5774964,0 +5775000,0 +5775000,0.095503923 +5775006,0.095503923 +5775006,0 +5785128,0 +5785128,0.051599276 +5785134,0.051599276 +5785134,0 +5786544,0 +5786544,0.14378395 +5786646,0.14378395 +5786646,0 +5786682,0 +5786682,0.10636693 +5786736,0.10636693 +5786736,0 +5786802,0 +5786802,0.16188896 +5786928,0.16188896 +5786928,0 +5791680,0 +5791680,0.21801448 +5791728,0.21801448 +5791728,0 +5810238,0 +5810238,0.30250453 +5810316,0.30250453 +5810316,0 +5810352,0 +5810352,0.14318045 +5810376,0.14318045 +5810376,0 +5811540,0 +5811540,0.21846711 +5811624,0.21846711 +5811624,0 +5815752,0 +5815752,0.37311406 +5815770,0.37311406 +5815770,0 +5816166,0 +5816166,0.21997586 +5816184,0.21997586 +5816184,0 +5817624,0 +5817624,0.35244418 +5817714,0.35244418 +5817714,0 +5818860,0 +5818860,0.33509354 +5818974,0 +5818974,0 +5818974,0.076041038 +5818974,0.33509354 +5819010,0.076041038 +5819010,0 +5822082,0 +5822082,0.46167773 +5822154,0.46167773 +5822154,0 +5825430,0 +5825430,0.087809294 +5825442,0.087809294 +5825442,0 +5825544,0 +5825544,0.18255884 +5825562,0.18255884 +5825562,0 +5825652,0 +5825652,0.021424261 +5825658,0.021424261 +5825658,0 +5825664,0 +5825664,0.12960169 +5825670,0.12960169 +5825670,0 +5825778,0 +5825778,0.20066385 +5825826,0.20066385 +5825826,0 +5825892,0 +5825892,0.2082076 +5825994,0.2082076 +5825994,0 +5826540,0 +5826540,0.16143633 +5826588,0.16143633 +5826588,0 +5829696,0 +5829696,0.26056126 +5829750,0.26056126 +5829750,0 +5830500,0 +5830500,0.36436331 +5830506,0.36436331 +5830506,0 +5830614,0 +5830614,0.1585697 +5830692,0.1585697 +5830692,0 +5830734,0 +5830734,0.061858781 +5830848,0.065630658 +5830848,0 +5830866,0 +5830866,0.065630658 +5830890,0.20684973 +5830890,0 +5830902,0 +5830902,0.061858781 +5830950,0.20684973 +5830950,0 +5830962,0 +5830962,0.071363911 +5830980,0.071363911 +5830980,0 +5831082,0 +5831082,0.2469825 +5831112,0.2469825 +5831112,0 +5839020,0 +5839020,0.15102595 +5839026,0.15102595 +5839026,0 +5839188,0 +5839188,0.14861195 +5839218,0.14861195 +5839218,0 +5847324,0 +5847324,0.30944478 +5847384,0.30944478 +5847384,0 +5848692,0 +5848692,0.32302354 +5848704,0.32302354 +5848704,0 +5848812,0 +5848812,0.087809294 +5848830,0.087809294 +5848830,0 +5850282,0 +5850282,0.12960169 +5850336,0.12960169 +5850336,0 +5850546,0 +5850546,0.33524442 +5850666,0.33524442 +5850666,0 +5855508,0 +5855508,0.097012674 +5855580,0.097012674 +5855580,0 +5856714,0 +5856714,0.21544961 +5856804,0.21544961 +5856804,0 +5857302,0 +5857302,0.257242 +5857368,0.257242 +5857368,0 +5857884,0 +5857884,0.2021726 +5857968,0.2021726 +5857968,0 +5858472,0 +5858472,0.25437538 +5858544,0.25437538 +5858544,0 +5859060,0 +5859060,0.17803259 +5859120,0.17803259 +5859120,0 +5859444,0 +5859444,0.22767049 +5859456,0.01961376 +5859456,0 +5859462,0 +5859462,0.01961376 +5859486,0.22767049 +5859486,0 +5859918,0 +5859918,0.22585999 +5859990,0.22585999 +5859990,0 +5861280,0 +5861280,0.061858781 +5861286,0.061858781 +5861286,0 +5868582,0 +5868582,0.20488835 +5868588,0.20488835 +5868588,0 +5868702,0 +5868702,0.024743512 +5868738,0.024743512 +5868738,0 +5870508,0 +5870508,0.045262523 +5870580,0.045262523 +5870580,0 +5870622,0 +5870622,0.3092939 +5870640,0.3092939 +5870640,0 +5870742,0 +5870742,0.20262523 +5870856,0.015691008 +5870856,0 +5870862,0 +5870862,0.015691008 +5870928,0.20262523 +5870928,0 +5887608,0 +5887608,0.22133374 +5887626,0.22133374 +5887626,0 +5893014,0 +5893014,0.1973446 +5893038,0.1973446 +5893038,0 +5893128,0 +5893128,0.1507242 +5893164,0.1507242 +5893164,0 +5899320,0 +5899320,0.15208208 +5899362,0.15208208 +5899362,0 +5900592,0 +5900592,0.20051298 +5900598,0.20051298 +5900598,0 +5900646,0 +5900646,0.42456246 +5901162,0.42456246 +5901162,0 +5901648,0 +5901648,0.01931201 +5901666,0.01931201 +5901666,0 +5906310,0 +5906310,0.10908268 +5906328,0.10908268 +5906328,0 +5908638,0 +5908638,0.18105009 +5908716,0.18105009 +5908716,0 +5909226,0 +5909226,0.21756186 +5909346,0.21756186 +5909346,0 +5909808,0 +5909808,0.25075438 +5909880,0.25075438 +5909880,0 +5910396,0 +5910396,0.21650573 +5910510,0.21650573 +5910510,0 +5914008,0 +5914008,0.25512975 +5914032,0.25512975 +5914032,0 +5914122,0 +5914122,0.2003621 +5914206,0.2003621 +5914206,0 +5914236,0 +5914236,0.066535908 +5914242,0.066535908 +5914242,0 +5915322,0 +5915322,0.013427882 +5915328,0.013427882 +5915328,0 +5915484,0 +5915484,0.026252263 +5915550,0.026252263 +5915550,0 +5915598,0 +5915598,0.2045866 +5915610,0.2045866 +5915610,0 +5915718,0 +5915718,0.23702474 +5915784,0.23702474 +5915784,0 +5915832,0 +5915832,0.04013277 +5915844,0.04013277 +5915844,0 +5918502,0 +5918502,0.15328908 +5918538,0.15328908 +5918538,0 +5926632,0 +5926632,0.26523838 +5926638,0.26523838 +5926638,0 +5928240,0 +5928240,0.26025951 +5928276,0.26025951 +5928276,0 +5929098,0 +5929098,0.12220881 +5929224,0.12220881 +5929224,0 +5936658,0 +5936658,0.064272782 +5936670,0.064272782 +5936670,0 +5937390,0 +5937390,0.32785154 +5937468,0.32785154 +5937468,0 +5938374,0 +5938374,0.17139409 +5938428,0.17139409 +5938428,0 +5938488,0 +5938488,0.24170187 +5938548,0.24170187 +5938548,0 +5938602,0 +5938602,0.16686783 +5938608,0.16686783 +5938608,0 +5947428,0 +5947428,0.1458962 +5947476,0.1458962 +5947476,0 +5952768,0 +5952768,0.023989137 +5952774,0.023989137 +5952774,0 +5984736,0 +5984736,0.20443573 +5984748,0.20443573 +5984748,0 +5985270,0 +5985270,0.26161738 +5985294,0.26161738 +5985294,0 +5990088,0 +5990088,0.36813518 +5990202,0.36813518 +5990202,0 +5990388,0 +5990388,0.3522933 +5990442,0.3522933 +5990442,0 +5990682,0 +5990682,0.18964997 +5990748,0.18964997 +5990748,0 +5990982,0 +5990982,0.41973446 +5991036,0.41973446 +5991036,0 +5991606,0 +5991606,0.17576946 +5991726,0.096409173 +5991726,0 +5991732,0 +5991732,0 +5991732,0.17576946 +5991732,0.096409173 +5991840,0 +5991840,0.1597767 +5991870,0.1597767 +5991870,0 +5991954,0 +5991954,0.064121907 +5992014,0.064121907 +5992014,0 +5992074,0 +5992074,0.27700664 +5992086,0.27700664 +5992086,0 +5992188,0 +5992188,0.15585395 +5992242,0.15585395 +5992242,0 +5994546,0 +5994546,0.2409475 +5994618,0.2409475 +5994618,0 +5994840,0 +5994840,0.32136391 +5994912,0.32136391 +5994912,0 +5995140,0 +5995140,0.32951116 +5995212,0.32951116 +5995212,0 +5995440,0 +5995440,0.4933615 +5995506,0.4933615 +5995506,0 +5997264,0 +5997264,0.13141219 +5997270,0.13141219 +5997270,0 +5998998,0 +5998998,0.37582981 +5999076,0.37582981 +5999076,0 +5999298,0 +5999298,0.41445383 +5999382,0.41445383 +5999382,0 +5999598,0 +5999598,0.4013277 +5999658,0.4013277 +5999658,0 +5999892,0 +5999892,0.29752565 +5999958,0.29752565 +5999958,0 +6000738,0 +6000738,0.16701871 +6000744,0.16701871 +6000744,0 +6000756,0 +6000756,0.28319252 +6000762,0.28319252 +6000762,0 +6001170,0 +6001170,0.13367532 +6001176,0.13367532 +6001176,0 +6001290,0 +6001290,0.1591732 +6001380,0.1591732 +6001380,0 +6002046,0 +6002046,0.13744719 +6002118,0.13744719 +6002118,0 +6003558,0 +6003558,0.0058841279 +6003570,0.0058841279 +6003570,0 +6003618,0 +6003618,0.2457755 +6003666,0.2457755 +6003666,0 +6004260,0 +6004260,0.17652384 +6004272,0.17652384 +6004272,0 +6005208,0 +6005208,0.42395896 +6005268,0.42395896 +6005268,0 +6008658,0 +6008658,0.20413398 +6008670,0.20413398 +6008670,0 +6009666,0 +6009666,0.35968618 +6009678,0.35968618 +6009678,0 +6012246,0 +6012246,0.21258298 +6012264,0.21258298 +6012264,0 +6012360,0 +6012360,0.32000604 +6012372,0.32000604 +6012372,0 +6012474,0 +6012474,0.14257695 +6012552,0.14257695 +6012552,0 +6012594,0 +6012594,0.35425468 +6012618,0.35425468 +6012618,0 +6012708,0 +6012708,0.042094146 +6012732,0.042094146 +6012732,0 +6012822,0 +6012822,0.0064876282 +6012834,0.0064876282 +6012834,0 +6012942,0 +6012942,0.20775498 +6012990,0.20775498 +6012990,0 +6019158,0 +6019158,0.0081472541 +6019164,0.0081472541 +6019164,0 +6019416,0 +6019416,0.31261316 +6019482,0.31261316 +6019482,0 +6024054,0 +6024054,0.10636693 +6024066,0.10636693 +6024066,0 +6030060,0 +6030060,0.099426675 +6030072,0.1452927 +6030072,0 +6030084,0 +6030084,0.099426675 +6030090,0.1452927 +6030090,0 +6031338,0 +6031338,0.13925769 +6031410,0.13925769 +6031410,0 +6032970,0 +6032970,0.13669282 +6033000,0.13669282 +6033000,0 +6038436,0 +6038436,0.1585697 +6038496,0.1585697 +6038496,0 +6039822,0 +6039822,0.09097767 +6039852,0.09097767 +6039852,0 +6039942,0 +6039942,0.20187085 +6039978,0.20187085 +6039978,0 +6042408,0 +6042408,0.20307785 +6042858,0.20307785 +6042858,0 +6042888,0 +6042888,0.31578153 +6042936,0.31578153 +6042936,0 +6043848,0 +6043848,0.0046771273 +6043854,0.0046771273 +6043854,0 +6044082,0 +6044082,0.049788775 +6044322,0.049788775 +6044322,0 +6045606,0 +6045606,0.23445987 +6045696,0.23445987 +6045696,0 +6046410,0 +6046410,0.028062764 +6046416,0.028062764 +6046416,0 +6046530,0 +6046530,0.10908268 +6046566,0.10908268 +6046566,0 +6046644,0 +6046644,0.12673506 +6046656,0.12673506 +6046656,0 +6047346,0 +6047346,0.24140012 +6047424,0.24140012 +6047424,0 +6050898,0 +6050898,0.23928787 +6050940,0.23928787 +6050940,0 +6051012,0 +6051012,0.23038624 +6051024,0.23038624 +6051024,0 +6071898,0 +6071898,0.51901026 +6072588,0.51901026 +6072588,0 +6074580,0 +6074580,0.081472541 +6074586,0.081472541 +6074586,0 +6079164,0 +6079164,0.23928787 +6079554,0.23928787 +6079554,0 +6079578,0 +6079578,0.11632468 +6079590,0.11632468 +6079590,0 +6079962,0 +6079962,0.010561255 +6079968,0.010561255 +6079968,0 +6089862,0 +6089862,0.13141219 +6089970,0.13141219 +6089970,0 +6089982,0 +6089982,0.018557634 +6089988,0.018557634 +6089988,0 +6090366,0 +6090366,0.29465902 +6090372,0.29465902 +6090372,0 +6090510,0 +6090510,0.21529873 +6090642,0.21529873 +6090642,0 +6094998,0 +6094998,0.25875075 +6095070,0.25875075 +6095070,0 +6095076,0 +6095076,0.11753168 +6095298,0.23400724 +6095298,0 +6095364,0 +6095364,0.23400724 +6095904,0.11753168 +6095904,0 +6099552,0 +6099552,0.083283042 +6099582,0.083283042 +6099582,0 +6107622,0 +6107622,0.29616777 +6107688,0.29616777 +6107688,0 +6109968,0 +6109968,0.066535908 +6109974,0.066535908 +6109974,0 +6116448,0 +6116448,0.259656 +6116556,0.259656 +6116556,0 +6119580,0 +6119580,0.025648763 +6119628,0.025648763 +6119628,0 +6119694,0 +6119694,0.13005432 +6119700,0.13005432 +6119700,0 +6120480,0 +6120480,0.51538926 +6120900,0.076795413 +6120900,0 +6120906,0 +6120906,0.076795413 +6120924,0.51538926 +6120924,0 +6121698,0 +6121698,0.076191913 +6121734,0.076191913 +6121734,0 +6123282,0 +6123282,0.19824985 +6123336,0.19824985 +6123336,0 +6160944,0 +6160944,0.29194327 +6160950,0.29194327 +6160950,0 +6165252,0 +6165252,0.11391068 +6165270,0.11391068 +6165270,0 +6166224,0 +6166224,0.065178033 +6166284,0.065178033 +6166284,0 +6166674,0 +6166674,0.020368135 +6166680,0.020368135 +6166680,0 +6166788,0 +6166788,0.18753772 +6166800,0.18753772 +6166800,0 +6166902,0 +6166902,0.22993361 +6166950,0.22993361 +6166950,0 +6167022,0 +6167022,0.10018105 +6167178,0.10018105 +6167178,0 +6172758,0 +6172758,0.22978274 +6172788,0.22978274 +6172788,0 +6172872,0 +6172872,0.23280024 +6172890,0.23280024 +6172890,0 +6172992,0 +6172992,0.32332529 +6173004,0.32332529 +6173004,0 +6173106,0 +6173106,0.094749547 +6173112,0.094749547 +6173112,0 +6176796,0 +6176796,0.21228123 +6176898,0.21228123 +6176898,0 +6176910,0 +6176910,0.16913096 +6176928,0.16913096 +6176928,0 +6185880,0 +6185880,0.23657212 +6186396,0.14363307 +6186396,0 +6186414,0 +6186414,0.14363307 +6186420,0.23657212 +6186420,0 +6186510,0 +6186510,0.067742909 +6186666,0.067742909 +6186666,0 +6190980,0 +6190980,0.17169584 +6191028,0.17169584 +6191028,0 +6191100,0 +6191100,0.24049487 +6191184,0.24049487 +6191184,0 +6191214,0 +6191214,0.16385033 +6191304,0.16385033 +6191304,0 +6193896,0 +6193896,0.19327097 +6193974,0.19327097 +6193974,0 +6194010,0 +6194010,0.19040435 +6194028,0.19040435 +6194028,0 +6194130,0 +6194130,0.13095957 +6194166,0.13095957 +6194166,0 +6198942,0 +6198942,0.16460471 +6198954,0.16460471 +6198954,0 +6199056,0 +6199056,0.20488835 +6199152,0.20488835 +6199152,0 +6199788,0 +6199788,0.17501509 +6199794,0.17501509 +6199794,0 +6199908,0 +6199908,0.32483404 +6199986,0.32483404 +6199986,0 +6205062,0 +6205062,0.26765238 +6205092,0.26765238 +6205092,0 +6207822,0 +6207822,0.11391068 +6207828,0.11391068 +6207828,0 +6221550,0 +6221550,0.18814122 +6221706,0.18814122 +6221706,0 +6227886,0 +6227886,0.037567894 +6227892,0.037567894 +6227892,0 +6228006,0 +6228006,0.20835848 +6228048,0.20835848 +6228048,0 +6230538,0 +6230538,0.24849125 +6230556,0.24849125 +6230556,0 +6240912,0 +6240912,0.14996982 +6240924,0.14996982 +6240924,0 +6241026,0 +6241026,0.032438141 +6241062,0.032438141 +6241062,0 +6242190,0 +6242190,0.16354858 +6242196,0.16354858 +6242196,0 +6242784,0 +6242784,0.090525045 +6242808,0.090525045 +6242808,0 +6242898,0 +6242898,0.075437538 +6242904,0.075437538 +6242904,0 +6243012,0 +6243012,0.1561557 +6243018,0.1561557 +6243018,0 +6243132,0 +6243132,0.086451418 +6243138,0.086451418 +6243138,0 +6244890,0 +6244890,0.18678334 +6245010,0.15117683 +6245010,0 +6245028,0 +6245028,0.15117683 +6245040,0.18678334 +6245040,0 +6245346,0 +6245346,0.26101388 +6245460,0.39815932 +6245460,0 +6245466,0 +6245466,0.39815932 +6245478,0.26101388 +6245478,0 +6245580,0 +6245580,0.23581774 +6245658,0.23581774 +6245658,0 +6245694,0 +6245694,0.15449608 +6245736,0.15449608 +6245736,0 +6245808,0 +6245808,0.092486421 +6245826,0.092486421 +6245826,0 +6245922,0 +6245922,0.27036814 +6245928,0.27036814 +6245928,0 +6246042,0 +6246042,0.0076946288 +6246096,0.0076946288 +6246096,0 +6260010,0 +6260010,0.1961376 +6260028,0.1961376 +6260028,0 +6269718,0 +6269718,0.014484007 +6269748,0.014484007 +6269748,0 +6273264,0 +6273264,0.3068799 +6273270,0.3068799 +6273270,0 +6275964,0 +6275964,0.29345202 +6275994,0.29345202 +6275994,0 +6277716,0 +6277716,0.016747133 +6277788,0.016747133 +6277788,0 +6278406,0 +6278406,0.18829209 +6278520,0.28877489 +6278520,0 +6278610,0 +6278610,0.28877489 +6278640,0.3050694 +6278640,0 +6278676,0 +6278676,0.3050694 +6278688,0.18829209 +6278688,0 +6278754,0 +6278754,0.042245021 +6278856,0.042245021 +6278856,0 +6278868,0 +6278868,0.32634279 +6278874,0.32634279 +6278874,0 +6278988,0 +6278988,0.11466506 +6279108,0.11466506 +6279108,0 +6279750,0 +6279750,0.1464997 +6279762,0.1464997 +6279762,0 +6279864,0 +6279864,0.33931804 +6279888,0.33931804 +6279888,0 +6284904,0 +6284904,0.28590827 +6284910,0.28590827 +6284910,0 +6286788,0 +6286788,0.050694025 +6286800,0.050694025 +6286800,0 +6289812,0 +6289812,0.17878696 +6289836,0.17878696 +6289836,0 +6293268,0 +6293268,0.11194931 +6293274,0.11194931 +6293274,0 +6293718,0 +6293718,0.16400121 +6293808,0.16400121 +6293808,0 +6293832,0 +6293832,0.11949306 +6293844,0.11949306 +6293844,0 +6293946,0 +6293946,0.001961376 +6293952,0.001961376 +6293952,0 +6294066,0 +6294066,0.13518407 +6294078,0.13518407 +6294078,0 +6294450,0 +6294450,0.06004828 +6294456,0.06004828 +6294456,0 +6294564,0 +6294564,0.023838262 +6294570,0.023838262 +6294570,0 +6299028,0 +6299028,0.13201569 +6299034,0.13201569 +6299034,0 +6299148,0 +6299148,0.094598672 +6299178,0.094598672 +6299178,0 +6302160,0 +6302160,0.03032589 +6302250,0.03032589 +6302250,0 +6330294,0 +6330294,0.15178033 +6330318,0.15178033 +6330318,0 +6330432,0 +6330432,0.10998793 +6330450,0.10998793 +6330450,0 +6331392,0 +6331392,0.025799638 +6331398,0.025799638 +6331398,0 +6331506,0 +6331506,0.16007846 +6331524,0.16007846 +6331524,0 +6331536,0 +6331536,0.063518407 +6331590,0.063518407 +6331590,0 +6331650,0 +6331650,0.0061858781 +6331656,0.0061858781 +6331656,0 +6334470,0 +6334470,0.19643935 +6334494,0.19643935 +6334494,0 +6337674,0 +6337674,0.13352444 +6337704,0.13352444 +6337704,0 +6337794,0 +6337794,0.22797224 +6337830,0.088563669 +6337830,0 +6337842,0 +6337842,0.088563669 +6337908,0.25950513 +6337908,0 +6337932,0 +6337932,0.22797224 +6337950,0.1422752 +6337950,0 +6337992,0 +6337992,0.1422752 +6338004,0.25950513 +6338004,0 +6345006,0 +6345006,0.1955341 +6345024,0.1955341 +6345024,0 +6354336,0 +6354336,0.11964393 +6354354,0.11964393 +6354354,0 +6356646,0 +6356646,0.3408268 +6356748,0.3408268 +6356748,0 +6356760,0 +6356760,0.095956548 +6356772,0.095956548 +6356772,0 +6368508,0 +6368508,0.15057333 +6368520,0.15057333 +6368520,0 +6373074,0 +6373074,0.28062764 +6373092,0.28062764 +6373092,0 +6373188,0 +6373188,0.22661436 +6373200,0 +6373200,0 +6373200,0.22661436 +6373200,0.26599276 +6373332,0.26599276 +6373332,0 +6374514,0 +6374514,0.71514786 +6374592,0.17592034 +6374592,0 +6374700,0 +6374700,0.17592034 +6374796,0.71514786 +6374796,0 +6375882,0 +6375882,0.31019916 +6376176,0.084640917 +6376176,0 +6376182,0 +6376182,0.084640917 +6376602,0.31019916 +6376602,0 +6377784,0 +6377784,0.24909475 +6377796,0.24909475 +6377796,0 +6377904,0 +6377904,0.26357876 +6377988,0.26357876 +6377988,0 +6380946,0 +6380946,0.24607725 +6381036,0.24607725 +6381036,0 +6381384,0 +6381384,0.77097164 +6381552,0.2960169 +6381552,0 +6381564,0 +6381564,0.2960169 +6381810,0.77097164 +6381810,0 +6382464,0 +6382464,0.076191913 +6382500,0.076191913 +6382500,0 +6410034,0 +6410034,0.0073928787 +6410154,0.20232348 +6410154,0 +6410160,0 +6410160,0.20232348 +6410166,0.0073928787 +6410166,0 +6410268,0 +6410268,0.12945081 +6410310,0.12945081 +6410310,0 +6415782,0 +6415782,0.63563669 +6416106,0.63563669 +6416106,0 +6416952,0 +6416952,0.16415208 +6416964,0.16415208 +6416964,0 +6419340,0 +6419340,0.14634882 +6419400,0.14634882 +6419400,0 +6419460,0 +6419460,0.31321666 +6419574,0.17320459 +6419574,0 +6419580,0 +6419580,0.17320459 +6419652,0.31321666 +6419652,0 +6419820,0 +6419820,0.18949909 +6419862,0.18949909 +6419862,0 +6419982,0 +6419982,0.23310199 +6420006,0.23310199 +6420006,0 +6425010,0 +6425010,0.27806276 +6425022,0.27806276 +6425022,0 +6425100,0 +6425100,0.13397707 +6425196,0.13397707 +6425196,0 +6427446,0 +6427446,0.22420036 +6427470,0.22420036 +6427470,0 +6429624,0 +6429624,0.47118286 +6429702,0.47118286 +6429702,0 +6430590,0 +6430590,0.15464695 +6430650,0.15464695 +6430650,0 +6430710,0 +6430710,0.073627037 +6430728,0.073627037 +6430728,0 +6430866,0 +6430866,0.1071213 +6430872,0.1071213 +6430872,0 +6434004,0 +6434004,0.31940253 +6434064,0.31940253 +6434064,0 +6442224,0 +6442224,0.48264937 +6442548,0.48264937 +6442548,0 +6451182,0 +6451182,0.24305975 +6451194,0.24305975 +6451194,0 +6457170,0 +6457170,0.01010863 +6457176,0.01010863 +6457176,0 +6458328,0 +6458328,0.061557031 +6458334,0.061557031 +6458334,0 +6458442,0 +6458442,0.0081472541 +6458466,0.0081472541 +6458466,0 +6460218,0 +6460218,0.17848521 +6460230,0.17848521 +6460230,0 +6460338,0 +6460338,0.18633072 +6460350,0.18633072 +6460350,0 +6467754,0 +6467754,0.26538926 +6467772,0.26538926 +6467772,0 +6467868,0 +6467868,0.22088111 +6467904,0.22088111 +6467904,0 +6467934,0 +6467934,0.31502716 +6467964,0.31502716 +6467964,0 +6468048,0 +6468048,0.0031683766 +6468054,0.0031683766 +6468054,0 +6468162,0 +6468162,0.077700664 +6468180,0.077700664 +6468180,0 +6469656,0 +6469656,0.054616777 +6469668,0.054616777 +6469668,0 +6490074,0 +6490074,0.037567894 +6490200,0.037567894 +6490200,0 +6502518,0 +6502518,0.037869644 +6502524,0.037869644 +6502524,0 +6502632,0 +6502632,0.1937236 +6502650,0.1937236 +6502650,0 +6504630,0 +6504630,0.19870247 +6504720,0.19870247 +6504720,0 +6505926,0 +6505926,0.27534701 +6505962,0.27534701 +6505962,0 +6508308,0 +6508308,0.040887145 +6508314,0.040887145 +6508314,0 +6511152,0 +6511152,0.0082981291 +6511176,0.0082981291 +6511176,0 +6511272,0 +6511272,0.33071817 +6511308,0.052051901 +6511308,0 +6511338,0 +6511338,0.33071817 +6511362,0.052051901 +6511362,0 +6511920,0 +6511920,0.18467109 +6511944,0.18467109 +6511944,0 +6512034,0 +6512034,0.17893784 +6512064,0.17893784 +6512064,0 +6512148,0 +6512148,0.11572118 +6512256,0.11572118 +6512256,0 +6512268,0 +6512268,0.073023537 +6512274,0.073023537 +6512274,0 +6512382,0 +6512382,0.29390465 +6512496,0.33524442 +6512496,0 +6512508,0 +6512508,0 +6512508,0.33524442 +6512508,0.29390465 +6513312,0 +6513312,0.14861195 +6513342,0.14861195 +6513342,0 +6513426,0 +6513426,0.0058841279 +6513438,0.0058841279 +6513438,0 +6514920,0 +6514920,0.32407966 +6514986,0.32407966 +6514986,0 +6515220,0 +6515220,0.3098974 +6515286,0.3098974 +6515286,0 +6528246,0 +6528246,0.012975256 +6528252,0.012975256 +6528252,0 +6528360,0 +6528360,0.07936029 +6528372,0.07936029 +6528372,0 +6528480,0 +6528480,0.083735667 +6528486,0.083735667 +6528486,0 +6539562,0 +6539562,0.0067893784 +6539568,0.0067893784 +6539568,0 +6540990,0 +6540990,0.2082076 +6541134,0.2082076 +6541134,0 +6543282,0 +6543282,0.28258902 +6543384,0.28258902 +6543384,0 +6547422,0 +6547422,0.17622209 +6547482,0.17622209 +6547482,0 +6550512,0 +6550512,0.19146047 +6550524,0.19146047 +6550524,0 +6550632,0 +6550632,0.2966204 +6550662,0.2966204 +6550662,0 +6551370,0 +6551370,0.15932408 +6551418,0.15932408 +6551418,0 +6559584,0 +6559584,0.14453832 +6559608,0.14453832 +6559608,0 +6559818,0 +6559818,0.33614967 +6559830,0.33614967 +6559830,0 +6561540,0 +6561540,0.1925166 +6561552,0.1925166 +6561552,0 +6585672,0 +6585672,0.025799638 +6585690,0.025799638 +6585690,0 +6585786,0 +6585786,0.29224502 +6585804,0.29224502 +6585804,0 +6592506,0 +6592506,0.38050694 +6592590,0.38050694 +6592590,0 +6592806,0 +6592806,0.27383826 +6592878,0.27383826 +6592878,0 +6595590,0 +6595590,0.037115269 +6595620,0.037115269 +6595620,0 +6596874,0 +6596874,0.54631865 +6596916,0.54631865 +6596916,0 +6600678,0 +6600678,0.28002414 +6600696,0.28002414 +6600696,0 +6600792,0 +6600792,0.0078455039 +6600876,0.0078455039 +6600876,0 +6600966,0 +6600966,0.19055522 +6600972,0.19055522 +6600972,0 +6601086,0 +6601086,0.12266144 +6601152,0.12266144 +6601152,0 +6601326,0 +6601326,0.27670489 +6601404,0.27670489 +6601404,0 +6602520,0 +6602520,0.21514786 +6602538,0.21514786 +6602538,0 +6602640,0 +6602640,0.29496077 +6602694,0.29496077 +6602694,0 +6602754,0 +6602754,0.18331322 +6602868,0.052504526 +6602868,0 +6602898,0 +6602898,0.052504526 +6602976,0.18331322 +6602976,0 +6602988,0 +6602988,0.031834641 +6602994,0.031834641 +6602994,0 +6604458,0 +6604458,0.24441762 +6604554,0.24441762 +6604554,0 +6605610,0 +6605610,0.035606518 +6605616,0 +6605616,0 +6605616,0.035606518 +6605616,0.086300543 +6605634,0.086300543 +6605634,0 +6605730,0 +6605730,0.0063367532 +6605748,0.0063367532 +6605748,0 +6605850,0 +6605850,0.1077248 +6605880,0.1077248 +6605880,0 +6609798,0 +6609798,0.11164756 +6609810,0.11164756 +6609810,0 +6609840,0 +6609840,0.25015088 +6610656,0.25015088 +6610656,0 +6613992,0 +6613992,0.33177429 +6614040,0.33177429 +6614040,0 +6622698,0 +6622698,0.11511768 +6622710,0.11511768 +6622710,0 +6628416,0 +6628416,0.14996982 +6628470,0.14996982 +6628470,0 +6630120,0 +6630120,0.1010863 +6630126,0.1010863 +6630126,0 +6630240,0 +6630240,0.34716355 +6630288,0.34716355 +6630288,0 +6630354,0 +6630354,0.0030175015 +6630360,0.0030175015 +6630360,0 +6630468,0 +6630468,0.13624019 +6630534,0.13624019 +6630534,0 +6631236,0 +6631236,0.1943271 +6631254,0.20971635 +6631254,0 +6631260,0 +6631260,0.1943271 +6631266,0.20971635 +6631266,0 +6632352,0 +6632352,0.11481593 +6632370,0.11481593 +6632370,0 +6632466,0 +6632466,0.14302957 +6632478,0.14302957 +6632478,0 +6635148,0 +6635148,0.12899819 +6635208,0.12899819 +6635208,0 +6636654,0 +6636654,0.030778515 +6636660,0.030778515 +6636660,0 +6636936,0 +6636936,0.082528666 +6636966,0.082528666 +6636966,0 +6638250,0 +6638250,0.27685576 +6638316,0.27685576 +6638316,0 +6639438,0 +6639438,0.20171998 +6639546,0.20171998 +6639546,0 +6640596,0 +6640596,0.23129149 +6640680,0.23129149 +6640680,0 +6640710,0 +6640710,0.19357272 +6640716,0.19357272 +6640716,0 +6640824,0 +6640824,0.30069403 +6640914,0.30069403 +6640914,0 +6640944,0 +6640944,0.22329511 +6640986,0.22329511 +6640986,0 +6641052,0 +6641052,0.23913699 +6641058,0.023385637 +6641058,0 +6641064,0 +6641064,0.023385637 +6641076,0.23913699 +6641076,0 +6646428,0 +6646428,0.016445383 +6646434,0.016445383 +6646434,0 +6675384,0 +6675384,0.32573929 +6675756,0.028666264 +6675756,0 +6675762,0 +6675762,0.028666264 +6675894,0.32573929 +6675894,0 +6676122,0 +6676122,0.15766445 +6676170,0.15766445 +6676170,0 +6676386,0 +6676386,0.48038624 +6676782,0.48038624 +6676782,0 +6678990,0 +6678990,0.0054315027 +6678996,0.0054315027 +6678996,0 +6679104,0 +6679104,0.024140012 +6679110,0.024140012 +6679110,0 +6680922,0 +6680922,0.10681955 +6680934,0.10681955 +6680934,0 +6681036,0 +6681036,0.11798431 +6681048,0.11798431 +6681048,0 +6681150,0 +6681150,0.18512372 +6681174,0.18512372 +6681174,0 +6681270,0 +6681270,0.095654798 +6681276,0.095654798 +6681276,0 +6681384,0 +6681384,0.098672299 +6681420,0.098672299 +6681420,0 +6681498,0 +6681498,0.30114665 +6681534,0.30114665 +6681534,0 +6681618,0 +6681618,0.13080869 +6681624,0.13080869 +6681624,0 +6681732,0 +6681732,0.012522631 +6681738,0.012522631 +6681738,0 +6681846,0 +6681846,0.15826795 +6681870,0.15826795 +6681870,0 +6681966,0 +6681966,0.27157514 +6681990,0.27157514 +6681990,0 +6682680,0 +6682680,0.18919734 +6682728,0.18919734 +6682728,0 +6682854,0 +6682854,0.0021122511 +6682860,0.0021122511 +6682860,0 +6682974,0 +6682974,0.15660833 +6683022,0.15660833 +6683022,0 +6684330,0 +6684330,0.0069402535 +6684354,0.0069402535 +6684354,0 +6684444,0 +6684444,0.18089922 +6684456,0.18089922 +6684456,0 +6684558,0 +6684558,0.19930597 +6684612,0.19930597 +6684612,0 +6684678,0 +6684678,0.12809294 +6684726,0.12809294 +6684726,0 +6684792,0 +6684792,0.062764031 +6684798,0.062764031 +6684798,0 +6684906,0 +6684906,0.3516898 +6684912,0.3516898 +6684912,0 +6691560,0 +6691560,0.029873265 +6691566,0.029873265 +6691566,0 +6691674,0 +6691674,0.053711527 +6691680,0.053711527 +6691680,0 +6691788,0 +6691788,0.029571515 +6691890,0.029571515 +6691890,0 +6691908,0 +6691908,0.17682559 +6691950,0.17682559 +6691950,0 +6692022,0 +6692022,0.24502112 +6692028,0.24502112 +6692028,0 +6692136,0 +6692136,0.257242 +6692244,0.257242 +6692244,0 +6692250,0 +6692250,0.20684973 +6692268,0.20684973 +6692268,0 +6692370,0 +6692370,0.04013277 +6692430,0.04013277 +6692430,0 +6692484,0 +6692484,0.022480386 +6692490,0.022480386 +6692490,0 +6695958,0 +6695958,0.21363911 +6696000,0.21363911 +6696000,0 +6696078,0 +6696078,0.30914303 +6696096,0.30914303 +6696096,0 +6696858,0 +6696858,0.22329511 +6696894,0.22329511 +6696894,0 +6701742,0 +6701742,0.26146651 +6701808,0.26146651 +6701808,0 +6707604,0 +6707604,0.11104406 +6707664,0.11104406 +6707664,0 +6707718,0 +6707718,0.19990947 +6707832,0.19990947 +6707832,0 +6709518,0 +6709518,0.23551599 +6709530,0.23551599 +6709530,0 +6709632,0 +6709632,0.17697646 +6709686,0.17697646 +6709686,0 +6709746,0 +6709746,0.020066385 +6709752,0.020066385 +6709752,0 +6709824,0 +6709824,0.33479179 +6709890,0.33479179 +6709890,0 +6710544,0 +6710544,0.32060954 +6710874,0.32060954 +6710874,0 +6717786,0 +6717786,0.17245021 +6717804,0.17245021 +6717804,0 +6717906,0 +6717906,0.15706095 +6717936,0.15706095 +6717936,0 +6724074,0 +6724074,0.11798431 +6724128,0.11798431 +6724128,0 +6724188,0 +6724188,0.17531684 +6724218,0.17531684 +6724218,0 +6724308,0 +6724308,0.068648159 +6724314,0.068648159 +6724314,0 +6727350,0 +6727350,0.11240193 +6727416,0.11240193 +6727416,0 +6727470,0 +6727470,0.19568497 +6727476,0.19568497 +6727476,0 +6727878,0 +6727878,0.1095353 +6727884,0.1095353 +6727884,0 +6727992,0 +6727992,0.15102595 +6728010,0.15102595 +6728010,0 +6728106,0 +6728106,0.21182861 +6728136,0.21182861 +6728136,0 +6728226,0 +6728226,0.2948099 +6728370,0.2948099 +6728370,0 +6731964,0 +6731964,0.31261316 +6732030,0.31261316 +6732030,0 +6732378,0 +6732378,0.16173808 +6732414,0.16173808 +6732414,0 +6733722,0 +6733722,0.046620398 +6733728,0.046620398 +6733728,0 +6737634,0 +6737634,0.43074834 +6739152,0.43074834 +6739152,0 +6764004,0 +6764004,0.084188292 +6764034,0.084188292 +6764034,0 +6766416,0 +6766416,0.094900422 +6766476,0.094900422 +6766476,0 +6766818,0 +6766818,0.24321062 +6766926,0.24321062 +6766926,0 +6766932,0 +6766932,0.1416717 +6766944,0.1416717 +6766944,0 +6767052,0 +6767052,0.00045262523 +6767058,0.00045262523 +6767058,0 +6770994,0 +6770994,0.13820157 +6771036,0.13820157 +6771036,0 +6779736,0 +6779736,0.19764635 +6779820,0.19764635 +6779820,0 +6786858,0 +6786858,0.011466506 +6786864,0.011466506 +6786864,0 +6787170,0 +6787170,0.1591732 +6787194,0.1591732 +6787194,0 +6787614,0 +6787614,0.0078455039 +6787650,0.0078455039 +6787650,0 +6791136,0 +6791136,0.16324683 +6791172,0.16324683 +6791172,0 +6791334,0 +6791334,0.19749547 +6791340,0.19749547 +6791340,0 +6797106,0 +6797106,0.13669282 +6797112,0.13669282 +6797112,0 +6797220,0 +6797220,0.14061557 +6797232,0.14061557 +6797232,0 +6801000,0 +6801000,0.26131563 +6801030,0.26131563 +6801030,0 +6803418,0 +6803418,0.22299336 +6803436,0.016898008 +6803436,0 +6803454,0 +6803454,0.22299336 +6803514,0.3068799 +6803514,0 +6803520,0 +6803520,0.3068799 +6803532,0 +6803532,0 +6803532,0.016898008 +6803532,0.23249849 +6803544,0.23249849 +6803544,0 +6803652,0 +6803652,0.36934218 +6803658,0.36934218 +6803658,0 +6807108,0 +6807108,0.0072420036 +6807150,0.0072420036 +6807150,0 +6807288,0 +6807288,0.0006035003 +6807294,0.0006035003 +6807294,0 +6811326,0 +6811326,0.34776705 +6811806,0.34776705 +6811806,0 +6812370,0 +6812370,0.054315027 +6812376,0.054315027 +6812376,0 +6813930,0 +6813930,0.28379602 +6813978,0.28379602 +6813978,0 +6814044,0 +6814044,0.15721183 +6814062,0.15721183 +6814062,0 +6817110,0 +6817110,0.32196741 +6817170,0.32196741 +6817170,0 +6818682,0 +6818682,0.20549185 +6818790,0.20549185 +6818790,0 +6818796,0 +6818796,0.20488835 +6818832,0.20488835 +6818832,0 +6818910,0 +6818910,0.1004828 +6819018,0.1004828 +6819018,0 +6821628,0 +6821628,0.18572722 +6821652,0.18572722 +6821652,0 +6825228,0 +6825228,0.044659022 +6825234,0.044659022 +6825234,0 +6850170,0 +6850170,0.0073928787 +6850224,0.0073928787 +6850224,0 +6850764,0 +6850764,0.30175015 +6851172,0.30175015 +6851172,0 +6851406,0 +6851406,0.22314424 +6851472,0.22314424 +6851472,0 +6851526,0 +6851526,0.023536512 +6851532,0.023536512 +6851532,0 +6851640,0 +6851640,0.0073928787 +6851694,0.0073928787 +6851694,0 +6851754,0 +6851754,0.022178636 +6851760,0.022178636 +6851760,0 +6853692,0 +6853692,0.13307182 +6853716,0.13307182 +6853716,0 +6853806,0 +6853806,0.04993965 +6853902,0.04993965 +6853902,0 +6853926,0 +6853926,0.1428787 +6853938,0.1428787 +6853938,0 +6858252,0 +6858252,0.17516596 +6858270,0.17516596 +6858270,0 +6858366,0 +6858366,0.3002414 +6858432,0.3002414 +6858432,0 +6858486,0 +6858486,0.26403138 +6858522,0.26403138 +6858522,0 +6858600,0 +6858600,0.099124925 +6858606,0.099124925 +6858606,0 +6858714,0 +6858714,0.2033796 +6858750,0.2033796 +6858750,0 +6861996,0 +6861996,0.082528666 +6862200,0.082528666 +6862200,0 +6862968,0 +6862968,0.25105613 +6862992,0.25105613 +6862992,0 +6863088,0 +6863088,0.09067592 +6863094,0.09067592 +6863094,0 +6870786,0 +6870786,0.37205794 +6870852,0.37205794 +6870852,0 +6873786,0 +6873786,0.18648159 +6873810,0.081925166 +6873810,0 +6873816,0 +6873816,0.081925166 +6873864,0.18648159 +6873864,0 +6873930,0 +6873930,0.14484007 +6873942,0.14484007 +6873942,0 +6874044,0 +6874044,0.0076946288 +6874050,0.0076946288 +6874050,0 +6874206,0 +6874206,0.092637296 +6874212,0.092637296 +6874212,0 +6874326,0 +6874326,0.19523235 +6874368,0.19523235 +6874368,0 +6874374,0 +6874374,0.24984912 +6874440,0.075890163 +6874440,0 +6874446,0 +6874446,0.075890163 +6874476,0.24984912 +6874476,0 +6874962,0 +6874962,0.25226313 +6875034,0.25226313 +6875034,0 +6875244,0 +6875244,0.18904647 +6875304,0.18904647 +6875304,0 +6875550,0 +6875550,0.15781533 +6875616,0.15781533 +6875616,0 +6879702,0 +6879702,0.11240193 +6879708,0.11240193 +6879708,0 +6884154,0 +6884154,0.28364514 +6884226,0.28364514 +6884226,0 +6887652,0 +6887652,0.32000604 +6887700,0.23204587 +6887700,0 +6887712,0 +6887712,0.32000604 +6887784,0.23204587 +6887784,0 +6887946,0 +6887946,0.19176222 +6887952,0.19176222 +6887952,0 +6889542,0 +6889542,0.11285456 +6889554,0.11285456 +6889554,0 +6890580,0 +6890580,0.13171394 +6890628,0.13171394 +6890628,0 +6890754,0 +6890754,0.44025347 +6891084,0.44025347 +6891084,0 +6892122,0 +6892122,0.28273989 +6892158,0.28273989 +6892158,0 +6893790,0 +6893790,0.072872661 +6893796,0.072872661 +6893796,0 +6896862,0 +6896862,0.77142426 +6897192,0.77142426 +6897192,0 +6900816,0 +6900816,0.35334943 +6900840,0.35334943 +6900840,0 +6901434,0 +6901434,0.23415812 +6901446,0.23415812 +6901446,0 +6901548,0 +6901548,0.0046771273 +6901554,0.0046771273 +6901554,0 +6904782,0 +6904782,0.24124925 +6904794,0.24124925 +6904794,0 +6905562,0 +6905562,0.013729632 +6905568,0.013729632 +6905568,0 +6905676,0 +6905676,0.052957151 +6905688,0.052957151 +6905688,0 +6905796,0 +6905796,0.028666264 +6905802,0.028666264 +6905802,0 +6905910,0 +6905910,0.013427882 +6905946,0.013427882 +6905946,0 +6926268,0 +6926268,0.038020519 +6926274,0.038020519 +6926274,0 +6930318,0 +6930318,0.18089922 +6930342,0.18089922 +6930342,0 +6930432,0 +6930432,0.24079662 +6930546,0 +6930546,0 +6930546,0.10697043 +6930546,0.24079662 +6930666,0.10697043 +6930666,0 +6933726,0 +6933726,0.16279421 +6933762,0.16279421 +6933762,0 +6936210,0 +6936210,0.28123114 +6936270,0.28123114 +6936270,0 +6940578,0 +6940578,0.095051298 +6940608,0.095051298 +6940608,0 +6940692,0 +6940692,0.090826795 +6940710,0.090826795 +6940710,0 +6940806,0 +6940806,0.014484007 +6940812,0.014484007 +6940812,0 +6940926,0 +6940926,0.36134581 +6940938,0.36134581 +6940938,0 +6941040,0 +6941040,0.22057936 +6941082,0.22057936 +6941082,0 +6941154,0 +6941154,0.080416415 +6941190,0.080416415 +6941190,0 +6941274,0 +6941274,0.24743512 +6941334,0.24743512 +6941334,0 +6941388,0 +6941388,0.0057332529 +6941394,0.0057332529 +6941394,0 +6941502,0 +6941502,0.15449608 +6941562,0.15449608 +6941562,0 +6946368,0 +6946368,0.18708509 +6946452,0.18708509 +6946452,0 +6946662,0 +6946662,0.20021123 +6946752,0.20021123 +6946752,0 +6948294,0 +6948294,0.2917924 +6949092,0.2917924 +6949092,0 +6955404,0 +6955404,0.044960772 +6955410,0.044960772 +6955410,0 +6960690,0 +6960690,0.13624019 +6960696,0.13624019 +6960696,0 +6962220,0 +6962220,0.010259505 +6962226,0.010259505 +6962226,0 +6965022,0 +6965022,0.28802052 +6965064,0.28802052 +6965064,0 +6965136,0 +6965136,0.12628244 +6965160,0.12628244 +6965160,0 +6965256,0 +6965256,0.22314424 +6965280,0.22314424 +6965280,0 +6965370,0 +6965370,0.1016898 +6965376,0.1016898 +6965376,0 +6965484,0 +6965484,0.039680145 +6965490,0.039680145 +6965490,0 +6970644,0 +6970644,0.2469825 +6970794,0.2469825 +6970794,0 +6972600,0 +6972600,0.18527459 +6972612,0.18527459 +6972612,0 +6974958,0 +6974958,0.049788775 +6974982,0.049788775 +6974982,0 +6975072,0 +6975072,0.16490646 +6975126,0.16490646 +6975126,0 +6975192,0 +6975192,0.19115872 +6975228,0.19115872 +6975228,0 +6979836,0 +6979836,0.34761617 +6979884,0.34761617 +6979884,0 +6979950,0 +6979950,0.10757393 +6979974,0.10757393 +6979974,0 +6980028,0 +6980028,0.067893784 +6980034,0.067893784 +6980034,0 +6980070,0 +6980070,0.14242607 +6980082,0.14242607 +6980082,0 +6982134,0 +6982134,0.27006639 +6982182,0.27006639 +6982182,0 +6982248,0 +6982248,0.17260109 +6982278,0.17260109 +6982278,0 +6982362,0 +6982362,0.23340374 +6982398,0.23340374 +6982398,0 +6988266,0 +6988266,0.080416415 +6988278,0.080416415 +6988278,0 +6994260,0 +6994260,0.17878696 +6994278,0.17878696 +6994278,0 +6996972,0 +6996972,0.012371756 +6996978,0.012371756 +6996978,0 +6997086,0 +6997086,0.21997586 +6997104,0.21997586 +6997104,0 +7021974,0 +7021974,0.28636089 +7021998,0.28636089 +7021998,0 +7023420,0 +7023420,0.061557031 +7023426,0.061557031 +7023426,0 +7023642,0 +7023642,0.28289077 +7023654,0.28289077 +7023654,0 +7031076,0 +7031076,0.40721183 +7031148,0.24109837 +7031148,0 +7031532,0 +7031532,0.24109837 +7031610,0.40721183 +7031610,0 +7032360,0 +7032360,0.54345202 +7032372,0.54345202 +7032372,0 +7032552,0 +7032552,0.22887749 +7032666,0.25407363 +7032666,0 +7032678,0 +7032678,0.092184671 +7032696,0 +7032696,0 +7032696,0.092184671 +7032696,0.25407363 +7032726,0.22887749 +7032726,0 +7032780,0 +7032780,0.01041038 +7032786,0.01041038 +7032786,0 +7032900,0 +7032900,0.14936632 +7032912,0.14936632 +7032912,0 +7032978,0 +7032978,0.34278817 +7033014,0.048430899 +7033014,0 +7033020,0 +7033020,0.048430899 +7033128,0.047073024 +7033128,0 +7033176,0 +7033176,0.047073024 +7033248,0.27776101 +7033248,0 +7033260,0 +7033260,0.27776101 +7033524,0.34278817 +7033524,0 +7044390,0 +7044390,0.099426675 +7044402,0.099426675 +7044402,0 +7047642,0 +7047642,0.4025347 +7048218,0.4025347 +7048218,0 +7049070,0 +7049070,0.24426675 +7049136,0.24426675 +7049136,0 +7051326,0 +7051326,0.17426071 +7051350,0.17426071 +7051350,0 +7052640,0 +7052640,0.058690404 +7052652,0.058690404 +7052652,0 +7056312,0 +7056312,0.28756789 +7056330,0.28756789 +7056330,0 +7063008,0 +7063008,0.17320459 +7063716,0.17320459 +7063716,0 +7064118,0 +7064118,0.10380205 +7064178,0.10380205 +7064178,0 +7064736,0 +7064736,0.086149668 +7064790,0.086149668 +7064790,0 +7064850,0 +7064850,0.21620398 +7064868,0.21620398 +7064868,0 +7064964,0 +7064964,0.13095957 +7064970,0.13095957 +7064970,0 +7065084,0 +7065084,0.2433615 +7065114,0.2433615 +7065114,0 +7065198,0 +7065198,0.16203983 +7065216,0.16203983 +7065216,0 +7065312,0 +7065312,0.096861798 +7065378,0.096861798 +7065378,0 +7065444,0 +7065444,0.13397707 +7065462,0.13397707 +7065462,0 +7065564,0 +7065564,0.17592034 +7065570,0.17592034 +7065570,0 +7065678,0 +7065678,0.15208208 +7065714,0.15208208 +7065714,0 +7070880,0 +7070880,0.26614363 +7070928,0.26614363 +7070928,0 +7077546,0 +7077546,0.37115269 +7077552,0.37115269 +7077552,0 +7078362,0 +7078362,0.15389258 +7078416,0.15389258 +7078416,0 +7080276,0 +7080276,0.044206397 +7080282,0.044206397 +7080282,0 +7080390,0 +7080390,0.31004828 +7080432,0.31004828 +7080432,0 +7080504,0 +7080504,0.3583283 +7080522,0.3583283 +7080522,0 +7080624,0 +7080624,0.020669885 +7080636,0.020669885 +7080636,0 +7085418,0 +7085418,0.20684973 +7085478,0.20684973 +7085478,0 +7093818,0 +7093818,0.46092336 +7094082,0.46092336 +7094082,0 +7108878,0 +7108878,0.66988533 +7109448,0.66988533 +7109448,0 +7112412,0 +7112412,0.071363911 +7112418,0.071363911 +7112418,0 +7113156,0 +7113156,0.062311406 +7113186,0.062311406 +7113186,0 +7114176,0 +7114176,0.11270368 +7114188,0.11270368 +7114188,0 +7114296,0 +7114296,0.16777308 +7114320,0.16777308 +7114320,0 +7114410,0 +7114410,0.0072420036 +7114458,0.0072420036 +7114458,0 +7115076,0 +7115076,0.0028666264 +7115082,0.0028666264 +7115082,0 +7115196,0 +7115196,0.17018709 +7115268,0.17018709 +7115268,0 +7117494,0 +7117494,0.04013277 +7117500,0.04013277 +7117500,0 +7117614,0 +7117614,0.033796017 +7117620,0.033796017 +7117620,0 +7124814,0 +7124814,0.23989137 +7124904,0.23989137 +7124904,0 +7125402,0 +7125402,0.16430296 +7125456,0.16430296 +7125456,0 +7125990,0 +7125990,0.22963186 +7126080,0.2051901 +7126080,0 +7126104,0 +7126104,0.22963186 +7126110,0.2051901 +7126110,0 +7126578,0 +7126578,0.20564273 +7126662,0.20564273 +7126662,0 +7127160,0 +7127160,0.26644538 +7127238,0.26644538 +7127238,0 +7127682,0 +7127682,0.18723597 +7127712,0.18723597 +7127712,0 +7127748,0 +7127748,0.25769463 +7127838,0.25769463 +7127838,0 +7130436,0 +7130436,0.1955341 +7130466,0.1955341 +7130466,0 +7130550,0 +7130550,0.033343392 +7130556,0.033343392 +7130556,0 +7130664,0 +7130664,0.0081472541 +7130682,0.0081472541 +7130682,0 +7130784,0 +7130784,0.00015087508 +7130790,0.00015087508 +7130790,0 +7130898,0 +7130898,0.14302957 +7130904,0.14302957 +7130904,0 +7131012,0 +7131012,0.19870247 +7131024,0.19870247 +7131024,0 +7134642,0 +7134642,0.25512975 +7134684,0.25512975 +7134684,0 +7141278,0 +7141278,0.11662643 +7141332,0.11662643 +7141332,0 +7141392,0 +7141392,0.068044659 +7141446,0.068044659 +7141446,0 +7141512,0 +7141512,0.16188896 +7141524,0.16188896 +7141524,0 +7146390,0 +7146390,0.26463488 +7146432,0.26463488 +7146432,0 +7146504,0 +7146504,0.13895594 +7146546,0.13895594 +7146546,0 +7146624,0 +7146624,0.25980688 +7146648,0.25980688 +7146648,0 +7146738,0 +7146738,0.32015691 +7146792,0.32015691 +7146792,0 +7150086,0 +7150086,0.051146651 +7150092,0.051146651 +7150092,0 +7150224,0 +7150224,0.037115269 +7150230,0.037115269 +7150230,0 +7150734,0 +7150734,0.13503319 +7150758,0.13503319 +7150758,0 +7152924,0 +7152924,0.056125528 +7152942,0.056125528 +7152942,0 +7154628,0 +7154628,0.2088111 +7154706,0.2088111 +7154706,0 +7154742,0 +7154742,0.17441159 +7154754,0.17441159 +7154754,0 +7154862,0 +7154862,0.021575136 +7154916,0.021575136 +7154916,0 +7154976,0 +7154976,0.068799034 +7155024,0.068799034 +7155024,0 +7155090,0 +7155090,0.32573929 +7155096,0.32573929 +7155096,0 +7155210,0 +7155210,0.068497284 +7155216,0.068497284 +7155216,0 +7156596,0 +7156596,0.22902836 +7156602,0.22902836 +7156602,0 +7156716,0 +7156716,0.16822571 +7156770,0.16822571 +7156770,0 +7156830,0 +7156830,0.2942064 +7156842,0.2942064 +7156842,0 +7158510,0 +7158510,0.12643331 +7158516,0.12643331 +7158516,0 +7158624,0 +7158624,0.13035607 +7158702,0.13035607 +7158702,0 +7158744,0 +7158744,0.069704285 +7158756,0.069704285 +7158756,0 +7159608,0 +7159608,0.20971635 +7160100,0.20971635 +7160100,0 +7160736,0 +7160736,0.065932408 +7160766,0.065932408 +7160766,0 +7160850,0 +7160850,0.17908871 +7160862,0.17908871 +7160862,0 +7160964,0 +7160964,0.1961376 +7160976,0.1961376 +7160976,0 +7161084,0 +7161084,0.043753772 +7161102,0.043753772 +7161102,0 +7161198,0 +7161198,0.0092033796 +7161204,0.0092033796 +7161204,0 +7161312,0 +7161312,0.26554013 +7161330,0.26554013 +7161330,0 +7164558,0 +7164558,0.0075437538 +7164630,0.0075437538 +7164630,0 +7167828,0 +7167828,0.11587206 +7167834,0.11587206 +7167834,0 +7167942,0 +7167942,0.15721183 +7167948,0.15721183 +7167948,0 +7168056,0 +7168056,0.2506035 +7168086,0.2506035 +7168086,0 +7168176,0 +7168176,0.23702474 +7168212,0.23702474 +7168212,0 +7168290,0 +7168290,0.0072420036 +7168350,0.0072420036 +7168350,0 +7169256,0 +7169256,0.0076946288 +7169328,0.0076946288 +7169328,0 +7169376,0 +7169376,0.086602293 +7169382,0.086602293 +7169382,0 +7169490,0 +7169490,0.027308389 +7169508,0.027308389 +7169508,0 +7169604,0 +7169604,0.20911285 +7169634,0.20911285 +7169634,0 +7204020,0 +7204020,0.10063368 +7204044,0.10063368 +7204044,0 +7204980,0 +7204980,0.1901026 +7205040,0.1901026 +7205040,0 +7205568,0 +7205568,0.22012674 +7205658,0.22012674 +7205658,0 +7206138,0 +7206138,0.17426071 +7206156,0.1531382 +7206156,0 +7206180,0 +7206180,0.17426071 +7206252,0.23280024 +7206252,0 +7206282,0 +7206282,0.1531382 +7206294,0.23280024 +7206294,0 +7206744,0 +7206744,0.251207 +7206816,0.251207 +7206816,0 +7207332,0 +7207332,0.19900422 +7207410,0.22284249 +7207410,0 +7207416,0 +7207416,0.19900422 +7207452,0.22284249 +7207452,0 +7207914,0 +7207914,0.22012674 +7207986,0.22012674 +7207986,0 +7228236,0 +7228236,0.0012070006 +7228242,0.0012070006 +7228242,0 +7228350,0 +7228350,0.29828002 +7228368,0.29828002 +7228368,0 +7233144,0 +7233144,0.025347013 +7233150,0.025347013 +7233150,0 +7233180,0 +7233180,0.26735063 +7233246,0.26735063 +7233246,0 +7233258,0 +7233258,0.026554013 +7233264,0.026554013 +7233264,0 +7233300,0 +7233300,0.03922752 +7233324,0.03922752 +7233324,0 +7236150,0 +7236150,0.024894387 +7236204,0.024894387 +7236204,0 +7237950,0 +7237950,0.00015087508 +7237956,0.00015087508 +7237956,0 +7242978,0 +7242978,0.18678334 +7243026,0.18678334 +7243026,0 +7243092,0 +7243092,0.01010863 +7243104,0.01010863 +7243104,0 +7243212,0 +7243212,0.045262523 +7243278,0.045262523 +7243278,0 +7243968,0 +7243968,0.26931201 +7244328,0.26931201 +7244328,0 +7252200,0 +7252200,0.12251056 +7252296,0.12251056 +7252296,0 +7252320,0 +7252320,0.10033193 +7252374,0.10033193 +7252374,0 +7252434,0 +7252434,0.24607725 +7252458,0.24607725 +7252458,0 +7252548,0 +7252548,0.041188896 +7252554,0.041188896 +7252554,0 +7265388,0 +7265388,0.071665661 +7265460,0.071665661 +7265460,0 +7277688,0 +7277688,0.31200966 +7277748,0.31200966 +7277748,0 +7277916,0 +7277916,0.17426071 +7277928,0.17426071 +7277928,0 +7280262,0 +7280262,0.091581171 +7280292,0.091581171 +7280292,0 +7280376,0 +7280376,0.12039831 +7280418,0.12039831 +7280418,0 +7282140,0 +7282140,0.40268558 +7282212,0.40268558 +7282212,0 +7285242,0 +7285242,0.24984912 +7285296,0.24984912 +7285296,0 +7285356,0 +7285356,0.038171394 +7285362,0.038171394 +7285362,0 +7285476,0 +7285476,0.16596258 +7285512,0.16596258 +7285512,0 +7285590,0 +7285590,0.14001207 +7285608,0.14001207 +7285608,0 +7285704,0 +7285704,0.16339771 +7285740,0.16339771 +7285740,0 +7285782,0 +7285782,0.071514786 +7285794,0.071514786 +7285794,0 +7285824,0 +7285824,0.081170791 +7285830,0.081170791 +7285830,0 +7285896,0 +7285896,0.18572722 +7285932,0.18572722 +7285932,0 +7285938,0 +7285938,0.024894387 +7286046,0.024894387 +7286046,0 +7286598,0 +7286598,0.22208811 +7286604,0.22208811 +7286604,0 +7287150,0 +7287150,0.10983705 +7287156,0.10983705 +7287156,0 +7287264,0 +7287264,0.32815329 +7287312,0.32815329 +7287312,0 +7288620,0 +7288620,0.32875679 +7288668,0.32875679 +7288668,0 +7291026,0 +7291026,0.19266747 +7291038,0.19266747 +7291038,0 +7291056,0 +7291056,0.44357272 +7291122,0.44357272 +7291122,0 +7291758,0 +7291758,0.16400121 +7291782,0.16400121 +7291782,0 +7291878,0 +7291878,0.12598069 +7291896,0.12598069 +7291896,0 +7291992,0 +7291992,0.1434822 +7292106,0.083433917 +7292106,0 +7292154,0 +7292154,0.083433917 +7292172,0.1434822 +7292172,0 +7292226,0 +7292226,0.10214243 +7292268,0.10214243 +7292268,0 +7293906,0 +7293906,0.034701267 +7293924,0.034701267 +7293924,0 +7303692,0 +7303692,0.1555522 +7303776,0.1555522 +7303776,0 +7307568,0 +7307568,0.083584792 +7307604,0.083584792 +7307604,0 +7307688,0 +7307688,0.12024744 +7307724,0.12024744 +7307724,0 +7307802,0 +7307802,0.087356669 +7307826,0.087356669 +7307826,0 +7307916,0 +7307916,0.14152082 +7307964,0.14152082 +7307964,0 +7308036,0 +7308036,0.057332529 +7308042,0.057332529 +7308042,0 +7308150,0 +7308150,0.15419433 +7308162,0.15419433 +7308162,0 +7309686,0 +7309686,0.27368739 +7309722,0.27368739 +7309722,0 +7315698,0 +7315698,0.10123718 +7315704,0.10123718 +7315704,0 +7328580,0 +7328580,0.3408268 +7328658,0.3408268 +7328658,0 +7332276,0 +7332276,0.31834641 +7332288,0.31834641 +7332288,0 +7335474,0 +7335474,0.11119493 +7335480,0.11119493 +7335480,0 +7340256,0 +7340256,0.19266747 +7340352,0 +7340352,0 +7340352,0.16490646 +7340352,0.19266747 +7340364,0.16490646 +7340364,0 +7340472,0 +7340472,0.22042849 +7340478,0.22042849 +7340478,0 +7340586,0 +7340586,0.28726614 +7340694,0.28726614 +7340694,0 +7346820,0 +7346820,0.080114665 +7346838,0.080114665 +7346838,0 +7358886,0 +7358886,0.010863005 +7358892,0.010863005 +7358892,0 +7359000,0 +7359000,0.13337357 +7359012,0.13337357 +7359012,0 +7366782,0 +7366782,0.31291491 +7366830,0.31291491 +7366830,0 +7366896,0 +7366896,0.25739288 +7366950,0.25739288 +7366950,0 +7367010,0 +7367010,0.22133374 +7367016,0.22133374 +7367016,0 +7367130,0 +7367130,0.2984309 +7367178,0.15887145 +7367178,0 +7367190,0 +7367190,0.2984309 +7367196,0.15887145 +7367196,0 +7367244,0 +7367244,0.17335546 +7367280,0.17335546 +7367280,0 +7367298,0 +7367298,0.046167773 +7367304,0.046167773 +7367304,0 +7367358,0 +7367358,0.022782136 +7367436,0.022782136 +7367436,0 +7369812,0 +7369812,0.11587206 +7369926,0.11587206 +7369926,0 +7382286,0 +7382286,0.057634279 +7382292,0.057634279 +7382292,0 +7382400,0 +7382400,0.11813518 +7382430,0.11813518 +7382430,0 +7386030,0 +7386030,0.18436934 +7386102,0.18436934 +7386102,0 +7386150,0 +7386150,0.27248039 +7386264,0.15540133 +7386264,0 +7386270,0 +7386270,0.15540133 +7386288,0.27248039 +7386288,0 +7386378,0 +7386378,0.0073928787 +7386480,0.0073928787 +7386480,0 +7387626,0 +7387626,0.014634882 +7387632,0.014634882 +7387632,0 +7389312,0 +7389312,0.10380205 +7389354,0.10380205 +7389354,0 +7396602,0 +7396602,0.2433615 +7396620,0.2433615 +7396620,0 +7396716,0 +7396716,0.050392275 +7396722,0.050392275 +7396722,0 +7396836,0 +7396836,0.19115872 +7396932,0.19115872 +7396932,0 +7396950,0 +7396950,0.23672299 +7397034,0.23672299 +7397034,0 +7404696,0 +7404696,0.21846711 +7404720,0.21846711 +7404720,0 +7404810,0 +7404810,0.24803862 +7404846,0.24803862 +7404846,0 +7406346,0 +7406346,0.23174412 +7406364,0.19146047 +7406364,0 +7406376,0 +7406376,0.19146047 +7406400,0.23174412 +7406400,0 +7406484,0 +7406484,0.18391672 +7406586,0.29103802 +7406586,0 +7406598,0 +7406598,0.19296922 +7406604,0.18391672 +7406604,0 +7406634,0 +7406634,0.19296922 +7406700,0.033041642 +7406700,0 +7406706,0 +7406706,0.29103802 +7406736,0.033041642 +7406736,0 +7406820,0 +7406820,0.078304164 +7406832,0.078304164 +7406832,0 +7408224,0 +7408224,0.26086301 +7408290,0.26086301 +7408290,0 +7417806,0 +7417806,0.080718165 +7417824,0.080718165 +7417824,0 +7418016,0 +7418016,0.17878696 +7418106,0.17878696 +7418106,0 +7418604,0 +7418604,0.18421847 +7418694,0.18421847 +7418694,0 +7419186,0 +7419186,0.2094146 +7419264,0.2094146 +7419264,0 +7419774,0 +7419774,0.23958962 +7419876,0.23958962 +7419876,0 +7425756,0 +7425756,0.15691008 +7425810,0.15691008 +7425810,0 +7430580,0 +7430580,0.2088111 +7430646,0.2088111 +7430646,0 +7431168,0 +7431168,0.24487025 +7431228,0.24487025 +7431228,0 +7431756,0 +7431756,0.24260712 +7431840,0.24260712 +7431840,0 +7432338,0 +7432338,0.23883524 +7432440,0.23883524 +7432440,0 +7432926,0 +7432926,0.1937236 +7433040,0.1937236 +7433040,0 +7433514,0 +7433514,0.19477972 +7433586,0.19477972 +7433586,0 +7439202,0 +7439202,0.32045866 +7439262,0.32045866 +7439262,0 +7455726,0 +7455726,0.32091129 +7455774,0.32091129 +7455774,0 +7455840,0 +7455840,0.078756789 +7455846,0.078756789 +7455846,0 +7456416,0 +7456416,0.092637296 +7456422,0.092637296 +7456422,0 +7459374,0 +7459374,0.0013578757 +7459380,0.0013578757 +7459380,0 +7464696,0 +7464696,0.3050694 +7464738,0.3050694 +7464738,0 +7467480,0 +7467480,0.039680145 +7467486,0.039680145 +7467486,0 +7467594,0 +7467594,0.0085998793 +7467612,0.0085998793 +7467612,0 +7467714,0 +7467714,0.015087508 +7467720,0.015087508 +7467720,0 +7470600,0 +7470600,0.051750151 +7470612,0.051750151 +7470612,0 +7470720,0 +7470720,0.2039831 +7470726,0.2039831 +7470726,0 +7470834,0 +7470834,0.26599276 +7470948,0 +7470948,0 +7470948,0.02082076 +7470948,0.26599276 +7470954,0.02082076 +7470954,0 +7470996,0 +7470996,0.077097164 +7471002,0.077097164 +7471002,0 +7471110,0 +7471110,0.11526856 +7471134,0.11526856 +7471134,0 +7475076,0 +7475076,0.048280024 +7475136,0.048280024 +7475136,0 +7476762,0 +7476762,0.13035607 +7476798,0.13035607 +7476798,0 +7476882,0 +7476882,0.031231141 +7476888,0.031231141 +7476888,0 +7476996,0 +7476996,0.27670489 +7477032,0.22555824 +7477032,0 +7477044,0 +7477044,0.22555824 +7477050,0.27670489 +7477050,0 +7477110,0 +7477110,0.25512975 +7477128,0.25512975 +7477128,0 +7477224,0 +7477224,0.17878696 +7477314,0.17878696 +7477314,0 +7477344,0 +7477344,0.015691008 +7477350,0.015691008 +7477350,0 +7477458,0 +7477458,0.12703681 +7477500,0.12703681 +7477500,0 +7477572,0 +7477572,0.081170791 +7477656,0.081170791 +7477656,0 +7477692,0 +7477692,0.3014484 +7477710,0.3014484 +7477710,0 +7512018,0 +7512018,0.30054315 +7512042,0.30054315 +7512042,0 +7514712,0 +7514712,0.18768859 +7514766,0.18768859 +7514766,0 +7540866,0 +7540866,0.056427278 +7540872,0.056427278 +7540872,0 +7540980,0 +7540980,0.078605914 +7541004,0.078605914 +7541004,0 +7541094,0 +7541094,0.1573627 +7541106,0.1573627 +7541106,0 +7541214,0 +7541214,0.21394086 +7541268,0.21394086 +7541268,0 +7541328,0 +7541328,0.11496681 +7541358,0.11496681 +7541358,0 +7541442,0 +7541442,0.1077248 +7541472,0.1077248 +7541472,0 +7543452,0 +7543452,0.25859988 +7544070,0.25859988 +7544070,0 +7545288,0 +7545288,0.3432408 +7545354,0.1979481 +7545354,0 +7545438,0 +7545438,0.1979481 +7545582,0.37190706 +7545582,0 +7545588,0 +7545588,0.37190706 +7545828,0.17260109 +7545828,0 +7545858,0 +7545858,0.17260109 +7545936,0.19719372 +7545936,0 +7545996,0 +7545996,0.3432408 +7546026,0.19719372 +7546026,0 +7546524,0 +7546524,0.15479783 +7546614,0.15479783 +7546614,0 +7547112,0 +7547112,0.18663247 +7547160,0.18663247 +7547160,0 +7547700,0 +7547700,0.1961376 +7547778,0.1961376 +7547778,0 +7547796,0 +7547796,0.046167773 +7547802,0.046167773 +7547802,0 +7548288,0 +7548288,0.22344599 +7548396,0.22344599 +7548396,0 +7552512,0 +7552512,0.20232348 +7552542,0.20232348 +7552542,0 +7554114,0 +7554114,0.30190103 +7554210,0.30190103 +7554210,0 +7554234,0 +7554234,0.15751358 +7554348,0.24079662 +7554348,0 +7554408,0 +7554408,0 +7554408,0.24079662 +7554408,0.15751358 +7554462,0 +7554462,0.3535003 +7554516,0.3535003 +7554516,0 +7554576,0 +7554576,0.26342788 +7554630,0.26342788 +7554630,0 +7554690,0 +7554690,0.28258902 +7554768,0.28258902 +7554768,0 +7554990,0 +7554990,0.40751358 +7555014,0.40751358 +7555014,0 +7560192,0 +7560192,0.01961376 +7560198,0.01961376 +7560198,0 +7569666,0 +7569666,0.22510561 +7569684,0.22510561 +7569684,0 +7569786,0 +7569786,0.11421243 +7569804,0.11421243 +7569804,0 +7569900,0 +7569900,0.015389258 +7569906,0.015389258 +7569906,0 +7585302,0 +7585302,0.20503923 +7585458,0.20503923 +7585458,0 +7587774,0 +7587774,0.099124925 +7587798,0.099124925 +7587798,0 +7587918,0 +7587918,0.14755582 +7587960,0.14755582 +7587960,0 +7592190,0 +7592190,0.15630658 +7592196,0.15630658 +7592196,0 +7592310,0 +7592310,0.07045866 +7592316,0.07045866 +7592316,0 +7592400,0 +7592400,0.30069403 +7592466,0.30069403 +7592466,0 +7592712,0 +7592712,0.14755582 +7592730,0.14755582 +7592730,0 +7592826,0 +7592826,0.21922148 +7592874,0.21922148 +7592874,0 +7592982,0 +7592982,0.20805673 +7593048,0.20805673 +7593048,0 +7593570,0 +7593570,0.17788171 +7593678,0.17788171 +7593678,0 +7594698,0 +7594698,0.37688594 +7594764,0.37688594 +7594764,0 +7594998,0 +7594998,0.36179843 +7595028,0.36179843 +7595028,0 +7595730,0 +7595730,0.24019312 +7595796,0.24019312 +7595796,0 +7596312,0 +7596312,0.25331925 +7596402,0.25331925 +7596402,0 +7596900,0 +7596900,0.20187085 +7597014,0.20187085 +7597014,0 +7597488,0 +7597488,0.21394086 +7597614,0.21394086 +7597614,0 +7598076,0 +7598076,0.27066989 +7598172,0.27066989 +7598172,0 +7598664,0 +7598664,0.21409173 +7598736,0.21409173 +7598736,0 +7598874,0 +7598874,0.12779119 +7598904,0.12779119 +7598904,0 +7599156,0 +7599156,0.25467713 +7599180,0.25467713 +7599180,0 +7599456,0 +7599456,0.14921545 +7599480,0.14921545 +7599480,0 +7627608,0 +7627608,0.10455643 +7627620,0.10455643 +7627620,0 +7628934,0 +7628934,0.29978877 +7629048,0.019764635 +7629048,0 +7629054,0 +7629054,0.019764635 +7629108,0.29978877 +7629108,0 +7629162,0 +7629162,0.20850935 +7629186,0.20850935 +7629186,0 +7630374,0 +7630374,0.18980084 +7630458,0.18980084 +7630458,0 +7630494,0 +7630494,0.19508147 +7630536,0.19508147 +7630536,0 +7630608,0 +7630608,0.35787568 +7630626,0.35787568 +7630626,0 +7631874,0 +7631874,0.1979481 +7631880,0.1979481 +7631880,0 +7631988,0 +7631988,0.19870247 +7632018,0.19870247 +7632018,0 +7632504,0 +7632504,0.23687387 +7632618,0.23974049 +7632618,0 +7632630,0 +7632630,0.23687387 +7632636,0.23974049 +7632636,0 +7632864,0 +7632864,0.22736874 +7632870,0.22736874 +7632870,0 +7633956,0 +7633956,0.19357272 +7633992,0.19357272 +7633992,0 +7634076,0 +7634076,0.0095051298 +7634130,0.0095051298 +7634130,0 +7634190,0 +7634190,0.061858781 +7634250,0.061858781 +7634250,0 +7639410,0 +7639410,0.0076946288 +7639452,0.0076946288 +7639452,0 +7643706,0 +7643706,0.047827399 +7643712,0.047827399 +7643712,0 +7643820,0 +7643820,0.27564876 +7643844,0.27564876 +7643844,0 +7643850,0 +7643850,0.19055522 +7643916,0.19055522 +7643916,0 +7643940,0 +7643940,0.031231141 +7643982,0.031231141 +7643982,0 +7644432,0 +7644432,0.20835848 +7644516,0.20835848 +7644516,0 +7645020,0 +7645020,0.17969221 +7645140,0.17969221 +7645140,0 +7645608,0 +7645608,0.17516596 +7645704,0.17516596 +7645704,0 +7647318,0 +7647318,0.27791189 +7647384,0.27791189 +7647384,0 +7660764,0 +7660764,0.18452022 +7660788,0.18452022 +7660788,0 +7671084,0 +7671084,0.17290284 +7671096,0.17290284 +7671096,0 +7672752,0 +7672752,0.28892577 +7672764,0.28892577 +7672764,0 +7673916,0 +7673916,0.057785154 +7673922,0.057785154 +7673922,0 +7674726,0 +7674726,0.28530477 +7674810,0.28530477 +7674810,0 +7674846,0 +7674846,0.13563669 +7674888,0.13563669 +7674888,0 +7674960,0 +7674960,0.17426071 +7675020,0.17426071 +7675020,0 +7704954,0 +7704954,0.19779722 +7704990,0.19779722 +7704990,0 +7705074,0 +7705074,0.013729632 +7705080,0.013729632 +7705080,0 +7705188,0 +7705188,0.16158721 +7705206,0.16158721 +7705206,0 +7705302,0 +7705302,0.17637296 +7705350,0.17637296 +7705350,0 +7705422,0 +7705422,0.018406759 +7705428,0.018406759 +7705428,0 +7705536,0 +7705536,0.17018709 +7705620,0.17018709 +7705620,0 +7705650,0 +7705650,0.051750151 +7705674,0.051750151 +7705674,0 +7705770,0 +7705770,0.31985516 +7705878,0.31985516 +7705878,0 +7709196,0 +7709196,0.0072420036 +7709268,0.0072420036 +7709268,0 +7711542,0 +7711542,0.053409777 +7711554,0.053409777 +7711554,0 +7719336,0 +7719336,0.16898008 +7719402,0.16898008 +7719402,0 +7719618,0 +7719618,0.20051298 +7719636,0.20051298 +7719636,0 +7723818,0 +7723818,0.12024744 +7723824,0.12024744 +7723824,0 +7723932,0 +7723932,0.3553108 +7723974,0.3553108 +7723974,0 +7724052,0 +7724052,0.1901026 +7724070,0.1901026 +7724070,0 +7725408,0 +7725408,0.40826795 +7725450,0.40826795 +7725450,0 +7726182,0 +7726182,0.32151479 +7726194,0.32151479 +7726194,0 +7726296,0 +7726296,0.20911285 +7726308,0.20911285 +7726308,0 +7726410,0 +7726410,0.051297526 +7726416,0.051297526 +7726416,0 +7726530,0 +7726530,0.12582981 +7726554,0.12582981 +7726554,0 +7726644,0 +7726644,0.20171998 +7726734,0.20171998 +7726734,0 +7729290,0 +7729290,0.21741098 +7729350,0.21741098 +7729350,0 +7729392,0 +7729392,0.056276403 +7729410,0.095654798 +7729410,0 +7729434,0 +7729434,0.095654798 +7729476,0.056276403 +7729476,0 +7729866,0 +7729866,0.34595655 +7729926,0.34595655 +7729926,0 +7734078,0 +7734078,0.32015691 +7734090,0.32015691 +7734090,0 +7734192,0 +7734192,0.20549185 +7734210,0.20549185 +7734210,0 +7734840,0 +7734840,0.11843693 +7734918,0.11843693 +7734918,0 +7743516,0 +7743516,0.065781533 +7743528,0.065781533 +7743528,0 +7743648,0 +7743648,0.084640917 +7743660,0.084640917 +7743660,0 +7751448,0 +7751448,0.12326494 +7751460,0.12326494 +7751460,0 +7751562,0 +7751562,0.13729632 +7751610,0.13729632 +7751610,0 +7751682,0 +7751682,0.16505733 +7751724,0.16505733 +7751724,0 +7754970,0 +7754970,0.16882921 +7754982,0.24019312 +7754982,0 +7755000,0 +7755000,0.16882921 +7755072,0.24019312 +7755072,0 +7755084,0 +7755084,0.0073928787 +7755096,0.1567592 +7755096,0 +7755132,0 +7755132,0.1567592 +7755138,0.0073928787 +7755138,0 +7755168,0 +7755168,0.15691008 +7755174,0.15691008 +7755174,0 +7755204,0 +7755204,0.10878093 +7755216,0.10878093 +7755216,0 +7755282,0 +7755282,0.28213639 +7755330,0.28213639 +7755330,0 +7755696,0 +7755696,0.12175619 +7755708,0.12175619 +7755708,0 +7755810,0 +7755810,0.066385033 +7755936,0.066385033 +7755936,0 +7757610,0 +7757610,0.21197948 +7757616,0.21197948 +7757616,0 +7757724,0 +7757724,0.2009656 +7757754,0.2009656 +7757754,0 +7757838,0 +7757838,0.054767652 +7757844,0.054767652 +7757844,0 +7758006,0 +7758006,0.18783947 +7758012,0.18783947 +7758012,0 +7758828,0 +7758828,0.19598672 +7758846,0.19598672 +7758846,0 +7761546,0 +7761546,0.22223899 +7761552,0.22223899 +7761552,0 +7765626,0 +7765626,0.02082076 +7765632,0.02082076 +7765632,0 +7765740,0 +7765740,0.34218467 +7765782,0.34218467 +7765782,0 +7773336,0 +7773336,0.17501509 +7773420,0.17501509 +7773420,0 +7800756,0 +7800756,0.12401931 +7800774,0.12401931 +7800774,0 +7800870,0 +7800870,0.13186482 +7800876,0.13186482 +7800876,0 +7800990,0 +7800990,0.21665661 +7800996,0.21665661 +7800996,0 +7801938,0 +7801938,0.19085697 +7802124,0.19085697 +7802124,0 +7805814,0 +7805814,0.33147254 +7806294,0.33147254 +7806294,0 +7807620,0 +7807620,0.31955341 +7807626,0.31955341 +7807626,0 +7814796,0 +7814796,0.054767652 +7814820,0.26719976 +7814820,0 +7814826,0 +7814826,0.054767652 +7814910,0.052051901 +7814910,0 +7814934,0 +7814934,0.26719976 +7814958,0.052051901 +7814958,0 +7815624,0 +7815624,0.079511165 +7815630,0.079511165 +7815630,0 +7819110,0 +7819110,0.28621002 +7819296,0.28621002 +7819296,0 +7830870,0 +7830870,0.12960169 +7830906,0.12960169 +7830906,0 +7830984,0 +7830984,0.068949909 +7831008,0.068949909 +7831008,0 +7831692,0 +7831692,0.038473144 +7831698,0.038473144 +7831698,0 +7838436,0 +7838436,0.17893784 +7838472,0.17893784 +7838472,0 +7838556,0 +7838556,0.015087508 +7838562,0.015087508 +7838562,0 +7841190,0 +7841190,0.24894387 +7841232,0.24894387 +7841232,0 +7845936,0 +7845936,0.36617381 +7846068,0.36617381 +7846068,0 +7847958,0 +7847958,0.051297526 +7847964,0.051297526 +7847964,0 +7847976,0 +7847976,0.71439348 +7848426,0.71439348 +7848426,0 +7851336,0 +7851336,0.36934218 +7851408,0.36934218 +7851408,0 +7852698,0 +7852698,0.0073928787 +7852794,0.0073928787 +7852794,0 +7860486,0 +7860486,0.067290284 +7860606,0.067290284 +7860606,0 +7862988,0 +7862988,0.23989137 +7863000,0.23989137 +7863000,0 +7889010,0 +7889010,0.43346409 +7889694,0.43346409 +7889694,0 +7895724,0 +7895724,0.032739891 +7895730,0.032739891 +7895730,0 +7901046,0 +7901046,0.2003621 +7901112,0.2003621 +7901112,0 +7901298,0 +7901298,0.3946892 +7901628,0.22721786 +7901628,0 +7901646,0 +7901646,0.20202173 +7901706,0.20202173 +7901706,0 +7901712,0 +7901712,0.22721786 +7902216,0.19824985 +7902216,0 +7902330,0 +7902330,0.19824985 +7902654,0.3946892 +7902654,0 +7902804,0 +7902804,0.24185275 +7902888,0.24185275 +7902888,0 +7904664,0 +7904664,0.24079662 +7904700,0.24079662 +7904700,0 +7905936,0 +7905936,0.1907061 +7906008,0.1907061 +7906008,0 +7906518,0 +7906518,0.21514786 +7906578,0.21514786 +7906578,0 +7907106,0 +7907106,0.20896198 +7907196,0.20896198 +7907196,0 +7907694,0 +7907694,0.24924562 +7907796,0.24924562 +7907796,0 +7908282,0 +7908282,0.22510561 +7908354,0.22510561 +7908354,0 +7908870,0 +7908870,0.19221485 +7908954,0.19221485 +7908954,0 +7916970,0 +7916970,0.022480386 +7916976,0.022480386 +7916976,0 +7918206,0 +7918206,0.26086301 +7918224,0.26086301 +7918224,0 +7919004,0 +7919004,0.26523838 +7919070,0.26523838 +7919070,0 +7927218,0 +7927218,0.1440857 +7927236,0.1440857 +7927236,0 +7927308,0 +7927308,0.25558238 +7927314,0.25558238 +7927314,0 +7928352,0 +7928352,0.016294508 +7928358,0.016294508 +7928358,0 +7932168,0 +7932168,0.018105009 +7932216,0.018105009 +7932216,0 +7932282,0 +7932282,0.17727821 +7932360,0.17727821 +7932360,0 +7932798,0 +7932798,0.049185275 +7932852,0.049185275 +7932852,0 +7934424,0 +7934424,0.11481593 +7934448,0.11481593 +7934448,0 +7937904,0 +7937904,0.23732649 +7937916,0.23732649 +7937916,0 +7938018,0 +7938018,0.15691008 +7938024,0.15691008 +7938024,0 +7939074,0 +7939074,0.17471334 +7939080,0.17471334 +7939080,0 +7939374,0 +7939374,0.46952323 +7939452,0.46952323 +7939452,0 +7939530,0 +7939530,0.095805673 +7939536,0.095805673 +7939536,0 +7943094,0 +7943094,0.16430296 +7943154,0.16430296 +7943154,0 +7943208,0 +7943208,0.19870247 +7943220,0.19870247 +7943220,0 +7947828,0 +7947828,0.12945081 +7947834,0.12945081 +7947834,0 +7947948,0 +7947948,0.0066385033 +7947972,0.0066385033 +7947972,0 +7967082,0 +7967082,0.32724804 +7967106,0.32724804 +7967106,0 +7969404,0 +7969404,0.0012070006 +7969410,0.0012070006 +7969410,0 +7971276,0 +7971276,0.12809294 +7971408,0.12809294 +7971408,0 +7977582,0 +7977582,0.0070911285 +7977588,0.0070911285 +7977588,0 +7981230,0 +7981230,0.23943874 +7981260,0.23943874 +7981260,0 +7981344,0 +7981344,0.053258902 +7981434,0.053258902 +7981434,0 +7982922,0 +7982922,0.058539529 +7982928,0.058539529 +7982928,0 +7993878,0 +7993878,0.11783343 +7993896,0.11783343 +7993896,0 +7997676,0 +7997676,0.18633072 +7997688,0.18633072 +7997688,0 +7997790,0 +7997790,0.27398914 +7997898,0.27398914 +7997898,0 +7998000,0 +7998000,0.064272782 +7998018,0.064272782 +7998018,0 +7998114,0 +7998114,0.30838865 +7998120,0.30838865 +7998120,0 +7998228,0 +7998228,0.099728425 +7998234,0.099728425 +7998234,0 +7998348,0 +7998348,0.0085998793 +7998354,0.0085998793 +7998354,0 +7998462,0 +7998462,0.19568497 +7998540,0.19568497 +7998540,0 +8006280,0 +8006280,0.037266144 +8006286,0.037266144 +8006286,0 +8007840,0 +8007840,0.047525649 +8007846,0.047525649 +8007846,0 +8009010,0 +8009010,0.1028968 +8009064,0.1028968 +8009064,0 +8009760,0 +8009760,0.32770066 +8009778,0.32770066 +8009778,0 +8009874,0 +8009874,0.015087508 +8009880,0.015087508 +8009880,0 +8009994,0 +8009994,0.17803259 +8010012,0.17803259 +8010012,0 +8010108,0 +8010108,0.1907061 +8010192,0.1907061 +8010192,0 +8012796,0 +8012796,0.34399517 +8012910,0.34399517 +8012910,0 +8013804,0 +8013804,0.29390465 +8014086,0.29390465 +8014086,0 +8015694,0 +8015694,0.16158721 +8015700,0.16158721 +8015700,0 +8027316,0 +8027316,0.030175015 +8027322,0.030175015 +8027322,0 +8035308,0 +8035308,0.00015087508 +8035314,0.00015087508 +8035314,0 +8062284,0 +8062284,0.05974653 +8062290,0.05974653 +8062290,0 +8062698,0 +8062698,0.11330718 +8062764,0 +8062764,0 +8062764,0.094749547 +8062764,0.11330718 +8062770,0.094749547 +8062770,0 +8062884,0 +8062884,0.013427882 +8062890,0.013427882 +8062890,0 +8062998,0 +8062998,0.16641521 +8063028,0.16641521 +8063028,0 +8065374,0 +8065374,0.21062161 +8065416,0.047676524 +8065416,0 +8065422,0 +8065422,0.047676524 +8065428,0.21062161 +8065428,0 +8065530,0 +8065530,0.26810501 +8065548,0.26810501 +8065548,0 +8071206,0 +8071206,0.11466506 +8071236,0.086602293 +8071236,0 +8071254,0 +8071254,0.11466506 +8071260,0.086602293 +8071260,0 +8071350,0 +8071350,0.27715751 +8071392,0.27715751 +8071392,0 +8071464,0 +8071464,0.022631261 +8071470,0.022631261 +8071470,0 +8075214,0 +8075214,0.81744116 +8075418,0.81744116 +8075418,0 +8075586,0 +8075586,0.12462281 +8075592,0.12462281 +8075592,0 +8075700,0 +8075700,0.15087508 +8075706,0.15087508 +8075706,0 +8078508,0 +8078508,0.3092939 +8078514,0.3092939 +8078514,0 +8078628,0 +8078628,0.085093543 +8078700,0.085093543 +8078700,0 +8078742,0 +8078742,0.20081473 +8078778,0.20081473 +8078778,0 +8078856,0 +8078856,0.15087508 +8078868,0.15087508 +8078868,0 +8082228,0 +8082228,0.074834037 +8082234,0.074834037 +8082234,0 +8082342,0 +8082342,0.035153893 +8082348,0.035153893 +8082348,0 +8085498,0 +8085498,0.16385033 +8085504,0.16385033 +8085504,0 +8100168,0 +8100168,0.12884731 +8100210,0.12884731 +8100210,0 +8100288,0 +8100288,0.22948099 +8100300,0.22948099 +8100300,0 +8102196,0 +8102196,0.21077248 +8102280,0.21077248 +8102280,0 +8102310,0 +8102310,0.092637296 +8102340,0.092637296 +8102340,0 +8103312,0 +8103312,0.0063367532 +8103324,0.0063367532 +8103324,0 +8110920,0 +8110920,0.052051901 +8110926,0.052051901 +8110926,0 +8111034,0 +8111034,0.15509958 +8111040,0.15509958 +8111040,0 +8111910,0 +8111910,0.014785757 +8111916,0.014785757 +8111916,0 +8112024,0 +8112024,0.14966807 +8112138,0 +8112138,0 +8112138,0.14966807 +8112138,0.20549185 +8112144,0.20549185 +8112144,0 +8112258,0 +8112258,0.073325287 +8112264,0.073325287 +8112264,0 +8112372,0 +8112372,0.33267954 +8112486,0 +8112486,0 +8112486,0.084339167 +8112486,0.33267954 +8112546,0.084339167 +8112546,0 +8112600,0 +8112600,0.16173808 +8112648,0.16173808 +8112648,0 +8140356,0 +8140356,0.21605311 +8140416,0.21605311 +8140416,0 +8140470,0 +8140470,0.052051901 +8140476,0.052051901 +8140476,0 +8141400,0 +8141400,0.16520821 +8141436,0.16520821 +8141436,0 +8144118,0 +8144118,0.0049788775 +8144124,0.0049788775 +8144124,0 +8144232,0 +8144232,0.1071213 +8144238,0.1071213 +8144238,0 +8145720,0 +8145720,0.18753772 +8146296,0.18753772 +8146296,0 +8149428,0 +8149428,0.12824381 +8149470,0.12824381 +8149470,0 +8149860,0 +8149860,0.24909475 +8149980,0.24909475 +8149980,0 +8150370,0 +8150370,0.27021726 +8150448,0.21107423 +8150448,0 +8150454,0 +8150454,0.27021726 +8150496,0.21107423 +8150496,0 +8151036,0 +8151036,0.17486421 +8151114,0.17486421 +8151114,0 +8151618,0 +8151618,0.17954134 +8151660,0.23551599 +8151660,0 +8151678,0 +8151678,0.23551599 +8151720,0.17954134 +8151720,0 +8153478,0 +8153478,0.04933615 +8153604,0.04933615 +8153604,0 +8161518,0 +8161518,0.21846711 +8161524,0.21846711 +8161524,0 +8161626,0 +8161626,0.075739288 +8161746,0 +8161746,0 +8161746,0.075739288 +8161746,0.17878696 +8161758,0.17878696 +8161758,0 +8161860,0 +8161860,0.23355462 +8161878,0.23355462 +8161878,0 +8161974,0 +8161974,0.02021726 +8161980,0.02021726 +8161980,0 +8163102,0 +8163102,0.13442969 +8163126,0.13442969 +8163126,0 +8166066,0 +8166066,0.1004828 +8166072,0.1004828 +8166072,0 +8168094,0 +8168094,0.0076946288 +8168190,0.0076946288 +8168190,0 +8170026,0 +8170026,0.03092939 +8170032,0.03092939 +8170032,0 +8171820,0 +8171820,0.24290887 +8171844,0.24290887 +8171844,0 +8171934,0 +8171934,0.10425468 +8171964,0.10425468 +8171964,0 +8172276,0 +8172276,0.12975256 +8172282,0.12975256 +8172282,0 +8172396,0 +8172396,0.20926373 +8172408,0.20926373 +8172408,0 +8173104,0 +8173104,0.10666868 +8173176,0.10666868 +8173176,0 +8185752,0 +8185752,0.096710923 +8185782,0.096710923 +8185782,0 +8188596,0 +8188596,0.18708509 +8188884,0.18708509 +8188884,0 +8192040,0 +8192040,0.29013277 +8192046,0.29013277 +8192046,0 +8203236,0 +8203236,0.25211225 +8203350,0.25211225 +8203350,0 +8225670,0 +8225670,0.43044659 +8225700,0.43044659 +8225700,0 +8244804,0 +8244804,0.40238383 +8245236,0.40238383 +8245236,0 +8250834,0 +8250834,0.16339771 +8250948,0.057634279 +8250948,0 +8250954,0 +8250954,0.057634279 +8250996,0.16339771 +8250996,0 +8251068,0 +8251068,0.17923959 +8251134,0.17923959 +8251134,0 +8251182,0 +8251182,0.26327701 +8251200,0.26327701 +8251200,0 +8257560,0 +8257560,0.065328908 +8257602,0.065328908 +8257602,0 +8259048,0 +8259048,0.18572722 +8259072,0.18572722 +8259072,0 +8262066,0 +8262066,0.21122511 +8262108,0.21122511 +8262108,0 +8269656,0 +8269656,0.22163549 +8269758,0.22163549 +8269758,0 +8270076,0 +8270076,0.0075437538 +8270082,0.0075437538 +8270082,0 +8275176,0 +8275176,0.098521424 +8275296,0.21907061 +8275296,0 +8275302,0 +8275302,0.098521424 +8275320,0.21907061 +8275320,0 +8275410,0 +8275410,0.0085998793 +8275416,0.0085998793 +8275416,0 +8275524,0 +8275524,0.046016898 +8275548,0.046016898 +8275548,0 +8275644,0 +8275644,0.029269765 +8275650,0.029269765 +8275650,0 +8275758,0 +8275758,0.0069402535 +8275770,0.0069402535 +8275770,0 +8275872,0 +8275872,0.26629451 +8275878,0.26629451 +8275878,0 +8275986,0 +8275986,0.10621605 +8276004,0.10621605 +8276004,0 +8276106,0 +8276106,0.16354858 +8276184,0.16354858 +8276184,0 +8276220,0 +8276220,0.26750151 +8276226,0.26750151 +8276226,0 +8277114,0 +8277114,0.27444176 +8277120,0.27444176 +8277120,0 +8279256,0 +8279256,0.29435727 +8279274,0.29435727 +8279274,0 +8289630,0 +8289630,0.25799638 +8289744,0.22585999 +8289744,0 +8289750,0 +8289750,0.25799638 +8289840,0.22585999 +8289840,0 +8293002,0 +8293002,0.0496379 +8293008,0.0496379 +8293008,0 +8317866,0 +8317866,0.11511768 +8317878,0.11511768 +8317878,0 +8317986,0 +8317986,0.070911285 +8318052,0.070911285 +8318052,0 +8320062,0 +8320062,0.055974653 +8320116,0.055974653 +8320116,0 +8320596,0 +8320596,0.013880507 +8320602,0.013880507 +8320602,0 +8320710,0 +8320710,0.27036814 +8320716,0.27036814 +8320716,0 +8322516,0 +8322516,0.33675317 +8322522,0.33675317 +8322522,0 +8322630,0 +8322630,0.34429692 +8322738,0.34429692 +8322738,0 +8322744,0 +8322744,0.22012674 +8322774,0.22012674 +8322774,0 +8322858,0 +8322858,0.29450815 +8322876,0.29450815 +8322876,0 +8323668,0 +8323668,0.08977067 +8323692,0.08977067 +8323692,0 +8323782,0 +8323782,0.24532287 +8323788,0.24532287 +8323788,0 +8324148,0 +8324148,0.0028666264 +8324154,0.0028666264 +8324154,0 +8324160,0 +8324160,0.1458962 +8324208,0.1458962 +8324208,0 +8324262,0 +8324262,0.19447797 +8324274,0.34474955 +8324274,0 +8324298,0 +8324298,0.34474955 +8324310,0.19447797 +8324310,0 +8324376,0 +8324376,0.33177429 +8324394,0.087658419 +8324394,0 +8324406,0 +8324406,0.33177429 +8324448,0.087658419 +8324448,0 +8324976,0 +8324976,0.098370549 +8324982,0.098370549 +8324982,0 +8325090,0 +8325090,0.22012674 +8325198,0.22012674 +8325198,0 +8326368,0 +8326368,0.097917924 +8326386,0.097917924 +8326386,0 +8326872,0 +8326872,0.12477369 +8326902,0.12477369 +8326902,0 +8326986,0 +8326986,0.11104406 +8327040,0.11104406 +8327040,0 +8327106,0 +8327106,0.23913699 +8327136,0.23913699 +8327136,0 +8327220,0 +8327220,0.17622209 +8327286,0.17622209 +8327286,0 +8327334,0 +8327334,0.15660833 +8327340,0.15660833 +8327340,0 +8331126,0 +8331126,0.31804466 +8331186,0.31804466 +8331186,0 +8331426,0 +8331426,0.36617381 +8331492,0.36617381 +8331492,0 +8332224,0 +8332224,0.31140616 +8332236,0.31140616 +8332236,0 +8339076,0 +8339076,0.30974653 +8339124,0.30974653 +8339124,0 +8346198,0 +8346198,0.12598069 +8346276,0.12598069 +8346276,0 +8346318,0 +8346318,0.31487628 +8346324,0.31487628 +8346324,0 +8346432,0 +8346432,0.062462281 +8346444,0.062462281 +8346444,0 +8346546,0 +8346546,0.077097164 +8346552,0.077097164 +8346552,0 +8351130,0 +8351130,0.2070006 +8351172,0.2070006 +8351172,0 +8351244,0 +8351244,0.0034701267 +8351250,0.0034701267 +8351250,0 +8353362,0 +8353362,0.082377791 +8353374,0.082377791 +8353374,0 +8353476,0 +8353476,0.15841883 +8353536,0.15841883 +8353536,0 +8353914,0 +8353914,0.1567592 +8353950,0.1567592 +8353950,0 +8354028,0 +8354028,0.085093543 +8354034,0.085093543 +8354034,0 +8354148,0 +8354148,0.029873265 +8354154,0.029873265 +8354154,0 +8354262,0 +8354262,0.096861798 +8354292,0.096861798 +8354292,0 +8354376,0 +8354376,0.20926373 +8354406,0.20926373 +8354406,0 +8354496,0 +8354496,0.29586602 +8354610,0 +8354610,0 +8354610,0.28968014 +8354610,0.29586602 +8354634,0.28968014 +8354634,0 +8358234,0 +8358234,0.0078455039 +8358252,0.0078455039 +8358252,0 +8358348,0 +8358348,0.12703681 +8358402,0.12703681 +8358402,0 +8360934,0 +8360934,0.27293301 +8360940,0.27293301 +8360940,0 +8360958,0 +8360958,0.17290284 +8361054,0.17290284 +8361054,0 +8361072,0 +8361072,0.12054919 +8361078,0.12054919 +8361078,0 +8371236,0 +8371236,0.04073627 +8371242,0.04073627 +8371242,0 +8380410,0 +8380410,0.10380205 +8380464,0.10380205 +8380464,0 +8390916,0 +8390916,0.17742909 +8390964,0.17742909 +8390964,0 +8391030,0 +8391030,0.12326494 +8391036,0.12326494 +8391036,0 +8391144,0 +8391144,0.042848521 +8391150,0.042848521 +8391150,0 +8403468,0 +8403468,0.12884731 +8403552,0.12884731 +8403552,0 +8403588,0 +8403588,0.16671696 +8403600,0.16671696 +8403600,0 +8403732,0 +8403732,0.16083283 +8403738,0.16083283 +8403738,0 +8403846,0 +8403846,0.15117683 +8403852,0.15117683 +8403852,0 +8403966,0 +8403966,0.24864212 +8404020,0.24864212 +8404020,0 +8404080,0 +8404080,0.16596258 +8404104,0.16596258 +8404104,0 +8404194,0 +8404194,0.062462281 +8404200,0.062462281 +8404200,0 +8405844,0 +8405844,0.14121907 +8405850,0.14121907 +8405850,0 +8410950,0 +8410950,0.32739891 +8411034,0.32739891 +8411034,0 +8412768,0 +8412768,0.27957151 +8412786,0.27957151 +8412786,0 +8412882,0 +8412882,0.32347616 +8412984,0.32347616 +8412984,0 +8413002,0 +8413002,0.24064575 +8413044,0.24064575 +8413044,0 +8413314,0 +8413314,0.12477369 +8413338,0.12477369 +8413338,0 +8413548,0 +8413548,0.14876282 +8413554,0.14876282 +8413554,0 +8415408,0 +8415408,0.46303561 +8415450,0.46303561 +8415450,0 +8419014,0 +8419014,0.21982498 +8419026,0.21982498 +8419026,0 +8419860,0 +8419860,0.17018709 +8419866,0.17018709 +8419866,0 +8420154,0 +8420154,0.1597767 +8420160,0.1597767 +8420160,0 +8424318,0 +8424318,0.33796017 +8424420,0.33796017 +8424420,0 +8425668,0 +8425668,0.1507242 +8425680,0.1507242 +8425680,0 +8426874,0 +8426874,0.36647556 +8426970,0.36647556 +8426970,0 +8428788,0 +8428788,0.12688594 +8428854,0.12688594 +8428854,0 +8428902,0 +8428902,0.20021123 +8428908,0.20021123 +8428908,0 +8429022,0 +8429022,0.25331925 +8429172,0.25331925 +8429172,0 +8430978,0 +8430978,0.2923959 +8430984,0.2923959 +8430984,0 +8431332,0 +8431332,0.35742305 +8431386,0.35742305 +8431386,0 +8432142,0 +8432142,0.0075437538 +8432232,0.0075437538 +8432232,0 +8436528,0 +8436528,0.33162342 +8436600,0.33162342 +8436600,0 +8436828,0 +8436828,0.35576343 +8436906,0.35576343 +8436906,0 +8437128,0 +8437128,0.24773687 +8437188,0.24773687 +8437188,0 +8439924,0 +8439924,0.16339771 +8439972,0.16339771 +8439972,0 +8440038,0 +8440038,0.15042245 +8440278,0.15042245 +8440278,0 +8440596,0 +8440596,0.06925166 +8440608,0.06925166 +8440608,0 +8445876,0 +8445876,0.15464695 +8445900,0.15464695 +8445900,0 +8446008,0 +8446008,0.17999396 +8446104,0.17999396 +8446104,0 +8451774,0 +8451774,0.19281835 +8451780,0.19281835 +8451780,0 +8451888,0 +8451888,0.34535305 +8451894,0.34535305 +8451894,0 +8452008,0 +8452008,0.047374774 +8452056,0.047374774 +8452056,0 +8452068,0 +8452068,0.033946892 +8452074,0.033946892 +8452074,0 +8452122,0 +8452122,0.1065178 +8452152,0.1065178 +8452152,0 +8452188,0 +8452188,0.15223295 +8452206,0.15223295 +8452206,0 +8452236,0 +8452236,0.0072420036 +8452254,0.0072420036 +8452254,0 +8452302,0 +8452302,0.076191913 +8452332,0.076191913 +8452332,0 +8452356,0 +8452356,0.38578757 +8452368,0.38578757 +8452368,0 +8452416,0 +8452416,0.21137598 +8452470,0.095503923 +8452470,0 +8452536,0 +8452536,0 +8452536,0.32815329 +8452536,0.095503923 +8452602,0 +8452602,0.21137598 +8452650,0.091882921 +8452650,0 +8452680,0 +8452680,0.32815329 +8452752,0.091882921 +8452752,0 +8452764,0 +8452764,0.23627037 +8452794,0.23627037 +8452794,0 +8453070,0 +8453070,0.023838262 +8453124,0.023838262 +8453124,0 +8453184,0 +8453184,0.17833434 +8453220,0.17833434 +8453220,0 +8455350,0 +8455350,0.18120097 +8455374,0.18120097 +8455374,0 +8455512,0 +8455512,0.11300543 +8455596,0.11300543 +8455596,0 +8455902,0 +8455902,0.089016295 +8455914,0.089016295 +8455914,0 +8459052,0 +8459052,0.19659022 +8459112,0.19659022 +8459112,0 +8459172,0 +8459172,0.26056126 +8459178,0.26056126 +8459178,0 +8459202,0 +8459202,0.29103802 +8459226,0.29103802 +8459226,0 +8490054,0 +8490054,0.057785154 +8490090,0.057785154 +8490090,0 +8491122,0 +8491122,0.30612553 +8491182,0.30612553 +8491182,0 +8497074,0 +8497074,0.32558841 +8497158,0.32558841 +8497158,0 +8499654,0 +8499654,0.21243211 +8499726,0.21243211 +8499726,0 +8499732,0 +8499732,0.26765238 +8499804,0.26765238 +8499804,0 +8500242,0 +8500242,0.19689197 +8500344,0.19689197 +8500344,0 +8500428,0 +8500428,0.18120097 +8500488,0.18120097 +8500488,0 +8500830,0 +8500830,0.17395896 +8500902,0.17395896 +8500902,0 +8501178,0 +8501178,0.088412794 +8501190,0.088412794 +8501190,0 +8501292,0 +8501292,0.035908268 +8501298,0.035908268 +8501298,0 +8501418,0 +8501418,0.21514786 +8501490,0.21514786 +8501490,0 +8502000,0 +8502000,0.21514786 +8502084,0.21514786 +8502084,0 +8502768,0 +8502768,0.32196741 +8502774,0.32196741 +8502774,0 +8508144,0 +8508144,0.10259505 +8508234,0.10259505 +8508234,0 +8508258,0 +8508258,0.18844297 +8508354,0.18844297 +8508354,0 +8513916,0 +8513916,0.12975256 +8513976,0.12975256 +8513976,0 +8514036,0 +8514036,0.2996379 +8514042,0.2996379 +8514042,0 +8514150,0 +8514150,0.12794206 +8514162,0.12794206 +8514162,0 +8514264,0 +8514264,0.12552806 +8514324,0.12552806 +8514324,0 +8518668,0 +8518668,0.077398914 +8518674,0.077398914 +8518674,0 +8518788,0 +8518788,0.2578455 +8518854,0.2578455 +8518854,0 +8518902,0 +8518902,0.29978877 +8518920,0.29978877 +8518920,0 +8533560,0 +8533560,0.12507544 +8533572,0.12507544 +8533572,0 +8533680,0 +8533680,0.14619795 +8533722,0.14619795 +8533722,0 +8533794,0 +8533794,0.11270368 +8533806,0.11270368 +8533806,0 +8536290,0 +8536290,0.11044056 +8536332,0.11044056 +8536332,0 +8536404,0 +8536404,0.17109234 +8536596,0.17109234 +8536596,0 +8536884,0 +8536884,0.11164756 +8536890,0.11164756 +8536890,0 +8542146,0 +8542146,0.086753168 +8542170,0.086753168 +8542170,0 +8542260,0 +8542260,0.22555824 +8542272,0.22555824 +8542272,0 +8549388,0 +8549388,0.18240797 +8549424,0.18240797 +8549424,0 +8549502,0 +8549502,0.259656 +8549514,0.259656 +8549514,0 +8566278,0 +8566278,0.25739288 +8566308,0.25739288 +8566308,0 +8579730,0 +8579730,0.1440857 +8579784,0.1440857 +8579784,0 +8581974,0 +8581974,0.1095353 +8582028,0.1095353 +8582028,0 +8582088,0 +8582088,0.14453832 +8582106,0.14453832 +8582106,0 +8582208,0 +8582208,0.14906457 +8582268,0.14906457 +8582268,0 +8586372,0 +8586372,0.30280628 +8586450,0.30280628 +8586450,0 +8588118,0 +8588118,0.21665661 +8588190,0.21665661 +8588190,0 +8588700,0 +8588700,0.25331925 +8588754,0.25331925 +8588754,0 +8589288,0 +8589288,0.16264333 +8589426,0.16264333 +8589426,0 +8589864,0 +8589864,0.4497586 +8589876,0.22661436 +8589876,0 +8589924,0 +8589924,0.4497586 +8589936,0.22661436 +8589936,0 +8590164,0 +8590164,0.42607121 +8590230,0.42607121 +8590230,0 +8590464,0 +8590464,0.26614363 +8590530,0.26614363 +8590530,0 +8594322,0 +8594322,0.35380205 +8594412,0.35380205 +8594412,0 +8594622,0 +8594622,0.38186482 +8594682,0.38186482 +8594682,0 +8596458,0 +8596458,0.12009656 +8596572,0.12009656 +8596572,0 +8600154,0 +8600154,0.26689801 +8600220,0.26689801 +8600220,0 +8600274,0 +8600274,0.32483404 +8600292,0.32483404 +8600292,0 +8600388,0 +8600388,0.1059143 +8600430,0.1059143 +8600430,0 +8600502,0 +8600502,0.30250453 +8600526,0.30250453 +8600526,0 +8600622,0 +8600622,0.15223295 +8600670,0.15223295 +8600670,0 +8600736,0 +8600736,0.2445685 +8600796,0.2445685 +8600796,0 +8600850,0 +8600850,0.2033796 +8600934,0.2033796 +8600934,0 +8600970,0 +8600970,0.018708509 +8600976,0.018708509 +8600976,0 +8601084,0 +8601084,0.43482197 +8601090,0.43482197 +8601090,0 +8601198,0 +8601198,0.14619795 +8601210,0.14619795 +8601210,0 +8601318,0 +8601318,0.23053712 +8601336,0.23053712 +8601336,0 +8602284,0 +8602284,0.16686783 +8602326,0.16686783 +8602326,0 +8602398,0 +8602398,0.23506337 +8602434,0.23506337 +8602434,0 +8603256,0 +8603256,0.18452022 +8603316,0.18452022 +8603316,0 +8603370,0 +8603370,0.16732046 +8603406,0.16732046 +8603406,0 +8603484,0 +8603484,0.006035003 +8603496,0.006035003 +8603496,0 +8607240,0 +8607240,0.16460471 +8607360,0.16460471 +8607360,0 +8607828,0 +8607828,0.20715148 +8607960,0.20715148 +8607960,0 +8608416,0 +8608416,0.17063971 +8608482,0.17063971 +8608482,0 +8608998,0 +8608998,0.241551 +8609082,0.241551 +8609082,0 +8609586,0 +8609586,0.19704285 +8609622,0.19704285 +8609622,0 +8610174,0 +8610174,0.21680748 +8610228,0.21680748 +8610228,0 +8611740,0 +8611740,0.0034701267 +8611746,0.0034701267 +8611746,0 +8620494,0 +8620494,0.2954134 +8620668,0.2954134 +8620668,0 +8623032,0 +8623032,0.1404647 +8623056,0.1404647 +8623056,0 +8623146,0 +8623146,0.10319855 +8623188,0.10319855 +8623188,0 +8624226,0 +8624226,0.36360893 +8624256,0.36360893 +8624256,0 +8625816,0 +8625816,0.072721786 +8625852,0.072721786 +8625852,0 +8626740,0 +8626740,0.027610139 +8627178,0.027610139 +8627178,0 +8629794,0 +8629794,0.072721786 +8629800,0.072721786 +8629800,0 +8630538,0 +8630538,0.13111044 +8630628,0.13111044 +8630628,0 +8630652,0 +8630652,0.29496077 +8630796,0.29496077 +8630796,0 +8637798,0 +8637798,0.13759807 +8637810,0.13759807 +8637810,0 +8639496,0 +8639496,0.09957755 +8639550,0.09957755 +8639550,0 +8639610,0 +8639610,0.2021726 +8639646,0.2021726 +8639646,0 +8651268,0 +8651268,0.19100785 +8651292,0.19100785 +8651292,0 +8658846,0 +8658846,0.081019916 +8658858,0.081019916 +8658858,0 +8662482,0 +8662482,0.11375981 +8662578,0.11375981 +8662578,0 +8662602,0 +8662602,0.10259505 +8662608,0.10259505 +8662608,0 +8663040,0 +8663040,0.33946892 +8663298,0.33946892 +8663298,0 +8664672,0 +8664672,0.16475558 +8664702,0.16475558 +8664702,0 +8667930,0 +8667930,0.060500905 +8667996,0.060500905 +8667996,0 +8672154,0 +8672154,0.032739891 +8672166,0.032739891 +8672166,0 +8672442,0 +8672442,0.2076041 +8672508,0.2076041 +8672508,0 +8673030,0 +8673030,0.19236572 +8673084,0.19236572 +8673084,0 +8673618,0 +8673618,0.22480386 +8673690,0.22480386 +8673690,0 +8674206,0 +8674206,0.22872661 +8674284,0.22872661 +8674284,0 +8674788,0 +8674788,0.22103199 +8674848,0.22103199 +8674848,0 +8675616,0 +8675616,0.43753772 +8675964,0.43753772 +8675964,0 +8676648,0 +8676648,0.16958358 +8677392,0.16958358 +8677392,0 +8678778,0 +8678778,0.017350634 +8678784,0.017350634 +8678784,0 +8685084,0 +8685084,0.061255281 +8685090,0.061255281 +8685090,0 +8688108,0 +8688108,0.15298733 +8688114,0.15298733 +8688114,0 +8688222,0 +8688222,0.2554315 +8688276,0.2554315 +8688276,0 +8692992,0 +8692992,0.11738081 +8692998,0.11738081 +8692998,0 +8693724,0 +8693724,0.015691008 +8693730,0.015691008 +8693730,0 +8693838,0 +8693838,0.32226916 +8693874,0.32226916 +8693874,0 +8703906,0 +8703906,0.17531684 +8703954,0.17531684 +8703954,0 +8704494,0 +8704494,0.20247435 +8704602,0.20247435 +8704602,0 +8704818,0 +8704818,0.25045263 +8704830,0.25045263 +8704830,0 +8704932,0 +8704932,0.11406156 +8705010,0.11406156 +8705010,0 +8705052,0 +8705052,0.018708509 +8705058,0.018708509 +8705058,0 +8705082,0 +8705082,0.24471937 +8705142,0.24471937 +8705142,0 +8705670,0 +8705670,0.21243211 +8705730,0.21243211 +8705730,0 +8706252,0 +8706252,0.22284249 +8706336,0.22284249 +8706336,0 +8715660,0 +8715660,0.0043753772 +8715666,0.0043753772 +8715666,0 +8716650,0 +8716650,0.1591732 +8716656,0.1591732 +8716656,0 +8725962,0 +8725962,0.1561557 +8726028,0.1561557 +8726028,0 +8726076,0 +8726076,0.242758 +8726136,0.242758 +8726136,0 +8726190,0 +8726190,0.14725407 +8726208,0.14725407 +8726208,0 +8750142,0 +8750142,0.32362704 +8750244,0.32362704 +8750244,0 +8750256,0 +8750256,0.095051298 +8750334,0.095051298 +8750334,0 +8752428,0 +8752428,0.1053108 +8752452,0.1053108 +8752452,0 +8752554,0 +8752554,0.17154496 +8752626,0.17154496 +8752626,0 +8755410,0 +8755410,0.0076946288 +8755458,0.0076946288 +8755458,0 +8755530,0 +8755530,0.18738684 +8755668,0.18738684 +8755668,0 +8761662,0 +8761662,0.045564273 +8761668,0.045564273 +8761668,0 +8762892,0 +8762892,0.19477972 +8763006,0.19477972 +8763006,0 +8764428,0 +8764428,0.12100181 +8764458,0.12100181 +8764458,0 +8764542,0 +8764542,0.12175619 +8764596,0.12175619 +8764596,0 +8766180,0 +8766180,0.16430296 +8766228,0.16430296 +8766228,0 +8766294,0 +8766294,0.019764635 +8766342,0.019764635 +8766342,0 +8766408,0 +8766408,0.16988533 +8766438,0.16988533 +8766438,0 +8770248,0 +8770248,0.19327097 +8770254,0.19327097 +8770254,0 +8770362,0 +8770362,0.069704285 +8770392,0.069704285 +8770392,0 +8773824,0 +8773824,0.28832227 +8774568,0.28832227 +8774568,0 +8779686,0 +8779686,0.16913096 +8779710,0.16913096 +8779710,0 +8779962,0 +8779962,0.056578153 +8779968,0.056578153 +8779968,0 +8780124,0 +8780124,0.071816536 +8780130,0.071816536 +8780130,0 +8790768,0 +8790768,0.2015691 +8790804,0.2015691 +8790804,0 +8792838,0 +8792838,0.26237176 +8792874,0.26237176 +8792874,0 +8792952,0 +8792952,0.17245021 +8793006,0.17245021 +8793006,0 +8793072,0 +8793072,0.13835244 +8793084,0.13835244 +8793084,0 +8793186,0 +8793186,0.23098974 +8793210,0.23098974 +8793210,0 +8793246,0 +8793246,0.42139409 +8793300,0.023234762 +8793300,0 +8793306,0 +8793306,0.023234762 +8793414,0.0025648763 +8793414,0 +8793420,0 +8793420,0.0025648763 +8793852,0.42139409 +8793852,0 +8795988,0 +8795988,0.0075437538 +8796114,0.0075437538 +8796114,0 +8807028,0 +8807028,0.04043452 +8807148,0.04043452 +8807148,0 +8808054,0 +8808054,0.1507242 +8808072,0.1507242 +8808072,0 +8826366,0 +8826366,0.12070006 +8826414,0.12070006 +8826414,0 +8828082,0 +8828082,0.2082076 +8828112,0.2082076 +8828112,0 +8835036,0 +8835036,0.25950513 +8835048,0.25950513 +8835048,0 +8838684,0 +8838684,0.48627037 +8838972,0.48627037 +8838972,0 +8841006,0 +8841006,0.078907664 +8841042,0.078907664 +8841042,0 +8842332,0 +8842332,0.046318648 +8842362,0.046318648 +8842362,0 +8847234,0 +8847234,0.12175619 +8847276,0.12175619 +8847276,0 +8848002,0 +8848002,0.080718165 +8848020,0.080718165 +8848020,0 +8848116,0 +8848116,0.027459264 +8848152,0.027459264 +8848152,0 +8850462,0 +8850462,0.14574532 +8850474,0.14574532 +8850474,0 +8850576,0 +8850576,0.11828606 +8850582,0.11828606 +8850582,0 +8850690,0 +8850690,0.18512372 +8850714,0.18512372 +8850714,0 +8850810,0 +8850810,0.063367532 +8850918,0.063367532 +8850918,0 +8850924,0 +8850924,0.24004225 +8850972,0.24004225 +8850972,0 +8851038,0 +8851038,0.22736874 +8851074,0.22736874 +8851074,0 +8851158,0 +8851158,0.34399517 +8851182,0.34399517 +8851182,0 +8854626,0 +8854626,0.29194327 +8854656,0.29194327 +8854656,0 +8855178,0 +8855178,0.20171998 +8855226,0.20171998 +8855226,0 +8855274,0 +8855274,0.079209415 +8855280,0.079209415 +8855280,0 +8855298,0 +8855298,0.016294508 +8855310,0.016294508 +8855310,0 +8855412,0 +8855412,0.15887145 +8855460,0.15887145 +8855460,0 +8855526,0 +8855526,0.35485818 +8855568,0.35485818 +8855568,0 +8857758,0 +8857758,0.023687387 +8857764,0.023687387 +8857764,0 +8859762,0 +8859762,0.21816536 +8859768,0.21816536 +8859768,0 +8866398,0 +8866398,0.11647556 +8866434,0.11647556 +8866434,0 +8870766,0 +8870766,0.0015087508 +8870772,0.0015087508 +8870772,0 +8875728,0 +8875728,0.29526252 +8875740,0.29526252 +8875740,0 +8878698,0 +8878698,0.0075437538 +8878758,0.0075437538 +8878758,0 +8878812,0 +8878812,0.044809897 +8878818,0.044809897 +8878818,0 +8880408,0 +8880408,0.13744719 +8880420,0.13744719 +8880420,0 +8880522,0 +8880522,0.14302957 +8880576,0.14302957 +8880576,0 +8884548,0 +8884548,0.17788171 +8884554,0.17788171 +8884554,0 +8884668,0 +8884668,0.084037417 +8884698,0.084037417 +8884698,0 +8887122,0 +8887122,0.071363911 +8887176,0.071363911 +8887176,0 +8887242,0 +8887242,0.056578153 +8887248,0.056578153 +8887248,0 +8887356,0 +8887356,0.35666868 +8887362,0.35666868 +8887362,0 +8887470,0 +8887470,0.26207001 +8887512,0.26207001 +8887512,0 +8900910,0 +8900910,0.041339771 +8900916,0.041339771 +8900916,0 +8914326,0 +8914326,0.25 +8914422,0.25 +8914422,0 +8914440,0 +8914440,0.0093542547 +8914446,0.0093542547 +8914446,0 +8924184,0 +8924184,0.36738081 +8924610,0.21695836 +8924610,0 +8924856,0 +8924856,0.36738081 +8924880,0.21695836 +8924880,0 +8926020,0 +8926020,0.13397707 +8926500,0.13397707 +8926500,0 +8927700,0 +8927700,0.20473748 +8927742,0.20473748 +8927742,0 +8927850,0 +8927850,0.33298129 +8928012,0.29088715 +8928012,0 +8928126,0 +8928126,0.29088715 +8928690,0.33298129 +8928690,0 +8931846,0 +8931846,0.33494267 +8931882,0.33494267 +8931882,0 +8932140,0 +8932140,0.19659022 +8932182,0.17516596 +8932182,0 +8932206,0 +8932206,0.19659022 +8932380,0.17516596 +8932380,0 +8936664,0 +8936664,0.30914303 +8937054,0.30914303 +8937054,0 +8942256,0 +8942256,0.1507242 +8942286,0.1507242 +8942286,0 +8942370,0 +8942370,0.16747133 +8942376,0.16747133 +8942376,0 +8943546,0 +8943546,0.039378395 +8943648,0.039378395 +8943648,0 +8943660,0 +8943660,0.23430899 +8943666,0.23430899 +8943666,0 +8943774,0 +8943774,0.00075437538 +8943780,0.00075437538 +8943780,0 +8945952,0 +8945952,0.21439348 +8945982,0.21439348 +8945982,0 +8946066,0 +8946066,0.18165359 +8946078,0.18165359 +8946078,0 +8947860,0 +8947860,0.1991551 +8948004,0.1991551 +8948004,0 +8948208,0 +8948208,0.22646349 +8948280,0.22646349 +8948280,0 +8955996,0 +8955996,0.20654798 +8956086,0.20654798 +8956086,0 +8956920,0 +8956920,0.43663247 +8957352,0.43663247 +8957352,0 +8966172,0 +8966172,0.0045262523 +8966178,0.0045262523 +8966178,0 +8966286,0 +8966286,0.23672299 +8966400,0.16309596 +8966400,0 +8966442,0 +8966442,0.16309596 +8966466,0.23672299 +8966466,0 +8966520,0 +8966520,0.091279421 +8966574,0.091279421 +8966574,0 +8967990,0 +8967990,0.081170791 +8968014,0.081170791 +8968014,0 +8970126,0 +8970126,0.23264937 +8970138,0.23264937 +8970138,0 +8971152,0 +8971152,0.087960169 +8971158,0.087960169 +8971158,0 +8973492,0 +8973492,0.18617984 +8973606,0.18617984 +8973606,0 +8974080,0 +8974080,0.22208811 +8974164,0.22208811 +8974164,0 +8974668,0 +8974668,0.18874472 +8974758,0.18874472 +8974758,0 +8975256,0 +8975256,0.24124925 +8975358,0.24124925 +8975358,0 +8975838,0 +8975838,0.23989137 +8975916,0.23989137 +8975916,0 +9008880,0 +9008880,0.25105613 +9009246,0.25105613 +9009246,0 +9011580,0 +9011580,0.038020519 +9011586,0.038020519 +9011586,0 +9011994,0 +9011994,0.21363911 +9012006,0.21363911 +9012006,0 +9013242,0 +9013242,0.26161738 +9013278,0.26161738 +9013278,0 +9013302,0 +9013302,0.20488835 +9013308,0.20488835 +9013308,0 +9013416,0 +9013416,0.033192517 +9013422,0.033192517 +9013422,0 +9017310,0 +9017310,0.023083887 +9017316,0.023083887 +9017316,0 +9017424,0 +9017424,0.14423657 +9017460,0.14423657 +9017460,0 +9017688,0 +9017688,0.24019312 +9017700,0.24019312 +9017700,0 +9019044,0 +9019044,0.39634882 +9019092,0.39634882 +9019092,0 +9021564,0 +9021564,0.13684369 +9021570,0.13684369 +9021570,0 +9021678,0 +9021678,0.39076645 +9021690,0.39076645 +9021690,0 +9024024,0 +9024024,0.3910682 +9024336,0.3910682 +9024336,0 +9029952,0 +9029952,0.15691008 +9029964,0.15691008 +9029964,0 +9030066,0 +9030066,0.064423657 +9030096,0.064423657 +9030096,0 +9031710,0 +9031710,0.12145444 +9031788,0.12145444 +9031788,0 +9035142,0 +9035142,0.29149065 +9035208,0.29149065 +9035208,0 +9035442,0 +9035442,0.33056729 +9035520,0.33056729 +9035520,0 +9035742,0 +9035742,0.28394689 +9035802,0.28394689 +9035802,0 +9039600,0 +9039600,0.31065178 +9039672,0.31065178 +9039672,0 +9039900,0 +9039900,0.28832227 +9039936,0.28832227 +9039936,0 +9040194,0 +9040194,0.4031382 +9040212,0.4031382 +9040212,0 +9043614,0 +9043614,0.20745323 +9043890,0.20745323 +9043890,0 +9044058,0 +9044058,0.42893784 +9044130,0.42893784 +9044130,0 +9044250,0 +9044250,0.24652987 +9044352,0.26825588 +9044352,0 +9044436,0 +9044436,0.26825588 +9044652,0.48219674 +9044652,0 +9044724,0 +9044724,0.48219674 +9044856,0.24652987 +9044856,0 +9045450,0 +9045450,0.24547375 +9046092,0.24547375 +9046092,0 +9050040,0 +9050040,0.13925769 +9050118,0.13925769 +9050118,0 +9050154,0 +9050154,0.21575136 +9050190,0.21575136 +9050190,0 +9051012,0 +9051012,0.15691008 +9051030,0.15691008 +9051030,0 +9053292,0 +9053292,0.17245021 +9053316,0.17245021 +9053316,0 +9053514,0 +9053514,0.13669282 +9053538,0.13669282 +9053538,0 +9053634,0 +9053634,0.17154496 +9053718,0.17154496 +9053718,0 +9059850,0 +9059850,0.26916113 +9059856,0.26916113 +9059856,0 +9059970,0 +9059970,0.040585395 +9059976,0.040585395 +9059976,0 +9060480,0 +9060480,0.25528063 +9060492,0.25528063 +9060492,0 +9094452,0 +9094452,0.10033193 +9094458,0.10033193 +9094458,0 +9099996,0 +9099996,0.061255281 +9100014,0.061255281 +9100014,0 +9103818,0 +9103818,0.087658419 +9103848,0.087658419 +9103848,0 +9106164,0 +9106164,0.16762221 +9106170,0.16762221 +9106170,0 +9106278,0 +9106278,0.13397707 +9106308,0.13397707 +9106308,0 +9106398,0 +9106398,0.26614363 +9106434,0.26614363 +9106434,0 +9106512,0 +9106512,0.22374774 +9106536,0.22374774 +9106536,0 +9106626,0 +9106626,0.0082981291 +9106650,0.0082981291 +9106650,0 +9109524,0 +9109524,0.32589016 +9110328,0.32589016 +9110328,0 +9111894,0 +9111894,0.012371756 +9112002,0.012371756 +9112002,0 +9119862,0 +9119862,0.0078455039 +9119886,0.0078455039 +9119886,0 +9119976,0 +9119976,0.087809294 +9120018,0.087809294 +9120018,0 +9120096,0 +9120096,0.15992758 +9120108,0.15992758 +9120108,0 +9121344,0 +9121344,0.0058841279 +9121350,0.0058841279 +9121350,0 +9126372,0 +9126372,0.08056729 +9126384,0.08056729 +9126384,0 +9131262,0 +9131262,0.26433313 +9131316,0.26433313 +9131316,0 +9131376,0 +9131376,0.28666264 +9131400,0.28666264 +9131400,0 +9132228,0 +9132228,0.27414001 +9132234,0.27414001 +9132234,0 +9134622,0 +9134622,0.036360893 +9134658,0.036360893 +9134658,0 +9134742,0 +9134742,0.22948099 +9134796,0.22948099 +9134796,0 +9138654,0 +9138654,0.088714544 +9138660,0.088714544 +9138660,0 +9138774,0 +9138774,0.0490344 +9138906,0.0490344 +9138906,0 +9144666,0 +9144666,0.18255884 +9144678,0.18255884 +9144678,0 +9152106,0 +9152106,0.068195534 +9152112,0.068195534 +9152112,0 +9152220,0 +9152220,0.12296319 +9152304,0.12296319 +9152304,0 +9153714,0 +9153714,0.18240797 +9153762,0.18240797 +9153762,0 +9154824,0 +9154824,0.42652384 +9155376,0.42652384 +9155376,0 +9156660,0 +9156660,0.40947495 +9156960,0.40947495 +9156960,0 +9183138,0 +9183138,0.0073928787 +9183252,0.20669885 +9183252,0 +9183270,0 +9183270,0.0073928787 +9183288,0.20669885 +9183288,0 +9185550,0 +9185550,0.086904043 +9185592,0.086904043 +9185592,0 +9186690,0 +9186690,0.22208811 +9186708,0.24773687 +9186708,0 +9186756,0 +9186756,0.22208811 +9186774,0.24773687 +9186774,0 +9186804,0 +9186804,0.074381412 +9186810,0.074381412 +9186810,0 +9186822,0 +9186822,0.26946288 +9186828,0.26946288 +9186828,0 +9186924,0 +9186924,0.10606518 +9186936,0.1579662 +9186936,0 +9186942,0 +9186942,0.1579662 +9186954,0.10606518 +9186954,0 +9187038,0 +9187038,0.22465299 +9187050,0.024441762 +9187050,0 +9187056,0 +9187056,0.024441762 +9187062,0.22465299 +9187062,0 +9193080,0 +9193080,0.33992154 +9193140,0.33992154 +9193140,0 +9193194,0 +9193194,0.24411587 +9193254,0.24411587 +9193254,0 +9193314,0 +9193314,0.2905854 +9193380,0.2905854 +9193380,0 +9193428,0 +9193428,0.15841883 +9193542,0 +9193542,0 +9193542,0.075739288 +9193542,0.15841883 +9193572,0.075739288 +9193572,0 +9193662,0 +9193662,0.19598672 +9193674,0.19598672 +9193674,0 +9193776,0 +9193776,0.26991551 +9193788,0.26991551 +9193788,0 +9193890,0 +9193890,0.026855763 +9193902,0.026855763 +9193902,0 +9206778,0 +9206778,0.23642124 +9206796,0.23642124 +9206796,0 +9206892,0 +9206892,0.16837658 +9206916,0.16837658 +9206916,0 +9214164,0 +9214164,0.12024744 +9214176,0.12024744 +9214176,0 +9214278,0 +9214278,0.17592034 +9214284,0.17592034 +9214284,0 +9214392,0 +9214392,0.28032589 +9214404,0.28032589 +9214404,0 +9214512,0 +9214512,0.22344599 +9214572,0.22344599 +9214572,0 +9214986,0 +9214986,0.21001811 +9215100,0.072118286 +9215100,0 +9215106,0 +9215106,0.072118286 +9215118,0.21001811 +9215118,0 +9215214,0 +9215214,0.28138202 +9215220,0.28138202 +9215220,0 +9215334,0 +9215334,0.1501207 +9215358,0.1501207 +9215358,0 +9215448,0 +9215448,0.22133374 +9215478,0.22133374 +9215478,0 +9216462,0 +9216462,0.15449608 +9216498,0.15449608 +9216498,0 +9217716,0 +9217716,0.26599276 +9217734,0.26599276 +9217734,0 +9219660,0 +9219660,0.061104406 +9219666,0.061104406 +9219666,0 +9219774,0 +9219774,0.068195534 +9219846,0.068195534 +9219846,0 +9219894,0 +9219894,0.12477369 +9219918,0.12477369 +9219918,0 +9224028,0 +9224028,0.32438141 +9224040,0.08026554 +9224040,0 +9224052,0 +9224052,0.08026554 +9224322,0.32438141 +9224322,0 +9227076,0 +9227076,0.13382619 +9227088,0.13382619 +9227088,0 +9228090,0 +9228090,0.16022933 +9228120,0.16022933 +9228120,0 +9232554,0 +9232554,0.22585999 +9232614,0.22585999 +9232614,0 +9233142,0 +9233142,0.24849125 +9233214,0.24849125 +9233214,0 +9233730,0 +9233730,0.19508147 +9233784,0.19508147 +9233784,0 +9234318,0 +9234318,0.16505733 +9234390,0.16505733 +9234390,0 +9244662,0 +9244662,0.48415812 +9245094,0.48415812 +9245094,0 +9246252,0 +9246252,0.242758 +9246282,0.242758 +9246282,0 +9246372,0 +9246372,0.22284249 +9246390,0.22284249 +9246390,0 +9266610,0 +9266610,0.45322873 +9266850,0.27519614 +9266850,0 +9266880,0 +9266880,0.27519614 +9266964,0.12070006 +9266964,0 +9266970,0 +9266970,0.12070006 +9267078,0.065932408 +9267078,0 +9267108,0 +9267108,0.065932408 +9267120,0.45322873 +9267120,0 +9267198,0 +9267198,0.0076946288 +9267210,0.0076946288 +9267210,0 +9267312,0 +9267312,0.18044659 +9267402,0.18044659 +9267402,0 +9268404,0 +9268404,0.29465902 +9268428,0.29465902 +9268428,0 +9268524,0 +9268524,0.12643331 +9268542,0.12643331 +9268542,0 +9268638,0 +9268638,0.31442366 +9268644,0.31442366 +9268644,0 +9274092,0 +9274092,0.26297526 +9274422,0.28273989 +9274422,0 +9274440,0 +9274440,0.28273989 +9274536,0.11496681 +9274536,0 +9274566,0 +9274566,0.11496681 +9274698,0.26297526 +9274698,0 +9274914,0 +9274914,0.063065782 +9274920,0.063065782 +9274920,0 +9277608,0 +9277608,0.063669282 +9277614,0.063669282 +9277614,0 +9277728,0 +9277728,0.096107423 +9277734,0.096107423 +9277734,0 +9277794,0 +9277794,0.088111044 +9277800,0.088111044 +9277800,0 +9287082,0 +9287082,0.38367532 +9287094,0.38367532 +9287094,0 +9291390,0 +9291390,0.14755582 +9291510,0.15449608 +9291510,0 +9291534,0 +9291534,0.15449608 +9291540,0.14755582 +9291540,0 +9291624,0 +9291624,0.16550996 +9291654,0.16550996 +9291654,0 +9294732,0 +9294732,0.34972842 +9294792,0.34972842 +9294792,0 +9295392,0 +9295392,0.16128546 +9295434,0.16128546 +9295434,0 +9298068,0 +9298068,0.31729028 +9298074,0.31729028 +9298074,0 +9298182,0 +9298182,0.16822571 +9298200,0.16822571 +9298200,0 +9298296,0 +9298296,0.10380205 +9298326,0.10380205 +9298326,0 +9298416,0 +9298416,0.071816536 +9298422,0.071816536 +9298422,0 +9298530,0 +9298530,0.042999396 +9298536,0.042999396 +9298536,0 +9298644,0 +9298644,0.073476162 +9298650,0.073476162 +9298650,0 +9298764,0 +9298764,0.17214846 +9298782,0.17214846 +9298782,0 +9298878,0 +9298878,0.06955341 +9298908,0.06955341 +9298908,0 +9298992,0 +9298992,0.12356669 +9299070,0.12356669 +9299070,0 +9299112,0 +9299112,0.17109234 +9299166,0.17109234 +9299166,0 +9299226,0 +9299226,0.27082076 +9299268,0.27082076 +9299268,0 +9299340,0 +9299340,0.18572722 +9299346,0.18572722 +9299346,0 +9301428,0 +9301428,0.21092336 +9301440,0.21092336 +9301440,0 +9306162,0 +9306162,0.047525649 +9306198,0.047525649 +9306198,0 +9306282,0 +9306282,0.26659626 +9306324,0.26659626 +9306324,0 +9306396,0 +9306396,0.22208811 +9306516,0.22208811 +9306516,0 +9306546,0 +9306546,0.072269161 +9306612,0.072269161 +9306612,0 +9306660,0 +9306660,0.09037417 +9306690,0.09037417 +9306690,0 +9306774,0 +9306774,0.10878093 +9306780,0.10878093 +9306780,0 +9306894,0 +9306894,0.075286663 +9306900,0.075286663 +9306900,0 +9312174,0 +9312174,0.28575739 +9312180,0.28575739 +9312180,0 +9312288,0 +9312288,0.10138805 +9312384,0.10138805 +9312384,0 +9312408,0 +9312408,0.16973446 +9312468,0.16973446 +9312468,0 +9312522,0 +9312522,0.35757393 +9312528,0.35757393 +9312528,0 +9314004,0 +9314004,0.247586 +9314058,0.247586 +9314058,0 +9314592,0 +9314592,0.27896801 +9314676,0.30235365 +9314676,0 +9314682,0 +9314682,0.30235365 +9314712,0.27896801 +9314712,0 +9315174,0 +9315174,0.1573627 +9315222,0.1573627 +9315222,0 +9323304,0 +9323304,0.20745323 +9323784,0.20745323 +9323784,0 +9325140,0 +9325140,0.51071213 +9325470,0.51071213 +9325470,0 +9349470,0 +9349470,0.15540133 +9349512,0.15540133 +9349512,0 +9349584,0 +9349584,0.0027157514 +9349590,0.0027157514 +9349590,0 +9359076,0 +9359076,0.016445383 +9359082,0.016445383 +9359082,0 +9360984,0 +9360984,0.015691008 +9360990,0.015691008 +9360990,0 +9364128,0 +9364128,0.26810501 +9364176,0.26810501 +9364176,0 +9365100,0 +9365100,0.0070911285 +9365136,0.0070911285 +9365136,0 +9369726,0 +9369726,0.28968014 +9369774,0.28968014 +9369774,0 +9369840,0 +9369840,0.15841883 +9369906,0.15841883 +9369906,0 +9369954,0 +9369954,0.11240193 +9370002,0.11240193 +9370002,0 +9371130,0 +9371130,0.039680145 +9371136,0.039680145 +9371136,0 +9371244,0 +9371244,0.20609535 +9371250,0.20609535 +9371250,0 +9393840,0 +9393840,0.097012674 +9393906,0.097012674 +9393906,0 +9394164,0 +9394164,0.20473748 +9394182,0.20473748 +9394182,0 +9395274,0 +9395274,0.023234762 +9395280,0.023234762 +9395280,0 +9400140,0 +9400140,0.21122511 +9400170,0.21122511 +9400170,0 +9400254,0 +9400254,0.064423657 +9400266,0.064423657 +9400266,0 +9401874,0 +9401874,0.11345806 +9401886,0.11345806 +9401886,0 +9412104,0 +9412104,0.37447194 +9412608,0.37447194 +9412608,0 +9434628,0 +9434628,0.21891973 +9434676,0.21891973 +9434676,0 +9440610,0 +9440610,0.19749547 +9440622,0.19749547 +9440622,0 +9441972,0 +9441972,0.003922752 +9441978,0.003922752 +9441978,0 +9443292,0 +9443292,0.15117683 +9443340,0.15117683 +9443340,0 +9445524,0 +9445524,0.17109234 +9445566,0.17109234 +9445566,0 +9450774,0 +9450774,0.18406759 +9450888,0.11436331 +9450888,0 +9450894,0 +9450894,0.11436331 +9450936,0.18406759 +9450936,0 +9451596,0 +9451596,0.24185275 +9451602,0.24185275 +9451602,0 +9453636,0 +9453636,0.16203983 +9453660,0.16203983 +9453660,0 +9454656,0 +9454656,0.17908871 +9454662,0.17908871 +9454662,0 +9456150,0 +9456150,0.18029572 +9456180,0.18029572 +9456180,0 +9459228,0 +9459228,0.11602293 +9459264,0.11602293 +9459264,0 +9459348,0 +9459348,0.27127339 +9459504,0.27127339 +9459504,0 +9472134,0 +9472134,0.26493663 +9472206,0.26493663 +9472206,0 +9473526,0 +9473526,0.21348823 +9473532,0.21348823 +9473532,0 +9478572,0 +9478572,0.12492456 +9478638,0.12492456 +9478638,0 +9479316,0 +9479316,0.025799638 +9479322,0.025799638 +9479322,0 +9479436,0 +9479436,0.069704285 +9479442,0.069704285 +9479442,0 +9479550,0 +9479550,0.31925166 +9479598,0.58222692 +9479598,0 +9479604,0 +9479604,0.31925166 +9479664,0.27564876 +9479664,0 +9479742,0 +9479742,0.27564876 +9479778,0.30039228 +9479778,0 +9479796,0 +9479796,0.30039228 +9480126,0.58222692 +9480126,0 +9482628,0 +9482628,0.30371153 +9482652,0.30371153 +9482652,0 +9485238,0 +9485238,0.1901026 +9485256,0.1901026 +9485256,0 +9489396,0 +9489396,0.27655401 +9489402,0.27655401 +9489402,0 +9489510,0 +9489510,0.19945685 +9489558,0.19945685 +9489558,0 +9489630,0 +9489630,0.080114665 +9489672,0.080114665 +9489672,0 +9489744,0 +9489744,0.25573325 +9489786,0.25573325 +9489786,0 +9489858,0 +9489858,0.2045866 +9489870,0.2045866 +9489870,0 +9489978,0 +9489978,0.0076946288 +9490050,0.0076946288 +9490050,0 +9490092,0 +9490092,0.18361497 +9490170,0.18361497 +9490170,0 +9490206,0 +9490206,0.23129149 +9490446,0.23129149 +9490446,0 +9493644,0 +9493644,0.013126132 +9493650,0.013126132 +9493650,0 +9493758,0 +9493758,0.14876282 +9493872,0.14453832 +9493872,0 +9493896,0 +9493896,0.14876282 +9494046,0.14453832 +9494046,0 +9523284,0 +9523284,0.22948099 +9523302,0.22948099 +9523302,0 +9524022,0 +9524022,0.0061858781 +9524034,0.0061858781 +9524034,0 +9529902,0 +9529902,0.1585697 +9530172,0.1585697 +9530172,0 +9531168,0 +9531168,0.072269161 +9531204,0.072269161 +9531204,0 +9531282,0 +9531282,0.041339771 +9531288,0.041339771 +9531288,0 +9531396,0 +9531396,0.31382016 +9531420,0.31382016 +9531420,0 +9531474,0 +9531474,0.051750151 +9531516,0.26312613 +9531516,0 +9531528,0 +9531528,0.26312613 +9531540,0.051750151 +9531540,0 +9531630,0 +9531630,0.13714544 +9531654,0.13714544 +9531654,0 +9531732,0 +9531732,0.23853349 +9531924,0.34218467 +9531924,0 +9531930,0 +9531930,0.34218467 +9532050,0.23853349 +9532050,0 +9538980,0 +9538980,0.12764031 +9539178,0.12764031 +9539178,0 +9541668,0 +9541668,0.16038021 +9541680,0.16038021 +9541680,0 +9541782,0 +9541782,0.23627037 +9541788,0.23627037 +9541788,0 +9541902,0 +9541902,0.26222088 +9541938,0.26222088 +9541938,0 +9542016,0 +9542016,0.017501509 +9542022,0.017501509 +9542022,0 +9542238,0 +9542238,0.02942064 +9542244,0.02942064 +9542244,0 +9542352,0 +9542352,0.15147858 +9542394,0.058992154 +9542394,0 +9542418,0 +9542418,0.15147858 +9542454,0.058992154 +9542454,0 +9542472,0 +9542472,0.14423657 +9542484,0.14423657 +9542484,0 +9542586,0 +9542586,0.0063367532 +9542592,0.0063367532 +9542592,0 +9543618,0 +9543618,0.13986119 +9543654,0.13986119 +9543654,0 +9543738,0 +9543738,0.05944478 +9543768,0.05944478 +9543768,0 +9543852,0 +9543852,0.2045866 +9543948,0.2045866 +9543948,0 +9543966,0 +9543966,0.24668075 +9543978,0.24668075 +9543978,0 +9547020,0 +9547020,0.16882921 +9547044,0.16882921 +9547044,0 +9553530,0 +9553530,0.24230537 +9553608,0.24230537 +9553608,0 +9566136,0 +9566136,0.19960772 +9566142,0.19960772 +9566142,0 +9566250,0 +9566250,0.037869644 +9566256,0.037869644 +9566256,0 +9566364,0 +9566364,0.046620398 +9566394,0.046620398 +9566394,0 +9566478,0 +9566478,0.3414303 +9566538,0.047223899 +9566538,0 +9566544,0 +9566544,0 +9566544,0.3414303 +9566544,0.047223899 +9567864,0 +9567864,0.23129149 +9567870,0.23129149 +9567870,0 +9568572,0 +9568572,0.87326494 +9569076,0.87326494 +9569076,0 +9572760,0 +9572760,0.15042245 +9572790,0.15042245 +9572790,0 +9572874,0 +9572874,0.085546168 +9572880,0.085546168 +9572880,0 +9572904,0 +9572904,0.15328908 +9572976,0.15328908 +9572976,0 +9577536,0 +9577536,0.070307785 +9577542,0.070307785 +9577542,0 +9578016,0 +9578016,0.23974049 +9578082,0.23974049 +9578082,0 +9578604,0 +9578604,0.21288473 +9578670,0.21288473 +9578670,0 +9579192,0 +9579192,0.22767049 +9579276,0.22767049 +9579276,0 +9579774,0 +9579774,0.251207 +9579834,0.251207 +9579834,0 +9579924,0 +9579924,0.061104406 +9579930,0.061104406 +9579930,0 +9580362,0 +9580362,0.25331925 +9580452,0.25331925 +9580452,0 +9582594,0 +9582594,0.1446892 +9582630,0.1446892 +9582630,0 +9582714,0 +9582714,0.042395896 +9582720,0.042395896 +9582720,0 +9582768,0 +9582768,0.011013881 +9582774,0.011013881 +9582774,0 +9584418,0 +9584418,0.33162342 +9584994,0.33162342 +9584994,0 +9585744,0 +9585744,0.074079662 +9585822,0.074079662 +9585822,0 +9585864,0 +9585864,0.28530477 +9585912,0.28530477 +9585912,0 +9586254,0 +9586254,0.32287266 +9586740,0.32287266 +9586740,0 +9593016,0 +9593016,0.27791189 +9593118,0.27791189 +9593118,0 +9597474,0 +9597474,0.37251056 +9597588,0.37251056 +9597588,0 +9612744,0 +9612744,0.04043452 +9612750,0.04043452 +9612750,0 +9620016,0 +9620016,0.060199155 +9620022,0.060199155 +9620022,0 +9620130,0 +9620130,0.24562462 +9620148,0.24562462 +9620148,0 +9620244,0 +9620244,0.16792396 +9620286,0.16792396 +9620286,0 +9620364,0 +9620364,0.1543452 +9620376,0.1543452 +9620376,0 +9620478,0 +9620478,0.13352444 +9620484,0.13352444 +9620484,0 +9622860,0 +9622860,0.34158117 +9623064,0.34158117 +9623064,0 +9628014,0 +9628014,0.19055522 +9628110,0.19055522 +9628110,0 +9631620,0 +9631620,0.15932408 +9631686,0.15932408 +9631686,0 +9633684,0 +9633684,0.24954737 +9633690,0.24954737 +9633690,0 +9634338,0 +9634338,0.16400121 +9634356,0.16400121 +9634356,0 +9642186,0 +9642186,0.21273386 +9642234,0.21273386 +9642234,0 +9645246,0 +9645246,0.40283645 +9646020,0.40283645 +9646020,0 +9647076,0 +9647076,0.45866023 +9647736,0.45866023 +9647736,0 +9649344,0 +9649344,0.015841883 +9649356,0.015841883 +9649356,0 +9655476,0 +9655476,0.25890163 +9655584,0.25890163 +9655584,0 +9655596,0 +9655596,0.20654798 +9655650,0.20654798 +9655650,0 +9655932,0 +9655932,0.072118286 +9655938,0.072118286 +9655938,0 +9656988,0 +9656988,0.11677731 +9657108,0.12960169 +9657108,0 +9657114,0 +9657114,0.12960169 +9657138,0.11677731 +9657138,0 +9657624,0 +9657624,0.021726011 +9657630,0.021726011 +9657630,0 +9657744,0 +9657744,0.12009656 +9657762,0.12009656 +9657762,0 +9658218,0 +9658218,0.10817743 +9658236,0.10817743 +9658236,0 +9663282,0 +9663282,0.20428485 +9663294,0.20428485 +9663294,0 +9664986,0 +9664986,0.065479783 +9665064,0.065479783 +9665064,0 +9706908,0 +9706908,0.17365721 +9707022,0.15781533 +9707022,0 +9707064,0 +9707064,0.15781533 +9707142,0.22012674 +9707142,0 +9707148,0 +9707148,0.17365721 +9707190,0.22012674 +9707190,0 +9712104,0 +9712104,0.21077248 +9712194,0.21077248 +9712194,0 +9712686,0 +9712686,0.18482197 +9712746,0.18482197 +9712746,0 +9713274,0 +9713274,0.24245625 +9713340,0.24245625 +9713340,0 +9713862,0 +9713862,0.17094146 +9713934,0.17094146 +9713934,0 +9714450,0 +9714450,0.21514786 +9714522,0.21514786 +9714522,0 +9714660,0 +9714660,0.29345202 +9714684,0.29345202 +9714684,0 +9714774,0 +9714774,0.11888956 +9714786,0.11888956 +9714786,0 +9716274,0 +9716274,0.48747737 +9716736,0.48747737 +9716736,0 +9717324,0 +9717324,0.052957151 +9717330,0.052957151 +9717330,0 +9726000,0 +9726000,0.14906457 +9726006,0.14906457 +9726006,0 +9726114,0 +9726114,0.028515389 +9726216,0.028515389 +9726216,0 +9730374,0 +9730374,0.29677127 +9730392,0.29677127 +9730392,0 +9730494,0 +9730494,0.030778515 +9730500,0.030778515 +9730500,0 +9730608,0 +9730608,0.093844297 +9730614,0.093844297 +9730614,0 +9731688,0 +9731688,0.23068799 +9731766,0.23068799 +9731766,0 +9731802,0 +9731802,0.1519312 +9731856,0.1519312 +9731856,0 +9731916,0 +9731916,0.0078455039 +9731952,0.0078455039 +9731952,0 +9743916,0 +9743916,0.029873265 +9743922,0.029873265 +9743922,0 +9744030,0 +9744030,0.0075437538 +9744150,0.082377791 +9744150,0 +9744174,0 +9744174,0.0075437538 +9744180,0.082377791 +9744180,0 +9744264,0 +9744264,0.083433917 +9744270,0.083433917 +9744270,0 +9744378,0 +9744378,0.10757393 +9744498,0.10757393 +9744498,0 +9750408,0 +9750408,0.24969825 +9750474,0.24969825 +9750474,0 +9750954,0 +9750954,0.085395293 +9750960,0.085395293 +9750960,0 +9750996,0 +9750996,0.27066989 +9751068,0.2530175 +9751068,0 +9751074,0 +9751074,0.27066989 +9751182,0.33871454 +9751182,0 +9751206,0 +9751206,0.053409777 +9751212,0 +9751212,0 +9751212,0.053409777 +9751212,0.2530175 +9751224,0.33871454 +9751224,0 +9751584,0 +9751584,0.17441159 +9751668,0.17441159 +9751668,0 +9752172,0 +9752172,0.19447797 +9752250,0.19447797 +9752250,0 +9752760,0 +9752760,0.25573325 +9752874,0.25573325 +9752874,0 +9753342,0 +9753342,0.21544961 +9753480,0.21544961 +9753480,0 +9755064,0 +9755064,0.28771877 +9755124,0.28771877 +9755124,0 +9755184,0 +9755184,0.32377791 +9755286,0.32377791 +9755286,0 +9755298,0 +9755298,0.26252263 +9755304,0.26252263 +9755304,0 +9755412,0 +9755412,0.027459264 +9755418,0.027459264 +9755418,0 +9755532,0 +9755532,0.14876282 +9755550,0.14876282 +9755550,0 +9755646,0 +9755646,0.17471334 +9755706,0.17471334 +9755706,0 +9757026,0 +9757026,0.20926373 +9757032,0.20926373 +9757032,0 +9758232,0 +9758232,0.1567592 +9758238,0.1567592 +9758238,0 +9758796,0 +9758796,0.073928787 +9758802,0.073928787 +9758802,0 +9758910,0 +9758910,0.32076041 +9758928,0.32076041 +9758928,0 +9785370,0 +9785370,0.10380205 +9785490,0.10380205 +9785490,0 +9789462,0 +9789462,0.12447194 +9789498,0.12447194 +9789498,0 +9789576,0 +9789576,0.022329511 +9789636,0.022329511 +9789636,0 +9793122,0 +9793122,0.10304768 +9793128,0.10304768 +9793128,0 +9793242,0 +9793242,0.19885335 +9793350,0.19885335 +9793350,0 +9793932,0 +9793932,0.18059747 +9793974,0.18059747 +9793974,0 +9794004,0 +9794004,0.041188896 +9794028,0.041188896 +9794028,0 +9794052,0 +9794052,0.26523838 +9794124,0.26523838 +9794124,0 +9794166,0 +9794166,0.17486421 +9794178,0.17486421 +9794178,0 +9794280,0 +9794280,0.01041038 +9794286,0.01041038 +9794286,0 +9794880,0 +9794880,0.22042849 +9794898,0.22042849 +9794898,0 +9796476,0 +9796476,0.14378395 +9796482,0.14378395 +9796482,0 +9798990,0 +9798990,0.21243211 +9799140,0.073325287 +9799140,0 +9799152,0 +9799152,0.073325287 +9799242,0.21243211 +9799242,0 +9800574,0 +9800574,0.16656608 +9800652,0.16656608 +9800652,0 +9800694,0 +9800694,0.30461678 +9800766,0.30461678 +9800766,0 +9800808,0 +9800808,0.25226313 +9800838,0.25226313 +9800838,0 +9800922,0 +9800922,0.0015087508 +9800928,0.0015087508 +9800928,0 +9801042,0 +9801042,0.16369946 +9801066,0.16369946 +9801066,0 +9801156,0 +9801156,0.056879903 +9801162,0.056879903 +9801162,0 +9801270,0 +9801270,0.14665057 +9801348,0.14665057 +9801348,0 +9804828,0 +9804828,0.068346409 +9804882,0.068346409 +9804882,0 +9811014,0 +9811014,0.053560652 +9811020,0.053560652 +9811020,0 +9811128,0 +9811128,0.12703681 +9811158,0.12703681 +9811158,0 +9811242,0 +9811242,0.19206397 +9811272,0.19206397 +9811272,0 +9811362,0 +9811362,0.36949306 +9811368,0.36949306 +9811368,0 +9811476,0 +9811476,0.11059143 +9811542,0.11059143 +9811542,0 +9811590,0 +9811590,0.0066385033 +9811602,0.0066385033 +9811602,0 +9811710,0 +9811710,0.073023537 +9811716,0.073023537 +9811716,0 +9821772,0 +9821772,0.19945685 +9821802,0.19945685 +9821802,0 +9822072,0 +9822072,0.33660229 +9822132,0.33660229 +9822132,0 +9822168,0 +9822168,0.08026554 +9822252,0.08026554 +9822252,0 +9825576,0 +9825576,0.29767652 +9825606,0.29767652 +9825606,0 +9825690,0 +9825690,0.19221485 +9825756,0.19221485 +9825756,0 +9830412,0 +9830412,0.26146651 +9830424,0.26146651 +9830424,0 +9830430,0 +9830430,0.20956548 +9830448,0.20956548 +9830448,0 +9831486,0 +9831486,0.13971032 +9831612,0.13971032 +9831612,0 +9835572,0 +9835572,0.30778515 +9835596,0.30778515 +9835596,0 +9835656,0 +9835656,0.22088111 +9835728,0.22088111 +9835728,0 +9836244,0 +9836244,0.16822571 +9836340,0.16822571 +9836340,0 +9836832,0 +9836832,0.1907061 +9836922,0.1907061 +9836922,0 +9837336,0 +9837336,0.28907664 +9837384,0.28907664 +9837384,0 +9837420,0 +9837420,0.21952323 +9837450,0.058841279 +9837450,0 +9837480,0 +9837480,0.058841279 +9837492,0.21952323 +9837492,0 +9837564,0 +9837564,0.10153893 +9837618,0.10153893 +9837618,0 +9838008,0 +9838008,0.16038021 +9838146,0.16038021 +9838146,0 +9838188,0 +9838188,0.060500905 +9838194,0.060500905 +9838194,0 +9838590,0 +9838590,0.20896198 +9838692,0.20896198 +9838692,0 +9838824,0 +9838824,0.0067893784 +9838842,0.0067893784 +9838842,0 +9838938,0 +9838938,0.18059747 +9838944,0.18059747 +9838944,0 +9839052,0 +9839052,0.0075437538 +9839154,0.0075437538 +9839154,0 +9839172,0 +9839172,0.16898008 +9839178,0.16898008 +9839178,0 +9839286,0 +9839286,0.24140012 +9839298,0.24140012 +9839298,0 +9839400,0 +9839400,0.27398914 +9839406,0.27398914 +9839406,0 +9839520,0 +9839520,0.13865419 +9839586,0.13865419 +9839586,0 +9839634,0 +9839634,0.0075437538 +9839682,0.0075437538 +9839682,0 +9842364,0 +9842364,0.074834037 +9842388,0.074834037 +9842388,0 +9843408,0 +9843408,0.031985516 +9843456,0.031985516 +9843456,0 +9843522,0 +9843522,0.012371756 +9843642,0.012371756 +9843642,0 +9872094,0 +9872094,0.30778515 +9872574,0.30778515 +9872574,0 +9873924,0 +9873924,0.48491249 +9874542,0.48491249 +9874542,0 +9878130,0 +9878130,0.26569101 +9878220,0.26569101 +9878220,0 +9878244,0 +9878244,0.17833434 +9878262,0.17833434 +9878262,0 +9879030,0 +9879030,0.015389258 +9879036,0.015389258 +9879036,0 +9885012,0 +9885012,0.43044659 +9885180,0.12447194 +9885180,0 +9885216,0 +9885216,0.43044659 +9885348,0.12447194 +9885348,0 +9895518,0 +9895518,0.2039831 +9895566,0.2039831 +9895566,0 +9897096,0 +9897096,0.13895594 +9897108,0.13895594 +9897108,0 +9911952,0 +9911952,0.11587206 +9911964,0.11587206 +9911964,0 +9915942,0 +9915942,0.27051901 +9915954,0.27051901 +9915954,0 +9923190,0 +9923190,0.010863005 +9923196,0.010863005 +9923196,0 +9923304,0 +9923304,0.12251056 +9923310,0.12251056 +9923310,0 +9934758,0 +9934758,0.013126132 +9934776,0.013126132 +9934776,0 +9962844,0 +9962844,0.247586 +9962862,0.247586 +9962862,0 +9962964,0 +9962964,0.15147858 +9963030,0.15147858 +9963030,0 +9963078,0 +9963078,0.081321666 +9963090,0.081321666 +9963090,0 +9964926,0 +9964926,0.20262523 +9964992,0.20262523 +9964992,0 +9965070,0 +9965070,0.10757393 +9965076,0.10757393 +9965076,0 +9965220,0 +9965220,0.23974049 +9965274,0.23974049 +9965274,0 +9967320,0 +9967320,0.082679541 +9967338,0.082679541 +9967338,0 +9967434,0 +9967434,0.096560048 +9967500,0.096560048 +9967500,0 +9967554,0 +9967554,0.22948099 +9967566,0.22948099 +9967566,0 +9967650,0 +9967650,0.21348823 +9967722,0.21348823 +9967722,0 +9968238,0 +9968238,0.17079059 +9968346,0.17079059 +9968346,0 +9968826,0 +9968826,0.18059747 +9968898,0.18059747 +9968898,0 +9969414,0 +9969414,0.20428485 +9969492,0.20428485 +9969492,0 +9991458,0 +9991458,0.16611346 +9991476,0.16611346 +9991476,0 +9996924,0 +9996924,0.12160531 +9997062,0.12160531 +9997062,0 +9997254,0 +9997254,0.18919734 +9997266,0.18919734 +9997266,0 +9998058,0 +9998058,0.1495172 +9998130,0.1495172 +9998130,0 +10000758,0 +10000758,0.21137598 +10000764,0.21137598 +10000764,0 +10006992,0 +10006992,0.13608932 +10007046,0.13608932 +10007046,0 +10007112,0 +10007112,0.0490344 +10007238,0.0490344 +10007238,0 +10007640,0 +10007640,0.3420338 +10007652,0.3420338 +10007652,0 +10012110,0 +10012110,0.23219674 +10012122,0.23219674 +10012122,0 +10013370,0 +10013370,0.075286663 +10013418,0.075286663 +10013418,0 +10013490,0 +10013490,0.22223899 +10013508,0.22223899 +10013508,0 +10045410,0 +10045410,0.094146047 +10045428,0.094146047 +10045428,0 +10047870,0 +10047870,0.24140012 +10047924,0.24140012 +10047924,0 +10047990,0 +10047990,0.081774291 +10048104,0 +10048104,0 +10048104,0.061557031 +10048104,0.081774291 +10048110,0.061557031 +10048110,0 +10057776,0 +10057776,0.023385637 +10057854,0.023385637 +10057854,0 +10059780,0 +10059780,0.16867833 +10059792,0.16867833 +10059792,0 +10061832,0 +10061832,0.0076946288 +10062066,0.0076946288 +10062066,0 +10065054,0 +10065054,0.16158721 +10065060,0.16158721 +10065060,0 +10065798,0 +10065798,0.84837055 +10066176,0.84837055 +10066176,0 +10068018,0 +10068018,0.011617381 +10068024,0.011617381 +10068024,0 +10068132,0 +10068132,0.0073928787 +10068216,0.0073928787 +10068216,0 +10068252,0 +10068252,0.1477067 +10068372,0.1477067 +10068372,0 +10073844,0 +10073844,0.054918527 +10073850,0.054918527 +10073850,0 +10073958,0 +10073958,0.26357876 +10073976,0.26357876 +10073976,0 +10074072,0 +10074072,0.37190706 +10074096,0.37190706 +10074096,0 +10074192,0 +10074192,0.19643935 +10074210,0.19643935 +10074210,0 +10074306,0 +10074306,0.32407966 +10074366,0.32407966 +10074366,0 +10074420,0 +10074420,0.019764635 +10074426,0.019764635 +10074426,0 +10087878,0 +10087878,0.051750151 +10087884,0.051750151 +10087884,0 +10087992,0 +10087992,0.1022933 +10087998,0.1022933 +10087998,0 +10088100,0 +10088100,0.19417622 +10088112,0.19417622 +10088112,0 +10092498,0 +10092498,0.27383826 +10092534,0.27383826 +10092534,0 +10098618,0 +10098618,0.37537719 +10098690,0.37537719 +10098690,0 +10100916,0 +10100916,0.34640917 +10101672,0.34640917 +10101672,0 +10102320,0 +10102320,0.29571515 +10102386,0.29571515 +10102386,0 +10105602,0 +10105602,0.081774291 +10105614,0.081774291 +10105614,0 +10115076,0 +10115076,0.46590223 +10115136,0.46590223 +10115136,0 +10124382,0 +10124382,0.22435124 +10124436,0.22435124 +10124436,0 +10137510,0 +10137510,0.12869644 +10137582,0.12869644 +10137582,0 +10144710,0 +10144710,0.068799034 +10144830,0.068799034 +10144830,0 +10148892,0 +10148892,0.04933615 +10148982,0.04933615 +10148982,0 +10151490,0 +10151490,0.016747133 +10151532,0.016747133 +10151532,0 +10157910,0 +10157910,0.16445383 +10157928,0.16445383 +10157928,0 +10159662,0 +10159662,0.056125528 +10159668,0.056125528 +10159668,0 +10159776,0 +10159776,0.13261919 +10159836,0.13261919 +10159836,0 +10161690,0 +10161690,0.32619191 +10161708,0.32619191 +10161708,0 +10162128,0 +10162128,0.20669885 +10162140,0.20669885 +10162140,0 +10162242,0 +10162242,0.12718769 +10162248,0.12718769 +10162248,0 +10162950,0 +10162950,0.16068196 +10162962,0.16068196 +10162962,0 +10166550,0 +10166550,0.19342185 +10166562,0.19342185 +10166562,0 +10168182,0 +10168182,0.092184671 +10168380,0.092184671 +10168380,0 +10172934,0 +10172934,0.2978274 +10172976,0.2978274 +10172976,0 +10183548,0 +10183548,0.09957755 +10183578,0.09957755 +10183578,0 +10183662,0 +10183662,0.31457453 +10183668,0.31457453 +10183668,0 +10184640,0 +10184640,0.097917924 +10184658,0.097917924 +10184658,0 +10189344,0 +10189344,0.15660833 +10189374,0.15660833 +10189374,0 +10189464,0 +10189464,0.063367532 +10189488,0.063367532 +10189488,0 +10189578,0 +10189578,0.099426675 +10189614,0 +10189614,0 +10189614,0.038925769 +10189614,0.099426675 +10189632,0.038925769 +10189632,0 +10189692,0 +10189692,0.2421545 +10189710,0.2421545 +10189710,0 +10219896,0 +10219896,0.18089922 +10219914,0.18089922 +10219914,0 +10220010,0 +10220010,0.28575739 +10220040,0.28575739 +10220040,0 +10230474,0 +10230474,0.0073928787 +10230600,0.0073928787 +10230600,0 +10234338,0 +10234338,0.2954134 +10234356,0.2954134 +10234356,0 +10234452,0 +10234452,0.15585395 +10234470,0.15585395 +10234470,0 +10234572,0 +10234572,0.035304768 +10234578,0.035304768 +10234578,0 +10234686,0 +10234686,0.19659022 +10234704,0.19659022 +10234704,0 +10235136,0 +10235136,0.23974049 +10235166,0.23974049 +10235166,0 +10235442,0 +10235442,0.12175619 +10235526,0.12175619 +10235526,0 +10237356,0 +10237356,0.39091732 +10237434,0.39091732 +10237434,0 +10237656,0 +10237656,0.34414605 +10237758,0.34414605 +10237758,0 +10241814,0 +10241814,0.37658419 +10241886,0.37658419 +10241886,0 +10241892,0 +10241892,0.048430899 +10241910,0.048430899 +10241910,0 +10242108,0 +10242108,0.13820157 +10242162,0.13820157 +10242162,0 +10250046,0 +10250046,0.092788171 +10250052,0.092788171 +10250052,0 +10251918,0 +10251918,0.23868437 +10251924,0.23868437 +10251924,0 +10252032,0 +10252032,0.066535908 +10252038,0.066535908 +10252038,0 +10255032,0 +10255032,0.25165963 +10255104,0.25165963 +10255104,0 +10255332,0 +10255332,0.39091732 +10255398,0.39091732 +10255398,0 +10256418,0 +10256418,0.22797224 +10256502,0.22797224 +10256502,0 +10256532,0 +10256532,0.10878093 +10256592,0.10878093 +10256592,0 +10256652,0 +10256652,0.040283645 +10256664,0.040283645 +10256664,0 +10259406,0 +10259406,0.06035003 +10259412,0.06035003 +10259412,0 +10259526,0 +10259526,0.1035003 +10259568,0.1035003 +10259568,0 +10259640,0 +10259640,0.16128546 +10259784,0.16128546 +10259784,0 +10260630,0 +10260630,0.084640917 +10260672,0.084640917 +10260672,0 +10261086,0 +10261086,0.34852142 +10261140,0.34852142 +10261140,0 +10261206,0 +10261206,0.073174412 +10261260,0.073174412 +10261260,0 +10261320,0 +10261320,0.17939046 +10261332,0.17939046 +10261332,0 +10261434,0 +10261434,0.10636693 +10261446,0.10636693 +10261446,0 +10262706,0 +10262706,0.0024140012 +10262712,0.0024140012 +10262712,0 +10262820,0 +10262820,0.3098974 +10262832,0.3098974 +10262832,0 +10271460,0 +10271460,0.014936632 +10271586,0.014936632 +10271586,0 +10274010,0 +10274010,0.0087507544 +10274022,0.0087507544 +10274022,0 +10276800,0 +10276800,0.05974653 +10276860,0.05974653 +10276860,0 +10276914,0 +10276914,0.25950513 +10276920,0.25950513 +10276920,0 +10277922,0 +10277922,0.27368739 +10278252,0.27368739 +10278252,0 +10280598,0 +10280598,0.17033796 +10280778,0.17033796 +10280778,0 +10306866,0 +10306866,0.04933615 +10306872,0.04933615 +10306872,0 +10306980,0 +10306980,0.095503923 +10306998,0.095503923 +10306998,0 +10307100,0 +10307100,0.16550996 +10307148,0.4073627 +10307148,0 +10307154,0 +10307154,0.4073627 +10307190,0.16550996 +10307190,0 +10307268,0 +10307268,0.1561557 +10307316,0.1561557 +10307316,0 +10307382,0 +10307382,0.20141823 +10307418,0.20141823 +10307418,0 +10307496,0 +10307496,0.031231141 +10307502,0.031231141 +10307502,0 +10307520,0 +10307520,0.0082981291 +10307532,0.0082981291 +10307532,0 +10307640,0 +10307640,0.22299336 +10307676,0.22299336 +10307676,0 +10308090,0 +10308090,0.0073928787 +10308192,0.0073928787 +10308192,0 +10308204,0 +10308204,0.18029572 +10308234,0.18029572 +10308234,0 +10308324,0 +10308324,0.28545564 +10308432,0.28545564 +10308432,0 +10311102,0 +10311102,0.01931201 +10311150,0.01931201 +10311150,0 +10318392,0 +10318392,0.33222692 +10318578,0.33222692 +10318578,0 +10319580,0 +10319580,0.18693422 +10319700,0.0006035003 +10319700,0 +10319706,0 +10319706,0 +10319706,0.18693422 +10319706,0.0006035003 +10319814,0 +10319814,0.15766445 +10319832,0.15766445 +10319832,0 +10330410,0 +10330410,0.19568497 +10330566,0.19568497 +10330566,0 +10330992,0 +10330992,0.22525649 +10331112,0.22525649 +10331112,0 +10331580,0 +10331580,0.21952323 +10331616,0.0998793 +10331616,0 +10331658,0 +10331658,0.21952323 +10331670,0.0998793 +10331670,0 +10331736,0 +10331736,0.088261919 +10331844,0.088261919 +10331844,0 +10332114,0 +10332114,0.16369946 +10332132,0.16369946 +10332132,0 +10332168,0 +10332168,0.15298733 +10332228,0.0069402535 +10332228,0 +10332264,0 +10332264,0.0069402535 +10332276,0.15298733 +10332276,0 +10332342,0 +10332342,0.28862402 +10332348,0.28862402 +10332348,0 +10332756,0 +10332756,0.22435124 +10332840,0.22435124 +10332840,0 +10333044,0 +10333044,0.036662643 +10333116,0.036662643 +10333116,0 +10333158,0 +10333158,0.023687387 +10333164,0.023687387 +10333164,0 +10338942,0 +10338942,0.074532287 +10338948,0.074532287 +10338948,0 +10339530,0 +10339530,0.29390465 +10339542,0.29390465 +10339542,0 +10339644,0 +10339644,0.18693422 +10339686,0.18693422 +10339686,0 +10339764,0 +10339764,0.19704285 +10339788,0.19704285 +10339788,0 +10339878,0 +10339878,0.075890163 +10339980,0.075890163 +10339980,0 +10343298,0 +10343298,0.17697646 +10343340,0.17697646 +10343340,0 +10349070,0 +10349070,0.1561557 +10349112,0.1561557 +10349112,0 +10353198,0 +10353198,0.34957755 +10353216,0.34957755 +10353216,0 +10354596,0 +10354596,0.23717562 +10354644,0.23717562 +10354644,0 +10355430,0 +10355430,0.078756789 +10355508,0.078756789 +10355508,0 +10355544,0 +10355544,0.33192517 +10355562,0.33192517 +10355562,0 +10355664,0 +10355664,0.16581171 +10355760,0.16581171 +10355760,0 +10357830,0 +10357830,0.034399517 +10357890,0.034399517 +10357890,0 +10361466,0 +10361466,0.31547978 +10361934,0.31547978 +10361934,0 +10362360,0 +10362360,0.19462885 +10362378,0.19462885 +10362378,0 +10373058,0 +10373058,0.20066385 +10373130,0.20066385 +10373130,0 +10375284,0 +10375284,0.33177429 +10375314,0.33177429 +10375314,0 +10375404,0 +10375404,0.25633675 +10375440,0.25633675 +10375440,0 +10391208,0 +10391208,0.18738684 +10391280,0.18738684 +10391280,0 +10397124,0 +10397124,0.0502414 +10397130,0.0502414 +10397130,0 +10397244,0 +10397244,0.15811708 +10397274,0.15811708 +10397274,0 +10397358,0 +10397358,0.10380205 +10397406,0.10380205 +10397406,0 +10404960,0 +10404960,0.16807483 +10405008,0.16807483 +10405008,0 +10411398,0 +10411398,0.21167773 +10411404,0.21167773 +10411404,0 +10411512,0 +10411512,0.23083887 +10411524,0.23083887 +10411524,0 +10415400,0 +10415400,0.25271575 +10415484,0.25271575 +10415484,0 +10415766,0 +10415766,0.12085094 +10415802,0.12085094 +10415802,0 +10419696,0 +10419696,0.28364514 +10419738,0.28364514 +10419738,0 +10419858,0 +10419858,0.30718165 +10419918,0.30718165 +10419918,0 +10431492,0 +10431492,0.21047073 +10431546,0.21047073 +10431546,0 +10435248,0 +10435248,0.11511768 +10435260,0.11511768 +10435260,0 +10435896,0 +10435896,0.22963186 +10435950,0.22963186 +10435950,0 +10436010,0 +10436010,0.33494267 +10436058,0.33494267 +10436058,0 +10436124,0 +10436124,0.25075438 +10436232,0.25075438 +10436232,0 +10436244,0 +10436244,0.14197345 +10436274,0.14197345 +10436274,0 +10436526,0 +10436526,0.068497284 +10436532,0.068497284 +10436532,0 +10436646,0 +10436646,0.23400724 +10436682,0.23400724 +10436682,0 +10436760,0 +10436760,0.16219071 +10436814,0.16219071 +10436814,0 +10437216,0 +10437216,0.28832227 +10437336,0.28832227 +10437336,0 +10437822,0 +10437822,0.26855763 +10437828,0.26855763 +10437828,0 +10438416,0 +10438416,0.10817743 +10438434,0.10817743 +10438434,0 +10438530,0 +10438530,0.1428787 +10438578,0.1428787 +10438578,0 +10444302,0 +10444302,0.068949909 +10444338,0.068949909 +10444338,0 +10445670,0 +10445670,0.0075437538 +10445748,0.0075437538 +10445748,0 +10445784,0 +10445784,0.19779722 +10445796,0.19779722 +10445796,0 +10481934,0 +10481934,0.1561557 +10482018,0.1561557 +10482018,0 +10485036,0 +10485036,0.16264333 +10485042,0.16264333 +10485042,0 +10486392,0 +10486392,0.41988533 +10486464,0.41988533 +10486464,0 +10488330,0 +10488330,0.091732046 +10488390,0.091732046 +10488390,0 +10491036,0 +10491036,0.025799638 +10491054,0.025799638 +10491054,0 +10491150,0 +10491150,0.28198552 +10491168,0.28198552 +10491168,0 +10491270,0 +10491270,0.12009656 +10491324,0.12009656 +10491324,0 +10493448,0 +10493448,0.0024140012 +10493454,0.0024140012 +10493454,0 +10497426,0 +10497426,0.41188896 +10497900,0.41188896 +10497900,0 +10499262,0 +10499262,0.43617984 +10499676,0.43617984 +10499676,0 +10499910,0 +10499910,0.12628244 +10499916,0.12628244 +10499916,0 +10508808,0 +10508808,0.23974049 +10508928,0.23974049 +10508928,0 +10512126,0 +10512126,0.19281835 +10512240,0.10500905 +10512240,0 +10512246,0 +10512246,0.19281835 +10512276,0.10500905 +10512276,0 +10521468,0 +10521468,0.044960772 +10521474,0.044960772 +10521474,0 +10521582,0 +10521582,0.21575136 +10521654,0.21575136 +10521654,0 +10524510,0 +10524510,0.16611346 +10524594,0.16611346 +10524594,0 +10524624,0 +10524624,0.010561255 +10524684,0.010561255 +10524684,0 +10525554,0 +10525554,0.10455643 +10525590,0.10455643 +10525590,0 +10525896,0 +10525896,0.12326494 +10525926,0.12326494 +10525926,0 +10528686,0 +10528686,0.076191913 +10528710,0.076191913 +10528710,0 +10533660,0 +10533660,0.15585395 +10533678,0.15585395 +10533678,0 +10533774,0 +10533774,0.33388654 +10533828,0.33388654 +10533828,0 +10568790,0 +10568790,0.40660833 +10569174,0.40660833 +10569174,0 +10581798,0 +10581798,0.20006035 +10581852,0.20006035 +10581852,0 +10586064,0 +10586064,0.14559445 +10586112,0.14559445 +10586112,0 +10590156,0 +10590156,0.11783343 +10590240,0.11783343 +10590240,0 +10590270,0 +10590270,0.17742909 +10590288,0.17742909 +10590288,0 +10595412,0 +10595412,0.20624623 +10595448,0.20624623 +10595448,0 +10595532,0 +10595532,0.18995172 +10595664,0.18995172 +10595664,0 +10607610,0 +10607610,0.40027158 +10607616,0.40027158 +10607616,0 +10607730,0 +10607730,0.14785757 +10607742,0.14785757 +10607742,0 +10608630,0 +10608630,0.14453832 +10608696,0.14453832 +10608696,0 +10608744,0 +10608744,0.14257695 +10608786,0.14257695 +10608786,0 +10612194,0 +10612194,0.31200966 +10612224,0.31200966 +10612224,0 +10612308,0 +10612308,0.086451418 +10612344,0.086451418 +10612344,0 +10612422,0 +10612422,0.037266144 +10612428,0.037266144 +10612428,0 +10615824,0 +10615824,0.33599879 +10616022,0.33599879 +10616022,0 +10617912,0 +10617912,0.19583585 +10617978,0.19583585 +10617978,0 +10653918,0 +10653918,0.46258298 +10654002,0.46258298 +10654002,0 +10654218,0 +10654218,0.28183464 +10654224,0.28183464 +10654224,0 +10654518,0 +10654518,0.24305975 +10654578,0.24305975 +10654578,0 +10658436,0 +10658436,0.29828002 +10658478,0.29828002 +10658478,0 +10658550,0 +10658550,0.23596862 +10658568,0.23596862 +10658568,0 +10665510,0 +10665510,0.17999396 +10665534,0.17999396 +10665534,0 +10669770,0 +10669770,0.095654798 +10669794,0.095654798 +10669794,0 +10669890,0 +10669890,0.14091732 +10669908,0.14091732 +10669908,0 +10670004,0 +10670004,0.0076946288 +10670040,0.0076946288 +10670040,0 +10670664,0 +10670664,0.22374774 +10670724,0.22374774 +10670724,0 +10675044,0 +10675044,0.33856367 +10675104,0.33856367 +10675104,0 +10686258,0 +10686258,0.34097767 +10686336,0.34097767 +10686336,0 +10686378,0 +10686378,0.093391672 +10686390,0.093391672 +10686390,0 +10688964,0 +10688964,0.087507544 +10688970,0.087507544 +10688970,0 +10690980,0 +10690980,0.26433313 +10691484,0.26433313 +10691484,0 +10699008,0 +10699008,0.31200966 +10699014,0.31200966 +10699014,0 +10702512,0 +10702512,0.0073928787 +10702578,0.0073928787 +10702578,0 +10702626,0 +10702626,0.063216657 +10702632,0.063216657 +10702632,0 +10703778,0 +10703778,0.058539529 +10703784,0.058539529 +10703784,0 +10730280,0 +10730280,0.37432106 +10730844,0.37432106 +10730844,0 +10732116,0 +10732116,0.36315631 +10732686,0.36315631 +10732686,0 +10736436,0 +10736436,0.18964997 +10736490,0.18964997 +10736490,0 +10737906,0 +10737906,0.091732046 +10737918,0.091732046 +10737918,0 +10740768,0 +10740768,0.1501207 +10740882,0.1501207 +10740882,0 +10744332,0 +10744332,0.13080869 +10744428,0.13080869 +10744428,0 +10746180,0 +10746180,0.11345806 +10746198,0.11345806 +10746198,0 +10746630,0 +10746630,0.12990344 +10746672,0.12990344 +10746672,0 +10750494,0 +10750494,0.10334943 +10750542,0.10334943 +10750542,0 +10750608,0 +10750608,0.16581171 +10750710,0.16581171 +10750710,0 +10750824,0 +10750824,0.027006639 +10750842,0.027006639 +10750842,0 +10750938,0 +10750938,0.0073928787 +10750992,0.0073928787 +10750992,0 +10755372,0 +10755372,0.38261919 +10755426,0.24803862 +10755426,0 +10755486,0 +10755486,0.24803862 +10755624,0.38261919 +10755624,0 +10760274,0 +10760274,0.03062764 +10760280,0.03062764 +10760280,0 +10761510,0 +10761510,0.27051901 +10761528,0.27051901 +10761528,0 +10761624,0 +10761624,0.13925769 +10761696,0.13925769 +10761696,0 +10761738,0 +10761738,0.24562462 +10761774,0.24562462 +10761774,0 +10761858,0 +10761858,0.09957755 +10761864,0.09957755 +10761864,0 +10763610,0 +10763610,0.12929994 +10763616,0.12929994 +10763616,0 +10768428,0 +10768428,0.053409777 +10768434,0.053409777 +10768434,0 +10771206,0 +10771206,0.22525649 +10771242,0.22525649 +10771242,0 +10775586,0 +10775586,0.035003018 +10775592,0.035003018 +10775592,0 +10775700,0 +10775700,0.35365118 +10775742,0.35365118 +10775742,0 +10775814,0 +10775814,0.13126132 +10775844,0.13126132 +10775844,0 +10775928,0 +10775928,0.31713941 +10776048,0.27896801 +10776048,0 +10776120,0 +10776120,0.31713941 +10776144,0.27896801 +10776144,0 +10776336,0 +10776336,0.12688594 +10776342,0.12688594 +10776342,0 +10776450,0 +10776450,0.23370549 +10776498,0.23370549 +10776498,0 +10776570,0 +10776570,0.07966204 +10776612,0.07966204 +10776612,0 +10776666,0 +10776666,0.0061858781 +10776672,0.0061858781 +10776672,0 +10780470,0 +10780470,0.18814122 +10780518,0.18814122 +10780518,0 +10780566,0 +10780566,0.0072420036 +10780590,0.0072420036 +10780590,0 +10781760,0 +10781760,0.095654798 +10781796,0.095654798 +10781796,0 +10783470,0 +10783470,0.27881714 +10783512,0.27881714 +10783512,0 +10784892,0 +10784892,0.0033192517 +10784898,0.0033192517 +10784898,0 +10787196,0 +10787196,0.32211829 +10787232,0.32211829 +10787232,0 +10787496,0 +10787496,0.17954134 +10787544,0.17954134 +10787544,0 +10790424,0 +10790424,0.16430296 +10790478,0.16430296 +10790478,0 +10797654,0 +10797654,0.045413398 +10797660,0.045413398 +10797660,0 +10798254,0 +10798254,0.042999396 +10798260,0.042999396 +10798260,0 +10798374,0 +10798374,0.015389258 +10798380,0.015389258 +10798380,0 +10798488,0 +10798488,0.16641521 +10798536,0.16641521 +10798536,0 +10798602,0 +10798602,0.17290284 +10798614,0.17290284 +10798614,0 +10820628,0 +10820628,0.13774894 +10820640,0.13774894 +10820640,0 +10823232,0 +10823232,0.01931201 +10823238,0.01931201 +10823238,0 +10824042,0 +10824042,0.45021123 +10824264,0.45021123 +10824264,0 +10825068,0 +10825068,0.47948099 +10825764,0.47948099 +10825764,0 +10834536,0 +10834536,0.13322269 +10834548,0.13322269 +10834548,0 +10835490,0 +10835490,0.03062764 +10835496,0.03062764 +10835496,0 +10835610,0 +10835610,0.20066385 +10835622,0.20066385 +10835622,0 +10835724,0 +10835724,0.24834037 +10835766,0.24834037 +10835766,0 +10835838,0 +10835838,0.20111648 +10835844,0.20111648 +10835844,0 +10835958,0 +10835958,0.16385033 +10835976,0.16385033 +10835976,0 +10836072,0 +10836072,0.15283645 +10836186,0.17984309 +10836186,0 +10836246,0 +10836246,0.17984309 +10836306,0.14559445 +10836306,0 +10836378,0 +10836378,0.14559445 +10836408,0.15283645 +10836408,0 +10836420,0 +10836420,0.062613156 +10836426,0.062613156 +10836426,0 +10836534,0 +10836534,0.038925769 +10836546,0.038925769 +10836546,0 +10836648,0 +10836648,0.1047073 +10836654,0.1047073 +10836654,0 +10836768,0 +10836768,0.241551 +10836792,0.241551 +10836792,0 +10836882,0 +10836882,0.07936029 +10836888,0.07936029 +10836888,0 +10837650,0 +10837650,0.11602293 +10837668,0.11602293 +10837668,0 +10837764,0 +10837764,0.22525649 +10837788,0.22525649 +10837788,0 +10842120,0 +10842120,0.32558841 +10842210,0.20247435 +10842210,0 +10842216,0 +10842216,0.20247435 +10842384,0.095805673 +10842384,0 +10842408,0 +10842408,0.095805673 +10842510,0.25935425 +10842510,0 +10842528,0 +10842528,0.32558841 +10842576,0.25935425 +10842576,0 +10842996,0 +10842996,0.48611949 +10843002,0.48611949 +10843002,0 +10844814,0 +10844814,0.18346409 +10844838,0.18346409 +10844838,0 +10847454,0 +10847454,0.37914906 +10847484,0.37914906 +10847484,0 +10849698,0 +10849698,0.12929994 +10849770,0.12929994 +10849770,0 +10851906,0 +10851906,0.28002414 +10851924,0.28002414 +10851924,0 +10855428,0 +10855428,0.26267351 +10855488,0.26267351 +10855488,0 +10855878,0 +10855878,0.1907061 +10855944,0.1907061 +10855944,0 +10856016,0 +10856016,0.18074834 +10856070,0.18074834 +10856070,0 +10856460,0 +10856460,0.16098371 +10856556,0.16098371 +10856556,0 +10856604,0 +10856604,0.27761014 +10856664,0.27761014 +10856664,0 +10857192,0 +10857192,0.20911285 +10857258,0.20911285 +10857258,0 +10857780,0 +10857780,0.17003621 +10857852,0.17003621 +10857852,0 +10863474,0 +10863474,0.13427882 +10863504,0.13427882 +10863504,0 +10870116,0 +10870116,0.18014484 +10870194,0.29631865 +10870194,0 +10870218,0 +10870218,0.29631865 +10870230,0.24185275 +10870230,0 +10870236,0 +10870236,0.24185275 +10870248,0.18014484 +10870248,0 +10870668,0 +10870668,0.33750754 +10870722,0.33750754 +10870722,0 +10870758,0 +10870758,0.19176222 +10870764,0.19176222 +10870764,0 +10872696,0 +10872696,0.012220881 +10872702,0.012220881 +10872702,0 +10876098,0 +10876098,0.041038021 +10876122,0.041038021 +10876122,0 +10876218,0 +10876218,0.19327097 +10876284,0.19327097 +10876284,0 +10876332,0 +10876332,0.15464695 +10876350,0.15464695 +10876350,0 +10876446,0 +10876446,0.13367532 +10876518,0.13367532 +10876518,0 +10876560,0 +10876560,0.042697646 +10876566,0.042697646 +10876566,0 +10876680,0 +10876680,0.015087508 +10876704,0.015087508 +10876704,0 +10877124,0 +10877124,0.0070911285 +10877154,0.0070911285 +10877154,0 +10879254,0 +10879254,0.1507242 +10879368,0.076041038 +10879368,0 +10879386,0 +10879386,0.1507242 +10879428,0.076041038 +10879428,0 +10879482,0 +10879482,0.087658419 +10879614,0.087658419 +10879614,0 +10882356,0 +10882356,0.0051297526 +10882362,0.0051297526 +10882362,0 +10893690,0 +10893690,0.13292094 +10893696,0.13292094 +10893696,0 +10893804,0 +10893804,0.22676524 +10893822,0.22676524 +10893822,0 +10910412,0 +10910412,0.28681352 +10910634,0.28681352 +10910634,0 +10912104,0 +10912104,0.22751961 +10912110,0.22751961 +10912110,0 +10912752,0 +10912752,0.13126132 +10912770,0.13126132 +10912770,0 +10912866,0 +10912866,0.016747133 +10912884,0.016747133 +10912884,0 +10914822,0 +10914822,0.057785154 +10914864,0.057785154 +10914864,0 +10914936,0 +10914936,0.085093543 +10914942,0.085093543 +10914942,0 +10917954,0 +10917954,0.16143633 +10918008,0.16143633 +10918008,0 +10918068,0 +10918068,0.1913096 +10918080,0.1913096 +10918080,0 +10918182,0 +10918182,0.22978274 +10918200,0.22978274 +10918200,0 +10918302,0 +10918302,0.0073928787 +10918314,0.0073928787 +10918314,0 +10919340,0 +10919340,0.15223295 +10919364,0.15223295 +10919364,0 +10921356,0 +10921356,0.3934822 +10921830,0.3934822 +10921830,0 +10922040,0 +10922040,0.13820157 +10922058,0.13820157 +10922058,0 +10928316,0 +10928316,0.14197345 +10928322,0.14197345 +10928322,0 +10937028,0 +10937028,0.13141219 +10937034,0.13141219 +10937034,0 +10937142,0 +10937142,0.0096560048 +10937148,0.0096560048 +10937148,0 +10937256,0 +10937256,0.38307182 +10937262,0.38307182 +10937262,0 +10937376,0 +10937376,0.14484007 +10937388,0.14484007 +10937388,0 +10939782,0 +10939782,0.0992758 +10939806,0.0992758 +10939806,0 +10939896,0 +10939896,0.14076645 +10939944,0.14076645 +10939944,0 +10947786,0 +10947786,0.256035 +10947846,0.256035 +10947846,0 +10956132,0 +10956132,0.036059143 +10956138,0.036059143 +10956138,0 +10959324,0 +10959324,0.021726011 +10959330,0.021726011 +10959330,0 +10989534,0 +10989534,0.44598672 +10989606,0.44598672 +10989606,0 +10990692,0 +10990692,0.14846107 +10990704,0.14846107 +10990704,0 +10993992,0 +10993992,0.39302957 +10994070,0.39302957 +10994070,0 +11002932,0 +11002932,0.29133977 +11002980,0.29133977 +11002980,0 +11003046,0 +11003046,0.093542547 +11003052,0.093542547 +11003052,0 +11003166,0 +11003166,0.26840676 +11003202,0.26840676 +11003202,0 +11003280,0 +11003280,0.23596862 +11003328,0.23596862 +11003328,0 +11003394,0 +11003394,0.33765842 +11003448,0.33765842 +11003448,0 +11005494,0 +11005494,0.25573325 +11005530,0.25573325 +11005530,0 +11006838,0 +11006838,0.23280024 +11006892,0.23280024 +11006892,0 +11012454,0 +11012454,0.016898008 +11012460,0.016898008 +11012460,0 +11012568,0 +11012568,0.31970428 +11012676,0.31970428 +11012676,0 +11012682,0 +11012682,0.0081472541 +11012700,0.0081472541 +11012700,0 +11012802,0 +11012802,0.26327701 +11012826,0.26327701 +11012826,0 +11012916,0 +11012916,0.27383826 +11012934,0.27383826 +11012934,0 +11030322,0 +11030322,0.27142426 +11030334,0.27142426 +11030334,0 +11031060,0 +11031060,0.062462281 +11031180,0.089921545 +11031180,0 +11031186,0 +11031186,0.062462281 +11031192,0.089921545 +11031192,0 +11031294,0 +11031294,0.13292094 +11031336,0.13292094 +11031336,0 +11031408,0 +11031408,0.13910682 +11031462,0.13910682 +11031462,0 +11031984,0 +11031984,0.21484611 +11031996,0.21484611 +11031996,0 +11032104,0 +11032104,0.16882921 +11032218,0.16882921 +11032218,0 +11037822,0 +11037822,0.093542547 +11037834,0.093542547 +11037834,0 +11040594,0 +11040594,0.0085998793 +11040606,0.0085998793 +11040606,0 +11040708,0 +11040708,0.15841883 +11040762,0.15841883 +11040762,0 +11041854,0 +11041854,0.14152082 +11041866,0.14152082 +11041866,0 +11041968,0 +11041968,0.14544357 +11041986,0.14544357 +11041986,0 +11042088,0 +11042088,0.10274593 +11042148,0.10274593 +11042148,0 +11047782,0 +11047782,0.31397103 +11047794,0.31397103 +11047794,0 +11047896,0 +11047896,0.13639107 +11047914,0.13639107 +11047914,0 +11049378,0 +11049378,0.25347013 +11049396,0.25347013 +11049396,0 +11049942,0 +11049942,0.12990344 +11050050,0.12990344 +11050050,0 +11056116,0 +11056116,0.15962583 +11056122,0.15962583 +11056122,0 +11085510,0 +11085510,0.13005432 +11085606,0.13005432 +11085606,0 +11085624,0 +11085624,0.027157514 +11085630,0.027157514 +11085630,0 +11085738,0 +11085738,0.21786361 +11085756,0.21786361 +11085756,0 +11085858,0 +11085858,0.19764635 +11085882,0.19764635 +11085882,0 +11086194,0 +11086194,0.17033796 +11086200,0.17033796 +11086200,0 +11091318,0 +11091318,0.062160531 +11091324,0.062160531 +11091324,0 +11091432,0 +11091432,0.09957755 +11091468,0.09957755 +11091468,0 +11091546,0 +11091546,0.18225709 +11091570,0.18225709 +11091570,0 +11092548,0 +11092548,0.1446892 +11092566,0.1446892 +11092566,0 +11092800,0 +11092800,0.007996379 +11092806,0.007996379 +11092806,0 +11094162,0 +11094162,0.18059747 +11094174,0.18059747 +11094174,0 +11098098,0 +11098098,0.43693422 +11098158,0.43693422 +11098158,0 +11100276,0 +11100276,0.13910682 +11100282,0.13910682 +11100282,0 +11100546,0 +11100546,0.36994568 +11100564,0.36994568 +11100564,0 +11102556,0 +11102556,0.48808087 +11102646,0.48808087 +11102646,0 +11107008,0 +11107008,0.21062161 +11107086,0.21062161 +11107086,0 +11113716,0 +11113716,0.35817743 +11113788,0.35817743 +11113788,0 +11122710,0 +11122710,0.086904043 +11122836,0.086904043 +11122836,0 +11124048,0 +11124048,0.30220278 +11124060,0.30220278 +11124060,0 +11124162,0 +11124162,0.14981895 +11124168,0.14981895 +11124168,0 +11126880,0 +11126880,0.29918527 +11126898,0.29918527 +11126898,0 +11128644,0 +11128644,0.21213036 +11128758,0.21213036 +11128758,0 +11129232,0 +11129232,0.19025347 +11129322,0.19025347 +11129322,0 +11129820,0 +11129820,0.23370549 +11129916,0.23370549 +11129916,0 +11139738,0 +11139738,0.18783947 +11139750,0.18783947 +11139750,0 +11139852,0 +11139852,0.098672299 +11139864,0.098672299 +11139864,0 +11139972,0 +11139972,0.12673506 +11140020,0.12673506 +11140020,0 +11140086,0 +11140086,0.11028968 +11140104,0.11028968 +11140104,0 +11151702,0 +11151702,0.2978274 +11151714,0.2978274 +11151714,0 +11151822,0 +11151822,0.29330115 +11151900,0.29330115 +11151900,0 +11168070,0 +11168070,0.3074834 +11168340,0.3074834 +11168340,0 +11172072,0 +11172072,0.24170187 +11172144,0.24170187 +11172144,0 +11172186,0 +11172186,0.098672299 +11172192,0.098672299 +11172192,0 +11180454,0 +11180454,0.16143633 +11180514,0.16143633 +11180514,0 +11183388,0 +11183388,0.054315027 +11183394,0.054315027 +11183394,0 +11184270,0 +11184270,0.32920941 +11184624,0.32920941 +11184624,0 +11186100,0 +11186100,0.40630658 +11186700,0.40630658 +11186700,0 +11192790,0 +11192790,0.30823778 +11192850,0.30823778 +11192850,0 +11192904,0 +11192904,0.0078455039 +11192964,0.0078455039 +11192964,0 +11193018,0 +11193018,0.19508147 +11193036,0.19508147 +11193036,0 +11193132,0 +11193132,0.078304164 +11193162,0.078304164 +11193162,0 +11193252,0 +11193252,0.14302957 +11193366,0 +11193366,0 +11193366,0.14302957 +11193366,0.20896198 +11193474,0.20896198 +11193474,0 +11194128,0 +11194128,0.21333736 +11194224,0.21333736 +11194224,0 +11194392,0 +11194392,0.036059143 +11194398,0.036059143 +11194398,0 +11196168,0 +11196168,0.28334339 +11196180,0.28334339 +11196180,0 +11211642,0 +11211642,0.14484007 +11211666,0.14484007 +11211666,0 +11211756,0 +11211756,0.048280024 +11211762,0.048280024 +11211762,0 +11217690,0 +11217690,0.13925769 +11217756,0.13925769 +11217756,0 +11217804,0 +11217804,0.28937839 +11217810,0.28937839 +11217810,0 +11218572,0 +11218572,0.17546771 +11218632,0.17546771 +11218632,0 +11218692,0 +11218692,0.33901629 +11218710,0.33901629 +11218710,0 +11218806,0 +11218806,0.10938443 +11218866,0.10938443 +11218866,0 +11218920,0 +11218920,0.17290284 +11218962,0.17290284 +11218962,0 +11219040,0 +11219040,0.012673506 +11219046,0.012673506 +11219046,0 +11225442,0 +11225442,0.3068799 +11225484,0.3068799 +11225484,0 +11227518,0 +11227518,0.15223295 +11227524,0.15223295 +11227524,0 +11229642,0 +11229642,0.18225709 +11229672,0.18225709 +11229672,0 +11229756,0 +11229756,0.1501207 +11229798,0.1501207 +11229798,0 +11263296,0 +11263296,0.49290887 +11263860,0.49290887 +11263860,0 +11268918,0 +11268918,0.18346409 +11269026,0.18346409 +11269026,0 +11269038,0 +11269038,0.24170187 +11269098,0.24170187 +11269098,0 +11269152,0 +11269152,0.012371756 +11269158,0.012371756 +11269158,0 +11270220,0 +11270220,0.38578757 +11270688,0.38578757 +11270688,0 +11272152,0 +11272152,0.097616174 +11272212,0.097616174 +11272212,0 +11272272,0 +11272272,0.19266747 +11272278,0.19266747 +11272278,0 +11272386,0 +11272386,0.18436934 +11272398,0.18436934 +11272398,0 +11274222,0 +11274222,0.30280628 +11274306,0.30280628 +11274306,0 +11282052,0 +11282052,0.21756186 +11282064,0.21756186 +11282064,0 +11285544,0 +11285544,0.12371756 +11285586,0.12371756 +11285586,0 +11285658,0 +11285658,0.34490042 +11285682,0.34490042 +11285682,0 +11289402,0 +11289402,0.099728425 +11289432,0.099728425 +11289432,0 +11295516,0 +11295516,0.013427882 +11295588,0.013427882 +11295588,0 +11297406,0 +11297406,0.0098068799 +11297448,0.0098068799 +11297448,0 +11297520,0 +11297520,0.31759203 +11297580,0.31759203 +11297580,0 +11297640,0 +11297640,0.096710923 +11297670,0.096710923 +11297670,0 +11297754,0 +11297754,0.081321666 +11297760,0.081321666 +11297760,0 +11297868,0 +11297868,0.12356669 +11297976,0.12356669 +11297976,0 +11297988,0 +11297988,0.13820157 +11297994,0.13820157 +11297994,0 +11299704,0 +11299704,0.32513579 +11299764,0.32513579 +11299764,0 +11310018,0 +11310018,0.29873265 +11310036,0.29873265 +11310036,0 +11310132,0 +11310132,0.12371756 +11310138,0.12371756 +11310138,0 +11315778,0 +11315778,0.034550392 +11315820,0.034550392 +11315820,0 +11342760,0 +11342760,0.1495172 +11342820,0.1495172 +11342820,0 +11342874,0 +11342874,0.13684369 +11342910,0.13684369 +11342910,0 +11345436,0 +11345436,0.17592034 +11345454,0.17592034 +11345454,0 +11346084,0 +11346084,0.16490646 +11346096,0.16490646 +11346096,0 +11346198,0 +11346198,0.18014484 +11346234,0.18014484 +11346234,0 +11349162,0 +11349162,0.070609535 +11349192,0.070609535 +11349192,0 +11350290,0 +11350290,0.22917924 +11350362,0.47118286 +11350362,0 +11350392,0 +11350392,0.22917924 +11350704,0.47118286 +11350704,0 +11352816,0 +11352816,0.038925769 +11352888,0.038925769 +11352888,0 +11353152,0 +11353152,0.084037417 +11353182,0.084037417 +11353182,0 +11355492,0 +11355492,0.27700664 +11355510,0.27700664 +11355510,0 +11355606,0 +11355606,0.08916717 +11355612,0.08916717 +11355612,0 +11355720,0 +11355720,0.45503923 +11355726,0.45503923 +11355726,0 +11357376,0 +11357376,0.15691008 +11357388,0.15691008 +11357388,0 +11357490,0 +11357490,0.23792999 +11357508,0.23792999 +11357508,0 +11357526,0 +11357526,0.0010561255 +11357532,0.0010561255 +11357532,0 +11357610,0 +11357610,0.17456246 +11357616,0.17456246 +11357616,0 +11358870,0 +11358870,0.24532287 +11358894,0.24532287 +11358894,0 +11358984,0 +11358984,0.0073928787 +11359050,0.0073928787 +11359050,0 +11359104,0 +11359104,0.17727821 +11359164,0.17727821 +11359164,0 +11359218,0 +11359218,0.060199155 +11359224,0.060199155 +11359224,0 +11360946,0 +11360946,0.18829209 +11360964,0.18829209 +11360964,0 +11360976,0 +11360976,0.17773084 +11361012,0.17773084 +11361012,0 +11361060,0 +11361060,0.37598069 +11361438,0.37598069 +11361438,0 +11363346,0 +11363346,0.29269765 +11363352,0.29269765 +11363352,0 +11370870,0 +11370870,0.0098068799 +11370876,0.0098068799 +11370876,0 +11373804,0 +11373804,0.46001811 +11374164,0.13126132 +11374164,0 +11374272,0 +11374272,0.13126132 +11374284,0.15208208 +11374284,0 +11374302,0 +11374302,0.15208208 +11374392,0.46001811 +11374392,0 +11375718,0 +11375718,0.072721786 +11375724,0.072721786 +11375724,0 +11379312,0 +11379312,0.0012070006 +11379318,0.0012070006 +11379318,0 +11380218,0 +11380218,0.15811708 +11380224,0.15811708 +11380224,0 +11380332,0 +11380332,0.057181654 +11380374,0.057181654 +11380374,0 +11380452,0 +11380452,0.042697646 +11380458,0.042697646 +11380458,0 +11383548,0 +11383548,0.24849125 +11383554,0.24849125 +11383554,0 +11384478,0 +11384478,0.33403742 +11384496,0.33403742 +11384496,0 +11384592,0 +11384592,0.20684973 +11384736,0.20684973 +11384736,0 +11385246,0 +11385246,0.17742909 +11385360,0.2076041 +11385360,0 +11385378,0 +11385378,0.2076041 +11385414,0.17742909 +11385414,0 +11385480,0 +11385480,0.022782136 +11385486,0.022782136 +11385486,0 +11386992,0 +11386992,0.090525045 +11387022,0.090525045 +11387022,0 +11392422,0 +11392422,0.21831623 +11392446,0.21831623 +11392446,0 +11399508,0 +11399508,0.24471937 +11399526,0.24471937 +11399526,0 +11399622,0 +11399622,0.030778515 +11399640,0.030778515 +11399640,0 +11399742,0 +11399742,0.26946288 +11399766,0.26946288 +11399766,0 +11400522,0 +11400522,0.033645142 +11400528,0.033645142 +11400528,0 +11402574,0 +11402574,0.19281835 +11402592,0.19281835 +11402592,0 +11404734,0 +11404734,0.26237176 +11404794,0.26237176 +11404794,0 +11416158,0 +11416158,0.18572722 +11416242,0.18572722 +11416242,0 +11416746,0 +11416746,0.23385637 +11416836,0.23385637 +11416836,0 +11417334,0 +11417334,0.245172 +11417430,0.245172 +11417430,0 +11417922,0 +11417922,0.19387447 +11418048,0.19387447 +11418048,0 +11426010,0 +11426010,0.007996379 +11426028,0.007996379 +11426028,0 +11431908,0 +11431908,0.17184671 +11431944,0.17184671 +11431944,0 +11432022,0 +11432022,0.028213639 +11432028,0.028213639 +11432028,0 +11434470,0 +11434470,0.20473748 +11434512,0.20473748 +11434512,0 +11434584,0 +11434584,0.0075437538 +11434638,0.0075437538 +11434638,0 +11434704,0 +11434704,0.078304164 +11434770,0.078304164 +11434770,0 +11436012,0 +11436012,0.27957151 +11436066,0.27957151 +11436066,0 +11440602,0 +11440602,0.1022933 +11440608,0.1022933 +11440608,0 +11441292,0 +11441292,0.19900422 +11441310,0.19900422 +11441310,0 +11441406,0 +11441406,0.1458962 +11441454,0.1458962 +11441454,0 +11441526,0 +11441526,0.072420036 +11441544,0.072420036 +11441544,0 +11441640,0 +11441640,0.094146047 +11441652,0.094146047 +11441652,0 +11446800,0 +11446800,0.20805673 +11446824,0.20805673 +11446824,0 +11446914,0 +11446914,0.053409777 +11446920,0.053409777 +11446920,0 +11450130,0 +11450130,0.11572118 +11450136,0.11572118 +11450136,0 +11453076,0 +11453076,0.20051298 +11453106,0.20051298 +11453106,0 +11453196,0 +11453196,0.33267954 +11453310,0 +11453310,0 +11453310,0.10500905 +11453310,0.33267954 +11453328,0.10500905 +11453328,0 +11459154,0 +11459154,0.38156307 +11459238,0.38156307 +11459238,0 +11460876,0 +11460876,0.38699457 +11460966,0.38699457 +11460966,0 +11462658,0 +11462658,0.20322873 +11462676,0.20322873 +11462676,0 +11462772,0 +11462772,0.038473144 +11462778,0.038473144 +11462778,0 +11462892,0 +11462892,0.22857574 +11462952,0.22857574 +11462952,0 +11463006,0 +11463006,0.0054315027 +11463012,0.0054315027 +11463012,0 +11463120,0 +11463120,0.19146047 +11463156,0.19146047 +11463156,0 +11466756,0 +11466756,0.19462885 +11466792,0.19462885 +11466792,0 +11466954,0 +11466954,0.10304768 +11467002,0.10304768 +11467002,0 +11467044,0 +11467044,0.32317441 +11467080,0.32317441 +11467080,0 +11467164,0 +11467164,0.074683162 +11467176,0.074683162 +11467176,0 +11468862,0 +11468862,0.15178033 +11468868,0.15178033 +11468868,0 +11468976,0 +11468976,0.1495172 +11468988,0.1495172 +11468988,0 +11470110,0 +11470110,0.035908268 +11470134,0.035908268 +11470134,0 +11474574,0 +11474574,0.0081472541 +11474586,0.0081472541 +11474586,0 +11474688,0 +11474688,0.02972239 +11474706,0.02972239 +11474706,0 +11474808,0 +11474808,0.33992154 +11474922,0.33584792 +11474922,0 +11474928,0 +11474928,0.33992154 +11474946,0.33584792 +11474946,0 +11477442,0 +11477442,0.033494267 +11477460,0.033494267 +11477460,0 +11477550,0 +11477550,0.22631261 +11477574,0.22631261 +11477574,0 +11477670,0 +11477670,0.22042849 +11477712,0.22042849 +11477712,0 +11478060,0 +11478060,0.35063368 +11478096,0.35063368 +11478096,0 +11478762,0 +11478762,0.058539529 +11478768,0.058539529 +11478768,0 +11478882,0 +11478882,0.13805069 +11478900,0.13805069 +11478900,0 +11478996,0 +11478996,0.18406759 +11479014,0.18406759 +11479014,0 +11479110,0 +11479110,0.096409173 +11479128,0.096409173 +11479128,0 +11479224,0 +11479224,0.10681955 +11479344,0.35033193 +11479344,0 +11479356,0 +11479356,0.35033193 +11479380,0.10681955 +11479380,0 +11482830,0 +11482830,0.093995172 +11482848,0.093995172 +11482848,0 +11483130,0 +11483130,0.40992758 +11483172,0.40992758 +11483172,0 +11483430,0 +11483430,0.27459264 +11483490,0.27459264 +11483490,0 +11485446,0 +11485446,0.036511768 +11485452,0.036511768 +11485452,0 +11485566,0 +11485566,0.075739288 +11485620,0.075739288 +11485620,0 +11485644,0 +11485644,0.0045262523 +11485650,0.0045262523 +11485650,0 +11485680,0 +11485680,0.21907061 +11485752,0.21907061 +11485752,0 +11485794,0 +11485794,0.16882921 +11485836,0.16882921 +11485836,0 +11486514,0 +11486514,0.042848521 +11486520,0.042848521 +11486520,0 +11490246,0 +11490246,0.13352444 +11490318,0.13352444 +11490318,0 +11512860,0 +11512860,0.13669282 +11512890,0.13669282 +11512890,0 +11512980,0 +11512980,0.095654798 +11513052,0.095654798 +11513052,0 +11513094,0 +11513094,0.13684369 +11513184,0.13684369 +11513184,0 +11518200,0 +11518200,0.13126132 +11518206,0.13126132 +11518206,0 +11519538,0 +11519538,0.020368135 +11519544,0.020368135 +11519544,0 +11519652,0 +11519652,0.0006035003 +11519658,0.0006035003 +11519658,0 +11521650,0 +11521650,0.27926976 +11521668,0.27926976 +11521668,0 +11521770,0 +11521770,0.22495474 +11521788,0.22495474 +11521788,0 +11521884,0 +11521884,0.0066385033 +11521902,0.0066385033 +11521902,0 +11521998,0 +11521998,0.17365721 +11522022,0.17365721 +11522022,0 +11522736,0 +11522736,0.48280024 +11523114,0.48280024 +11523114,0 +11523360,0 +11523360,0.22661436 +11524014,0.22661436 +11524014,0 +11525562,0 +11525562,0.32332529 +11525598,0.32332529 +11525598,0 +11525676,0 +11525676,0.23838262 +11525730,0.23838262 +11525730,0 +11525790,0 +11525790,0.17063971 +11525796,0.17063971 +11525796,0 +11525910,0 +11525910,0.36828606 +11525934,0.36828606 +11525934,0 +11526024,0 +11526024,0.23958962 +11526066,0.23958962 +11526066,0 +11526138,0 +11526138,0.28485214 +11526150,0.28485214 +11526150,0 +11526258,0 +11526258,0.037869644 +11526264,0.037869644 +11526264,0 +11526372,0 +11526372,0.13307182 +11526486,0.21047073 +11526486,0 +11526534,0 +11526534,0.21047073 +11526582,0.13307182 +11526582,0 +11526606,0 +11526606,0.15389258 +11526618,0.15389258 +11526618,0 +11526720,0 +11526720,0.12945081 +11526768,0.12945081 +11526768,0 +11526834,0 +11526834,0.18799034 +11526924,0.18799034 +11526924,0 +11533716,0 +11533716,0.19945685 +11533722,0.19945685 +11533722,0 +11545278,0 +11545278,0.049788775 +11545302,0.049788775 +11545302,0 +11545392,0 +11545392,0.11074231 +11545398,0.11074231 +11545398,0 +11545512,0 +11545512,0.12643331 +11545524,0.12643331 +11545524,0 +11549634,0 +11549634,0.056879903 +11549640,0.056879903 +11549640,0 +11549748,0 +11549748,0.036210018 +11549754,0.036210018 +11549754,0 +11550714,0 +11550714,0.22359686 +11550738,0.22359686 +11550738,0 +11553954,0 +11553954,0.081170791 +11553972,0.081170791 +11553972,0 +11554068,0 +11554068,0.058690404 +11554074,0.058690404 +11554074,0 +11554188,0 +11554188,0.0072420036 +11554284,0.0072420036 +11554284,0 +11554302,0 +11554302,0.003922752 +11554308,0.003922752 +11554308,0 +11554416,0 +11554416,0.257242 +11554428,0.257242 +11554428,0 +11554536,0 +11554536,0.095805673 +11554554,0.095805673 +11554554,0 +11554650,0 +11554650,0.18120097 +11554674,0.18120097 +11554674,0 +11560896,0 +11560896,0.12914906 +11560974,0.12914906 +11560974,0 +11564934,0 +11564934,0.12824381 +11564952,0.12824381 +11564952,0 +11572068,0 +11572068,0.12990344 +11572074,0.12990344 +11572074,0 +11590158,0 +11590158,0.28590827 +11590236,0.28590827 +11590236,0 +11590278,0 +11590278,0.057936029 +11590344,0.057936029 +11590344,0 +11603490,0 +11603490,0.1095353 +11603580,0.1095353 +11603580,0 +11606424,0 +11606424,0.17003621 +11606442,0.17003621 +11606442,0 +11606538,0 +11606538,0.20353048 +11606580,0.20353048 +11606580,0 +11610918,0 +11610918,0.28077852 +11611014,0.28077852 +11611014,0 +11617560,0 +11617560,0.2923959 +11617680,0.2923959 +11617680,0 +11618094,0 +11618094,0.13427882 +11618112,0.13427882 +11618112,0 +11619420,0 +11619420,0.082981291 +11619468,0.082981291 +11619468,0 +11619540,0 +11619540,0.093240797 +11619552,0.093240797 +11619552,0 +11621436,0 +11621436,0.30582378 +11621484,0.30582378 +11621484,0 +11622090,0 +11622090,0.21197948 +11622096,0.21197948 +11622096,0 +11624454,0 +11624454,0.0087507544 +11624460,0.0087507544 +11624460,0 +11625480,0 +11625480,0.020971635 +11625486,0.020971635 +11625486,0 +11629524,0 +11629524,0.31744116 +11629638,0.31744116 +11629638,0 +11629644,0 +11629644,0.24140012 +11629710,0.24140012 +11629710,0 +11629758,0 +11629758,0.019462885 +11629800,0.019462885 +11629800,0 +11629872,0 +11629872,0.09037417 +11629890,0.09037417 +11629890,0 +11629992,0 +11629992,0.11632468 +11630022,0.11632468 +11630022,0 +11630106,0 +11630106,0.12085094 +11630112,0.12085094 +11630112,0 +11630208,0 +11630208,0.060500905 +11630262,0.060500905 +11630262,0 +11630322,0 +11630322,0.26584188 +11630328,0.26584188 +11630328,0 +11641152,0 +11641152,0.033645142 +11641158,0.033645142 +11641158,0 +11644128,0 +11644128,0.21891973 +11644134,0.21891973 +11644134,0 +11644242,0 +11644242,0.28771877 +11644260,0.28771877 +11644260,0 +11645814,0 +11645814,0.26523838 +11645862,0.26523838 +11645862,0 +11645934,0 +11645934,0.085395293 +11645940,0.085395293 +11645940,0 +11647434,0 +11647434,0.31608328 +11647506,0.31608328 +11647506,0 +11647800,0 +11647800,0.0031683766 +11647806,0.0031683766 +11647806,0 +11650368,0 +11650368,0.89212432 +11650734,0.89212432 +11650734,0 +11652390,0 +11652390,0.20775498 +11652462,0.20775498 +11652462,0 +11652504,0 +11652504,0.13050694 +11652522,0.13050694 +11652522,0 +11652618,0 +11652618,0.20292698 +11652636,0.20292698 +11652636,0 +11653536,0 +11653536,0.15962583 +11653572,0.15962583 +11653572,0 +11656458,0 +11656458,0.31442366 +11656464,0.31442366 +11656464,0 +11656572,0 +11656572,0.10214243 +11656578,0.10214243 +11656578,0 +11656692,0 +11656692,0.38880507 +11656698,0.38880507 +11656698,0 +11688474,0 +11688474,0.056729028 +11688498,0.056729028 +11688498,0 +11688588,0 +11688588,0.054164152 +11688594,0.054164152 +11688594,0 +11688756,0 +11688756,0.12432106 +11688828,0.12432106 +11688828,0 +11692188,0 +11692188,0.21650573 +11692194,0.21650573 +11692194,0 +11692350,0 +11692350,0.073928787 +11692356,0.073928787 +11692356,0 +11692452,0 +11692452,0.31170791 +11692500,0.31170791 +11692500,0 +11692752,0 +11692752,0.11436331 +11692812,0.11436331 +11692812,0 +11694456,0 +11694456,0.19764635 +11694486,0.19764635 +11694486,0 +11694576,0 +11694576,0.30009053 +11694600,0.30009053 +11694600,0 +11695722,0 +11695722,0.21514786 +11695770,0.21514786 +11695770,0 +11699922,0 +11699922,0.0073928787 +11699970,0.0073928787 +11699970,0 +11700042,0 +11700042,0.17742909 +11700066,0.17742909 +11700066,0 +11712774,0 +11712774,0.26795413 +11712798,0.26795413 +11712798,0 +11716686,0 +11716686,0.10018105 +11716794,0.10018105 +11716794,0 +11716800,0 +11716800,0.14318045 +11716890,0.14318045 +11716890,0 +11716914,0 +11716914,0.25890163 +11716944,0.25890163 +11716944,0 +11717028,0 +11717028,0.21499698 +11717070,0.21499698 +11717070,0 +11720262,0 +11720262,0.084188292 +11720310,0.084188292 +11720310,0 +11720922,0 +11720922,0.11843693 +11720946,0.11843693 +11720946,0 +11730372,0 +11730372,0.27338564 +11730408,0.27338564 +11730408,0 +11730996,0 +11730996,0.14846107 +11731002,0.14846107 +11731002,0 +11731116,0 +11731116,0.073627037 +11731128,0.073627037 +11731128,0 +11732406,0 +11732406,0.247586 +11732448,0.247586 +11732448,0 +11735580,0 +11735580,0.13548582 +11735586,0.13548582 +11735586,0 +11740656,0 +11740656,0.04993965 +11740662,0.04993965 +11740662,0 +11740770,0 +11740770,0.31216053 +11740896,0.31216053 +11740896,0 +11744322,0 +11744322,0.085093543 +11744400,0.085093543 +11744400,0 +11745438,0 +11745438,0.26991551 +11745456,0.26991551 +11745456,0 +11745558,0 +11745558,0.16928183 +11745594,0.16928183 +11745594,0 +11745672,0 +11745672,0.15932408 +11745756,0.15932408 +11745756,0 +11749848,0 +11749848,0.28741702 +11749872,0.28741702 +11749872,0 +11772270,0 +11772270,0.056729028 +11772276,0.056729028 +11772276,0 +11775492,0 +11775492,0.30522028 +11775504,0.30522028 +11775504,0 +11775612,0 +11775612,0.28726614 +11775630,0.28726614 +11775630,0 +11775726,0 +11775726,0.17712734 +11775738,0.17712734 +11775738,0 +11775840,0 +11775840,0.33856367 +11775954,0.33856367 +11775954,0 +11781894,0 +11781894,0.0063367532 +11781906,0.0063367532 +11781906,0 +11784264,0 +11784264,0.15298733 +11784312,0.15298733 +11784312,0 +11784384,0 +11784384,0.19598672 +11784462,0.027911889 +11784462,0 +11784468,0 +11784468,0.027911889 +11784504,0.19598672 +11784504,0 +11784756,0 +11784756,0.019462885 +11784774,0.019462885 +11784774,0 +11784876,0 +11784876,0.041038021 +11784882,0.041038021 +11784882,0 +11785248,0 +11785248,0.37839469 +11785866,0.37839469 +11785866,0 +11790282,0 +11790282,0.2996379 +11790828,0.2996379 +11790828,0 +11791158,0 +11791158,0.22088111 +11791206,0.22088111 +11791206,0 +11791272,0 +11791272,0.1531382 +11791296,0.1531382 +11791296,0 +11791392,0 +11791392,0.15479783 +11791446,0.15479783 +11791446,0 +11798808,0 +11798808,0.012673506 +11798814,0.012673506 +11798814,0 +11798922,0 +11798922,0.18195534 +11799024,0.18195534 +11799024,0 +11799042,0 +11799042,0.033796017 +11799048,0.033796017 +11799048,0 +11799960,0 +11799960,0.10304768 +11799984,0.10304768 +11799984,0 +11800296,0 +11800296,0.064423657 +11800308,0.064423657 +11800308,0 +11800410,0 +11800410,0.033645142 +11800524,0.18074834 +11800524,0 +11800584,0 +11800584,0.18074834 +11800614,0.033645142 +11800614,0 +11800644,0 +11800644,0.0012070006 +11800650,0.0012070006 +11800650,0 +11800758,0 +11800758,0.080718165 +11800812,0.080718165 +11800812,0 +11800872,0 +11800872,0.23098974 +11800896,0.23098974 +11800896,0 +11803554,0 +11803554,0.19236572 +11803608,0.19236572 +11803608,0 +11818242,0 +11818242,0.25135788 +11818296,0.25135788 +11818296,0 +11819214,0 +11819214,0.16686783 +11819244,0.16686783 +11819244,0 +11820306,0 +11820306,0.21062161 +11820432,0.21062161 +11820432,0 +11827116,0 +11827116,0.17320459 +11827146,0.17320459 +11827146,0 +11859636,0 +11859636,0.43135184 +11859858,0.43135184 +11859858,0 +11860812,0 +11860812,0.28032589 +11860824,0.28032589 +11860824,0 +11860926,0 +11860926,0.12748944 +11860938,0.12748944 +11860938,0 +11861472,0 +11861472,0.5574834 +11861760,0.5574834 +11861760,0 +11862270,0 +11862270,0.044809897 +11862276,0.044809897 +11862276,0 +11870274,0 +11870274,0.31442366 +11870280,0.31442366 +11870280,0 +11873154,0 +11873154,0.26493663 +11873166,0.26493663 +11873166,0 +11887470,0 +11887470,0.20292698 +11887482,0.20292698 +11887482,0 +11887590,0 +11887590,0.15389258 +11887716,0.15389258 +11887716,0 +11891508,0 +11891508,0.30235365 +11891556,0.30235365 +11891556,0 +11897268,0 +11897268,0.022027761 +11897274,0.022027761 +11897274,0 +11901228,0 +11901228,0.012070006 +11901234,0.012070006 +11901234,0 +11902110,0 +11902110,0.075739288 +11902128,0.075739288 +11902128,0 +11902230,0 +11902230,0.066535908 +11902236,0.066535908 +11902236,0 +11904342,0 +11904342,0.12733856 +11904354,0.12733856 +11904354,0 +11906214,0 +11906214,0.57800241 +11906634,0.57800241 +11906634,0 +11906640,0 +11906640,0.15343995 +11906646,0.15343995 +11906646,0 +11909400,0 +11909400,0.10666868 +11909418,0.10666868 +11909418,0 +11910312,0 +11910312,0.32438141 +11910342,0.32438141 +11910342,0 +11912100,0 +11912100,0.33358479 +11912166,0.33358479 +11912166,0 +11920584,0 +11920584,0.18089922 +11920590,0.18089922 +11920590,0 +11942556,0 +11942556,0.18708509 +11942574,0.18708509 +11942574,0 +11945964,0 +11945964,0.030778515 +11945970,0.030778515 +11945970,0 +11955186,0 +11955186,0.24788775 +11955216,0.24788775 +11955216,0 +11957046,0 +11957046,0.087809294 +11957052,0.087809294 +11957052,0 +11957160,0 +11957160,0.17426071 +11957394,0.17426071 +11957394,0 +11959626,0 +11959626,0.23898612 +11959656,0.23898612 +11959656,0 +11959782,0 +11959782,0.11194931 +11959824,0.11194931 +11959824,0 +11959902,0 +11959902,0.22435124 +11959992,0.22435124 +11959992,0 +11960016,0 +11960016,0.16098371 +11960046,0.16098371 +11960046,0 +11960130,0 +11960130,0.11074231 +11960178,0.11074231 +11960178,0 +11960250,0 +11960250,0.095353048 +11960280,0.095353048 +11960280,0 +11960364,0 +11960364,0.061406156 +11960418,0.061406156 +11960418,0 +11960478,0 +11960478,0.15509958 +11960490,0.15509958 +11960490,0 +11960598,0 +11960598,0.085093543 +11960604,0.085093543 +11960604,0 +11968896,0 +11968896,0.1913096 +11968902,0.1913096 +11968902,0 +11969052,0 +11969052,0.28530477 +11969094,0.28530477 +11969094,0 +11978190,0 +11978190,0.25935425 +11978268,0.25935425 +11978268,0 +11978304,0 +11978304,0.1077248 +11978328,0.1077248 +11978328,0 +11978424,0 +11978424,0.2566385 +11978466,0.2566385 +11978466,0 +11982918,0 +11982918,0.10515993 +11982930,0.10515993 +11982930,0 +11985402,0 +11985402,0.097767049 +11985408,0.097767049 +11985408,0 +11985516,0 +11985516,0.070006035 +11985522,0.070006035 +11985522,0 +11986434,0 +11986434,0.18738684 +11986494,0.18738684 +11986494,0 +11986548,0 +11986548,0.26719976 +11986590,0.26719976 +11986590,0 +11986668,0 +11986668,0.093391672 +11986704,0.093391672 +11986704,0 +11986782,0 +11986782,0.050694025 +11986800,0.11300543 +11986800,0 +11986806,0 +11986806,0.11300543 +11986818,0.050694025 +11986818,0 +11986896,0 +11986896,0.0490344 +11986902,0.0490344 +11986902,0 +11986914,0 +11986914,0.19236572 +11986926,0.19236572 +11986926,0 +11987034,0 +11987034,0.2033796 +11987052,0.2033796 +11987052,0 +11988774,0 +11988774,0.13292094 +11988888,0.068195534 +11988888,0 +11988894,0 +11988894,0.13292094 +11988906,0.068195534 +11988906,0 +11988930,0 +11988930,0.10138805 +11988948,0.10138805 +11988948,0 +11989008,0 +11989008,0.16354858 +11989026,0.16354858 +11989026,0 +11989044,0 +11989044,0.26946288 +11989098,0.26946288 +11989098,0 +11989950,0 +11989950,0.23008449 +11989956,0.23008449 +11989956,0 +11990352,0 +11990352,0.58569704 +11990634,0.58569704 +11990634,0 +11990658,0 +11990658,0.14604707 +11990670,0.14604707 +11990670,0 +11993178,0 +11993178,0.06095353 +11993184,0.06095353 +11993184,0 +11994948,0 +11994948,0.26901026 +11995020,0.26901026 +11995020,0 +11996886,0 +11996886,0.13940857 +11996946,0.13940857 +11996946,0 +12000858,0 +12000858,0.032589016 +12000876,0.032589016 +12000876,0 +12000972,0 +12000972,0.20443573 +12001008,0.20443573 +12001008,0 +12001092,0 +12001092,0.22012674 +12001188,0.22012674 +12001188,0 +12001206,0 +12001206,0.20141823 +12001248,0.20141823 +12001248,0 +12001320,0 +12001320,0.21967411 +12001332,0.21967411 +12001332,0 +12001440,0 +12001440,0.087507544 +12001566,0.087507544 +12001566,0 +12011376,0 +12011376,0.30672903 +12011406,0.30672903 +12011406,0 +12011676,0 +12011676,0.17501509 +12011748,0.17501509 +12011748,0 +12031500,0 +12031500,0.065479783 +12031530,0.065479783 +12031530,0 +12031614,0 +12031614,0.042697646 +12031674,0.042697646 +12031674,0 +12031734,0 +12031734,0.10063368 +12031740,0.10063368 +12031740,0 +12035424,0 +12035424,0.15087508 +12035538,0 +12035538,0 +12035538,0.11692818 +12035538,0.15087508 +12035574,0.11692818 +12035574,0 +12035652,0 +12035652,0.094447797 +12035670,0.094447797 +12035670,0 +12036672,0 +12036672,0.032438141 +12036678,0.032438141 +12036678,0 +12037188,0 +12037188,0.056729028 +12037200,0.056729028 +12037200,0 +12037404,0 +12037404,0.0070911285 +12037452,0.0070911285 +12037452,0 +12038256,0 +12038256,0.12914906 +12038292,0.12914906 +12038292,0 +12043536,0 +12043536,0.20428485 +12043590,0.20428485 +12043590,0 +12044064,0 +12044064,0.12311406 +12044082,0.12311406 +12044082,0 +12050316,0 +12050316,0.34293905 +12050382,0.34293905 +12050382,0 +12050430,0 +12050430,0.23038624 +12050448,0.23038624 +12050448,0 +12060252,0 +12060252,0.16007846 +12060270,0.16007846 +12060270,0 +12075570,0 +12075570,0.006035003 +12075576,0.006035003 +12075576,0 +12075684,0 +12075684,0.17003621 +12075798,0.11421243 +12075798,0 +12075816,0 +12075816,0.17003621 +12075834,0.11421243 +12075834,0 +12075918,0 +12075918,0.091732046 +12075966,0.091732046 +12075966,0 +12076032,0 +12076032,0.16068196 +12076230,0.16068196 +12076230,0 +12079266,0 +12079266,0.10546168 +12079272,0.10546168 +12079272,0 +12082116,0 +12082116,0.17878696 +12082128,0.17878696 +12082128,0 +12082230,0 +12082230,0.12643331 +12082248,0.12643331 +12082248,0 +12082350,0 +12082350,0.22902836 +12082380,0.22902836 +12082380,0 +12083172,0 +12083172,0.19719372 +12083316,0.19719372 +12083316,0 +12084450,0 +12084450,0.16083283 +12084462,0.16083283 +12084462,0 +12084570,0 +12084570,0.17214846 +12084648,0.17214846 +12084648,0 +12084684,0 +12084684,0.10847918 +12084690,0.10847918 +12084690,0 +12084798,0 +12084798,0.24864212 +12084912,0.23581774 +12084912,0 +12084924,0 +12084924,0.23581774 +12084984,0.24864212 +12084984,0 +12085032,0 +12085032,0.0010561255 +12085038,0.0010561255 +12085038,0 +12085146,0 +12085146,0.0076946288 +12085164,0.0076946288 +12085164,0 +12089100,0 +12089100,0.1458962 +12089154,0.1458962 +12089154,0 +12090540,0 +12090540,0.21680748 +12090558,0.21680748 +12090558,0 +12090654,0 +12090654,0.0036210018 +12090660,0.0036210018 +12090660,0 +12091890,0 +12091890,0.036059143 +12091896,0.036059143 +12091896,0 +12092004,0 +12092004,0.25558238 +12092016,0.25558238 +12092016,0 +12124506,0 +12124506,0.27610139 +12124518,0.27610139 +12124518,0 +12124620,0 +12124620,0.0070911285 +12124638,0.0070911285 +12124638,0 +12126060,0 +12126060,0.31698853 +12126126,0.31698853 +12126126,0 +12126180,0 +12126180,0.0031683766 +12126186,0.0031683766 +12126186,0 +12126294,0 +12126294,0.03922752 +12126300,0.03922752 +12126300,0 +12126408,0 +12126408,0.06004828 +12126462,0.06004828 +12126462,0 +12126528,0 +12126528,0.15932408 +12126558,0.15932408 +12126558,0 +12126642,0 +12126642,0.010259505 +12126648,0.010259505 +12126648,0 +12130716,0 +12130716,0.04043452 +12130722,0.04043452 +12130722,0 +12135528,0 +12135528,0.36104406 +12135600,0.36104406 +12135600,0 +12135828,0 +12135828,0.31185878 +12135894,0.31185878 +12135894,0 +12138264,0 +12138264,0.26885938 +12138336,0.26885938 +12138336,0 +12139986,0 +12139986,0.38533494 +12140058,0.38533494 +12140058,0 +12140286,0 +12140286,0.27987326 +12140346,0.27987326 +12140346,0 +12144438,0 +12144438,0.32091129 +12144498,0.32091129 +12144498,0 +12144738,0 +12144738,0.26418226 +12144846,0.26418226 +12144846,0 +12150930,0 +12150930,0.020066385 +12150936,0.020066385 +12150936,0 +12153096,0 +12153096,0.21907061 +12153108,0.21907061 +12153108,0 +12153216,0 +12153216,0.1501207 +12153228,0.1501207 +12153228,0 +12153630,0 +12153630,0.17848521 +12153642,0.17848521 +12153642,0 +12155262,0 +12155262,0.36828606 +12155340,0.36828606 +12155340,0 +12155562,0 +12155562,0.4443271 +12155652,0.4443271 +12155652,0 +12157200,0 +12157200,0.1597767 +12157314,0.1597767 +12157314,0 +12159720,0 +12159720,0.34459867 +12159780,0.34459867 +12159780,0 +12160020,0 +12160020,0.31955341 +12160080,0.31955341 +12160080,0 +12160212,0 +12160212,0.12462281 +12160236,0.12462281 +12160236,0 +12160326,0 +12160326,0.18270972 +12160332,0.18270972 +12160332,0 +12160446,0 +12160446,0.18889559 +12160518,0.18889559 +12160518,0 +12160776,0 +12160776,0.27323476 +12160788,0.27323476 +12160788,0 +12165240,0 +12165240,0.3068799 +12165252,0.3068799 +12165252,0 +12169896,0 +12169896,0.17561859 +12169902,0.17561859 +12169902,0 +12170010,0 +12170010,0.18527459 +12170100,0.18527459 +12170100,0 +12170124,0 +12170124,0.18844297 +12170130,0.18844297 +12170130,0 +12170244,0 +12170244,0.20926373 +12170280,0.20926373 +12170280,0 +12170754,0 +12170754,0.23430899 +12170868,0.23430899 +12170868,0 +12171342,0 +12171342,0.23280024 +12171414,0.23280024 +12171414,0 +12171930,0 +12171930,0.24668075 +12171978,0.24668075 +12171978,0 +12172512,0 +12172512,0.18753772 +12172590,0.18753772 +12172590,0 +12209892,0 +12209892,0.29993965 +12209904,0.29993965 +12209904,0 +12210738,0 +12210738,0.15479783 +12210768,0.15479783 +12210768,0 +12212124,0 +12212124,0.34610742 +12212466,0.0069402535 +12212466,0 +12212484,0 +12212484,0.0069402535 +12212532,0.34610742 +12212532,0 +12212580,0 +12212580,0.27761014 +12212634,0.27761014 +12212634,0 +12212700,0 +12212700,0.13654194 +12212748,0.13654194 +12212748,0 +12213888,0 +12213888,0.22012674 +12213900,0.22012674 +12213900,0 +12214008,0 +12214008,0.19583585 +12214020,0.19583585 +12214020,0 +12214122,0 +12214122,0.19749547 +12214128,0.19749547 +12214128,0 +12214236,0 +12214236,0.0069402535 +12214260,0.0069402535 +12214260,0 +12215304,0 +12215304,0.13729632 +12215370,0.13729632 +12215370,0 +12215646,0 +12215646,0.32920941 +12215694,0.32920941 +12215694,0 +12217152,0 +12217152,0.26056126 +12217248,0.26056126 +12217248,0 +12217932,0 +12217932,0.12220881 +12217938,0.12220881 +12217938,0 +12218058,0 +12218058,0.25271575 +12218130,0.25271575 +12218130,0 +12218562,0 +12218562,0.35606518 +12218844,0.35606518 +12218844,0 +12220818,0 +12220818,0.28228727 +12221952,0.28228727 +12221952,0 +12222516,0 +12222516,0.32015691 +12222576,0.32015691 +12222576,0 +12224892,0 +12224892,0.0036210018 +12224898,0.0036210018 +12224898,0 +12225096,0 +12225096,0.43150272 +12225138,0.43150272 +12225138,0 +12225552,0 +12225552,0.248793 +12225564,0.248793 +12225564,0 +12226062,0 +12226062,0.07905854 +12226068,0.07905854 +12226068,0 +12226176,0 +12226176,0.1967411 +12226278,0.1967411 +12226278,0 +12226968,0 +12226968,0.31321666 +12227070,0.31321666 +12227070,0 +12227448,0 +12227448,0.24049487 +12227790,0.020669885 +12227790,0 +12227856,0 +12227856,0.020669885 +12228204,0.24049487 +12228204,0 +12229416,0 +12229416,0.26523838 +12229428,0.26523838 +12229428,0 +12229554,0 +12229554,0.24140012 +12229578,0.24140012 +12229578,0 +12229902,0 +12229902,0.11315631 +12229938,0.11315631 +12229938,0 +12231426,0 +12231426,0.49909475 +12231456,0.49909475 +12231456,0 +12236100,0 +12236100,0.31382016 +12236118,0.31382016 +12236118,0 +12237762,0 +12237762,0.32709716 +12237828,0.32709716 +12237828,0 +12245454,0 +12245454,0.1071213 +12245502,0.1071213 +12245502,0 +12248070,0 +12248070,0.14574532 +12248076,0.14574532 +12248076,0 +12248724,0 +12248724,0.28847314 +12249186,0.28847314 +12249186,0 +12257190,0 +12257190,0.33977067 +12257238,0.33977067 +12257238,0 +12260592,0 +12260592,0.055672903 +12260712,0.060500905 +12260712,0 +12260730,0 +12260730,0.055672903 +12260754,0.060500905 +12260754,0 +12260826,0 +12260826,0.23974049 +12260832,0.23974049 +12260832,0 +12262314,0 +12262314,0.3444478 +12262644,0.3444478 +12262644,0 +12268152,0 +12268152,0.04043452 +12268158,0.04043452 +12268158,0 +12296382,0 +12296382,0.27293301 +12296406,0.27293301 +12296406,0 +12298296,0 +12298296,0.2088111 +12298326,0.2088111 +12298326,0 +12298596,0 +12298596,0.15042245 +12298614,0.15042245 +12298614,0 +12298710,0 +12298710,0.29450815 +12298740,0.29450815 +12298740,0 +12298830,0 +12298830,0.094296922 +12298836,0.094296922 +12298836,0 +12298944,0 +12298944,0.22721786 +12299058,0.33780929 +12299058,0 +12299082,0 +12299082,0.22721786 +12299136,0.33780929 +12299136,0 +12302796,0 +12302796,0.13910682 +12302820,0.13910682 +12302820,0 +12304974,0 +12304974,0.21137598 +12304992,0.21137598 +12304992,0 +12305094,0 +12305094,0.061858781 +12305100,0.061858781 +12305100,0 +12305196,0 +12305196,0.25558238 +12305208,0.0016596258 +12305208,0 +12305214,0 +12305214,0.0016596258 +12305280,0.25558238 +12305280,0 +12305496,0 +12305496,0.34052505 +12305568,0.34052505 +12305568,0 +12305790,0 +12305790,0.38624019 +12305862,0.38624019 +12305862,0 +12306306,0 +12306306,0.26538926 +12306348,0.26538926 +12306348,0 +12306714,0 +12306714,0.21137598 +12306828,0.21137598 +12306828,0 +12316092,0 +12316092,0.13126132 +12316098,0.13126132 +12316098,0 +12319608,0 +12319608,0.091430296 +12319626,0.091430296 +12319626,0 +12325062,0 +12325062,0.22420036 +12325116,0.22420036 +12325116,0 +12325176,0 +12325176,0.021575136 +12325206,0.021575136 +12325206,0 +12325296,0 +12325296,0.14604707 +12325344,0.14604707 +12325344,0 +12325410,0 +12325410,0.16928183 +12325452,0.16928183 +12325452,0 +12326094,0 +12326094,0.17878696 +12326112,0.17878696 +12326112,0 +12331740,0 +12331740,0.20006035 +12331752,0.20006035 +12331752,0 +12331854,0 +12331854,0.25995775 +12331872,0.25995775 +12331872,0 +12334044,0 +12334044,0.081321666 +12334050,0.081321666 +12334050,0 +12337008,0 +12337008,0.17773084 +12337074,0.17773084 +12337074,0 +12337122,0 +12337122,0.15645745 +12337140,0.15645745 +12337140,0 +12337374,0 +12337374,0.25045263 +12337386,0.25045263 +12337386,0 +12338682,0 +12338682,0.29315027 +12338706,0.29315027 +12338706,0 +12339666,0 +12339666,0.25452625 +12339684,0.25452625 +12339684,0 +12345342,0 +12345342,0.23445987 +12345390,0.23445987 +12345390,0 +12346002,0 +12346002,0.073023537 +12346032,0.073023537 +12346032,0 +12352086,0 +12352086,0.25075438 +12352140,0.25075438 +12352140,0 +12357588,0 +12357588,0.18436934 +12357594,0.18436934 +12357594,0 +12378996,0 +12378996,0.036662643 +12379002,0.036662643 +12379002,0 +12379110,0 +12379110,0.050392275 +12379116,0.050392275 +12379116,0 +12387540,0 +12387540,0.28424864 +12387636,0.28424864 +12387636,0 +12387930,0 +12387930,0.11617381 +12387984,0.11617381 +12387984,0 +12388044,0 +12388044,0.34490042 +12388062,0.34490042 +12388062,0 +12392124,0 +12392124,0.17878696 +12392136,0.17878696 +12392136,0 +12393522,0 +12393522,0.061255281 +12393606,0.061255281 +12393606,0 +12394926,0 +12394926,0.037567894 +12395088,0.037567894 +12395088,0 +12396456,0 +12396456,0.12809294 +12396486,0.12809294 +12396486,0 +12396576,0 +12396576,0.15540133 +12396618,0.15540133 +12396618,0 +12405366,0 +12405366,0.15509958 +12405438,0.15509958 +12405438,0 +12405486,0 +12405486,0.21771273 +12405498,0.21771273 +12405498,0 +12405600,0 +12405600,0.070307785 +12405636,0.070307785 +12405636,0 +12405714,0 +12405714,0.29828002 +12405762,0.29828002 +12405762,0 +12405834,0 +12405834,0.15766445 +12405870,0.15766445 +12405870,0 +12405948,0 +12405948,0.31336753 +12406014,0.31336753 +12406014,0 +12406062,0 +12406062,0.30522028 +12406146,0.30522028 +12406146,0 +12406182,0 +12406182,0.24124925 +12406212,0.24124925 +12406212,0 +12406296,0 +12406296,0.12266144 +12406326,0.12266144 +12406326,0 +12406410,0 +12406410,0.060802655 +12406416,0.060802655 +12406416,0 +12410268,0 +12410268,0.045262523 +12410310,0.045262523 +12410310,0 +12412566,0 +12412566,0.496379 +12412632,0.496379 +12412632,0 +12412866,0 +12412866,0.37145444 +12412950,0.37145444 +12412950,0 +12414258,0 +12414258,0.00090525045 +12414264,0.00090525045 +12414264,0 +12417018,0 +12417018,0.36888956 +12417078,0.36888956 +12417078,0 +12417180,0 +12417180,0.13518407 +12417186,0.13518407 +12417186,0 +12417318,0 +12417318,0.22329511 +12417390,0.22329511 +12417390,0 +12417450,0 +12417450,0.30823778 +12417522,0.30823778 +12417522,0 +12417750,0 +12417750,0.36768256 +12417816,0.36768256 +12417816,0 +12418110,0 +12418110,0.28138202 +12418206,0.28138202 +12418206,0 +12421164,0 +12421164,0.038020519 +12421170,0.038020519 +12421170,0 +12421278,0 +12421278,0.14453832 +12421308,0.14453832 +12421308,0 +12421398,0 +12421398,0.21650573 +12421422,0.21650573 +12421422,0 +12421512,0 +12421512,0.0030175015 +12421518,0.0030175015 +12421518,0 +12421626,0 +12421626,0.063669282 +12421632,0.063669282 +12421632,0 +12421746,0 +12421746,0.1422752 +12421800,0.1422752 +12421800,0 +12421860,0 +12421860,0.074230537 +12421866,0.074230537 +12421866,0 +12421974,0 +12421974,0.043753772 +12421986,0.043753772 +12421986,0 +12423438,0 +12423438,0.095051298 +12423474,0.095051298 +12423474,0 +12423558,0 +12423558,0.31910078 +12423564,0.31910078 +12423564,0 +12424272,0 +12424272,0.0052806276 +12424278,0.0052806276 +12424278,0 +12424392,0 +12424392,0.31155703 +12424464,0.31155703 +12424464,0 +12424506,0 +12424506,0.20247435 +12424572,0.20247435 +12424572,0 +12424620,0 +12424620,0.16550996 +12424662,0.16550996 +12424662,0 +12427320,0 +12427320,0.058992154 +12427326,0.058992154 +12427326,0 +12427434,0 +12427434,0.1077248 +12427470,0.1077248 +12427470,0 +12427548,0 +12427548,0.035003018 +12427554,0.035003018 +12427554,0 +12427668,0 +12427668,0.18874472 +12427782,0.21710923 +12427782,0 +12427794,0 +12427794,0.18874472 +12427824,0.21710923 +12427824,0 +12437916,0 +12437916,0.090826795 +12437922,0.090826795 +12437922,0 +12440568,0 +12440568,0.12447194 +12440622,0.12447194 +12440622,0 +12440688,0 +12440688,0.23823174 +12440700,0.23823174 +12440700,0 +12440802,0 +12440802,0.41943271 +12440808,0.41943271 +12440808,0 +12440916,0 +12440916,0.16913096 +12440958,0.16913096 +12440958,0 +12441036,0 +12441036,0.12899819 +12441048,0.12899819 +12441048,0 +12441150,0 +12441150,0.0049788775 +12441156,0.0049788775 +12441156,0 +12471906,0 +12471906,0.35259505 +12471966,0.35259505 +12471966,0 +12472206,0 +12472206,0.20141823 +12472278,0.20141823 +12472278,0 +12473700,0 +12473700,0.20956548 +12473742,0.20956548 +12473742,0 +12474372,0 +12474372,0.2009656 +12474420,0.2009656 +12474420,0 +12477102,0 +12477102,0.54013277 +12477792,0.54013277 +12477792,0 +12481080,0 +12481080,0.14378395 +12481092,0.14378395 +12481092,0 +12481770,0 +12481770,0.13986119 +12481830,0.13986119 +12481830,0 +12483654,0 +12483654,0.035606518 +12483660,0.035606518 +12483660,0 +12494298,0 +12494298,0.035153893 +12494304,0.035153893 +12494304,0 +12494412,0 +12494412,0.11632468 +12494436,0.11632468 +12494436,0 +12494526,0 +12494526,0.33041642 +12494568,0.33041642 +12494568,0 +12494646,0 +12494646,0.24607725 +12494670,0.24607725 +12494670,0 +12494760,0 +12494760,0.088563669 +12494832,0.088563669 +12494832,0 +12494874,0 +12494874,0.12085094 +12494886,0.12085094 +12494886,0 +12494994,0 +12494994,0.22540736 +12495018,0.22540736 +12495018,0 +12503856,0 +12503856,0.87688594 +12504132,0.87688594 +12504132,0 +12508254,0 +12508254,0.21891973 +12508320,0.21891973 +12508320,0 +12512058,0 +12512058,0.11059143 +12512118,0.11059143 +12512118,0 +12518916,0 +12518916,0.32377791 +12518982,0.32377791 +12518982,0 +12520272,0 +12520272,0.17712734 +12520284,0.17712734 +12520284,0 +12520386,0 +12520386,0.21635486 +12520410,0.21635486 +12520410,0 +12523974,0 +12523974,0.23657212 +12524028,0.23657212 +12524028,0 +12788604,0 +12788604,0.13503319 +12788610,0.13503319 +12788610,0 +12810276,0 +12810276,0.1907061 +12810300,0.1907061 +12810300,0 +12812604,0 +12812604,0.0490344 +12812610,0.0490344 +12812610,0 +12814590,0 +12814590,0.16792396 +12814608,0.16792396 +12814608,0 +12816228,0 +12816228,0.18964997 +12816270,0.18964997 +12816270,0 +12816342,0 +12816342,0.0078455039 +12816354,0.0078455039 +12816354,0 +12816456,0 +12816456,0.043452022 +12816498,0.043452022 +12816498,0 +12817458,0 +12817458,0.11194931 +12817482,0.11194931 +12817482,0 +12819924,0 +12819924,0.24894387 +12819930,0.24894387 +12819930,0 +12820044,0 +12820044,0.13035607 +12820086,0.13035607 +12820086,0 +12820992,0 +12820992,0.39484007 +12821052,0.39484007 +12821052,0 +12821154,0 +12821154,0.21529873 +12821238,0.21529873 +12821238,0 +12821292,0 +12821292,0.62190706 +12821298,0.62190706 +12821298,0 +12821742,0 +12821742,0.27112251 +12821826,0.27112251 +12821826,0 +12822006,0 +12822006,0.08086904 +12822012,0.08086904 +12822012,0 +12822330,0 +12822330,0.23445987 +12822348,0.14484007 +12822348,0 +12822414,0 +12822414,0.23445987 +12822468,0.14484007 +12822468,0 +12826764,0 +12826764,0.12945081 +12826788,0.12945081 +12826788,0 +12827610,0 +12827610,0.087658419 +12827652,0.087658419 +12827652,0 +12831228,0 +12831228,0.19689197 +12831276,0.19689197 +12831276,0 +12831348,0 +12831348,0.0061858781 +12831354,0.0061858781 +12831354,0 +12833256,0 +12833256,0.14091732 +12833280,0.14091732 +12833280,0 +12842718,0 +12842718,0.29209415 +12842754,0.29209415 +12842754,0 +12842832,0 +12842832,0.27670489 +12842850,0.27670489 +12842850,0 +12848772,0 +12848772,0.32332529 +12849132,0.32332529 +12849132,0 +12849648,0 +12849648,0.37220881 +12849654,0.37220881 +12849654,0 +12851472,0 +12851472,0.048280024 +12851520,0.048280024 +12851520,0 +12851586,0 +12851586,0.21409173 +12851634,0.21409173 +12851634,0 +12851700,0 +12851700,0.1041038 +12851718,0.1041038 +12851718,0 +12851820,0 +12851820,0.086149668 +12851958,0.086149668 +12851958,0 +12852156,0 +12852156,0.0054315027 +12852162,0.0054315027 +12852162,0 +12852276,0 +12852276,0.0092033796 +12852282,0.0092033796 +12852282,0 +12852390,0 +12852390,0.17773084 +12852414,0.17773084 +12852414,0 +12853194,0 +12853194,0.24562462 +12853206,0.24562462 +12853206,0 +12853314,0 +12853314,0.20850935 +12853374,0.20850935 +12853374,0 +12855294,0 +12855294,0.22314424 +12855342,0.22314424 +12855342,0 +12855408,0 +12855408,0.12432106 +12855420,0.12432106 +12855420,0 +12855522,0 +12855522,0.15283645 +12855588,0.15283645 +12855588,0 +12855642,0 +12855642,0.16188896 +12855654,0.16188896 +12855654,0 +12855756,0 +12855756,0.19719372 +12855870,0.015087508 +12855870,0 +12855876,0 +12855876,0.015087508 +12855918,0.19719372 +12855918,0 +12857292,0 +12857292,0.10515993 +12857310,0.10515993 +12857310,0 +12857406,0 +12857406,0.26146651 +12857412,0.26146651 +12857412,0 +12887670,0 +12887670,0.025799638 +12887676,0.025799638 +12887676,0 +12900252,0 +12900252,0.068346409 +12900258,0.068346409 +12900258,0 +12913896,0 +12913896,0.1028968 +12913920,0.1028968 +12913920,0 +12925092,0 +12925092,0.0067893784 +12925110,0.0067893784 +12925110,0 +12926742,0 +12926742,0.21077248 +12926778,0.21077248 +12926778,0 +12928662,0 +12928662,0.2082076 +12928722,0.2082076 +12928722,0 +12933120,0 +12933120,0.13789982 +12933126,0.13789982 +12933126,0 +12937530,0 +12937530,0.31065178 +12937584,0.31065178 +12937584,0 +12943554,0 +12943554,0.28092939 +12943566,0.28092939 +12943566,0 +12945492,0 +12945492,0.057030779 +12945510,0.057030779 +12945510,0 +12953802,0 +12953802,0.14242607 +12953808,0.14242607 +12953808,0 +12953916,0 +12953916,0.258449 +12954006,0.258449 +12954006,0 +12958302,0 +12958302,0.14755582 +12958356,0.14755582 +12958356,0 +12990642,0 +12990642,0.084188292 +12990654,0.084188292 +12990654,0 +12990762,0 +12990762,0.21710923 +12990876,0 +12990876,0 +12990876,0.21710923 +12990876,0.42516596 +12990882,0.42516596 +12990882,0 +12990990,0 +12990990,0.22465299 +12991074,0.22465299 +12991074,0 +12991110,0 +12991110,0.065781533 +12991140,0.065781533 +12991140,0 +12991224,0 +12991224,0.09007242 +12991278,0.09007242 +12991278,0 +12991338,0 +12991338,0.11813518 +12991356,0.11813518 +12991356,0 +12998682,0 +12998682,0.097465299 +12998700,0.097465299 +12998700,0 +13002972,0 +13002972,0.24894387 +13002984,0.24894387 +13002984,0 +13003092,0 +13003092,0.1489137 +13003104,0.1489137 +13003104,0 +13003206,0 +13003206,0.22073024 +13003320,0 +13003320,0 +13003320,0.20926373 +13003320,0.22073024 +13003326,0.20926373 +13003326,0 +13007166,0 +13007166,0.22902836 +13007262,0.22902836 +13007262,0 +13007748,0 +13007748,0.2045866 +13007832,0.2045866 +13007832,0 +13008336,0 +13008336,0.17516596 +13008402,0.17516596 +13008402,0 +13008924,0 +13008924,0.22751961 +13008984,0.22751961 +13008984,0 +13009302,0 +13009302,0.16732046 +13009314,0.16732046 +13009314,0 +13009512,0 +13009512,0.22088111 +13009578,0.22088111 +13009578,0 +13010100,0 +13010100,0.2954134 +13010196,0.2954134 +13010196,0 +13010370,0 +13010370,0.36119493 +13010388,0.36119493 +13010388,0 +13010814,0 +13010814,0.41158721 +13010820,0.41158721 +13010820,0 +13014978,0 +13014978,0.19281835 +13015002,0.19281835 +13015002,0 +13022214,0 +13022214,0.87703681 +13022700,0.87703681 +13022700,0 +13027566,0 +13027566,0.035455643 +13027572,0.035455643 +13027572,0 +13027680,0 +13027680,0.26041038 +13027734,0.26041038 +13027734,0 +13027794,0 +13027794,0.12432106 +13027812,0.12432106 +13027812,0 +13027914,0 +13027914,0.0073928787 +13027974,0.0073928787 +13027974,0 +13033002,0 +13033002,0.10153893 +13033014,0.10153893 +13033014,0 +13033116,0 +13033116,0.26101388 +13033140,0.26101388 +13033140,0 +13033230,0 +13033230,0.17350634 +13033272,0.17350634 +13033272,0 +13033350,0 +13033350,0.06925166 +13033356,0.06925166 +13033356,0 +13033620,0 +13033620,0.09097767 +13033668,0.09097767 +13033668,0 +13035348,0 +13035348,0.32226916 +13035366,0.32226916 +13035366,0 +13035468,0 +13035468,0.23415812 +13035510,0.23415812 +13035510,0 +13038054,0 +13038054,0.091279421 +13038066,0.091279421 +13038066,0 +13039170,0 +13039170,0.2015691 +13039176,0.2015691 +13039176,0 +13039290,0 +13039290,0.13880507 +13039362,0.13880507 +13039362,0 +13062516,0 +13062516,0.27791189 +13062522,0.27791189 +13062522,0 +13068600,0 +13068600,0.11225106 +13068606,0.11225106 +13068606,0 +13068720,0 +13068720,0.064272782 +13068780,0.064272782 +13068780,0 +13068834,0 +13068834,0.31080266 +13068858,0.31080266 +13068858,0 +13068948,0 +13068948,0.11949306 +13069002,0.11949306 +13069002,0 +13069062,0 +13069062,0.23838262 +13069086,0.23838262 +13069086,0 +13069182,0 +13069182,0.14966807 +13069242,0.14966807 +13069242,0 +13069296,0 +13069296,0.038473144 +13069302,0.038473144 +13069302,0 +13069410,0 +13069410,0.13759807 +13069446,0.13759807 +13069446,0 +13069530,0 +13069530,0.032589016 +13069584,0.032589016 +13069584,0 +13069644,0 +13069644,0.18105009 +13069680,0.18105009 +13069680,0 +13069758,0 +13069758,0.086149668 +13069764,0.086149668 +13069764,0 +13075650,0 +13075650,0.23249849 +13075692,0.23249849 +13075692,0 +13075764,0 +13075764,0.21273386 +13075782,0.21273386 +13075782,0 +13077318,0 +13077318,0.31125528 +13077714,0.31125528 +13077714,0 +13079154,0 +13079154,0.32996379 +13079454,0.32996379 +13079454,0 +13081650,0 +13081650,0.17592034 +13081656,0.17592034 +13081656,0 +13081764,0 +13081764,0.25618588 +13081842,0.25618588 +13081842,0 +13085742,0 +13085742,0.23627037 +13085892,0.23627037 +13085892,0 +13095078,0 +13095078,0.31653591 +13095138,0.31653591 +13095138,0 +13095312,0 +13095312,0.52504526 +13095966,0.52504526 +13095966,0 +13097148,0 +13097148,0.35787568 +13097304,0.35787568 +13097304,0 +13097910,0 +13097910,0.12945081 +13097940,0.12945081 +13097940,0 +13104876,0 +13104876,0.097616174 +13104894,0.097616174 +13104894,0 +13108428,0 +13108428,0.24305975 +13108470,0.24305975 +13108470,0 +13108542,0 +13108542,0.30009053 +13108572,0.30009053 +13108572,0 +13108656,0 +13108656,0.15751358 +13108716,0.15751358 +13108716,0 +13110294,0 +13110294,0.15359083 +13110318,0.15359083 +13110318,0 +13112568,0 +13112568,0.15691008 +13112580,0.15691008 +13112580,0 +13117782,0 +13117782,0.22284249 +13117884,0.22284249 +13117884,0 +13118370,0 +13118370,0.21801448 +13118460,0.21801448 +13118460,0 +13118952,0 +13118952,0.17124321 +13119036,0.17124321 +13119036,0 +13119540,0 +13119540,0.17697646 +13119624,0.17697646 +13119624,0 +13120128,0 +13120128,0.18089922 +13120206,0.18089922 +13120206,0 +13121106,0 +13121106,0.21197948 +13121160,0.21197948 +13121160,0 +13121688,0 +13121688,0.18527459 +13121838,0.18527459 +13121838,0 +13122276,0 +13122276,0.17893784 +13122342,0.17893784 +13122342,0 +13122864,0 +13122864,0.22736874 +13122954,0.22736874 +13122954,0 +13123188,0 +13123188,0.23687387 +13123320,0.23687387 +13123320,0 +13123452,0 +13123452,0.21605311 +13123536,0.21605311 +13123536,0 +13124040,0 +13124040,0.20021123 +13124106,0.20021123 +13124106,0 +13124622,0 +13124622,0.27459264 +13124712,0.27459264 +13124712,0 +13125210,0 +13125210,0.1913096 +13125270,0.1913096 +13125270,0 +13129722,0 +13129722,0.058841279 +13129728,0.058841279 +13129728,0 +13133550,0 +13133550,0.14981895 +13133592,0.14981895 +13133592,0 +13136082,0 +13136082,0.12552806 +13136088,0.12552806 +13136088,0 +13136196,0 +13136196,0.21982498 +13136202,0.21982498 +13136202,0 +13136310,0 +13136310,0.15027158 +13136322,0.15027158 +13136322,0 +13157178,0 +13157178,0.066234158 +13157202,0.066234158 +13157202,0 +13157940,0 +13157940,0.09037417 +13157982,0.09037417 +13157982,0 +13158054,0 +13158054,0.042848521 +13158114,0.042848521 +13158114,0 +13158168,0 +13158168,0.10863005 +13158288,0.03092939 +13158288,0 +13158294,0 +13158294,0.10863005 +13158306,0.03092939 +13158306,0 +13158402,0 +13158402,0.16535908 +13158510,0.16535908 +13158510,0 +13158516,0 +13158516,0.20413398 +13158636,0.050090525 +13158636,0 +13158726,0 +13158726,0.20413398 +13158744,0.050090525 +13158744,0 +13158750,0 +13158750,0.054013277 +13158780,0.054013277 +13158780,0 +13158864,0 +13158864,0.20866023 +13158888,0.20866023 +13158888,0 +13158984,0 +13158984,0.11587206 +13159002,0.11587206 +13159002,0 +13159098,0 +13159098,0.29737477 +13159104,0.29737477 +13159104,0 +13159212,0 +13159212,0.0095051298 +13159218,0.0095051298 +13159218,0 +13159332,0 +13159332,0.11798431 +13159380,0.11798431 +13159380,0 +13160184,0 +13160184,0.0021122511 +13160190,0.0021122511 +13160190,0 +13160616,0 +13160616,0.27625226 +13160694,0.27625226 +13160694,0 +13163694,0 +13163694,0.25769463 +13163700,0.25769463 +13163700,0 +13164108,0 +13164108,0.24728425 +13164192,0.24728425 +13164192,0 +13166286,0 +13166286,0.24109837 +13166316,0.24109837 +13166316,0 +13167798,0 +13167798,0.11270368 +13167810,0.11270368 +13167810,0 +13172742,0 +13172742,0.25045263 +13172766,0.25045263 +13172766,0 +13173798,0 +13173798,0.40570308 +13174170,0.40570308 +13174170,0 +13181592,0 +13181592,0.31035003 +13181598,0.31035003 +13181598,0 +13181706,0 +13181706,0.1446892 +13181736,0.1446892 +13181736,0 +13182924,0 +13182924,0.18783947 +13182948,0.18783947 +13182948,0 +13183044,0 +13183044,0.076041038 +13183134,0.076041038 +13183134,0 +13185516,0 +13185516,0.14257695 +13185522,0.14257695 +13185522,0 +13186356,0 +13186356,0.14136995 +13186386,0.14136995 +13186386,0 +13186470,0 +13186470,0.058539529 +13186482,0.058539529 +13186482,0 +13191636,0 +13191636,0.21243211 +13191642,0.21243211 +13191642,0 +13191942,0 +13191942,0.13654194 +13191960,0.13654194 +13191960,0 +13192062,0 +13192062,0.31366928 +13192092,0.31366928 +13192092,0 +13196124,0 +13196124,0.22601086 +13196208,0.22601086 +13196208,0 +13199826,0 +13199826,0.27006639 +13199958,0.27006639 +13199958,0 +13208346,0 +13208346,0.22570911 +13208370,0.22570911 +13208370,0 +13211502,0 +13211502,0.11843693 +13211544,0.11843693 +13211544,0 +13211616,0 +13211616,0.13231744 +13211736,0.13231744 +13211736,0 +13216410,0 +13216410,0.15223295 +13216506,0.15223295 +13216506,0 +13223418,0 +13223418,0.44809897 +13223586,0.44809897 +13223586,0 +13242228,0 +13242228,0.13639107 +13242252,0.13639107 +13242252,0 +13242348,0 +13242348,0.15525045 +13242372,0.15525045 +13242372,0 +13242462,0 +13242462,0.12070006 +13242474,0.12070006 +13242474,0 +13242666,0 +13242666,0.0082981291 +13242690,0.0082981291 +13242690,0 +13245432,0 +13245432,0.11496681 +13245450,0.11496681 +13245450,0 +13245546,0 +13245546,0.11873868 +13245564,0.11873868 +13245564,0 +13250784,0 +13250784,0.067592034 +13250808,0.067592034 +13250808,0 +13251642,0 +13251642,0.22133374 +13251660,0.22133374 +13251660,0 +13253412,0 +13253412,0.072570911 +13253460,0.072570911 +13253460,0 +13254000,0 +13254000,0.038774894 +13254018,0.038774894 +13254018,0 +13256172,0 +13256172,0.36059143 +13256634,0.36059143 +13256634,0 +13257354,0 +13257354,0.16354858 +13257372,0.16354858 +13257372,0 +13258008,0 +13258008,0.23234762 +13258362,0.23234762 +13258362,0 +13262106,0 +13262106,0.18753772 +13262148,0.18753772 +13262148,0 +13262976,0 +13262976,0.046167773 +13263006,0.046167773 +13263006,0 +13263096,0 +13263096,0.012522631 +13263102,0.012522631 +13263102,0 +13267494,0 +13267494,0.42742909 +13267926,0.42742909 +13267926,0 +13268514,0 +13268514,0.38382619 +13269180,0.38382619 +13269180,0 +13271178,0 +13271178,0.18753772 +13271220,0.18753772 +13271220,0 +13275096,0 +13275096,0.27097164 +13275108,0.27097164 +13275108,0 +13275210,0 +13275210,0.057332529 +13275282,0.057332529 +13275282,0 +13275330,0 +13275330,0.10184068 +13275336,0.10184068 +13275336,0 +13275444,0 +13275444,0.04043452 +13275498,0.04043452 +13275498,0 +13275558,0 +13275558,0.11179843 +13275564,0.11179843 +13275564,0 +13288362,0 +13288362,0.18648159 +13288482,0.22616174 +13288482,0 +13288488,0 +13288488,0.18648159 +13288494,0.22616174 +13288494,0 +13289352,0 +13289352,0.0015087508 +13289358,0.0015087508 +13289358,0 +13289790,0 +13289790,0.10727218 +13289874,0.10727218 +13289874,0 +13290546,0 +13290546,0.21982498 +13290600,0.21982498 +13290600,0 +13291902,0 +13291902,0.059595655 +13291908,0.059595655 +13291908,0 +13292022,0 +13292022,0.11300543 +13292028,0.11300543 +13292028,0 +13297206,0 +13297206,0.093542547 +13297230,0.093542547 +13297230,0 +13328214,0 +13328214,0.26403138 +13328448,0.16234158 +13328448,0 +13328460,0 +13328460,0.16234158 +13328580,0.26403138 +13328580,0 +13337904,0 +13337904,0.25105613 +13337976,0.25105613 +13337976,0 +13342788,0 +13342788,0.067592034 +13342794,0.067592034 +13342794,0 +13342902,0 +13342902,0.089016295 +13342956,0.089016295 +13342956,0 +13343016,0 +13343016,0.062160531 +13343160,0.062160531 +13343160,0 +13362804,0 +13362804,0.20187085 +13362834,0.20187085 +13362834,0 +13362924,0 +13362924,0.13503319 +13362978,0.13503319 +13362978,0 +13363038,0 +13363038,0.24788775 +13363092,0.24788775 +13363092,0 +13366998,0 +13366998,0.23038624 +13367010,0.23038624 +13367010,0 +13375212,0 +13375212,0.12733856 +13375230,0.12733856 +13375230,0 +13378308,0 +13378308,0.024592637 +13378320,0.024592637 +13378320,0 +13380642,0 +13380642,0.29692215 +13380702,0.29692215 +13380702,0 +13389324,0 +13389324,0.28907664 +13389348,0.28907664 +13389348,0 +13409436,0 +13409436,0.042094146 +13409442,0.042094146 +13409442,0 +13410432,0 +13410432,0.14333132 +13410504,0.14333132 +13410504,0 +13411020,0 +13411020,0.22359686 +13411122,0.22359686 +13411122,0 +13411608,0 +13411608,0.17667471 +13411692,0.17667471 +13411692,0 +13412196,0 +13412196,0.23219674 +13412274,0.23219674 +13412274,0 +13422144,0 +13422144,0.14016295 +13422150,0.14016295 +13422150,0 +13423230,0 +13423230,0.087507544 +13423236,0.087507544 +13423236,0 +13424646,0 +13424646,0.22570911 +13424718,0.22570911 +13424718,0 +13425156,0 +13425156,0.03983102 +13425162,0.03983102 +13425162,0 +13425234,0 +13425234,0.20322873 +13425276,0.11134581 +13425276,0 +13425288,0 +13425288,0.11134581 +13425348,0.20322873 +13425348,0 +13425822,0 +13425822,0.23310199 +13425930,0.23310199 +13425930,0 +13426410,0 +13426410,0.21001811 +13426464,0.21001811 +13426464,0 +13427448,0 +13427448,0.25694025 +13427472,0.25694025 +13427472,0 +13431900,0 +13431900,0.28424864 +13431972,0.28424864 +13431972,0 +13436358,0 +13436358,0.62281231 +13436400,0.62281231 +13436400,0 +13437288,0 +13437288,0.19990947 +13437360,0.19990947 +13437360,0 +13437402,0 +13437402,0.12492456 +13437426,0.12492456 +13437426,0 +13438284,0 +13438284,0.017501509 +13438452,0.017501509 +13438452,0 +13449810,0 +13449810,0.16913096 +13449840,0.16913096 +13449840,0 +13449876,0 +13449876,0.24230537 +13449924,0.014785757 +13449924,0 +13449930,0 +13449930,0.014785757 +13450044,0.095503923 +13450044,0 +13450050,0 +13450050,0.095503923 +13450596,0.24230537 +13450596,0 +13451712,0 +13451712,0.30914303 +13452168,0.30914303 +13452168,0 +13456872,0 +13456872,0.045715148 +13456896,0.045715148 +13456896,0 +13461420,0 +13461420,0.015992758 +13461426,0.015992758 +13461426,0 +13461540,0 +13461540,0.0010561255 +13461546,0.0010561255 +13461546,0 +13467474,0 +13467474,0.32287266 +13467564,0.32287266 +13467564,0 +13474710,0 +13474710,0.31532891 +13474746,0.31532891 +13474746,0 +13475604,0 +13475604,0.11541943 +13475610,0.11541943 +13475610,0 +13496658,0 +13496658,0.031683766 +13496664,0.031683766 +13496664,0 +13506804,0 +13506804,0.12039831 +13506810,0.12039831 +13506810,0 +13509060,0 +13509060,0.36436331 +13509324,0.36436331 +13509324,0 +13510764,0 +13510764,0.07936029 +13510812,0.07936029 +13510812,0 +13511412,0 +13511412,0.1071213 +13511460,0.1071213 +13511460,0 +13512726,0 +13512726,0.06004828 +13512738,0.06004828 +13512738,0 +13512846,0 +13512846,0.093995172 +13512894,0.093995172 +13512894,0 +13515102,0 +13515102,0.043904647 +13515198,0.043904647 +13515198,0 +13515216,0 +13515216,0.22736874 +13515330,0.21801448 +13515330,0 +13515348,0 +13515348,0.21801448 +13515360,0.22736874 +13515360,0 +13515450,0 +13515450,0.02942064 +13515456,0.02942064 +13515456,0 +13515564,0 +13515564,0.057030779 +13515612,0.057030779 +13515612,0 +13515678,0 +13515678,0.11013881 +13515684,0.11013881 +13515684,0 +13515798,0 +13515798,0.27821364 +13515882,0.27821364 +13515882,0 +13515912,0 +13515912,0.19764635 +13515930,0.19764635 +13515930,0 +13516026,0 +13516026,0.10847918 +13516032,0.10847918 +13516032,0 +13519830,0 +13519830,0.04993965 +13519836,0.04993965 +13519836,0 +13526862,0 +13526862,0.26599276 +13526916,0.26599276 +13526916,0 +13533660,0 +13533660,0.086451418 +13533666,0.086451418 +13533666,0 +13533774,0 +13533774,0.083886542 +13533804,0.083886542 +13533804,0 +13533888,0 +13533888,0.29571515 +13533948,0.29571515 +13533948,0 +13542234,0 +13542234,0.26931201 +13542252,0.26931201 +13542252,0 +13545354,0 +13545354,0.3474653 +13545378,0.3474653 +13545378,0 +13545468,0 +13545468,0.0490344 +13545474,0.0490344 +13545474,0 +13547070,0 +13547070,0.027911889 +13547112,0.027911889 +13547112,0 +13549416,0 +13549416,0.16460471 +13549476,0.16460471 +13549476,0 +13549530,0 +13549530,0.050995775 +13549536,0.050995775 +13549536,0 +13554936,0 +13554936,0.48476162 +13554942,0.48476162 +13554942,0 +13564272,0 +13564272,0.23264937 +13564350,0.23264937 +13564350,0 +13568856,0 +13568856,0.1519312 +13568910,0.1519312 +13568910,0 +13568970,0 +13568970,0.31668678 +13569000,0.31668678 +13569000,0 +13583796,0 +13583796,0.26523838 +13584060,0.26523838 +13584060,0 +13591596,0 +13591596,0.14785757 +13591638,0.14785757 +13591638,0 +13593504,0 +13593504,0.20503923 +13593534,0.20503923 +13593534,0 +13597014,0 +13597014,0.10500905 +13597062,0.10500905 +13597062,0 +13597716,0 +13597716,0.10787568 +13597722,0.10787568 +13597722,0 +13600278,0 +13600278,0.08056729 +13600290,0.08056729 +13600290,0 +13600392,0 +13600392,0.33630054 +13600470,0.33630054 +13600470,0 +13600506,0 +13600506,0.14182257 +13600536,0.14182257 +13600536,0 +13600620,0 +13600620,0.26916113 +13600626,0.26916113 +13600626,0 +13607214,0 +13607214,0.17426071 +13607232,0.17426071 +13607232,0 +13607328,0 +13607328,0.20911285 +13607412,0.20911285 +13607412,0 +13607448,0 +13607448,0.0076946288 +13607562,0.0076946288 +13607562,0 +13608486,0 +13608486,0.14212432 +13608516,0.14212432 +13608516,0 +13610952,0 +13610952,0.19115872 +13611018,0.19115872 +13611018,0 +13612584,0 +13612584,0.0016596258 +13612590,0.0016596258 +13612590,0 +13613034,0 +13613034,0.20956548 +13613040,0.20956548 +13613040,0 +13615650,0 +13615650,0.063971032 +13615692,0.063971032 +13615692,0 +13615764,0 +13615764,0.13533494 +13615836,0.13533494 +13615836,0 +13616550,0 +13616550,0.23053712 +13616556,0.23053712 +13616556,0 +13617192,0 +13617192,0.23808087 +13617210,0.23808087 +13617210,0 +13617306,0 +13617306,0.33916717 +13617312,0.33916717 +13617312,0 +13617426,0 +13617426,0.27670489 +13617438,0.27670489 +13617438,0 +13626786,0 +13626786,0.30371153 +13627128,0.24547375 +13627128,0 +13627170,0 +13627170,0.24547375 +13627248,0.28017502 +13627248,0 +13627260,0 +13627260,0.28017502 +13627362,0.28424864 +13627362,0 +13627404,0 +13627404,0.28424864 +13627446,0.30371153 +13627446,0 +13627476,0 +13627476,0.2590525 +13627488,0.2590525 +13627488,0 +13631664,0 +13631664,0.15359083 +13631700,0.15359083 +13631700,0 +13631778,0 +13631778,0.23506337 +13631820,0.23506337 +13631820,0 +13641888,0 +13641888,0.18240797 +13641900,0.18240797 +13641900,0 +13665642,0 +13665642,0.10184068 +13665690,0.10184068 +13665690,0 +13675068,0 +13675068,0.21560048 +13675074,0.21560048 +13675074,0 +13678440,0 +13678440,0.053258902 +13678446,0.053258902 +13678446,0 +13681644,0 +13681644,0.066988533 +13681668,0.066988533 +13681668,0 +13681764,0 +13681764,0.078605914 +13681770,0.078605914 +13681770,0 +13681878,0 +13681878,0.13699457 +13681884,0.13699457 +13681884,0 +13681992,0 +13681992,0.28771877 +13682100,0.28771877 +13682100,0 +13691184,0 +13691184,0.19900422 +13691298,0.23777912 +13691298,0 +13691358,0 +13691358,0.23777912 +13691412,0 +13691412,0 +13691412,0.19900422 +13691412,0.20654798 +13691514,0.20654798 +13691514,0 +13691532,0 +13691532,0.11134581 +13691550,0.11134581 +13691550,0 +13691646,0 +13691646,0.21997586 +13691688,0.21997586 +13691688,0 +13697694,0 +13697694,0.32770066 +13697742,0.32770066 +13697742,0 +13703652,0 +13703652,0.090223295 +13703694,0.090223295 +13703694,0 +13703766,0 +13703766,0.018406759 +13703772,0.018406759 +13703772,0 +13703880,0 +13703880,0.083132167 +13703886,0.083132167 +13703886,0 +13704318,0 +13704318,0.25694025 +13704366,0.25694025 +13704366,0 +13704438,0 +13704438,0.023234762 +13704444,0.023234762 +13704444,0 +13704552,0 +13704552,0.018105009 +13704558,0.018105009 +13704558,0 +13704666,0 +13704666,0.12115269 +13704726,0.12115269 +13704726,0 +13704786,0 +13704786,0.39876282 +13704798,0.39876282 +13704798,0 +13704900,0 +13704900,0.35847918 +13704930,0.35847918 +13704930,0 +13705014,0 +13705014,0.1477067 +13705020,0.1477067 +13705020,0 +13705968,0 +13705968,0.1525347 +13705986,0.1525347 +13705986,0 +13706082,0 +13706082,0.06955341 +13706088,0.06955341 +13706088,0 +13706196,0 +13706196,0.11557031 +13706400,0.11557031 +13706400,0 +13709310,0 +13709310,0.051599276 +13709316,0.051599276 +13709316,0 +13709430,0 +13709430,0.17184671 +13709484,0.17184671 +13709484,0 +13709544,0 +13709544,0.066083283 +13709556,0.066083283 +13709556,0 +13711392,0 +13711392,0.19508147 +13711554,0.19508147 +13711554,0 +13715118,0 +13715118,0.046771273 +13715124,0.046771273 +13715124,0 +13715934,0 +13715934,0.16128546 +13715976,0.16128546 +13715976,0 +13716054,0 +13716054,0.13035607 +13716060,0.13035607 +13716060,0 +13724190,0 +13724190,0.29918527 +13724196,0.29918527 +13724196,0 +13726974,0 +13726974,0.26795413 +13727064,0.26795413 +13727064,0 +13727094,0 +13727094,0.21273386 +13727130,0.21273386 +13727130,0 +13728690,0 +13728690,0.092335546 +13728696,0.092335546 +13728696,0 +13728804,0 +13728804,0.25347013 +13728822,0.25347013 +13728822,0 +13736874,0 +13736874,0.0036210018 +13736880,0.0036210018 +13736880,0 +13769820,0 +13769820,0.0024140012 +13769826,0.0024140012 +13769826,0 +13771836,0 +13771836,0.22872661 +13771860,0.21378998 +13771860,0 +13771884,0 +13771884,0.21378998 +13771890,0.22872661 +13771890,0 +13775070,0 +13775070,0.11044056 +13775076,0.11044056 +13775076,0 +13776630,0 +13776630,0.52414001 +13776690,0.52414001 +13776690,0 +13776756,0 +13776756,0.2457755 +13776798,0.2457755 +13776798,0 +13777914,0 +13777914,0.051901026 +13777920,0.051901026 +13777920,0 +13778136,0 +13778136,0.23823174 +13778148,0.23823174 +13778148,0 +13782594,0 +13782594,0.49547375 +13782672,0.49547375 +13782672,0 +13784676,0 +13784676,0.15570308 +13784724,0.15570308 +13784724,0 +13787766,0 +13787766,0.30371153 +13787856,0.30371153 +13787856,0 +13794162,0 +13794162,0.18527459 +13794174,0.18527459 +13794174,0 +13794282,0 +13794282,0.17818346 +13794300,0.17818346 +13794300,0 +13794828,0 +13794828,0.44689197 +13795614,0.44689197 +13795614,0 +13798668,0 +13798668,0.24803862 +13798722,0.24803862 +13798722,0 +13802040,0 +13802040,0.068497284 +13802154,0.068497284 +13802154,0 +13803510,0 +13803510,0.12070006 +13803522,0.12070006 +13803522,0 +13804320,0 +13804320,0.18648159 +13804368,0.18648159 +13804368,0 +13804434,0 +13804434,0.047525649 +13804488,0.047525649 +13804488,0 +13804548,0 +13804548,0.17999396 +13804554,0.17999396 +13804554,0 +13804746,0 +13804746,0.073777912 +13804800,0.073777912 +13804800,0 +13805382,0 +13805382,0.2469825 +13805400,0.2469825 +13805400,0 +13806282,0 +13806282,0.061707906 +13806288,0.061707906 +13806288,0 +13806834,0 +13806834,0.097163549 +13806876,0.097163549 +13806876,0 +13808532,0 +13808532,0.22344599 +13808592,0.22344599 +13808592,0 +13810290,0 +13810290,0.27821364 +13810308,0.27821364 +13810308,0 +13811886,0 +13811886,0.21846711 +13811892,0.21846711 +13811892,0 +13816806,0 +13816806,0.1404647 +13816854,0.1404647 +13816854,0 +13817970,0 +13817970,0.26689801 +13817988,0.26689801 +13817988,0 +13822950,0 +13822950,0.012070006 +13822956,0.012070006 +13822956,0 +13826730,0 +13826730,0.33343392 +13826736,0.33343392 +13826736,0 +13839954,0 +13839954,0.35455643 +13839978,0.35455643 +13839978,0 +13851426,0 +13851426,0.1440857 +13851474,0.1440857 +13851474,0 +13852296,0 +13852296,0.20066385 +13852398,0.20066385 +13852398,0 +13859724,0 +13859724,0.24064575 +13859766,0.24064575 +13859766,0 +13859844,0 +13859844,0.24426675 +13859898,0.24426675 +13859898,0 +13859958,0 +13859958,0.12673506 +13859976,0.12673506 +13859976,0 +13860072,0 +13860072,0.026403138 +13860078,0.026403138 +13860078,0 +13863930,0 +13863930,0.13050694 +13863972,0.13050694 +13863972,0 +13868622,0 +13868622,0.19719372 +13869156,0.19719372 +13869156,0 +13875162,0 +13875162,0.093391672 +13875168,0.093391672 +13875168,0 +13875282,0 +13875282,0.072872661 +13875288,0.072872661 +13875288,0 +13875396,0 +13875396,0.1579662 +13875504,0.1579662 +13875504,0 +13875510,0 +13875510,0.17607121 +13875540,0.17607121 +13875540,0 +13875630,0 +13875630,0.23672299 +13875642,0.23672299 +13875642,0 +13876104,0 +13876104,0.32815329 +13876146,0.32815329 +13876146,0 +13878906,0 +13878906,0.26041038 +13878978,0.26041038 +13878978,0 +13885464,0 +13885464,0.12477369 +13885482,0.12477369 +13885482,0 +13885578,0 +13885578,0.23747737 +13885626,0.23747737 +13885626,0 +13886958,0 +13886958,0.32815329 +13886976,0.32815329 +13886976,0 +13888254,0 +13888254,0.16973446 +13888380,0.16973446 +13888380,0 +13890990,0 +13890990,0.021876886 +13890996,0.021876886 +13890996,0 +13892448,0 +13892448,0.0508449 +13892454,0.0508449 +13892454,0 +13892562,0 +13892562,0.21575136 +13892586,0.21575136 +13892586,0 +13892676,0 +13892676,0.33132167 +13892706,0.33132167 +13892706,0 +13892796,0 +13892796,0.081321666 +13892838,0.081321666 +13892838,0 +13892910,0 +13892910,0.27640314 +13892934,0.087809294 +13892934,0 +13892946,0 +13892946,0.27640314 +13893024,0.03062764 +13893024,0 +13893030,0 +13893030,0.03062764 +13893138,0.087809294 +13893138,0 +13933752,0 +13933752,0.28666264 +13934304,0.28666264 +13934304,0 +13937334,0 +13937334,0.12945081 +13937370,0.12945081 +13937370,0 +13937454,0 +13937454,0.0043753772 +13937460,0.0043753772 +13937460,0 +13942086,0 +13942086,0.3492758 +13942392,0.3492758 +13942392,0 +13942530,0 +13942530,0.0072420036 +13942554,0.0072420036 +13942554,0 +13942938,0 +13942938,0.096710923 +13942944,0.096710923 +13942944,0 +13943058,0 +13943058,0.024140012 +13943064,0.024140012 +13943064,0 +13943922,0 +13943922,0.14318045 +13944222,0.14318045 +13944222,0 +13944408,0 +13944408,0.18286059 +13944480,0.18286059 +13944480,0 +13944996,0 +13944996,0.23732649 +13945038,0.23732649 +13945038,0 +13945584,0 +13945584,0.14423657 +13945680,0.14423657 +13945680,0 +13945758,0 +13945758,0.22978274 +13945776,0.22978274 +13945776,0 +13945872,0 +13945872,0.17712734 +13945944,0.17712734 +13945944,0 +13945992,0 +13945992,0.19176222 +13946022,0.19176222 +13946022,0 +13946106,0 +13946106,0.28530477 +13946172,0 +13946172,0 +13946172,0.1973446 +13946172,0.28530477 +13946238,0.1973446 +13946238,0 +13946760,0 +13946760,0.23219674 +13946844,0.23219674 +13946844,0 +13957086,0 +13957086,0.2003621 +13957134,0.2003621 +13957134,0 +13957386,0 +13957386,0.33961979 +13957470,0.33961979 +13957470,0 +13967562,0 +13967562,0.17094146 +13967604,0.17094146 +13967604,0 +13967814,0 +13967814,0.23581774 +13967874,0.23581774 +13967874,0 +13970700,0 +13970700,0.86240193 +13970982,0.86240193 +13970982,0 +13975260,0 +13975260,0.33267954 +13975680,0.33267954 +13975680,0 +13976556,0 +13976556,0.014936632 +13976562,0.014936632 +13976562,0 +13976766,0 +13976766,0.21077248 +13976790,0.21077248 +13976790,0 +13978590,0 +13978590,0.088261919 +13978602,0.088261919 +13978602,0 +13978926,0 +13978926,0.22646349 +13978950,0.22646349 +13978950,0 +13979130,0 +13979130,0.1549487 +13979184,0.1549487 +13979184,0 +14006664,0 +14006664,0.30054315 +14006670,0.30054315 +14006670,0 +14008206,0 +14008206,0.21152686 +14008266,0.21152686 +14008266,0 +14028486,0 +14028486,0.27202776 +14028498,0.27202776 +14028498,0 +14029260,0 +14029260,0.21907061 +14029290,0.21907061 +14029290,0 +14029374,0 +14029374,0.23868437 +14029398,0.23868437 +14029398,0 +14029494,0 +14029494,0.26855763 +14029512,0.26855763 +14029512,0 +14030388,0 +14030388,0.3056729 +14030874,0.3056729 +14030874,0 +14038260,0 +14038260,0.11511768 +14038338,0.11511768 +14038338,0 +14045358,0 +14045358,0.06925166 +14045382,0.06925166 +14045382,0 +14045472,0 +14045472,0.31321666 +14045496,0.31321666 +14045496,0 +14045586,0 +14045586,0.12100181 +14045628,0.12100181 +14045628,0 +14049666,0 +14049666,0.19764635 +14049672,0 +14049672,0 +14049672,0.19764635 +14049672,0.21786361 +14049786,0.21786361 +14049786,0 +14059206,0 +14059206,0.24079662 +14059212,0.24079662 +14059212,0 +14059320,0 +14059320,0.0066385033 +14059326,0.0066385033 +14059326,0 +14059440,0 +14059440,0.1519312 +14059476,0.1519312 +14059476,0 +14059554,0 +14059554,0.090826795 +14059572,0 +14059572,0 +14059572,0.090826795 +14059572,0.10259505 +14059626,0.10259505 +14059626,0 +14059668,0 +14059668,0.248793 +14059710,0.248793 +14059710,0 +14064504,0 +14064504,0.17969221 +14064546,0.17969221 +14064546,0 +14064594,0 +14064594,0.15449608 +14064624,0.15449608 +14064624,0 +14065398,0 +14065398,0.0037718769 +14065404,0.0037718769 +14065404,0 +14068188,0 +14068188,0.23204587 +14068224,0.23204587 +14068224,0 +14070204,0 +14070204,0.21424261 +14070210,0.21424261 +14070210,0 +14070318,0 +14070318,0.20534098 +14070336,0.044508147 +14070336,0 +14070342,0 +14070342,0.044508147 +14070402,0.20534098 +14070402,0 +14071572,0 +14071572,0.1035003 +14071710,0.1035003 +14071710,0 +14073318,0 +14073318,0.094749547 +14073324,0.094749547 +14073324,0 +14074104,0 +14074104,0.00015087508 +14074110,0.00015087508 +14074110,0 +14078490,0 +14078490,0.15585395 +14078502,0.15585395 +14078502,0 +14078610,0 +14078610,0.20187085 +14078724,0.0070911285 +14078724,0 +14078766,0 +14078766,0.0070911285 +14078796,0.20187085 +14078796,0 +14082516,0 +14082516,0.054164152 +14082534,0.054164152 +14082534,0 +14097792,0 +14097792,0.37009656 +14098320,0.37009656 +14098320,0 +14107044,0 +14107044,0.30054315 +14107764,0.30054315 +14107764,0 +14112846,0 +14112846,0.045413398 +14112906,0.045413398 +14112906,0 +14115036,0 +14115036,0.18768859 +14115108,0.18768859 +14115108,0 +14117004,0 +14117004,0.2070006 +14117034,0.2070006 +14117034,0 +14117118,0 +14117118,0.17109234 +14117148,0.17109234 +14117148,0 +14117232,0 +14117232,0.075286663 +14117274,0.075286663 +14117274,0 +14117352,0 +14117352,0.29511165 +14117394,0.29511165 +14117394,0 +14117466,0 +14117466,0.13277007 +14117472,0.13277007 +14117472,0 +14117580,0 +14117580,0.048430899 +14117616,0.048430899 +14117616,0 +14131560,0 +14131560,0.065027158 +14131566,0.065027158 +14131566,0 +14135070,0 +14135070,0.22555824 +14135118,0.22555824 +14135118,0 +14141694,0 +14141694,0.85878093 +14142072,0.85878093 +14142072,0 +14145834,0 +14145834,0.25950513 +14145930,0.25950513 +14145930,0 +14157072,0 +14157072,0.31804466 +14157078,0.31804466 +14157078,0 +14160144,0 +14160144,0.32996379 +14160156,0.32996379 +14160156,0 +14162508,0 +14162508,0.37507544 +14162664,0.06095353 +14162664,0 +14162670,0 +14162670,0.06095353 +14163078,0.37507544 +14163078,0 +14168040,0 +14168040,0.023687387 +14168118,0.023687387 +14168118,0 +14191560,0 +14191560,0.38593844 +14191986,0.38593844 +14191986,0 +14193036,0 +14193036,0.22797224 +14193336,0.22797224 +14193336,0 +14199948,0 +14199948,0.044206397 +14199990,0.044206397 +14199990,0 +14201370,0 +14201370,0.62085094 +14201844,0.62085094 +14201844,0 +14204292,0 +14204292,0.13156307 +14204334,0.13156307 +14204334,0 +14204406,0 +14204406,0.23204587 +14204430,0.23204587 +14204430,0 +14206464,0 +14206464,0.37432106 +14206470,0.37432106 +14206470,0 +14206860,0 +14206860,0.08946892 +14206890,0.08946892 +14206890,0 +14207478,0 +14207478,0.43648159 +14207646,0.43648159 +14207646,0 +14213814,0 +14213814,0.04013277 +14213868,0.04013277 +14213868,0 +14215602,0 +14215602,0.14876282 +14215614,0.14876282 +14215614,0 +14218392,0 +14218392,0.46861798 +14218398,0.46861798 +14218398,0 +14218506,0 +14218506,0.0045262523 +14218512,0.0045262523 +14218512,0 +14218626,0 +14218626,0.27957151 +14218740,0.24713337 +14218740,0 +14218752,0 +14218752,0 +14218752,0.27957151 +14218752,0.24713337 +14218854,0 +14218854,0.15781533 +14218908,0.15781533 +14218908,0 +14219358,0 +14219358,0.1047073 +14219370,0.1047073 +14219370,0 +14222556,0 +14222556,0.25347013 +14222622,0.25347013 +14222622,0 +14224230,0 +14224230,0.1083283 +14224242,0.1083283 +14224242,0 +14230596,0 +14230596,0.12794206 +14230710,0.096258298 +14230710,0 +14230740,0 +14230740,0.096258298 +14230788,0.12794206 +14230788,0 +14232870,0 +14232870,0.074834037 +14232936,0.074834037 +14232936,0 +14236446,0 +14236446,0.076493663 +14236482,0.076493663 +14236482,0 +14236560,0 +14236560,0.11270368 +14236626,0.11270368 +14236626,0 +14237748,0 +14237748,0.18165359 +14237778,0.18165359 +14237778,0 +14237868,0 +14237868,0.29465902 +14237916,0.29465902 +14237916,0 +14239386,0 +14239386,0.20549185 +14239446,0.20549185 +14239446,0 +14239974,0 +14239974,0.20911285 +14240082,0.20911285 +14240082,0 +14243442,0 +14243442,0.0076946288 +14243484,0.0076946288 +14243484,0 +14243748,0 +14243748,0.16007846 +14243772,0.16007846 +14243772,0 +14243862,0 +14243862,0.12658419 +14243934,0.12658419 +14243934,0 +14245158,0 +14245158,0.15841883 +14245164,0.15841883 +14245164,0 +14246076,0 +14246076,0.27957151 +14246184,0.27957151 +14246184,0 +14251284,0 +14251284,0.58252867 +14251554,0.58252867 +14251554,0 +14253114,0 +14253114,0.52730839 +14253420,0.52730839 +14253420,0 +14254950,0 +14254950,0.39484007 +14255340,0.39484007 +14255340,0 +14274396,0 +14274396,0.1949306 +14274426,0.1949306 +14274426,0 +14274510,0 +14274510,0.085998793 +14274516,0.085998793 +14274516,0 +14274630,0 +14274630,0.23280024 +14274690,0.23280024 +14274690,0 +14274744,0 +14274744,0.17637296 +14274762,0.17637296 +14274762,0 +14278704,0 +14278704,0.28681352 +14279010,0.28681352 +14279010,0 +14281590,0 +14281590,0.63699457 +14281956,0.63699457 +14281956,0 +14284332,0 +14284332,0.12085094 +14284344,0.12085094 +14284344,0 +14284452,0 +14284452,0.29828002 +14284464,0.29828002 +14284464,0 +14284566,0 +14284566,0.28470127 +14284614,0.28470127 +14284614,0 +14287986,0 +14287986,0.031532891 +14287992,0.031532891 +14287992,0 +14288106,0 +14288106,0.17154496 +14288118,0.17154496 +14288118,0 +14288220,0 +14288220,0.034399517 +14288226,0.034399517 +14288226,0 +14288334,0 +14288334,0.074381412 +14288340,0.074381412 +14288340,0 +14292426,0 +14292426,0.17033796 +14292528,0.17033796 +14292528,0 +14292540,0 +14292540,0.26282438 +14292654,0.26282438 +14292654,0 +14292660,0 +14292660,0.31698853 +14292666,0.31698853 +14292666,0 +14299788,0 +14299788,0.067139409 +14299878,0.067139409 +14299878,0 +14306862,0 +14306862,0.0067893784 +14306886,0.0067893784 +14306886,0 +14315208,0 +14315208,0.2445685 +14315232,0.2445685 +14315232,0 +14319678,0 +14319678,0.23461074 +14319690,0.23461074 +14319690,0 +14322924,0 +14322924,0.53726614 +14323446,0.53726614 +14323446,0 +14324892,0 +14324892,0.12582981 +14325000,0.12582981 +14325000,0 +14327304,0 +14327304,0.1579662 +14327394,0.1579662 +14327394,0 +14327418,0 +14327418,0.17622209 +14327430,0.17622209 +14327430,0 +14327538,0 +14327538,0.031231141 +14327598,0.031231141 +14327598,0 +14327652,0 +14327652,0.10153893 +14327688,0.10153893 +14327688,0 +14329224,0 +14329224,0.18286059 +14329242,0.18286059 +14329242,0 +14329800,0 +14329800,0.23355462 +14329896,0.23355462 +14329896,0 +14330952,0 +14330952,0.35485818 +14331330,0.35485818 +14331330,0 +14332782,0 +14332782,0.021575136 +14332788,0.27670489 +14332788,0 +14332800,0 +14332800,0.021575136 +14333148,0.27670489 +14333148,0 +14364792,0 +14364792,0.16219071 +14364822,0.16219071 +14364822,0 +14366250,0 +14366250,0.007996379 +14366268,0.007996379 +14366268,0 +14367054,0 +14367054,0.0073928787 +14367144,0.0073928787 +14367144,0 +14368260,0 +14368260,0.0087507544 +14368278,0.0087507544 +14368278,0 +14369856,0 +14369856,0.16762221 +14369898,0.16762221 +14369898,0 +14369970,0 +14369970,0.0055823778 +14369976,0.0055823778 +14369976,0 +14369982,0 +14369982,0.29013277 +14370012,0.29013277 +14370012,0 +14370090,0 +14370090,0.062462281 +14370096,0.20956548 +14370096,0 +14370120,0 +14370120,0.20956548 +14370162,0.062462281 +14370162,0 +14370204,0 +14370204,0.10500905 +14370258,0.10500905 +14370258,0 +14370318,0 +14370318,0.35983705 +14370324,0.35983705 +14370324,0 +14370474,0 +14370474,0.21318648 +14370582,0.21318648 +14370582,0 +14371062,0 +14371062,0.16219071 +14371158,0.16219071 +14371158,0 +14371356,0 +14371356,0.13850332 +14371410,0.13850332 +14371410,0 +14371644,0 +14371644,0.18150272 +14371692,0.18150272 +14371692,0 +14372232,0 +14372232,0.21680748 +14372292,0.21680748 +14372292,0 +14372820,0 +14372820,0.23234762 +14372886,0.23234762 +14372886,0 +14373492,0 +14373492,0.49381412 +14373522,0.49381412 +14373522,0 +14381694,0 +14381694,0.23264937 +14381760,0.23264937 +14381760,0 +14383596,0 +14383596,0.27640314 +14383602,0.27640314 +14383602,0 +14388480,0 +14388480,0.14152082 +14388492,0.14152082 +14388492,0 +14408496,0 +14408496,0.32181654 +14408550,0.32181654 +14408550,0 +14413278,0 +14413278,0.23943874 +14413308,0.23943874 +14413308,0 +14413392,0 +14413392,0.25769463 +14413398,0.25769463 +14413398,0 +14414640,0 +14414640,0.3092939 +14414676,0.3092939 +14414676,0 +14415678,0 +14415678,0.16354858 +14415756,0.16354858 +14415756,0 +14417856,0 +14417856,0.42939046 +14417868,0.42939046 +14417868,0 +14418156,0 +14418156,0.39574532 +14418228,0.39574532 +14418228,0 +14418450,0 +14418450,0.34459867 +14418480,0.34459867 +14418480,0 +14418750,0 +14418750,0.47404949 +14418780,0.47404949 +14418780,0 +14421384,0 +14421384,0.061104406 +14421402,0.061104406 +14421402,0 +14422500,0 +14422500,0.31351841 +14422524,0.31351841 +14422524,0 +14425242,0 +14425242,0.0076946288 +14425248,0.0076946288 +14425248,0 +14458704,0 +14458704,0.0034701267 +14458710,0.0034701267 +14458710,0 +14462592,0 +14462592,0.15238383 +14462610,0.15238383 +14462610,0 +14464080,0 +14464080,0.15932408 +14464188,0.15932408 +14464188,0 +14464194,0 +14464194,0.17184671 +14464236,0.17184671 +14464236,0 +14464338,0 +14464338,0.093089922 +14464350,0.093089922 +14464350,0 +14466012,0 +14466012,0.15887145 +14466072,0.15887145 +14466072,0 +14466132,0 +14466132,0.079511165 +14466186,0.079511165 +14466186,0 +14467506,0 +14467506,0.16852746 +14467572,0.20383223 +14467572,0 +14467608,0 +14467608,0.20383223 +14467620,0.076041038 +14467620,0 +14467626,0 +14467626,0.076041038 +14467644,0.16852746 +14467644,0 +14467686,0 +14467686,0.21952323 +14467710,0.21952323 +14467710,0 +14469696,0 +14469696,0.27881714 +14469738,0.27881714 +14469738,0 +14469810,0 +14469810,0.092184671 +14469852,0.092184671 +14469852,0 +14469930,0 +14469930,0.20835848 +14469978,0.20835848 +14469978,0 +14470044,0 +14470044,0.0093542547 +14470050,0.0093542547 +14470050,0 +14470158,0 +14470158,0.063820157 +14470182,0.063820157 +14470182,0 +14471052,0 +14471052,0.13820157 +14471058,0.13820157 +14471058,0 +14473440,0 +14473440,0.25105613 +14473452,0.25105613 +14473452,0 +14478960,0 +14478960,0.038473144 +14478966,0.038473144 +14478966,0 +14480514,0 +14480514,0.26870851 +14480646,0.26870851 +14480646,0 +14480652,0 +14480652,0.13503319 +14480832,0.13503319 +14480832,0 +14481090,0 +14481090,0.29586602 +14481114,0.29586602 +14481114,0 +14485068,0 +14485068,0.12914906 +14485104,0.12914906 +14485104,0 +14485752,0 +14485752,0.26825588 +14485812,0.26825588 +14485812,0 +14488320,0 +14488320,0.28696439 +14488380,0.28696439 +14488380,0 +14490006,0 +14490006,0.21529873 +14490066,0.21529873 +14490066,0 +14490210,0 +14490210,0.40570308 +14490234,0.40570308 +14490234,0 +14491806,0 +14491806,0.33961979 +14491830,0.33961979 +14491830,0 +14491926,0 +14491926,0.20684973 +14491932,0.20684973 +14491932,0 +14492040,0 +14492040,0.16671696 +14492052,0.16671696 +14492052,0 +14494662,0 +14494662,0.31547978 +14494728,0.31547978 +14494728,0 +14504184,0 +14504184,0.38940857 +14504418,0.38940857 +14504418,0 +14506020,0 +14506020,0.32996379 +14506632,0.32996379 +14506632,0 +14506884,0 +14506884,0.098068799 +14506902,0.098068799 +14506902,0 +14514660,0 +14514660,0.34097767 +14514666,0.34097767 +14514666,0 +14517456,0 +14517456,0.10561255 +14517474,0.10561255 +14517474,0 +14534478,0 +14534478,0.001961376 +14534484,0.001961376 +14534484,0 +14537766,0 +14537766,0.062764031 +14537772,0.062764031 +14537772,0 +14538168,0 +14538168,0.22691611 +14538612,0.23415812 +14538612,0 +14538690,0 +14538690,0.22691611 +14538720,0.23415812 +14538720,0 +14538726,0 +14538726,0.0070911285 +14538732,0.0070911285 +14538732,0 +14538840,0 +14538840,0.26674713 +14538852,0.26674713 +14538852,0 +14540004,0 +14540004,0.25995775 +14540364,0.25995775 +14540364,0 +14545308,0 +14545308,0.16732046 +14545326,0.16732046 +14545326,0 +14545422,0 +14545422,0.24351237 +14545542,0.2445685 +14545542,0 +14545554,0 +14545554,0.24351237 +14545572,0.2445685 +14545572,0 +14549394,0 +14549394,0.17290284 +14549412,0.17290284 +14549412,0 +14554146,0 +14554146,0.08946892 +14554182,0.08946892 +14554182,0 +14564322,0 +14564322,0.29209415 +14564328,0.29209415 +14564328,0 +14571978,0 +14571978,0.19281835 +14572002,0.19281835 +14572002,0 +14574480,0 +14574480,0.11873868 +14574486,0.11873868 +14574486,0 +14581914,0 +14581914,0.19161135 +14581944,0.19161135 +14581944,0 +14582376,0 +14582376,0.073325287 +14582388,0.073325287 +14582388,0 +14582496,0 +14582496,0.12296319 +14582502,0.12296319 +14582502,0 +14582610,0 +14582610,0.0070911285 +14582658,0.0070911285 +14582658,0 +14582724,0 +14582724,0.20549185 +14582748,0.20549185 +14582748,0 +14582838,0 +14582838,0.098672299 +14583000,0.098672299 +14583000,0 +14584788,0 +14584788,0.18904647 +14584890,0.18904647 +14584890,0 +14585376,0 +14585376,0.18844297 +14585442,0.18844297 +14585442,0 +14585964,0 +14585964,0.18376584 +14586018,0.18376584 +14586018,0 +14586546,0 +14586546,0.17939046 +14586654,0.17939046 +14586654,0 +14587134,0 +14587134,0.22585999 +14587236,0.22585999 +14587236,0 +14590632,0 +14590632,0.0073928787 +14590752,0 +14590752,0 +14590752,0.0073928787 +14590752,0.13820157 +14590776,0.13820157 +14590776,0 +14591112,0 +14591112,0.10681955 +14591178,0.10681955 +14591178,0 +14591232,0 +14591232,0.066385033 +14591238,0.066385033 +14591238,0 +14591346,0 +14591346,0.056125528 +14591382,0.056125528 +14591382,0 +14591862,0 +14591862,0.35274593 +14591898,0.35274593 +14591898,0 +14591982,0 +14591982,0.13593844 +14592000,0.13593844 +14592000,0 +14592096,0 +14592096,0.11526856 +14592192,0.11526856 +14592192,0 +14592210,0 +14592210,0.13714544 +14592216,0.13714544 +14592216,0 +14593470,0 +14593470,0.12929994 +14593500,0.12929994 +14593500,0 +14613810,0 +14613810,0.36707906 +14613834,0.36707906 +14613834,0 +14628402,0 +14628402,0.45503923 +14628858,0.45503923 +14628858,0 +14630238,0 +14630238,0.40162945 +14631594,0.40162945 +14631594,0 +14632890,0 +14632890,0.19659022 +14632986,0.19659022 +14632986,0 +14635578,0 +14635578,0.32332529 +14635614,0.32332529 +14635614,0 +14637102,0 +14637102,0.20473748 +14637216,0.20473748 +14637216,0 +14639886,0 +14639886,0.19628847 +14639988,0.19628847 +14639988,0 +14640006,0 +14640006,0.10440555 +14640018,0.10440555 +14640018,0 +14640120,0 +14640120,0.23581774 +14640180,0.23581774 +14640180,0 +14642178,0 +14642178,0.53545564 +14642244,0.53545564 +14642244,0 +14642520,0 +14642520,0.37447194 +14642586,0.37447194 +14642586,0 +14644692,0 +14644692,0.23491249 +14644710,0.23491249 +14644710,0 +14646636,0 +14646636,0.22691611 +14646690,0.22691611 +14646690,0 +14651088,0 +14651088,0.38322269 +14651112,0.38322269 +14651112,0 +14653590,0 +14653590,0.016596258 +14653608,0.016596258 +14653608,0 +14657754,0 +14657754,0.007996379 +14657760,0.007996379 +14657760,0 +14657868,0 +14657868,0.096107423 +14658042,0.096107423 +14658042,0 +14658972,0 +14658972,0.052504526 +14658978,0.052504526 +14658978,0 +14659032,0 +14659032,0.095956548 +14659074,0.095956548 +14659074,0 +14659146,0 +14659146,0.33705492 +14659242,0.33705492 +14659242,0 +14659266,0 +14659266,0.14514182 +14659278,0.14514182 +14659278,0 +14667072,0 +14667072,0.20262523 +14667078,0.20262523 +14667078,0 +14671848,0 +14671848,0.39001207 +14672184,0.39001207 +14672184,0 +14673582,0 +14673582,0.12688594 +14673642,0.12688594 +14673642,0 +14675226,0 +14675226,0.15268558 +14675274,0.15268558 +14675274,0 +14675946,0 +14675946,0.0075437538 +14675964,0.0075437538 +14675964,0 +14676726,0 +14676726,0.30295715 +14676732,0.30295715 +14676732,0 +14713542,0 +14713542,0.11315631 +14713584,0.11315631 +14713584,0 +14720568,0 +14720568,0.032136391 +14720628,0.032136391 +14720628,0 +14720682,0 +14720682,0.12567894 +14720688,0.12567894 +14720688,0 +14720802,0 +14720802,0.072420036 +14720898,0.072420036 +14720898,0 +14723448,0 +14723448,0.14438745 +14723508,0.14438745 +14723508,0 +14727312,0 +14727312,0.28394689 +14727342,0.28394689 +14727342,0 +14727378,0 +14727378,0.12447194 +14727396,0.12447194 +14727396,0 +14727492,0 +14727492,0.32573929 +14727498,0.32573929 +14727498,0 +14727732,0 +14727732,0.17652384 +14727750,0.17652384 +14727750,0 +14729316,0 +14729316,0.27097164 +14729430,0.13744719 +14729430,0 +14729448,0 +14729448,0.27097164 +14729550,0.20609535 +14729550,0 +14729568,0 +14729568,0.13744719 +14729664,0.1483102 +14729664,0 +14729676,0 +14729676,0.1483102 +14729706,0.20609535 +14729706,0 +14729778,0 +14729778,0.20292698 +14729820,0.20292698 +14729820,0 +14729898,0 +14729898,0.065479783 +14729928,0.065479783 +14729928,0 +14730012,0 +14730012,0.14121907 +14730030,0.14121907 +14730030,0 +14730126,0 +14730126,0.17803259 +14730216,0.17803259 +14730216,0 +14730246,0 +14730246,0.28515389 +14730252,0.28515389 +14730252,0 +14730324,0 +14730324,0.49019312 +14730360,0.11044056 +14730360,0 +14730390,0 +14730390,0 +14730390,0.49019312 +14730390,0.11044056 +14732232,0 +14732232,0.25920338 +14732268,0.25920338 +14732268,0 +14732298,0 +14732298,0.22344599 +14732316,0.22344599 +14732316,0 +14749026,0 +14749026,0.00030175015 +14749032,0.00030175015 +14749032,0 +14754006,0 +14754006,0.15706095 +14754054,0.15706095 +14754054,0 +14755266,0 +14755266,0.10666868 +14755308,0.10666868 +14755308,0 +14755386,0 +14755386,0.10304768 +14755494,0.10304768 +14755494,0 +14755680,0 +14755680,0.16762221 +14755686,0.16762221 +14755686,0 +14758860,0 +14758860,0.16777308 +14758878,0.16777308 +14758878,0 +14761878,0 +14761878,0.13246832 +14761896,0.13246832 +14761896,0 +14761932,0 +14761932,0.11707906 +14761992,0.16701871 +14761992,0 +14762004,0 +14762004,0 +14762004,0.16701871 +14762004,0.11707906 +14762040,0 +14762040,0.040283645 +14762046,0.040283645 +14762046,0 +14762160,0 +14762160,0.31683766 +14762166,0.31683766 +14762166,0 +14762274,0 +14762274,0.0073928787 +14762322,0.0073928787 +14762322,0 +14762388,0 +14762388,0.11089318 +14762400,0.11089318 +14762400,0 +14763402,0 +14763402,0.097616174 +14763426,0.097616174 +14763426,0 +14768022,0 +14768022,0.083283042 +14768058,0.083283042 +14768058,0 +14779668,0 +14779668,0.045715148 +14779722,0.045715148 +14779722,0 +14793234,0 +14793234,0.28062764 +14793288,0.28062764 +14793288,0 +14796792,0 +14796792,0.0076946288 +14796846,0.0076946288 +14796846,0 +14800038,0 +14800038,0.81819553 +14800512,0.81819553 +14800512,0 +14804406,0 +14804406,0.10033193 +14804418,0.10033193 +14804418,0 +14806920,0 +14806920,0.21167773 +14806944,0.21167773 +14806944,0 +14807760,0 +14807760,0.21318648 +14807772,0.21318648 +14807772,0 +14810940,0 +14810940,0.042697646 +14810946,0.042697646 +14810946,0 +14810952,0 +14810952,0.057483404 +14810958,0.057483404 +14810958,0 +14811054,0 +14811054,0.038171394 +14811066,0 +14811066,0 +14811066,0.038171394 +14811066,0.32181654 +14811090,0.32181654 +14811090,0 +14811168,0 +14811168,0.09037417 +14811174,0.09037417 +14811174,0 +14811654,0 +14811654,0.1591732 +14811672,0.1591732 +14811672,0 +14814042,0 +14814042,0.050392275 +14814072,0.050392275 +14814072,0 +14818632,0 +14818632,0.2433615 +14818746,0.2433615 +14818746,0 +14820012,0 +14820012,0.21907061 +14820018,0.21907061 +14820018,0 +14820174,0 +14820174,0.1955341 +14820198,0.1955341 +14820198,0 +14820288,0 +14820288,0.095654798 +14820324,0.095654798 +14820324,0 +14820408,0 +14820408,0.092939046 +14820414,0.092939046 +14820414,0 +14829300,0 +14829300,0.042094146 +14829306,0.042094146 +14829306,0 +14838426,0 +14838426,0.17757996 +14838486,0.17757996 +14838486,0 +14839014,0 +14839014,0.18980084 +14839110,0.18980084 +14839110,0 +14839152,0 +14839152,0.34293905 +14839242,0.34293905 +14839242,0 +14839602,0 +14839602,0.21484611 +14839686,0.21484611 +14839686,0 +14840190,0 +14840190,0.14318045 +14840244,0.14318045 +14840244,0 +14840772,0 +14840772,0.17275196 +14840856,0.17275196 +14840856,0 +14841360,0 +14841360,0.24290887 +14841426,0.24290887 +14841426,0 +14843610,0 +14843610,0.3577248 +14843670,0.3577248 +14843670,0 +14844948,0 +14844948,0.34474955 +14845128,0.34474955 +14845128,0 +14845248,0 +14845248,0.34067592 +14845308,0.34067592 +14845308,0 +14846064,0 +14846064,0.22314424 +14846130,0.22314424 +14846130,0 +14848152,0 +14848152,0.10259505 +14848164,0.10259505 +14848164,0 +14848266,0 +14848266,0.22887749 +14848272,0.22887749 +14848272,0 +14848386,0 +14848386,0.22012674 +14848422,0.22012674 +14848422,0 +14848500,0 +14848500,0.16234158 +14848542,0.16234158 +14848542,0 +14848614,0 +14848614,0.060500905 +14848620,0.060500905 +14848620,0 +14848734,0 +14848734,0.0070911285 +14848782,0.0070911285 +14848782,0 +14850522,0 +14850522,0.37462281 +14850600,0.37462281 +14850600,0 +14851674,0 +14851674,0.13699457 +14851740,0.13699457 +14851740,0 +14854584,0 +14854584,0.25814725 +14854596,0.25814725 +14854596,0 +14854884,0 +14854884,0.36496681 +14854956,0.36496681 +14854956,0 +14854974,0 +14854974,0.243965 +14855034,0.243965 +14855034,0 +14855184,0 +14855184,0.55039228 +14855220,0.55039228 +14855220,0 +14855484,0 +14855484,0.36059143 +14855544,0.36059143 +14855544,0 +14856456,0 +14856456,0.18331322 +14856462,0.18331322 +14856462,0 +14856570,0 +14856570,0.19764635 +14856594,0.19764635 +14856594,0 +14859042,0 +14859042,0.29828002 +14859054,0.29828002 +14859054,0 +14859342,0 +14859342,0.30718165 +14859402,0.30718165 +14859402,0 +14859642,0 +14859642,0.32045866 +14859666,0.32045866 +14859666,0 +14859936,0 +14859936,0.55190103 +14860026,0.55190103 +14860026,0 +14860062,0 +14860062,0.09007242 +14860176,0.20745323 +14860176,0 +14860182,0 +14860182,0.20745323 +14860236,0.09007242 +14860236,0 +14863500,0 +14863500,0.41279421 +14863572,0.41279421 +14863572,0 +14863800,0 +14863800,0.15570308 +14863872,0.15570308 +14863872,0 +14864094,0 +14864094,0.22706699 +14864166,0.22706699 +14864166,0 +14864394,0 +14864394,0.31668678 +14864400,0.31668678 +14864400,0 +14867952,0 +14867952,0.29103802 +14868024,0.29103802 +14868024,0 +14868252,0 +14868252,0.28832227 +14868324,0.28832227 +14868324,0 +14868552,0 +14868552,0.37432106 +14868624,0.37432106 +14868624,0 +14868852,0 +14868852,0.38835244 +14868930,0.38835244 +14868930,0 +14886048,0 +14886048,0.083433917 +14886054,0.083433917 +14886054,0 +14886240,0 +14886240,0.32920941 +14886480,0.32920941 +14886480,0 +14895204,0 +14895204,0.07966204 +14895216,0.07966204 +14895216,0 +14900994,0 +14900994,0.071665661 +14901012,0.071665661 +14901012,0 +14901984,0 +14901984,0.21861798 +14902032,0.21861798 +14902032,0 +14904846,0 +14904846,0.52263126 +14904918,0.52263126 +14904918,0 +14906460,0 +14906460,0.25497888 +14906490,0.25497888 +14906490,0 +14915958,0 +14915958,0.14936632 +14916036,0.14936632 +14916036,0 +14923038,0 +14923038,0.14393482 +14923074,0.26086301 +14923074,0 +14923116,0 +14923116,0.26086301 +14923158,0.28847314 +14923158,0 +14923236,0 +14923236,0 +14923236,0.28847314 +14923236,0.14393482 +14923248,0 +14923248,0.021575136 +14923254,0.021575136 +14923254,0 +14923272,0 +14923272,0.0072420036 +14923278,0.0072420036 +14923278,0 +14923362,0 +14923362,0.077248039 +14923386,0.077248039 +14923386,0 +14923482,0 +14923482,0.22948099 +14923536,0.22948099 +14923536,0 +14923596,0 +14923596,0.2027761 +14923668,0.2027761 +14923668,0 +14923710,0 +14923710,0.23038624 +14923770,0.23038624 +14923770,0 +14926296,0 +14926296,0.31412191 +14926380,0.31412191 +14926380,0 +14930244,0 +14930244,0.058237779 +14930292,0.058237779 +14930292,0 +14930754,0 +14930754,0.27896801 +14930838,0.27896801 +14930838,0 +14934162,0 +14934162,0.058841279 +14934168,0.058841279 +14934168,0 +14944182,0 +14944182,0.30069403 +14944308,0.30069403 +14944308,0 +14944668,0 +14944668,0.14318045 +14944770,0.14318045 +14944770,0 +14944902,0 +14944902,0.4503621 +14945172,0.4503621 +14945172,0 +14973126,0 +14973126,0.20262523 +14973144,0.20262523 +14973144,0 +14973246,0 +14973246,0.20413398 +14973348,0.024592637 +14973348,0 +14973402,0 +14973402,0 +14973402,0.20413398 +14973402,0.024592637 +14976324,0 +14976324,0.14076645 +14976330,0.14076645 +14976330,0 +14976450,0 +14976450,0.074683162 +14976456,0.074683162 +14976456,0 +14979984,0 +14979984,0.21062161 +14980104,0.35561255 +14980104,0 +14980116,0 +14980116,0.35561255 +14980128,0.21062161 +14980128,0 +14980218,0 +14980218,0.28062764 +14980248,0.28062764 +14980248,0 +14980332,0 +14980332,0.17622209 +14980356,0.17622209 +14980356,0 +14980452,0 +14980452,0.051297526 +14980470,0.051297526 +14980470,0 +14982006,0 +14982006,0.29390465 +14982066,0.29390465 +14982066,0 +14983110,0 +14983110,0.1059143 +14983122,0.1059143 +14983122,0 +14983176,0 +14983176,0.11647556 +14983182,0.11647556 +14983182,0 +14983290,0 +14983290,0.18467109 +14983374,0.18467109 +14983374,0 +14985546,0 +14985546,0.031532891 +14985552,0.031532891 +14985552,0 +14985660,0 +14985660,0.254828 +14985744,0.254828 +14985744,0 +14987022,0 +14987022,0.18150272 +14987034,0.18150272 +14987034,0 +14987136,0 +14987136,0.29450815 +14987160,0.29450815 +14987160,0 +14987256,0 +14987256,0.29284852 +14987316,0.29284852 +14987316,0 +14992770,0 +14992770,0.082830416 +14992776,0.082830416 +14992776,0 +14992890,0 +14992890,0.23204587 +14992920,0.23204587 +14992920,0 +14999958,0 +14999958,0.32905854 +14999976,0.32905854 +14999976,0 +15000072,0 +15000072,0.025648763 +15000096,0.025648763 +15000096,0 +15000186,0 +15000186,0.095051298 +15000204,0.095051298 +15000204,0 +15000792,0 +15000792,0.060500905 +15000852,0.060500905 +15000852,0 +15002508,0 +15002508,0.15525045 +15002526,0.15525045 +15002526,0 +15011202,0 +15011202,0.34429692 +15011226,0.34429692 +15011226,0 +15011316,0 +15011316,0.16158721 +15011346,0.16158721 +15011346,0 +15012264,0 +15012264,0.064876282 +15012270,0.064876282 +15012270,0 +15014622,0 +15014622,0.3014484 +15014664,0.3014484 +15014664,0 +15015258,0 +15015258,0.27896801 +15015276,0.27896801 +15015276,0 +15017460,0 +15017460,0.041792396 +15017466,0.041792396 +15017466,0 +15017574,0 +15017574,0.072118286 +15017670,0.072118286 +15017670,0 +15018930,0 +15018930,0.20715148 +15018942,0.20715148 +15018942,0 +15019050,0 +15019050,0.082830416 +15019164,0.033041642 +15019164,0 +15019170,0 +15019170,0.033041642 +15019188,0.082830416 +15019188,0 +15019278,0 +15019278,0.13080869 +15019350,0.13080869 +15019350,0 +15019878,0 +15019878,0.29315027 +15019992,0 +15019992,0 +15019992,0.23823174 +15019992,0.29315027 +15020022,0.23823174 +15020022,0 +15020112,0 +15020112,0.0072420036 +15020172,0.0072420036 +15020172,0 +15020226,0 +15020226,0.067592034 +15020244,0.067592034 +15020244,0 +15020340,0 +15020340,0.054767652 +15020346,0.054767652 +15020346,0 +15025590,0 +15025590,0.19477972 +15025614,0.19477972 +15025614,0 +15035454,0 +15035454,0.16339771 +15035538,0.16339771 +15035538,0 +15048204,0 +15048204,0.30401328 +15048834,0.30401328 +15048834,0 +15050040,0 +15050040,0.37628244 +15050424,0.37628244 +15050424,0 +15060072,0 +15060072,0.090826795 +15060168,0.090826795 +15060168,0 +15062358,0 +15062358,0.27263126 +15062424,0.27263126 +15062424,0 +15062478,0 +15062478,0.3414303 +15062502,0.3414303 +15062502,0 +15062592,0 +15062592,0.32528666 +15062634,0 +15062634,0 +15062634,0.31276403 +15062634,0.32528666 +15062658,0.31276403 +15062658,0 +15064968,0 +15064968,0.258449 +15065058,0.258449 +15065058,0 +15065796,0 +15065796,0.34791792 +15065844,0.34791792 +15065844,0 +15066504,0 +15066504,0.17697646 +15066546,0.17697646 +15066546,0 +15066624,0 +15066624,0.24381412 +15066666,0.24381412 +15066666,0 +15066738,0 +15066738,0.25331925 +15066780,0.25331925 +15066780,0 +15066852,0 +15066852,0.030476765 +15066876,0.030476765 +15066876,0 +15066972,0 +15066972,0.0078455039 +15066996,0.0078455039 +15066996,0 +15067086,0 +15067086,0.10334943 +15067092,0.10334943 +15067092,0 +15067200,0 +15067200,0.14257695 +15067248,0.14257695 +15067248,0 +15067320,0 +15067320,0.012824381 +15067326,0.012824381 +15067326,0 +15067368,0 +15067368,0.064272782 +15067434,0.11647556 +15067434,0 +15067458,0 +15067458,0.064272782 +15067494,0.11647556 +15067494,0 +15067548,0 +15067548,0.025950513 +15067584,0.025950513 +15067584,0 +15067668,0 +15067668,0.17788171 +15067674,0.17788171 +15067674,0 +15067782,0 +15067782,0.086904043 +15067800,0.086904043 +15067800,0 +15067896,0 +15067896,0.34112855 +15067902,0.34112855 +15067902,0 +15068016,0 +15068016,0.19840072 +15068094,0.17486421 +15068094,0 +15068106,0 +15068106,0 +15068106,0.19840072 +15068106,0.17486421 +15068208,0 +15068208,0.24592637 +15068232,0.24592637 +15068232,0 +15068328,0 +15068328,0.23928787 +15068340,0.23928787 +15068340,0 +15068442,0 +15068442,0.011466506 +15068448,0.011466506 +15068448,0 +15070170,0 +15070170,0.0075437538 +15070290,0.0075437538 +15070290,0 +15070626,0 +15070626,0.057634279 +15070632,0.057634279 +15070632,0 +15070740,0 +15070740,0.096710923 +15070746,0.096710923 +15070746,0 +15070854,0 +15070854,0.21680748 +15070860,0.21680748 +15070860,0 +15073338,0 +15073338,0.26765238 +15073410,0.26765238 +15073410,0 +15077706,0 +15077706,0.018708509 +15077736,0.018708509 +15077736,0 +15077796,0 +15077796,0.35923355 +15077814,0.35923355 +15077814,0 +15080910,0 +15080910,0.16113458 +15080934,0.16113458 +15080934,0 +15088992,0 +15088992,0.15841883 +15089052,0.15841883 +15089052,0 +15089112,0 +15089112,0.027006639 +15089118,0.027006639 +15089118,0 +15090870,0 +15090870,0.057785154 +15090876,0.057785154 +15090876,0 +15090984,0 +15090984,0.240344 +15091020,0.240344 +15091020,0 +15095694,0 +15095694,0.0037718769 +15095700,0.0037718769 +15095700,0 +15095808,0 +15095808,0.242758 +15095922,0.242758 +15095922,0 +15095940,0 +15095940,0.17426071 +15095958,0.17426071 +15095958,0 +15096060,0 +15096060,0.075739288 +15096144,0.075739288 +15096144,0 +15096174,0 +15096174,0.24170187 +15096186,0.24170187 +15096186,0 +15096288,0 +15096288,0.0089016295 +15096294,0.0089016295 +15096294,0 +15099060,0 +15099060,0.064725407 +15099084,0.064725407 +15099084,0 +15101538,0 +15101538,0.098068799 +15101550,0.098068799 +15101550,0 +15101802,0 +15101802,0.35259505 +15101820,0.35259505 +15101820,0 +15101916,0 +15101916,0.17350634 +15101940,0.17350634 +15101940,0 +15102204,0 +15102204,0.097616174 +15102246,0.097616174 +15102246,0 +15104934,0 +15104934,0.23823174 +15105138,0.23823174 +15105138,0 +15105984,0 +15105984,0.34293905 +15106080,0.34293905 +15106080,0 +15106812,0 +15106812,0.29088715 +15106824,0.29088715 +15106824,0 +15106926,0 +15106926,0.14257695 +15106932,0.14257695 +15106932,0 +15107046,0 +15107046,0.18346409 +15107106,0.18346409 +15107106,0 +15107160,0 +15107160,0.10863005 +15107208,0.10863005 +15107208,0 +15107808,0 +15107808,0.063669282 +15107814,0.063669282 +15107814,0 +15114696,0 +15114696,0.15178033 +15114720,0.15178033 +15114720,0 +15114810,0 +15114810,0.061557031 +15114816,0.061557031 +15114816,0 +15145722,0 +15145722,0.21831623 +15145764,0.21831623 +15145764,0 +15151050,0 +15151050,0.35184068 +15151122,0.35184068 +15151122,0 +15151974,0 +15151974,0.2469825 +15151998,0.2469825 +15151998,0 +15152988,0 +15152988,0.21001811 +15153054,0.21001811 +15153054,0 +15153102,0 +15153102,0.25709113 +15153114,0.25709113 +15153114,0 +15153150,0 +15153150,0.26282438 +15153204,0.26282438 +15153204,0 +15153222,0 +15153222,0.1495172 +15153264,0.1495172 +15153264,0 +15153336,0 +15153336,0.28922752 +15153354,0.28922752 +15153354,0 +15154770,0 +15154770,0.1991551 +15154806,0.1991551 +15154806,0 +15155244,0 +15155244,0.24185275 +15155328,0.24185275 +15155328,0 +15156978,0 +15156978,0.30974653 +15157590,0.30974653 +15157590,0 +15159228,0 +15159228,0.18316234 +15159252,0.18316234 +15159252,0 +15159342,0 +15159342,0.22103199 +15159354,0.22103199 +15159354,0 +15168462,0 +15168462,0.11255281 +15168474,0.11255281 +15168474,0 +15168582,0 +15168582,0.0058841279 +15168588,0.0058841279 +15168588,0 +15168696,0 +15168696,0.23310199 +15168708,0.23310199 +15168708,0 +15186522,0 +15186522,0.18602897 +15186534,0.18602897 +15186534,0 +15186636,0 +15186636,0.26704888 +15186714,0.26704888 +15186714,0 +15186756,0 +15186756,0.23053712 +15186762,0.23053712 +15186762,0 +15188412,0 +15188412,0.42063971 +15189090,0.42063971 +15189090,0 +15189780,0 +15189780,0.035455643 +15189786,0.035455643 +15189786,0 +15189894,0 +15189894,0.20745323 +15189960,0.20745323 +15189960,0 +15194922,0 +15194922,0.26840676 +15194928,0.26840676 +15194928,0 +15195036,0 +15195036,0.03002414 +15195048,0.03002414 +15195048,0 +15195150,0 +15195150,0.08916717 +15195162,0.08916717 +15195162,0 +15195270,0 +15195270,0.18014484 +15195294,0.18014484 +15195294,0 +15198642,0 +15198642,0.27097164 +15198654,0.27097164 +15198654,0 +15200088,0 +15200088,0.10923355 +15200100,0.10923355 +15200100,0 +15200202,0 +15200202,0.24140012 +15200244,0.24140012 +15200244,0 +15202176,0 +15202176,0.12417019 +15202182,0.12417019 +15202182,0 +15202290,0 +15202290,0.14800845 +15202314,0.14800845 +15202314,0 +15202410,0 +15202410,0.10621605 +15202434,0.10621605 +15202434,0 +15228954,0 +15228954,0.12054919 +15228972,0.12054919 +15228972,0 +15229068,0 +15229068,0.011768256 +15229074,0.011768256 +15229074,0 +15229182,0 +15229182,0.23295112 +15229224,0.23295112 +15229224,0 +15229302,0 +15229302,0.068949909 +15229332,0.068949909 +15229332,0 +15229416,0 +15229416,0.023385637 +15229452,0.023385637 +15229452,0 +15229530,0 +15229530,0.33826192 +15229536,0.33826192 +15229536,0 +15229650,0 +15229650,0.054164152 +15229656,0.054164152 +15229656,0 +15229764,0 +15229764,0.10938443 +15229770,0.10938443 +15229770,0 +15229878,0 +15229878,0.26870851 +15229926,0.26870851 +15229926,0 +15229998,0 +15229998,0.11134581 +15230004,0.11134581 +15230004,0 +15230112,0 +15230112,0.073174412 +15230124,0.073174412 +15230124,0 +15230226,0 +15230226,0.11074231 +15230256,0.11074231 +15230256,0 +15234090,0 +15234090,0.40419433 +15234150,0.40419433 +15234150,0 +15239850,0 +15239850,0.16490646 +15239874,0.16490646 +15239874,0 +15239964,0 +15239964,0.094749547 +15239970,0.094749547 +15239970,0 +15243276,0 +15243276,0.014785757 +15243330,0.014785757 +15243330,0 +15246306,0 +15246306,0.26418226 +15246390,0.26418226 +15246390,0 +15246894,0 +15246894,0.19236572 +15246996,0.19236572 +15246996,0 +15247482,0 +15247482,0.26131563 +15247584,0.26131563 +15247584,0 +15248064,0 +15248064,0.25512975 +15248148,0.25512975 +15248148,0 +15248652,0 +15248652,0.18663247 +15248730,0.18663247 +15248730,0 +15252744,0 +15252744,0.095503923 +15252762,0.095503923 +15252762,0 +15252864,0 +15252864,0.15419433 +15252888,0.15419433 +15252888,0 +15262494,0 +15262494,0.0072420036 +15262572,0.0072420036 +15262572,0 +15262614,0 +15262614,0.29315027 +15262668,0.29315027 +15262668,0 +15263634,0 +15263634,0.013427882 +15263640,0.013427882 +15263640,0 +15266664,0 +15266664,0.1937236 +15266712,0.1937236 +15266712,0 +15268176,0 +15268176,0.11330718 +15268194,0.11330718 +15268194,0 +15268296,0 +15268296,0.27429089 +15268410,0.00090525045 +15268410,0 +15268416,0 +15268416,0.00090525045 +15268422,0.27429089 +15268422,0 +15273066,0 +15273066,0.10983705 +15273084,0.10983705 +15273084,0 +15273180,0 +15273180,0.27942064 +15273270,0.27942064 +15273270,0 +15274080,0 +15274080,0.0051297526 +15274086,0.0051297526 +15274086,0 +15275796,0 +15275796,0.11979481 +15275844,0.11979481 +15275844,0 +15279210,0 +15279210,0.71047073 +15279384,0.71047073 +15279384,0 +15312438,0 +15312438,0.04073627 +15312444,0.04073627 +15312444,0 +15312558,0 +15312558,0.10244418 +15312564,0.10244418 +15312564,0 +15312672,0 +15312672,0.022329511 +15312690,0.022329511 +15312690,0 +15318228,0 +15318228,0.0075437538 +15318276,0.0075437538 +15318276,0 +15323958,0 +15323958,0.10998793 +15324072,0.1567592 +15324072,0 +15324108,0 +15324108,0.23355462 +15324126,0.23355462 +15324126,0 +15324132,0 +15324132,0.10998793 +15324198,0.1567592 +15324198,0 +15324336,0 +15324336,0.092486421 +15324342,0.092486421 +15324342,0 +15324354,0 +15324354,0.30371153 +15324432,0.30371153 +15324432,0 +15329814,0 +15329814,0.11994568 +15329820,0.11994568 +15329820,0 +15330786,0 +15330786,0.29194327 +15330798,0.29194327 +15330798,0 +15332784,0 +15332784,0.2088111 +15332796,0.2088111 +15332796,0 +15333228,0 +15333228,0.38654194 +15333258,0.38654194 +15333258,0 +15343056,0 +15343056,0.15811708 +15343062,0.15811708 +15343062,0 +15343176,0 +15343176,0.0042245021 +15343182,0.0042245021 +15343182,0 +15343290,0 +15343290,0.068949909 +15343392,0.068949909 +15343392,0 +15346428,0 +15346428,0.22510561 +15346464,0.22510561 +15346464,0 +15350598,0 +15350598,0.13171394 +15350628,0.13171394 +15350628,0 +15355224,0 +15355224,0.39846107 +15355500,0.39846107 +15355500,0 +15357060,0 +15357060,0.42260109 +15357276,0.0013578757 +15357276,0 +15357282,0 +15357282,0.0013578757 +15357390,0.14740495 +15357390,0 +15357456,0 +15357456,0.42260109 +15357462,0.14740495 +15357462,0 +15357510,0 +15357510,0.17290284 +15357528,0.17290284 +15357528,0 +15357624,0 +15357624,0.36089318 +15357630,0.36089318 +15357630,0 +15358020,0 +15358020,0.17395896 +15358050,0.17395896 +15358050,0 +15358134,0 +15358134,0.087507544 +15358164,0.087507544 +15358164,0 +15358890,0 +15358890,0.31970428 +15359286,0.31970428 +15359286,0 +15364272,0 +15364272,0.21982498 +15364350,0.21982498 +15364350,0 +15364854,0 +15364854,0.19055522 +15364926,0.19055522 +15364926,0 +15365442,0 +15365442,0.22510561 +15365574,0.22510561 +15365574,0 +15366030,0 +15366030,0.17984309 +15366132,0.17984309 +15366132,0 +15366618,0 +15366618,0.19900422 +15366702,0.19900422 +15366702,0 +15367206,0 +15367206,0.18452022 +15367278,0.18452022 +15367278,0 +15367788,0 +15367788,0.18844297 +15367884,0.18844297 +15367884,0 +15368376,0 +15368376,0.20111648 +15368442,0.20111648 +15368442,0 +15396264,0 +15396264,0.073777912 +15396270,0.073777912 +15396270,0 +15400224,0 +15400224,0.23280024 +15400344,0.28273989 +15400344,0 +15400350,0 +15400350,0.28273989 +15400362,0.23280024 +15400362,0 +15400458,0 +15400458,0.22827399 +15400476,0.22827399 +15400476,0 +15400572,0 +15400572,0.034399517 +15400590,0.034399517 +15400590,0 +15400692,0 +15400692,0.25995775 +15400776,0.25995775 +15400776,0 +15400806,0 +15400806,0.21605311 +15400818,0.21605311 +15400818,0 +15400920,0 +15400920,0.18436934 +15400986,0.18436934 +15400986,0 +15410328,0 +15410328,0.47721786 +15410334,0.47721786 +15410334,0 +15410448,0 +15410448,0.30371153 +15410490,0.30371153 +15410490,0 +15410562,0 +15410562,0.16671696 +15410592,0.16671696 +15410592,0 +15416922,0 +15416922,0.25588413 +15417030,0.25588413 +15417030,0 +15425652,0 +15425652,0.2506035 +15425676,0.2506035 +15425676,0 +15425952,0 +15425952,0.39076645 +15426000,0.39076645 +15426000,0 +15430104,0 +15430104,0.38337357 +15430164,0.38337357 +15430164,0 +15430404,0 +15430404,0.25814725 +15430512,0.25814725 +15430512,0 +15433482,0 +15433482,0.21590223 +15433566,0.21590223 +15433566,0 +15433602,0 +15433602,0.24834037 +15433644,0.24834037 +15433644,0 +15439188,0 +15439188,0.16505733 +15439200,0.16505733 +15439200,0 +15439308,0 +15439308,0.016143633 +15439332,0.016143633 +15439332,0 +15439422,0 +15439422,0.26116476 +15439428,0.26116476 +15439428,0 +15439536,0 +15439536,0.18949909 +15439590,0.18949909 +15439590,0 +15439656,0 +15439656,0.076493663 +15439716,0.076493663 +15439716,0 +15441996,0 +15441996,0.16626433 +15442026,0.16626433 +15442026,0 +15442050,0 +15442050,0.0025648763 +15442056,0.0025648763 +15442056,0 +15446442,0 +15446442,0.14876282 +15446538,0.14876282 +15446538,0 +15450348,0 +15450348,0.66415208 +15450666,0.66415208 +15450666,0 +15451470,0 +15451470,0.098219674 +15451494,0.098219674 +15451494,0 +15451584,0 +15451584,0.00015087508 +15451590,0.00015087508 +15451590,0 +15451704,0 +15451704,0.22616174 +15451752,0.22616174 +15451752,0 +15469704,0 +15469704,0.17048884 +15469746,0.17048884 +15469746,0 +15469824,0 +15469824,0.14438745 +15469842,0.14438745 +15469842,0 +15469938,0 +15469938,0.017954134 +15470148,0.017954134 +15470148,0 +15496926,0 +15496926,0.10500905 +15496932,0.10500905 +15496932,0 +15497046,0 +15497046,0.12190706 +15497052,0.12190706 +15497052,0 +15500646,0 +15500646,0.18376584 +15500670,0.18376584 +15500670,0 +15500760,0 +15500760,0.12960169 +15500880,0 +15500880,0 +15500880,0.12085094 +15500880,0.12960169 +15500904,0.12085094 +15500904,0 +15500994,0 +15500994,0.13126132 +15501042,0.13126132 +15501042,0 +15501108,0 +15501108,0.088714544 +15501114,0.088714544 +15501114,0 +15505770,0 +15505770,0.22118286 +15505782,0.22118286 +15505782,0 +15512298,0 +15512298,0.0016596258 +15512304,0.0016596258 +15512304,0 +15517458,0 +15517458,0.12024744 +15517464,0.12024744 +15517464,0 +15520590,0 +15520590,0.15238383 +15520596,0.15238383 +15520596,0 +15522822,0 +15522822,0.17697646 +15522834,0.17697646 +15522834,0 +15522936,0 +15522936,0.022480386 +15522942,0.022480386 +15522942,0 +15526260,0 +15526260,0.049487025 +15526296,0.049487025 +15526296,0 +15528720,0 +15528720,0.24411587 +15528756,0.24411587 +15528756,0 +15531126,0 +15531126,0.11919131 +15531174,0.11919131 +15531174,0 +15532578,0 +15532578,0.0015087508 +15532584,0.0015087508 +15532584,0 +15552864,0 +15552864,0.21228123 +15552942,0.21228123 +15552942,0 +15553452,0 +15553452,0.26644538 +15553536,0.26644538 +15553536,0 +15554040,0 +15554040,0.22601086 +15554106,0.22601086 +15554106,0 +15554622,0 +15554622,0.22887749 +15554664,0.22887749 +15554664,0 +15577140,0 +15577140,0.32181654 +15577344,0.32181654 +15577344,0 +15577512,0 +15577512,0.13669282 +15577560,0.13669282 +15577560,0 +15577818,0 +15577818,0.079812915 +15577860,0.079812915 +15577860,0 +15581916,0 +15581916,0.21560048 +15582066,0.21560048 +15582066,0 +15584922,0 +15584922,0.38292094 +15584976,0.38292094 +15584976,0 +15586314,0 +15586314,0.37190706 +15586338,0.37190706 +15586338,0 +15587364,0 +15587364,0.16490646 +15587406,0.16490646 +15587406,0 +15587478,0 +15587478,0.20745323 +15587538,0.31472541 +15587538,0 +15587580,0 +15587580,0.20745323 +15587604,0.31472541 +15587604,0 +15589380,0 +15589380,0.21137598 +15589386,0.21137598 +15589386,0 +15589722,0 +15589722,0.1937236 +15589842,0.15781533 +15589842,0 +15589854,0 +15589854,0.1937236 +15589890,0.15781533 +15589890,0 +15595266,0 +15595266,0.095051298 +15595302,0.095051298 +15595302,0 +15595374,0 +15595374,0.086904043 +15595380,0.012673506 +15595380,0 +15595392,0 +15595392,0.086904043 +15595416,0.012673506 +15595416,0 +15595494,0 +15595494,0.24562462 +15595512,0.24562462 +15595512,0 +15597138,0 +15597138,0.11572118 +15597180,0.11572118 +15597180,0 +15598080,0 +15598080,0.37085094 +15598500,0.37085094 +15598500,0 +15599916,0 +15599916,0.35199155 +15600378,0.35199155 +15600378,0 +15606954,0 +15606954,0.28681352 +15606966,0.28681352 +15606966,0 +15607074,0 +15607074,0.10923355 +15607152,0.10923355 +15607152,0 +15607188,0 +15607188,0.21107423 +15607200,0.21107423 +15607200,0 +15607302,0 +15607302,0.0048280024 +15607308,0.0048280024 +15607308,0 +15607422,0 +15607422,0.23611949 +15607446,0.23611949 +15607446,0 +15607536,0 +15607536,0.058992154 +15607542,0.058992154 +15607542,0 +15607650,0 +15607650,0.32362704 +15607746,0.32362704 +15607746,0 +15607770,0 +15607770,0.20775498 +15607848,0.20775498 +15607848,0 +15607884,0 +15607884,0.32785154 +15607974,0.32785154 +15607974,0 +15607998,0 +15607998,0.014031382 +15608004,0.014031382 +15608004,0 +15613548,0 +15613548,0.18210622 +15613584,0.036360893 +15613584,0 +15613590,0 +15613590,0.036360893 +15613638,0.023838262 +15613638,0 +15613644,0 +15613644,0.023838262 +15613656,0.18210622 +15613656,0 +15613752,0 +15613752,0.28092939 +15613818,0.28092939 +15613818,0 +15613866,0 +15613866,0.17063971 +15613938,0.17063971 +15613938,0 +15613986,0 +15613986,0.14076645 +15614022,0.14076645 +15614022,0 +15614100,0 +15614100,0.34882317 +15614112,0.34882317 +15614112,0 +15614214,0 +15614214,0.14091732 +15614268,0.14091732 +15614268,0 +15614328,0 +15614328,0.086149668 +15614346,0.086149668 +15614346,0 +15614448,0 +15614448,0.24321062 +15614466,0.24321062 +15614466,0 +15614562,0 +15614562,0.18648159 +15614568,0.18648159 +15614568,0 +15614916,0 +15614916,0.11436331 +15615018,0.11436331 +15615018,0 +15620196,0 +15620196,0.23098974 +15620244,0.23098974 +15620244,0 +15622926,0 +15622926,0.075890163 +15622986,0.075890163 +15622986,0 +15623046,0 +15623046,0.2936029 +15623130,0.2936029 +15623130,0 +15624894,0 +15624894,0.28183464 +15624948,0.28183464 +15624948,0 +15625008,0 +15625008,0.14076645 +15625038,0.14076645 +15625038,0 +15628752,0 +15628752,0.04993965 +15628788,0.04993965 +15628788,0 +15629676,0 +15629676,0.064876282 +15629682,0.064876282 +15629682,0 +15630948,0 +15630948,0.23536512 +15631002,0.23536512 +15631002,0 +15631068,0 +15631068,0.17395896 +15631110,0.17395896 +15631110,0 +15634776,0 +15634776,0.30552203 +15634806,0.30552203 +15634806,0 +15634920,0 +15634920,0.0048280024 +15634926,0.0048280024 +15634926,0 +15643608,0 +15643608,0.22631261 +15643626,0.22631261 +15643626,0 +15643722,0 +15643722,0.12401931 +15643788,0.12401931 +15643788,0 +15643836,0 +15643836,0.05914303 +15643860,0.05914303 +15643860,0 +15672216,0 +15672216,0.038774894 +15672222,0.038774894 +15672222,0 +15675684,0 +15675684,0.12945081 +15675708,0.12945081 +15675708,0 +15675804,0 +15675804,0.16415208 +15675846,0.16415208 +15675846,0 +15676116,0 +15676116,0.035455643 +15676122,0.035455643 +15676122,0 +15676818,0 +15676818,0.10787568 +15676824,0.10787568 +15676824,0 +15688626,0 +15688626,0.2911889 +15688650,0.2911889 +15688650,0 +15689940,0 +15689940,0.043753772 +15689946,0.043753772 +15689946,0 +15693084,0 +15693084,0.18995172 +15693108,0.18995172 +15693108,0 +15700554,0 +15700554,0.12326494 +15700608,0.12326494 +15700608,0 +15700668,0 +15700668,0.08026554 +15700698,0.08026554 +15700698,0 +15700788,0 +15700788,0.16882921 +15700794,0.16882921 +15700794,0 +15701886,0 +15701886,0.13458057 +15701916,0.13458057 +15701916,0 +15702000,0 +15702000,0.30522028 +15702018,0.30522028 +15702018,0 +15702102,0 +15702102,0.20006035 +15702114,0.20006035 +15702114,0 +15702120,0 +15702120,0.1931201 +15702126,0.1931201 +15702126,0 +15702234,0 +15702234,0.17033796 +15702270,0.17033796 +15702270,0 +15702348,0 +15702348,0.10304768 +15702402,0.10304768 +15702402,0 +15702462,0 +15702462,0.16369946 +15702546,0.16369946 +15702546,0 +15702582,0 +15702582,0.32860591 +15702588,0.32860591 +15702588,0 +15702696,0 +15702696,0.020066385 +15702702,0.020066385 +15702702,0 +15702810,0 +15702810,0.16822571 +15702822,0.16822571 +15702822,0 +15703194,0 +15703194,0.33207604 +15703224,0.33207604 +15703224,0 +15703440,0 +15703440,0.42365721 +15703524,0.42365721 +15703524,0 +15703734,0 +15703734,0.15343995 +15703746,0.15343995 +15703746,0 +15703914,0 +15703914,0.27625226 +15703926,0.27625226 +15703926,0 +15706722,0 +15706722,0.072570911 +15706740,0.072570911 +15706740,0 +15707952,0 +15707952,0.47857574 +15708096,0.013126132 +15708096,0 +15708102,0 +15708102,0.013126132 +15708468,0.47857574 +15708468,0 +15708498,0 +15708498,0.21891973 +15708510,0.21891973 +15708510,0 +15709254,0 +15709254,0.19477972 +15709266,0.19477972 +15709266,0 +15709782,0 +15709782,0.14272782 +15709980,0.14272782 +15709980,0 +15712920,0 +15712920,0.04993965 +15712938,0.04993965 +15712938,0 +15720840,0 +15720840,0.037417019 +15720882,0.037417019 +15720882,0 +15720954,0 +15720954,0.12899819 +15721056,0.12899819 +15721056,0 +15721074,0 +15721074,0.16113458 +15721092,0.16113458 +15721092,0 +15753930,0 +15753930,0.16701871 +15754008,0.16701871 +15754008,0 +15754104,0 +15754104,0.1495172 +15754176,0.1495172 +15754176,0 +15763896,0 +15763896,0.24185275 +15763938,0.24185275 +15763938,0 +15764016,0 +15764016,0.058690404 +15764040,0.058690404 +15764040,0 +15765120,0 +15765120,0.31457453 +15765162,0.31457453 +15765162,0 +15770610,0 +15770610,0.025347013 +15770616,0.025347013 +15770616,0 +15770724,0 +15770724,0.029873265 +15770784,0.029873265 +15770784,0 +15770838,0 +15770838,0.30944478 +15770940,0.30944478 +15770940,0 +15774948,0 +15774948,0.2911889 +15774960,0.2911889 +15774960,0 +15775062,0 +15775062,0.16083283 +15775128,0.16083283 +15775128,0 +15775182,0 +15775182,0.17456246 +15775266,0.17456246 +15775266,0 +15775296,0 +15775296,0.14499095 +15775326,0.14499095 +15775326,0 +15775410,0 +15775410,0.27142426 +15775452,0.27142426 +15775452,0 +15775530,0 +15775530,0.23310199 +15775674,0.23310199 +15775674,0 +15776028,0 +15776028,0.23762824 +15776046,0.23762824 +15776046,0 +15780072,0 +15780072,0.017199759 +15780078,0.017199759 +15780078,0 +15785718,0 +15785718,0.16354858 +15785730,0.16354858 +15785730,0 +15785832,0 +15785832,0.031231141 +15785838,0.031231141 +15785838,0 +15785952,0 +15785952,0.047525649 +15785970,0.047525649 +15785970,0 +15786066,0 +15786066,0.1041038 +15786078,0.1041038 +15786078,0 +15786180,0 +15786180,0.17154496 +15786312,0.17154496 +15786312,0 +15791916,0 +15791916,0.13533494 +15791964,0.13533494 +15791964,0 +15793434,0 +15793434,0.34007242 +15793554,0.26644538 +15793554,0 +15793620,0 +15793620,0.26644538 +15793674,0.34007242 +15793674,0 +15798276,0 +15798276,0.29677127 +15798300,0.29677127 +15798300,0 +15798396,0 +15798396,0.03062764 +15798402,0.03062764 +15798402,0 +15801774,0 +15801774,0.21831623 +15801780,0.21831623 +15801780,0 +15801888,0 +15801888,0.26161738 +15801978,0.26161738 +15801978,0 +15802002,0 +15802002,0.23325287 +15802020,0.23325287 +15802020,0 +15803964,0 +15803964,0.1428787 +15803970,0.1428787 +15803970,0 +15804078,0 +15804078,0.31864816 +15804096,0.31864816 +15804096,0 +15807270,0 +15807270,0.0072420036 +15807276,0.0072420036 +15807276,0 +15807726,0 +15807726,0.36496681 +15807750,0.36496681 +15807750,0 +15807840,0 +15807840,0.050694025 +15807846,0.050694025 +15807846,0 +15807960,0 +15807960,0.32966204 +15807966,0.32966204 +15807966,0 +15823698,0 +15823698,0.052806276 +15823704,0.052806276 +15823704,0 +15823812,0 +15823812,0.030175015 +15823824,0.030175015 +15823824,0 +15823926,0 +15823926,0.099124925 +15823932,0.099124925 +15823932,0 +15824046,0 +15824046,0.23958962 +15824106,0.23958962 +15824106,0 +15824160,0 +15824160,0.10123718 +15824238,0.10123718 +15824238,0 +15824274,0 +15824274,0.1531382 +15824286,0.1531382 +15824286,0 +15834978,0 +15834978,0.20413398 +15835008,0.20413398 +15835008,0 +15845874,0 +15845874,0.22284249 +15845910,0.22284249 +15845910,0 +15845988,0 +15845988,0.26719976 +15846048,0.26719976 +15846048,0 +15846102,0 +15846102,0.0013578757 +15846108,0.0013578757 +15846108,0 +15846222,0 +15846222,0.1010863 +15846294,0.1010863 +15846294,0 +15846336,0 +15846336,0.0015087508 +15846342,0.0015087508 +15846342,0 +15846450,0 +15846450,0.32272179 +15846492,0.32272179 +15846492,0 +15846570,0 +15846570,0.075890163 +15846576,0.075890163 +15846576,0 +15849096,0 +15849096,0.20187085 +15849114,0.20187085 +15849114,0 +15852090,0 +15852090,0.24441762 +15852108,0.24441762 +15852108,0 +15854418,0 +15854418,0.16007846 +15854448,0.16007846 +15854448,0 +15854538,0 +15854538,0.11557031 +15854544,0.11557031 +15854544,0 +15854652,0 +15854652,0.083132167 +15854658,0.083132167 +15854658,0 +15854766,0 +15854766,0.07966204 +15854772,0.07966204 +15854772,0 +15854886,0 +15854886,0.15178033 +15855000,0.0084490042 +15855000,0 +15855006,0 +15855006,0.0084490042 +15855036,0.15178033 +15855036,0 +15855114,0 +15855114,0.082076041 +15855204,0.082076041 +15855204,0 +15858414,0 +15858414,0.13940857 +15858438,0.13940857 +15858438,0 +15870684,0 +15870684,0.12311406 +15870828,0.12311406 +15870828,0 +15873132,0 +15873132,0.25694025 +15873246,0.25694025 +15873246,0 +15875796,0 +15875796,0.16822571 +15875802,0.16822571 +15875802,0 +15876498,0 +15876498,0.15691008 +15876510,0.15691008 +15876510,0 +15876618,0 +15876618,0.14378395 +15876630,0.14378395 +15876630,0 +15876732,0 +15876732,0.18255884 +15876816,0.18255884 +15876816,0 +15876846,0 +15876846,0.16385033 +15876852,0.16385033 +15876852,0 +15876966,0 +15876966,0.0078455039 +15877038,0.0078455039 +15877038,0 +15877170,0 +15877170,0.39544357 +15877902,0.39544357 +15877902,0 +15893358,0 +15893358,0.16550996 +15893370,0.16550996 +15893370,0 +15893472,0 +15893472,0.057181654 +15893478,0.057181654 +15893478,0 +15896004,0 +15896004,0.22857574 +15896124,0.22857574 +15896124,0 +15896592,0 +15896592,0.21258298 +15896676,0.21258298 +15896676,0 +15897180,0 +15897180,0.21726011 +15897258,0.21726011 +15897258,0 +15897768,0 +15897768,0.26418226 +15897834,0.26418226 +15897834,0 +15898356,0 +15898356,0.16173808 +15898428,0.16173808 +15898428,0 +15922806,0 +15922806,0.093995172 +15922812,0.093995172 +15922812,0 +15922920,0 +15922920,0.051750151 +15922926,0.051750151 +15922926,0 +15923040,0 +15923040,0.088865419 +15923046,0.088865419 +15923046,0 +15923514,0 +15923514,0.1567592 +15923610,0.1567592 +15923610,0 +15923628,0 +15923628,0.094447797 +15923646,0.094447797 +15923646,0 +15923748,0 +15923748,0.15992758 +15923862,0.15992758 +15923862,0 +15925194,0 +15925194,0.15887145 +15925206,0.15887145 +15925206,0 +15925308,0 +15925308,0.27957151 +15925380,0.27957151 +15925380,0 +15931302,0 +15931302,0.095654798 +15931488,0.095654798 +15931488,0 +15935982,0 +15935982,0.28304164 +15936012,0.28304164 +15936012,0 +15936102,0 +15936102,0.27157514 +15936156,0.27157514 +15936156,0 +15936216,0 +15936216,0.025497888 +15936222,0.025497888 +15936222,0 +15936234,0 +15936234,0.20051298 +15936258,0.20051298 +15936258,0 +15940854,0 +15940854,0.092184671 +15940890,0.092184671 +15940890,0 +15942510,0 +15942510,0.0092033796 +15942522,0.0092033796 +15942522,0 +15942798,0 +15942798,0.38412794 +15943518,0.38412794 +15943518,0 +15947904,0 +15947904,0.45594448 +15948180,0.45594448 +15948180,0 +15948666,0 +15948666,0.30597465 +15948732,0.30597465 +15948732,0 +15949590,0 +15949590,0.12688594 +15949620,0.12688594 +15949620,0 +15958416,0 +15958416,0.11949306 +15958464,0.11949306 +15958464,0 +15963798,0 +15963798,0.12296319 +15963864,0.12296319 +15963864,0 +15963912,0 +15963912,0.044055522 +15963930,0.044055522 +15963930,0 +15966582,0 +15966582,0.20835848 +15966630,0.20835848 +15966630,0 +15966696,0 +15966696,0.037266144 +15966702,0.037266144 +15966702,0 +15967848,0 +15967848,0.18255884 +15967914,0.18255884 +15967914,0 +15973698,0 +15973698,0.30974653 +15973716,0.30974653 +15973716,0 +15973812,0 +15973812,0.22012674 +15973836,0.22012674 +15973836,0 +15974004,0 +15974004,0.18074834 +15974088,0.18074834 +15974088,0 +15974118,0 +15974118,0.33313217 +15974142,0.33313217 +15974142,0 +15974232,0 +15974232,0.26372963 +15974286,0.26372963 +15974286,0 +15974352,0 +15974352,0.039378395 +15974358,0.039378395 +15974358,0 +15974466,0 +15974466,0.0070911285 +15974508,0.0070911285 +15974508,0 +15974580,0 +15974580,0.28892577 +15974622,0.28892577 +15974622,0 +15974700,0 +15974700,0.044508147 +15974706,0.044508147 +15974706,0 +15974814,0 +15974814,0.078153289 +15974868,0.078153289 +15974868,0 +15974928,0 +15974928,0.12311406 +15974994,0.12311406 +15974994,0 +15975030,0 +15975030,0.0015087508 +15975036,0.0015087508 +15975036,0 +15975048,0 +15975048,0.079511165 +15975054,0.079511165 +15975054,0 +15975162,0 +15975162,0.13533494 +15975192,0.13533494 +15975192,0 +15975276,0 +15975276,0.13820157 +15975294,0.13820157 +15975294,0 +15975396,0 +15975396,0.089619795 +15975402,0.089619795 +15975402,0 +15978108,0 +15978108,0.23611949 +15978132,0.23611949 +15978132,0 +16005768,0 +16005768,0.041792396 +16005774,0.041792396 +16005774,0 +16022190,0 +16022190,0.025497888 +16022196,0.025497888 +16022196,0 +16022304,0 +16022304,0.14996982 +16022406,0.14996982 +16022406,0 +16027266,0 +16027266,0.13820157 +16027302,0.13820157 +16027302,0 +16027380,0 +16027380,0.094146047 +16027404,0.094146047 +16027404,0 +16037256,0 +16037256,0.083433917 +16037262,0.083433917 +16037262,0 +16037394,0 +16037394,0.17939046 +16037442,0.17939046 +16037442,0 +16041864,0 +16041864,0.095956548 +16041870,0.095956548 +16041870,0 +16041984,0 +16041984,0.062009656 +16041990,0.062009656 +16041990,0 +16046304,0 +16046304,0.26312613 +16046328,0.26312613 +16046328,0 +16051176,0 +16051176,0.16400121 +16051266,0.16400121 +16051266,0 +16051764,0 +16051764,0.22827399 +16051848,0.22827399 +16051848,0 +16052352,0 +16052352,0.1925166 +16052418,0.1925166 +16052418,0 +16052934,0 +16052934,0.21544961 +16053012,0.21544961 +16053012,0 +16053096,0 +16053096,0.053258902 +16053102,0.053258902 +16053102,0 +16053210,0 +16053210,0.16309596 +16053264,0.16309596 +16053264,0 +16054830,0 +16054830,0.16626433 +16054854,0.16626433 +16054854,0 +16054944,0 +16054944,0.037718769 +16054950,0.037718769 +16054950,0 +16055064,0 +16055064,0.36119493 +16055082,0.36119493 +16055082,0 +16055178,0 +16055178,0.041038021 +16055214,0.041038021 +16055214,0 +16056456,0 +16056456,0.30944478 +16056480,0.30944478 +16056480,0 +16058586,0 +16058586,0.018557634 +16058700,0.18044659 +16058700,0 +16058724,0 +16058724,0.18044659 +16058820,0 +16058820,0 +16058820,0.018557634 +16058820,0.18240797 +16058910,0.18240797 +16058910,0 +16058934,0 +16058934,0.14936632 +16058946,0.14936632 +16058946,0 +16059048,0 +16059048,0.0078455039 +16059090,0.0078455039 +16059090,0 +16059150,0 +16059150,0.043753772 +16059156,0.043753772 +16059156,0 +16059168,0 +16059168,0.06004828 +16059192,0.06004828 +16059192,0 +16059282,0 +16059282,0.1410682 +16059300,0.1410682 +16059300,0 +16059396,0 +16059396,0.3571213 +16059402,0.3571213 +16059402,0 +16059516,0 +16059516,0.13005432 +16059612,0.13005432 +16059612,0 +16059630,0 +16059630,0.2917924 +16059636,0.2917924 +16059636,0 +16059696,0 +16059696,0.17003621 +16059732,0.17003621 +16059732,0 +16100346,0 +16100346,0.078756789 +16100358,0.078756789 +16100358,0 +16101204,0 +16101204,0.031532891 +16101234,0.031532891 +16101234,0 +16101372,0 +16101372,0.043452022 +16101396,0.043452022 +16101396,0 +16101486,0 +16101486,0.098370549 +16101510,0.098370549 +16101510,0 +16102224,0 +16102224,0.41354858 +16102398,0.41354858 +16102398,0 +16104306,0 +16104306,0.13669282 +16104336,0.13669282 +16104336,0 +16104420,0 +16104420,0.24170187 +16104498,0.24170187 +16104498,0 +16106064,0 +16106064,0.091279421 +16106094,0.091279421 +16106094,0 +16106310,0 +16106310,0.1985516 +16106334,0.1985516 +16106334,0 +16111008,0 +16111008,0.22495474 +16111056,0.22495474 +16111056,0 +16126992,0 +16126992,0.087658419 +16126998,0.087658419 +16126998,0 +16132068,0 +16132068,0.31140616 +16132092,0.31140616 +16132092,0 +16133058,0 +16133058,0.19296922 +16133100,0.19296922 +16133100,0 +16136268,0 +16136268,0.03983102 +16136310,0.03983102 +16136310,0 +16136610,0 +16136610,0.034852142 +16136622,0.034852142 +16136622,0 +16137330,0 +16137330,0.17154496 +16137336,0.17154496 +16137336,0 +16141392,0 +16141392,0.0045262523 +16141398,0.0045262523 +16141398,0 +16141506,0 +16141506,0.037869644 +16141512,0.037869644 +16141512,0 +16151922,0 +16151922,0.11149668 +16151952,0.11149668 +16151952,0 +16152624,0 +16152624,0.16324683 +16152642,0.16324683 +16152642,0 +16154160,0 +16154160,0.22465299 +16154166,0.22465299 +16154166,0 +16175424,0 +16175424,0.31427278 +16175448,0.31427278 +16175448,0 +16175538,0 +16175538,0.0075437538 +16175652,0.2009656 +16175652,0 +16175664,0 +16175664,0.0075437538 +16175706,0.2009656 +16175706,0 +16175772,0 +16175772,0.18452022 +16175814,0.18452022 +16175814,0 +16175886,0 +16175886,0.01041038 +16175892,0.01041038 +16175892,0 +16176000,0 +16176000,0.16053108 +16176006,0.16053108 +16176006,0 +16176120,0 +16176120,0.33433917 +16176156,0.33433917 +16176156,0 +16176234,0 +16176234,0.16822571 +16176318,0.16822571 +16176318,0 +16176348,0 +16176348,0.093995172 +16176354,0.093995172 +16176354,0 +16177410,0 +16177410,0.23234762 +16177476,0.23234762 +16177476,0 +16182378,0 +16182378,0.28228727 +16182708,0.28228727 +16182708,0 +16184766,0 +16184766,0.20503923 +16184772,0.20503923 +16184772,0 +16184880,0 +16184880,0.21092336 +16184886,0.21092336 +16184886,0 +16185000,0 +16185000,0.15585395 +16185066,0.15585395 +16185066,0 +16185114,0 +16185114,0.11602293 +16185150,0.11602293 +16185150,0 +16189746,0 +16189746,0.16898008 +16189854,0.16898008 +16189854,0 +16189860,0 +16189860,0.16400121 +16189878,0.16400121 +16189878,0 +16190322,0 +16190322,0.24683162 +16190412,0.24683162 +16190412,0 +16191114,0 +16191114,0.18255884 +16191126,0.18255884 +16191126,0 +16191474,0 +16191474,0.10802655 +16191480,0.10802655 +16191480,0 +16191594,0 +16191594,0.29571515 +16191600,0.29571515 +16191600,0 +16191708,0 +16191708,0.24411587 +16191714,0.24411587 +16191714,0 +16193544,0 +16193544,0.29616777 +16193640,0.29616777 +16193640,0 +16195194,0 +16195194,0.21801448 +16195230,0.21801448 +16195230,0 +16195308,0 +16195308,0.0069402535 +16195338,0.0069402535 +16195338,0 +16195392,0 +16195392,0.043301147 +16195404,0.043301147 +16195404,0 +16195428,0 +16195428,0.2009656 +16195494,0.2009656 +16195494,0 +16195542,0 +16195542,0.19538322 +16195566,0.19538322 +16195566,0 +16195656,0 +16195656,0.21439348 +16195674,0.21439348 +16195674,0 +16195776,0 +16195776,0.22284249 +16195782,0.22284249 +16195782,0 +16195890,0 +16195890,0.18391672 +16195920,0.18391672 +16195920,0 +16196004,0 +16196004,0.15449608 +16196034,0.15449608 +16196034,0 +16196118,0 +16196118,0.046167773 +16196190,0.082377791 +16196190,0 +16196196,0 +16196196,0.082377791 +16196214,0.046167773 +16196214,0 +16196238,0 +16196238,0.20534098 +16196304,0.20534098 +16196304,0 +16199646,0 +16199646,0.30537115 +16199670,0.30537115 +16199670,0 +16200762,0 +16200762,0.12899819 +16200774,0.12899819 +16200774,0 +16201386,0 +16201386,0.3086904 +16202208,0.3086904 +16202208,0 +16218420,0 +16218420,0.29149065 +16218444,0.29149065 +16218444,0 +16221828,0 +16221828,0.30959565 +16222530,0.30959565 +16222530,0 +16222584,0 +16222584,0.32347616 +16222614,0.32347616 +16222614,0 +16224948,0 +16224948,0.070307785 +16224954,0.070307785 +16224954,0 +16225170,0 +16225170,0.098370549 +16225248,0.098370549 +16225248,0 +16230192,0 +16230192,0.20383223 +16230210,0.20383223 +16230210,0 +16230306,0 +16230306,0.0073928787 +16230408,0.0073928787 +16230408,0 +16240788,0 +16240788,0.14966807 +16240884,0.14966807 +16240884,0 +16264278,0 +16264278,0.1585697 +16264314,0.1585697 +16264314,0 +16271280,0 +16271280,0.016898008 +16271286,0.016898008 +16271286,0 +16271736,0 +16271736,0.43859384 +16271742,0.43859384 +16271742,0 +16272384,0 +16272384,0.37235969 +16272570,0.37235969 +16272570,0 +16274754,0 +16274754,0.13880507 +16274802,0.13880507 +16274802,0 +16275402,0 +16275402,0.19161135 +16275492,0.19161135 +16275492,0 +16275516,0 +16275516,0.22057936 +16275546,0.22057936 +16275546,0 +16278108,0 +16278108,0.19176222 +16278222,0.16777308 +16278222,0 +16278264,0 +16278264,0.19176222 +16278294,0.16777308 +16278294,0 +16278336,0 +16278336,0.13488232 +16278354,0.13488232 +16278354,0 +16278456,0 +16278456,0.31261316 +16278498,0.31261316 +16278498,0 +16282812,0 +16282812,0.21710923 +16282890,0.21710923 +16282890,0 +16286694,0 +16286694,0.13624019 +16286784,0.13624019 +16286784,0 +16286808,0 +16286808,0.24622812 +16286826,0.24622812 +16286826,0 +16286922,0 +16286922,0.242758 +16286952,0.242758 +16286952,0 +16287654,0 +16287654,0.16219071 +16287714,0.16219071 +16287714,0 +16300092,0 +16300092,0.0992758 +16300098,0.0992758 +16300098,0 +16300206,0 +16300206,0.34369342 +16300260,0.34369342 +16300260,0 +16300326,0 +16300326,0.13020519 +16300344,0.13020519 +16300344,0 +16300440,0 +16300440,0.12070006 +16300470,0.12070006 +16300470,0 +16300554,0 +16300554,0.12326494 +16300608,0.12326494 +16300608,0 +16300758,0 +16300758,0.33614967 +16301352,0.33614967 +16301352,0 +16305222,0 +16305222,0.23989137 +16305228,0.23989137 +16305228,0 +16305336,0 +16305336,0.16988533 +16305480,0.16988533 +16305480,0 +16309782,0 +16309782,0.11194931 +16309794,0.11194931 +16309794,0 +16310214,0 +16310214,0.30235365 +16310220,0.30235365 +16310220,0 +16310328,0 +16310328,0.20775498 +16310352,0.20775498 +16310352,0 +16310442,0 +16310442,0.21846711 +16310466,0.21846711 +16310466,0 +16311198,0 +16311198,0.13141219 +16311312,0.28183464 +16311312,0 +16311318,0 +16311318,0.28183464 +16311324,0.13141219 +16311324,0 +16311432,0 +16311432,0.19628847 +16311498,0.19628847 +16311498,0 +16312482,0 +16312482,0.27610139 +16312488,0.27610139 +16312488,0 +16312548,0 +16312548,0.19643935 +16312566,0.19643935 +16312566,0 +16313064,0 +16313064,0.053711527 +16313106,0.053711527 +16313106,0 +16314480,0 +16314480,0.29737477 +16315092,0.29737477 +16315092,0 +16316184,0 +16316184,0.21967411 +16316208,0.21967411 +16316208,0 +16316298,0 +16316298,0.20805673 +16316316,0.20805673 +16316316,0 +16316418,0 +16316418,0.19221485 +16316508,0.19221485 +16316508,0 +16316940,0 +16316940,0.33961979 +16317006,0.33961979 +16317006,0 +16321050,0 +16321050,0.28455039 +16321614,0.28455039 +16321614,0 +16353510,0 +16353510,0.22646349 +16353558,0.22646349 +16353558,0 +16353630,0 +16353630,0.13578757 +16353684,0.13578757 +16353684,0 +16353744,0 +16353744,0.24471937 +16353834,0.24471937 +16353834,0 +16353858,0 +16353858,0.12070006 +16353912,0.12070006 +16353912,0 +16356870,0 +16356870,0.0063367532 +16356876,0.0063367532 +16356876,0 +16364538,0 +16364538,0.1961376 +16364550,0.1961376 +16364550,0 +16366968,0 +16366968,0.043452022 +16366974,0.043452022 +16366974,0 +16368234,0 +16368234,0.17697646 +16368246,0.17697646 +16368246,0 +16381230,0 +16381230,0.066837658 +16381236,0.066837658 +16381236,0 +16383324,0 +16383324,0.0078455039 +16383354,0.0078455039 +16383354,0 +16386780,0 +16386780,0.10802655 +16386870,0.10802655 +16386870,0 +16386900,0 +16386900,0.32302354 +16387014,0.25573325 +16387014,0 +16387020,0 +16387020,0.25573325 +16387044,0.32302354 +16387044,0 +16387128,0 +16387128,0.1071213 +16387152,0.1071213 +16387152,0 +16397928,0 +16397928,0.088261919 +16397940,0.088261919 +16397940,0 +16399428,0 +16399428,0.30778515 +16399476,0.30778515 +16399476,0 +16401150,0 +16401150,0.02082076 +16401210,0.02082076 +16401210,0 +16401264,0 +16401264,0.10697043 +16401270,0.10697043 +16401270,0 +16403934,0 +16403934,0.13292094 +16403940,0.13292094 +16403940,0 +16407894,0 +16407894,0.14242607 +16407900,0.14242607 +16407900,0 +16408014,0 +16408014,0.041490646 +16408038,0.041490646 +16408038,0 +16438098,0 +16438098,0.14861195 +16438104,0.14861195 +16438104,0 +16443012,0 +16443012,0.10184068 +16443018,0.10184068 +16443018,0 +16444062,0 +16444062,0.11722993 +16444116,0.11722993 +16444116,0 +16444272,0 +16444272,0.26689801 +16444302,0.14197345 +16444302,0 +16444308,0 +16444308,0.14197345 +16444386,0 +16444386,0 +16444386,0.23129149 +16444386,0.26689801 +16444500,0.23129149 +16444500,0 +16444506,0 +16444506,0.14242607 +16444602,0.14242607 +16444602,0 +16444620,0 +16444620,0.17788171 +16444704,0.17788171 +16444704,0 +16444980,0 +16444980,0.27172601 +16445022,0.27172601 +16445022,0 +16445574,0 +16445574,0.0072420036 +16445622,0.0072420036 +16445622,0 +16448400,0 +16448400,0.0037718769 +16448406,0.0037718769 +16448406,0 +16449486,0 +16449486,0.095654798 +16449516,0.095654798 +16449516,0 +16452510,0 +16452510,0.25316838 +16452600,0.25316838 +16452600,0 +16452624,0 +16452624,0.24924562 +16452684,0.24924562 +16452684,0 +16452738,0 +16452738,0.31864816 +16452780,0.31864816 +16452780,0 +16453902,0 +16453902,0.017954134 +16453908,0.017954134 +16453908,0 +16459812,0 +16459812,0.096861798 +16459818,0.096861798 +16459818,0 +16462452,0 +16462452,0.13095957 +16462458,0.13095957 +16462458,0 +16462566,0 +16462566,0.32136391 +16462608,0.32136391 +16462608,0 +16462686,0 +16462686,0.19568497 +16462734,0.19568497 +16462734,0 +16467102,0 +16467102,0.18346409 +16467108,0.18346409 +16467108,0 +16467612,0 +16467612,0.081925166 +16467624,0.081925166 +16467624,0 +16467846,0 +16467846,0.1597767 +16467882,0.1597767 +16467882,0 +16473444,0 +16473444,0.20187085 +16473450,0.20187085 +16473450,0 +16473558,0 +16473558,0.046771273 +16473564,0.046771273 +16473564,0 +16473678,0 +16473678,0.00030175015 +16473684,0.00030175015 +16473684,0 +16473792,0 +16473792,0.12175619 +16473798,0.12175619 +16473798,0 +16473906,0 +16473906,0.045111648 +16474020,0.045111648 +16474020,0 +16479888,0 +16479888,0.22359686 +16479942,0.22359686 +16479942,0 +16480428,0 +16480428,0.30175015 +16481070,0.30175015 +16481070,0 +16481550,0 +16481550,0.23536512 +16481610,0.23536512 +16481610,0 +16481664,0 +16481664,0.14423657 +16481676,0.14423657 +16481676,0 +16482258,0 +16482258,0.38473144 +16482834,0.38473144 +16482834,0 +16483362,0 +16483362,0.10697043 +16483380,0.10697043 +16483380,0 +16487472,0 +16487472,0.063367532 +16487478,0.063367532 +16487478,0 +16487586,0 +16487586,0.22103199 +16487628,0.22103199 +16487628,0 +16488990,0 +16488990,0.092335546 +16489026,0.092335546 +16489026,0 +16495428,0 +16495428,0.3456548 +16495452,0.3456548 +16495452,0 +16495542,0 +16495542,0.28289077 +16495572,0.28289077 +16495572,0 +16498512,0 +16498512,0.20021123 +16498536,0.20021123 +16498536,0 +16514412,0 +16514412,0.2948099 +16514550,0.2948099 +16514550,0 +16526184,0 +16526184,0.24713337 +16526202,0.24713337 +16526202,0 +16526298,0 +16526298,0.012220881 +16526304,0.012220881 +16526304,0 +16526418,0 +16526418,0.01071213 +16526424,0.01071213 +16526424,0 +16526532,0 +16526532,0.13080869 +16526544,0.13080869 +16526544,0 +16529052,0 +16529052,0.29013277 +16529640,0.29013277 +16529640,0 +16529784,0 +16529784,0.49713337 +16529790,0.49713337 +16529790,0 +16529898,0 +16529898,0.1579662 +16529922,0.1579662 +16529922,0 +16530018,0 +16530018,0.17290284 +16530054,0.17290284 +16530054,0 +16530132,0 +16530132,0.097012674 +16530144,0.097012674 +16530144,0 +16530822,0 +16530822,0.34007242 +16530906,0.34007242 +16530906,0 +16531122,0 +16531122,0.21560048 +16531182,0.21560048 +16531182,0 +16531200,0 +16531200,0.31276403 +16531290,0.31276403 +16531290,0 +16531416,0 +16531416,0.47329511 +16531488,0.47329511 +16531488,0 +16531716,0 +16531716,0.38744719 +16531788,0.38744719 +16531788,0 +16534842,0 +16534842,0.28892577 +16534908,0.28892577 +16534908,0 +16535796,0 +16535796,0.34248642 +16535958,0.34248642 +16535958,0 +16541370,0 +16541370,0.0064876282 +16541376,0.0064876282 +16541376,0 +16542348,0 +16542348,0.027308389 +16542354,0.027308389 +16542354,0 +16550718,0 +16550718,0.096409173 +16550778,0.096409173 +16550778,0 +16556298,0 +16556298,0.36149668 +16556316,0.36149668 +16556316,0 +16558368,0 +16558368,0.31472541 +16558422,0.31472541 +16558422,0 +16558458,0 +16558458,0.17441159 +16558476,0.17441159 +16558476,0 +16560222,0 +16560222,0.13261919 +16560246,0.13261919 +16560246,0 +16560336,0 +16560336,0.01041038 +16560342,0.01041038 +16560342,0 +16560456,0 +16560456,0.16747133 +16560498,0.16747133 +16560498,0 +16570506,0 +16570506,0.1065178 +16570518,0.1065178 +16570518,0 +16570716,0 +16570716,0.27293301 +16570824,0.27293301 +16570824,0 +16571094,0 +16571094,0.17501509 +16571190,0.17501509 +16571190,0 +16575942,0 +16575942,0.046922148 +16575948,0.046922148 +16575948,0 +16577052,0 +16577052,0.20428485 +16577070,0.20428485 +16577070,0 +16577166,0 +16577166,0.057030779 +16577256,0.057030779 +16577256,0 +16579632,0 +16579632,0.38231744 +16579776,0.28500302 +16579776,0 +16579848,0 +16579848,0.28500302 +16579998,0.38231744 +16579998,0 +16588614,0 +16588614,0.13759807 +16588632,0.13759807 +16588632,0 +16588728,0 +16588728,0.10365118 +16588740,0.10365118 +16588740,0 +16611744,0 +16611744,0.26931201 +16611780,0.26931201 +16611780,0 +16616550,0 +16616550,0.27655401 +16616910,0.27655401 +16616910,0 +16618386,0 +16618386,0.43225709 +16618884,0.43225709 +16618884,0 +16620852,0 +16620852,0.34731442 +16621548,0.34731442 +16621548,0 +16622754,0 +16622754,0.21756186 +16622766,0.21756186 +16622766,0 +16631478,0 +16631478,0.23898612 +16631490,0.23898612 +16631490,0 +16633470,0 +16633470,0.031834641 +16633476,0.031834641 +16633476,0 +16634028,0 +16634028,0.13654194 +16634052,0.13654194 +16634052,0 +16634730,0 +16634730,0.30657815 +16634766,0.30657815 +16634766,0 +16634844,0 +16634844,0.40087508 +16634856,0.40087508 +16634856,0 +16635612,0 +16635612,0.23491249 +16635708,0.23491249 +16635708,0 +16635726,0 +16635726,0.18814122 +16635738,0.18814122 +16635738,0 +16635846,0 +16635846,0.21922148 +16635864,0.21922148 +16635864,0 +16635900,0 +16635900,0.12733856 +16635936,0.12733856 +16635936,0 +16635960,0 +16635960,0.18331322 +16635966,0.18331322 +16635966,0 +16636074,0 +16636074,0.0093542547 +16636116,0.0093542547 +16636116,0 +16636602,0 +16636602,0.26916113 +16636674,0.26916113 +16636674,0 +16636716,0 +16636716,0.18753772 +16636806,0.18753772 +16636806,0 +16636836,0 +16636836,0.095503923 +16636842,0.095503923 +16636842,0 +16636950,0 +16636950,0.15706095 +16637028,0.15706095 +16637028,0 +16637064,0 +16637064,0.011466506 +16637070,0.011466506 +16637070,0 +16637178,0 +16637178,0.27579964 +16637202,0.27579964 +16637202,0 +16642398,0 +16642398,0.10546168 +16642464,0.10546168 +16642464,0 +16648986,0 +16648986,0.22525649 +16648998,0.22525649 +16648998,0 +16656966,0 +16656966,0.043602897 +16657014,0.043602897 +16657014,0 +16657086,0 +16657086,0.21016898 +16657176,0.21016898 +16657176,0 +16657326,0 +16657326,0.18527459 +16657440,0.21876886 +16657440,0 +16657476,0 +16657476,0.18527459 +16657548,0.21876886 +16657548,0 +16657554,0 +16657554,0.21122511 +16657566,0.21122511 +16657566,0 +16657674,0 +16657674,0.18708509 +16657680,0.18708509 +16657680,0 +16657788,0 +16657788,0.1059143 +16657830,0.1059143 +16657830,0 +16682418,0 +16682418,0.23928787 +16682466,0.23928787 +16682466,0 +16683006,0 +16683006,0.251207 +16683096,0.251207 +16683096,0 +16683588,0 +16683588,0.18225709 +16683678,0.18225709 +16683678,0 +16683978,0 +16683978,0.11044056 +16684098,0.16173808 +16684098,0 +16684152,0 +16684152,0.16173808 +16684176,0.243965 +16684176,0 +16684182,0 +16684182,0.11044056 +16684212,0.14197345 +16684212,0 +16684218,0 +16684218,0.14197345 +16684266,0.243965 +16684266,0 +16684764,0 +16684764,0.27851539 +16684866,0.27851539 +16684866,0 +16685352,0 +16685352,0.23370549 +16685430,0.23370549 +16685430,0 +16701264,0 +16701264,0.12085094 +16701330,0.12085094 +16701330,0 +16701378,0 +16701378,0.074683162 +16701438,0.074683162 +16701438,0 +16701492,0 +16701492,0.0076946288 +16701576,0.0076946288 +16701576,0 +16702878,0 +16702878,0.091430296 +16702890,0.091430296 +16702890,0 +16703412,0 +16703412,0.23370549 +16703460,0.23370549 +16703460,0 +16703526,0 +16703526,0.1059143 +16703532,0.1059143 +16703532,0 +16715034,0 +16715034,0.23340374 +16715046,0.23340374 +16715046,0 +16715154,0 +16715154,0.018859384 +16715160,0.018859384 +16715160,0 +16715268,0 +16715268,0.34957755 +16715340,0.34957755 +16715340,0 +16715850,0 +16715850,0.012673506 +16715856,0.012673506 +16715856,0 +16715964,0 +16715964,0.090223295 +16715970,0.090223295 +16715970,0 +16716084,0 +16716084,0.19221485 +16716180,0.19221485 +16716180,0 +16718490,0 +16718490,0.08056729 +16718502,0.08056729 +16718502,0 +16720512,0 +16720512,0.17652384 +16720542,0.17652384 +16720542,0 +16725666,0 +16725666,0.31517803 +16725672,0.31517803 +16725672,0 +16725780,0 +16725780,0.15706095 +16725840,0.044960772 +16725840,0 +16725864,0 +16725864,0.044960772 +16725870,0.15706095 +16725870,0 +16727742,0 +16727742,0.20911285 +16727754,0.20911285 +16727754,0 +16728960,0 +16728960,0.19960772 +16729074,0.19960772 +16729074,0 +16736190,0 +16736190,0.11843693 +16736244,0.11843693 +16736244,0 +16740786,0 +16740786,0.17969221 +16740798,0.17969221 +16740798,0 +16741086,0 +16741086,0.1028968 +16741200,0.17757996 +16741200,0 +16741212,0 +16741212,0.17757996 +16741254,0.1028968 +16741254,0 +16741314,0 +16741314,0.13608932 +16741350,0.13608932 +16741350,0 +16745598,0 +16745598,0.050090525 +16745604,0.050090525 +16745604,0 +16745712,0 +16745712,0.18799034 +16745718,0.18799034 +16745718,0 +16745826,0 +16745826,0.15283645 +16745892,0.15283645 +16745892,0 +16745946,0 +16745946,0.074532287 +16745970,0.074532287 +16745970,0 +16746060,0 +16746060,0.062914906 +16746066,0.062914906 +16746066,0 +16746084,0 +16746084,0.15147858 +16746108,0.15147858 +16746108,0 +16753518,0 +16753518,0.28575739 +16753584,0.28575739 +16753584,0 +16753824,0 +16753824,0.31412191 +16753848,0.31412191 +16753848,0 +16753944,0 +16753944,0.23672299 +16753980,0.23672299 +16753980,0 +16757976,0 +16757976,0.23883524 +16758036,0.23883524 +16758036,0 +16760850,0 +16760850,0.30069403 +16760934,0.30069403 +16760934,0 +16760970,0 +16760970,0.1979481 +16760994,0.1979481 +16760994,0 +16769520,0 +16769520,0.031683766 +16769526,0.031683766 +16769526,0 +16769634,0 +16769634,0.10938443 +16769640,0.10938443 +16769640,0 +16775532,0 +16775532,0.10727218 +16775550,0.10727218 +16775550,0 +16781508,0 +16781508,0.036964393 +16781514,0.036964393 +16781514,0 +16781622,0 +16781622,0.1495172 +16781634,0.1495172 +16781634,0 +16781736,0 +16781736,0.058690404 +16781772,0.058690404 +16781772,0 +16781856,0 +16781856,0.17592034 +16781916,0.17592034 +16781916,0 +16781970,0 +16781970,0.23114062 +16781976,0.23114062 +16781976,0 +16783614,0 +16783614,0.05914303 +16783620,0.05914303 +16783620,0 +16783728,0 +16783728,0.12235969 +16783764,0.12235969 +16783764,0 +16783842,0 +16783842,0.17260109 +16783848,0.17260109 +16783848,0 +16787232,0 +16787232,0.19900422 +16787310,0.19900422 +16787310,0 +16787352,0 +16787352,0.029571515 +16787370,0.029571515 +16787370,0 +16787466,0 +16787466,0.2033796 +16787598,0.2033796 +16787598,0 +16797492,0 +16797492,0.027157514 +16797498,0.027157514 +16797498,0 +16797606,0 +16797606,0.20715148 +16797612,0.20715148 +16797612,0 +16798722,0 +16798722,0.19704285 +16798770,0.19704285 +16798770,0 +16798836,0 +16798836,0.240344 +16798842,0.240344 +16798842,0 +16802082,0 +16802082,0.15947495 +16802130,0.15947495 +16802130,0 +16806108,0 +16806108,0.11904043 +16806150,0.11904043 +16806150,0 +16808880,0 +16808880,0.30175015 +16808928,0.30175015 +16808928,0 +16808994,0 +16808994,0.14197345 +16809012,0.14197345 +16809012,0 +16810608,0 +16810608,0.057181654 +16810698,0.057181654 +16810698,0 +16820388,0 +16820388,0.22887749 +16820400,0.22887749 +16820400,0 +16822944,0 +16822944,0.15328908 +16823052,0.15328908 +16823052,0 +16824930,0 +16824930,0.22540736 +16824942,0.22540736 +16824942,0 +16833090,0 +16833090,0.12341581 +16833096,0.12341581 +16833096,0 +16833654,0 +16833654,0.12582981 +16833660,0.12582981 +16833660,0 +16834278,0 +16834278,0.30054315 +16835046,0.30054315 +16835046,0 +16835964,0 +16835964,0.055974653 +16836042,0.055974653 +16836042,0 +16836954,0 +16836954,0.41098371 +16837002,0.18527459 +16837002,0 +16837014,0 +16837014,0.18527459 +16837278,0.41098371 +16837278,0 +16837392,0 +16837392,0.027308389 +16837398,0.027308389 +16837398,0 +16839030,0 +16839030,0.1543452 +16839048,0.1543452 +16839048,0 +16848234,0 +16848234,0.21695836 +16848294,0.21695836 +16848294,0 +16851222,0 +16851222,0.22767049 +16851294,0.22767049 +16851294,0 +16880046,0 +16880046,0.15766445 +16880124,0.15766445 +16880124,0 +16882752,0 +16882752,0.34610742 +16882812,0.34610742 +16882812,0 +16885698,0 +16885698,0.21891973 +16885770,0.21891973 +16885770,0 +16886718,0 +16886718,0.17788171 +16886766,0.17788171 +16886766,0 +16888836,0 +16888836,0.0036210018 +16888842,0.0036210018 +16888842,0 +16888950,0 +16888950,0.2033796 +16888968,0.2033796 +16888968,0 +16893984,0 +16893984,0.18135184 +16894038,0.18135184 +16894038,0 +16894104,0 +16894104,0.065630658 +16894122,0.065630658 +16894122,0 +16896414,0 +16896414,0.30914303 +16896768,0.30914303 +16896768,0 +16910496,0 +16910496,0.34158117 +16910574,0.34158117 +16910574,0 +16917414,0 +16917414,0.1434822 +16917540,0.1434822 +16917540,0 +16922274,0 +16922274,0.21182861 +16922304,0.21182861 +16922304,0 +16922496,0 +16922496,0.13503319 +16922514,0.13503319 +16922514,0 +16925142,0 +16925142,0.32785154 +16925202,0.32785154 +16925202,0 +16925436,0 +16925436,0.23295112 +16925502,0.23295112 +16925502,0 +16925736,0 +16925736,0.40962583 +16925796,0.40962583 +16925796,0 +16926036,0 +16926036,0.4993965 +16926096,0.4993965 +16926096,0 +16926330,0 +16926330,0.56382016 +16926390,0.56382016 +16926390,0 +16926630,0 +16926630,0.50512975 +16926642,0.50512975 +16926642,0 +16933002,0 +16933002,0.1591732 +16933062,0.1591732 +16933062,0 +16934250,0 +16934250,0.13322269 +16934280,0.13322269 +16934280,0 +16934364,0 +16934364,0.16128546 +16934388,0.16128546 +16934388,0 +16948806,0 +16948806,0.18497284 +16948824,0.18497284 +16948824,0 +16954644,0 +16954644,0.31366928 +16955184,0.31366928 +16955184,0 +16956882,0 +16956882,0.33780929 +16956894,0.33780929 +16956894,0 +16958148,0 +16958148,0.32815329 +16958388,0.32815329 +16958388,0 +16961166,0 +16961166,0.23400724 +16961232,0.23400724 +16961232,0 +16963932,0 +16963932,0.39121907 +16964352,0.39121907 +16964352,0 +16967700,0 +16967700,0.31713941 +16967718,0.31713941 +16967718,0 +16969668,0 +16969668,0.28726614 +16969836,0.28726614 +16969836,0 +16978440,0 +16978440,0.254828 +16978452,0.254828 +16978452,0 +16987554,0 +16987554,0.58117079 +16988040,0.58117079 +16988040,0 +16988814,0 +16988814,0.26327701 +16988916,0.26327701 +16988916,0 +16988928,0 +16988928,0.21031986 +16988982,0.21031986 +16988982,0 +16989042,0 +16989042,0.11511768 +16989048,0.11511768 +16989048,0 +16989162,0 +16989162,0.078455039 +16989168,0.078455039 +16989168,0 +16989276,0 +16989276,0.18678334 +16989282,0.18678334 +16989282,0 +16989390,0 +16989390,0.057332529 +16989402,0.057332529 +16989402,0 +16989510,0 +16989510,0.00030175015 +16989516,0.00030175015 +16989516,0 +16989624,0 +16989624,0.26071213 +16989648,0.26071213 +16989648,0 +16989738,0 +16989738,0.085395293 +16989834,0.085395293 +16989834,0 +16989858,0 +16989858,0.062160531 +16989876,0.062160531 +16989876,0 +16991190,0 +16991190,0.27519614 +16991418,0.27519614 +16991418,0 +16994250,0 +16994250,0.030476765 +16994256,0.030476765 +16994256,0 +16994370,0 +16994370,0.0078455039 +16994376,0.0078455039 +16994376,0 +16994484,0 +16994484,0.2015691 +16994514,0.2015691 +16994514,0 +16994598,0 +16994598,0.2469825 +16994634,0 +16994634,0 +16994634,0.18014484 +16994634,0.2469825 +16994706,0.18014484 +16994706,0 +16994748,0 +16994748,0.039981895 +16994772,0.039981895 +16994772,0 +16994868,0 +16994868,0.015238383 +16994910,0.015238383 +16994910,0 +16994982,0 +16994982,0.036210018 +16994988,0.036210018 +16994988,0 +16995096,0 +16995096,0.21650573 +16995108,0.21650573 +16995108,0 +16996290,0 +16996290,0.011315631 +16996296,0.011315631 +16996296,0 +16998402,0 +16998402,0.12341581 +16998444,0.12341581 +16998444,0 +16998516,0 +16998516,0.21001811 +16998606,0.21001811 +16998606,0 +16998636,0 +16998636,0.2948099 +16998660,0.2948099 +16998660,0 +16999182,0 +16999182,0.2996379 +16999194,0.2996379 +16999194,0 +16999296,0 +16999296,0.12945081 +16999320,0.12945081 +16999320,0 +16999410,0 +16999410,0.33992154 +16999464,0.33992154 +16999464,0 +16999530,0 +16999530,0.1949306 +16999596,0.1949306 +16999596,0 +16999644,0 +16999644,0.068044659 +16999680,0.068044659 +16999680,0 +16999758,0 +16999758,0.1519312 +16999776,0.1519312 +16999776,0 +16999998,0 +16999998,0.24004225 +17000028,0.24004225 +17000028,0 +17000064,0 +17000064,0.069704285 +17000070,0.069704285 +17000070,0 +17005020,0 +17005020,0.038774894 +17005062,0.038774894 +17005062,0 +17005650,0 +17005650,0.17169584 +17005710,0.17169584 +17005710,0 +17006274,0 +17006274,0.15389258 +17006286,0.15389258 +17006286,0 +17011188,0 +17011188,0.071363911 +17011194,0.071363911 +17011194,0 +17011308,0 +17011308,0.2542245 +17011356,0.2542245 +17011356,0 +17011422,0 +17011422,0.12884731 +17011446,0.12884731 +17011446,0 +17020386,0 +17020386,0.35968618 +17020392,0.35968618 +17020392,0 +17029704,0 +17029704,0.18557634 +17029734,0.18557634 +17029734,0 +17033592,0 +17033592,0.014182257 +17033628,0.014182257 +17033628,0 +17033706,0 +17033706,0.13473144 +17033712,0.13473144 +17033712,0 +17038344,0 +17038344,0.28560652 +17038410,0.28560652 +17038410,0 +17046486,0 +17046486,0.23385637 +17046516,0.23385637 +17046516,0 +17047542,0 +17047542,0.13005432 +17047554,0.13005432 +17047554,0 +17050074,0 +17050074,0.35998793 +17050254,0.35998793 +17050254,0 +17051322,0 +17051322,0.23430899 +17051382,0.23430899 +17051382,0 +17051610,0 +17051610,0.0051297526 +17051616,0.0051297526 +17051616,0 +17054676,0 +17054676,0.21439348 +17054742,0.21439348 +17054742,0 +17055258,0 +17055258,0.078304164 +17055264,0.23174412 +17055264,0 +17055270,0 +17055270,0.078304164 +17055342,0.23174412 +17055342,0 +17055372,0 +17055372,0.29405552 +17055378,0.29405552 +17055378,0 +17055792,0 +17055792,0.52368739 +17055852,0.23415812 +17055852,0 +17055960,0 +17055960,0.23415812 +17056410,0.52368739 +17056410,0 +17056440,0 +17056440,0.16747133 +17056494,0.16747133 +17056494,0 +17056710,0 +17056710,0.073928787 +17056812,0.073928787 +17056812,0 +17056824,0 +17056824,0.28621002 +17056854,0.28621002 +17056854,0 +17056944,0 +17056944,0.17908871 +17056962,0.17908871 +17056962,0 +17057022,0 +17057022,0.24683162 +17057112,0.24683162 +17057112,0 +17059530,0 +17059530,0.2542245 +17059686,0.2542245 +17059686,0 +17068050,0 +17068050,0.28394689 +17068146,0.28394689 +17068146,0 +17068698,0 +17068698,0.097917924 +17068776,0.097917924 +17068776,0 +17068818,0 +17068818,0.099728425 +17068824,0.099728425 +17068824,0 +17072706,0 +17072706,0.25331925 +17072712,0.25331925 +17072712,0 +17074656,0 +17074656,0.051901026 +17074662,0.051901026 +17074662,0 +17079168,0 +17079168,0.10847918 +17079216,0.10847918 +17079216,0 +17095992,0 +17095992,0.019462885 +17095998,0.019462885 +17095998,0 +17100270,0 +17100270,0.32694629 +17100744,0.32694629 +17100744,0 +17101284,0 +17101284,0.0048280024 +17101290,0.0048280024 +17101290,0 +17101398,0 +17101398,0.0072420036 +17101404,0.0072420036 +17101404,0 +17102106,0 +17102106,0.35636693 +17102586,0.35636693 +17102586,0 +17105820,0 +17105820,0.2905854 +17105874,0.2905854 +17105874,0 +17106606,0 +17106606,0.19885335 +17106648,0.19885335 +17106648,0 +17106720,0 +17106720,0.052806276 +17106726,0.052806276 +17106726,0 +17106834,0 +17106834,0.13427882 +17106876,0.13427882 +17106876,0 +17106954,0 +17106954,0.16369946 +17106960,0.16369946 +17106960,0 +17107068,0 +17107068,0.33554617 +17107074,0.33554617 +17107074,0 +17116278,0 +17116278,0.17667471 +17116296,0.17667471 +17116296,0 +17116398,0 +17116398,0.21846711 +17116470,0.21846711 +17116470,0 +17116512,0 +17116512,0.22616174 +17116542,0.22616174 +17116542,0 +17116626,0 +17116626,0.19342185 +17116638,0.19342185 +17116638,0 +17132922,0 +17132922,0.38789982 +17132934,0.38789982 +17132934,0 +17136474,0 +17136474,0.13955944 +17136528,0.13955944 +17136528,0 +17137626,0 +17137626,0.22148461 +17137824,0.22148461 +17137824,0 +17142714,0 +17142714,0.18497284 +17142792,0.18497284 +17142792,0 +17146020,0 +17146020,0.21801448 +17146104,0.21801448 +17146104,0 +17146134,0 +17146134,0.073928787 +17146146,0.073928787 +17146146,0 +17146254,0 +17146254,0.20383223 +17146302,0.20383223 +17146302,0 +17146368,0 +17146368,0.21861798 +17146386,0.21861798 +17146386,0 +17147346,0 +17147346,0.048129149 +17147376,0.048129149 +17147376,0 +17149800,0 +17149800,0.50256488 +17149866,0.50256488 +17149866,0 +17150100,0 +17150100,0.22510561 +17150202,0.22510561 +17150202,0 +17150376,0 +17150376,0.28455039 +17150400,0.57226916 +17150400,0 +17150406,0 +17150406,0.57226916 +17150412,0.28455039 +17150412,0 +17150490,0 +17150490,0.068799034 +17150508,0.068799034 +17150508,0 +17150610,0 +17150610,0.18105009 +17150664,0.18105009 +17150664,0 +17155308,0 +17155308,0.33464092 +17155350,0.33464092 +17155350,0 +17162286,0 +17162286,0.23838262 +17162340,0.23838262 +17162340,0 +17165772,0 +17165772,0.0075437538 +17165838,0.0075437538 +17165838,0 +17174772,0 +17174772,0.17637296 +17174862,0.17637296 +17174862,0 +17174892,0 +17174892,0.0028666264 +17174898,0.0028666264 +17174898,0 +17186016,0 +17186016,0.073627037 +17186070,0.073627037 +17186070,0 +17214534,0 +17214534,0.27534701 +17214558,0.27534701 +17214558,0 +17214648,0 +17214648,0.067742909 +17214690,0.067742909 +17214690,0 +17214768,0 +17214768,0.13020519 +17214846,0.13020519 +17214846,0 +17214882,0 +17214882,0.16098371 +17214978,0.16098371 +17214978,0 +17214996,0 +17214996,0.22601086 +17215032,0.22601086 +17215032,0 +17215110,0 +17215110,0.0992758 +17215158,0.0992758 +17215158,0 +17215230,0 +17215230,0.28741702 +17215248,0.28741702 +17215248,0 +17215344,0 +17215344,0.30582378 +17215458,0 +17215458,0 +17215458,0.070307785 +17215458,0.30582378 +17215464,0.070307785 +17215464,0 +17215578,0 +17215578,0.017350634 +17215602,0.017350634 +17215602,0 +17215608,0 +17215608,0.3492758 +17215662,0.3492758 +17215662,0 +17218470,0 +17218470,0.20428485 +17218500,0.20428485 +17218500,0 +17218584,0 +17218584,0.24019312 +17218698,0.24019312 +17218698,0 +17220672,0 +17220672,0.21952323 +17220732,0.21952323 +17220732,0 +17222088,0 +17222088,0.16158721 +17222178,0.16158721 +17222178,0 +17223462,0 +17223462,0.39665057 +17223468,0.39665057 +17223468,0 +17230722,0 +17230722,0.026704888 +17230728,0.026704888 +17230728,0 +17230842,0 +17230842,0.040585395 +17230920,0.040585395 +17230920,0 +17233938,0 +17233938,0.37658419 +17233944,0.37658419 +17233944,0 +17234424,0 +17234424,0.0092033796 +17234430,0.0092033796 +17234430,0 +17235738,0 +17235738,0.41535908 +17236200,0.41535908 +17236200,0 +17237814,0 +17237814,0.34429692 +17237886,0.34429692 +17237886,0 +17239446,0 +17239446,0.21228123 +17239512,0.21228123 +17239512,0 +17239740,0 +17239740,0.070911285 +17239758,0.070911285 +17239758,0 +17239854,0 +17239854,0.18814122 +17239902,0.18814122 +17239902,0 +17239968,0 +17239968,0.19402535 +17240124,0.19402535 +17240124,0 +17249394,0 +17249394,0.14076645 +17249460,0.14076645 +17249460,0 +17250666,0 +17250666,0.0075437538 +17250702,0.0075437538 +17250702,0 +17250858,0 +17250858,0.077398914 +17250882,0.077398914 +17250882,0 +17252544,0 +17252544,0.3014484 +17252556,0.3014484 +17252556,0 +17257260,0 +17257260,0.026101388 +17257266,0.026101388 +17257266,0 +17258952,0 +17258952,0.45911285 +17258964,0.45911285 +17258964,0 +17261556,0 +17261556,0.12839469 +17261586,0.12839469 +17261586,0 +17267040,0 +17267040,0.16430296 +17267082,0.16430296 +17267082,0 +17267940,0 +17267940,0.25211225 +17268018,0.25211225 +17268018,0 +17272212,0 +17272212,0.074079662 +17272242,0.074079662 +17272242,0 +17272326,0 +17272326,0.028968014 +17272332,0.028968014 +17272332,0 +17273946,0 +17273946,0.056729028 +17273958,0.056729028 +17273958,0 +17274258,0 +17274258,0.16143633 +17274264,0.16143633 +17274264,0 +17275134,0 +17275134,0.0030175015 +17275140,0.0030175015 +17275140,0 +17275248,0 +17275248,0.054465902 +17275254,0.054465902 +17275254,0 +17277900,0 +17277900,0.18753772 +17277924,0.18753772 +17277924,0 +17285646,0 +17285646,0.32181654 +17286186,0.32181654 +17286186,0 +17317254,0 +17317254,0.085847918 +17317290,0.085847918 +17317290,0 +17318064,0 +17318064,0.25573325 +17318100,0.25573325 +17318100,0 +17321694,0 +17321694,0.16158721 +17321736,0.16158721 +17321736,0 +17322198,0 +17322198,0.4079662 +17322270,0.4079662 +17322270,0 +17326650,0 +17326650,0.39846107 +17326704,0.39846107 +17326704,0 +17335098,0 +17335098,0.1543452 +17335110,0.1543452 +17335110,0 +17335212,0 +17335212,0.091430296 +17335302,0.091430296 +17335302,0 +17335326,0 +17335326,0.20368135 +17335368,0.20368135 +17335368,0 +17335446,0 +17335446,0.0055823778 +17335452,0.0055823778 +17335452,0 +17335560,0 +17335560,0.053409777 +17335572,0.053409777 +17335572,0 +17335638,0 +17335638,0.32136391 +17335656,0.32136391 +17335656,0 +17335674,0 +17335674,0.19598672 +17335680,0.19598672 +17335680,0 +17335752,0 +17335752,0.20006035 +17335794,0.12673506 +17335794,0 +17335800,0 +17335800,0.12673506 +17335860,0.20006035 +17335860,0 +17335866,0 +17335866,0.053258902 +17335872,0.053258902 +17335872,0 +17335908,0 +17335908,0.29933615 +17335932,0.29933615 +17335932,0 +17335980,0 +17335980,0.26282438 +17336022,0.094900422 +17336022,0 +17336046,0 +17336046,0.094900422 +17336070,0.26282438 +17336070,0 +17336136,0 +17336136,0.22042849 +17336154,0.22042849 +17336154,0 +17337048,0 +17337048,0.17229934 +17337060,0.17229934 +17337060,0 +17337162,0 +17337162,0.16445383 +17337228,0.16445383 +17337228,0 +17342280,0 +17342280,0.10998793 +17342286,0.10998793 +17342286,0 +17342400,0 +17342400,0.092939046 +17342406,0.092939046 +17342406,0 +17347134,0 +17347134,0.34037417 +17347248,0.34037417 +17347248,0 +17360622,0 +17360622,0.068044659 +17360628,0.068044659 +17360628,0 +17362746,0 +17362746,0.28500302 +17362770,0.28500302 +17362770,0 +17363046,0 +17363046,0.43497284 +17363058,0.43497284 +17363058,0 +17367204,0 +17367204,0.39996982 +17367264,0.39996982 +17367264,0 +17367504,0 +17367504,0.29828002 +17367534,0.29828002 +17367534,0 +17394582,0 +17394582,0.36632468 +17394594,0.36632468 +17394594,0 +17395962,0 +17395962,0.006035003 +17395974,0.006035003 +17395974,0 +17396076,0 +17396076,0.14302957 +17396094,0.14302957 +17396094,0 +17396190,0 +17396190,0.13488232 +17396244,0.13488232 +17396244,0 +17396310,0 +17396310,0.14876282 +17396418,0.14876282 +17396418,0 +17398746,0 +17398746,0.21635486 +17398794,0.21635486 +17398794,0 +17398860,0 +17398860,0.1901026 +17398980,0.27429089 +17398980,0 +17398986,0 +17398986,0.1901026 +17399034,0.27429089 +17399034,0 +17399094,0 +17399094,0.17516596 +17399112,0.17516596 +17399112,0 +17399208,0 +17399208,0.054315027 +17399256,0.054315027 +17399256,0 +17399322,0 +17399322,0.0016596258 +17399328,0.0016596258 +17399328,0 +17399442,0 +17399442,0.17788171 +17399466,0.17788171 +17399466,0 +17399556,0 +17399556,0.01071213 +17399562,0.01071213 +17399562,0 +17401728,0 +17401728,0.14272782 +17401800,0.14272782 +17401800,0 +17402004,0 +17402004,0.097163549 +17402022,0.097163549 +17402022,0 +17402118,0 +17402118,0.21288473 +17402166,0.21288473 +17402166,0 +17402238,0 +17402238,0.1573627 +17402250,0.1573627 +17402250,0 +17403912,0 +17403912,0.26523838 +17404020,0.26523838 +17404020,0 +17404032,0 +17404032,0.25045263 +17404092,0.25045263 +17404092,0 +17410410,0 +17410410,0.095805673 +17410506,0.095805673 +17410506,0 +17418102,0 +17418102,0.27021726 +17418186,0.27021726 +17418186,0 +17418678,0 +17418678,0.28439952 +17418750,0.28439952 +17418750,0 +17419908,0 +17419908,0.06004828 +17419914,0.06004828 +17419914,0 +17421666,0 +17421666,0.26976463 +17421684,0.26976463 +17421684,0 +17421780,0 +17421780,0.34248642 +17421870,0.34248642 +17421870,0 +17421894,0 +17421894,0.10334943 +17422044,0.10334943 +17422044,0 +17435574,0 +17435574,0.10455643 +17435586,0.10455643 +17435586,0 +17443428,0 +17443428,0.251207 +17443824,0.251207 +17443824,0 +17444586,0 +17444586,0.11104406 +17444592,0.11104406 +17444592,0 +17445258,0 +17445258,0.40660833 +17445594,0.40660833 +17445594,0 +17449122,0 +17449122,0.10153893 +17449128,0.10153893 +17449128,0 +17449242,0 +17449242,0.22103199 +17449272,0.22103199 +17449272,0 +17449356,0 +17449356,0.077248039 +17449362,0.077248039 +17449362,0 +17464956,0 +17464956,0.23732649 +17464962,0.23732649 +17464962,0 +17481534,0 +17481534,0.15087508 +17481552,0.15087508 +17481552,0 +17484348,0 +17484348,0.10742305 +17484420,0.10742305 +17484420,0 +17484462,0 +17484462,0.33886542 +17484510,0.33886542 +17484510,0 +17484576,0 +17484576,0.11300543 +17484636,0.11300543 +17484636,0 +17490798,0 +17490798,0.17380809 +17490882,0.17380809 +17490882,0 +17491380,0 +17491380,0.22299336 +17491440,0.22299336 +17491440,0 +17491968,0 +17491968,0.22223899 +17492076,0.22223899 +17492076,0 +17492556,0 +17492556,0.22480386 +17492604,0.22480386 +17492604,0 +17493144,0 +17493144,0.24788775 +17493204,0.24788775 +17493204,0 +17493408,0 +17493408,0.12296319 +17493468,0.12296319 +17493468,0 +17501622,0 +17501622,0.17048884 +17501682,0.17048884 +17501682,0 +17502702,0 +17502702,0.33961979 +17502780,0.33961979 +17502780,0 +17503464,0 +17503464,0.23823174 +17503470,0.23823174 +17503470,0 +17503578,0 +17503578,0.063065782 +17503632,0.063065782 +17503632,0 +17505786,0 +17505786,0.2996379 +17505810,0.2996379 +17505810,0 +17505906,0 +17505906,0.10666868 +17505978,0.10666868 +17505978,0 +17506020,0 +17506020,0.11738081 +17506038,0.11738081 +17506038,0 +17506134,0 +17506134,0.12356669 +17506248,0.00045262523 +17506248,0 +17506254,0 +17506254,0.00045262523 +17506314,0.12356669 +17506314,0 +17506368,0 +17506368,0.28228727 +17506410,0.28228727 +17506410,0 +17506482,0 +17506482,0.0025648763 +17506488,0.0025648763 +17506488,0 +17507946,0 +17507946,0.82121304 +17508486,0.82121304 +17508486,0 +17512206,0 +17512206,0.17803259 +17512218,0.17803259 +17512218,0 +17512320,0 +17512320,0.21213036 +17512410,0.21213036 +17512410,0 +17512434,0 +17512434,0.22706699 +17512488,0 +17512488,0 +17512488,0.10455643 +17512488,0.22706699 +17512554,0.11602293 +17512554,0 +17512578,0 +17512578,0.11602293 +17512608,0.21469523 +17512608,0 +17512614,0 +17512614,0.10455643 +17512668,0.14318045 +17512668,0 +17512728,0 +17512728,0.14318045 +17512746,0.21469523 +17512746,0 +17514012,0 +17514012,0.35908268 +17514048,0.35908268 +17514048,0 +17514126,0 +17514126,0.22435124 +17514144,0.22435124 +17514144,0 +17514240,0 +17514240,0.22042849 +17514252,0.22042849 +17514252,0 +17514414,0 +17514414,0.33162342 +17514738,0.33162342 +17514738,0 +17515812,0 +17515812,0.17169584 +17515836,0.17169584 +17515836,0 +17516244,0 +17516244,0.1955341 +17517108,0.1955341 +17517108,0 +17517270,0 +17517270,0.1053108 +17517294,0.1053108 +17517294,0 +17517384,0 +17517384,0.019764635 +17517438,0.019764635 +17517438,0 +17523396,0 +17523396,0.18783947 +17523522,0.18783947 +17523522,0 +17523822,0 +17523822,0.066686783 +17523828,0.066686783 +17523828,0 +17523984,0 +17523984,0.22902836 +17524062,0.22902836 +17524062,0 +17524572,0 +17524572,0.22299336 +17524650,0.22299336 +17524650,0 +17525154,0 +17525154,0.23657212 +17525208,0.23657212 +17525208,0 +17525742,0 +17525742,0.22978274 +17525838,0.22978274 +17525838,0 +17526330,0 +17526330,0.2045866 +17526426,0.2045866 +17526426,0 +17526918,0 +17526918,0.22842486 +17527002,0.22842486 +17527002,0 +17527506,0 +17527506,0.18799034 +17527578,0.18799034 +17527578,0 +17528088,0 +17528088,0.19840072 +17528172,0.19840072 +17528172,0 +17528676,0 +17528676,0.18949909 +17528760,0.18949909 +17528760,0 +17529264,0 +17529264,0.20835848 +17529330,0.20835848 +17529330,0 +17535090,0 +17535090,0.08056729 +17535144,0.08056729 +17535144,0 +17535204,0 +17535204,0.13095957 +17535246,0.13095957 +17535246,0 +17568360,0 +17568360,0.038473144 +17568366,0.038473144 +17568366,0 +17570172,0 +17570172,0.19809897 +17570250,0.19809897 +17570250,0 +17574996,0 +17574996,0.33569704 +17575026,0.33569704 +17575026,0 +17581266,0 +17581266,0.19840072 +17581296,0.19840072 +17581296,0 +17585394,0 +17585394,0.29828002 +17585544,0.29828002 +17585544,0 +17589150,0 +17589150,0.31035003 +17589402,0.31035003 +17589402,0 +17598930,0 +17598930,0.20066385 +17598936,0.20066385 +17598936,0 +17601312,0 +17601312,0.0028666264 +17601318,0.0028666264 +17601318,0 +17604120,0 +17604120,0.1464997 +17604174,0.1464997 +17604174,0 +17604234,0 +17604234,0.33841279 +17604276,0.33841279 +17604276,0 +17604528,0 +17604528,0.24290887 +17604546,0.24290887 +17604546,0 +17604642,0 +17604642,0.24864212 +17604726,0.24864212 +17604726,0 +17607516,0 +17607516,0.15645745 +17607522,0.15645745 +17607522,0 +17608362,0 +17608362,0.10697043 +17608368,0.10697043 +17608368,0 +17609322,0 +17609322,0.1422752 +17609418,0.1422752 +17609418,0 +17609436,0 +17609436,0.19417622 +17609460,0.19417622 +17609460,0 +17609556,0 +17609556,0.11466506 +17609562,0.11466506 +17609562,0 +17612484,0 +17612484,0.19025347 +17612502,0.19025347 +17612502,0 +17619888,0 +17619888,0.13533494 +17619906,0.13533494 +17619906,0 +17620002,0 +17620002,0.246379 +17620116,0 +17620116,0 +17620116,0.246379 +17620116,0.32875679 +17620152,0.32875679 +17620152,0 +17621454,0 +17621454,0.22374774 +17621472,0.22374774 +17621472,0 +17622666,0 +17622666,0.038322269 +17622672,0.038322269 +17622672,0 +17623602,0 +17623602,0.098521424 +17623620,0.098521424 +17623620,0 +17647590,0 +17647590,0.21544961 +17647620,0.21544961 +17647620,0 +17651964,0 +17651964,0.30310803 +17651982,0.30310803 +17651982,0 +17652078,0 +17652078,0.011768256 +17652192,0.011768256 +17652192,0 +17652198,0 +17652198,0.33886542 +17652204,0.33886542 +17652204,0 +17654748,0 +17654748,0.17923959 +17654832,0.17923959 +17654832,0 +17654868,0 +17654868,0.01071213 +17654904,0.01071213 +17654904,0 +17654982,0 +17654982,0.16550996 +17654994,0.16550996 +17654994,0 +17655096,0 +17655096,0.13895594 +17655138,0.13895594 +17655138,0 +17656062,0 +17656062,0.06985516 +17656068,0.06985516 +17656068,0 +17656182,0 +17656182,0.27579964 +17656272,0.27579964 +17656272,0 +17660286,0 +17660286,0.23536512 +17660370,0.23536512 +17660370,0 +17661660,0 +17661660,0.53243814 +17662050,0.53243814 +17662050,0 +17665038,0 +17665038,0.33464092 +17665068,0.33464092 +17665068,0 +17665152,0 +17665152,0.20141823 +17665362,0.20141823 +17665362,0 +17665398,0 +17665398,0.087205794 +17665446,0.087205794 +17665446,0 +17669106,0 +17669106,0.18286059 +17669142,0.18286059 +17669142,0 +17669220,0 +17669220,0.2506035 +17669310,0.2506035 +17669310,0 +17684346,0 +17684346,0.18874472 +17684382,0.18874472 +17684382,0 +17684934,0 +17684934,0.10681955 +17684940,0.10681955 +17684940,0 +17689164,0 +17689164,0.015389258 +17689182,0.015389258 +17689182,0 +17689278,0 +17689278,0.19764635 +17689284,0.19764635 +17689284,0 +17693304,0 +17693304,0.30340978 +17693340,0.30340978 +17693340,0 +17698920,0 +17698920,0.085546168 +17698986,0.085546168 +17698986,0 +17701182,0 +17701182,0.20021123 +17701242,0.20021123 +17701242,0 +17701296,0 +17701296,0.091882921 +17701302,0.091882921 +17701302,0 +17701410,0 +17701410,0.13156307 +17701416,0.13156307 +17701416,0 +17702274,0 +17702274,0.43527459 +17702700,0.43527459 +17702700,0 +17704110,0 +17704110,0.17365721 +17704374,0.17365721 +17704374,0 +17721642,0 +17721642,0.20805673 +17721678,0.20805673 +17721678,0 +17733654,0 +17733654,0.26780326 +17734176,0.26780326 +17734176,0 +17735490,0 +17735490,0.33464092 +17736180,0.33464092 +17736180,0 +17739264,0 +17739264,0.17969221 +17739300,0.17969221 +17739300,0 +17741406,0 +17741406,0.014031382 +17741412,0.014031382 +17741412,0 +17741796,0 +17741796,0.21228123 +17741814,0.21228123 +17741814,0 +17741910,0 +17741910,0.25347013 +17742024,0.25347013 +17742024,0 +17745144,0 +17745144,0.011164756 +17745186,0.011164756 +17745186,0 +17746566,0 +17746566,0.17878696 +17746578,0.17878696 +17746578,0 +17747700,0 +17747700,0.26750151 +17747718,0.26750151 +17747718,0 +17749422,0 +17749422,0.29254677 +17749446,0.29254677 +17749446,0 +17750586,0 +17750586,0.3002414 +17750610,0.3002414 +17750610,0 +17750862,0 +17750862,0.32106216 +17750886,0.32106216 +17750886,0 +17773506,0 +17773506,0.0998793 +17773512,0.0998793 +17773512,0 +17781012,0 +17781012,0.52881714 +17781030,0.52881714 +17781030,0 +17781312,0 +17781312,0.098672299 +17781336,0.098672299 +17781336,0 +17785470,0 +17785470,0.36587206 +17785524,0.36587206 +17785524,0 +17786730,0 +17786730,0.26538926 +17786784,0.26538926 +17786784,0 +17802432,0 +17802432,0.21394086 +17802552,0.21394086 +17802552,0 +17817042,0 +17817042,0.27534701 +17817096,0.27534701 +17817096,0 +17820006,0 +17820006,0.30159928 +17820042,0.30159928 +17820042,0 +17820120,0 +17820120,0.088412794 +17820126,0.088412794 +17820126,0 +17820762,0 +17820762,0.39936632 +17820768,0.39936632 +17820768,0 +17824152,0 +17824152,0.43512372 +17824530,0.43512372 +17824530,0 +17825712,0 +17825712,0.19417622 +17825784,0.19417622 +17825784,0 +17825826,0 +17825826,0.11888956 +17825832,0.11888956 +17825832,0 +17846544,0 +17846544,0.14665057 +17846562,0.14665057 +17846562,0 +17848080,0 +17848080,0.16219071 +17848110,0.16219071 +17848110,0 +17867502,0 +17867502,0.18512372 +17867520,0.18512372 +17867520,0 +17867616,0 +17867616,0.42923959 +17867622,0.42923959 +17867622,0 +17867730,0 +17867730,0.30597465 +17867802,0.30597465 +17867802,0 +17867850,0 +17867850,0.03952927 +17867874,0.03952927 +17867874,0 +17867964,0 +17867964,0.21273386 +17868018,0.21273386 +17868018,0 +17871222,0 +17871222,0.052202776 +17871228,0.052202776 +17871228,0 +17909274,0 +17909274,0.19960772 +17909388,0.14559445 +17909388,0 +17909394,0 +17909394,0.14559445 +17909478,0.19960772 +17909478,0 +17909502,0 +17909502,0.072721786 +17909508,0.072721786 +17909508,0 +17909622,0 +17909622,0.009957755 +17909646,0.009957755 +17909646,0 +17911584,0 +17911584,0.29873265 +17911644,0.29873265 +17911644,0 +17911698,0 +17911698,0.0028666264 +17911704,0.0028666264 +17911704,0 +17911818,0 +17911818,0.22178636 +17911836,0.22178636 +17911836,0 +17911932,0 +17911932,0.1913096 +17912004,0.1913096 +17912004,0 +17915250,0 +17915250,0.16324683 +17915286,0.16324683 +17915286,0 +17915370,0 +17915370,0.12462281 +17915388,0.12462281 +17915388,0 +17915484,0 +17915484,0.1416717 +17915514,0.1416717 +17915514,0 +17915598,0 +17915598,0.26584188 +17915628,0.26584188 +17915628,0 +17915718,0 +17915718,0.13925769 +17915826,0.13925769 +17915826,0 +17915832,0 +17915832,0.32604104 +17915916,0.32604104 +17915916,0 +17921436,0 +17921436,0.078455039 +17921466,0.078455039 +17921466,0 +17922894,0 +17922894,0.18633072 +17922960,0.18633072 +17922960,0 +17923008,0 +17923008,0.26222088 +17923122,0 +17923122,0 +17923122,0.23445987 +17923122,0.26222088 +17923146,0.23445987 +17923146,0 +17923242,0 +17923242,0.033041642 +17923302,0.033041642 +17923302,0 +17923356,0 +17923356,0.048883524 +17923362,0.048883524 +17923362,0 +17925066,0 +17925066,0.43391672 +17925744,0.43391672 +17925744,0 +17938590,0 +17938590,0.36813518 +17938596,0.36813518 +17938596,0 +17941896,0 +17941896,0.091732046 +17941956,0.091732046 +17941956,0 +17948712,0 +17948712,0.31894991 +17948766,0.31894991 +17948766,0 +17948832,0 +17948832,0.026403138 +17948838,0.026403138 +17948838,0 +17950488,0 +17950488,0.075437538 +17950500,0.075437538 +17950500,0 +17953212,0 +17953212,0.19990947 +17953236,0.19990947 +17953236,0 +17961864,0 +17961864,0.014936632 +17961870,0.014936632 +17961870,0 +17963310,0 +17963310,0.13518407 +17963316,0.13518407 +17963316,0 +17963424,0 +17963424,0.30401328 +17963466,0.30401328 +17963466,0 +17963592,0 +17963592,0.242758 +17963664,0.242758 +17963664,0 +17965236,0 +17965236,0.084490042 +17965284,0.084490042 +17965284,0 +17965350,0 +17965350,0.20171998 +17965356,0.20171998 +17965356,0 +17965464,0 +17965464,0.23008449 +17965482,0.23008449 +17965482,0 +17972514,0 +17972514,0.19523235 +17972616,0.19523235 +17972616,0 +17972628,0 +17972628,0.29526252 +17972706,0.29526252 +17972706,0 +17974110,0 +17974110,0.10817743 +17974134,0.10817743 +17974134,0 +17974224,0 +17974224,0.062462281 +17974230,0.062462281 +17974230,0 +17976744,0 +17976744,0.20443573 +17976768,0.20443573 +17976768,0 +17997726,0 +17997726,0.31216053 +17997786,0.31216053 +17997786,0 +17997840,0 +17997840,0.13624019 +17997900,0.13624019 +17997900,0 +17997954,0 +17997954,0.24607725 +17998038,0.24607725 +17998038,0 +17998074,0 +17998074,0.13910682 +17998188,0.13910682 +17998188,0 +18003456,0 +18003456,0.10334943 +18003462,0.10334943 +18003462,0 +18007548,0 +18007548,0.28138202 +18007662,0 +18007662,0 +18007662,0.18980084 +18007662,0.28138202 +18007668,0.18980084 +18007668,0 +18007776,0 +18007776,0.20473748 +18007842,0.20473748 +18007842,0 +18007968,0 +18007968,0.22933011 +18008058,0.22933011 +18008058,0 +18008556,0 +18008556,0.16928183 +18008640,0.16928183 +18008640,0 +18009138,0 +18009138,0.22978274 +18009204,0.22978274 +18009204,0 +18009726,0 +18009726,0.26659626 +18009810,0.26659626 +18009810,0 +18010314,0 +18010314,0.15238383 +18010374,0.15238383 +18010374,0 +18010902,0 +18010902,0.20443573 +18010962,0.20443573 +18010962,0 +18011550,0 +18011550,0.30672903 +18011604,0.30672903 +18011604,0 +18012456,0 +18012456,0.23958962 +18012462,0.23958962 +18012462,0 +18012942,0 +18012942,0.30793603 +18012984,0.30793603 +18012984,0 +18016542,0 +18016542,0.13156307 +18016584,0.13156307 +18016584,0 +18016656,0 +18016656,0.2518105 +18016662,0.2518105 +18016662,0 +18016776,0 +18016776,0.18648159 +18016818,0.18648159 +18016818,0 +18020484,0 +18020484,0.0078455039 +18020562,0.0078455039 +18020562,0 +18021798,0 +18021798,0.14333132 +18021840,0.14333132 +18021840,0 +18025362,0 +18025362,0.022329511 +18025368,0.022329511 +18025368,0 +18029412,0 +18029412,0.26207001 +18029508,0.26207001 +18029508,0 +18029532,0 +18029532,0.038322269 +18029538,0.038322269 +18029538,0 +18032238,0 +18032238,0.046167773 +18032244,0.046167773 +18032244,0 +18032358,0 +18032358,0.19568497 +18032382,0.19568497 +18032382,0 +18033276,0 +18033276,0.241551 +18033312,0.241551 +18033312,0 +18034938,0 +18034938,0.15419433 +18034992,0.15419433 +18034992,0 +18035052,0 +18035052,0.11964393 +18035130,0.11964393 +18035130,0 +18035166,0 +18035166,0.15691008 +18035256,0.15691008 +18035256,0 +18038334,0 +18038334,0.20745323 +18038370,0.20745323 +18038370,0 +18038382,0 +18038382,0.20111648 +18038394,0.20111648 +18038394,0 +18038550,0 +18038550,0.074079662 +18038556,0.074079662 +18038556,0 +18038664,0 +18038664,0.056879903 +18038820,0.056879903 +18038820,0 +18049296,0 +18049296,0.18286059 +18049326,0.18286059 +18049326,0 +18050964,0 +18050964,0.16807483 +18050994,0.16807483 +18050994,0 +18051516,0 +18051516,0.21318648 +18051522,0.21318648 +18051522,0 +18057504,0 +18057504,0.2076041 +18057600,0.2076041 +18057600,0 +18078108,0 +18078108,0.19990947 +18078114,0.19990947 +18078114,0 +18083172,0 +18083172,0.11738081 +18083178,0.11738081 +18083178,0 +18089676,0 +18089676,0.07996379 +18089682,0.07996379 +18089682,0 +18094686,0 +18094686,0.22148461 +18094722,0.22148461 +18094722,0 +18105582,0 +18105582,0.33026554 +18105744,0.33026554 +18105744,0 +18106620,0 +18106620,0.31955341 +18106692,0.31955341 +18106692,0 +18110418,0 +18110418,0.16490646 +18110472,0.16490646 +18110472,0 +18111006,0 +18111006,0.19040435 +18111072,0.19040435 +18111072,0 +18111594,0 +18111594,0.24592637 +18111696,0.24592637 +18111696,0 +18112182,0 +18112182,0.22435124 +18112230,0.22435124 +18112230,0 +18115458,0 +18115458,0.31306578 +18115518,0.31306578 +18115518,0 +18117204,0 +18117204,0.20111648 +18117222,0.20111648 +18117222,0 +18117318,0 +18117318,0.033343392 +18117354,0.033343392 +18117354,0 +18117438,0 +18117438,0.07045866 +18117516,0.07045866 +18117516,0 +18117552,0 +18117552,0.089619795 +18117558,0.089619795 +18117558,0 +18132126,0 +18132126,0.10274593 +18132246,0.17999396 +18132246,0 +18132300,0 +18132300,0.10274593 +18132360,0.076946288 +18132360,0 +18132456,0 +18132456,0.17999396 +18132486,0.028364514 +18132486,0 +18132492,0 +18132492,0 +18132492,0.076946288 +18132492,0.028364514 +18132606,0 +18132606,0.087507544 +18132636,0.087507544 +18132636,0 +18147162,0 +18147162,0.0013578757 +18147168,0.0013578757 +18147168,0 +18152298,0 +18152298,0.20609535 +18152346,0.20609535 +18152346,0 +18163374,0 +18163374,0.09007242 +18163380,0.09007242 +18163380,0 +18166068,0 +18166068,0.001961376 +18166074,0.001961376 +18166074,0 +18175296,0 +18175296,0.497586 +18175590,0.497586 +18175590,0 +18175836,0 +18175836,0.32739891 +18175872,0.32739891 +18175872,0 +18175950,0 +18175950,0.0093542547 +18175956,0.0093542547 +18175956,0 +18181842,0 +18181842,0.13684369 +18181956,0.27685576 +18181956,0 +18181962,0 +18181962,0.13684369 +18181992,0.27685576 +18181992,0 +18182070,0 +18182070,0.22284249 +18182076,0.22284249 +18182076,0 +18182190,0 +18182190,0.21635486 +18182214,0.21635486 +18182214,0 +18182616,0 +18182616,0.17576946 +18182694,0.17576946 +18182694,0 +18190320,0 +18190320,0.26312613 +18190326,0.26312613 +18190326,0 +18195972,0 +18195972,0.06925166 +18195978,0.06925166 +18195978,0 +18196890,0 +18196890,0.31683766 +18196956,0.31683766 +18196956,0 +18197652,0 +18197652,0.09037417 +18197880,0.09037417 +18197880,0 +18201342,0 +18201342,0.28847314 +18201366,0.28847314 +18201366,0 +18205800,0 +18205800,0.42290284 +18205854,0.42290284 +18205854,0 +18209214,0 +18209214,0.02972239 +18209220,0.02972239 +18209220,0 +18209328,0 +18209328,0.17863609 +18209358,0.17863609 +18209358,0 +18209448,0 +18209448,0.11179843 +18209466,0.11179843 +18209466,0 +18209562,0 +18209562,0.13699457 +18209604,0.13699457 +18209604,0 +18209676,0 +18209676,0.16626433 +18209706,0.16626433 +18209706,0 +18209730,0 +18209730,0.18557634 +18209772,0.18557634 +18209772,0 +18209796,0 +18209796,0.26870851 +18209844,0.21695836 +18209844,0 +18209856,0 +18209856,0.21695836 +18209892,0.26870851 +18209892,0 +18209964,0 +18209964,0.32679541 +18210036,0.32679541 +18210036,0 +18221868,0 +18221868,0.077851539 +18221874,0.077851539 +18221874,0 +18250314,0 +18250314,0.18240797 +18250380,0.18240797 +18250380,0 +18252012,0 +18252012,0.21514786 +18252018,0.21514786 +18252018,0 +18255840,0 +18255840,0.1949306 +18255864,0.1949306 +18255864,0 +18255960,0 +18255960,0.23913699 +18255996,0.23913699 +18255996,0 +18259476,0 +18259476,0.44266747 +18259548,0.44266747 +18259548,0 +18259776,0 +18259776,0.37779119 +18259854,0.37779119 +18259854,0 +18260076,0 +18260076,0.57287266 +18260136,0.57287266 +18260136,0 +18262026,0 +18262026,0.15404345 +18262050,0.15404345 +18262050,0 +18270954,0 +18270954,0.15766445 +18270966,0.15766445 +18270966,0 +18271068,0 +18271068,0.099124925 +18271092,0.099124925 +18271092,0 +18271638,0 +18271638,0.16596258 +18271668,0.16596258 +18271668,0 +18271752,0 +18271752,0.16732046 +18271770,0.16732046 +18271770,0 +18274458,0 +18274458,0.26508751 +18274536,0.26508751 +18274536,0 +18274704,0 +18274704,0.34671092 +18274746,0.34671092 +18274746,0 +18277152,0 +18277152,0.1525347 +18277170,0.1525347 +18277170,0 +18277266,0 +18277266,0.055371153 +18277272,0.055371153 +18277272,0 +18277380,0 +18277380,0.34550392 +18277428,0.34550392 +18277428,0 +18277944,0 +18277944,0.14423657 +18277950,0.14423657 +18277950,0 +18279756,0 +18279756,0.28786964 +18279978,0.28786964 +18279978,0 +18281946,0 +18281946,0.24321062 +18281988,0.24321062 +18281988,0 +18282060,0 +18282060,0.23385637 +18282114,0.23385637 +18282114,0 +18283542,0 +18283542,0.19719372 +18283554,0.19719372 +18283554,0 +18294720,0 +18294720,0.40238383 +18294732,0.40238383 +18294732,0 +18294738,0 +18294738,0.16294508 +18294762,0.16294508 +18294762,0 +18296646,0 +18296646,0.068949909 +18296652,0.068949909 +18296652,0 +18299424,0 +18299424,0.11285456 +18299430,0.11285456 +18299430,0 +18300780,0 +18300780,0.19598672 +18300798,0.19598672 +18300798,0 +18301314,0 +18301314,0.0073928787 +18301362,0.0073928787 +18301362,0 +18306924,0 +18306924,0.0030175015 +18306930,0.0030175015 +18306930,0 +18313200,0 +18313200,0.14031382 +18313206,0.14031382 +18313206,0 +18317394,0 +18317394,0.38216657 +18317400,0.38216657 +18317400,0 +18317508,0 +18317508,0.0055823778 +18317514,0.0055823778 +18317514,0 +18340200,0 +18340200,0.12764031 +18340230,0.12764031 +18340230,0 +18340314,0 +18340314,0.011919131 +18340320,0.011919131 +18340320,0 +18340428,0 +18340428,0.14076645 +18340434,0.14076645 +18340434,0 +18340548,0 +18340548,0.20232348 +18340650,0.20232348 +18340650,0 +18340662,0 +18340662,0.032589016 +18340680,0.032589016 +18340680,0 +18340776,0 +18340776,0.1464997 +18340842,0.1464997 +18340842,0 +18343710,0 +18343710,0.21741098 +18343776,0.21741098 +18343776,0 +18349542,0 +18349542,0.32709716 +18349632,0.32709716 +18349632,0 +18349842,0 +18349842,0.22631261 +18349902,0.22631261 +18349902,0 +18353484,0 +18353484,0.0087507544 +18353502,0.0087507544 +18353502,0 +18353994,0 +18353994,0.27263126 +18354078,0.27263126 +18354078,0 +18354294,0 +18354294,0.32377791 +18354348,0.32377791 +18354348,0 +18355410,0 +18355410,0.38774894 +18355716,0.38774894 +18355716,0 +18356976,0 +18356976,0.088261919 +18356982,0.088261919 +18356982,0 +18357096,0 +18357096,0.16385033 +18357114,0.16385033 +18357114,0 +18357210,0 +18357210,0.12009656 +18357216,0.12009656 +18357216,0 +18357240,0 +18357240,0.39755582 +18357624,0.39755582 +18357624,0 +18358452,0 +18358452,0.34474955 +18358524,0.34474955 +18358524,0 +18358752,0 +18358752,0.32257091 +18358878,0.32257091 +18358878,0 +18360936,0 +18360936,0.12386844 +18360942,0.12386844 +18360942,0 +18361710,0 +18361710,0.016294508 +18361716,0.016294508 +18361716,0 +18361824,0 +18361824,0.16928183 +18361830,0.16928183 +18361830,0 +18362910,0 +18362910,0.30672903 +18362916,0.30672903 +18362916,0 +18363210,0 +18363210,0.17079059 +18363282,0.17079059 +18363282,0 +18363480,0 +18363480,0.042245021 +18363486,0.042245021 +18363486,0 +18363594,0 +18363594,0.0087507544 +18363600,0.0087507544 +18363600,0 +18364206,0 +18364206,0.16354858 +18364242,0.16354858 +18364242,0 +18364260,0 +18364260,0.21318648 +18364320,0.21318648 +18364320,0 +18364326,0 +18364326,0.062613156 +18364332,0.062613156 +18364332,0 +18364440,0 +18364440,0.30190103 +18364512,0.30190103 +18364512,0 +18364554,0 +18364554,0.22872661 +18364566,0.22872661 +18364566,0 +18364674,0 +18364674,0.27112251 +18364680,0.27112251 +18364680,0 +18366858,0 +18366858,0.051146651 +18366864,0.051146651 +18366864,0 +18368562,0 +18368562,0.090525045 +18368598,0.090525045 +18368598,0 +18373458,0 +18373458,0.11255281 +18373470,0.11255281 +18373470,0 +18378498,0 +18378498,0.15208208 +18378540,0.15208208 +18378540,0 +18378612,0 +18378612,0.11044056 +18378618,0.11044056 +18378618,0 +18378906,0 +18378906,0.015691008 +18378912,0.015691008 +18378912,0 +18388332,0 +18388332,0.075588413 +18388338,0.075588413 +18388338,0 +18388446,0 +18388446,0.045715148 +18388452,0.045715148 +18388452,0 +18391488,0 +18391488,0.17863609 +18391494,0.17863609 +18391494,0 +18391602,0 +18391602,0.026252263 +18391608,0.026252263 +18391608,0 +18391722,0 +18391722,0.0073928787 +18391746,0.0073928787 +18391746,0 +18394902,0 +18394902,0.1010863 +18394986,0.1010863 +18394986,0 +18418674,0 +18418674,0.1961376 +18418692,0.1961376 +18418692,0 +18421410,0 +18421410,0.18829209 +18421458,0.18829209 +18421458,0 +18423024,0 +18423024,0.059293905 +18423030,0.059293905 +18423030,0 +18425610,0 +18425610,0.04013277 +18425616,0.04013277 +18425616,0 +18425724,0 +18425724,0.24487025 +18425748,0.24487025 +18425748,0 +18426282,0 +18426282,0.23566687 +18426396,0.23566687 +18426396,0 +18426738,0 +18426738,0.30340978 +18426768,0.30340978 +18426768,0 +18426852,0 +18426852,0.097465299 +18426858,0.097465299 +18426858,0 +18435030,0 +18435030,0.1561557 +18435054,0.1561557 +18435054,0 +18436434,0 +18436434,0.1501207 +18436446,0.1501207 +18436446,0 +18439086,0 +18439086,0.068044659 +18439092,0.068044659 +18439092,0 +18441114,0 +18441114,0.22872661 +18441228,0.28455039 +18441228,0 +18441234,0 +18441234,0 +18441234,0.28455039 +18441234,0.22872661 +18441468,0 +18441468,0.011164756 +18441492,0.011164756 +18441492,0 +18441582,0 +18441582,0.25211225 +18441678,0.25211225 +18441678,0 +18441696,0 +18441696,0.22872661 +18441726,0.22872661 +18441726,0 +18448434,0 +18448434,0.016445383 +18448464,0.016445383 +18448464,0 +18448548,0 +18448548,0.24064575 +18448632,0.24064575 +18448632,0 +18448662,0 +18448662,0.13458057 +18448782,0 +18448782,0 +18448782,0.13458057 +18448782,0.23717562 +18448794,0.23717562 +18448794,0 +18452670,0 +18452670,0.20202173 +18452676,0.20202173 +18452676,0 +18456798,0 +18456798,0.17003621 +18456804,0.17003621 +18456804,0 +18456912,0 +18456912,0.22042849 +18457020,0.22042849 +18457020,0 +18457032,0 +18457032,0.10998793 +18457068,0.10998793 +18457068,0 +18457146,0 +18457146,0.052806276 +18457152,0.052806276 +18457152,0 +18461748,0 +18461748,0.4019312 +18461820,0.4019312 +18461820,0 +18465408,0 +18465408,0.032438141 +18465414,0.032438141 +18465414,0 +18466596,0 +18466596,0.18980084 +18466602,0.18980084 +18466602,0 +18467016,0 +18467016,0.036059143 +18467106,0.036059143 +18467106,0 +18467130,0 +18467130,0.30778515 +18467160,0.30778515 +18467160,0 +18467784,0 +18467784,0.27776101 +18467814,0.27776101 +18467814,0 +18467904,0 +18467904,0.096258298 +18467910,0.096258298 +18467910,0 +18468726,0 +18468726,0.28786964 +18468804,0.28786964 +18468804,0 +18471132,0 +18471132,0.18949909 +18471150,0.18949909 +18471150,0 +18471252,0 +18471252,0.11345806 +18471258,0.11345806 +18471258,0 +18471366,0 +18471366,0.27398914 +18471378,0.27398914 +18471378,0 +18474948,0 +18474948,0.13925769 +18474954,0.13925769 +18474954,0 +18475062,0 +18475062,0.24743512 +18475080,0.24743512 +18475080,0 +18475176,0 +18475176,0.12311406 +18475182,0.12311406 +18475182,0 +18475296,0 +18475296,0.017199759 +18475302,0.017199759 +18475302,0 +18475410,0 +18475410,0.056879903 +18475422,0.056879903 +18475422,0 +18475524,0 +18475524,0.18135184 +18475536,0.18135184 +18475536,0 +18476490,0 +18476490,0.15102595 +18476496,0.15102595 +18476496,0 +18476604,0 +18476604,0.16430296 +18476610,0.16430296 +18476610,0 +18478488,0 +18478488,0.09037417 +18478662,0.09037417 +18478662,0 +18484302,0 +18484302,0.045262523 +18484308,0.045262523 +18484308,0 +18484914,0 +18484914,0.12643331 +18484920,0.12643331 +18484920,0 +18485028,0 +18485028,0.00045262523 +18485034,0.00045262523 +18485034,0 +18486972,0 +18486972,0.17727821 +18487038,0.17727821 +18487038,0 +18501702,0 +18501702,0.087960169 +18501756,0.087960169 +18501756,0 +18501816,0 +18501816,0.10304768 +18501822,0.10304768 +18501822,0 +18518700,0 +18518700,0.034097767 +18518712,0.034097767 +18518712,0 +18538494,0 +18538494,0.14423657 +18538518,0.14423657 +18538518,0 +18552408,0 +18552408,0.13488232 +18552414,0.13488232 +18552414,0 +18552450,0 +18552450,0.10304768 +18552486,0.10304768 +18552486,0 +18552528,0 +18552528,0.06004828 +18552546,0.06004828 +18552546,0 +18552570,0 +18552570,0.11285456 +18552576,0.11285456 +18552576,0 +18552642,0 +18552642,0.13171394 +18552654,0.13171394 +18552654,0 +18552684,0 +18552684,0.25286663 +18552720,0.25286663 +18552720,0 +18552756,0 +18552756,0.11587206 +18552798,0.33690404 +18552798,0 +18552810,0 +18552810,0.33690404 +18552828,0.11587206 +18552828,0 +18552876,0 +18552876,0.3020519 +18552912,0.3020519 +18552912,0 +18553416,0 +18553416,0.33011467 +18553422,0.33011467 +18553422,0 +18553530,0 +18553530,0.27127339 +18553554,0.27127339 +18553554,0 +18553644,0 +18553644,0.13050694 +18553668,0.13050694 +18553668,0 +18553758,0 +18553758,0.22314424 +18553818,0.22314424 +18553818,0 +18553878,0 +18553878,0.23762824 +18553956,0.23762824 +18553956,0 +18558870,0 +18558870,0.12054919 +18558888,0.12054919 +18558888,0 +18558984,0 +18558984,0.28258902 +18558996,0.28258902 +18558996,0 +18560766,0 +18560766,0.32845504 +18560844,0.35681955 +18560844,0 +18560850,0 +18560850,0 +18560850,0.35681955 +18560850,0.32845504 +18569154,0 +18569154,0.23461074 +18569352,0.23461074 +18569352,0 +18571002,0 +18571002,0.241551 +18571020,0.241551 +18571020,0 +18573834,0 +18573834,0.19643935 +18573936,0.16264333 +18573936,0 +18573972,0 +18573972,0.16264333 +18574002,0.19643935 +18574002,0 +18574434,0 +18574434,0.035606518 +18574440,0.035606518 +18574440,0 +18574548,0 +18574548,0.0078455039 +18574578,0.0078455039 +18574578,0 +18574668,0 +18574668,0.20171998 +18574680,0.20171998 +18574680,0 +18574782,0 +18574782,0.23506337 +18574878,0.23506337 +18574878,0 +18574896,0 +18574896,0.13156307 +18574902,0.13156307 +18574902,0 +18575010,0 +18575010,0.1016898 +18575016,0.1016898 +18575016,0 +18575130,0 +18575130,0.007996379 +18575154,0.007996379 +18575154,0 +18575244,0 +18575244,0.12658419 +18575304,0.12658419 +18575304,0 +18575358,0 +18575358,0.26689801 +18575388,0.26689801 +18575388,0 +18575478,0 +18575478,0.031080266 +18575484,0.031080266 +18575484,0 +18602574,0 +18602574,0.21801448 +18602634,0.21801448 +18602634,0 +18605646,0 +18605646,0.31336753 +18605706,0.31336753 +18605706,0 +18605766,0 +18605766,0.19990947 +18605880,0.25588413 +18605880,0 +18605904,0 +18605904,0.25588413 +18605940,0.19990947 +18605940,0 +18609384,0 +18609384,0.042848521 +18609390,0.042848521 +18609390,0 +18614544,0 +18614544,0.35455643 +18614556,0.35455643 +18614556,0 +18614664,0 +18614664,0.12175619 +18614688,0.12175619 +18614688,0 +18614778,0 +18614778,0.2094146 +18614826,0.2094146 +18614826,0 +18615606,0 +18615606,0.21333736 +18615672,0.21333736 +18615672,0 +18616098,0 +18616098,0.39800845 +18616104,0.39800845 +18616104,0 +18616194,0 +18616194,0.22088111 +18616266,0.22088111 +18616266,0 +18616782,0 +18616782,0.20654798 +18616896,0.20654798 +18616896,0 +18617370,0 +18617370,0.13684369 +18617442,0.13684369 +18617442,0 +18620100,0 +18620100,0.28907664 +18620136,0.28907664 +18620136,0 +18623292,0 +18623292,0.013578757 +18623400,0.013578757 +18623400,0 +18629514,0 +18629514,0.14272782 +18629580,0.14272782 +18629580,0 +18634266,0 +18634266,0.35455643 +18634296,0.35455643 +18634296,0 +18637836,0 +18637836,0.14604707 +18637878,0.14604707 +18637878,0 +18642876,0 +18642876,0.28907664 +18642912,0.28907664 +18642912,0 +18647490,0 +18647490,0.49532287 +18647880,0.49532287 +18647880,0 +18649326,0 +18649326,0.55582378 +18649896,0.55582378 +18649896,0 +18659442,0 +18659442,0.2905854 +18659922,0.2905854 +18659922,0 +18680898,0 +18680898,0.026704888 +18680904,0.026704888 +18680904,0 +18684726,0 +18684726,0.13669282 +18684810,0.13669282 +18684810,0 +18684840,0 +18684840,0.23853349 +18684882,0.23853349 +18684882,0 +18684960,0 +18684960,0.12054919 +18684978,0.12054919 +18684978,0 +18690252,0 +18690252,0.33916717 +18690402,0.33916717 +18690402,0 +18690894,0 +18690894,0.0081472541 +18690918,0.0081472541 +18690918,0 +18690954,0 +18690954,0.1464997 +18690966,0.1464997 +18690966,0 +18691008,0 +18691008,0.063367532 +18691014,0.063367532 +18691014,0 +18691122,0 +18691122,0.15766445 +18691146,0.15766445 +18691146,0 +18691242,0 +18691242,0.064574532 +18691254,0.064574532 +18691254,0 +18691356,0 +18691356,0.022933011 +18691362,0.022933011 +18691362,0 +18692244,0 +18692244,0.23702474 +18692250,0.23702474 +18692250,0 +18692364,0 +18692364,0.30718165 +18692418,0.30718165 +18692418,0 +18692478,0 +18692478,0.26463488 +18692484,0.26463488 +18692484,0 +18692592,0 +18692592,0.29767652 +18692640,0.29767652 +18692640,0 +18692706,0 +18692706,0.14318045 +18692754,0.14318045 +18692754,0 +18700374,0 +18700374,0.18014484 +18700392,0.18014484 +18700392,0 +18706020,0 +18706020,0.052202776 +18706044,0.052202776 +18706044,0 +18706134,0 +18706134,0.1047073 +18706230,0.1047073 +18706230,0 +18706254,0 +18706254,0.16083283 +18706332,0.16083283 +18706332,0 +18706728,0 +18706728,0.26101388 +18706758,0.26101388 +18706758,0 +18708690,0 +18708690,0.20835848 +18708834,0.20835848 +18708834,0 +18710448,0 +18710448,0.21710923 +18710478,0.21710923 +18710478,0 +18711180,0 +18711180,0.26750151 +18711234,0.26750151 +18711234,0 +18713688,0 +18713688,0.033343392 +18713694,0.033343392 +18713694,0 +18715638,0 +18715638,0.12054919 +18715644,0.12054919 +18715644,0 +18720096,0 +18720096,0.38820157 +18720126,0.38820157 +18720126,0 +18724464,0 +18724464,0.11557031 +18724476,0.11557031 +18724476,0 +18724584,0 +18724584,0.0069402535 +18724608,0.0069402535 +18724608,0 +18730146,0 +18730146,0.058388654 +18730158,0.058388654 +18730158,0 +18733476,0 +18733476,0.2590525 +18733566,0.2590525 +18733566,0 +18733890,0 +18733890,0.25769463 +18733992,0.25769463 +18733992,0 +18734352,0 +18734352,0.25980688 +18734436,0.25980688 +18734436,0 +18734556,0 +18734556,0.27670489 +18734574,0.27670489 +18734574,0 +18734670,0 +18734670,0.29149065 +18734688,0.29149065 +18734688,0 +18734790,0 +18734790,0.0081472541 +18734808,0.0081472541 +18734808,0 +18734904,0 +18734904,0.097767049 +18734922,0.097767049 +18734922,0 +18735018,0 +18735018,0.27534701 +18735054,0.27534701 +18735054,0 +18735690,0 +18735690,0.5030175 +18735852,0.5030175 +18735852,0 +18735924,0 +18735924,0.20262523 +18735948,0.20262523 +18735948,0 +18736038,0 +18736038,0.14981895 +18736044,0.14981895 +18736044,0 +18736152,0 +18736152,0.2469825 +18736170,0.2469825 +18736170,0 +18736272,0 +18736272,0.04013277 +18736278,0.04013277 +18736278,0 +18738606,0 +18738606,0.10063368 +18738720,0.10063368 +18738720,0 +18741264,0 +18741264,0.21937236 +18741294,0.21937236 +18741294,0 +18741306,0 +18741306,0.045866023 +18741312,0.045866023 +18741312,0 +18772902,0 +18772902,0.81834641 +18773322,0.81834641 +18773322,0 +18773586,0 +18773586,0.16913096 +18773628,0.16913096 +18773628,0 +18775968,0 +18775968,0.12311406 +18775974,0.12311406 +18775974,0 +18776088,0 +18776088,0.083433917 +18776226,0.083433917 +18776226,0 +18779754,0 +18779754,0.19885335 +18779784,0.19885335 +18779784,0 +18781002,0 +18781002,0.043301147 +18781062,0.043301147 +18781062,0 +18781122,0 +18781122,0.31894991 +18781146,0.31894991 +18781146,0 +18781236,0 +18781236,0.11391068 +18781266,0.11391068 +18781266,0 +18781350,0 +18781350,0.17592034 +18781470,0.13186482 +18781470,0 +18781482,0 +18781482,0.17592034 +18781584,0 +18781584,0 +18781584,0.13186482 +18781584,0.26885938 +18781626,0.26885938 +18781626,0 +18781698,0 +18781698,0.24803862 +18781710,0.24803862 +18781710,0 +18781812,0 +18781812,0.17214846 +18781878,0.17214846 +18781878,0 +18781932,0 +18781932,0.0496379 +18781938,0.0496379 +18781938,0 +18782046,0 +18782046,0.17245021 +18782082,0.17245021 +18782082,0 +18782160,0 +18782160,0.084037417 +18782172,0.084037417 +18782172,0 +18782280,0 +18782280,0.13518407 +18782298,0.13518407 +18782298,0 +18782394,0 +18782394,0.099426675 +18782472,0.099426675 +18782472,0 +18782508,0 +18782508,0.15947495 +18782544,0.15947495 +18782544,0 +18782628,0 +18782628,0.21952323 +18782724,0.21952323 +18782724,0 +18784392,0 +18784392,0.14318045 +18784452,0.14318045 +18784452,0 +18791154,0 +18791154,0.27157514 +18791202,0.27157514 +18791202,0 +18791706,0 +18791706,0.15570308 +18791712,0.15570308 +18791712,0 +18792090,0 +18792090,0.092788171 +18792096,0.092788171 +18792096,0 +18800082,0 +18800082,0.52745926 +18800832,0.52745926 +18800832,0 +18802500,0 +18802500,0.0070911285 +18802506,0.0070911285 +18802506,0 +18802992,0 +18802992,0.17395896 +18803034,0.17395896 +18803034,0 +18809850,0 +18809850,0.060802655 +18809856,0.060802655 +18809856,0 +18812418,0 +18812418,0.042395896 +18812424,0.042395896 +18812424,0 +18813396,0 +18813396,0.2566385 +18813414,0.2566385 +18813414,0 +18813510,0 +18813510,0.06925166 +18813540,0.06925166 +18813540,0 +18816468,0 +18816468,0.062009656 +18816552,0.062009656 +18816552,0 +18824508,0 +18824508,0.10697043 +18824526,0.10697043 +18824526,0 +18824622,0 +18824622,0.18421847 +18824658,0.18421847 +18824658,0 +18826878,0 +18826878,0.0992758 +18826884,0.0992758 +18826884,0 +18827172,0 +18827172,0.46016898 +18827214,0.46016898 +18827214,0 +18827472,0 +18827472,0.54315027 +18827478,0.54315027 +18827478,0 +18827742,0 +18827742,0.22027761 +18827772,0.11919131 +18827772,0 +18827802,0 +18827802,0.22027761 +18827814,0.11919131 +18827814,0 +18828072,0 +18828072,0.44161135 +18828078,0.44161135 +18828078,0 +18831078,0 +18831078,0.075286663 +18831090,0.075286663 +18831090,0 +18838044,0 +18838044,0.13080869 +18838080,0.13080869 +18838080,0 +18853902,0 +18853902,0.15781533 +18853986,0.15781533 +18853986,0 +18858930,0 +18858930,0.57302354 +18859170,0.28937839 +18859170,0 +18859452,0 +18859452,0.57302354 +18859926,0.28937839 +18859926,0 +18860760,0 +18860760,0.34474955 +18861414,0.34474955 +18861414,0 +18861846,0 +18861846,0.074532287 +18861852,0.074532287 +18861852,0 +18862596,0 +18862596,0.32498491 +18862932,0.32498491 +18862932,0 +18864426,0 +18864426,0.2021726 +18864666,0.2021726 +18864666,0 +18875568,0 +18875568,0.38624019 +18875640,0.38624019 +18875640,0 +18875862,0 +18875862,0.38020519 +18875922,0.38020519 +18875922,0 +18876762,0 +18876762,0.26025951 +18876768,0.039378395 +18876768,0 +18876792,0 +18876792,0.039378395 +18876828,0.26025951 +18876828,0 +18879432,0 +18879432,0.32679541 +18879444,0.32679541 +18879444,0 +18879546,0 +18879546,0.16234158 +18879570,0.16234158 +18879570,0 +18879666,0 +18879666,0.2076041 +18879708,0.2076041 +18879708,0 +18880074,0 +18880074,0.04073627 +18880110,0.04073627 +18880110,0 +18880194,0 +18880194,0.15645745 +18880200,0.15645745 +18880200,0 +18880308,0 +18880308,0.10123718 +18880320,0.10123718 +18880320,0 +18880674,0 +18880674,0.39484007 +18880890,0.39484007 +18880890,0 +18885018,0 +18885018,0.1997586 +18885036,0.1997586 +18885036,0 +18885138,0 +18885138,0.3510863 +18885162,0.3510863 +18885162,0 +18885252,0 +18885252,0.0072420036 +18885330,0.0072420036 +18885330,0 +18885366,0 +18885366,0.057785154 +18885372,0.057785154 +18885372,0 +18885486,0 +18885486,0.038473144 +18885492,0.038473144 +18885492,0 +18889938,0 +18889938,0.09957755 +18889944,0.09957755 +18889944,0 +18896610,0 +18896610,0.1035003 +18896676,0.1035003 +18896676,0 +18896724,0 +18896724,0.11300543 +18896730,0.11300543 +18896730,0 +18896844,0 +18896844,0.11059143 +18896850,0.11059143 +18896850,0 +18897714,0 +18897714,0.15298733 +18897726,0.15298733 +18897726,0 +18897828,0 +18897828,0.015238383 +18897834,0.015238383 +18897834,0 +18902592,0 +18902592,0.080114665 +18902610,0.080114665 +18902610,0 +18902850,0 +18902850,0.17501509 +18902862,0.17501509 +18902862,0 +18903858,0 +18903858,0.028364514 +18903924,0.028364514 +18903924,0 +18903978,0 +18903978,0.10742305 +18904032,0.10742305 +18904032,0 +18904092,0 +18904092,0.17410984 +18904164,0.17410984 +18904164,0 +18904206,0 +18904206,0.0490344 +18904212,0.0490344 +18904212,0 +18904326,0 +18904326,0.17516596 +18904338,0.17516596 +18904338,0 +18904632,0 +18904632,0.026554013 +18904638,0.026554013 +18904638,0 +18905688,0 +18905688,0.097314424 +18905700,0.097314424 +18905700,0 +18916914,0 +18916914,0.1507242 +18916938,0.1507242 +18916938,0 +18917034,0 +18917034,0.22329511 +18917124,0.22329511 +18917124,0 +18917994,0 +18917994,0.14876282 +18918000,0.14876282 +18918000,0 +18936492,0 +18936492,0.29390465 +18936564,0.29390465 +18936564,0 +18936786,0 +18936786,0.42908871 +18936822,0.42908871 +18936822,0 +18940698,0 +18940698,0.17501509 +18940746,0.17501509 +18940746,0 +18948360,0 +18948360,0.33071817 +18948378,0.33071817 +18948378,0 +18948480,0 +18948480,0.090826795 +18948486,0.090826795 +18948486,0 +18948594,0 +18948594,0.0036210018 +18948600,0.0036210018 +18948600,0 +18948708,0 +18948708,0.36692818 +18948714,0.36692818 +18948714,0 +18948828,0 +18948828,0.088865419 +18948834,0.088865419 +18948834,0 +18951882,0 +18951882,0.080114665 +18951906,0.080114665 +18951906,0 +18952512,0 +18952512,0.23083887 +18952596,0.23083887 +18952596,0 +18956604,0 +18956604,0.48295112 +18956760,0.48295112 +18956760,0 +18959202,0 +18959202,0.28470127 +18959208,0.28470127 +18959208,0 +18968388,0 +18968388,0.0028666264 +18968394,0.0028666264 +18968394,0 +18968502,0 +18968502,0.19960772 +18968532,0.19960772 +18968532,0 +18972078,0 +18972078,0.28681352 +18972132,0.28681352 +18972132,0 +18977850,0 +18977850,0.23928787 +18977862,0.23928787 +18977862,0 +18979824,0 +18979824,0.14800845 +18979836,0.14800845 +18979836,0 +18979938,0 +18979938,0.08977067 +18979968,0.08977067 +18979968,0 +18980052,0 +18980052,0.17682559 +18980112,0.17682559 +18980112,0 +18980172,0 +18980172,0.30657815 +18980178,0.30657815 +18980178,0 +18980286,0 +18980286,0.15268558 +18980316,0.15268558 +18980316,0 +18986604,0 +18986604,0.10681955 +18986652,0.23642124 +18986652,0 +18986658,0 +18986658,0.10681955 +18986670,0.23642124 +18986670,0 +18986718,0 +18986718,0.18120097 +18986730,0.18120097 +18986730,0 +18986766,0 +18986766,0.042094146 +18986790,0.042094146 +18986790,0 +18986880,0 +18986880,0.1059143 +18986952,0.1059143 +18986952,0 +18986994,0 +18986994,0.18014484 +18987018,0.18014484 +18987018,0 +18989472,0 +18989472,0.052051901 +18989526,0.052051901 +18989526,0 +18989586,0 +18989586,0.16038021 +18989616,0.16038021 +18989616,0 +18990030,0 +18990030,0.26478576 +18990114,0.26478576 +18990114,0 +18992754,0 +18992754,0.038774894 +18992760,0.038774894 +18992760,0 +18999264,0 +18999264,0.0096560048 +18999288,0.0096560048 +18999288,0 +18999378,0 +18999378,0.28394689 +18999498,0.31155703 +18999498,0 +18999528,0 +18999528,0.31155703 +18999540,0.28394689 +18999540,0 +18999612,0 +18999612,0.17773084 +18999660,0.17773084 +18999660,0 +19004502,0 +19004502,0.057181654 +19004508,0.057181654 +19004508,0 +19030002,0 +19030002,0.36255281 +19030368,0.36255281 +19030368,0 +19034496,0 +19034496,0.0087507544 +19034502,0.0087507544 +19034502,0 +19036788,0 +19036788,0.094296922 +19036806,0.094296922 +19036806,0 +19036902,0 +19036902,0.22601086 +19037016,0.00015087508 +19037016,0 +19037022,0 +19037022,0.00015087508 +19037190,0.22601086 +19037190,0 +19038102,0 +19038102,0.32890766 +19038132,0.32890766 +19038132,0 +19039380,0 +19039380,0.10606518 +19039398,0.10606518 +19039398,0 +19039500,0 +19039500,0.13548582 +19039506,0.13548582 +19039506,0 +19039614,0 +19039614,0.053258902 +19039620,0.053258902 +19039620,0 +19045776,0 +19045776,0.21273386 +19045854,0.21273386 +19045854,0 +19046364,0 +19046364,0.18512372 +19046454,0.18512372 +19046454,0 +19046952,0 +19046952,0.15223295 +19047060,0.15223295 +19047060,0 +19047540,0 +19047540,0.2015691 +19047612,0.2015691 +19047612,0 +19051302,0 +19051302,0.01991551 +19051338,0.01991551 +19051338,0 +19054734,0 +19054734,0.12356669 +19054746,0.12356669 +19054746,0 +19055886,0 +19055886,0.025799638 +19055898,0.025799638 +19055898,0 +19058646,0 +19058646,0.10697043 +19058712,0.10697043 +19058712,0 +19059804,0 +19059804,0.12190706 +19059936,0.12190706 +19059936,0 +19068078,0 +19068078,0.02051901 +19068084,0.02051901 +19068084,0 +19069620,0 +19069620,0.1053108 +19069644,0.1053108 +19069644,0 +19069734,0 +19069734,0.18648159 +19069746,0.18648159 +19069746,0 +19069770,0 +19069770,0.1464997 +19069788,0.1464997 +19069788,0 +19069890,0 +19069890,0.16641521 +19069896,0.16641521 +19069896,0 +19073994,0 +19073994,0.20654798 +19074090,0.20654798 +19074090,0 +19074108,0 +19074108,0.024592637 +19074132,0.024592637 +19074132,0 +19074408,0 +19074408,0.12522631 +19074426,0.12522631 +19074426,0 +19074522,0 +19074522,0.24124925 +19074552,0.24124925 +19074552,0 +19076892,0 +19076892,0.044659022 +19076904,0.044659022 +19076904,0 +19080210,0 +19080210,0.25377188 +19080246,0.25377188 +19080246,0 +19080324,0 +19080324,0.12371756 +19080372,0.12371756 +19080372,0 +19086756,0 +19086756,0.0075437538 +19086762,0.0075437538 +19086762,0 +19095936,0 +19095936,0.19161135 +19095972,0.19161135 +19095972,0 +19096056,0 +19096056,0.17908871 +19096068,0.17908871 +19096068,0 +19096170,0 +19096170,0.22359686 +19096194,0.22359686 +19096194,0 +19116144,0 +19116144,0.18376584 +19116150,0.18376584 +19116150,0 +19118646,0 +19118646,0.16294508 +19118664,0.16294508 +19118664,0 +19120470,0 +19120470,0.056125528 +19120476,0.056125528 +19120476,0 +19122894,0 +19122894,0.22329511 +19122930,0.22329511 +19122930,0 +19128984,0 +19128984,0.18150272 +19128990,0.18150272 +19128990,0 +19129098,0 +19129098,0.10576343 +19129116,0.10576343 +19129116,0 +19130172,0 +19130172,0.3486723 +19130886,0.3486723 +19130886,0 +19131162,0 +19131162,0.013126132 +19131210,0.013126132 +19131210,0 +19132008,0 +19132008,0.41264333 +19132350,0.41264333 +19132350,0 +19133934,0 +19133934,0.31563066 +19134096,0.31563066 +19134096,0 +19145574,0 +19145574,0.20534098 +19145586,0.20534098 +19145586,0 +19147230,0 +19147230,0.24849125 +19147278,0.24849125 +19147278,0 +19147344,0 +19147344,0.031080266 +19147350,0.031080266 +19147350,0 +19151598,0 +19151598,0.091732046 +19151616,0.091732046 +19151616,0 +19151886,0 +19151886,0.27353651 +19151910,0.27353651 +19151910,0 +19152366,0 +19152366,0.098521424 +19152384,0.098521424 +19152384,0 +19154952,0 +19154952,0.16400121 +19154970,0.16400121 +19154970,0 +19155066,0 +19155066,0.19749547 +19155180,0.25392275 +19155180,0 +19155192,0 +19155192,0.25392275 +19155222,0.19749547 +19155222,0 +19155294,0 +19155294,0.042395896 +19155300,0.042395896 +19155300,0 +19157628,0 +19157628,0.025648763 +19157658,0.025648763 +19157658,0 +19158780,0 +19158780,0.19477972 +19158792,0.19477972 +19158792,0 +19160256,0 +19160256,0.29224502 +19160406,0.29224502 +19160406,0 +19160592,0 +19160592,0.29345202 +19160652,0.29345202 +19160652,0 +19160706,0 +19160706,0.015540133 +19160712,0.015540133 +19160712,0 +19160820,0 +19160820,0.073627037 +19160862,0.073627037 +19160862,0 +19168548,0 +19168548,0.13789982 +19168590,0.13789982 +19168590,0 +19168662,0 +19168662,0.20835848 +19168668,0.20835848 +19168668,0 +19168776,0 +19168776,0.01991551 +19168830,0.01991551 +19168830,0 +19176978,0 +19176978,0.01010863 +19176984,0.01010863 +19176984,0 +19201086,0 +19201086,0.00090525045 +19201092,0.00090525045 +19201092,0 +19202184,0 +19202184,0.0072420036 +19202190,0.0072420036 +19202190,0 +19203468,0 +19203468,0.34339167 +19203528,0.34339167 +19203528,0 +19203582,0 +19203582,0.19885335 +19203612,0.19885335 +19203612,0 +19210710,0 +19210710,0.37718769 +19210998,0.37718769 +19210998,0 +19215510,0 +19215510,0.10923355 +19215588,0.10923355 +19215588,0 +19215624,0 +19215624,0.094146047 +19215630,0.094146047 +19215630,0 +19230630,0 +19230630,0.034399517 +19230666,0.034399517 +19230666,0 +19232652,0 +19232652,0.15872058 +19232676,0.15872058 +19232676,0 +19232766,0 +19232766,0.10365118 +19232772,0.10365118 +19232772,0 +19232886,0 +19232886,0.1597767 +19232922,0.1597767 +19232922,0 +19233000,0 +19233000,0.24411587 +19233048,0.24411587 +19233048,0 +19233114,0 +19233114,0.085697043 +19233120,0.085697043 +19233120,0 +19233234,0 +19233234,0.26116476 +19233258,0.26116476 +19233258,0 +19233348,0 +19233348,0.1089318 +19233354,0.1089318 +19233354,0 +19234992,0 +19234992,0.0072420036 +19235034,0.0072420036 +19235034,0 +19241292,0 +19241292,0.0070911285 +19241316,0.0070911285 +19241316,0 +19251066,0 +19251066,0.19025347 +19251096,0.19025347 +19251096,0 +19255482,0 +19255482,0.13367532 +19255500,0.13367532 +19255500,0 +19257240,0 +19257240,0.054767652 +19257252,0.054767652 +19257252,0 +19257354,0 +19257354,0.18286059 +19257408,0.18286059 +19257408,0 +19257468,0 +19257468,0.0078455039 +19257522,0.0078455039 +19257522,0 +19257588,0 +19257588,0.33464092 +19257636,0.33464092 +19257636,0 +19257702,0 +19257702,0.23264937 +19257708,0.23264937 +19257708,0 +19257816,0 +19257816,0.074079662 +19257828,0.074079662 +19257828,0 +19257936,0 +19257936,0.098068799 +19257942,0.098068799 +19257942,0 +19259604,0 +19259604,0.038171394 +19259610,0.038171394 +19259610,0 +19259718,0 +19259718,0.25045263 +19259760,0.25045263 +19259760,0 +19259832,0 +19259832,0.29797827 +19259868,0.29797827 +19259868,0 +19259880,0 +19259880,0.76735063 +19260162,0.76735063 +19260162,0 +19260312,0 +19260312,0.052353651 +19260324,0.052353651 +19260324,0 +19260576,0 +19260576,0.055220278 +19260582,0.055220278 +19260582,0 +19263096,0 +19263096,0.070609535 +19263150,0.070609535 +19263150,0 +19890294,0 +19890294,0.23989137 +19890312,0.23989137 +19890312,0 +19896558,0 +19896558,0.073476162 +19896570,0.073476162 +19896570,0 +19897866,0 +19897866,0.06955341 +19897956,0.06955341 +19897956,0 +19897980,0 +19897980,0.1543452 +19898052,0.1543452 +19898052,0 +19898100,0 +19898100,0.27851539 +19898142,0.27851539 +19898142,0 +19898172,0 +19898172,0.072269161 +19898178,0.072269161 +19898178,0 +19898214,0 +19898214,0.21378998 +19898244,0.21378998 +19898244,0 +19898328,0 +19898328,0.26207001 +19898346,0.26207001 +19898346,0 +19898448,0 +19898448,0.037115269 +19898454,0.037115269 +19898454,0 +19900044,0 +19900044,0.07966204 +19900062,0.07966204 +19900062,0 +19900158,0 +19900158,0.17954134 +19900314,0.17954134 +19900314,0 +19900932,0 +19900932,0.064423657 +19900938,0.064423657 +19900938,0 +19901052,0 +19901052,0.054465902 +19901148,0.054465902 +19901148,0 +19901166,0 +19901166,0.26946288 +19901280,0.0073928787 +19901280,0 +19901310,0 +19901310,0.0073928787 +19901340,0.26946288 +19901340,0 +19901580,0 +19901580,0.1519312 +19901652,0.1519312 +19901652,0 +19901694,0 +19901694,0.056276403 +19901802,0.056276403 +19901802,0 +19903812,0 +19903812,0.14393482 +19903824,0.14393482 +19903824,0 +19905438,0 +19905438,0.27474351 +19905444,0.27474351 +19905444,0 +19905552,0 +19905552,0.015992758 +19905558,0.015992758 +19905558,0 +19905666,0 +19905666,0.058992154 +19905738,0.058992154 +19905738,0 +19907490,0 +19907490,0.28409777 +19907550,0.28409777 +19907550,0 +19912614,0 +19912614,0.090223295 +19912620,0.090223295 +19912620,0 +19916346,0 +19916346,0.22797224 +19916358,0.22797224 +19916358,0 +19923408,0 +19923408,0.0073928787 +19923414,0.0073928787 +19923414,0 +19936704,0 +19936704,0.12718769 +19936770,0.12718769 +19936770,0 +19936818,0 +19936818,0.075890163 +19936872,0.075890163 +19936872,0 +19936938,0 +19936938,0.18044659 +19936992,0.18044659 +19936992,0 +19937052,0 +19937052,0.093240797 +19937166,0.00030175015 +19937166,0 +19937172,0 +19937172,0.00030175015 +19937196,0.093240797 +19937196,0 +19937286,0 +19937286,0.057030779 +19937346,0.057030779 +19937346,0 +19937400,0 +19937400,0.19206397 +19937424,0.19206397 +19937424,0 +19937514,0 +19937514,0.013277007 +19937520,0.013277007 +19937520,0 +19937634,0 +19937634,0.15268558 +19937658,0.15268558 +19937658,0 +19937970,0 +19937970,0.22525649 +19938012,0.22525649 +19938012,0 +19941204,0 +19941204,0.0076946288 +19941342,0.0076946288 +19941342,0 +19942752,0 +19942752,0.4431201 +19942794,0.4431201 +19942794,0 +19943046,0 +19943046,0.30582378 +19943106,0.30582378 +19943106,0 +19943202,0 +19943202,0.49954737 +19943418,0.076795413 +19943418,0 +19943424,0 +19943424,0.076795413 +19943808,0.49954737 +19943808,0 +19944534,0 +19944534,0.033343392 +19944546,0.033343392 +19944546,0 +19945596,0 +19945596,0.33494267 +19945650,0.33494267 +19945650,0 +19947204,0 +19947204,0.1991551 +19947246,0.1991551 +19947246,0 +19947504,0 +19947504,0.38307182 +19947576,0.38307182 +19947576,0 +19951662,0 +19951662,0.28138202 +19951734,0.28138202 +19951734,0 +19951962,0 +19951962,0.33147254 +19952022,0.33147254 +19952022,0 +19956120,0 +19956120,0.15268558 +19956126,0.15268558 +19956126,0 +19956414,0 +19956414,0.3068799 +19956498,0.3068799 +19956498,0 +19979550,0 +19979550,0.027911889 +19979724,0.027911889 +19979724,0 +19985628,0 +19985628,0.35334943 +19986078,0.35334943 +19986078,0 +19988058,0 +19988058,0.19930597 +19988082,0.19930597 +19988082,0 +19988178,0 +19988178,0.27640314 +19988190,0.27640314 +19988190,0 +19989318,0 +19989318,0.046620398 +19989330,0.046620398 +19989330,0 +19993476,0 +19993476,0.062009656 +19993500,0.062009656 +19993500,0 +19993590,0 +19993590,0.14544357 +19993626,0.14544357 +19993626,0 +19998204,0 +19998204,0.35500905 +19998282,0.35500905 +19998282,0 +20001120,0 +20001120,0.048883524 +20001126,0.048883524 +20001126,0 +20004108,0 +20004108,0.27127339 +20004408,0.27127339 +20004408,0 +20017548,0 +20017548,0.21424261 +20017608,0.21424261 +20017608,0 +20018136,0 +20018136,0.15087508 +20018220,0.15087508 +20018220,0 +20018724,0 +20018724,0.14318045 +20018772,0.14318045 +20018772,0 +20019306,0 +20019306,0.22948099 +20019360,0.22948099 +20019360,0 +20021934,0 +20021934,0.20232348 +20021964,0.20232348 +20021964,0 +20028840,0 +20028840,0.1022933 +20028906,0.1022933 +20028906,0 +20032344,0 +20032344,0.18919734 +20032368,0.18919734 +20032368,0 +20032986,0 +20032986,0.038171394 +20032992,0.038171394 +20032992,0 +20035506,0 +20035506,0.1967411 +20035512,0.1967411 +20035512,0 +20078196,0 +20078196,0.1579662 +20078208,0.1579662 +20078208,0 +20078310,0 +20078310,0.28771877 +20078316,0.28771877 +20078316,0 +20086092,0 +20086092,0.12266144 +20086104,0.12266144 +20086104,0 +20092830,0 +20092830,0.24140012 +20092842,0.24140012 +20092842,0 +20102508,0 +20102508,0.12975256 +20102544,0.12975256 +20102544,0 +20108058,0 +20108058,0.10968618 +20108088,0.10968618 +20108088,0 +20111154,0 +20111154,0.083283042 +20111172,0.083283042 +20111172,0 +20111274,0 +20111274,0.032438141 +20111280,0.032438141 +20111280,0 +20111388,0 +20111388,0.12975256 +20111400,0.12975256 +20111400,0 +20119704,0 +20119704,0.27942064 +20119716,0.27942064 +20119716,0 +20120208,0 +20120208,0.13427882 +20120232,0.13427882 +20120232,0 +20120322,0 +20120322,0.19628847 +20120328,0.19628847 +20120328,0 +20122794,0 +20122794,0.33162342 +20122830,0.33162342 +20122830,0 +20132622,0 +20132622,0.35817743 +20132850,0.35817743 +20132850,0 +20134452,0 +20134452,0.42003621 +20134956,0.42003621 +20134956,0 +20141496,0 +20141496,0.12160531 +20141616,0.13397707 +20141616,0 +20141634,0 +20141634,0.12160531 +20141646,0.13397707 +20141646,0 +20141730,0 +20141730,0.075890163 +20141796,0.075890163 +20141796,0 +20141844,0 +20141844,0.025497888 +20141850,0.025497888 +20141850,0 +20141964,0 +20141964,0.1531382 +20142078,0.21665661 +20142078,0 +20142120,0 +20142120,0.21665661 +20142192,0.081472541 +20142192,0 +20142246,0 +20142246,0 +20142246,0.1531382 +20142246,0.081472541 +20142312,0 +20142312,0.33675317 +20142396,0.33675317 +20142396,0 +20150304,0 +20150304,0.00075437538 +20150310,0.00075437538 +20150310,0 +20153742,0 +20153742,0.14846107 +20153832,0.14846107 +20153832,0 +20161200,0 +20161200,0.22284249 +20161224,0.22284249 +20161224,0 +20164632,0 +20164632,0.26071213 +20164710,0.26071213 +20164710,0 +20170176,0 +20170176,0.28832227 +20170236,0.28832227 +20170236,0 +20170476,0 +20170476,0.33569704 +20170542,0.33569704 +20170542,0 +20173098,0 +20173098,0.066385033 +20173104,0.066385033 +20173104,0 +20173110,0 +20173110,0.17697646 +20173140,0.17697646 +20173140,0 +20173218,0 +20173218,0.012220881 +20173254,0.012220881 +20173254,0 +20178420,0 +20178420,0.38337357 +20178492,0.38337357 +20178492,0 +20181150,0 +20181150,0.081170791 +20181156,0.081170791 +20181156,0 +20184906,0 +20184906,0.16385033 +20184942,0.16385033 +20184942,0 +20192394,0 +20192394,0.12537719 +20192400,0.12537719 +20192400,0 +20192508,0 +20192508,0.089016295 +20192562,0.089016295 +20192562,0 +20192772,0 +20192772,0.21726011 +20192844,0.21726011 +20192844,0 +20193378,0 +20193378,0.1949306 +20193384,0.1949306 +20193384,0 +20193492,0 +20193492,0.12492456 +20193576,0.12492456 +20193576,0 +20193612,0 +20193612,0.13714544 +20193624,0.13714544 +20193624,0 +20195298,0 +20195298,0.14574532 +20195310,0.14574532 +20195310,0 +20201772,0 +20201772,0.079511165 +20201784,0.079511165 +20201784,0 +20201886,0 +20201886,0.050392275 +20201892,0.050392275 +20201892,0 +20213010,0 +20213010,0.21876886 +20213016,0.21876886 +20213016,0 +20213124,0 +20213124,0.081472541 +20213154,0.081472541 +20213154,0 +20213244,0 +20213244,0.3014484 +20213298,0.3014484 +20213298,0 +20213358,0 +20213358,0.22133374 +20213376,0.22133374 +20213376,0 +20236212,0 +20236212,0.30733253 +20236686,0.30733253 +20236686,0 +20243328,0 +20243328,0.28304164 +20243340,0.28304164 +20243340,0 +20243610,0 +20243610,0.26010863 +20243676,0.26010863 +20243676,0 +20249220,0 +20249220,0.45006035 +20249304,0.45006035 +20249304,0 +20253672,0 +20253672,0.27036814 +20253696,0.27036814 +20253696,0 +20254842,0 +20254842,0.3086904 +20254866,0.3086904 +20254866,0 +20255634,0 +20255634,0.17923959 +20255700,0.17923959 +20255700,0 +20259552,0 +20259552,0.15600483 +20259624,0.15600483 +20259624,0 +20262444,0 +20262444,0.080416415 +20262450,0.080416415 +20262450,0 +20262474,0 +20262474,0.067139409 +20262480,0.067139409 +20262480,0 +20262588,0 +20262588,0.077549789 +20262678,0.077549789 +20262678,0 +20263908,0 +20263908,0.18044659 +20263926,0.18044659 +20263926,0 +20275746,0 +20275746,0.31336753 +20276592,0.28077852 +20276592,0 +20276628,0 +20276628,0.28077852 +20277102,0.31336753 +20277102,0 +20277576,0 +20277576,0.26704888 +20277990,0.26704888 +20277990,0 +20279322,0 +20279322,0.080416415 +20279352,0.080416415 +20279352,0 +20279442,0 +20279442,0.13035607 +20279448,0.13035607 +20279448,0 +20279556,0 +20279556,0.19628847 +20279628,0.19628847 +20279628,0 +20279670,0 +20279670,0.23551599 +20279694,0.23551599 +20279694,0 +20279790,0 +20279790,0.081774291 +20279850,0.081774291 +20279850,0 +20279904,0 +20279904,0.046620398 +20279910,0.046620398 +20279910,0 +20281314,0 +20281314,0.11964393 +20281344,0.11964393 +20281344,0 +20281434,0 +20281434,0.22148461 +20281458,0.22148461 +20281458,0 +20281548,0 +20281548,0.22103199 +20281644,0.22103199 +20281644,0 +20281662,0 +20281662,0.11028968 +20281698,0.11028968 +20281698,0 +20284008,0 +20284008,0.0010561255 +20284014,0.0010561255 +20284014,0 +20284854,0 +20284854,0.29405552 +20284878,0.29405552 +20284878,0 +20284968,0 +20284968,0.33660229 +20284998,0.33660229 +20284998,0 +20294040,0 +20294040,0.027157514 +20294046,0.027157514 +20294046,0 +20294256,0 +20294256,0.0090525045 +20294268,0.0090525045 +20294268,0 +20294370,0 +20294370,0.092184671 +20294382,0.092184671 +20294382,0 +20294490,0 +20294490,0.11089318 +20294526,0.11089318 +20294526,0 +20294604,0 +20294604,0.24909475 +20294664,0.24909475 +20294664,0 +20294718,0 +20294718,0.085697043 +20294724,0.085697043 +20294724,0 +20294838,0 +20294838,0.34308992 +20294946,0.34308992 +20294946,0 +20295414,0 +20295414,0.23204587 +20295600,0.23204587 +20295600,0 +20295612,0 +20295612,0.23083887 +20295642,0.23083887 +20295642,0 +20295816,0 +20295816,0.33358479 +20295870,0.33358479 +20295870,0 +20298210,0 +20298210,0.25935425 +20298318,0.25935425 +20298318,0 +20299968,0 +20299968,0.10395293 +20300058,0.10395293 +20300058,0 +20310558,0 +20310558,0.21394086 +20310636,0.21394086 +20310636,0 +20310672,0 +20310672,0.19100785 +20310786,0.19100785 +20310786,0 +20322714,0 +20322714,0.10998793 +20322756,0.10998793 +20322756,0 +20323980,0 +20323980,0.15328908 +20324046,0.15328908 +20324046,0 +20331570,0 +20331570,0.42607121 +20331900,0.42607121 +20331900,0 +20333928,0 +20333928,0.095805673 +20334012,0.095805673 +20334012,0 +20338122,0 +20338122,0.065328908 +20338128,0.065328908 +20338128,0 +20341314,0 +20341314,0.15781533 +20341320,0.15781533 +20341320,0 +20346012,0 +20346012,0.22495474 +20346084,0.22495474 +20346084,0 +20351730,0 +20351730,0.14197345 +20351778,0.14197345 +20351778,0 +20351850,0 +20351850,0.22842486 +20351874,0.22842486 +20351874,0 +20355504,0 +20355504,0.006035003 +20355516,0.006035003 +20355516,0 +20355618,0 +20355618,0.14182257 +20355642,0.14182257 +20355642,0 +20359296,0 +20359296,0.088111044 +20359344,0.088111044 +20359344,0 +20365866,0 +20365866,0.17380809 +20365920,0.17380809 +20365920,0 +20368476,0 +20368476,0.17350634 +20368506,0.17350634 +20368506,0 +20368596,0 +20368596,0.23853349 +20368656,0.23853349 +20368656,0 +20368710,0 +20368710,0.12643331 +20368716,0.12643331 +20368716,0 +20368824,0 +20368824,0.04013277 +20368830,0.04013277 +20368830,0 +20371170,0 +20371170,0.23174412 +20371236,0.23174412 +20371236,0 +20371290,0 +20371290,0.051146651 +20371326,0.051146651 +20371326,0 +20376204,0 +20376204,0.15509958 +20376246,0.15509958 +20376246,0 +20380284,0 +20380284,0.12613156 +20380302,0.12613156 +20380302,0 +20380398,0 +20380398,0.053711527 +20380404,0.053711527 +20380404,0 +20380512,0 +20380512,0.33690404 +20380518,0.33690404 +20380518,0 +20380626,0 +20380626,0.024592637 +20380632,0.024592637 +20380632,0 +20380746,0 +20380746,0.10440555 +20380782,0.10440555 +20380782,0 +20380860,0 +20380860,0.19764635 +20380920,0.19764635 +20380920,0 +20380974,0 +20380974,0.18044659 +20381022,0.18044659 +20381022,0 +20384748,0 +20384748,0.19704285 +20384850,0.19704285 +20384850,0 +20384868,0 +20384868,0.32060954 +20384874,0.32060954 +20384874,0 +20389338,0 +20389338,0.2990344 +20389410,0.2990344 +20389410,0 +20393328,0 +20393328,0.26388051 +20393334,0.26388051 +20393334,0 +20418288,0 +20418288,0.39484007 +20418420,0.0073928787 +20418420,0 +20418492,0 +20418492,0.0073928787 +20418534,0.14182257 +20418534,0 +20418564,0 +20418564,0.14182257 +20418648,0.0042245021 +20418648,0 +20418654,0 +20418654,0.0042245021 +20418708,0.39484007 +20418708,0 +20418768,0 +20418768,0.11768256 +20418774,0.11768256 +20418774,0 +20420154,0 +20420154,0.4455341 +20420220,0.4455341 +20420220,0 +20421996,0 +20421996,0.21922148 +20422026,0.21922148 +20422026,0 +20422110,0 +20422110,0.19704285 +20422134,0.19704285 +20422134,0 +20423292,0 +20423292,0.079511165 +20423340,0.079511165 +20423340,0 +20423406,0 +20423406,0.22269161 +20423514,0.22269161 +20423514,0 +20423520,0 +20423520,0.098370549 +20423532,0.098370549 +20423532,0 +20423640,0 +20423640,0.1010863 +20423664,0.1010863 +20423664,0 +20423754,0 +20423754,0.21680748 +20423820,0.21680748 +20423820,0 +20423868,0 +20423868,0.14800845 +20423964,0.14800845 +20423964,0 +20423988,0 +20423988,0.29511165 +20424096,0.29511165 +20424096,0 +20425032,0 +20425032,0.0072420036 +20425062,0.0072420036 +20425062,0 +20425152,0 +20425152,0.0064876282 +20425170,0.0064876282 +20425170,0 +20425266,0 +20425266,0.011919131 +20425272,0.011919131 +20425272,0 +20425638,0 +20425638,0.075890163 +20425644,0.075890163 +20425644,0 +20425758,0 +20425758,0.14197345 +20425788,0.14197345 +20425788,0 +20427480,0 +20427480,0.12598069 +20427498,0.12598069 +20427498,0 +20429664,0 +20429664,0.247586 +20429802,0.247586 +20429802,0 +20439114,0 +20439114,0.26765238 +20439120,0.26765238 +20439120,0 +20441676,0 +20441676,0.13503319 +20441682,0.13503319 +20441682,0 +20442762,0 +20442762,0.17908871 +20442780,0.17908871 +20442780,0 +20447088,0 +20447088,0.0076946288 +20447148,0.0076946288 +20447148,0 +20447556,0 +20447556,0.0992758 +20447562,0.0992758 +20447562,0 +20447676,0 +20447676,0.16339771 +20447718,0.16339771 +20447718,0 +20447772,0 +20447772,0.33614967 +20447790,0.065479783 +20447790,0 +20447904,0 +20447904,0 +20447904,0.15992758 +20447904,0.065479783 +20447940,0 +20447940,0 +20447940,0.33614967 +20447940,0.15992758 +20448024,0 +20448024,0.036059143 +20448030,0.036059143 +20448030,0 +20448138,0 +20448138,0.054164152 +20448144,0.054164152 +20448144,0 +20448252,0 +20448252,0.0502414 +20448258,0.0502414 +20448258,0 +20448372,0 +20448372,0.258449 +20448474,0.258449 +20448474,0 +20448486,0 +20448486,0.013880507 +20448522,0.013880507 +20448522,0 +20448600,0 +20448600,0.067592034 +20448606,0.067592034 +20448606,0 +20448720,0 +20448720,0.15208208 +20448774,0.15208208 +20448774,0 +20453478,0 +20453478,0.28349427 +20453490,0.28349427 +20453490,0 +20453592,0 +20453592,0.17818346 +20453682,0.17818346 +20453682,0 +20466630,0 +20466630,0.017954134 +20466636,0.017954134 +20466636,0 +20467980,0 +20467980,0.18814122 +20468028,0.18814122 +20468028,0 +20474040,0 +20474040,0.010863005 +20474046,0.010863005 +20474046,0 +20481888,0 +20481888,0.22676524 +20481912,0.22676524 +20481912,0 +20498130,0 +20498130,0.18421847 +20498142,0.18421847 +20498142,0 +20498244,0 +20498244,0.16113458 +20498280,0.16113458 +20498280,0 +20498364,0 +20498364,0.29254677 +20498436,0.29254677 +20498436,0 +20498478,0 +20498478,0.22646349 +20498520,0.22646349 +20498520,0 +20498592,0 +20498592,0.15057333 +20498640,0.15057333 +20498640,0 +20498712,0 +20498712,0.1591732 +20498742,0.1591732 +20498742,0 +20498826,0 +20498826,0.30114665 +20498940,0.22193724 +20498940,0 +20498964,0 +20498964,0.22193724 +20498970,0.30114665 +20498970,0 +20502702,0 +20502702,0.13835244 +20502888,0.13835244 +20502888,0 +20505396,0 +20505396,0.13277007 +20505414,0.13277007 +20505414,0 +20511162,0 +20511162,0.1513277 +20511168,0.1513277 +20511168,0 +20511858,0 +20511858,0.1004828 +20511984,0.1004828 +20511984,0 +20513040,0 +20513040,0.13065782 +20513076,0.13065782 +20513076,0 +20514414,0 +20514414,0.78892577 +20514714,0.78892577 +20514714,0 +20519460,0 +20519460,0.1095353 +20519466,0.1095353 +20519466,0 +20527674,0 +20527674,0.35078455 +20527710,0.35078455 +20527710,0 +20532132,0 +20532132,0.52851539 +20532216,0.52851539 +20532216,0 +20532582,0 +20532582,0.10742305 +20532606,0.10742305 +20532606,0 +20534754,0 +20534754,0.038473144 +20534760,0.038473144 +20534760,0 +20534874,0 +20534874,0.061858781 +20534880,0.061858781 +20534880,0 +20534988,0 +20534988,0.10455643 +20535030,0.10455643 +20535030,0 +20535102,0 +20535102,0.20971635 +20535138,0.20971635 +20535138,0 +20535204,0 +20535204,0.22751961 +20535222,0.17395896 +20535222,0 +20535252,0 +20535252,0.17395896 +20535288,0.22751961 +20535288,0 +20535336,0 +20535336,0.0064876282 +20535348,0.0064876282 +20535348,0 +20535450,0 +20535450,0.028515389 +20535456,0.028515389 +20535456,0 +20535564,0 +20535564,0.14740495 +20535654,0.14740495 +20535654,0 +20535684,0 +20535684,0.25875075 +20535708,0.25875075 +20535708,0 +20535798,0 +20535798,0.044357272 +20535816,0.044357272 +20535816,0 +20535912,0 +20535912,0.016898008 +20535918,0.016898008 +20535918,0 +20536032,0 +20536032,0.27459264 +20536062,0.27459264 +20536062,0 +20536146,0 +20536146,0.27881714 +20536218,0.27881714 +20536218,0 +20536260,0 +20536260,0.31095353 +20536296,0.31095353 +20536296,0 +20538354,0 +20538354,0.1035003 +20538366,0.1035003 +20538366,0 +20538468,0 +20538468,0.36179843 +20538474,0.36179843 +20538474,0 +20539050,0 +20539050,0.3002414 +20539062,0.3002414 +20539062,0 +20539170,0 +20539170,0.2554315 +20539182,0.2554315 +20539182,0 +20539284,0 +20539284,0.0021122511 +20539290,0.0021122511 +20539290,0 +20540004,0 +20540004,0.022933011 +20540010,0.022933011 +20540010,0 +20540118,0 +20540118,0.085847918 +20540124,0.085847918 +20540124,0 +20540232,0 +20540232,0.0073928787 +20540310,0.0073928787 +20540310,0 +20540352,0 +20540352,0.085847918 +20540382,0.085847918 +20540382,0 +20540448,0 +20540448,0.023536512 +20540532,0.023536512 +20540532,0 +20541018,0 +20541018,0.11119493 +20541036,0.11119493 +20541036,0 +20541282,0 +20541282,0.054616777 +20541324,0.054616777 +20541324,0 +20541396,0 +20541396,0.23928787 +20541450,0.23928787 +20541450,0 +20544210,0 +20544210,0.0072420036 +20544246,0.0072420036 +20544246,0 +20544252,0 +20544252,0.013880507 +20544300,0.013880507 +20544300,0 +20544366,0 +20544366,0.18663247 +20544384,0.18663247 +20544384,0 +20544480,0 +20544480,0.12326494 +20544522,0.12326494 +20544522,0 +20553636,0 +20553636,0.19749547 +20553702,0.19749547 +20553702,0 +20585556,0 +20585556,0.22254074 +20585808,0.22254074 +20585808,0 +20590506,0 +20590506,0.41671696 +20590518,0.41671696 +20590518,0 +20591238,0 +20591238,0.10576343 +20591256,0.10576343 +20591256,0 +20591352,0 +20591352,0.18180447 +20591370,0.18180447 +20591370,0 +20591472,0 +20591472,0.087658419 +20591484,0.087658419 +20591484,0 +20591586,0 +20591586,0.22948099 +20591778,0.22948099 +20591778,0 +20597274,0 +20597274,0.12522631 +20597340,0.12522631 +20597340,0 +20597802,0 +20597802,0.093693422 +20597922,0.093693422 +20597922,0 +20602266,0 +20602266,0.016596258 +20602272,0 +20602272,0 +20602272,0.016596258 +20602272,0.22374774 +20602350,0.22374774 +20602350,0 +20602386,0 +20602386,0.1410682 +20602392,0.1410682 +20602392,0 +20602500,0 +20602500,0.077549789 +20602590,0.077549789 +20602590,0 +20602860,0 +20602860,0.20850935 +20602926,0.20850935 +20602926,0 +20603448,0 +20603448,0.19417622 +20603526,0.19417622 +20603526,0 +20604036,0 +20604036,0.25678938 +20604102,0.25678938 +20604102,0 +20604624,0 +20604624,0.20066385 +20604696,0.20066385 +20604696,0 +20621490,0 +20621490,0.13171394 +20621508,0.13171394 +20621508,0 +20623416,0 +20623416,0.0072420036 +20623494,0.0072420036 +20623494,0 +20623536,0 +20623536,0.20307785 +20623650,0.0073928787 +20623650,0 +20623692,0 +20623692,0 +20623692,0.20307785 +20623692,0.0073928787 +20627178,0 +20627178,0.019161135 +20627184,0.019161135 +20627184,0 +20627298,0 +20627298,0.006035003 +20627304,0.006035003 +20627304,0 +20627346,0 +20627346,0.058992154 +20627352,0.058992154 +20627352,0 +20627412,0 +20627412,0.066385033 +20627418,0.066385033 +20627418,0 +20635914,0 +20635914,0.0064876282 +20635920,0.0064876282 +20635920,0 +20643174,0 +20643174,0.30401328 +20643210,0.30401328 +20643210,0 +20672844,0 +20672844,0.25678938 +20672850,0.25678938 +20672850,0 +20672958,0 +20672958,0.28922752 +20672964,0.28922752 +20672964,0 +20673078,0 +20673078,0.14484007 +20673114,0.14484007 +20673114,0 +20673192,0 +20673192,0.095051298 +20673210,0.095051298 +20673210,0 +20673306,0 +20673306,0.0075437538 +20673354,0.0075437538 +20673354,0 +20673420,0 +20673420,0.14242607 +20673450,0.14242607 +20673450,0 +20678910,0 +20678910,0.11406156 +20678934,0.11406156 +20678934,0 +20679024,0 +20679024,0.11783343 +20679048,0.11783343 +20679048,0 +20679138,0 +20679138,0.10063368 +20679288,0.10063368 +20679288,0 +20680524,0 +20680524,0.059293905 +20680530,0.059293905 +20680530,0 +20684100,0 +20684100,0.30416415 +20684424,0.13141219 +20684424,0 +20684460,0 +20684460,0.13141219 +20684574,0.30416415 +20684574,0 +20685930,0 +20685930,0.40298733 +20686278,0.40298733 +20686278,0 +20693658,0 +20693658,0.35018105 +20693724,0.35018105 +20693724,0 +20694768,0 +20694768,0.01931201 +20694840,0.01931201 +20694840,0 +20697714,0 +20697714,0.0076946288 +20697804,0.0076946288 +20697804,0 +20697828,0 +20697828,0.0064876282 +20697834,0.0064876282 +20697834,0 +20697948,0 +20697948,0.10998793 +20698014,0.10998793 +20698014,0 +20701548,0 +20701548,0.046469523 +20701554,0.046469523 +20701554,0 +20710500,0 +20710500,0.88382619 +20711034,0.88382619 +20711034,0 +20721372,0 +20721372,0.027911889 +20721378,0.027911889 +20721378,0 +20722986,0 +20722986,0.31804466 +20723250,0.31804466 +20723250,0 +20724822,0 +20724822,0.45956548 +20725404,0.45956548 +20725404,0 +20725446,0 +20725446,0.28168377 +20725530,0.28168377 +20725530,0 +20725566,0 +20725566,0.19342185 +20725626,0.19342185 +20725626,0 +20726388,0 +20726388,0.30129753 +20726400,0.30129753 +20726400,0 +20726502,0 +20726502,0.31683766 +20726508,0.31683766 +20726508,0 +20729664,0 +20729664,0.22751961 +20729730,0.22751961 +20729730,0 +20730252,0 +20730252,0.25995775 +20730324,0.25995775 +20730324,0 +20730840,0 +20730840,0.28017502 +20730966,0.28017502 +20730966,0 +20731422,0 +20731422,0.21469523 +20731482,0.21469523 +20731482,0 +20754252,0 +20754252,0.19462885 +20754264,0.19462885 +20754264,0 +20754306,0 +20754306,0.0069402535 +20754330,0.0069402535 +20754330,0 +20754366,0 +20754366,0.066988533 +20754372,0.066988533 +20754372,0 +20754480,0 +20754480,0.12009656 +20754582,0.12009656 +20754582,0 +20754600,0 +20754600,0.033192517 +20754606,0.033192517 +20754606,0 +20754714,0 +20754714,0.061104406 +20754720,0.061104406 +20754720,0 +20754828,0 +20754828,0.0084490042 +20754834,0.0084490042 +20754834,0 +20754948,0 +20754948,0.38307182 +20754954,0.38307182 +20754954,0 +20755062,0 +20755062,0.34127942 +20755110,0.34127942 +20755110,0 +20755176,0 +20755176,0.17501509 +20755188,0.17501509 +20755188,0 +20755296,0 +20755296,0.22042849 +20755338,0.22042849 +20755338,0 +20755410,0 +20755410,0.10093543 +20755452,0.10093543 +20755452,0 +20755524,0 +20755524,0.32905854 +20755584,0.32905854 +20755584,0 +20755644,0 +20755644,0.079511165 +20755656,0.079511165 +20755656,0 +20756214,0 +20756214,0.30763428 +20756286,0.30763428 +20756286,0 +20756328,0 +20756328,0.26599276 +20756346,0.26599276 +20756346,0 +20756442,0 +20756442,0.23204587 +20756466,0.23204587 +20756466,0 +20756562,0 +20756562,0.23551599 +20756574,0.23551599 +20756574,0 +20759934,0 +20759934,0.33298129 +20760186,0.33298129 +20760186,0 +20767530,0 +20767530,0.13397707 +20767578,0.13397707 +20767578,0 +20767644,0 +20767644,0.25512975 +20767758,0.16958358 +20767758,0 +20767764,0 +20767764,0.25512975 +20767770,0.16958358 +20767770,0 +20767872,0 +20767872,0.28847314 +20767908,0.28847314 +20767908,0 +20767992,0 +20767992,0.13427882 +20768010,0.13427882 +20768010,0 +20768898,0 +20768898,0.24305975 +20769252,0.24305975 +20769252,0 +20778942,0 +20778942,0.093391672 +20778948,0.093391672 +20778948,0 +20779056,0 +20779056,0.29858177 +20779080,0.29858177 +20779080,0 +20779170,0 +20779170,0.21318648 +20779236,0.21318648 +20779236,0 +20779290,0 +20779290,0.015841883 +20779296,0.015841883 +20779296,0 +20779404,0 +20779404,0.035304768 +20779410,0.035304768 +20779410,0 +20779518,0 +20779518,0.0075437538 +20779590,0.0075437538 +20779590,0 +20779638,0 +20779638,0.32709716 +20779686,0.32709716 +20779686,0 +20779752,0 +20779752,0.089318045 +20779758,0.089318045 +20779758,0 +20779866,0 +20779866,0.15947495 +20779896,0.15947495 +20779896,0 +20779986,0 +20779986,0.20383223 +20780004,0.20383223 +20780004,0 +20780100,0 +20780100,0.080114665 +20780106,0.080114665 +20780106,0 +20780214,0 +20780214,0.26041038 +20780328,0.13488232 +20780328,0 +20780352,0 +20780352,0.26041038 +20780430,0.13488232 +20780430,0 +20781210,0 +20781210,0.1477067 +20781246,0.1477067 +20781246,0 +20781324,0 +20781324,0.18376584 +20781396,0.18376584 +20781396,0 +20781438,0 +20781438,0.05944478 +20781558,0.13669282 +20781558,0 +20781606,0 +20781606,0.13669282 +20781612,0.05944478 +20781612,0 +20783946,0 +20783946,0.10576343 +20783964,0.10576343 +20783964,0 +20787852,0 +20787852,0.20654798 +20787882,0.20654798 +20787882,0 +20798148,0 +20798148,0.18165359 +20798166,0.18165359 +20798166,0 +20801550,0 +20801550,0.32091129 +20801568,0.32091129 +20801568,0 +20803542,0 +20803542,0.27142426 +20804172,0.27142426 +20804172,0 +20804646,0 +20804646,0.25211225 +20804664,0.25211225 +20804664,0 +20807226,0 +20807226,0.047525649 +20807244,0.047525649 +20807244,0 +20808426,0 +20808426,0.13397707 +20808432,0.13397707 +20808432,0 +20844636,0 +20844636,0.39680145 +20845086,0.39680145 +20845086,0 +20846466,0 +20846466,0.42305371 +20847216,0.49366325 +20847216,0 +20847306,0 +20847306,0.42305371 +20847666,0.36994568 +20847666,0 +20847738,0 +20847738,0.49366325 +20847936,0.36994568 +20847936,0 +20854788,0 +20854788,0.69055522 +20855178,0.69055522 +20855178,0 +20855466,0 +20855466,0.21635486 +20855526,0.21635486 +20855526,0 +20856054,0 +20856054,0.23219674 +20856144,0.23219674 +20856144,0 +20856636,0 +20856636,0.21016898 +20856708,0.21016898 +20856708,0 +20856714,0 +20856714,0.18270972 +20856834,0.18270972 +20856834,0 +20857224,0 +20857224,0.21062161 +20857332,0.21062161 +20857332,0 +20857536,0 +20857536,0.17637296 +20857554,0.17637296 +20857554,0 +20857650,0 +20857650,0.29164152 +20857674,0.29164152 +20857674,0 +20857770,0 +20857770,0.12779119 +20857812,0.20549185 +20857812,0 +20857866,0 +20857866,0.12779119 +20857884,0.11210018 +20857884,0 +20857908,0 +20857908,0.20549185 +20857926,0.11210018 +20857926,0 +20858400,0 +20858400,0.18120097 +20858502,0.18120097 +20858502,0 +20858988,0 +20858988,0.20730235 +20859084,0.20730235 +20859084,0 +20867952,0 +20867952,0.020971635 +20867976,0.020971635 +20867976,0 +20868060,0 +20868060,0.1004828 +20868102,0.1004828 +20868102,0 +20868174,0 +20868174,0.20835848 +20868288,0.16234158 +20868288,0 +20868294,0 +20868294,0.16234158 +20868318,0.20835848 +20868318,0 +20868408,0 +20868408,0.30823778 +20868450,0.30823778 +20868450,0 +20868522,0 +20868522,0.079511165 +20868546,0.079511165 +20868546,0 +20872872,0 +20872872,0.31110441 +20872956,0.31110441 +20872956,0 +20872992,0 +20872992,0.24487025 +20873166,0.24487025 +20873166,0 +20874678,0 +20874678,0.035304768 +20874738,0.035304768 +20874738,0 +20881572,0 +20881572,0.12205794 +20881590,0.12205794 +20881590,0 +20881692,0 +20881692,0.14212432 +20881740,0.14212432 +20881740,0 +20881944,0 +20881944,0.46801448 +20881950,0.46801448 +20881950,0 +20885586,0 +20885586,0.045715148 +20885592,0.045715148 +20885592,0 +20885700,0 +20885700,0.24230537 +20885748,0.24230537 +20885748,0 +20885814,0 +20885814,0.17697646 +20885862,0.17697646 +20885862,0 +20887998,0 +20887998,0.37220881 +20888004,0.37220881 +20888004,0 +20889270,0 +20889270,0.23747737 +20889318,0.23747737 +20889318,0 +20889384,0 +20889384,0.2578455 +20889396,0.2578455 +20889396,0 +20889504,0 +20889504,0.21439348 +20889528,0.21439348 +20889528,0 +20890176,0 +20890176,0.053560652 +20890194,0.053560652 +20890194,0 +20891688,0 +20891688,0.17109234 +20891730,0.17109234 +20891730,0 +20891802,0 +20891802,0.15027158 +20891880,0.15027158 +20891880,0 +20892966,0 +20892966,0.013126132 +20892978,0.013126132 +20892978,0 +20895774,0 +20895774,0.09957755 +20895882,0.09957755 +20895882,0 +20909472,0 +20909472,0.10395293 +20909712,0.11632468 +20909712,0 +20909730,0 +20909730,0.10395293 +20909784,0.11632468 +20909784,0 +20911308,0 +20911308,0.47842486 +20911662,0.47842486 +20911662,0 +20924238,0 +20924238,0.17094146 +20924250,0.17094146 +20924250,0 +20933730,0 +20933730,0.38578757 +20933928,0.38578757 +20933928,0 +20936538,0 +20936538,0.23551599 +20936550,0.23551599 +20936550,0 +20936652,0 +20936652,0.012522631 +20936658,0.012522631 +20936658,0 +20936766,0 +20936766,0.18029572 +20936790,0.18029572 +20936790,0 +20938734,0 +20938734,0.31427278 +20938770,0.31427278 +20938770,0 +20938854,0 +20938854,0.246379 +20938920,0.246379 +20938920,0 +20938968,0 +20938968,0.30718165 +20938998,0.30718165 +20938998,0 +20939082,0 +20939082,0.1501207 +20939094,0.1501207 +20939094,0 +20939304,0 +20939304,0.25829813 +20939340,0.25829813 +20939340,0 +20939418,0 +20939418,0.1077248 +20939454,0.1077248 +20939454,0 +20939532,0 +20939532,0.29978877 +20939640,0.29978877 +20939640,0 +20939652,0 +20939652,0.087960169 +20939658,0.087960169 +20939658,0 +20939766,0 +20939766,0.0013578757 +20939772,0.0013578757 +20939772,0 +20939880,0 +20939880,0.24788775 +20939892,0.24788775 +20939892,0 +20940000,0 +20940000,0.34459867 +20940066,0.34459867 +20940066,0 +20940114,0 +20940114,0.061858781 +20940162,0.061858781 +20940162,0 +20940228,0 +20940228,0.19085697 +20940234,0.19085697 +20940234,0 +20947044,0 +20947044,0.21348823 +20947164,0.16098371 +20947164,0 +20947170,0 +20947170,0.21348823 +20947230,0.16098371 +20947230,0 +20952198,0 +20952198,0.062009656 +20952312,0.062009656 +20952312,0 +20952318,0 +20952318,0.058086904 +20952324,0.058086904 +20952324,0 +20954676,0 +20954676,0.41324683 +20954700,0.41324683 +20954700,0 +20954970,0 +20954970,0.18120097 +20955042,0.18120097 +20955042,0 +20955270,0 +20955270,0.36074231 +20955342,0.36074231 +20955342,0 +20955570,0 +20955570,0.28213639 +20955630,0.28213639 +20955630,0 +20965470,0 +20965470,0.241551 +20965506,0.241551 +20965506,0 +20971446,0 +20971446,0.21756186 +20971506,0.21756186 +20971506,0 +20971560,0 +20971560,0.0076946288 +20971590,0.0076946288 +20971590,0 +20971680,0 +20971680,0.22978274 +20971788,0.22978274 +20971788,0 +20972004,0 +20972004,0.27806276 +20972016,0.14001207 +20972016,0 +20972058,0 +20972058,0.27806276 +20972118,0 +20972118,0 +20972118,0.14001207 +20972118,0.33539529 +20972154,0.33539529 +20972154,0 +20975946,0 +20975946,0.21047073 +20975964,0.21047073 +20975964,0 +20975988,0 +20975988,0.11255281 +20976048,0.11255281 +20976048,0 +20976102,0 +20976102,0.21454436 +20976108,0.21454436 +20976108,0 +20976222,0 +20976222,0.0067893784 +20976240,0.0067893784 +20976240,0 +20976336,0 +20976336,0.12085094 +20976354,0.12085094 +20976354,0 +20976450,0 +20976450,0.25467713 +20976510,0.25467713 +20976510,0 +20977404,0 +20977404,0.20684973 +20977410,0.20684973 +20977410,0 +20977704,0 +20977704,0.28666264 +20977710,0.28666264 +20977710,0 +20978004,0 +20978004,0.43436934 +20978076,0.43436934 +20978076,0 +20980392,0 +20980392,0.18648159 +20980398,0.18648159 +20980398,0 +20983470,0 +20983470,0.093542547 +20983476,0.093542547 +20983476,0 +20983920,0 +20983920,0.20126735 +20983932,0.20126735 +20983932,0 +20984022,0 +20984022,0.14514182 +20984040,0.27791189 +20984040,0 +20984070,0 +20984070,0 +20984070,0.27791189 +20984070,0.14514182 +20984136,0 +20984136,0.10319855 +20984208,0.10319855 +20984208,0 +20985084,0 +20985084,0.23506337 +20985090,0.23506337 +20985090,0 +20985204,0 +20985204,0.1404647 +20985318,0.26840676 +20985318,0 +20985354,0 +20985354,0.26840676 +20985372,0.1404647 +20985372,0 +21006240,0 +21006240,0.095805673 +21006276,0.095805673 +21006276,0 +21006354,0 +21006354,0.20745323 +21006444,0.20745323 +21006444,0 +21006474,0 +21006474,0.0084490042 +21006480,0.0084490042 +21006480,0 +21006588,0 +21006588,0.28032589 +21006642,0.28032589 +21006642,0 +21006702,0 +21006702,0.24834037 +21006708,0.24834037 +21006708,0 +21006822,0 +21006822,0.07996379 +21006888,0.07996379 +21006888,0 +21013518,0 +21013518,0.14740495 +21013542,0.14740495 +21013542,0 +21018900,0 +21018900,0.097465299 +21018906,0.097465299 +21018906,0 +21019020,0 +21019020,0.16852746 +21019116,0.16852746 +21019116,0 +21023760,0 +21023760,0.27610139 +21023808,0.27610139 +21023808,0 +21023880,0 +21023880,0.025799638 +21023886,0.025799638 +21023886,0 +21023994,0 +21023994,0.017954134 +21024006,0.017954134 +21024006,0 +21024108,0 +21024108,0.11919131 +21024114,0.11919131 +21024114,0 +21024222,0 +21024222,0.25859988 +21024258,0.25859988 +21024258,0 +21024342,0 +21024342,0.058841279 +21024432,0.058841279 +21024432,0 +21024456,0 +21024456,0.25015088 +21024546,0.25015088 +21024546,0 +21024570,0 +21024570,0.1579662 +21024576,0.1579662 +21024576,0 +21024690,0 +21024690,0.34610742 +21024732,0.34610742 +21024732,0 +21025452,0 +21025452,0.5550694 +21025566,0.41249246 +21025566,0 +21025668,0 +21025668,0.5550694 +21025812,0.41249246 +21025812,0 +21025866,0 +21025866,0.12522631 +21025884,0.12522631 +21025884,0 +21025980,0 +21025980,0.12764031 +21025986,0.12764031 +21025986,0 +21027330,0 +21027330,0.0078455039 +21027366,0.0078455039 +21027366,0 +21027840,0 +21027840,0.17516596 +21027852,0.17516596 +21027852,0 +21034272,0 +21034272,0.0073928787 +21034356,0.0073928787 +21034356,0 +21034794,0 +21034794,0.14861195 +21034806,0.14861195 +21034806,0 +21035364,0 +21035364,0.18557634 +21035376,0.16641521 +21035376,0 +21035394,0 +21035394,0.18557634 +21035448,0.16641521 +21035448,0 +21035484,0 +21035484,0.079812915 +21035490,0.079812915 +21035490,0 +21037584,0 +21037584,0.14378395 +21037590,0.18768859 +21037590,0 +21037626,0 +21037626,0.14378395 +21037650,0.18768859 +21037650,0 +21050238,0 +21050238,0.087809294 +21050286,0.087809294 +21050286,0 +21050964,0 +21050964,0.19462885 +21050994,0.19462885 +21050994,0 +21051078,0 +21051078,0.34097767 +21051192,0.012975256 +21051192,0 +21051198,0 +21051198,0 +21051198,0.34097767 +21051198,0.012975256 +21057648,0 +21057648,0.29375377 +21057654,0.29375377 +21057654,0 +21057762,0 +21057762,0.082679541 +21057768,0.082679541 +21057768,0 +21057870,0 +21057870,0.29586602 +21057876,0.240344 +21057876,0 +21057918,0 +21057918,0.29586602 +21057966,0.240344 +21057966,0 +21057990,0 +21057990,0.21816536 +21058002,0.21816536 +21058002,0 +21058104,0 +21058104,0.16234158 +21058128,0.16234158 +21058128,0 +21058218,0 +21058218,0.21846711 +21058230,0 +21058230,0 +21058230,0.1440857 +21058230,0.21846711 +21058248,0.1440857 +21058248,0 +21058338,0 +21058338,0.2015691 +21058452,0.027157514 +21058452,0 +21058458,0 +21058458,0 +21058458,0.2015691 +21058458,0.027157514 +21058566,0 +21058566,0.1065178 +21058650,0.1065178 +21058650,0 +21058686,0 +21058686,0.054616777 +21058698,0.054616777 +21058698,0 +21058800,0 +21058800,0.1955341 +21058824,0.1955341 +21058824,0 +21058914,0 +21058914,0.003922752 +21058920,0.003922752 +21058920,0 +21062280,0 +21062280,0.1471032 +21062388,0.1471032 +21062388,0 +21063924,0 +21063924,0.12190706 +21064062,0.12190706 +21064062,0 +21064470,0 +21064470,0.098370549 +21064476,0.098370549 +21064476,0 +21064584,0 +21064584,0.052655401 +21064596,0.052655401 +21064596,0 +21065058,0 +21065058,0.3426373 +21065160,0.3426373 +21065160,0 +21065172,0 +21065172,0.024592637 +21065178,0.024592637 +21065178,0 +21065286,0 +21065286,0.29978877 +21065322,0.29978877 +21065322,0 +21065406,0 +21065406,0.052051901 +21065412,0.052051901 +21065412,0 +21067422,0 +21067422,0.45413398 +21067896,0.45413398 +21067896,0 +21068868,0 +21068868,0.25829813 +21068916,0.25829813 +21068916,0 +21068982,0 +21068982,0.26297526 +21069012,0.26297526 +21069012,0 +21096798,0 +21096798,0.33449004 +21096858,0.33449004 +21096858,0 +21101250,0 +21101250,0.52142426 +21101268,0.52142426 +21101268,0 +21105708,0 +21105708,0.20066385 +21105714,0.20066385 +21105714,0 +21112584,0 +21112584,0.42410984 +21112902,0.42410984 +21112902,0 +21114420,0 +21114420,0.55718165 +21114960,0.55718165 +21114960,0 +21115332,0 +21115332,0.34535305 +21115374,0.34535305 +21115374,0 +21115452,0 +21115452,0.068195534 +21115470,0.068195534 +21115470,0 +21115566,0 +21115566,0.19327097 +21115596,0.19327097 +21115596,0 +21117708,0 +21117708,0.013277007 +21117714,0.013277007 +21117714,0 +21123366,0 +21123366,0.11934218 +21123384,0.11934218 +21123384,0 +21124266,0 +21124266,0.17984309 +21124284,0.066837658 +21124284,0 +21124290,0 +21124290,0.066837658 +21124314,0.17984309 +21124314,0 +21124812,0 +21124812,0.25347013 +21125154,0.25347013 +21125154,0 +21126978,0 +21126978,0.13473144 +21126984,0.13473144 +21126984,0 +21127092,0 +21127092,0.23310199 +21127116,0.23310199 +21127116,0 +21129198,0 +21129198,0.13261919 +21129204,0.13261919 +21129204,0 +21129540,0 +21129540,0.18542547 +21129576,0.18542547 +21129576,0 +21130800,0 +21130800,0.37311406 +21130812,0.37311406 +21130812,0 +21130914,0 +21130914,0.11994568 +21130938,0.11994568 +21130938,0 +21131028,0 +21131028,0.085697043 +21131064,0 +21131064,0 +21131064,0.011617381 +21131064,0.085697043 +21131076,0.011617381 +21131076,0 +21131148,0 +21131148,0.14302957 +21131172,0.14302957 +21131172,0 +21131184,0 +21131184,0.11873868 +21131190,0.11873868 +21131190,0 +21131262,0 +21131262,0.006035003 +21131274,0.006035003 +21131274,0 +21131376,0 +21131376,0.14076645 +21131382,0.14076645 +21131382,0 +21131496,0 +21131496,0.10334943 +21131610,0.10334943 +21131610,0 +21132438,0 +21132438,0.17063971 +21132456,0.17063971 +21132456,0 +21132492,0 +21132492,0.042697646 +21132510,0.042697646 +21132510,0 +21132552,0 +21132552,0.0069402535 +21132588,0.0069402535 +21132588,0 +21137736,0 +21137736,0.095503923 +21137742,0.095503923 +21137742,0 +21142770,0 +21142770,0.13337357 +21142782,0.13337357 +21142782,0 +21145830,0 +21145830,0.081170791 +21145854,0.081170791 +21145854,0 +21146028,0 +21146028,0.39876282 +21146040,0.39876282 +21146040,0 +21146736,0 +21146736,0.12266144 +21146772,0.12266144 +21146772,0 +21154788,0 +21154788,0.2433615 +21154866,0.2433615 +21154866,0 +21156768,0 +21156768,0.057483404 +21156774,0.057483404 +21156774,0 +21161748,0 +21161748,0.33569704 +21161880,0.33569704 +21161880,0 +21162312,0 +21162312,0.15223295 +21162384,0.15223295 +21162384,0 +21169134,0 +21169134,0.21122511 +21169188,0.21122511 +21169188,0 +21189006,0 +21189006,0.26538926 +21189114,0.26538926 +21189114,0 +21195090,0 +21195090,0.46665661 +21195438,0.46665661 +21195438,0 +21196002,0 +21196002,0.0043753772 +21196008,0.0043753772 +21196008,0 +21197244,0 +21197244,0.27459264 +21197280,0.27459264 +21197280,0 +21197358,0 +21197358,0.2506035 +21197400,0.2506035 +21197400,0 +21197478,0 +21197478,0.12417019 +21197502,0.12417019 +21197502,0 +21200082,0 +21200082,0.084339167 +21200088,0.084339167 +21200088,0 +21200574,0 +21200574,0.48958962 +21200580,0.48958962 +21200580,0 +21203952,0 +21203952,0.29692215 +21203988,0.29692215 +21203988,0 +21204072,0 +21204072,0.15721183 +21204102,0.15721183 +21204102,0 +21207516,0 +21207516,0.62552806 +21208176,0.62552806 +21208176,0 +21221526,0 +21221526,0.14212432 +21221550,0.14212432 +21221550,0 +21221646,0 +21221646,0.28847314 +21221754,0.28847314 +21221754,0 +21221760,0 +21221760,0.0016596258 +21221766,0.0016596258 +21221766,0 +21221874,0 +21221874,0.13940857 +21221886,0.13940857 +21221886,0 +21221994,0 +21221994,0 +21221994,0.15887145 +21221994,0.1422752 +21222036,0 +21222036,0.15887145 +21222054,0.1422752 +21222054,0 +21222108,0 +21222108,0.17033796 +21222132,0.17033796 +21222132,0 +21222222,0 +21222222,0.19462885 +21222252,0.19462885 +21222252,0 +21226368,0 +21226368,0.32890766 +21226422,0.32890766 +21226422,0 +21226482,0 +21226482,0.23717562 +21226530,0.23717562 +21226530,0 +21226596,0 +21226596,0.28470127 +21226644,0.28470127 +21226644,0 +21232632,0 +21232632,0.28470127 +21232644,0.28470127 +21232644,0 +21241770,0 +21241770,0.37281231 +21241794,0.37281231 +21241794,0 +21246072,0 +21246072,0.17637296 +21246138,0.17637296 +21246138,0 +21246474,0 +21246474,0.085093543 +21246480,0.085093543 +21246480,0 +21256854,0 +21256854,0.17592034 +21256860,0.17592034 +21256860,0 +21256968,0 +21256968,0.19100785 +21256980,0.19100785 +21256980,0 +21263964,0 +21263964,0.40630658 +21263976,0.40630658 +21263976,0 +21264264,0 +21264264,0.57272179 +21264276,0.57272179 +21264276,0 +21276438,0 +21276438,0.0027157514 +21276444,0.0027157514 +21276444,0 +21287160,0 +21287160,0.17154496 +21287334,0.17154496 +21287334,0 +21287544,0 +21287544,0.26267351 +21287586,0.26267351 +21287586,0 +21287658,0 +21287658,0.12839469 +21287670,0.12839469 +21287670,0 +21288324,0 +21288324,0.23581774 +21288384,0.23581774 +21288384,0 +21288438,0 +21288438,0.35983705 +21288456,0.35983705 +21288456,0 +21288552,0 +21288552,0.063216657 +21288576,0.063216657 +21288576,0 +21289290,0 +21289290,0.16898008 +21289350,0.16898008 +21289350,0 +21290418,0 +21290418,0.068497284 +21290430,0.068497284 +21290430,0 +21291702,0 +21291702,0.11391068 +21291720,0.11391068 +21291720,0 +21291816,0 +21291816,0.080718165 +21291846,0.080718165 +21291846,0 +21291930,0 +21291930,0.13548582 +21292038,0.13548582 +21292038,0 +21292044,0 +21292044,0.28455039 +21292068,0.28455039 +21292068,0 +21292782,0 +21292782,0.16822571 +21292806,0.16822571 +21292806,0 +21294570,0 +21294570,0.17969221 +21294624,0.17969221 +21294624,0 +21294690,0 +21294690,0.17260109 +21294738,0.17260109 +21294738,0 +21303030,0 +21303030,0.46409173 +21303060,0.46409173 +21303060,0 +21303330,0 +21303330,0.38865419 +21303384,0.38865419 +21303384,0 +21303630,0 +21303630,0.31487628 +21303642,0.31487628 +21303642,0 +21313098,0 +21313098,0.10455643 +21313104,0.10455643 +21313104,0 +21316452,0 +21316452,0.10787568 +21316482,0.10787568 +21316482,0 +21316566,0 +21316566,0.26629451 +21316680,0.099728425 +21316680,0 +21316692,0 +21316692,0.099728425 +21316704,0.26629451 +21316704,0 +21316800,0 +21316800,0.19176222 +21316824,0.19176222 +21316824,0 +21316842,0 +21316842,0.10968618 +21316860,0.10968618 +21316860,0 +21316914,0 +21316914,0.4539831 +21316920,0.4539831 +21316920,0 +21317028,0 +21317028,0.17999396 +21317082,0.17999396 +21317082,0 +21318462,0 +21318462,0.32121304 +21318528,0.32121304 +21318528,0 +21321096,0 +21321096,0.19749547 +21321162,0.19749547 +21321162,0 +21321726,0 +21321726,0.22420036 +21321900,0.22420036 +21321900,0 +21334152,0 +21334152,0.44146047 +21334572,0.44146047 +21334572,0 +21363180,0 +21363180,0.17290284 +21363186,0.17290284 +21363186,0 +21363300,0 +21363300,0.025950513 +21363306,0.025950513 +21363306,0 +21363414,0 +21363414,0.241551 +21363432,0.241551 +21363432,0 +21363528,0 +21363528,0.18512372 +21363588,0.18512372 +21363588,0 +21363648,0 +21363648,0.17199759 +21363666,0.17199759 +21363666,0 +21363762,0 +21363762,0.23974049 +21363768,0.23974049 +21363768,0 +21366204,0 +21366204,0.0024140012 +21366210,0.0024140012 +21366210,0 +21366324,0 +21366324,0.03092939 +21366330,0.03092939 +21366330,0 +21368796,0 +21368796,0.022329511 +21368802,0.022329511 +21368802,0 +21377730,0 +21377730,0.007996379 +21377736,0.007996379 +21377736,0 +21384018,0 +21384018,0.23853349 +21384036,0.23853349 +21384036,0 +21385590,0 +21385590,0.24683162 +21385632,0.24683162 +21385632,0 +21386172,0 +21386172,0.2457755 +21386244,0.2457755 +21386244,0 +21386760,0 +21386760,0.25105613 +21386874,0.25105613 +21386874,0 +21387348,0 +21387348,0.15660833 +21387516,0.15660833 +21387516,0 +21387936,0 +21387936,0.17954134 +21388002,0.17954134 +21388002,0 +21388524,0 +21388524,0.19870247 +21388614,0.19870247 +21388614,0 +21394194,0 +21394194,0.29752565 +21394212,0.29752565 +21394212,0 +21394308,0 +21394308,0.1907061 +21394350,0.1907061 +21394350,0 +21395748,0 +21395748,0.13020519 +21395754,0.13020519 +21395754,0 +21397242,0 +21397242,0.39378395 +21397296,0.096409173 +21397296,0 +21397338,0 +21397338,0.096409173 +21397416,0.095654798 +21397416,0 +21397506,0 +21397506,0.095654798 +21397530,0.2469825 +21397530,0 +21397590,0 +21397590,0.2469825 +21397680,0.39378395 +21397680,0 +21398340,0 +21398340,0.025196138 +21398346,0.025196138 +21398346,0 +21401490,0 +21401490,0.0069402535 +21401496,0.0069402535 +21401496,0 +21403866,0 +21403866,0.23174412 +21403926,0.23174412 +21403926,0 +21403980,0 +21403980,0.11119493 +21404028,0.11119493 +21404028,0 +21404100,0 +21404100,0.11300543 +21404118,0.11300543 +21404118,0 +21404214,0 +21404214,0.20488835 +21404280,0.20488835 +21404280,0 +21404328,0 +21404328,0.11360893 +21404334,0.11360893 +21404334,0 +21404448,0 +21404448,0.33780929 +21404466,0.33780929 +21404466,0 +21404562,0 +21404562,0.051901026 +21404616,0.051901026 +21404616,0 +21404676,0 +21404676,0.37552806 +21404688,0.37552806 +21404688,0 +21404790,0 +21404790,0.18044659 +21404814,0.18044659 +21404814,0 +21404910,0 +21404910,0.10184068 +21404946,0.10184068 +21404946,0 +21405024,0 +21405024,0.11662643 +21405108,0.11662643 +21405108,0 +21406824,0 +21406824,0.11692818 +21406866,0.11692818 +21406866,0 +21420024,0 +21420024,0.32800241 +21420036,0.32800241 +21420036,0 +21420300,0 +21420300,0.18436934 +21420366,0.18436934 +21420366,0 +21420420,0 +21420420,0.0073928787 +21420492,0.0073928787 +21420492,0 +21448218,0 +21448218,0.0076946288 +21448236,0.0076946288 +21448236,0 +21460938,0 +21460938,0.23732649 +21460980,0.23732649 +21460980,0 +21461052,0 +21461052,0.027761014 +21461058,0.027761014 +21461058,0 +21461166,0 +21461166,0.029571515 +21461172,0.029571515 +21461172,0 +21461190,0 +21461190,0.16898008 +21461226,0.16898008 +21461226,0 +21461928,0 +21461928,0.23445987 +21461940,0.23445987 +21461940,0 +21462048,0 +21462048,0.15238383 +21462096,0.15238383 +21462096,0 +21482580,0 +21482580,0.12552806 +21482820,0.12552806 +21482820,0 +21492780,0 +21492780,0.17380809 +21492900,0.17380809 +21492900,0 +21492978,0 +21492978,0.16415208 +21493032,0.22329511 +21493032,0 +21493104,0 +21493104,0.16415208 +21493386,0.22329511 +21493386,0 +21495678,0 +21495678,0.3044659 +21495696,0.3044659 +21495696,0 +21503352,0 +21503352,0.18089922 +21503376,0.18089922 +21503376,0 +21506748,0 +21506748,0.16158721 +21506832,0.16158721 +21506832,0 +21506862,0 +21506862,0.14438745 +21506880,0.14438745 +21506880,0 +21509130,0 +21509130,0.15947495 +21509160,0.15947495 +21509160,0 +21532254,0 +21532254,0.092335546 +21532302,0.092335546 +21532302,0 +21538932,0 +21538932,0.063820157 +21538956,0.063820157 +21538956,0 +21543726,0 +21543726,0.22254074 +21543756,0.22254074 +21543756,0 +21545202,0 +21545202,0.32709716 +21545256,0.32709716 +21545256,0 +21547008,0 +21547008,0.00045262523 +21547014,0.00045262523 +21547014,0 +21547446,0 +21547446,0.098672299 +21547476,0.098672299 +21547476,0 +21547494,0 +21547494,0.12311406 +21547518,0.12311406 +21547518,0 +21547560,0 +21547560,0.34158117 +21547608,0.15887145 +21547608,0 +21547614,0 +21547614,0.15887145 +21547620,0.34158117 +21547620,0 +21547728,0 +21547728,0.0070911285 +21547734,0.0070911285 +21547734,0 +21548034,0 +21548034,0.11255281 +21548046,0.11255281 +21548046,0 +21548202,0 +21548202,0.33931804 +21548244,0.33931804 +21548244,0 +21550056,0 +21550056,0.015389258 +21550062,0.015389258 +21550062,0 +21550170,0 +21550170,0.16611346 +21550224,0.16611346 +21550224,0 +21568836,0 +21568836,0.29918527 +21568854,0.29918527 +21568854,0 +21574620,0 +21574620,0.17199759 +21574710,0.17199759 +21574710,0 +21575472,0 +21575472,0.02942064 +21575478,0.02942064 +21575478,0 +21576210,0 +21576210,0.20126735 +21576270,0.20126735 +21576270,0 +21576324,0 +21576324,0.11722993 +21576354,0.11722993 +21576354,0 +21579078,0 +21579078,0.28077852 +21579252,0.28077852 +21579252,0 +21581868,0 +21581868,0.1955341 +21581898,0.1955341 +21581898,0 +21581982,0 +21581982,0.12537719 +21582042,0.12537719 +21582042,0 +21584730,0 +21584730,0.18602897 +21584790,0.18602897 +21584790,0 +21584844,0 +21584844,0.095956548 +21584868,0.095956548 +21584868,0 +21584964,0 +21584964,0.022782136 +21584970,0.022782136 +21584970,0 +21585078,0 +21585078,0.31638503 +21585120,0.31638503 +21585120,0 +21593184,0 +21593184,0.21635486 +21593202,0.21635486 +21593202,0 +21596220,0 +21596220,0.15660833 +21596304,0.15660833 +21596304,0 +21596340,0 +21596340,0.17622209 +21596406,0.17622209 +21596406,0 +21596454,0 +21596454,0.11134581 +21596466,0.11134581 +21596466,0 +21596520,0 +21596520,0.1452927 +21596568,0.21544961 +21596568,0 +21596640,0 +21596640,0.1452927 +21596670,0.21544961 +21596670,0 +21599826,0 +21599826,0.40328908 +21599970,0.40328908 +21599970,0 +21621960,0 +21621960,0.18587809 +21621966,0.18587809 +21621966,0 +21622074,0 +21622074,0.17275196 +21622092,0.17275196 +21622092,0 +21622194,0 +21622194,0.14016295 +21622212,0.14016295 +21622212,0 +21622308,0 +21622308,0.0073928787 +21622416,0.0073928787 +21622416,0 +21622422,0 +21622422,0.012220881 +21622428,0.012220881 +21622428,0 +21622542,0 +21622542,0.23717562 +21622614,0.23717562 +21622614,0 +21622956,0 +21622956,0.25709113 +21622992,0.25709113 +21622992,0 +21629520,0 +21629520,0.06035003 +21629526,0.06035003 +21629526,0 +21629634,0 +21629634,0.029269765 +21629640,0.029269765 +21629640,0 +21635322,0 +21635322,0.17048884 +21635346,0.17048884 +21635346,0 +21638580,0 +21638580,0.27942064 +21638586,0.27942064 +21638586,0 +21638694,0 +21638694,0.0090525045 +21638700,0.0090525045 +21638700,0 +21639630,0 +21639630,0.31185878 +21639654,0.31185878 +21639654,0 +21639744,0 +21639744,0.044809897 +21639858,0.044809897 +21639858,0 +21643368,0 +21643368,0.12628244 +21643386,0.12628244 +21643386,0 +21643650,0 +21643650,0.3432408 +21643734,0.3432408 +21643734,0 +21644928,0 +21644928,0.21394086 +21644982,0.19040435 +21644982,0 +21645018,0 +21645018,0.21394086 +21645066,0.19040435 +21645066,0 +21645570,0 +21645570,0.17501509 +21645654,0.17501509 +21645654,0 +21646158,0 +21646158,0.21454436 +21646260,0.21454436 +21646260,0 +21646740,0 +21646740,0.21831623 +21646836,0.21831623 +21646836,0 +21647328,0 +21647328,0.251207 +21647406,0.251207 +21647406,0 +21647916,0 +21647916,0.21409173 +21648000,0.21409173 +21648000,0 +21654234,0 +21654234,0.007996379 +21654264,0.007996379 +21654264,0 +21664032,0 +21664032,0.057936029 +21664044,0.057936029 +21664044,0 +21669882,0 +21669882,0.14725407 +21669888,0.14725407 +21669888,0 +21670746,0 +21670746,0.30537115 +21670842,0.30537115 +21670842,0 +21671262,0 +21671262,0.17079059 +21671292,0.17079059 +21671292,0 +21675954,0 +21675954,0.21122511 +21675972,0.21122511 +21675972,0 +21676368,0 +21676368,0.23717562 +21676416,0.23717562 +21676416,0 +21676482,0 +21676482,0.17003621 +21676500,0.17003621 +21676500,0 +21679500,0 +21679500,0.26659626 +21679578,0.26659626 +21679578,0 +21680088,0 +21680088,0.22676524 +21680178,0.22676524 +21680178,0 +21680676,0 +21680676,0.25256488 +21680748,0.25256488 +21680748,0 +21681264,0 +21681264,0.28319252 +21681378,0.28319252 +21681378,0 +21681852,0 +21681852,0.26659626 +21681876,0.16249246 +21681876,0 +21681906,0 +21681906,0.16249246 +21681948,0.26659626 +21681948,0 +21681996,0 +21681996,0.051297526 +21682020,0.051297526 +21682020,0 +21682110,0 +21682110,0.25935425 +21682182,0.25935425 +21682182,0 +21682224,0 +21682224,0.34052505 +21682266,0.34052505 +21682266,0 +21682434,0 +21682434,0.21726011 +21682506,0.21726011 +21682506,0 +21695616,0 +21695616,0.18467109 +21695652,0.18467109 +21695652,0 +21695730,0 +21695730,0.1507242 +21695742,0.1507242 +21695742,0 +21695850,0 +21695850,0.25211225 +21695928,0.25211225 +21695928,0 +21695964,0 +21695964,0.050392275 +21695970,0.050392275 +21695970,0 +21696078,0 +21696078,0.25437538 +21696096,0.25437538 +21696096,0 +21704430,0 +21704430,0.23974049 +21704694,0.23974049 +21704694,0 +21705450,0 +21705450,0.62085094 +21705966,0.62085094 +21705966,0 +21711276,0 +21711276,0.11119493 +21711282,0.11119493 +21711282,0 +21715872,0 +21715872,0.20715148 +21715938,0.20715148 +21715938,0 +21716460,0 +21716460,0.18436934 +21716544,0.18436934 +21716544,0 +21717042,0 +21717042,0.20624623 +21717090,0.35817743 +21717090,0 +21717156,0 +21717156,0.20624623 +21717162,0.35817743 +21717162,0 +21717630,0 +21717630,0.18678334 +21717720,0.18678334 +21717720,0 +21718218,0 +21718218,0.17969221 +21718272,0.17969221 +21718272,0 +21718806,0 +21718806,0.22480386 +21718878,0.22480386 +21718878,0 +21719394,0 +21719394,0.19236572 +21719460,0.19236572 +21719460,0 +21720192,0 +21720192,0.29028365 +21720276,0.29028365 +21720276,0 +21721362,0 +21721362,0.17622209 +21721434,0.17622209 +21721434,0 +21721542,0 +21721542,0.36028968 +21721572,0.36028968 +21721572,0 +21721662,0 +21721662,0.37190706 +21721734,0.37190706 +21721734,0 +21723312,0 +21723312,0.13971032 +21723330,0.13971032 +21723330,0 +21723426,0 +21723426,0.29254677 +21723540,0.28968014 +21723540,0 +21723564,0 +21723564,0.29254677 +21723588,0.28968014 +21723588,0 +21724644,0 +21724644,0.37990344 +21724704,0.37990344 +21724704,0 +21725778,0 +21725778,0.03032589 +21725790,0.03032589 +21725790,0 +21725820,0 +21725820,0.24140012 +21725880,0.24140012 +21725880,0 +21726120,0 +21726120,0.31744116 +21726180,0.31744116 +21726180,0 +21726228,0 +21726228,0.10425468 +21726312,0.10425468 +21726312,0 +21726342,0 +21726342,0.24562462 +21726414,0.24562462 +21726414,0 +21726456,0 +21726456,0.18648159 +21726474,0.18648159 +21726474,0 +21727650,0 +21727650,0.14981895 +21727656,0.14981895 +21727656,0 +21728154,0 +21728154,0.24773687 +21728166,0.24773687 +21728166,0 +21728268,0 +21728268,0.27187689 +21728274,0.27187689 +21728274,0 +21728442,0 +21728442,0.18995172 +21728550,0.18995172 +21728550,0 +21728556,0 +21728556,0.17245021 +21728568,0.17245021 +21728568,0 +21730278,0 +21730278,0.4539831 +21730308,0.4539831 +21730308,0 +21730572,0 +21730572,0.41354858 +21730650,0.41354858 +21730650,0 +21733404,0 +21733404,0.0052806276 +21733410,0.0052806276 +21733410,0 +21733518,0 +21733518,0.10968618 +21733560,0.12009656 +21733560,0 +21733596,0 +21733596,0.12009656 +21733608,0.10968618 +21733608,0 +21734388,0 +21734388,0.065781533 +21734430,0.065781533 +21734430,0 +21734508,0 +21734508,0.072721786 +21734544,0.072721786 +21734544,0 +21735306,0 +21735306,0.27549789 +21735336,0.27549789 +21735336,0 +21735420,0 +21735420,0.18738684 +21735456,0.18738684 +21735456,0 +21736032,0 +21736032,0.256035 +21736056,0.256035 +21736056,0 +21737220,0 +21737220,0.22103199 +21737232,0.22103199 +21737232,0 +21737340,0 +21737340,0.17441159 +21737370,0.17441159 +21737370,0 +21738618,0 +21738618,0.26840676 +21738684,0.26840676 +21738684,0 +21743250,0 +21743250,0.3420338 +21743340,0.3420338 +21743340,0 +21743970,0 +21743970,0.32407966 +21744042,0.32407966 +21744042,0 +21746226,0 +21746226,0.29873265 +21746580,0.29873265 +21746580,0 +21749862,0 +21749862,0.34429692 +21749874,0.34429692 +21749874,0 +21753126,0 +21753126,0.013578757 +21753132,0.013578757 +21753132,0 +21753240,0 +21753240,0.19161135 +21753354,0.19161135 +21753354,0 +21754320,0 +21754320,0.36828606 +21754362,0.36828606 +21754362,0 +21754722,0 +21754722,0.01041038 +21754728,0.01041038 +21754728,0 +21757998,0 +21757998,0.014031382 +21758004,0.014031382 +21758004,0 +21758358,0 +21758358,0.048430899 +21758364,0.048430899 +21758364,0 +21758778,0 +21758778,0.20654798 +21758790,0.16958358 +21758790,0 +21758838,0 +21758838,0.20654798 +21758874,0.16958358 +21758874,0 +21761010,0 +21761010,0.13442969 +21761016,0.13442969 +21761016,0 +21761124,0 +21761124,0.050995775 +21761130,0.050995775 +21761130,0 +21763068,0 +21763068,0.3074834 +21763230,0.28636089 +21763230,0 +21763314,0 +21763314,0.28636089 +21763440,0.3074834 +21763440,0 +21764088,0 +21764088,0.1513277 +21764106,0.1513277 +21764106,0 +21764208,0 +21764208,0.25377188 +21764226,0.25377188 +21764226,0 +21764334,0 +21764334,0.11692818 +21764340,0.11692818 +21764340,0 +21764466,0 +21764466,0.18678334 +21764502,0.18678334 +21764502,0 +21800994,0 +21800994,0.33283042 +21801024,0.33283042 +21801024,0 +21801078,0 +21801078,0.42109234 +21801108,0.075135788 +21801108,0 +21801114,0 +21801114,0.075135788 +21801150,0.42109234 +21801150,0 +21801228,0 +21801228,0.14861195 +21801252,0.14861195 +21801252,0 +21803436,0 +21803436,0.25980688 +21803544,0.25980688 +21803544,0 +21803682,0 +21803682,0.34716355 +21803772,0.34716355 +21803772,0 +21810660,0 +21810660,0.23581774 +21810666,0.23581774 +21810666,0 +21810702,0 +21810702,0.0043753772 +21810708,0.0043753772 +21810708,0 +21812238,0 +21812238,0.1567592 +21812256,0.1567592 +21812256,0 +21815394,0 +21815394,0.17969221 +21815466,0.17969221 +21815466,0 +21815982,0 +21815982,0.23913699 +21816048,0.26191913 +21816048,0 +21816084,0 +21816084,0.26191913 +21816192,0.23913699 +21816192,0 +21816564,0 +21816564,0.17124321 +21816630,0.17124321 +21816630,0 +21817152,0 +21817152,0.23219674 +21817248,0.23219674 +21817248,0 +21817740,0 +21817740,0.24487025 +21817806,0.24487025 +21817806,0 +21820878,0 +21820878,0.13020519 +21820896,0.13020519 +21820896,0 +21821598,0 +21821598,0.19206397 +21821646,0.19206397 +21821646,0 +21821676,0 +21821676,0.24622812 +21821712,0.24622812 +21821712,0 +21821790,0 +21821790,0.11149668 +21821904,0.22646349 +21821904,0 +21821928,0 +21821928,0.22646349 +21821982,0.11149668 +21821982,0 +21822024,0 +21822024,0.048581774 +21822048,0.048581774 +21822048,0 +21822138,0 +21822138,0.1967411 +21822144,0.1967411 +21822144,0 +21822192,0 +21822192,0.00090525045 +21822198,0.00090525045 +21822198,0 +21822252,0 +21822252,0.1567592 +21822348,0.1567592 +21822348,0 +21822372,0 +21822372,0.23551599 +21822396,0.23551599 +21822396,0 +21826314,0 +21826314,0.21726011 +21826344,0.21726011 +21826344,0 +21829050,0 +21829050,0.10199155 +21829056,0.10199155 +21829056,0 +21837018,0 +21837018,0.11632468 +21837054,0.11632468 +21837054,0 +21842340,0 +21842340,0.17501509 +21842394,0.17501509 +21842394,0 +21842928,0 +21842928,0.23838262 +21843024,0.23838262 +21843024,0 +21843516,0 +21843516,0.18482197 +21843576,0.18482197 +21843576,0 +21844104,0 +21844104,0.22736874 +21844200,0.22736874 +21844200,0 +21845688,0 +21845688,0.045564273 +21845694,0.045564273 +21845694,0 +21845754,0 +21845754,0.14695232 +21845826,0.14695232 +21845826,0 +21847716,0 +21847716,0.1549487 +21847776,0.1549487 +21847776,0 +21847830,0 +21847830,0.19402535 +21847836,0.19402535 +21847836,0 +21863034,0 +21863034,0.049185275 +21863040,0.049185275 +21863040,0 +21878658,0 +21878658,0.11436331 +21878688,0.11436331 +21878688,0 +21878778,0 +21878778,0.037266144 +21878784,0.037266144 +21878784,0 +21878892,0 +21878892,0.046167773 +21878898,0.046167773 +21878898,0 +21883722,0 +21883722,0.32302354 +21884064,0.32302354 +21884064,0 +21896622,0 +21896622,0.33433917 +21896676,0.33433917 +21896676,0 +21901050,0 +21901050,0.18059747 +21901086,0.18059747 +21901086,0 +21902214,0 +21902214,0.056276403 +21902220,0.056276403 +21902220,0 +21907944,0 +21907944,0.21861798 +21907962,0.21861798 +21907962,0 +21908064,0 +21908064,0.13352444 +21908094,0.13352444 +21908094,0 +21908112,0 +21908112,0.35666868 +21908148,0.35666868 +21908148,0 +21908226,0 +21908226,0.28243814 +21908232,0.28243814 +21908232,0 +21908346,0 +21908346,0.11300543 +21908352,0.11300543 +21908352,0 +21909714,0 +21909714,0.2469825 +21909834,0.08916717 +21909834,0 +21909840,0 +21909840,0.08916717 +21909864,0.2469825 +21909864,0 +21909948,0 +21909948,0.16641521 +21909966,0.16641521 +21909966,0 +21910062,0 +21910062,0.20911285 +21910098,0.20911285 +21910098,0 +21914730,0 +21914730,0.28832227 +21914748,0.28832227 +21914748,0 +21914844,0 +21914844,0.053862402 +21914850,0.053862402 +21914850,0 +21920664,0 +21920664,0.31457453 +21920682,0.31457453 +21920682,0 +21920784,0 +21920784,0.06985516 +21920856,0.06985516 +21920856,0 +21920898,0 +21920898,0.14061557 +21920928,0.14061557 +21920928,0 +21923952,0 +21923952,0.55340978 +21924150,0.55340978 +21924150,0 +21933246,0 +21933246,0.4455341 +21933252,0.4455341 +21933252,0 +21933360,0 +21933360,0.01071213 +21933366,0.01071213 +21933366,0 +21936408,0 +21936408,0.30054315 +21936924,0.30054315 +21936924,0 +21939930,0 +21939930,0.16686783 +21939978,0.16686783 +21939978,0 +21962838,0 +21962838,0.14619795 +21962844,0.14619795 +21962844,0 +21962952,0 +21962952,0.33252867 +21963006,0.33252867 +21963006,0 +21968976,0 +21968976,0.03002414 +21969030,0.03002414 +21969030,0 +21978522,0 +21978522,0.24366325 +21978576,0.24366325 +21978576,0 +21978642,0 +21978642,0.02021726 +21978648,0.02021726 +21978648,0 +21978756,0 +21978756,0.1428787 +21978798,0.1428787 +21978798,0 +21980388,0 +21980388,0.14378395 +21980466,0.14378395 +21980466,0 +21984426,0 +21984426,0.22510561 +21984444,0.22510561 +21984444,0 +21985482,0 +21985482,0.28183464 +21985488,0.28183464 +21985488,0 +21985596,0 +21985596,0.065027158 +21985686,0.065027158 +21985686,0 +21994716,0 +21994716,0.13955944 +21994728,0.13955944 +21994728,0 +21997398,0 +21997398,0.07966204 +21997410,0.07966204 +21997410,0 +21998652,0 +21998652,0.12703681 +21998778,0.12703681 +21998778,0 +22000812,0 +22000812,0.18874472 +22000860,0.18874472 +22000860,0 +22000926,0 +22000926,0.18663247 +22000944,0.18663247 +22000944,0 +22001046,0 +22001046,0.14242607 +22001100,0.14242607 +22001100,0 +22001286,0 +22001286,0.20745323 +22001334,0.20745323 +22001334,0 +22004808,0 +22004808,0.0096560048 +22004814,0.0096560048 +22004814,0 +22004922,0 +22004922,0.16098371 +22004940,0.16098371 +22004940,0 +22005036,0 +22005036,0.23430899 +22005078,0.23430899 +22005078,0 +22005156,0 +22005156,0.21122511 +22005198,0.21122511 +22005198,0 +22005270,0 +22005270,0.12809294 +22005300,0.12809294 +22005300,0 +22005384,0 +22005384,0.052202776 +22005438,0.052202776 +22005438,0 +22005504,0 +22005504,0.12447194 +22005540,0.12447194 +22005540,0 +22005618,0 +22005618,0.0070911285 +22005624,0.0070911285 +22005624,0 +22005732,0 +22005732,0.073023537 +22005738,0.073023537 +22005738,0 +22009788,0 +22009788,0.32604104 +22009842,0.32604104 +22009842,0 +22010088,0 +22010088,0.29737477 +22010154,0.29737477 +22010154,0 +22010724,0 +22010724,0.19040435 +22010772,0.19040435 +22010772,0 +22024836,0 +22024836,0.36466506 +22024902,0.36466506 +22024902,0 +22025136,0 +22025136,0.39906457 +22025214,0.39906457 +22025214,0 +22025436,0 +22025436,0.39484007 +22025466,0.39484007 +22025466,0 +22025736,0 +22025736,0.40841883 +22025796,0.40841883 +22025796,0 +22026030,0 +22026030,0.25377188 +22026054,0.25377188 +22026054,0 +22031484,0 +22031484,0.056578153 +22031496,0.056578153 +22031496,0 +22031598,0 +22031598,0.15525045 +22031622,0.15525045 +22031622,0 +22033026,0 +22033026,0.13880507 +22033038,0.13880507 +22033038,0 +22033140,0 +22033140,0.076946288 +22033194,0.076946288 +22033194,0 +22033260,0 +22033260,0.20609535 +22033320,0.20609535 +22033320,0 +22033374,0 +22033374,0.14680145 +22033410,0.14680145 +22033410,0 +22033488,0 +22033488,0.20669885 +22033548,0.20669885 +22033548,0 +22056882,0 +22056882,0.26478576 +22057362,0.22631261 +22057362,0 +22057380,0 +22057380,0.22631261 +22057398,0.26478576 +22057398,0 +22058718,0 +22058718,0.20111648 +22058922,0.20111648 +22058922,0 +22059678,0 +22059678,0.016294508 +22059684,0.016294508 +22059684,0 +22061340,0 +22061340,0.11074231 +22061352,0.11074231 +22061352,0 +22061928,0 +22061928,0.27353651 +22062300,0.27353651 +22062300,0 +22068564,0 +22068564,0.19221485 +22068618,0.19221485 +22068618,0 +22068678,0 +22068678,0.048581774 +22068798,0.15902233 +22068798,0 +22068804,0 +22068804,0 +22068804,0.15902233 +22068804,0.048581774 +22068912,0 +22068912,0.068799034 +22068936,0.068799034 +22068936,0 +22069026,0 +22069026,0.024592637 +22069032,0.024592637 +22069032,0 +22069146,0 +22069146,0.038322269 +22069164,0.038322269 +22069164,0 +22069260,0 +22069260,0.21031986 +22069278,0.21031986 +22069278,0 +22069374,0 +22069374,0.20051298 +22069398,0.20051298 +22069398,0 +22071510,0 +22071510,0.17275196 +22071534,0.17275196 +22071534,0 +22071858,0 +22071858,0.11783343 +22071936,0.11783343 +22071936,0 +22083654,0 +22083654,0.28681352 +22083660,0.28681352 +22083660,0 +22095954,0 +22095954,0.059897405 +22095996,0.059897405 +22095996,0 +22103466,0 +22103466,0.22872661 +22103490,0.22872661 +22103490,0 +22103586,0 +22103586,0.1495172 +22103592,0.1495172 +22103592,0 +22103700,0 +22103700,0.33494267 +22103724,0.33494267 +22103724,0 +22103814,0 +22103814,0.20443573 +22103826,0.20443573 +22103826,0 +22103934,0 +22103934,0.044357272 +22103940,0.044357272 +22103940,0 +22104048,0 +22104048,0.053108027 +22104072,0.053108027 +22104072,0 +22104162,0 +22104162,0.03002414 +22104174,0.03002414 +22104174,0 +22104282,0 +22104282,0.1579662 +22104288,0.1579662 +22104288,0 +22104396,0 +22104396,0.19508147 +22104408,0.19508147 +22104408,0 +22104510,0 +22104510,0.17923959 +22104534,0.17923959 +22104534,0 +22114722,0 +22114722,0.81744116 +22115082,0.81744116 +22115082,0 +22142310,0 +22142310,0.052353651 +22142316,0.052353651 +22142316,0 +22143216,0 +22143216,0.073627037 +22143528,0.073627037 +22143528,0 +22143672,0 +22143672,0.29707302 +22143714,0.29707302 +22143714,0 +22143786,0 +22143786,0.2984309 +22143798,0.2984309 +22143798,0 +22145502,0 +22145502,0.16445383 +22145508,0.16445383 +22145508,0 +22147524,0 +22147524,0.27444176 +22147980,0.27444176 +22147980,0 +22148940,0 +22148940,0.11722993 +22148988,0.11722993 +22148988,0 +22151262,0 +22151262,0.17727821 +22151280,0.17727821 +22151280,0 +22156044,0 +22156044,0.21167773 +22156122,0.21167773 +22156122,0 +22157802,0 +22157802,0.14544357 +22157820,0.14544357 +22157820,0 +22158438,0 +22158438,0.32347616 +22158492,0.32347616 +22158492,0 +22158576,0 +22158576,0.27368739 +22158588,0.27368739 +22158588,0 +22158888,0 +22158888,0.20202173 +22158930,0.20202173 +22158930,0 +22159002,0 +22159002,0.070911285 +22159032,0.070911285 +22159032,0 +22161564,0 +22161564,0.22933011 +22161618,0.22933011 +22161618,0 +22163988,0 +22163988,0.25528063 +22164012,0.25528063 +22164012,0 +22164108,0 +22164108,0.02082076 +22164114,0.02082076 +22164114,0 +22164222,0 +22164222,0.19960772 +22164264,0.19960772 +22164264,0 +22164336,0 +22164336,0.0089016295 +22164342,0.0089016295 +22164342,0 +22175820,0 +22175820,0.13126132 +22175862,0.13126132 +22175862,0 +22175934,0 +22175934,0.017501509 +22175940,0.017501509 +22175940,0 +22176048,0 +22176048,0.07936029 +22176054,0.07936029 +22176054,0 +22178070,0 +22178070,0.0073928787 +22178136,0.0073928787 +22178136,0 +22184526,0 +22184526,0.14499095 +22184556,0.14499095 +22184556,0 +22187268,0 +22187268,0.68693422 +22187448,0.68693422 +22187448,0 +22189620,0 +22189620,0.2039831 +22189632,0.2039831 +22189632,0 +22189734,0 +22189734,0.20775498 +22189800,0.20775498 +22189800,0 +22190142,0 +22190142,0.33524442 +22190208,0.33524442 +22190208,0 +22198710,0 +22198710,0.16641521 +22198722,0.16641521 +22198722,0 +22198824,0 +22198824,0.0078455039 +22198866,0.0078455039 +22198866,0 +22198944,0 +22198944,0.13065782 +22198974,0.13065782 +22198974,0 +22199058,0 +22199058,0.32030779 +22199064,0.32030779 +22199064,0 +22199172,0 +22199172,0.17863609 +22199190,0.17863609 +22199190,0 +22199292,0 +22199292,0.063971032 +22199358,0.063971032 +22199358,0 +22200798,0 +22200798,0.10440555 +22200804,0.10440555 +22200804,0 +22200912,0 +22200912,0.061858781 +22200918,0.061858781 +22200918,0 +22222806,0 +22222806,0.54707302 +22223130,0.54707302 +22223130,0 +22230180,0 +22230180,0.092184671 +22230204,0.092184671 +22230204,0 +22232250,0 +22232250,0.28183464 +22232256,0.28183464 +22232256,0 +22232364,0 +22232364,0.18316234 +22232406,0.18316234 +22232406,0 +22232478,0 +22232478,0.027157514 +22232484,0.027157514 +22232484,0 +22232598,0 +22232598,0.061255281 +22232604,0.061255281 +22232604,0 +22237458,0 +22237458,0.054767652 +22237476,0.054767652 +22237476,0 +22249872,0 +22249872,0.19523235 +22249986,0.12703681 +22249986,0 +22250010,0 +22250010,0.12703681 +22250058,0.19523235 +22250058,0 +22252680,0 +22252680,0.0073928787 +22252692,0.0073928787 +22252692,0 +22252794,0 +22252794,0.16038021 +22252806,0.16038021 +22252806,0 +22257024,0 +22257024,0.27610139 +22257036,0.27610139 +22257036,0 +22257138,0 +22257138,0.12658419 +22257144,0.12658419 +22257144,0 +22267296,0 +22267296,0.16415208 +22267320,0.16415208 +22267320,0 +22267410,0 +22267410,0.33283042 +22267476,0.33283042 +22267476,0 +22267992,0 +22267992,0.15464695 +22268154,0.15464695 +22268154,0 +22269660,0 +22269660,0.12235969 +22269696,0.12235969 +22269696,0 +22274070,0 +22274070,0.21122511 +22274184,0.20473748 +22274184,0 +22274190,0 +22274190,0 +22274190,0.21122511 +22274190,0.20473748 +22274586,0 +22274586,0.21243211 +22274664,0.21243211 +22274664,0 +22277994,0 +22277994,0.041943271 +22278000,0.041943271 +22278000,0 +22278912,0 +22278912,0.11421243 +22278930,0.11421243 +22278930,0 +22281534,0 +22281534,0.02942064 +22281576,0.02942064 +22281576,0 +22287522,0 +22287522,0.22570911 +22287564,0.22570911 +22287564,0 +22314618,0 +22314618,0.26282438 +22314744,0.26282438 +22314744,0 +22315200,0 +22315200,0.20503923 +22315272,0.20503923 +22315272,0 +22315788,0 +22315788,0.16671696 +22315848,0.16671696 +22315848,0 +22316376,0 +22316376,0.28636089 +22316460,0.28636089 +22316460,0 +22316964,0 +22316964,0.18919734 +22317078,0.18919734 +22317078,0 +22318110,0 +22318110,0.25890163 +22318116,0.25890163 +22318116,0 +22321878,0 +22321878,0.25226313 +22321992,0.0070911285 +22321992,0 +22322022,0 +22322022,0.0070911285 +22322046,0.25226313 +22322046,0 +22322772,0 +22322772,0.16354858 +22322838,0.16354858 +22322838,0 +22323546,0 +22323546,0.35078455 +22323606,0.35078455 +22323606,0 +22325838,0 +22325838,0.18934822 +22325874,0.18934822 +22325874,0 +22325952,0 +22325952,0.00030175015 +22325958,0.00030175015 +22325958,0 +22327542,0 +22327542,0.043452022 +22327548,0.043452022 +22327548,0 +22327662,0 +22327662,0.15328908 +22327728,0.15328908 +22327728,0 +22327776,0 +22327776,0.20594448 +22327824,0.20594448 +22327824,0 +22333614,0 +22333614,0.10304768 +22333632,0.10304768 +22333632,0 +22333734,0 +22333734,0.17939046 +22333842,0.17939046 +22333842,0 +22333848,0 +22333848,0.084942667 +22333890,0.084942667 +22333890,0 +22333962,0 +22333962,0.097012674 +22333974,0.097012674 +22333974,0 +22334562,0 +22334562,0.073476162 +22334574,0.073476162 +22334574,0 +22334682,0 +22334682,0.18316234 +22334742,0.18316234 +22334742,0 +22334796,0 +22334796,0.246379 +22334808,0.246379 +22334808,0 +22334910,0 +22334910,0.13820157 +22334940,0.13820157 +22334940,0 +22341228,0 +22341228,0.047676524 +22341234,0.047676524 +22341234,0 +22344192,0 +22344192,0.25452625 +22344228,0.25452625 +22344228,0 +22344660,0 +22344660,0.16339771 +22344666,0.16339771 +22344666,0 +22344780,0 +22344780,0.14272782 +22344786,0.14272782 +22344786,0 +22344894,0 +22344894,0.098219674 +22344942,0.098219674 +22344942,0 +22345008,0 +22345008,0.066234158 +22345050,0.066234158 +22345050,0 +22346958,0 +22346958,0.059595655 +22346964,0.059595655 +22346964,0 +22348566,0 +22348566,0.17094146 +22348578,0.17094146 +22348578,0 +22348686,0 +22348686,0 +22348686,0.20413398 +22348686,0.1458962 +22348692,0 +22348692,0 +22348692,0.20413398 +22348692,0.1458962 +22348800,0 +22348800,0.19900422 +22348806,0.19900422 +22348806,0 +22348914,0 +22348914,0.011013881 +22348920,0.011013881 +22348920,0 +22349034,0 +22349034,0.21967411 +22349046,0.21967411 +22349046,0 +22357560,0 +22357560,0.11225106 +22357602,0.12688594 +22357602,0 +22357632,0 +22357632,0.12688594 +22357734,0.11225106 +22357734,0 +22360320,0 +22360320,0.073023537 +22360326,0.073023537 +22360326,0 +22360434,0 +22360434,0.23717562 +22360470,0.23717562 +22360470,0 +22364610,0 +22364610,0.26584188 +22364652,0.26584188 +22364652,0 +22366590,0 +22366590,0.15781533 +22366638,0.15781533 +22366638,0 +22395636,0 +22395636,0.076191913 +22395642,0.076191913 +22395642,0 +22399878,0 +22399878,0.11104406 +22399914,0.11104406 +22399914,0 +22399992,0 +22399992,0.18859384 +22400070,0.18859384 +22400070,0 +22403580,0 +22403580,0.1967411 +22403964,0.1967411 +22403964,0 +22405170,0 +22405170,0.21650573 +22405230,0.21650573 +22405230,0 +22407648,0 +22407648,0.32302354 +22407684,0.32302354 +22407684,0 +22407762,0 +22407762,0.053108027 +22407768,0.053108027 +22407768,0 +22407876,0 +22407876,0.072269161 +22407882,0.072269161 +22407882,0 +22407996,0 +22407996,0.20715148 +22408074,0.20715148 +22408074,0 +22411668,0 +22411668,0.18980084 +22411674,0.18980084 +22411674,0 +22419924,0 +22419924,0.17275196 +22420050,0.17275196 +22420050,0 +22429536,0 +22429536,0.017350634 +22429560,0.017350634 +22429560,0 +22429650,0 +22429650,0.16550996 +22429656,0.16550996 +22429656,0 +22429764,0 +22429764,0.048581774 +22429788,0.048581774 +22429788,0 +22430898,0 +22430898,0.13473144 +22430910,0.13473144 +22430910,0 +22431018,0 +22431018,0.016143633 +22431066,0.016143633 +22431066,0 +22433802,0 +22433802,0.13095957 +22433808,0.13095957 +22433808,0 +22444554,0 +22444554,0.48264937 +22444584,0.48264937 +22444584,0 +22449468,0 +22449468,0.34037417 +22449564,0.34037417 +22449564,0 +22449768,0 +22449768,0.1507242 +22449816,0.1507242 +22449816,0 +22452288,0 +22452288,0.092033796 +22452300,0.092033796 +22452300,0 +22454484,0 +22454484,0.029873265 +22454490,0.029873265 +22454490,0 +22454604,0 +22454604,0.22767049 +22454616,0.22767049 +22454616,0 +22454718,0 +22454718,0.13367532 +22454826,0.13367532 +22454826,0 +22455198,0 +22455198,0.32604104 +22455216,0.32604104 +22455216,0 +22455282,0 +22455282,0.076946288 +22455318,0.076946288 +22455318,0 +22463154,0 +22463154,0.10938443 +22463268,0.10938443 +22463268,0 +22486338,0 +22486338,0.23974049 +22486380,0.23974049 +22486380,0 +22490820,0 +22490820,0.23792999 +22490838,0.23792999 +22490838,0 +22491966,0 +22491966,0.36738081 +22492902,0.36738081 +22492902,0 +22498584,0 +22498584,0.0081472541 +22498602,0.0081472541 +22498602,0 +22503102,0 +22503102,0.046620398 +22503108,0.046620398 +22503108,0 +22505670,0 +22505670,0.0076946288 +22505688,0.0076946288 +22505688,0 +22505790,0 +22505790,0.10681955 +22505796,0.10681955 +22505796,0 +22510716,0 +22510716,0.1573627 +22510830,0.23958962 +22510830,0 +22510896,0 +22510896,0.1573627 +22510902,0.23958962 +22510902,0 +22511262,0 +22511262,0.22148461 +22511382,0.22148461 +22511382,0 +22511850,0 +22511850,0.21228123 +22511910,0.21228123 +22511910,0 +22512438,0 +22512438,0.19809897 +22512552,0.19809897 +22512552,0 +22513026,0 +22513026,0.18663247 +22513074,0.18663247 +22513074,0 +22514058,0 +22514058,0.17109234 +22514088,0.17109234 +22514088,0 +22514178,0 +22514178,0.19704285 +22514196,0.19704285 +22514196,0 +22522380,0 +22522380,0.28998189 +22522428,0.28998189 +22522428,0 +22522500,0 +22522500,0.27112251 +22522512,0.27112251 +22522512,0 +22528242,0 +22528242,0.0090525045 +22528248,0.0090525045 +22528248,0 +22538022,0 +22538022,0.20730235 +22538076,0.20730235 +22538076,0 +22538286,0 +22538286,0.0052806276 +22538292,0.0052806276 +22538292,0 +22538400,0 +22538400,0.093693422 +22538418,0.093693422 +22538418,0 +22538514,0 +22538514,0.11225106 +22538520,0.11225106 +22538520,0 +22538634,0 +22538634,0.056729028 +22538640,0.056729028 +22538640,0 +22538748,0 +22538748,0.17697646 +22538778,0.17697646 +22538778,0 +22538862,0 +22538862,0.21001811 +22538886,0.21001811 +22538886,0 +22538982,0 +22538982,0.18663247 +22538988,0.18663247 +22538988,0 +22539096,0 +22539096,0.2003621 +22539108,0.2003621 +22539108,0 +22539210,0 +22539210,0.26010863 +22539252,0.018557634 +22539252,0 +22539288,0 +22539288,0.018557634 +22539306,0.26010863 +22539306,0 +22542564,0 +22542564,0.0067893784 +22542576,0.0067893784 +22542576,0 +22575870,0 +22575870,0.0054315027 +22575876,0.0054315027 +22575876,0 +22577046,0 +22577046,0.016747133 +22577094,0.016747133 +22577094,0 +22580280,0 +22580280,0.014031382 +22580340,0.014031382 +22580340,0 +22580394,0 +22580394,0.048129149 +22580406,0.048129149 +22580406,0 +22583100,0 +22583100,0.26267351 +22583148,0.26267351 +22583148,0 +22593342,0 +22593342,0.12613156 +22593402,0.12613156 +22593402,0 +22606128,0 +22606128,0.20202173 +22606134,0.20202173 +22606134,0 +22606242,0 +22606242,0.03952927 +22606248,0.03952927 +22606248,0 +22606356,0 +22606356,0.20956548 +22606362,0.20956548 +22606362,0 +22609074,0 +22609074,0.11602293 +22609104,0.11602293 +22609104,0 +22610754,0 +22610754,0.2506035 +22610838,0.2506035 +22610838,0 +22612932,0 +22612932,0.13986119 +22612950,0.13986119 +22612950,0 +22613052,0 +22613052,0.25392275 +22613076,0.25392275 +22613076,0 +22613166,0 +22613166,0.15887145 +22613184,0.15887145 +22613184,0 +22623798,0 +22623798,0.27066989 +22623804,0.27066989 +22623804,0 +22624218,0 +22624218,0.1471032 +22624254,0.1471032 +22624254,0 +22624338,0 +22624338,0.084490042 +22624368,0.084490042 +22624368,0 +22637148,0 +22637148,0.0087507544 +22637262,0.2045866 +22637262,0 +22637286,0 +22637286,0.0087507544 +22637340,0.2045866 +22637340,0 +22662624,0 +22662624,0.40238383 +22663008,0.40238383 +22663008,0 +22663992,0 +22663992,0.25105613 +22664070,0.25105613 +22664070,0 +22664454,0 +22664454,0.38337357 +22664982,0.38337357 +22664982,0 +22666764,0 +22666764,0.14665057 +22666824,0.14665057 +22666824,0 +22667904,0 +22667904,0.16053108 +22667976,0.16053108 +22667976,0 +22668018,0 +22668018,0.3086904 +22668048,0.3086904 +22668048,0 +22669236,0 +22669236,0.34882317 +22669248,0.34882317 +22669248,0 +22669356,0 +22669356,0.33237779 +22669416,0.33237779 +22669416,0 +22669620,0 +22669620,0.058237779 +22669656,0.058237779 +22669656,0 +22673010,0 +22673010,0.15947495 +22673076,0.15947495 +22673076,0 +22673430,0 +22673430,0.16188896 +22673448,0.16188896 +22673448,0 +22673544,0 +22673544,0.24743512 +22673556,0.24743512 +22673556,0 +22673664,0 +22673664,0.29616777 +22673760,0.29616777 +22673760,0 +22674258,0 +22674258,0.37582981 +22674282,0.37582981 +22674282,0 +22674648,0 +22674648,0.18316234 +22674654,0.18316234 +22674654,0 +22674762,0 +22674762,0.28485214 +22674774,0.28485214 +22674774,0 +22674882,0 +22674882,0.32709716 +22674906,0.32709716 +22674906,0 +22677636,0 +22677636,0.14755582 +22677660,0.14755582 +22677660,0 +22683576,0 +22683576,0.15706095 +22683654,0.15706095 +22683654,0 +22684566,0 +22684566,0.10455643 +22684608,0.10455643 +22684608,0 +22684686,0 +22684686,0.18587809 +22684710,0.18587809 +22684710,0 +22685868,0 +22685868,0.34474955 +22685946,0.34474955 +22685946,0 +22685982,0 +22685982,0.20488835 +22685988,0.20488835 +22685988,0 +22686096,0 +22686096,0.085244418 +22686192,0.085244418 +22686192,0 +22688586,0 +22688586,0.10455643 +22688616,0.10455643 +22688616,0 +22689528,0 +22689528,0.12945081 +22689558,0.12945081 +22689558,0 +22701366,0 +22701366,0.38895594 +22701426,0.38895594 +22701426,0 +22701990,0 +22701990,0.00030175015 +22701996,0.00030175015 +22701996,0 +22702104,0 +22702104,0.1022933 +22702110,0.1022933 +22702110,0 +22702218,0 +22702218,0.34248642 +22702266,0.34248642 +22702266,0 +22702338,0 +22702338,0.062311406 +22702344,0.062311406 +22702344,0 +22706442,0 +22706442,0.19659022 +22706508,0.19659022 +22706508,0 +22707030,0 +22707030,0.20971635 +22707096,0.20971635 +22707096,0 +22707120,0 +22707120,0.01071213 +22707126,0.01071213 +22707126,0 +22707618,0 +22707618,0.19870247 +22707696,0.19870247 +22707696,0 +22708206,0 +22708206,0.1949306 +22708332,0.1949306 +22708332,0 +22708416,0 +22708416,0.092637296 +22708422,0.092637296 +22708422,0 +22708794,0 +22708794,0.22359686 +22708818,0.26222088 +22708818,0 +22708860,0 +22708860,0.22359686 +22709166,0.26222088 +22709166,0 +22709376,0 +22709376,0.22314424 +22709454,0.22314424 +22709454,0 +22710534,0 +22710534,0.11210018 +22710558,0.11210018 +22710558,0 +22720794,0 +22720794,0.047827399 +22720812,0.047827399 +22720812,0 +22724748,0 +22724748,0.43783947 +22725156,0.43783947 +22725156,0 +22725738,0 +22725738,0.11119493 +22725798,0.11119493 +22725798,0 +22726584,0 +22726584,0.27821364 +22727208,0.27821364 +22727208,0 +22747020,0 +22747020,0.31246228 +22747218,0.31246228 +22747218,0 +22748850,0 +22748850,0.23068799 +22749300,0.23068799 +22749300,0 +22754304,0 +22754304,0.60018105 +22754766,0.60018105 +22754766,0 +22756284,0 +22756284,0.24366325 +22756392,0.24366325 +22756392,0 +22756398,0 +22756398,0.089318045 +22756416,0.089318045 +22756416,0 +22756518,0 +22756518,0.11496681 +22756524,0.11496681 +22756524,0 +22756632,0 +22756632,0.0073928787 +22756854,0.0073928787 +22756854,0 +22758030,0 +22758030,0.16671696 +22758144,0.16671696 +22758144,0 +22758300,0 +22758300,0.31910078 +22758318,0.31910078 +22758318,0 +22758414,0 +22758414,0.067139409 +22758444,0.067139409 +22758444,0 +22758528,0 +22758528,0.14318045 +22758558,0.14318045 +22758558,0 +22758618,0 +22758618,0.20911285 +22758642,0.31729028 +22758642,0 +22758678,0 +22758678,0.31729028 +22758690,0.20911285 +22758690,0 +22758762,0 +22758762,0.08086904 +22758798,0.08086904 +22758798,0 +22758876,0 +22758876,0.14680145 +22758906,0.14680145 +22758906,0 +22759206,0 +22759206,0.20609535 +22759296,0.20609535 +22759296,0 +22759794,0 +22759794,0.1937236 +22759872,0.1937236 +22759872,0 +22767372,0 +22767372,0.21333736 +22767408,0.21333736 +22767408,0 +22767486,0 +22767486,0.18165359 +22767552,0.18165359 +22767552,0 +22767600,0 +22767600,0.35606518 +22767624,0.35606518 +22767624,0 +22767720,0 +22767720,0.23159324 +22767726,0.23159324 +22767726,0 +22769148,0 +22769148,0.073476162 +22769154,0.073476162 +22769154,0 +22769262,0 +22769262,0.18286059 +22769310,0.18286059 +22769310,0 +22769376,0 +22769376,0.22767049 +22769394,0.22767049 +22769394,0 +22773414,0 +22773414,0.13578757 +22773438,0.13578757 +22773438,0 +22773528,0 +22773528,0.027308389 +22773534,0.027308389 +22773534,0 +22773642,0 +22773642,0.058237779 +22773672,0.058237779 +22773672,0 +22775928,0 +22775928,0.029571515 +22775934,0.029571515 +22775934,0 +22777860,0 +22777860,0.11722993 +22777944,0.11722993 +22777944,0 +22777974,0 +22777974,0.28696439 +22777998,0.28696439 +22777998,0 +22778370,0 +22778370,0.071363911 +22778418,0.071363911 +22778418,0 +22778484,0 +22778484,0.1483102 +22778508,0.1483102 +22778508,0 +22780710,0 +22780710,0.12205794 +22780722,0.12205794 +22780722,0 +22780824,0 +22780824,0.22933011 +22780920,0.22933011 +22780920,0 +22785522,0 +22785522,0.17229934 +22785576,0.17229934 +22785576,0 +22785636,0 +22785636,0.034248642 +22785702,0.034248642 +22785702,0 +22785756,0 +22785756,0.2088111 +22785816,0.2088111 +22785816,0 +22785870,0 +22785870,0.33313217 +22785906,0.33313217 +22785906,0 +22785984,0 +22785984,0.0078455039 +22786056,0.0078455039 +22786056,0 +22786104,0 +22786104,0.17169584 +22786110,0.17169584 +22786110,0 +22786218,0 +22786218,0.31291491 +22786266,0.31291491 +22786266,0 +22786332,0 +22786332,0.093542547 +22786338,0.093542547 +22786338,0 +22786452,0 +22786452,0.21650573 +22786464,0.21650573 +22786464,0 +22795050,0 +22795050,0.056125528 +22795116,0.056125528 +22795116,0 +22799178,0 +22799178,0.21544961 +22799244,0.21544961 +22799244,0 +22799298,0 +22799298,0.17260109 +22799316,0.17260109 +22799316,0 +22800426,0 +22800426,0.13820157 +22800468,0.13820157 +22800468,0 +22802022,0 +22802022,0.16973446 +22802034,0.16973446 +22802034,0 +22807740,0 +22807740,0.24728425 +22807800,0.24728425 +22807800,0 +22828710,0 +22828710,0.26327701 +22828734,0.26327701 +22828734,0 +22828830,0 +22828830,0.070609535 +22828848,0.070609535 +22828848,0 +22828944,0 +22828944,0 +22828944,0.39016295 +22828944,0.14272782 +22828950,0 +22828950,0.39016295 +22828998,0.14272782 +22828998,0 +22829058,0 +22829058,0.20111648 +22829106,0.20111648 +22829106,0 +22833624,0 +22833624,0.20715148 +22833714,0.20715148 +22833714,0 +22833738,0 +22833738,0.33418829 +22833798,0.33418829 +22833798,0 +22833852,0 +22833852,0.15630658 +22833936,0.15630658 +22833936,0 +22834872,0 +22834872,0.17094146 +22834938,0.17094146 +22834938,0 +22834992,0 +22834992,0.21560048 +22835010,0.21560048 +22835010,0 +22835964,0 +22835964,0.21243211 +22836060,0.21243211 +22836060,0 +22837488,0 +22837488,0.27097164 +22838250,0.27097164 +22838250,0 +22839696,0 +22839696,0.18436934 +22839726,0.18436934 +22839726,0 +22839810,0 +22839810,0.10606518 +22839888,0.10606518 +22839888,0 +22842174,0 +22842174,0.11828606 +22842186,0.11828606 +22842186,0 +22843212,0 +22843212,0.30009053 +22843224,0.30009053 +22843224,0 +22846038,0 +22846038,0.21137598 +22846056,0.21137598 +22846056,0 +22851180,0 +22851180,0.089318045 +22851258,0.089318045 +22851258,0 +22852674,0 +22852674,0.084339167 +22852680,0.084339167 +22852680,0 +22852794,0 +22852794,0.20247435 +22852812,0.20247435 +22852812,0 +22852908,0 +22852908,0.033343392 +22852962,0.033343392 +22852962,0 +22853022,0 +22853022,0.02972239 +22853028,0.02972239 +22853028,0 +22854576,0 +22854576,0.21228123 +22854612,0.21228123 +22854612,0 +22870962,0 +22870962,0.17003621 +22871058,0.17003621 +22871058,0 +22871220,0 +22871220,0.074230537 +22871226,0.074230537 +22871226,0 +22871340,0 +22871340,0.071363911 +22871376,0.071363911 +22871376,0 +22872012,0 +22872012,0.2063971 +22872036,0.2063971 +22872036,0 +22876134,0 +22876134,0.29390465 +22876146,0.29390465 +22876146,0 +22876248,0 +22876248,0.018105009 +22876290,0.018105009 +22876290,0 +22876362,0 +22876362,0.12718769 +22876386,0.12718769 +22876386,0 +22876482,0 +22876482,0.30356065 +22876500,0.12024744 +22876500,0 +22876506,0 +22876506,0.30356065 +22876572,0.12024744 +22876572,0 +22876596,0 +22876596,0.17923959 +22876620,0 +22876620,0 +22876620,0.17260109 +22876620,0.17923959 +22876632,0.17260109 +22876632,0 +22876710,0 +22876710,0.0030175015 +22876716,0.0030175015 +22876716,0 +22876734,0 +22876734,0.0085998793 +22876740,0.0085998793 +22876740,0 +22876830,0 +22876830,0.29315027 +22876842,0.29315027 +22876842,0 +22876848,0 +22876848,0.16400121 +22876884,0.16400121 +22876884,0 +22876968,0 +22876968,0.004073627 +22876974,0.004073627 +22876974,0 +22877082,0 +22877082,0.13624019 +22877088,0.13624019 +22877088,0 +22877196,0 +22877196,0.34701267 +22877256,0.34701267 +22877256,0 +22877376,0 +22877376,0.10138805 +22877466,0.10138805 +22877466,0 +22877496,0 +22877496,0.081774291 +22877514,0.081774291 +22877514,0 +22879980,0 +22879980,0.15027158 +22880022,0.15027158 +22880022,0 +22880616,0 +22880616,0.30733253 +22880628,0.30733253 +22880628,0 +22882200,0 +22882200,0.44402535 +22882470,0.44402535 +22882470,0 +22882848,0 +22882848,0.025045263 +22882854,0.025045263 +22882854,0 +22888458,0 +22888458,0.0073928787 +22888500,0.0073928787 +22888500,0 +22889844,0 +22889844,0 +22889850,0 +22889850,0 +22892664,0 +22892664,0.26403138 +22892742,0.26403138 +22892742,0 +22892778,0 +22892778,0.095353048 +22892790,0.095353048 +22892790,0 +22892898,0 +22892898,0.21122511 +22892904,0.21122511 +22892904,0 +22893012,0 +22893012,0.13865419 +22893030,0.13865419 +22893030,0 +22893126,0 +22893126,0.1943271 +22893144,0.1943271 +22893144,0 +22915590,0 +22915590,0.055371153 +22915638,0.055371153 +22915638,0 +22915680,0 +22915680,0.076342788 +22915692,0.076342788 +22915692,0 +22915704,0 +22915704,0.022631261 +22915710,0.022631261 +22915710,0 +22923516,0 +22923516,0.24049487 +22923534,0.24049487 +22923534,0 +22925556,0 +22925556,0.21831623 +22925592,0.21831623 +22925592,0 +22931322,0 +22931322,0.29933615 +22931406,0.29933615 +22931406,0 +22935780,0 +22935780,0.32634279 +22935852,0.32634279 +22935852,0 +22938594,0 +22938594,0.13654194 +22938624,0.13654194 +22938624,0 +22944306,0 +22944306,0.26901026 +22944414,0.26901026 +22944414,0 +22944420,0 +22944420,0.31623416 +22944450,0.31623416 +22944450,0 +22944504,0 +22944504,0.33283042 +22944582,0.33283042 +22944582,0 +22944618,0 +22944618,0.046771273 +22944624,0.046771273 +22944624,0 +22945050,0 +22945050,0.0998793 +22945098,0.0998793 +22945098,0 +22945164,0 +22945164,0.21575136 +22945218,0.21575136 +22945218,0 +22945284,0 +22945284,0.11496681 +22945296,0.11496681 +22945296,0 +22945398,0 +22945398,0.072872661 +22945404,0.072872661 +22945404,0 +22953450,0 +22953450,0.28802052 +22953486,0.28802052 +22953486,0 +22957554,0 +22957554,0.10184068 +22957656,0.10184068 +22957656,0 +22961226,0 +22961226,0.1949306 +22961256,0.1949306 +22961256,0 +22962480,0 +22962480,0.33192517 +22962930,0.33192517 +22962930,0 +22963350,0 +22963350,0.2954134 +22963386,0.2954134 +22963386,0 +22963830,0 +22963830,0.13307182 +22963848,0.13307182 +22963848,0 +22963986,0 +22963986,0.46439348 +22964532,0.46439348 +22964532,0 +22972686,0 +22972686,0.025648763 +22972692,0.025648763 +22972692,0 +22974762,0 +22974762,0.32770066 +22974792,0.32770066 +22974792,0 +22977426,0 +22977426,0.20926373 +22977474,0.20926373 +22977474,0 +22980684,0 +22980684,0.0090525045 +22980690,0.0090525045 +22980690,0 +22984692,0 +22984692,0.36421243 +22985076,0.36421243 +22985076,0 +22985946,0 +22985946,0.20006035 +22985982,0.20006035 +22985982,0 +22996002,0 +22996002,0.13005432 +22996116,0.13005432 +22996116,0 +23008152,0 +23008152,0.32015691 +23008194,0.32015691 +23008194,0 +23008266,0 +23008266,0.16143633 +23008326,0.16143633 +23008326,0 +23008380,0 +23008380,0.34127942 +23008398,0.34127942 +23008398,0 +23008506,0 +23008506,0.14740495 +23008536,0.14740495 +23008536,0 +23010900,0 +23010900,0.43829209 +23011536,0.43829209 +23011536,0 +23011782,0 +23011782,0.13352444 +23011800,0.13352444 +23011800,0 +23011896,0 +23011896,0.065479783 +23011914,0.065479783 +23011914,0 +23012016,0 +23012016,0.15298733 +23012022,0.15298733 +23012022,0 +23012130,0 +23012130,0.0063367532 +23012136,0.0063367532 +23012136,0 +23012322,0 +23012322,0.19960772 +23012334,0.31050091 +23012334,0 +23012340,0 +23012340,0.31050091 +23012346,0.19960772 +23012346,0 +23012448,0 +23012448,0.25075438 +23012484,0.25075438 +23012484,0 +23012568,0 +23012568,0.051750151 +23012574,0.051750151 +23012574,0 +23012682,0 +23012682,0.25573325 +23012790,0.25573325 +23012790,0 +23013270,0 +23013270,0.31306578 +23013906,0.31306578 +23013906,0 +23015946,0 +23015946,0.20006035 +23015976,0.20006035 +23015976,0 +23016822,0 +23016822,0.42773084 +23016828,0.42773084 +23016828,0 +23017122,0 +23017122,0.17984309 +23017242,0.17984309 +23017242,0 +23021280,0 +23021280,0.26357876 +23021358,0.26357876 +23021358,0 +23021580,0 +23021580,0.40208208 +23021652,0.40208208 +23021652,0 +23022300,0 +23022300,0.052504526 +23022306,0.052504526 +23022306,0 +23022414,0 +23022414,0.21197948 +23022444,0.21197948 +23022444,0 +23024220,0 +23024220,0.42576946 +23024304,0.42576946 +23024304,0 +23026848,0 +23026848,0.30838865 +23026908,0.30838865 +23026908,0 +23027142,0 +23027142,0.25512975 +23027184,0.25512975 +23027184,0 +23031300,0 +23031300,0.24683162 +23031324,0.24683162 +23031324,0 +23031600,0 +23031600,0.48974049 +23031612,0.48974049 +23031612,0 +23031912,0 +23031912,0.058690404 +23031996,0.058690404 +23031996,0 +23032032,0 +23032032,0.16098371 +23032098,0.16098371 +23032098,0 +23033130,0 +23033130,0.1901026 +23033136,0.1901026 +23033136,0 +23036112,0 +23036112,0.076191913 +23036118,0.076191913 +23036118,0 +23036232,0 +23036232,0.2936029 +23036370,0.2936029 +23036370,0 +23036730,0 +23036730,0.08946892 +23036754,0.08946892 +23036754,0 +23036850,0 +23036850,0.23928787 +23036892,0.23928787 +23036892,0 +23043132,0 +23043132,0.19161135 +23043216,0.19161135 +23043216,0 +23044926,0 +23044926,0.14514182 +23044944,0.14514182 +23044944,0 +23047434,0 +23047434,0.14936632 +23047446,0.14936632 +23047446,0 +23048160,0 +23048160,0.19100785 +23048226,0.19100785 +23048226,0 +23052090,0 +23052090,0.17863609 +23052150,0.17863609 +23052150,0 +23052678,0 +23052678,0.26629451 +23052744,0.26629451 +23052744,0 +23053266,0 +23053266,0.19930597 +23053332,0.19930597 +23053332,0 +23053848,0 +23053848,0.23943874 +23053920,0.23943874 +23053920,0 +23054922,0 +23054922,0.12220881 +23055006,0.12220881 +23055006,0 +23055036,0 +23055036,0.053258902 +23055072,0.053258902 +23055072,0 +23055150,0 +23055150,0.0082981291 +23055162,0.0082981291 +23055162,0 +23056686,0 +23056686,0.0057332529 +23056698,0.0057332529 +23056698,0 +23057520,0 +23057520,0.13005432 +23057526,0.13005432 +23057526,0 +23057634,0 +23057634,0.0076946288 +23057640,0.0076946288 +23057640,0 +23060766,0 +23060766,0.18150272 +23060772,0.18150272 +23060772,0 +23060880,0 +23060880,0.37386844 +23060898,0.37386844 +23060898,0 +23088912,0 +23088912,0.22902836 +23088972,0.22902836 +23088972,0 +23098920,0 +23098920,0.32513579 +23098944,0.32513579 +23098944,0 +23101506,0 +23101506,0.094900422 +23101518,0.094900422 +23101518,0 +23103684,0 +23103684,0.088714544 +23103690,0.088714544 +23103690,0 +23104434,0 +23104434,0.06925166 +23104440,0.06925166 +23104440,0 +23104554,0 +23104554,0.0058841279 +23104566,0.0058841279 +23104566,0 +23106678,0 +23106678,0.496379 +23106888,0.496379 +23106888,0 +23115480,0 +23115480,0.19659022 +23115552,0.19659022 +23115552,0 +23115594,0 +23115594,0.050090525 +23115600,0.050090525 +23115600,0 +23127360,0 +23127360,0.10093543 +23127474,0.10093543 +23127474,0 +23131404,0 +23131404,0.051448401 +23131440,0.051448401 +23131440,0 +23131524,0 +23131524,0.022782136 +23131530,0.022782136 +23131530,0 +23131890,0 +23131890,0.083283042 +23131896,0.083283042 +23131896,0 +23132004,0 +23132004,0.25045263 +23132064,0.25045263 +23132064,0 +23135982,0 +23135982,0.29767652 +23135994,0.29767652 +23135994,0 +23136096,0 +23136096,0.14001207 +23136102,0.14001207 +23136102,0 +23136216,0 +23136216,0.0072420036 +23136252,0.0072420036 +23136252,0 +23137998,0 +23137998,0.18346409 +23138022,0.18346409 +23138022,0 +23138118,0 +23138118,0.097917924 +23138184,0.097917924 +23138184,0 +23138232,0 +23138232,0.24305975 +23138244,0.24305975 +23138244,0 +23138346,0 +23138346,0.1477067 +23138370,0.1477067 +23138370,0 +23139072,0 +23139072,0.11255281 +23139108,0.11255281 +23139108,0 +23141034,0 +23141034,0.01901026 +23141046,0.01901026 +23141046,0 +23141148,0 +23141148,0.01901026 +23141244,0.01901026 +23141244,0 +23145894,0 +23145894,0.1404647 +23145912,0.1404647 +23145912,0 +23146008,0 +23146008,0.00090525045 +23146014,0.00090525045 +23146014,0 +23146140,0 +23146140,0.12386844 +23146170,0.12386844 +23146170,0 +23146182,0 +23146182,0.33705492 +23146194,0.33705492 +23146194,0 +23146296,0 +23146296,0.043602897 +23146326,0.043602897 +23146326,0 +23146410,0 +23146410,0.076644538 +23146470,0.076644538 +23146470,0 +23146530,0 +23146530,0.085697043 +23146536,0.085697043 +23146536,0 +23146644,0 +23146644,0.17245021 +23146758,0.085847918 +23146758,0 +23146764,0 +23146764,0 +23146764,0.17245021 +23146764,0.085847918 +23146872,0 +23146872,0.11858781 +23146908,0.11858781 +23146908,0 +23146992,0 +23146992,0.10742305 +23146998,0.10742305 +23146998,0 +23152998,0 +23152998,0.16762221 +23153004,0.16762221 +23153004,0 +23153112,0 +23153112,0.0072420036 +23153172,0.0072420036 +23153172,0 +23165664,0 +23165664,0.11345806 +23165754,0.11345806 +23165754,0 +23165784,0 +23165784,0.058841279 +23165862,0.058841279 +23165862,0 +23175768,0 +23175768,0.18014484 +23175858,0.18014484 +23175858,0 +23178414,0 +23178414,0.10425468 +23178420,0.10425468 +23178420,0 +23178468,0 +23178468,0.14197345 +23178618,0.14197345 +23178618,0 +23180556,0 +23180556,0.42969221 +23180994,0.42969221 +23180994,0 +23181858,0 +23181858,0.21348823 +23181870,0.21348823 +23181870,0 +23181972,0 +23181972,0.07966204 +23182032,0.07966204 +23182032,0 +23187678,0 +23187678,0.3074834 +23187750,0.3074834 +23187750,0 +23187978,0 +23187978,0.47706699 +23188038,0.47706699 +23188038,0 +23188188,0 +23188188,0.0073928787 +23188284,0.0073928787 +23188284,0 +23195196,0 +23195196,0.1573627 +23195226,0.1573627 +23195226,0 +23195310,0 +23195310,0.1028968 +23195340,0.1028968 +23195340,0 +23195430,0 +23195430,0.058841279 +23195544,0.33343392 +23195544,0 +23195586,0 +23195586,0.33343392 +23195592,0.058841279 +23195592,0 +23200848,0 +23200848,0.2070006 +23200920,0.2070006 +23200920,0 +23200962,0 +23200962,0.081321666 +23200968,0.081321666 +23200968,0 +23201082,0 +23201082,0.088111044 +23201088,0.088111044 +23201088,0 +23201586,0 +23201586,0.22148461 +23201598,0.22148461 +23201598,0 +23208162,0 +23208162,0.32423054 +23208168,0.32423054 +23208168,0 +23208276,0 +23208276,0.037718769 +23208312,0.037718769 +23208312,0 +23208528,0 +23208528,0.34037417 +23208642,0.254828 +23208642,0 +23208702,0 +23208702,0.34037417 +23208732,0.254828 +23208732,0 +23208756,0 +23208756,0.19840072 +23208786,0.19840072 +23208786,0 +23210538,0 +23210538,0.14302957 +23210562,0.14302957 +23210562,0 +23210622,0 +23210622,0.11557031 +23210634,0.11557031 +23210634,0 +23210652,0 +23210652,0.044508147 +23210724,0.044508147 +23210724,0 +23213220,0 +23213220,0.13065782 +23213238,0.13065782 +23213238,0 +23218038,0 +23218038,0.018255884 +23218050,0.018255884 +23218050,0 +23218842,0 +23218842,0.099124925 +23218878,0.0093542547 +23218878,0 +23218884,0 +23218884,0.0093542547 +23218920,0.099124925 +23218920,0 +23218956,0 +23218956,0.3092939 +23218992,0.3092939 +23218992,0 +23218998,0 +23218998,0.21378998 +23219076,0.26765238 +23219076,0 +23219082,0 +23219082,0 +23219082,0.26765238 +23219082,0.21378998 +23219406,0 +23219406,0.068195534 +23219412,0.068195534 +23219412,0 +23223792,0 +23223792,0.19900422 +23223852,0.19900422 +23223852,0 +23223906,0 +23223906,0.080114665 +23223918,0.080114665 +23223918,0 +23224020,0 +23224020,0.01991551 +23224062,0.01991551 +23224062,0 +23228070,0 +23228070,0.17229934 +23228082,0.17229934 +23228082,0 +23229558,0 +23229558,0.014785757 +23229624,0.014785757 +23229624,0 +23231070,0 +23231070,0.06985516 +23231076,0.06985516 +23231076,0 +23241108,0 +23241108,0.068799034 +23241114,0.068799034 +23241114,0 +23263806,0 +23263806,0.048883524 +23263824,0.048883524 +23263824,0 +23263920,0 +23263920,0.11406156 +23263938,0.11406156 +23263938,0 +23264088,0 +23264088,0.075437538 +23264094,0.075437538 +23264094,0 +23265390,0 +23265390,0.28515389 +23266272,0.28515389 +23266272,0 +23270652,0 +23270652,0.21710923 +23270724,0.21710923 +23270724,0 +23273616,0 +23273616,0.14197345 +23273706,0.14197345 +23273706,0 +23273736,0 +23273736,0.0018105009 +23273742,0.0018105009 +23273742,0 +23276550,0 +23276550,0.18301147 +23276556,0.18301147 +23276556,0 +23276664,0 +23276664,0.24713337 +23276742,0.24713337 +23276742,0 +23283330,0 +23283330,0.246379 +23283354,0.246379 +23283354,0 +23286240,0 +23286240,0.11511768 +23286312,0.11511768 +23286312,0 +23292570,0 +23292570,0.015087508 +23292576,0.015087508 +23292576,0 +23297808,0 +23297808,0.070006035 +23297814,0.070006035 +23297814,0 +23300052,0 +23300052,0.12326494 +23300136,0.12326494 +23300136,0 +23310702,0 +23310702,0.064423657 +23310708,0.064423657 +23310708,0 +23310816,0 +23310816,0.037115269 +23310876,0.037115269 +23310876,0 +23317932,0 +23317932,0.27625226 +23317968,0.27625226 +23317968,0 +23326116,0 +23326116,0.17637296 +23326128,0.17637296 +23326128,0 +23350092,0 +23350092,0.31517803 +23350098,0.31517803 +23350098,0 +23350710,0 +23350710,0.15540133 +23350740,0.15540133 +23350740,0 +23353986,0 +23353986,0.18436934 +23353992,0.18436934 +23353992,0 +23354298,0 +23354298,0.26372963 +23354304,0.26372963 +23354304,0 +23355624,0 +23355624,0.10515993 +23355642,0.10515993 +23355642,0 +23355738,0 +23355738,0.064876282 +23355768,0.064876282 +23355768,0 +23355852,0 +23355852,0.069100785 +23355870,0.069100785 +23355870,0 +23359782,0 +23359782,0.19900422 +23359800,0.19900422 +23359800,0 +23363094,0 +23363094,0.35093543 +23363160,0.35093543 +23363160,0 +23366622,0 +23366622,0.026403138 +23366628,0.026403138 +23366628,0 +23367552,0 +23367552,0.34897405 +23367666,0.34897405 +23367666,0 +23371452,0 +23371452,0.10319855 +23371476,0.10319855 +23371476,0 +23371566,0 +23371566,0.046771273 +23371596,0.046771273 +23371596,0 +23371686,0 +23371686,0.16898008 +23371704,0.16898008 +23371704,0 +23372010,0 +23372010,0.43406759 +23372076,0.43406759 +23372076,0 +23372616,0 +23372616,0.21273386 +23372736,0.21273386 +23372736,0 +23373204,0 +23373204,0.23008449 +23373318,0.23008449 +23373318,0 +23373786,0 +23373786,0.21122511 +23373882,0.21122511 +23373882,0 +23374374,0 +23374374,0.24426675 +23374458,0.24426675 +23374458,0 +23374962,0 +23374962,0.15751358 +23375064,0.15751358 +23375064,0 +23375310,0 +23375310,0.092788171 +23375430,0.1919131 +23375430,0 +23375442,0 +23375442,0.092788171 +23375454,0.1919131 +23375454,0 +23375544,0 +23375544,0.21288473 +23375658,0.31321666 +23375658,0 +23375664,0 +23375664,0.21288473 +23375730,0.31321666 +23375730,0 +23375982,0 +23375982,0.22223899 +23376006,0.22223899 +23376006,0 +23378670,0 +23378670,0.089619795 +23378676,0.089619795 +23378676,0 +23379972,0 +23379972,0.33283042 +23379978,0.33283042 +23379978,0 +23380086,0 +23380086,0.011013881 +23380092,0.011013881 +23380092,0 +23380164,0 +23380164,0.055823778 +23380170,0.055823778 +23380170,0 +23380422,0 +23380422,0.28455039 +23380482,0.28455039 +23380482,0 +23384880,0 +23384880,0.38729632 +23384964,0.38729632 +23384964,0 +23385036,0 +23385036,0.21891973 +23385048,0.21891973 +23385048,0 +23385156,0 +23385156,0.02911889 +23385162,0.02911889 +23385162,0 +23385678,0 +23385678,0.30672903 +23385702,0.30672903 +23385702,0 +23385792,0 +23385792,0.046469523 +23385810,0.046469523 +23385810,0 +23386302,0 +23386302,0.66566083 +23386836,0.66566083 +23386836,0 +23387376,0 +23387376,0.12145444 +23387442,0.12145444 +23387442,0 +23389332,0 +23389332,0.23717562 +23389404,0.23717562 +23389404,0 +23390970,0 +23390970,0.23144237 +23390976,0.23144237 +23390976,0 +23391084,0 +23391084,0.31547978 +23391144,0.31547978 +23391144,0 +23391198,0 +23391198,0.30114665 +23391312,0 +23391312,0 +23391312,0.17667471 +23391312,0.30114665 +23391348,0.17667471 +23391348,0 +23392158,0 +23392158,0.31744116 +23392176,0.31744116 +23392176,0 +23394618,0 +23394618,0.17018709 +23394702,0.17018709 +23394702,0 +23395464,0 +23395464,0.1937236 +23395494,0.1937236 +23395494,0 +23395584,0 +23395584,0.21695836 +23395638,0.21695836 +23395638,0 +23395698,0 +23395698,0.27791189 +23395716,0.27791189 +23395716,0 +23395812,0 +23395812,0.15162945 +23395830,0.15162945 +23395830,0 +23395932,0 +23395932,0.003922752 +23395938,0.003922752 +23395938,0 +23397156,0 +23397156,0.21846711 +23397210,0.21846711 +23397210,0 +23397738,0 +23397738,0.248793 +23397798,0.248793 +23397798,0 +23398326,0 +23398326,0.20926373 +23398416,0.20926373 +23398416,0 +23398914,0 +23398914,0.21605311 +23399022,0.21605311 +23399022,0 +23399502,0 +23399502,0.19870247 +23399550,0.19870247 +23399550,0 +23401794,0 +23401794,0.16203983 +23401884,0.16203983 +23401884,0 +23401908,0 +23401908,0.1519312 +23401914,0.1519312 +23401914,0 +23402028,0 +23402028,0.21213036 +23402040,0.21213036 +23402040,0 +23405568,0 +23405568,0.20956548 +23405598,0.20956548 +23405598,0 +23405682,0 +23405682,0.16113458 +23405754,0.16113458 +23405754,0 +23413566,0 +23413566,0.073627037 +23413626,0.073627037 +23413626,0 +23433768,0 +23433768,0.20835848 +23433864,0.20835848 +23433864,0 +23433882,0 +23433882,0.23280024 +23433930,0.23280024 +23433930,0 +23434002,0 +23434002,0.29375377 +23434014,0.29375377 +23434014,0 +23434116,0 +23434116,0.10908268 +23434122,0.10908268 +23434122,0 +23438124,0 +23438124,0.31125528 +23438136,0.31125528 +23438136,0 +23445978,0 +23445978,0.16535908 +23446044,0.16535908 +23446044,0 +23446818,0 +23446818,0.38955944 +23447184,0.38955944 +23447184,0 +23449368,0 +23449368,0.23521424 +23449386,0.23521424 +23449386,0 +23450934,0 +23450934,0.21062161 +23450940,0.21062161 +23450940,0 +23451048,0 +23451048,0.26659626 +23451054,0.26659626 +23451054,0 +23453682,0 +23453682,0.0084490042 +23453694,0.0084490042 +23453694,0 +23454000,0 +23454000,0.17773084 +23454072,0.17773084 +23454072,0 +23454486,0 +23454486,0.4037417 +23455062,0.4037417 +23455062,0 +23457456,0 +23457456,0.11722993 +23457522,0.11722993 +23457522,0 +23457570,0 +23457570,0.24622812 +23457582,0.24622812 +23457582,0 +23457690,0 +23457690,0.013277007 +23457696,0.013277007 +23457696,0 +23457804,0 +23457804,0.23642124 +23457858,0.23642124 +23457858,0 +23457918,0 +23457918,0.26885938 +23457960,0.26885938 +23457960,0 +23458038,0 +23458038,0.27082076 +23458074,0.27082076 +23458074,0 +23458152,0 +23458152,0.019161135 +23458164,0.019161135 +23458164,0 +23459472,0 +23459472,0.14182257 +23459496,0.14182257 +23459496,0 +23460810,0 +23460810,0.0073928787 +23460912,0.0073928787 +23460912,0 +23462796,0 +23462796,0.18120097 +23462826,0.18120097 +23462826,0 +23462910,0 +23462910,0.1949306 +23462928,0.1949306 +23462928,0 +23463294,0 +23463294,0.12281231 +23463318,0.12281231 +23463318,0 +23466594,0 +23466594,0.03922752 +23466648,0.03922752 +23466648,0 +23466708,0 +23466708,0.00045262523 +23466714,0.00045262523 +23466714,0 +23469066,0 +23469066,0.081774291 +23469096,0.081774291 +23469096,0 +23478204,0 +23478204,0.28349427 +23478288,0.28349427 +23478288,0 +23482572,0 +23482572,0.26538926 +23482578,0.26538926 +23482578,0 +23482656,0 +23482656,0.42788171 +23482668,0.42788171 +23482668,0 +23483946,0 +23483946,0.15178033 +23483964,0.15178033 +23483964,0 +23487702,0 +23487702,0.13759807 +23487726,0.13759807 +23487726,0 +23496138,0 +23496138,0.13805069 +23496150,0.13805069 +23496150,0 +23497638,0 +23497638,0.053862402 +23497656,0.053862402 +23497656,0 +23497752,0 +23497752,0.24290887 +23497794,0.24290887 +23497794,0 +23521404,0 +23521404,0.062160531 +23521410,0.062160531 +23521410,0 +23524398,0 +23524398,0.25196138 +23524422,0.25196138 +23524422,0 +23527902,0 +23527902,0.21620398 +23527950,0.21620398 +23527950,0 +23528016,0 +23528016,0.36149668 +23528022,0.36149668 +23528022,0 +23528652,0 +23528652,0.037417019 +23528670,0.037417019 +23528670,0 +23529954,0 +23529954,0.0006035003 +23529960,0.0006035003 +23529960,0 +23530014,0 +23530014,0.17486421 +23530026,0.17486421 +23530026,0 +23531262,0 +23531262,0.038020519 +23531346,0.038020519 +23531346,0 +23531382,0 +23531382,0.21469523 +23531412,0.21469523 +23531412,0 +23531496,0 +23531496,0.032589016 +23531502,0.032589016 +23531502,0 +23531610,0 +23531610,0.28047677 +23531760,0.28047677 +23531760,0 +23534928,0 +23534928,0.06065178 +23534934,0.06065178 +23534934,0 +23536434,0 +23536434,0.25347013 +23537400,0.25347013 +23537400,0 +23538120,0 +23538120,0.35380205 +23538192,0.35380205 +23538192,0 +23542578,0 +23542578,0.43286059 +23542590,0.43286059 +23542590,0 +23550420,0 +23550420,0.071967411 +23550426,0.071967411 +23550426,0 +23550540,0 +23550540,0.28439952 +23550546,0.28439952 +23550546,0 +23550654,0 +23550654,0.12447194 +23550684,0.12447194 +23550684,0 +23567586,0 +23567586,0.012824381 +23567700,0.30401328 +23567700,0 +23567760,0 +23567760,0.30401328 +23567838,0.012824381 +23567838,0 +23570790,0 +23570790,0.11119493 +23570796,0.11119493 +23570796,0 +23570910,0 +23570910,0.34158117 +23570916,0.34158117 +23570916,0 +23574564,0 +23574564,0.13367532 +23574576,0.13367532 +23574576,0 +23574678,0 +23574678,0.023687387 +23574684,0.023687387 +23574684,0 +23574912,0 +23574912,0.44809897 +23575452,0.44809897 +23575452,0 +23581182,0 +23581182,0.21333736 +23581260,0.21333736 +23581260,0 +23581302,0 +23581302,0.33675317 +23581416,0.22420036 +23581416,0 +23581512,0 +23581512,0.33675317 +23581530,0.066535908 +23581530,0 +23581542,0 +23581542,0 +23581542,0.22420036 +23581542,0.066535908 +23581650,0 +23581650,0.12869644 +23581656,0.12869644 +23581656,0 +23581764,0 +23581764,0.039981895 +23581770,0.039981895 +23581770,0 +23581878,0 +23581878,0.12009656 +23581938,0.12009656 +23581938,0 +23581998,0 +23581998,0.23461074 +23582076,0.23461074 +23582076,0 +23582112,0 +23582112,0.0096560048 +23582118,0.0096560048 +23582118,0 +23582226,0 +23582226,0.11119493 +23582286,0.11119493 +23582286,0 +23603694,0 +23603694,0.014484007 +23603718,0.014484007 +23603718,0 +23622258,0 +23622258,0.32060954 +23622294,0.32060954 +23622294,0 +23623506,0 +23623506,0.21846711 +23623590,0.21846711 +23623590,0 +23624094,0 +23624094,0.22314424 +23624208,0.22314424 +23624208,0 +23624682,0 +23624682,0.18738684 +23624754,0.18738684 +23624754,0 +23624832,0 +23624832,0.32423054 +23624940,0.32423054 +23624940,0 +23625264,0 +23625264,0.19523235 +23625330,0.22420036 +23625330,0 +23625342,0 +23625342,0.19523235 +23625420,0.22420036 +23625420,0 +23625852,0 +23625852,0.2003621 +23625972,0.2003621 +23625972,0 +23626440,0 +23626440,0.17607121 +23626548,0.17607121 +23626548,0 +23627028,0 +23627028,0.19281835 +23627088,0.19281835 +23627088,0 +23632476,0 +23632476,0.14665057 +23632614,0.14665057 +23632614,0 +23637420,0 +23637420,0.30703078 +23637426,0.30703078 +23637426,0 +23645532,0 +23645532,0.38940857 +23645538,0.38940857 +23645538,0 +23645646,0 +23645646,0.10440555 +23645712,0.10440555 +23645712,0 +23645766,0 +23645766,0.22736874 +23645826,0.22736874 +23645826,0 +23645880,0 +23645880,0.15208208 +23645898,0.15208208 +23645898,0 +23651562,0 +23651562,0.085093543 +23651568,0.085093543 +23651568,0 +23651778,0 +23651778,0.22435124 +23651886,0.22435124 +23651886,0 +23652366,0 +23652366,0.23883524 +23652426,0.23883524 +23652426,0 +23652948,0 +23652948,0.21680748 +23653068,0.21680748 +23653068,0 +23653536,0 +23653536,0.18844297 +23653650,0 +23653650,0 +23653650,0.15464695 +23653650,0.18844297 +23653668,0.15464695 +23653668,0 +23654124,0 +23654124,0.20564273 +23654178,0.20564273 +23654178,0 +23654712,0 +23654712,0.23581774 +23654814,0.23581774 +23654814,0 +23655672,0 +23655672,0.081170791 +23655714,0.081170791 +23655714,0 +23655786,0 +23655786,0.25090525 +23655846,0.25090525 +23655846,0 +23657838,0 +23657838,0.11300543 +23657886,0.11300543 +23657886,0 +23661648,0 +23661648,0.28847314 +23661672,0.28847314 +23661672,0 +23661762,0 +23661762,0.19809897 +23661786,0.19809897 +23661786,0 +23663022,0 +23663022,0.1446892 +23663076,0.1446892 +23663076,0 +23664258,0 +23664258,0.10365118 +23664264,0.10365118 +23664264,0 +23664378,0 +23664378,0.20745323 +23664420,0.20745323 +23664420,0 +23692884,0 +23692884,0.26765238 +23693376,0.26765238 +23693376,0 +23697186,0 +23697186,0.3438443 +23697204,0.3438443 +23697204,0 +23697300,0 +23697300,0.073174412 +23697318,0.073174412 +23697318,0 +23697522,0 +23697522,0.083584792 +23697528,0.083584792 +23697528,0 +23697642,0 +23697642,0.20594448 +23697660,0.20594448 +23697660,0 +23699952,0 +23699952,0.55491853 +23700354,0.55491853 +23700354,0 +23706486,0 +23706486,0.12794206 +23706546,0.12794206 +23706546,0 +23706618,0 +23706618,0.28575739 +23706654,0.28575739 +23706654,0 +23708394,0 +23708394,0.32407966 +23708400,0.32407966 +23708400,0 +23711676,0 +23711676,0.20564273 +23711724,0.20564273 +23711724,0 +23711790,0 +23711790,0.16807483 +23711910,0.17486421 +23711910,0 +23711946,0 +23711946,0.16807483 +23712000,0.17486421 +23712000,0 +23712024,0 +23712024,0.043301147 +23712030,0.043301147 +23712030,0 +23712138,0 +23712138,0.13156307 +23712156,0.13156307 +23712156,0 +23712258,0 +23712258,0.36813518 +23712276,0.36813518 +23712276,0 +23712798,0 +23712798,0.061707906 +23712804,0.061707906 +23712804,0 +23712912,0 +23712912,0.11466506 +23712924,0.11466506 +23712924,0 +23714118,0 +23714118,0.092033796 +23714166,0.092033796 +23714166,0 +23715414,0 +23715414,0.24984912 +23715420,0.24984912 +23715420,0 +23715528,0 +23715528,0.31351841 +23715576,0.31351841 +23715576,0 +23717754,0 +23717754,0.1955341 +23717790,0.1955341 +23717790,0 +23717868,0 +23717868,0.34776705 +23717898,0.34776705 +23717898,0 +23717988,0 +23717988,0.1931201 +23718018,0.1931201 +23718018,0 +23718102,0 +23718102,0.093693422 +23718126,0.093693422 +23718126,0 +23729208,0 +23729208,0.12779119 +23729262,0.12779119 +23729262,0 +23734284,0 +23734284,0.11375981 +23734320,0.11375981 +23734320,0 +23736336,0 +23736336,0.18180447 +23736372,0.18180447 +23736372,0 +23739444,0 +23739444,0.29677127 +23739762,0.29677127 +23739762,0 +23744460,0 +23744460,0.26086301 +23744526,0.26086301 +23744526,0 +23745942,0 +23745942,0.0069402535 +23745972,0.0069402535 +23745972,0 +23746056,0 +23746056,0.27776101 +23746080,0.27776101 +23746080,0 +23746170,0 +23746170,0.007996379 +23746212,0.007996379 +23746212,0 +23746248,0 +23746248,0.016445383 +23746296,0.016445383 +23746296,0 +23750550,0 +23750550,0.048280024 +23750556,0.048280024 +23750556,0 +23772306,0 +23772306,0.12779119 +23772324,0.12779119 +23772324,0 +23786394,0 +23786394,0.092486421 +23786790,0.092486421 +23786790,0 +23787384,0 +23787384,0.34942667 +23787444,0.34942667 +23787444,0 +23789586,0 +23789586,0.21937236 +23789604,0.21937236 +23789604,0 +23789706,0 +23789706,0.21182861 +23789730,0.21182861 +23789730,0 +23792094,0 +23792094,0.18150272 +23792112,0.18150272 +23792112,0 +23792208,0 +23792208,0.11044056 +23792238,0.11044056 +23792238,0 +23793552,0 +23793552,0.13593844 +23794086,0.13593844 +23794086,0 +23794692,0 +23794692,0.15464695 +23794734,0.15464695 +23794734,0 +23795778,0 +23795778,0.087205794 +23795808,0.087205794 +23795808,0 +23796522,0 +23796522,0.20353048 +23796630,0.20353048 +23796630,0 +23796636,0 +23796636,0.11466506 +23796642,0.11466506 +23796642,0 +23797128,0 +23797128,0.10757393 +23797134,0.10757393 +23797134,0 +23797242,0 +23797242,0.14725407 +23797314,0.14725407 +23797314,0 +23806932,0 +23806932,0.16430296 +23807346,0.16430296 +23807346,0 +23810472,0 +23810472,0.09097767 +23810550,0.09097767 +23810550,0 +23816436,0 +23816436,0.011768256 +23816442,0.011768256 +23816442,0 +23821056,0 +23821056,0.42742909 +23821146,0.42742909 +23821146,0 +23821890,0 +23821890,0.14906457 +23821920,0.14906457 +23821920,0 +23823126,0 +23823126,0.0064876282 +23823144,0.0064876282 +23823144,0 +23825514,0 +23825514,0.23747737 +23825580,0.23747737 +23825580,0 +23827266,0 +23827266,0.0089016295 +23827278,0.0089016295 +23827278,0 +23828196,0 +23828196,0.11059143 +23828232,0.11059143 +23828232,0 +23828514,0 +23828514,0.024592637 +23828520,0.024592637 +23828520,0 +23828634,0 +23828634,0.098219674 +23828640,0.098219674 +23828640,0 +23828748,0 +23828748,0.0075437538 +23828910,0.0075437538 +23828910,0 +23848632,0 +23848632,0.087960169 +23848644,0.087960169 +23848644,0 +23848746,0 +23848746,0.1077248 +23848752,0.1077248 +23848752,0 +23852484,0 +23852484,0.28832227 +23852490,0.28832227 +23852490,0 +23869698,0 +23869698,0.28621002 +23869746,0.28621002 +23869746,0 +23869812,0 +23869812,0.21469523 +23869836,0.21469523 +23869836,0 +23869932,0 +23869932,0.22284249 +23869938,0.22284249 +23869938,0 +23871186,0 +23871186,0.35138805 +23871798,0.35138805 +23871798,0 +23873052,0 +23873052,0.11134581 +23873088,0.11134581 +23873088,0 +23879406,0 +23879406,0.0089016295 +23879418,0.0089016295 +23879418,0 +23881434,0 +23881434,0.36632468 +23881446,0.36632468 +23881446,0 +23881554,0 +23881554,0.12039831 +23881632,0.12039831 +23881632,0 +23881668,0 +23881668,0.16369946 +23881734,0.16369946 +23881734,0 +23888196,0 +23888196,0.046167773 +23888280,0.046167773 +23888280,0 +23890962,0 +23890962,0.23083887 +23891010,0.23083887 +23891010,0 +23893434,0 +23893434,0.13593844 +23893518,0.13593844 +23893518,0 +23897976,0 +23897976,0.20202173 +23898000,0.20202173 +23898000,0 +23900850,0 +23900850,0.15902233 +23900862,0.15902233 +23900862,0 +23900964,0 +23900964,0.14393482 +23900970,0.14393482 +23900970,0 +23903016,0 +23903016,0.18980084 +23903058,0.18980084 +23903058,0 +23903148,0 +23903148,0.17773084 +23903208,0.17773084 +23903208,0 +23908572,0 +23908572,0.10003018 +23908584,0.10003018 +23908584,0 +23908686,0 +23908686,0.057030779 +23908692,0.057030779 +23908692,0 +23908806,0 +23908806,0.17516596 +23908824,0.17516596 +23908824,0 +23908920,0 +23908920,0.10214243 +23908980,0.10214243 +23908980,0 +23909034,0 +23909034,0.044809897 +23909040,0.044809897 +23909040,0 +23924526,0 +23924526,0.21560048 +23924544,0.21560048 +23924544,0 +23932548,0 +23932548,0.020066385 +23932554,0.020066385 +23932554,0 +23932662,0 +23932662,0.18949909 +23932668,0.18949909 +23932668,0 +23932782,0 +23932782,0.20986723 +23932806,0.20986723 +23932806,0 +23932896,0 +23932896,0.12809294 +23932938,0.12809294 +23932938,0 +23933010,0 +23933010,0.27142426 +23933040,0.27142426 +23933040,0 +23958426,0 +23958426,0.12658419 +23958432,0.12658419 +23958432,0 +23960616,0 +23960616,0.33358479 +23961276,0.33358479 +23961276,0 +23962452,0 +23962452,0.35214243 +23962692,0.35214243 +23962692,0 +23965278,0 +23965278,0.071363911 +23965296,0.071363911 +23965296,0 +23965446,0 +23965446,0.017652384 +23965506,0.017652384 +23965506,0 +23965560,0 +23965560,0.086451418 +23965638,0.086451418 +23965638,0 +23965680,0 +23965680,0.26282438 +23965758,0.26282438 +23965758,0 +23965824,0 +23965824,0.33343392 +23966232,0.33343392 +23966232,0 +23967336,0 +23967336,0.12039831 +23967372,0.12039831 +23967372,0 +23967450,0 +23967450,0.28726614 +23967468,0.28726614 +23967468,0 +23967564,0 +23967564,0.27036814 +23967630,0.27036814 +23967630,0 +23967684,0 +23967684,0.019161135 +23967702,0.019161135 +23967702,0 +23967798,0 +23967798,0.02972239 +23967804,0.02972239 +23967804,0 +23974110,0 +23974110,0.075739288 +23974194,0.075739288 +23974194,0 +23974224,0 +23974224,0.13578757 +23974254,0.13578757 +23974254,0 +23976006,0 +23976006,0.17063971 +23976108,0.17063971 +23976108,0 +23977338,0 +23977338,0.0067893784 +23977344,0.0067893784 +23977344,0 +23983062,0 +23983062,0.15962583 +23983110,0.15962583 +23983110,0 +23986404,0 +23986404,0.12205794 +23986410,0.12205794 +23986410,0 +23990670,0 +23990670,0.13488232 +23990694,0.13488232 +23990694,0 +23996028,0 +23996028,0.090223295 +23996052,0.090223295 +23996052,0 +23996142,0 +23996142,0.2929994 +23996148,0.2929994 +23996148,0 +23996298,0 +23996298,0.31140616 +23996304,0.31140616 +23996304,0 +23997546,0 +23997546,0.1919131 +23997558,0.1919131 +23997558,0 +23997660,0 +23997660,0.026704888 +23997666,0.026704888 +23997666,0 +24012330,0 +24012330,0.248793 +24012474,0.248793 +24012474,0 +24013614,0 +24013614,0.33524442 +24013626,0.33524442 +24013626,0 +24013734,0 +24013734,0.16581171 +24013746,0.16581171 +24013746,0 +24021276,0 +24021276,0.17063971 +24021288,0.17063971 +24021288,0 +24021396,0 +24021396,0.11828606 +24021402,0.11828606 +24021402,0 +24034428,0 +24034428,0.23943874 +24034446,0.23943874 +24034446,0 +24038022,0 +24038022,0.3958962 +24038076,0.3958962 +24038076,0 +24040554,0 +24040554,0.0093542547 +24040614,0.0093542547 +24040614,0 +24045456,0 +24045456,0.18964997 +24045462,0.18964997 +24045462,0 +24045570,0 +24045570,0.10576343 +24045606,0.10576343 +24045606,0 +24051060,0 +24051060,0.46016898 +24051408,0.46016898 +24051408,0 +24054588,0 +24054588,0.33584792 +24054702,0.0076946288 +24054702,0 +24054816,0 +24054816,0.32377791 +24054822,0 +24054822,0 +24054822,0.0076946288 +24054822,0.32377791 +24054936,0.34112855 +24054936,0 +24054990,0 +24054990,0.34112855 +24055038,0.33584792 +24055038,0 +24055050,0 +24055050,0.1919131 +24055062,0.1919131 +24055062,0 +24061068,0 +24061068,0.3940857 +24061092,0.3940857 +24061092,0 +24061212,0 +24061212,0.24849125 +24061266,0.24849125 +24061266,0 +24061800,0 +24061800,0.22902836 +24061896,0.22902836 +24061896,0 +24062388,0 +24062388,0.22902836 +24062442,0.22902836 +24062442,0 +24062970,0 +24062970,0.17576946 +24063048,0.17576946 +24063048,0 +24063558,0 +24063558,0.18919734 +24063648,0.18919734 +24063648,0 +24064146,0 +24064146,0.21182861 +24064236,0.21182861 +24064236,0 +24067746,0 +24067746,0.057332529 +24067752,0.057332529 +24067752,0 +24070020,0 +24070020,0.091430296 +24070062,0.091430296 +24070062,0 +24070134,0 +24070134,0.30612553 +24070140,0.042245021 +24070140,0 +24070146,0 +24070146,0.042245021 +24070200,0.30612553 +24070200,0 +24079482,0 +24079482,0.37703681 +24079488,0.37703681 +24079488,0 +24081312,0 +24081312,0.085697043 +24081384,0.085697043 +24081384,0 +24082986,0 +24082986,0.024592637 +24082992,0.024592637 +24082992,0 +24084714,0 +24084714,0.084188292 +24084732,0.084188292 +24084732,0 +24084828,0 +24084828,0.032287266 +24084834,0.032287266 +24084834,0 +24084942,0 +24084942,0.27489439 +24085134,0.27489439 +24085134,0 +24086724,0 +24086724,0.15585395 +24086742,0.15585395 +24086742,0 +24086838,0 +24086838,0.24351237 +24086970,0.24351237 +24086970,0 +24095352,0 +24095352,0.20081473 +24095358,0.20081473 +24095358,0 +24102588,0 +24102588,0.045111648 +24102762,0.045111648 +24102762,0 +24105126,0 +24105126,0.077097164 +24105150,0.077097164 +24105150,0 +24108624,0 +24108624,0.093995172 +24108654,0.093995172 +24108654,0 +24108738,0 +24108738,0.15449608 +24108750,0.15449608 +24108750,0 +24127098,0 +24127098,0.26795413 +24127176,0.26795413 +24127176,0 +24127770,0 +24127770,0.31819553 +24127800,0.31819553 +24127800,0 +24130194,0 +24130194,0.30461678 +24130212,0.30461678 +24130212,0 +24130314,0 +24130314,0.26025951 +24130332,0.26025951 +24130332,0 +24134574,0 +24134574,0.17486421 +24134604,0.17486421 +24134604,0 +24134694,0 +24134694,0.22917924 +24134712,0.22917924 +24134712,0 +24134808,0 +24134808,0.0078455039 +24134826,0.0078455039 +24134826,0 +24137940,0 +24137940,0.25331925 +24137964,0.25331925 +24137964,0 +24139038,0 +24139038,0.18105009 +24139110,0.18105009 +24139110,0 +24143310,0 +24143310,0.068195534 +24143382,0.068195534 +24143382,0 +24143424,0 +24143424,0.12175619 +24143466,0.12175619 +24143466,0 +24146910,0 +24146910,0.20669885 +24146916,0.20669885 +24146916,0 +24150336,0 +24150336,0.0076946288 +24150414,0.0076946288 +24150414,0 +24159462,0 +24159462,0.031683766 +24159468,0.031683766 +24159468,0 +24163608,0 +24163608,0.0087507544 +24163704,0.0087507544 +24163704,0 +24163770,0 +24163770,0.092486421 +24163776,0.092486421 +24163776,0 +24165144,0 +24165144,0.084188292 +24165192,0.084188292 +24165192,0 +24167124,0 +24167124,0.0072420036 +24167160,0.0072420036 +24167160,0 +24167946,0 +24167946,0.15600483 +24168024,0.15600483 +24168024,0 +24168966,0 +24168966,0.082528666 +24169026,0.082528666 +24169026,0 +24172530,0 +24172530,0.08026554 +24172536,0.08026554 +24172536,0 +24176610,0 +24176610,0.0013578757 +24176616,0.0013578757 +24176616,0 +24176724,0 +24176724,0.0028666264 +24176730,0.0028666264 +24176730,0 +24182196,0 +24182196,0.23219674 +24182214,0.23219674 +24182214,0 +24187026,0 +24187026,0.10319855 +24187122,0.10319855 +24187122,0 +24187140,0 +24187140,0.078756789 +24187146,0.078756789 +24187146,0 +24187254,0 +24187254,0.15887145 +24187266,0.15887145 +24187266,0 +24187374,0 +24187374,0.33132167 +24187380,0.33132167 +24187380,0 +24188520,0 +24188520,0.26056126 +24188556,0.26056126 +24188556,0 +24188640,0 +24188640,0.17592034 +24188670,0.17592034 +24188670,0 +24188754,0 +24188754,0.34535305 +24188844,0.34535305 +24188844,0 +24188868,0 +24188868,0.2076041 +24188940,0.2076041 +24188940,0 +24188988,0 +24188988,0.24803862 +24189096,0.24803862 +24189096,0 +24189102,0 +24189102,0.19357272 +24189108,0.19357272 +24189108,0 +24189216,0 +24189216,0.098068799 +24189258,0.098068799 +24189258,0 +24189336,0 +24189336,0.015389258 +24189342,0.015389258 +24189342,0 +24189450,0 +24189450,0.21756186 +24189582,0.21756186 +24189582,0 +24194874,0 +24194874,0.12326494 +24194880,0.12326494 +24194880,0 +24198252,0 +24198252,0.066535908 +24198258,0.066535908 +24198258,0 +24198366,0 +24198366,0.083735667 +24198372,0.083735667 +24198372,0 +24198480,0 +24198480,0.011617381 +24198486,0.011617381 +24198486,0 +24214140,0 +24214140,0.24351237 +24214152,0.24351237 +24214152,0 +24214254,0 +24214254,0.32513579 +24214302,0.32513579 +24214302,0 +24216702,0 +24216702,0.32724804 +24217008,0.32724804 +24217008,0 +24217164,0 +24217164,0.13699457 +24217272,0.13699457 +24217272,0 +24217746,0 +24217746,0.14740495 +24217848,0.14740495 +24217848,0 +24218334,0 +24218334,0.20534098 +24218412,0.20534098 +24218412,0 +24218922,0 +24218922,0.25528063 +24218994,0.25528063 +24218994,0 +24219510,0 +24219510,0.22420036 +24219624,0.22420036 +24219624,0 +24220098,0 +24220098,0.24305975 +24220206,0.24305975 +24220206,0 +24222198,0 +24222198,0.12266144 +24222288,0.12266144 +24222288,0 +24222312,0 +24222312,0.21333736 +24222396,0.21333736 +24222396,0 +24223146,0 +24223146,0.13427882 +24223152,0.13427882 +24223152,0 +24223260,0 +24223260,0.33011467 +24223320,0.33011467 +24223320,0 +24223374,0 +24223374,0.0490344 +24223398,0.0490344 +24223398,0 +24223494,0 +24223494,0.088261919 +24223506,0.088261919 +24223506,0 +24223608,0 +24223608,0.085697043 +24223626,0.085697043 +24223626,0 +24223722,0 +24223722,0.1931201 +24223752,0.1931201 +24223752,0 +24223842,0 +24223842,0.15645745 +24223908,0.15645745 +24223908,0 +24234006,0 +24234006,0.0070911285 +24234036,0.0070911285 +24234036,0 +24236538,0 +24236538,0.35817743 +24236550,0.35817743 +24236550,0 +24238332,0 +24238332,0.32060954 +24238392,0.32060954 +24238392,0 +24242790,0 +24242790,0.24305975 +24242844,0.24305975 +24242844,0 +24243480,0 +24243480,0.30672903 +24243918,0.30672903 +24243918,0 +24245220,0 +24245220,0.026252263 +24245226,0.026252263 +24245226,0 +24245250,0 +24245250,0.11044056 +24245262,0.11044056 +24245262,0 +24247242,0 +24247242,0.29993965 +24247308,0.29993965 +24247308,0 +24251016,0 +24251016,0.04993965 +24251058,0.04993965 +24251058,0 +24252774,0 +24252774,0.15630658 +24252822,0.15630658 +24252822,0 +24253356,0 +24253356,0.21605311 +24253422,0.21605311 +24253422,0 +24253944,0 +24253944,0.21001811 +24254088,0.21001811 +24254088,0 +24254532,0 +24254532,0.24426675 +24254610,0.24426675 +24254610,0 +24255708,0 +24255708,0.12371756 +24255852,0.12371756 +24255852,0 +24256434,0 +24256434,0.18165359 +24256500,0.18165359 +24256500,0 +24263922,0 +24263922,0.2445685 +24263976,0.2445685 +24263976,0 +24264042,0 +24264042,0.18301147 +24264054,0.18301147 +24264054,0 +24264156,0 +24264156,0.21001811 +24264360,0.21001811 +24264360,0 +24264408,0 +24264408,0.22721786 +24264522,0.092486421 +24264522,0 +24264564,0 +24264564,0.22721786 +24264636,0.25105613 +24264636,0 +24264678,0 +24264678,0.25105613 +24264714,0.092486421 +24264714,0 +24264756,0 +24264756,0.06095353 +24264840,0.06095353 +24264840,0 +24267294,0 +24267294,0.1446892 +24267300,0.1446892 +24267300,0 +24267408,0 +24267408,0.11768256 +24267414,0.11768256 +24267414,0 +24269298,0 +24269298,0.37341581 +24269304,0.37341581 +24269304,0 +24270798,0 +24270798,0.26538926 +24270822,0.26538926 +24270822,0 +24270912,0 +24270912,0.054013277 +24270948,0.054013277 +24270948,0 +24300120,0 +24300120,0.32739891 +24300600,0.32739891 +24300600,0 +24311928,0 +24311928,0.27398914 +24311934,0.27398914 +24311934,0 +24312240,0 +24312240,0.14302957 +24312270,0.14302957 +24312270,0 +24312354,0 +24312354,0.074230537 +24312528,0.074230537 +24312528,0 +24313962,0 +24313962,0.21439348 +24314010,0.21439348 +24314010,0 +24314550,0 +24314550,0.15630658 +24314616,0.15630658 +24314616,0 +24315132,0 +24315132,0.18859384 +24315228,0.18859384 +24315228,0 +24315720,0 +24315720,0.20051298 +24315786,0.20051298 +24315786,0 +24316308,0 +24316308,0.242758 +24316392,0.242758 +24316392,0 +24319482,0 +24319482,0.23521424 +24319512,0.23521424 +24319512,0 +24319596,0 +24319596,0.3583283 +24319602,0.3583283 +24319602,0 +24319710,0 +24319710,0.30461678 +24319758,0.30461678 +24319758,0 +24319830,0 +24319830,0.19568497 +24319866,0.19568497 +24319866,0 +24333474,0 +24333474,0.22420036 +24333480,0.22420036 +24333480,0 +24333588,0 +24333588,0.068799034 +24333696,0.068799034 +24333696,0 +24333702,0 +24333702,0.13684369 +24333708,0.13684369 +24333708,0 +24333822,0 +24333822,0.078605914 +24333864,0.078605914 +24333864,0 +24333936,0 +24333936,0.13292094 +24333954,0.13292094 +24333954,0 +24334050,0 +24334050,0.042999396 +24334062,0.042999396 +24334062,0 +24339576,0 +24339576,0.0037718769 +24339582,0.0037718769 +24339582,0 +24339696,0 +24339696,0.27851539 +24339768,0.27851539 +24339768,0 +24352890,0 +24352890,0.0064876282 +24352908,0.0064876282 +24352908,0 +24358944,0 +24358944,0.35455643 +24359004,0.35455643 +24359004,0 +24360810,0 +24360810,0.20292698 +24360816,0.20292698 +24360816,0 +24373590,0 +24373590,0.38503319 +24373602,0.38503319 +24373602,0 +24373704,0 +24373704,0.28802052 +24373746,0.28802052 +24373746,0 +24373818,0 +24373818,0.29707302 +24373842,0.29707302 +24373842,0 +24373938,0 +24373938,0.21695836 +24373944,0.21695836 +24373944,0 +24389430,0 +24389430,0.0081472541 +24389460,0.0081472541 +24389460,0 +24389544,0 +24389544,0.08056729 +24389580,0.08056729 +24389580,0 +24392226,0 +24392226,0.25196138 +24392376,0.25196138 +24392376,0 +24394488,0 +24394488,0.29194327 +24394512,0.29194327 +24394512,0 +24394608,0 +24394608,0.16701871 +24394638,0.16701871 +24394638,0 +24399006,0 +24399006,0.18074834 +24399054,0.18074834 +24399054,0 +24401040,0 +24401040,0.20956548 +24401076,0.20956548 +24401076,0 +24401946,0 +24401946,0.12266144 +24401952,0.12266144 +24401952,0 +24402624,0 +24402624,0.19176222 +24402648,0.19176222 +24402648,0 +24407028,0 +24407028,0.23732649 +24407070,0.23732649 +24407070,0 +24414420,0 +24414420,0.04933615 +24414480,0.04933615 +24414480,0 +24415500,0 +24415500,0.094447797 +24415530,0.094447797 +24415530,0 +24422964,0 +24422964,0.23204587 +24423540,0.23204587 +24423540,0 +24432978,0 +24432978,0.15102595 +24433092,0.15102595 +24433092,0 +24444960,0 +24444960,0.17471334 +24445500,0.17471334 +24445500,0 +24446514,0 +24446514,0.12975256 +24446556,0.12975256 +24446556,0 +24448362,0 +24448362,0.19719372 +24448380,0.19719372 +24448380,0 +24462558,0 +24462558,0.098219674 +24462564,0.098219674 +24462564,0 +24463026,0 +24463026,0.21605311 +24463038,0.21605311 +24463038,0 +24472050,0 +24472050,0.15947495 +24472092,0.15947495 +24472092,0 +24472164,0 +24472164,0.11587206 +24472260,0.11587206 +24472260,0 +24472284,0 +24472284,0.0076946288 +24472368,0.0076946288 +24472368,0 +24474966,0 +24474966,0.02021726 +24474972,0.02021726 +24474972,0 +24475086,0 +24475086,0.094749547 +24475098,0.094749547 +24475098,0 +24475200,0 +24475200,0.33086904 +24475248,0.33086904 +24475248,0 +24475314,0 +24475314,0.12718769 +24475368,0.12718769 +24475368,0 +24481764,0 +24481764,0.16188896 +24481788,0.16188896 +24481788,0 +24481884,0 +24481884,0.0073928787 +24481926,0.0073928787 +24481926,0 +24481998,0 +24481998,0.089921545 +24482070,0.089921545 +24482070,0 +24482112,0 +24482112,0.33117079 +24482148,0.33117079 +24482148,0 +24482232,0 +24482232,0.060500905 +24482268,0.060500905 +24482268,0 +24482346,0 +24482346,0.32905854 +24482364,0.32905854 +24482364,0 +24485130,0 +24485130,0.2942064 +24485136,0.2942064 +24485136,0 +24485250,0 +24485250,0.031231141 +24485256,0.031231141 +24485256,0 +24485304,0 +24485304,0.27308389 +24485328,0.27308389 +24485328,0 +24485364,0 +24485364,0.13473144 +24485388,0.13473144 +24485388,0 +24485478,0 +24485478,0.14876282 +24485544,0.14876282 +24485544,0 +24485598,0 +24485598,0.12296319 +24485700,0.12296319 +24485700,0 +24485712,0 +24485712,0.2027761 +24485790,0.2027761 +24485790,0 +24490560,0 +24490560,0.078002414 +24490596,0.078002414 +24490596,0 +24498174,0 +24498174,0.18678334 +24498198,0.18678334 +24498198,0 +24504954,0 +24504954,0.29405552 +24504972,0.29405552 +24504972,0 +24505068,0 +24505068,0.35923355 +24505110,0.35923355 +24505110,0 +24505182,0 +24505182,0.14876282 +24505194,0.14876282 +24505194,0 +24506004,0 +24506004,0.51916113 +24506070,0.51916113 +24506070,0 +24506538,0 +24506538,0.27670489 +24506562,0.27670489 +24506562,0 +24507918,0 +24507918,0.21122511 +24507996,0.21122511 +24507996,0 +24510462,0 +24510462,0.37235969 +24510492,0.37235969 +24510492,0 +24518496,0 +24518496,0.10863005 +24518562,0.10863005 +24518562,0 +24518610,0 +24518610,0.33645142 +24518634,0.33645142 +24518634,0 +24518724,0 +24518724,0.084037417 +24518790,0.084037417 +24518790,0 +24518844,0 +24518844,0.11904043 +24518850,0.11904043 +24518850,0 +24519714,0 +24519714,0.026252263 +24519720,0.026252263 +24519720,0 +24520746,0 +24520746,0.26629451 +24520758,0.26629451 +24520758,0 +24522216,0 +24522216,0.29707302 +24522330,0.14785757 +24522330,0 +24522360,0 +24522360,0.29707302 +24522390,0.14785757 +24522390,0 +24525216,0 +24525216,0.11934218 +24525222,0.11934218 +24525222,0 +24525330,0 +24525330,0.21544961 +24525372,0.21544961 +24525372,0 +24526536,0 +24526536,0.010863005 +24526542,0.010863005 +24526542,0 +24526650,0 +24526650,0.15645745 +24526662,0.15645745 +24526662,0 +24528036,0 +24528036,0.32498491 +24528090,0.32498491 +24528090,0 +24530118,0 +24530118,0.10334943 +24530202,0.10334943 +24530202,0 +24530232,0 +24530232,0.011315631 +24530250,0.011315631 +24530250,0 +24530346,0 +24530346,0.0066385033 +24530364,0.0066385033 +24530364,0 +24537306,0 +24537306,0.21484611 +24537366,0.21484611 +24537366,0 +24561864,0 +24561864,0.031532891 +24561870,0.031532891 +24561870,0 +24561984,0 +24561984,0.27610139 +24562044,0.27610139 +24562044,0 +24562098,0 +24562098,0.23717562 +24562110,0.23717562 +24562110,0 +24562212,0 +24562212,0.14906457 +24562260,0.14906457 +24562260,0 +24562332,0 +24562332,0.22827399 +24562428,0.22827399 +24562428,0 +24562446,0 +24562446,0.1028968 +24562458,0.1028968 +24562458,0 +24562560,0 +24562560,0.0045262523 +24562566,0.0045262523 +24562566,0 +24562644,0 +24562644,0.12039831 +24562674,0.12039831 +24562674,0 +24562680,0 +24562680,0.0069402535 +24562716,0.0069402535 +24562716,0 +24562758,0 +24562758,0.49230537 +24562764,0.49230537 +24562764,0 +24562872,0 +24562872,0.17501509 +24562896,0.17501509 +24562896,0 +24565152,0 +24565152,0.3510863 +24565206,0.3510863 +24565206,0 +24565272,0 +24565272,0.085546168 +24565278,0.085546168 +24565278,0 +24565386,0 +24565386,0.10244418 +24565398,0.10244418 +24565398,0 +24567792,0 +24567792,0.22963186 +24567804,0.22963186 +24567804,0 +24567906,0 +24567906,0.15117683 +24567930,0.15117683 +24567930,0 +24569118,0 +24569118,0.00030175015 +24569124,0.00030175015 +24569124,0 +24569232,0 +24569232,0.15117683 +24569262,0.15117683 +24569262,0 +24579192,0 +24579192,0.44719372 +24579222,0.44719372 +24579222,0 +24579858,0 +24579858,0.20866023 +24579906,0.20866023 +24579906,0 +24583650,0 +24583650,0.42939046 +24583668,0.42939046 +24583668,0 +24586410,0 +24586410,0.13835244 +24586434,0.13835244 +24586434,0 +24589686,0 +24589686,0.16671696 +24589764,0.16671696 +24589764,0 +24592254,0 +24592254,0.10199155 +24592290,0.10199155 +24592290,0 +24595614,0 +24595614,0.12235969 +24595680,0.12235969 +24595680,0 +24599712,0 +24599712,0.34580567 +24600198,0.34580567 +24600198,0 +24601548,0 +24601548,0.24185275 +24601602,0.24185275 +24601602,0 +24603402,0 +24603402,0.2009656 +24603456,0.2009656 +24603456,0 +24610134,0 +24610134,0.093391672 +24610170,0.093391672 +24610170,0 +24610254,0 +24610254,0.0087507544 +24610260,0.0087507544 +24610260,0 +24617160,0 +24617160,0.18346409 +24617226,0.18346409 +24617226,0 +24626976,0 +24626976,0.1458962 +24627060,0.1458962 +24627060,0 +24628728,0 +24628728,0.43331322 +24629814,0.43331322 +24629814,0 +24631050,0 +24631050,0.00075437538 +24631056,0.00075437538 +24631056,0 +24631164,0 +24631164,0.0024140012 +24631170,0.0024140012 +24631170,0 +24631284,0 +24631284,0.16369946 +24631326,0.16369946 +24631326,0 +24631398,0 +24631398,0.14016295 +24631422,0.14016295 +24631422,0 +24646932,0 +24646932,0.11587206 +24646986,0.11587206 +24646986,0 +24653010,0 +24653010,0.50558238 +24653358,0.50558238 +24653358,0 +24654696,0 +24654696,0.253621 +24654768,0.253621 +24654768,0 +24655284,0 +24655284,0.25211225 +24655338,0.25211225 +24655338,0 +24655866,0 +24655866,0.23445987 +24655950,0.23445987 +24655950,0 +24656454,0 +24656454,0.22103199 +24656526,0.22103199 +24656526,0 +24656982,0 +24656982,0.015992758 +24657042,0.22178636 +24657042,0 +24657072,0 +24657072,0.015992758 +24657096,0.098068799 +24657096,0 +24657102,0 +24657102,0.098068799 +24657126,0.22178636 +24657126,0 +24659718,0 +24659718,0.067742909 +24659724,0.067742909 +24659724,0 +24660216,0 +24660216,0.14785757 +24660306,0.14785757 +24660306,0 +24660330,0 +24660330,0.054767652 +24660348,0.054767652 +24660348,0 +24660414,0 +24660414,0.16626433 +24660426,0.16626433 +24660426,0 +24660468,0 +24660468,0.10666868 +24660474,0.10666868 +24660474,0 +24660528,0 +24660528,0.091882921 +24660564,0.091882921 +24660564,0 +24660588,0 +24660588,0.22027761 +24660594,0.22027761 +24660594,0 +24660648,0 +24660648,0.13729632 +24660702,0.12688594 +24660702,0 +24660762,0 +24660762,0.10561255 +24660768,0.13729632 +24660768,0 +24660774,0 +24660774,0 +24660774,0.12688594 +24660774,0.10561255 +24660786,0 +24660786,0.0066385033 +24660792,0.0066385033 +24660792,0 +24664164,0 +24664164,0.057181654 +24664170,0.057181654 +24664170,0 +24664278,0 +24664278,0.088111044 +24664284,0.088111044 +24664284,0 +24664392,0 +24664392,0.15223295 +24664500,0.15223295 +24664500,0 +24666780,0 +24666780,0.17335546 +24666810,0.17335546 +24666810,0 +24673476,0 +24673476,0.34158117 +24673488,0.34158117 +24673488,0 +24675750,0 +24675750,0.056125528 +24675756,0.056125528 +24675756,0 +24678408,0 +24678408,0.31276403 +24678468,0.31276403 +24678468,0 +24686724,0 +24686724,0.24381412 +24686736,0.24381412 +24686736,0 +24689244,0 +24689244,0.33886542 +24689262,0.33886542 +24689262,0 +24689358,0 +24689358,0.29616777 +24689376,0.29616777 +24689376,0 +24689478,0 +24689478,0.087054919 +24689484,0.087054919 +24689484,0 +24691422,0 +24691422,0.085395293 +24691536,0.16943271 +24691536,0 +24691542,0 +24691542,0.16943271 +24691554,0.085395293 +24691554,0 +24691656,0 +24691656,0.22646349 +24691680,0.22646349 +24691680,0 +24691770,0 +24691770,0.23627037 +24691776,0.23627037 +24691776,0 +24691884,0 +24691884,0.17833434 +24691956,0.17833434 +24691956,0 +24692004,0 +24692004,0.25271575 +24692010,0.25271575 +24692010,0 +24693678,0 +24693678,0.43074834 +24693918,0.43074834 +24693918,0 +24695370,0 +24695370,0.22329511 +24695376,0.22329511 +24695376,0 +24699996,0 +24699996,0.1004828 +24700116,0.19643935 +24700116,0 +24700128,0 +24700128,0.1004828 +24700170,0.19643935 +24700170,0 +24700230,0 +24700230,0.21031986 +24700242,0.21031986 +24700242,0 +24700344,0 +24700344,0.25226313 +24700428,0 +24700428,0 +24700428,0.13307182 +24700428,0.25226313 +24700464,0.11964393 +24700464,0 +24700470,0 +24700470,0.13307182 +24700542,0.11964393 +24700542,0 +24700578,0 +24700578,0.074984912 +24700608,0.074984912 +24700608,0 +24700692,0 +24700692,0.20715148 +24700734,0.20715148 +24700734,0 +24700812,0 +24700812,0.0043753772 +24700818,0.0043753772 +24700818,0 +24700926,0 +24700926,0.095805673 +24700932,0.095805673 +24700932,0 +24701040,0 +24701040,0.16566083 +24701046,0.16566083 +24701046,0 +24701160,0 +24701160,0.36119493 +24701166,0.36119493 +24701166,0 +24701274,0 +24701274,0.27836451 +24701358,0.27836451 +24701358,0 +24701388,0 +24701388,0.1567592 +24701406,0.1567592 +24701406,0 +24701508,0 +24701508,0.094598672 +24701514,0.094598672 +24701514,0 +24703536,0 +24703536,0.40570308 +24703542,0.40570308 +24703542,0 +24703650,0 +24703650,0.10938443 +24703728,0.10938443 +24703728,0 +24708348,0 +24708348,0.098219674 +24708444,0.098219674 +24708444,0 +24731214,0 +24731214,0.20187085 +24731280,0.20187085 +24731280,0 +24731340,0 +24731340,0.052806276 +24731352,0.052806276 +24731352,0 +24731460,0 +24731460,0.057030779 +24731466,0.057030779 +24731466,0 +24731574,0 +24731574,0.18934822 +24731634,0.18934822 +24731634,0 +24731688,0 +24731688,0.27866626 +24731754,0.27866626 +24731754,0 +24731802,0 +24731802,0.13397707 +24731838,0.13397707 +24731838,0 +24734538,0 +24734538,0.35802655 +24734574,0.35802655 +24734574,0 +24736170,0 +24736170,0.0098068799 +24736176,0.0098068799 +24736176,0 +24736662,0 +24736662,0.035455643 +24736680,0.035455643 +24736680,0 +24736776,0 +24736776,0.0081472541 +24736812,0.0081472541 +24736812,0 +24736896,0 +24736896,0.11738081 +24736902,0.11738081 +24736902,0 +24737478,0 +24737478,0.060802655 +24737484,0.060802655 +24737484,0 +24737760,0 +24737760,0.048581774 +24737766,0.048581774 +24737766,0 +24741444,0 +24741444,0.080416415 +24741450,0.080416415 +24741450,0 +24741876,0 +24741876,0.30763428 +24741930,0.30763428 +24741930,0 +24742164,0 +24742164,0.11813518 +24742182,0.11813518 +24742182,0 +24742278,0 +24742278,0.2082076 +24742308,0.2082076 +24742308,0 +24742392,0 +24742392,0.13231744 +24742476,0.13231744 +24742476,0 +24742512,0 +24742512,0.062311406 +24742524,0.062311406 +24742524,0 +24746424,0 +24746424,0.066385033 +24746532,0.066385033 +24746532,0 +24746544,0 +24746544,0.071062161 +24746592,0.071062161 +24746592,0 +24755460,0 +24755460,0.043150272 +24755616,0.043150272 +24755616,0 +24762720,0 +24762720,0.0082981291 +24762726,0.0082981291 +24762726,0 +24763332,0 +24763332,0.25165963 +24763380,0.25165963 +24763380,0 +24765528,0 +24765528,0.21665661 +24765552,0.21665661 +24765552,0 +24776598,0 +24776598,0.18919734 +24776610,0.18919734 +24776610,0 +24777894,0 +24777894,0.12522631 +24777936,0.12522631 +24777936,0 +24779760,0 +24779760,0.30703078 +24779790,0.30703078 +24779790,0 +24785052,0 +24785052,0.087507544 +24785058,0.087507544 +24785058,0 +24785166,0 +24785166,0.25799638 +24785286,0.26131563 +24785286,0 +24785298,0 +24785298,0.26131563 +24785370,0.25799638 +24785370,0 +24787860,0 +24787860,0.2469825 +24787872,0.2469825 +24787872,0 +24821118,0 +24821118,0.18059747 +24821124,0.18059747 +24821124,0 +24821238,0 +24821238,0.24909475 +24821310,0.24909475 +24821310,0 +24821742,0 +24821742,0.19447797 +24821856,0.19447797 +24821856,0 +24821862,0 +24821862,0.017501509 +24821868,0.017501509 +24821868,0 +24825306,0 +24825306,0.19538322 +24825324,0.19538322 +24825324,0 +24829020,0 +24829020,0.084791792 +24829038,0.084791792 +24829038,0 +24829134,0 +24829134,0.23823174 +24829152,0.23823174 +24829152,0 +24829248,0 +24829248,0.074381412 +24829296,0.074381412 +24829296,0 +24829326,0 +24829326,0.52896801 +24829764,0.52896801 +24829764,0 +24829884,0 +24829884,0.054315027 +24829890,0.054315027 +24829890,0 +24829998,0 +24829998,0.20715148 +24830010,0.20715148 +24830010,0 +24830118,0 +24830118,0.30401328 +24830154,0.30401328 +24830154,0 +24830232,0 +24830232,0.17878696 +24830286,0.17878696 +24830286,0 +24836538,0 +24836538,0.037567894 +24836544,0.037567894 +24836544,0 +24836652,0 +24836652,0.11315631 +24836754,0.11315631 +24836754,0 +24836766,0 +24836766,0.065328908 +24836826,0.065328908 +24836826,0 +24837054,0 +24837054,0.36119493 +24837072,0.36119493 +24837072,0 +24837168,0 +24837168,0.11994568 +24837174,0.11994568 +24837174,0 +24840840,0 +24840840,0.17954134 +24840900,0.17954134 +24840900,0 +24843672,0 +24843672,0.20534098 +24843786,0.046922148 +24843786,0 +24843792,0 +24843792,0.046922148 +24843798,0.20534098 +24843798,0 +24843900,0 +24843900,0.18210622 +24843930,0.18210622 +24843930,0 +24844020,0 +24844020,0.18708509 +24844026,0.18708509 +24844026,0 +24844134,0 +24844134,0.10199155 +24844188,0.10199155 +24844188,0 +24844248,0 +24844248,0.22042849 +24844332,0.22042849 +24844332,0 +24844368,0 +24844368,0.29209415 +24844482,0.12945081 +24844482,0 +24844524,0 +24844524,0.12945081 +24844530,0.29209415 +24844530,0 +24844578,0 +24844578,0.068044659 +24844584,0.068044659 +24844584,0 +24844596,0 +24844596,0.25 +24844638,0.25 +24844638,0 +24846144,0 +24846144,0.056427278 +24846180,0.056427278 +24846180,0 +24846258,0 +24846258,0.059897405 +24846264,0.059897405 +24846264,0 +24849894,0 +24849894,0.12628244 +24849912,0.12628244 +24849912,0 +24851310,0 +24851310,0.27157514 +24851328,0.27157514 +24851328,0 +24856398,0 +24856398,0.075286663 +24856404,0.075286663 +24856404,0 +24858468,0 +24858468,0.18693422 +24858528,0.18693422 +24858528,0 +24858708,0 +24858708,0.31004828 +24858720,0.31004828 +24858720,0 +24861582,0 +24861582,0.22133374 +24861600,0.22133374 +24861600,0 +24863628,0 +24863628,0.22570911 +24863712,0.22570911 +24863712,0 +24865176,0 +24865176,0.28183464 +24865200,0.28183464 +24865200,0 +24865290,0 +24865290,0.10033193 +24865368,0.10033193 +24865368,0 +24865404,0 +24865404,0.23657212 +24865416,0.23657212 +24865416,0 +24865524,0 +24865524,0.17063971 +24865530,0.17063971 +24865530,0 +24865638,0 +24865638,0.25678938 +24865704,0.25678938 +24865704,0 +24869964,0 +24869964,0.19296922 +24870156,0.19296922 +24870156,0 +24885234,0 +24885234,0.091128546 +24885240,0.091128546 +24885240,0 +24905196,0 +24905196,0.07045866 +24905214,0.07045866 +24905214,0 +24905310,0 +24905310,0.064423657 +24905316,0.064423657 +24905316,0 +24905424,0 +24905424,0.11391068 +24905430,0.11391068 +24905430,0 +24906408,0 +24906408,0.032438141 +24906426,0.032438141 +24906426,0 +24906528,0 +24906528,0.28530477 +24906570,0.28530477 +24906570,0 +24908766,0 +24908766,0.0073928787 +24908868,0.0073928787 +24908868,0 +24908886,0 +24908886,0.095051298 +24908892,0.095051298 +24908892,0 +24909078,0 +24909078,0.17395896 +24909126,0.17395896 +24909126,0 +24917130,0 +24917130,0.073627037 +24917136,0.073627037 +24917136,0 +24925158,0 +24925158,0.27595051 +24925164,0.27595051 +24925164,0 +24929688,0 +24929688,0.14136995 +24929706,0.14136995 +24929706,0 +24931278,0 +24931278,0.26357876 +24931542,0.26357876 +24931542,0 +24937434,0 +24937434,0.093995172 +24937548,0.21047073 +24937548,0 +24937560,0 +24937560,0 +24937560,0.21047073 +24937560,0.093995172 +24942000,0 +24942000,0.24064575 +24942084,0.24064575 +24942084,0 +24942384,0 +24942384,0.0078455039 +24942426,0.0078455039 +24942426,0 +24942588,0 +24942588,0.22827399 +24942684,0.22827399 +24942684,0 +24943122,0 +24943122,0.12115269 +24943128,0.12115269 +24943128,0 +24943176,0 +24943176,0.18482197 +24943260,0.18482197 +24943260,0 +24943764,0 +24943764,0.19764635 +24943812,0.19764635 +24943812,0 +24945300,0 +24945300,0.21816536 +24945360,0.21816536 +24945360,0 +24945420,0 +24945420,0.14333132 +24945444,0.14333132 +24945444,0 +24946044,0 +24946044,0.37733856 +24946074,0.37733856 +24946074,0 +24946356,0 +24946356,0.12024744 +24946374,0.12024744 +24946374,0 +24950220,0 +24950220,0.1410682 +24950256,0.1410682 +24950256,0 +24958890,0 +24958890,0.28892577 +24958980,0.28892577 +24958980,0 +24961902,0 +24961902,0.23913699 +24961926,0.23913699 +24961926,0 +24965454,0 +24965454,0.0089016295 +24965460,0.0089016295 +24965460,0 +24966066,0 +24966066,0.13955944 +24966090,0.13955944 +24966090,0 +24966180,0 +24966180,0.2911889 +24966186,0.2911889 +24966186,0 +24966420,0 +24966420,0.027911889 +24966426,0.027911889 +24966426,0 +24966534,0 +24966534,0.28258902 +24966552,0.28258902 +24966552,0 +24966654,0 +24966654,0.2578455 +24966690,0.2578455 +24966690,0 +24966768,0 +24966768,0.01010863 +24966774,0.01010863 +24966774,0 +24988410,0 +24988410,0.12884731 +24988440,0.12884731 +24988440,0 +24988524,0 +24988524,0.0073928787 +24988542,0.0073928787 +24988542,0 +24998700,0 +24998700,0.20443573 +24998724,0.20443573 +24998724,0 +24998814,0 +24998814,0.35078455 +24998826,0.35078455 +24998826,0 +24999492,0 +24999492,0.038774894 +24999498,0.038774894 +24999498,0 +25001076,0 +25001076,0.13548582 +25001088,0.13548582 +25001088,0 +25001190,0 +25001190,0.16505733 +25001256,0.16505733 +25001256,0 +25005372,0 +25005372,0.066535908 +25005426,0.18120097 +25005426,0 +25005456,0 +25005456,0 +25005456,0.18120097 +25005456,0.066535908 +25005606,0 +25005606,0.40872058 +25005924,0.40872058 +25005924,0 +25007436,0 +25007436,0.28575739 +25007580,0.27112251 +25007580,0 +25007598,0 +25007598,0.27112251 +25008138,0.28575739 +25008138,0 +25009212,0 +25009212,0.17380809 +25009248,0.17380809 +25009248,0 +25015038,0 +25015038,0.020669885 +25015044,0.020669885 +25015044,0 +25020144,0 +25020144,0.14363307 +25020150,0.14363307 +25020150,0 +25020258,0 +25020258,0.055371153 +25020264,0.055371153 +25020264,0 +25027638,0 +25027638,0.081321666 +25027644,0.081321666 +25027644,0 +25027752,0 +25027752,0.20262523 +25027812,0.20262523 +25027812,0 +25027866,0 +25027866,0.0051297526 +25027872,0.0051297526 +25027872,0 +25032390,0 +25032390,0.056578153 +25032408,0.056578153 +25032408,0 +25034502,0 +25034502,0.30220278 +25034682,0.30220278 +25034682,0 +25034982,0 +25034982,0.19779722 +25034988,0.19779722 +25034988,0 +25035126,0 +25035126,0.20850935 +25035174,0.20850935 +25035174,0 +25039854,0 +25039854,0.35621605 +25039872,0.35621605 +25039872,0 +25041348,0 +25041348,0.033343392 +25041354,0.033343392 +25041354,0 +25044276,0 +25044276,0.19146047 +25044324,0.19146047 +25044324,0 +25045176,0 +25045176,0.13669282 +25045224,0.13669282 +25045224,0 +25045290,0 +25045290,0.2530175 +25045314,0.2530175 +25045314,0 +25045392,0 +25045392,0.17214846 +25045476,0.17214846 +25045476,0 +25045506,0 +25045506,0.27715751 +25045524,0.27715751 +25045524,0 +25045620,0 +25045620,0.27851539 +25045650,0.27851539 +25045650,0 +25045740,0 +25045740,0.21695836 +25045758,0.21695836 +25045758,0 +25058640,0 +25058640,0.72842486 +25058976,0.72842486 +25058976,0 +25079544,0 +25079544,0.24230537 +25079922,0.24230537 +25079922,0 +25081134,0 +25081134,0.059595655 +25081140,0.059595655 +25081140,0 +25087458,0 +25087458,0.16279421 +25087494,0.16279421 +25087494,0 +25087572,0 +25087572,0.19568497 +25087590,0.19568497 +25087590,0 +25087650,0 +25087650,0.22933011 +25087674,0.22933011 +25087674,0 +25090158,0 +25090158,0.098823174 +25090182,0.098823174 +25090182,0 +25090278,0 +25090278,0.20715148 +25090296,0.20715148 +25090296,0 +25093872,0 +25093872,0.17954134 +25094202,0.17954134 +25094202,0 +25094328,0 +25094328,0.19357272 +25094382,0.19357272 +25094382,0 +25094910,0 +25094910,0.16369946 +25094982,0.16369946 +25094982,0 +25095498,0 +25095498,0.17456246 +25095564,0.17456246 +25095564,0 +25096086,0 +25096086,0.19764635 +25096176,0.19764635 +25096176,0 +25096674,0 +25096674,0.22299336 +25096782,0.22299336 +25096782,0 +25108044,0 +25108044,0.18406759 +25108080,0.18406759 +25108080,0 +25108158,0 +25108158,0.0069402535 +25108188,0.0069402535 +25108188,0 +25108272,0 +25108272,0.30356065 +25108302,0.30356065 +25108302,0 +25108392,0 +25108392,0.25467713 +25108416,0.25467713 +25108416,0 +25108506,0 +25108506,0.31306578 +25108536,0.31306578 +25108536,0 +25111752,0 +25111752,0.24200362 +25111836,0.24200362 +25111836,0 +25114248,0 +25114248,0.073627037 +25114254,0.073627037 +25114254,0 +25114362,0 +25114362,0.35063368 +25114392,0.35063368 +25114392,0 +25116204,0 +25116204,0.40359083 +25116282,0.40359083 +25116282,0 +25119702,0 +25119702,0.25075438 +25119750,0.25075438 +25119750,0 +25120638,0 +25120638,0.21529873 +25120716,0.21529873 +25120716,0 +25120752,0 +25120752,0.15178033 +25120764,0.15178033 +25120764,0 +25124268,0 +25124268,0.14981895 +25124298,0.14981895 +25124298,0 +25124382,0 +25124382,0.23747737 +25124388,0.23747737 +25124388,0 +25124610,0 +25124610,0.33765842 +25124754,0.33765842 +25124754,0 +25130652,0 +25130652,0.16053108 +25130694,0.16053108 +25130694,0 +25130766,0 +25130766,0.29390465 +25130802,0.29390465 +25130802,0 +25134282,0 +25134282,0.12432106 +25134300,0.12432106 +25134300,0 +25168980,0 +25168980,0.21273386 +25169010,0.21273386 +25169010,0 +25169814,0 +25169814,0.1483102 +25169874,0.1483102 +25169874,0 +25173588,0 +25173588,0.2094146 +25173606,0.2094146 +25173606,0 +25173702,0 +25173702,0.15766445 +25173708,0.15766445 +25173708,0 +25173822,0 +25173822,0.15811708 +25173882,0.15811708 +25173882,0 +25181316,0 +25181316,0.092788171 +25181352,0.092788171 +25181352,0 +25186152,0 +25186152,0.41973446 +25186776,0.41973446 +25186776,0 +25191426,0 +25191426,0.14423657 +25191456,0.14423657 +25191456,0 +25192932,0 +25192932,0.03092939 +25192938,0.03092939 +25192938,0 +25199496,0 +25199496,0.19477972 +25199502,0.19477972 +25199502,0 +25200642,0 +25200642,0.1567592 +25200696,0.1567592 +25200696,0 +25207362,0 +25207362,0.16882921 +25207392,0.16882921 +25207392,0 +25207896,0 +25207896,0.24411587 +25207902,0.24411587 +25207902,0 +25208010,0 +25208010,0.11783343 +25208052,0 +25208052,0 +25208052,0.11783343 +25208052,0.55552203 +25208130,0.050995775 +25208130,0 +25208136,0 +25208136,0.050995775 +25208172,0.55552203 +25208172,0 +25208244,0 +25208244,0.15162945 +25208280,0.15162945 +25208280,0 +25208694,0 +25208694,0.3068799 +25208808,0.15283645 +25208808,0 +25208826,0 +25208826,0.3068799 +25208832,0.15283645 +25208832,0 +25208928,0 +25208928,0.13986119 +25208934,0.13986119 +25208934,0 +25209042,0 +25209042,0.16535908 +25209054,0.16535908 +25209054,0 +25213710,0 +25213710,0.1543452 +25213740,0.1543452 +25213740,0 +25213824,0 +25213824,0.03032589 +25213830,0.03032589 +25213830,0 +25213938,0 +25213938,0.061104406 +25213944,0.061104406 +25213944,0 +25214058,0 +25214058,0.22420036 +25214082,0.22420036 +25214082,0 +25214172,0 +25214172,0.13412794 +25214178,0.13412794 +25214178,0 +25214286,0 +25214286,0.0057332529 +25214292,0.0057332529 +25214292,0 +25214406,0 +25214406,0.23717562 +25214496,0.23717562 +25214496,0 +25215480,0 +25215480,0.25739288 +25215486,0.25739288 +25215486,0 +25215594,0 +25215594,0.20745323 +25215624,0.20745323 +25215624,0 +25215714,0 +25215714,0.33011467 +25215804,0.33011467 +25215804,0 +25218804,0 +25218804,0.075890163 +25218816,0.075890163 +25218816,0 +25252542,0 +25252542,0.20715148 +25252572,0.20715148 +25252572,0 +25255596,0 +25255596,0.13095957 +25255608,0.13095957 +25255608,0 +25255644,0 +25255644,0.082528666 +25255656,0.082528666 +25255656,0 +25256598,0 +25256598,0.1937236 +25256604,0.1937236 +25256604,0 +25256712,0 +25256712,0.08056729 +25256718,0.08056729 +25256718,0 +25256886,0 +25256886,0.33192517 +25257330,0.33192517 +25257330,0 +25261290,0 +25261290,0.0028666264 +25261296,0.0028666264 +25261296,0 +25265196,0 +25265196,0.29737477 +25265304,0.29737477 +25265304,0 +25266072,0 +25266072,0.11813518 +25266078,0.11813518 +25266078,0 +25267140,0 +25267140,0.6077248 +25267290,0.6077248 +25267290,0 +25270230,0 +25270230,0.11436331 +25270248,0.11436331 +25270248,0 +25270344,0 +25270344,0.061707906 +25270350,0.061707906 +25270350,0 +25270458,0 +25270458,0.21952323 +25270464,0.21952323 +25270464,0 +25270542,0 +25270542,0.20322873 +25270578,0.093844297 +25270578,0 +25270602,0 +25270602,0.093844297 +25270614,0.20322873 +25270614,0 +25270692,0 +25270692,0.1077248 +25270794,0.1077248 +25270794,0 +25270806,0 +25270806,0.11587206 +25270902,0.11587206 +25270902,0 +25274760,0 +25274760,0.28877489 +25274814,0.28877489 +25274814,0 +25279140,0 +25279140,0.28817139 +25279170,0.28817139 +25279170,0 +25279254,0 +25279254,0.23249849 +25279266,0.23249849 +25279266,0 +25279374,0 +25279374,0.20775498 +25279422,0.20775498 +25279422,0 +25279488,0 +25279488,0.17607121 +25279512,0.17607121 +25279512,0 +25279602,0 +25279602,0.1997586 +25279626,0.1997586 +25279626,0 +25283688,0 +25283688,0.21876886 +25283772,0.21876886 +25283772,0 +25283808,0 +25283808,0.13156307 +25283868,0.13156307 +25283868,0 +25283922,0 +25283922,0.34791792 +25283934,0.34791792 +25283934,0 +25284036,0 +25284036,0.12975256 +25284054,0.12975256 +25284054,0 +25284156,0 +25284156,0.016294508 +25284270,0.3092939 +25284270,0 +25284300,0 +25284300,0.3092939 +25284372,0.016294508 +25284372,0 +25284384,0 +25284384,0.022933011 +25284390,0.022933011 +25284390,0 +25294008,0 +25294008,0.2088111 +25294020,0.2088111 +25294020,0 +25294566,0 +25294566,0.22178636 +25294596,0.22178636 +25294596,0 +25294746,0 +25294746,0.15283645 +25294770,0.15283645 +25294770,0 +25296042,0 +25296042,0.1041038 +25296072,0.1041038 +25296072,0 +25296222,0 +25296222,0.43497284 +25296504,0.43497284 +25296504,0 +25297290,0 +25297290,0.22797224 +25297314,0.22797224 +25297314,0 +25298532,0 +25298532,0.0084490042 +25298538,0.0084490042 +25298538,0 +25298652,0 +25298652,0.085847918 +25298658,0.085847918 +25298658,0 +25299018,0 +25299018,0.1949306 +25299042,0.1949306 +25299042,0 +25299666,0 +25299666,0.32121304 +25299744,0.32121304 +25299744,0 +25301304,0 +25301304,0.076644538 +25301316,0.076644538 +25301316,0 +25301418,0 +25301418,0.009957755 +25301442,0.009957755 +25301442,0 +25301538,0 +25301538,0.087054919 +25301544,0.087054919 +25301544,0 +25301652,0 +25301652,0.18587809 +25301688,0.18587809 +25301688,0 +25301766,0 +25301766,0.13955944 +25301784,0.13955944 +25301784,0 +25301880,0 +25301880,0.31608328 +25301916,0.31608328 +25301916,0 +25302000,0 +25302000,0.3468618 +25302006,0.3468618 +25302006,0 +25302114,0 +25302114,0.22344599 +25302120,0.22344599 +25302120,0 +25302228,0 +25302228,0.0076946288 +25302258,0.0076946288 +25302258,0 +25304160,0 +25304160,0.08056729 +25304166,0.08056729 +25304166,0 +25304280,0 +25304280,0.1973446 +25304358,0.1973446 +25304358,0 +25304394,0 +25304394,0.014484007 +25304442,0.014484007 +25304442,0 +25306122,0 +25306122,0.1035003 +25306152,0.1035003 +25306152,0 +25306236,0 +25306236,0.11255281 +25306290,0.11255281 +25306290,0 +25306356,0 +25306356,0.065932408 +25306362,0.065932408 +25306362,0 +25310652,0 +25310652,0.12432106 +25310688,0.12432106 +25310688,0 +25311774,0 +25311774,0.061104406 +25311780,0.061104406 +25311780,0 +25311894,0 +25311894,0.025196138 +25311900,0.025196138 +25311900,0 +25312008,0 +25312008,0.20141823 +25312086,0.20141823 +25312086,0 +25324752,0 +25324752,0.041188896 +25324782,0.041188896 +25324782,0 +25324866,0 +25324866,0.05974653 +25324872,0.05974653 +25324872,0 +25324986,0 +25324986,0.11919131 +25324992,0.11919131 +25324992,0 +25325100,0 +25325100,0.3583283 +25325118,0.3583283 +25325118,0 +25325214,0 +25325214,0.27504526 +25325274,0.27504526 +25325274,0 +25325334,0 +25325334,0.10380205 +25325412,0.10380205 +25325412,0 +25325448,0 +25325448,0.074834037 +25325490,0.074834037 +25325490,0 +25325562,0 +25325562,0.29315027 +25325568,0.29315027 +25325568,0 +25325682,0 +25325682,0.11496681 +25325742,0.11496681 +25325742,0 +25325796,0 +25325796,0.063820157 +25325802,0.063820157 +25325802,0 +25325910,0 +25325910,0.14302957 +25325940,0.14302957 +25325940,0 +25342920,0 +25342920,0.05054315 +25342926,0.05054315 +25342926,0 +25343034,0 +25343034,0.38065782 +25343040,0.38065782 +25343040,0 +25346298,0 +25346298,0.24954737 +25346322,0.24954737 +25346322,0 +25346400,0 +25346400,0.1489137 +25346424,0.1489137 +25346424,0 +25346514,0 +25346514,0.024592637 +25346538,0.024592637 +25346538,0 +25346628,0 +25346628,0.29692215 +25346706,0.29692215 +25346706,0 +25349220,0 +25349220,0.22555824 +25349226,0.22555824 +25349226,0 +25349622,0 +25349622,0.16716958 +25349718,0.16716958 +25349718,0 +25350348,0 +25350348,0.21197948 +25350384,0.21197948 +25350384,0 +25350462,0 +25350462,0.28515389 +25350480,0.28515389 +25350480,0 +25350576,0 +25350576,0.096258298 +25350588,0.096258298 +25350588,0 +25353990,0 +25353990,0.22178636 +25354068,0.22178636 +25354068,0 +25354512,0 +25354512,0.21197948 +25354530,0.21197948 +25354530,0 +25354578,0 +25354578,0.17697646 +25354626,0.14272782 +25354626,0 +25354650,0 +25354650,0.17697646 +25354686,0.14272782 +25354686,0 +25357098,0 +25357098,0.0042245021 +25357104,0.0042245021 +25357104,0 +25360206,0 +25360206,0.33765842 +25360260,0.11979481 +25360260,0 +25360296,0 +25360296,0.33765842 +25360308,0.11979481 +25360308,0 +25361976,0 +25361976,0.28500302 +25362054,0.28500302 +25362054,0 +25362090,0 +25362090,0.33388654 +25362132,0.33388654 +25362132,0 +25362210,0 +25362210,0.19296922 +25362216,0.19296922 +25362216,0 +25362324,0 +25362324,0.23762824 +25362342,0.23762824 +25362342,0 +25362438,0 +25362438,0.27036814 +25362456,0.27036814 +25362456,0 +25364664,0 +25364664,0.32045866 +25364736,0.32045866 +25364736,0 +25365108,0 +25365108,0.020368135 +25365120,0.020368135 +25365120,0 +25366734,0 +25366734,0.038774894 +25366752,0.038774894 +25366752,0 +25366848,0 +25366848,0.26704888 +25366854,0.26704888 +25366854,0 +25371762,0 +25371762,0.27398914 +25371846,0.27398914 +25371846,0 +25371876,0 +25371876,0.19477972 +25371912,0.19477972 +25371912,0 +25371990,0 +25371990,0.12688594 +25372110,0.12658419 +25372110,0 +25372134,0 +25372134,0.12688594 +25372140,0.12658419 +25372140,0 +25372224,0 +25372224,0.21997586 +25372230,0.21997586 +25372230,0 +25372338,0 +25372338,0.0508449 +25372344,0.0508449 +25372344,0 +25372884,0 +25372884,0.3038624 +25372908,0.3038624 +25372908,0 +25372998,0 +25372998,0.34550392 +25373022,0.34550392 +25373022,0 +25374294,0 +25374294,0.37914906 +25374312,0.37914906 +25374312,0 +25374408,0 +25374408,0.33630054 +25374480,0.33630054 +25374480,0 +25376928,0 +25376928,0.0076946288 +25376934,0.0076946288 +25376934,0 +25379418,0 +25379418,0.25226313 +25379424,0.25226313 +25379424,0 +25379568,0 +25379568,0.13925769 +25379580,0.13925769 +25379580,0 +25384986,0 +25384986,0.16385033 +25385040,0.16385033 +25385040,0 +25388850,0 +25388850,0.12884731 +25388868,0.12884731 +25388868,0 +25397628,0 +25397628,0.041339771 +25397634,0.041339771 +25397634,0 +25403268,0 +25403268,0.14966807 +25403286,0.14966807 +25403286,0 +25411062,0 +25411062,0.0502414 +25411068,0.0502414 +25411068,0 +25411182,0 +25411182,0.12794206 +25411188,0.12794206 +25411188,0 +25421616,0 +25421616,0.17169584 +25421688,0.17169584 +25421688,0 +25421730,0 +25421730,0.17214846 +25421784,0.17214846 +25421784,0 +25421844,0 +25421844,0.18029572 +25421856,0.18029572 +25421856,0 +25421964,0 +25421964,0.31351841 +25422006,0.31351841 +25422006,0 +25422078,0 +25422078,0.24185275 +25422096,0.24185275 +25422096,0 +25422294,0 +25422294,0.2445685 +25422726,0.2445685 +25422726,0 +25424130,0 +25424130,0.37251056 +25424712,0.37251056 +25424712,0 +25429362,0 +25429362,0.087054919 +25429380,0.087054919 +25429380,0 +25432608,0 +25432608,0.31834641 +25432644,0.31834641 +25432644,0 +25432722,0 +25432722,0.068949909 +25432728,0.068949909 +25432728,0 +25432842,0 +25432842,0.016294508 +25432854,0.016294508 +25432854,0 +25432956,0 +25432956,0.078002414 +25432980,0.078002414 +25432980,0 +25435008,0 +25435008,0.11919131 +25435014,0.11919131 +25435014,0 +25435212,0 +25435212,0.27398914 +25435230,0.27398914 +25435230,0 +25435326,0 +25435326,0.13488232 +25435332,0.13488232 +25435332,0 +25436430,0 +25436430,0.33856367 +25436466,0.33856367 +25436466,0 +25436544,0 +25436544,0.15283645 +25436568,0.15283645 +25436568,0 +25436664,0 +25436664,0.12884731 +25436694,0.12884731 +25436694,0 +25436778,0 +25436778,0.10425468 +25436808,0.10425468 +25436808,0 +25437948,0 +25437948,0.18044659 +25438008,0.18044659 +25438008,0 +25438740,0 +25438740,0.16264333 +25438752,0.16264333 +25438752,0 +25443174,0 +25443174,0.43361497 +25444710,0.43361497 +25444710,0 +25450638,0 +25450638,0.0093542547 +25450680,0.0093542547 +25450680,0 +25451460,0 +25451460,0.084037417 +25451496,0.084037417 +25451496,0 +25451580,0 +25451580,0.0496379 +25451586,0.0496379 +25451586,0 +25451694,0 +25451694,0.053560652 +25451700,0.053560652 +25451700,0 +25451808,0 +25451808,0.21499698 +25451838,0 +25451838,0 +25451838,0.15343995 +25451838,0.21499698 +25451850,0.15343995 +25451850,0 +25451958,0 +25451958,0.11451418 +25451988,0.11451418 +25451988,0 +25452072,0 +25452072,0.2984309 +25452078,0.2984309 +25452078,0 +25452186,0 +25452186,0.068799034 +25452198,0.068799034 +25452198,0 +25452936,0 +25452936,0.241551 +25453002,0.241551 +25453002,0 +25453518,0 +25453518,0.1973446 +25453596,0.1973446 +25453596,0 +25454106,0 +25454106,0.26946288 +25454172,0.26946288 +25454172,0 +25454694,0 +25454694,0.17803259 +25454766,0.17803259 +25454766,0 +25455282,0 +25455282,0.16053108 +25455330,0.16053108 +25455330,0 +25465026,0 +25465026,0.13111044 +25465038,0.13111044 +25465038,0 +25467840,0 +25467840,0.062009656 +25467852,0.062009656 +25467852,0 +25467960,0 +25467960,0.14333132 +25467996,0.14333132 +25467996,0 +25468488,0 +25468488,0.077248039 +25468494,0.077248039 +25468494,0 +25468608,0 +25468608,0.11466506 +25468668,0.11466506 +25468668,0 +25468854,0 +25468854,0.2039831 +25468938,0.2039831 +25468938,0 +25469262,0 +25469262,0.16550996 +25469268,0.16550996 +25469268,0 +25469436,0 +25469436,0.25437538 +25469514,0.25437538 +25469514,0 +25470024,0 +25470024,0.21937236 +25470090,0.21937236 +25470090,0 +25470612,0 +25470612,0.24954737 +25470672,0.24954737 +25470672,0 +25471008,0 +25471008,0.0073928787 +25471050,0.0073928787 +25471050,0 +25471200,0 +25471200,0.16309596 +25471272,0.16309596 +25471272,0 +25471788,0 +25471788,0.1997586 +25471848,0.1997586 +25471848,0 +25472556,0 +25472556,0.21288473 +25472670,0 +25472670,0 +25472670,0 +25472670,0.20775498 +25472670,0.37296319 +25472670,0.21288473 +25472682,0 +25472682,0.37296319 +25472700,0.20775498 +25472700,0 +25472784,0 +25472784,0.11119493 +25472796,0.11119493 +25472796,0 +25472898,0 +25472898,0.19040435 +25473006,0.19040435 +25473006,0 +25473018,0 +25473018,0.086149668 +25473126,0.086149668 +25473126,0 +25476984,0 +25476984,0.24788775 +25477032,0.24788775 +25477032,0 +25477098,0 +25477098,0.17003621 +25477146,0.17003621 +25477146,0 +25477212,0 +25477212,0.033645142 +25477218,0.033645142 +25477218,0 +25480008,0 +25480008,0.10938443 +25480014,0.10938443 +25480014,0 +25509822,0 +25509822,0.0072420036 +25509852,0.0072420036 +25509852,0 +25515792,0 +25515792,0.3044659 +25516122,0.28681352 +25516122,0 +25516134,0 +25516134,0.28681352 +25516158,0.3044659 +25516158,0 +25516236,0 +25516236,0.13654194 +25516272,0.13654194 +25516272,0 +25517100,0 +25517100,0.069402535 +25517106,0.069402535 +25517106,0 +25521150,0 +25521150,0.0502414 +25521204,0.0502414 +25521204,0 +25521210,0 +25521210,0.057181654 +25521216,0.057181654 +25521216,0 +25525224,0 +25525224,0.028515389 +25525236,0.028515389 +25525236,0 +25526148,0 +25526148,0.22555824 +25526172,0.22555824 +25526172,0 +25527960,0 +25527960,0.19990947 +25528092,0.19990947 +25528092,0 +25541724,0 +25541724,0.1997586 +25541748,0.1997586 +25541748,0 +25546350,0 +25546350,0.35018105 +25546356,0.35018105 +25546356,0 +25551420,0 +25551420,0.1955341 +25551432,0.1955341 +25551432,0 +25552470,0 +25552470,0.15600483 +25552542,0.15600483 +25552542,0 +25552584,0 +25552584,0.243965 +25552650,0.243965 +25552650,0 +25554156,0 +25554156,0.15268558 +25554192,0.15268558 +25554192,0 +25558938,0 +25558938,0.096107423 +25558950,0.096107423 +25558950,0 +25558992,0 +25558992,0.15178033 +25559064,0.15178033 +25559064,0 +25561266,0 +25561266,0.0078455039 +25561284,0.0078455039 +25561284,0 +25568070,0 +25568070,0.097314424 +25568082,0.097314424 +25568082,0 +25568190,0 +25568190,0.13231744 +25568232,0.13231744 +25568232,0 +25574364,0 +25574364,0.11225106 +25574454,0.11225106 +25574454,0 +25601760,0 +25601760,0.02021726 +25601772,0.02021726 +25601772,0 +25601880,0 +25601880,0.25135788 +25601988,0.25135788 +25601988,0 +25602660,0 +25602660,0.11496681 +25602666,0.11496681 +25602666,0 +25603332,0 +25603332,0.0508449 +25603338,0.0508449 +25603338,0 +25604670,0 +25604670,0.20684973 +25604688,0.20684973 +25604688,0 +25606974,0 +25606974,0.22948099 +25607022,0.22948099 +25607022,0 +25607094,0 +25607094,0.14152082 +25607148,0.14152082 +25607148,0 +25613916,0 +25613916,0.12054919 +25613958,0.12054919 +25613958,0 +25618416,0 +25618416,0.0078455039 +25618440,0.0078455039 +25618440,0 +25618536,0 +25618536,0.068346409 +25618554,0.068346409 +25618554,0 +25627260,0 +25627260,0.24909475 +25627368,0.24909475 +25627368,0 +25631034,0 +25631034,0.22887749 +25631046,0.22887749 +25631046,0 +25632570,0 +25632570,0.33373567 +25632582,0.33373567 +25632582,0 +25632684,0 +25632684,0.14981895 +25632738,0.14981895 +25632738,0 +25633854,0 +25633854,0.18678334 +25633962,0.18678334 +25633962,0 +25633968,0 +25633968,0.14423657 +25634004,0.14423657 +25634004,0 +25634082,0 +25634082,0.26719976 +25634100,0.26719976 +25634100,0 +25634202,0 +25634202,0.27398914 +25634250,0.27398914 +25634250,0 +25634316,0 +25634316,0.14076645 +25634400,0.14076645 +25634400,0 +25634430,0 +25634430,0.16596258 +25634442,0.16596258 +25634442,0 +25634550,0 +25634550,0.20066385 +25634568,0.20066385 +25634568,0 +25634664,0 +25634664,0.28153289 +25634778,0 +25634778,0 +25634778,0.025950513 +25634778,0.28153289 +25634784,0.025950513 +25634784,0 +25635690,0 +25635690,0.19659022 +25635696,0.19659022 +25635696,0 +25635804,0 +25635804,0.19749547 +25635846,0.19749547 +25635846,0 +25635924,0 +25635924,0.21394086 +25635948,0.21394086 +25635948,0 +25636038,0 +25636038,0.13352444 +25636068,0 +25636068,0 +25636068,0.13352444 +25636068,0.29677127 +25636092,0.29677127 +25636092,0 +25636152,0 +25636152,0.11134581 +25636182,0.0075437538 +25636182,0 +25636200,0 +25636200,0.11134581 +25636272,0.072570911 +25636272,0 +25636278,0 +25636278,0.072570911 +25636332,0.0075437538 +25636332,0 +25637700,0 +25637700,0.00090525045 +25637706,0.00090525045 +25637706,0 +25638372,0 +25638372,0.10742305 +25638456,0.10742305 +25638456,0 +25638492,0 +25638492,0.32166566 +25638528,0.32166566 +25638528,0 +25640220,0 +25640220,0.13789982 +25640244,0.13789982 +25640244,0 +25647414,0 +25647414,0.11179843 +25647492,0.11179843 +25647492,0 +25652088,0 +25652088,0.045564273 +25652130,0.045564273 +25652130,0 +25655148,0 +25655148,0.24894387 +25655166,0.24894387 +25655166,0 +25655268,0 +25655268,0.18376584 +25655298,0.18376584 +25655298,0 +25657188,0 +25657188,0.040585395 +25657194,0.040585395 +25657194,0 +25658670,0 +25658670,0.30582378 +25658784,0.30974653 +25658784,0 +25658796,0 +25658796,0.30582378 +25658844,0.30974653 +25658844,0 +25676052,0 +25676052,0.13699457 +25676112,0.13699457 +25676112,0 +25676166,0 +25676166,0.20413398 +25676286,0.080416415 +25676286,0 +25676292,0 +25676292,0.20413398 +25676316,0.080416415 +25676316,0 +25676400,0 +25676400,0.046318648 +25676532,0.046318648 +25676532,0 +25683684,0 +25683684,0.0490344 +25683714,0.0490344 +25683714,0 +25689096,0 +25689096,0.099728425 +25689306,0.099728425 +25689306,0 +25691838,0 +25691838,0.16732046 +25691874,0.16732046 +25691874,0 +25691958,0 +25691958,0.20549185 +25691976,0.20549185 +25691976,0 +25695630,0 +25695630,0.12945081 +25695666,0.12945081 +25695666,0 +25695690,0 +25695690,0.047676524 +25695714,0.047676524 +25695714,0 +25695744,0 +25695744,0.27610139 +25695804,0 +25695804,0 +25695804,0.063518407 +25695804,0.27610139 +25695840,0.063518407 +25695840,0 +25697664,0 +25697664,0.18693422 +25697730,0.18693422 +25697730,0 +25697784,0 +25697784,0.26614363 +25697844,0.26614363 +25697844,0 +25697898,0 +25697898,0.13322269 +25697910,0.13322269 +25697910,0 +25698012,0 +25698012,0.23430899 +25698072,0.23430899 +25698072,0 +25702218,0 +25702218,0.034852142 +25702236,0.034852142 +25702236,0 +25703592,0 +25703592,0.24834037 +25703652,0.24834037 +25703652,0 +25708050,0 +25708050,0.2972239 +25708140,0.2972239 +25708140,0 +25723740,0 +25723740,0.044206397 +25723770,0.044206397 +25723770,0 +25728210,0 +25728210,0.12115269 +25728324,0.11164756 +25728324,0 +25728342,0 +25728342,0.12115269 +25728348,0.11164756 +25728348,0 +25730184,0 +25730184,0.16400121 +25730268,0.16400121 +25730268,0 +25730304,0 +25730304,0.19447797 +25730364,0.19447797 +25730364,0 +25733490,0 +25733490,0.12281231 +25733496,0.12281231 +25733496,0 +25735692,0 +25735692,0.1919131 +25735782,0.1919131 +25735782,0 +25736280,0 +25736280,0.18949909 +25736370,0.18949909 +25736370,0 +25736868,0 +25736868,0.22631261 +25736958,0.22631261 +25736958,0 +25737450,0 +25737450,0.18995172 +25737522,0.18995172 +25737522,0 +25738038,0 +25738038,0.17003621 +25738110,0.17003621 +25738110,0 +25738626,0 +25738626,0.21937236 +25738686,0.21937236 +25738686,0 +25739958,0 +25739958,0.26056126 +25740006,0.26056126 +25740006,0 +25772520,0 +25772520,0.11496681 +25772544,0.11496681 +25772544,0 +25772634,0 +25772634,0.0010561255 +25772640,0.0010561255 +25772640,0 +25776300,0 +25776300,0.20051298 +25776312,0.24245625 +25776312,0 +25776372,0 +25776372,0.24245625 +25776390,0.20051298 +25776390,0 +25776414,0 +25776414,0.26584188 +25776444,0.26584188 +25776444,0 +25780398,0 +25780398,0.36783343 +25780662,0.0072420036 +25780662,0 +25780686,0 +25780686,0.0072420036 +25780770,0.28304164 +25780770,0 +25780836,0 +25780836,0.28304164 +25781880,0.36783343 +25781880,0 +25782870,0 +25782870,0.2978274 +25782882,0.2978274 +25782882,0 +25782984,0 +25782984,0.08946892 +25783020,0.08946892 +25783020,0 +25787424,0 +25787424,0.064121907 +25787454,0.064121907 +25787454,0 +25788684,0 +25788684,0.17773084 +25788726,0.17773084 +25788726,0 +25788798,0 +25788798,0.13654194 +25788900,0.13654194 +25788900,0 +25788918,0 +25788918,0.33252867 +25789032,0.046016898 +25789032,0 +25789050,0 +25789050,0.33252867 +25789062,0.046016898 +25789062,0 +25789146,0 +25789146,0.13292094 +25789236,0.13292094 +25789236,0 +25796016,0 +25796016,0.59656005 +25796040,0.28092939 +25796040,0 +25796064,0 +25796064,0.28092939 +25796094,0.59656005 +25796094,0 +25796160,0 +25796160,0.15359083 +25796184,0.15359083 +25796184,0 +25796274,0 +25796274,0.042848521 +25796382,0.042848521 +25796382,0 +25796388,0 +25796388,0.0076946288 +25796454,0.0076946288 +25796454,0 +25799478,0 +25799478,0.22827399 +25799490,0.22827399 +25799490,0 +25799598,0 +25799598,0.33177429 +25799658,0.33177429 +25799658,0 +25799712,0 +25799712,0.1531382 +25799760,0.1531382 +25799760,0 +25799826,0 +25799826,0.094598672 +25799832,0.094598672 +25799832,0 +25799946,0 +25799946,0.11255281 +25799970,0.11255281 +25799970,0 +25800060,0 +25800060,0.20564273 +25800120,0.20564273 +25800120,0 +25800174,0 +25800174,0.27097164 +25800192,0.27097164 +25800192,0 +25800294,0 +25800294,0.16837658 +25800312,0.16837658 +25800312,0 +25800408,0 +25800408,0.1022933 +25800414,0.1022933 +25800414,0 +25800522,0 +25800522,0.12628244 +25800570,0.12628244 +25800570,0 +25800642,0 +25800642,0.25980688 +25800720,0.25980688 +25800720,0 +25800756,0 +25800756,0.14182257 +25800786,0.14182257 +25800786,0 +25802466,0 +25802466,0.18255884 +25802478,0.18255884 +25802478,0 +25804956,0 +25804956,0.40343995 +25805010,0.40343995 +25805010,0 +25810698,0 +25810698,0.17939046 +25810704,0.17939046 +25810704,0 +25812588,0 +25812588,0.10817743 +25812594,0.10817743 +25812594,0 +25815804,0 +25815804,0.12070006 +25815822,0.12070006 +25815822,0 +25820148,0 +25820148,0.18346409 +25820166,0.18346409 +25820166,0 +25820268,0 +25820268,0.041490646 +25820274,0.041490646 +25820274,0 +25820382,0 +25820382,0.22329511 +25820448,0.22329511 +25820448,0 +25820496,0 +25820496,0.24652987 +25820520,0.24652987 +25820520,0 +25821108,0 +25821108,0.18255884 +25821132,0.18255884 +25821132,0 +25821834,0 +25821834,0.087658419 +25821864,0.087658419 +25821864,0 +25829040,0 +25829040,0.33177429 +25829058,0.33177429 +25829058,0 +25829154,0 +25829154,0.0081472541 +25829172,0.0081472541 +25829172,0 +25829268,0 +25829268,0.044659022 +25829304,0.044659022 +25829304,0 +25834212,0 +25834212,0.13201569 +25834236,0.13201569 +25834236,0 +25837074,0 +25837074,0.24683162 +25837092,0.24683162 +25837092,0 +25837188,0 +25837188,0.064876282 +25837194,0.064876282 +25837194,0 +25837308,0 +25837308,0.20850935 +25837338,0.20850935 +25837338,0 +25837422,0 +25837422,0.0075437538 +25837506,0.0075437538 +25837506,0 +25837536,0 +25837536,0.18572722 +25837656,0.10274593 +25837656,0 +25837698,0 +25837698,0.18572722 +25837770,0.10274593 +25837770,0 +25857498,0 +25857498,0.13925769 +25857510,0.13925769 +25857510,0 +25860006,0 +25860006,0.33856367 +25860366,0.33856367 +25860366,0 +25862454,0 +25862454,0.17426071 +25862460,0.17426071 +25862460,0 +25862574,0 +25862574,0.13805069 +25862652,0.13805069 +25862652,0 +25862688,0 +25862688,0.22691611 +25862706,0.22691611 +25862706,0 +25863858,0 +25863858,0.42622209 +25864446,0.42622209 +25864446,0 +25864608,0 +25864608,0.29586602 +25864632,0.29586602 +25864632,0 +25864722,0 +25864722,0.043602897 +25864746,0.043602897 +25864746,0 +25864836,0 +25864836,0.15087508 +25864950,0.15087508 +25864950,0 +25864956,0 +25864956,0.12598069 +25864962,0.12598069 +25864962,0 +25865070,0 +25865070,0.21529873 +25865166,0.21529873 +25865166,0 +25865184,0 +25865184,0.072420036 +25865412,0.072420036 +25865412,0 +25865688,0 +25865688,0.36330718 +25866462,0.36330718 +25866462,0 +25869060,0 +25869060,0.12160531 +25869096,0.12160531 +25869096,0 +25869576,0 +25869576,0.56834641 +25869582,0.56834641 +25869582,0 +25869870,0 +25869870,0.30039228 +25869888,0.30039228 +25869888,0 +25874664,0 +25874664,0.37643331 +25874676,0.37643331 +25874676,0 +25874778,0 +25874778,0.28153289 +25874838,0.28153289 +25874838,0 +25874892,0 +25874892,0.1973446 +25874976,0.1973446 +25874976,0 +25875372,0 +25875372,0.053711527 +25875414,0.053711527 +25875414,0 +25875486,0 +25875486,0.2923959 +25875582,0.2923959 +25875582,0 +25875600,0 +25875600,0.089318045 +25875606,0.089318045 +25875606,0 +25875714,0 +25875714,0.084791792 +25875738,0.084791792 +25875738,0 +25875834,0 +25875834,0.28922752 +25875852,0.28922752 +25875852,0 +25875948,0 +25875948,0.15872058 +25875972,0.15872058 +25875972,0 +25876062,0 +25876062,0.20443573 +25876074,0.20443573 +25876074,0 +25876182,0 +25876182,0.18255884 +25876218,0.18255884 +25876218,0 +25876296,0 +25876296,0.34942667 +25876350,0.34942667 +25876350,0 +25876410,0 +25876410,0.095654798 +25876476,0.095654798 +25876476,0 +25886454,0 +25886454,0.11074231 +25886478,0.11074231 +25886478,0 +25886568,0 +25886568,0.10546168 +25886604,0.10546168 +25886604,0 +25888104,0 +25888104,0.1543452 +25888134,0.1543452 +25888134,0 +25890312,0 +25890312,0.11934218 +25890324,0.11934218 +25890324,0 +25896540,0 +25896540,0.22118286 +25896570,0.22118286 +25896570,0 +25900218,0 +25900218,0.22193724 +25900254,0.22193724 +25900254,0 +25909830,0 +25909830,0.22706699 +25909848,0.22706699 +25909848,0 +25909944,0 +25909944,0.063971032 +25909956,0.063971032 +25909956,0 +25915614,0 +25915614,0.16279421 +25915626,0.16279421 +25915626,0 +25917258,0 +25917258,0.26252263 +25917288,0.26252263 +25917288,0 +25941084,0 +25941084,0.32287266 +25941132,0.32287266 +25941132,0 +25948428,0 +25948428,0.038925769 +25948434,0.038925769 +25948434,0 +25950120,0 +25950120,0.11345806 +25950126,0.11345806 +25950126,0 +25951122,0 +25951122,0.18904647 +25951710,0.18904647 +25951710,0 +25956276,0 +25956276,0.1549487 +25956306,0.1549487 +25956306,0 +25964382,0 +25964382,0.30431503 +25964394,0.30431503 +25964394,0 +25964496,0 +25964496,0.1059143 +25964502,0.1059143 +25964502,0 +25968684,0 +25968684,0.27745926 +25968726,0.27745926 +25968726,0 +25969032,0 +25969032,0.088714544 +25969050,0.088714544 +25969050,0 +25976124,0 +25976124,0.21303561 +25976148,0.21303561 +25976148,0 +25976238,0 +25976238,0.045413398 +25976268,0.045413398 +25976268,0 +25976352,0 +25976352,0.047223899 +25976358,0.047223899 +25976358,0 +25976472,0 +25976472,0.063367532 +25976478,0.063367532 +25976478,0 +25979748,0 +25979748,0.21394086 +25979772,0.21394086 +25979772,0 +25979862,0 +25979862,0.16475558 +25979886,0.16475558 +25979886,0 +25979976,0 +25979976,0.24245625 +25980012,0.24245625 +25980012,0 +25980048,0 +25980048,0.09067592 +25980054,0.09067592 +25980054,0 +25980096,0 +25980096,0.34550392 +25980126,0.34550392 +25980126,0 +25980162,0 +25980162,0.096710923 +25980198,0.096710923 +25980198,0 +25980282,0 +25980282,0.20850935 +25980324,0.20850935 +25980324,0 +25984404,0 +25984404,0.20669885 +25984470,0.20669885 +25984470,0 +25987014,0 +25987014,0.12960169 +25987026,0.12960169 +25987026,0 +25989072,0 +25989072,0.037115269 +25989084,0.037115269 +25989084,0 +25989138,0 +25989138,0.26931201 +25989192,0.051599276 +25989192,0 +25989198,0 +25989198,0.26931201 +25989240,0.051599276 +25989240,0 +25990416,0 +25990416,0.81125528 +25990752,0.81125528 +25990752,0 +25991742,0 +25991742,0.38412794 +25992000,0.38412794 +25992000,0 +25992810,0 +25992810,0.24109837 +25992828,0.24109837 +25992828,0 +25995108,0 +25995108,0.032890766 +25995114,0.032890766 +25995114,0 +25995222,0 +25995222,0.12039831 +25995240,0.12039831 +25995240,0 +25995366,0 +25995366,0.21378998 +25995426,0.21378998 +25995426,0 +25996722,0 +25996722,0.38246832 +25997004,0.38246832 +25997004,0 +25997946,0 +25997946,0.13639107 +25997958,0.13639107 +25997958,0 +26034972,0 +26034972,0.04043452 +26034978,0.04043452 +26034978,0 +26035092,0 +26035092,0.072721786 +26035098,0.072721786 +26035098,0 +26035206,0 +26035206,0.16400121 +26035248,0.16400121 +26035248,0 +26035530,0 +26035530,0.13835244 +26035560,0.13835244 +26035560,0 +26035644,0 +26035644,0.13065782 +26035650,0.13065782 +26035650,0 +26035764,0 +26035764,0.11979481 +26035806,0.11979481 +26035806,0 +26037390,0 +26037390,0.091279421 +26037396,0.091279421 +26037396,0 +26038158,0 +26038158,0.1943271 +26038170,0.1943271 +26038170,0 +26046750,0 +26046750,0.086602293 +26046798,0.086602293 +26046798,0 +26047218,0 +26047218,0.18255884 +26047236,0.18255884 +26047236,0 +26047332,0 +26047332,0.11828606 +26047344,0.11828606 +26047344,0 +26047452,0 +26047452,0.12613156 +26047458,0.12613156 +26047458,0 +26047566,0 +26047566,0.36028968 +26047572,0.36028968 +26047572,0 +26047908,0 +26047908,0.15389258 +26047914,0.15389258 +26047914,0 +26048022,0 +26048022,0.081019916 +26048064,0.081019916 +26048064,0 +26048136,0 +26048136,0.20534098 +26048190,0.20534098 +26048190,0 +26052054,0 +26052054,0.38865419 +26052732,0.38865419 +26052732,0 +26057646,0 +26057646,0.27278214 +26057670,0.27278214 +26057670,0 +26057760,0 +26057760,0.01901026 +26057766,0.01901026 +26057766,0 +26058594,0 +26058594,0.055823778 +26058600,0.055823778 +26058600,0 +26060136,0 +26060136,0.20202173 +26060160,0.20202173 +26060160,0 +26060250,0 +26060250,0.1083283 +26060268,0.1083283 +26060268,0 +26060370,0 +26060370,0.19840072 +26060376,0.00090525045 +26060376,0 +26060382,0 +26060382,0.00090525045 +26060490,0.25799638 +26060490,0 +26060514,0 +26060514,0.19840072 +26060538,0.25799638 +26060538,0 +26060604,0 +26060604,0.22012674 +26060670,0.22012674 +26060670,0 +26064324,0 +26064324,0.080114665 +26064330,0.080114665 +26064330,0 +26064438,0 +26064438,0.084037417 +26064468,0.084037417 +26064468,0 +26067948,0 +26067948,0.17199759 +26068014,0.17199759 +26068014,0 +26068062,0 +26068062,0.18648159 +26068116,0.18648159 +26068116,0 +26068176,0 +26068176,0.007996379 +26068224,0.007996379 +26068224,0 +26068290,0 +26068290,0.10485818 +26068326,0.10485818 +26068326,0 +26068410,0 +26068410,0.13805069 +26068416,0.13805069 +26068416,0 +26072532,0 +26072532,0.44749547 +26072592,0.44749547 +26072592,0 +26072832,0 +26072832,0.53590827 +26072844,0.53590827 +26072844,0 +26075868,0 +26075868,0.16716958 +26075892,0.16716958 +26075892,0 +26075982,0 +26075982,0.11134581 +26075988,0.11134581 +26075988,0 +26076072,0 +26076072,0.2923959 +26076078,0.2923959 +26076078,0 +26076216,0 +26076216,0.0078455039 +26076228,0.0078455039 +26076228,0 +26076330,0 +26076330,0.28756789 +26076372,0.28756789 +26076372,0 +26076444,0 +26076444,0.0082981291 +26076462,0.0082981291 +26076462,0 +26077386,0 +26077386,0.13563669 +26077422,0.13563669 +26077422,0 +26077500,0 +26077500,0.097917924 +26077506,0.097917924 +26077506,0 +26077620,0 +26077620,0.13292094 +26077626,0.13292094 +26077626,0 +26079798,0 +26079798,0.21680748 +26079810,0.21680748 +26079810,0 +26079912,0 +26079912,0.14242607 +26080026,0.14242607 +26080026,0 +26085144,0 +26085144,0.3038624 +26085222,0.3038624 +26085222,0 +26085264,0 +26085264,0.11798431 +26085288,0.11798431 +26085288,0 +26085762,0 +26085762,0.084490042 +26085852,0.084490042 +26085852,0 +26085882,0 +26085882,0.007996379 +26085924,0.007996379 +26085924,0 +26085996,0 +26085996,0.049487025 +26086002,0.049487025 +26086002,0 +26086110,0 +26086110,0.33252867 +26086152,0.33252867 +26086152,0 +26090238,0 +26090238,0.15359083 +26090262,0.15359083 +26090262,0 +26108760,0 +26108760,0.11466506 +26108838,0.11466506 +26108838,0 +26112594,0 +26112594,0.31925166 +26112642,0.31925166 +26112642,0 +26116866,0 +26116866,0.14574532 +26116878,0.14574532 +26116878,0 +26119218,0 +26119218,0.2088111 +26119254,0.2088111 +26119254,0 +26120730,0 +26120730,0.23551599 +26120778,0.23551599 +26120778,0 +26121840,0 +26121840,0.22238986 +26121864,0.22238986 +26121864,0 +26126166,0 +26126166,0.40359083 +26126232,0.40359083 +26126232,0 +26126298,0 +26126298,0.21741098 +26126328,0 +26126328,0 +26126328,0.12854556 +26126328,0.21741098 +26126334,0.12854556 +26126334,0 +26126442,0 +26126442,0.19040435 +26126460,0.19040435 +26126460,0 +26128410,0 +26128410,0.29013277 +26128446,0.29013277 +26128446,0 +26132562,0 +26132562,0.19161135 +26132658,0.19161135 +26132658,0 +26132898,0 +26132898,0.22057936 +26132982,0.22057936 +26132982,0 +26133558,0 +26133558,0.0073928787 +26133564,0.0073928787 +26133564,0 +26133672,0 +26133672,0.25045263 +26133690,0.25045263 +26133690,0 +26133792,0 +26133792,0.11104406 +26133876,0.11104406 +26133876,0 +26133906,0 +26133906,0.13442969 +26133954,0.13442969 +26133954,0 +26138550,0 +26138550,0.38095957 +26139282,0.38095957 +26139282,0 +26139876,0 +26139876,0.3044659 +26139906,0.3044659 +26139906,0 +26145744,0 +26145744,0.25709113 +26145756,0.25709113 +26145756,0 +26150706,0 +26150706,0.16294508 +26150724,0.16294508 +26150724,0 +26151606,0 +26151606,0.093542547 +26151720,0.21001811 +26151720,0 +26151726,0 +26151726,0.21001811 +26151882,0.093542547 +26151882,0 +26154804,0 +26154804,0.28108027 +26154834,0.28108027 +26154834,0 +26155734,0 +26155734,0.14001207 +26155848,0.20986723 +26155848,0 +26155938,0 +26155938,0.14001207 +26155956,0.20986723 +26155956,0 +26156010,0 +26156010,0.21695836 +26156040,0.21695836 +26156040,0 +26156130,0 +26156130,0.17576946 +26156202,0.17576946 +26156202,0 +26156244,0 +26156244,0.16913096 +26156352,0.16913096 +26156352,0 +26165646,0 +26165646,0.055069403 +26165652,0.055069403 +26165652,0 +26176584,0 +26176584,0.051297526 +26176626,0.051297526 +26176626,0 +26177946,0 +26177946,0.024894387 +26177952,0.024894387 +26177952,0 +26178060,0 +26178060,0.20775498 +26178114,0.20775498 +26178114,0 +26178174,0 +26178174,0.0075437538 +26178186,0.0075437538 +26178186,0 +26178450,0 +26178450,0.21575136 +26178498,0.21575136 +26178498,0 +26178684,0 +26178684,0.31970428 +26178750,0.31970428 +26178750,0 +26182908,0 +26182908,0.26599276 +26182926,0.26599276 +26182926,0 +26190714,0 +26190714,0.060199155 +26190852,0.060199155 +26190852,0 +26198346,0 +26198346,0.40811708 +26198658,0.40811708 +26198658,0 +26199552,0 +26199552,0.097616174 +26199558,0.097616174 +26199558,0 +26202882,0 +26202882,0.00015087508 +26202888,0.00015087508 +26202888,0 +26204028,0 +26204028,0.04933615 +26204034,0.04933615 +26204034,0 +26208036,0 +26208036,0.081925166 +26208060,0.081925166 +26208060,0 +26208150,0 +26208150,0.053108027 +26208156,0.053108027 +26208156,0 +26208270,0 +26208270,0.24834037 +26208354,0.24834037 +26208354,0 +26208384,0 +26208384,0.027308389 +26208390,0.027308389 +26208390,0 +26208498,0 +26208498,0.060802655 +26208612,0.060802655 +26208612,0 +26211288,0 +26211288,0.20473748 +26211336,0.20473748 +26211336,0 +26211402,0 +26211402,0.3038624 +26211426,0.3038624 +26211426,0 +26211516,0 +26211516,0.17275196 +26211588,0.17275196 +26211588,0 +26211636,0 +26211636,0.11466506 +26211654,0.11466506 +26211654,0 +26220084,0 +26220084,0.072118286 +26220090,0.072118286 +26220090,0 +26222934,0 +26222934,0.077398914 +26222940,0.077398914 +26222940,0 +26223522,0 +26223522,0.062764031 +26223600,0.062764031 +26223600,0 +26223636,0 +26223636,0.1943271 +26223660,0.1943271 +26223660,0 +26223756,0 +26223756,0.13684369 +26223762,0.13684369 +26223762,0 +26223870,0 +26223870,0.034550392 +26223876,0.034550392 +26223876,0 +26223984,0 +26223984,0.094598672 +26223990,0.094598672 +26223990,0 +26225754,0 +26225754,0.20835848 +26225868,0.3432408 +26225868,0 +26225886,0 +26225886,0.20835848 +26225952,0.3432408 +26225952,0 +26233518,0 +26233518,0.0031683766 +26233524,0.0031683766 +26233524,0 +26233632,0 +26233632,0.081170791 +26233638,0.081170791 +26233638,0 +26233674,0 +26233674,0.057936029 +26233704,0.057936029 +26233704,0 +26236734,0 +26236734,0.32649366 +26236740,0.32649366 +26236740,0 +26236848,0 +26236848,0.052806276 +26236944,0.052806276 +26236944,0 +26247624,0 +26247624,0 +26247630,0 +26247630,0 +26253462,0 +26253462,0.63277007 +26253594,0.63277007 +26253594,0 +26293854,0 +26293854,0.051901026 +26293908,0.051901026 +26293908,0 +26297208,0 +26297208,0.36994568 +26297622,0.36994568 +26297622,0 +26299434,0 +26299434,0.29496077 +26299440,0.29496077 +26299440,0 +26302962,0 +26302962,0.24109837 +26302980,0.24109837 +26302980,0 +26303238,0 +26303238,0.29858177 +26303298,0.29858177 +26303298,0 +26303352,0 +26303352,0.057030779 +26303382,0.057030779 +26303382,0 +26303466,0 +26303466,0.041641521 +26303472,0.041641521 +26303472,0 +26303586,0 +26303586,0.1513277 +26303610,0.1513277 +26303610,0 +26303700,0 +26303700,0.26146651 +26303778,0.26146651 +26303778,0 +26303814,0 +26303814,0.13805069 +26303928,0.22706699 +26303928,0 +26303958,0 +26303958,0.13805069 +26304048,0.13201569 +26304048,0 +26304096,0 +26304096,0.22706699 +26304102,0.13201569 +26304102,0 +26305776,0 +26305776,0.049185275 +26305818,0.049185275 +26305818,0 +26305890,0 +26305890,0.10742305 +26305896,0.10742305 +26305896,0 +26306664,0 +26306664,0.12899819 +26306682,0.12899819 +26306682,0 +26306784,0 +26306784,0.042848521 +26306802,0.042848521 +26306802,0 +26306820,0 +26306820,0.35365118 +26306832,0.35365118 +26306832,0 +26310414,0 +26310414,0.28590827 +26310438,0.28590827 +26310438,0 +26320230,0 +26320230,0.21047073 +26320242,0.21047073 +26320242,0 +26320350,0 +26320350,0.17169584 +26320404,0.17169584 +26320404,0 +26321940,0 +26321940,0.26448401 +26321964,0.26448401 +26321964,0 +26325012,0 +26325012,0.027308389 +26325018,0.027308389 +26325018,0 +26325786,0 +26325786,0.27685576 +26325852,0.27685576 +26325852,0 +26325906,0 +26325906,0.23883524 +26325966,0.23883524 +26325966,0 +26326020,0 +26326020,0.22374774 +26326062,0.22374774 +26326062,0 +26326134,0 +26326134,0.0055823778 +26326140,0.0055823778 +26326140,0 +26326248,0 +26326248,0.27278214 +26326278,0.27278214 +26326278,0 +26329692,0 +26329692,0.073476162 +26329698,0.073476162 +26329698,0 +26329806,0 +26329806,0.1446892 +26329932,0.1446892 +26329932,0 +26334564,0 +26334564,0.17652384 +26334624,0.17652384 +26334624,0 +26338812,0 +26338812,0.0075437538 +26338836,0.0075437538 +26338836,0 +26339898,0 +26339898,0.17773084 +26339952,0.17773084 +26339952,0 +26340012,0 +26340012,0.23611949 +26340060,0.23611949 +26340060,0 +26340684,0 +26340684,0.22404949 +26340690,0.22404949 +26340690,0 +26342472,0 +26342472,0.25709113 +26342490,0.25709113 +26342490,0 +26342592,0 +26342592,0.02082076 +26342598,0.02082076 +26342598,0 +26345388,0 +26345388,0.067139409 +26345460,0.067139409 +26345460,0 +26346456,0 +26346456,0.18995172 +26346474,0.18995172 +26346474,0 +26353110,0 +26353110,0.11104406 +26353260,0.11104406 +26353260,0 +26355540,0 +26355540,0.066686783 +26355564,0.066686783 +26355564,0 +26355654,0 +26355654,0.034097767 +26355660,0.034097767 +26355660,0 +26361222,0 +26361222,0.19809897 +26361306,0.19809897 +26361306,0 +26361342,0 +26361342,0.22842486 +26361360,0.22842486 +26361360,0 +26370750,0 +26370750,0.27127339 +26370768,0.27127339 +26370768,0 +26370864,0 +26370864,0.14499095 +26370870,0.14499095 +26370870,0 +26370978,0 +26370978,0.11632468 +26371026,0.11632468 +26371026,0 +26379204,0 +26379204,0.0081472541 +26379216,0.0081472541 +26379216,0 +26379324,0 +26379324,0.36677731 +26379348,0.36677731 +26379348,0 +26379588,0 +26379588,0.10636693 +26379594,0.10636693 +26379594,0 +26382270,0 +26382270,0.26388051 +26382282,0.26388051 +26382282,0 +26382384,0 +26382384,0.23958962 +26382414,0.23958962 +26382414,0 +26384364,0 +26384364,0.10485818 +26384442,0.10485818 +26384442,0 +26384478,0 +26384478,0.33841279 +26384496,0.33841279 +26384496,0 +26387592,0 +26387592,0.33147254 +26387706,0.063518407 +26387706,0 +26387712,0 +26387712,0.063518407 +26387748,0.33147254 +26387748,0 +26388834,0 +26388834,0.083735667 +26388876,0.083735667 +26388876,0 +26393760,0 +26393760,0.22299336 +26393766,0.22299336 +26393766,0 +26393970,0 +26393970,0.3074834 +26393994,0.3074834 +26393994,0 +26394606,0 +26394606,0.20021123 +26394720,0.31336753 +26394720,0 +26394762,0 +26394762,0 +26394762,0.31336753 +26394762,0.20021123 +26412984,0 +26412984,0.16203983 +26413014,0.16203983 +26413014,0 +26413098,0 +26413098,0.18602897 +26413104,0.18602897 +26413104,0 +26413218,0 +26413218,0.16747133 +26413332,0.23974049 +26413332,0 +26413350,0 +26413350,0.16747133 +26413356,0.23974049 +26413356,0 +26414064,0 +26414064,0.28937839 +26414070,0.28937839 +26414070,0 +26415522,0 +26415522,0.072872661 +26415528,0.072872661 +26415528,0 +26415636,0 +26415636,0.0052806276 +26415642,0.0052806276 +26415642,0 +26415750,0 +26415750,0.13261919 +26415774,0.13261919 +26415774,0 +26417340,0 +26417340,0.082981291 +26417388,0.082981291 +26417388,0 +26417454,0 +26417454,0.10078455 +26417460,0.10078455 +26417460,0 +26418480,0 +26418480,0.20896198 +26418558,0.20896198 +26418558,0 +26420562,0 +26420562,0.23204587 +26420592,0.23204587 +26420592,0 +26420676,0 +26420676,0.30114665 +26420700,0.30114665 +26420700,0 +26420790,0 +26420790,0.0490344 +26420796,0.0490344 +26420796,0 +26420910,0 +26420910,0.15389258 +26421006,0.15389258 +26421006,0 +26423364,0 +26423364,0.084490042 +26423376,0.084490042 +26423376,0 +26425812,0 +26425812,0.081925166 +26425818,0.081925166 +26425818,0 +26430132,0 +26430132,0.20911285 +26430150,0.20911285 +26430150,0 +26437374,0 +26437374,0.23928787 +26437416,0.23928787 +26437416,0 +26441472,0 +26441472,0.20684973 +26441502,0.20684973 +26441502,0 +26464464,0 +26464464,0.17486421 +26464470,0.17486421 +26464470,0 +26464752,0 +26464752,0.14740495 +26464764,0.14740495 +26464764,0 +26479482,0 +26479482,0.12492456 +26479530,0.12492456 +26479530,0 +26479602,0 +26479602,0.0069402535 +26479608,0.0069402535 +26479608,0 +26483346,0 +26483346,0.23219674 +26483412,0.23219674 +26483412,0 +26485884,0 +26485884,0.097616174 +26485920,0.097616174 +26485920,0 +26486148,0 +26486148,0.13759807 +26486154,0.13759807 +26486154,0 +26493282,0 +26493282,0.1083283 +26493288,0.1083283 +26493288,0 +26498250,0 +26498250,0.15464695 +26498262,0.15464695 +26498262,0 +26498364,0 +26498364,0.16973446 +26498382,0.16973446 +26498382,0 +26498484,0 +26498484,0.053711527 +26498490,0.053711527 +26498490,0 +26498598,0 +26498598,0.14091732 +26498646,0.14091732 +26498646,0 +26498712,0 +26498712,0.32604104 +26498760,0.32604104 +26498760,0 +26503932,0 +26503932,0.28123114 +26504028,0.28123114 +26504028,0 +26504052,0 +26504052,0.1089318 +26504082,0.1089318 +26504082,0 +26506026,0 +26506026,0.18723597 +26506098,0.18723597 +26506098,0 +26506608,0 +26506608,0.22917924 +26506662,0.22917924 +26506662,0 +26507196,0 +26507196,0.15102595 +26507292,0.15102595 +26507292,0 +26507784,0 +26507784,0.26523838 +26507838,0.26523838 +26507838,0 +26508372,0 +26508372,0.18708509 +26508462,0.18708509 +26508462,0 +26508960,0 +26508960,0.15328908 +26509044,0.15328908 +26509044,0 +26509182,0 +26509182,0.13533494 +26509188,0.13533494 +26509188,0 +26511066,0 +26511066,0.097012674 +26511072,0.097012674 +26511072,0 +26550714,0 +26550714,0.06095353 +26550798,0.06095353 +26550798,0 +26556720,0 +26556720,0.14121907 +26556726,0.14121907 +26556726,0 +26559072,0 +26559072,0.10576343 +26559144,0.10576343 +26559144,0 +26561772,0 +26561772,0.33449004 +26561796,0.33449004 +26561796,0 +26566926,0 +26566926,0.36617381 +26566932,0.36617381 +26566932,0 +26572026,0 +26572026,0.35847918 +26572056,0.35847918 +26572056,0 +26584746,0 +26584746,0.0067893784 +26584752,0.0067893784 +26584752,0 +26587662,0 +26587662,0.34158117 +26587674,0.34158117 +26587674,0 +26589942,0 +26589942,0.16203983 +26590002,0.16203983 +26590002,0 +26590530,0 +26590530,0.20956548 +26590536,0.3020519 +26590536,0 +26590590,0 +26590590,0.20956548 +26591034,0.3020519 +26591034,0 +26595006,0 +26595006,0.32830416 +26595012,0.32830416 +26595012,0 +26595126,0 +26595126,0.16324683 +26595132,0.16324683 +26595132,0 +26595240,0 +26595240,0.013729632 +26595246,0.013729632 +26595246,0 +26595354,0 +26595354,0.16460471 +26595426,0.16460471 +26595426,0 +26595468,0 +26595468,0.18814122 +26595504,0.18814122 +26595504,0 +26595588,0 +26595588,0.28394689 +26595618,0.28394689 +26595618,0 +26596284,0 +26596284,0.17079059 +26596308,0.17079059 +26596308,0 +26596404,0 +26596404,0.17727821 +26596452,0.17727821 +26596452,0 +26599764,0 +26599764,0.22963186 +26599812,0.22963186 +26599812,0 +26600274,0 +26600274,0.28877489 +26600352,0.16837658 +26600352,0 +26600442,0 +26600442,0.16837658 +26600814,0.28877489 +26600814,0 +26600940,0 +26600940,0.18436934 +26600988,0.18436934 +26600988,0 +26601522,0 +26601522,0.18089922 +26601600,0.18089922 +26601600,0 +26602110,0 +26602110,0 +26602110,0.48657212 +26602110,0.20715148 +26602188,0 +26602188,0.20715148 +26602374,0.48657212 +26602374,0 +26602698,0 +26602698,0.24864212 +26602758,0.24864212 +26602758,0 +26603124,0 +26603124,0.11164756 +26603148,0.11164756 +26603148,0 +26610588,0 +26610588,0.16083283 +26610630,0.16083283 +26610630,0 +26633220,0 +26633220,0.13925769 +26633274,0.13925769 +26633274,0 +26638410,0 +26638410,0.25709113 +26638518,0.25709113 +26638518,0 +26638524,0 +26638524,0.14634882 +26638560,0.14634882 +26638560,0 +26638644,0 +26638644,0.045262523 +26638842,0.045262523 +26638842,0 +26639142,0 +26639142,0.1949306 +26639172,0.1949306 +26639172,0 +26639256,0 +26639256,0.23340374 +26639358,0.23340374 +26639358,0 +26639376,0 +26639376,0.241551 +26639388,0.241551 +26639388,0 +26639490,0 +26639490,0.31517803 +26639502,0.31517803 +26639502,0 +26639604,0 +26639604,0.42697646 +26639610,0.42697646 +26639610,0 +26640222,0 +26640222,0.15902233 +26640336,0.15902233 +26640336,0 +26640342,0 +26640342,0.029571515 +26640420,0.029571515 +26640420,0 +26661534,0 +26661534,0.18391672 +26661594,0.18391672 +26661594,0 +26662860,0 +26662860,0.016143633 +26662866,0.016143633 +26662866,0 +26671866,0 +26671866,0.34339167 +26671908,0.34339167 +26671908,0 +26673120,0 +26673120,0.030476765 +26673144,0.030476765 +26673144,0 +26676528,0 +26676528,0.34821967 +26676546,0.34821967 +26676546,0 +26683548,0 +26683548,0.17275196 +26684166,0.245172 +26684166,0 +26684172,0 +26684172,0.245172 +26684178,0.17275196 +26684178,0 +26719422,0 +26719422,0.15268558 +26719464,0.15268558 +26719464,0 +26719704,0 +26719704,0.18542547 +26719716,0.18542547 +26719716,0 +26719818,0 +26719818,0.26659626 +26719932,0.26659626 +26719932,0 +26719938,0 +26719938,0.15328908 +26719962,0.15328908 +26719962,0 +26720052,0 +26720052,0.16837658 +26720076,0.16837658 +26720076,0 +26721846,0 +26721846,0.04013277 +26721852,0.04013277 +26721852,0 +26721960,0 +26721960,0.15238383 +26721966,0.15238383 +26721966,0 +26722074,0 +26722074,0.20368135 +26722122,0.20368135 +26722122,0 +26722194,0 +26722194,0.11164756 +26722206,0.11164756 +26722206,0 +26722308,0 +26722308,0.01901026 +26722320,0.01901026 +26722320,0 +26722422,0 +26722422,0.23129149 +26722446,0.23129149 +26722446,0 +26722542,0 +26722542,0.28002414 +26722620,0.28002414 +26722620,0 +26722656,0 +26722656,0.077549789 +26722662,0.077549789 +26722662,0 +26722770,0 +26722770,0.0012070006 +26722776,0.0012070006 +26722776,0 +26722884,0 +26722884,0.12552806 +26722950,0.12552806 +26722950,0 +26727330,0 +26727330,0.073023537 +26727336,0.073023537 +26727336,0 +26727522,0 +26727522,0.45609535 +26727762,0.016445383 +26727762,0 +26727816,0 +26727816,0.016445383 +26727828,0.45609535 +26727828,0 +26727882,0 +26727882,0.19749547 +26727942,0.19749547 +26727942,0 +26727996,0 +26727996,0.23792999 +26728002,0.13744719 +26728002,0 +26728062,0 +26728062,0.23792999 +26728110,0.27987326 +26728110,0 +26728152,0 +26728152,0.13744719 +26728188,0.27987326 +26728188,0 +26728326,0 +26728326,0.21484611 +26728404,0.21484611 +26728404,0 +26728914,0 +26728914,0.1919131 +26728992,0.1919131 +26728992,0 +26729502,0 +26729502,0.22902836 +26729556,0.22902836 +26729556,0 +26729688,0 +26729688,0.13578757 +26729802,0.11692818 +26729802,0 +26729814,0 +26729814,0.11692818 +26729832,0.13578757 +26729832,0 +26730090,0 +26730090,0.17290284 +26730228,0.17290284 +26730228,0 +26735022,0 +26735022,0.0025648763 +26735028,0.0025648763 +26735028,0 +26736120,0 +26736120,0.13684369 +26736750,0.13684369 +26736750,0 +26737626,0 +26737626,0.18829209 +26737698,0.18829209 +26737698,0 +26737740,0 +26737740,0.0067893784 +26737752,0.0067893784 +26737752,0 +26737854,0 +26737854,0.21665661 +26737866,0.21665661 +26737866,0 +26737974,0 +26737974,0.14604707 +26738010,0.14604707 +26738010,0 +26738088,0 +26738088,0.24170187 +26738148,0.24170187 +26738148,0 +26738202,0 +26738202,0.31216053 +26738280,0.31216053 +26738280,0 +26740392,0 +26740392,0.084791792 +26740470,0.084791792 +26740470,0 +26740506,0 +26740506,0.11315631 +26740536,0.11315631 +26740536,0 +26742834,0 +26742834,0.37794206 +26742858,0.37794206 +26742858,0 +26742948,0 +26742948,0.20413398 +26742984,0.20413398 +26742984,0 +26749872,0 +26749872,0.10199155 +26749878,0.10199155 +26749878,0 +26752584,0 +26752584,0.24743512 +26752596,0.24743512 +26752596,0 +26762436,0 +26762436,0.12417019 +26762466,0.12417019 +26762466,0 +26767176,0 +26767176,0.0010561255 +26767182,0.0010561255 +26767182,0 +26769366,0 +26769366,0.21394086 +26769378,0.21394086 +26769378,0 +26771814,0 +26771814,0.27414001 +26771904,0.27414001 +26771904,0 +26777226,0 +26777226,0.10621605 +26777244,0.10621605 +26777244,0 +26780718,0 +26780718,0.046771273 +26780724,0.046771273 +26780724,0 +26782104,0 +26782104,0.32966204 +26782230,0.32966204 +26782230,0 +26808984,0 +26808984,0.22872661 +26809032,0.22872661 +26809032,0 +26811594,0 +26811594,0.041490646 +26811600,0.041490646 +26811600,0 +26811714,0 +26811714,0.13050694 +26811726,0.13050694 +26811726,0 +26811828,0 +26811828,0.015540133 +26811918,0.015540133 +26811918,0 +26811942,0 +26811942,0.14031382 +26811978,0.14031382 +26811978,0 +26812062,0 +26812062,0.15947495 +26812194,0.15947495 +26812194,0 +26816802,0 +26816802,0.0496379 +26816808,0.0496379 +26816808,0 +26817216,0 +26817216,0.29390465 +26817228,0.29390465 +26817228,0 +26824668,0 +26824668,0.025347013 +26824674,0.025347013 +26824674,0 +26825550,0 +26825550,0.090826795 +26825610,0.090826795 +26825610,0 +26825670,0 +26825670,0.18331322 +26825682,0.18331322 +26825682,0 +26826330,0 +26826330,0.29993965 +26826384,0.29993965 +26826384,0 +26826444,0 +26826444,0.13714544 +26826558,0.14423657 +26826558,0 +26826570,0 +26826570,0.13714544 +26826582,0.14423657 +26826582,0 +26826792,0 +26826792,0.10621605 +26826912,0.10621605 +26826912,0 +26838030,0 +26838030,0.0034701267 +26838036,0.0034701267 +26838036,0 +26839440,0 +26839440,0.099124925 +26839446,0.099124925 +26839446,0 +26844114,0 +26844114,0.11647556 +26844210,0.11647556 +26844210,0 +26845626,0 +26845626,0.15449608 +26845644,0.15449608 +26845644,0 +26845734,0 +26845734,0.27474351 +26845776,0.27474351 +26845776,0 +26845848,0 +26845848,0.1410682 +26845854,0.1410682 +26845854,0 +26850948,0 +26850948,0.11059143 +26850954,0.11059143 +26850954,0 +26860392,0 +26860392,0.22103199 +26860488,0.22103199 +26860488,0 +26860506,0 +26860506,0.22163549 +26860566,0.22163549 +26860566,0 +26862942,0 +26862942,0.19523235 +26862948,0.19523235 +26862948,0 +26863194,0 +26863194,0.17063971 +26863494,0.17063971 +26863494,0 +26875584,0 +26875584,0.31125528 +26875602,0.31125528 +26875602,0 +26889828,0 +26889828,0.34595655 +26890080,0.34595655 +26890080,0 +26897124,0 +26897124,0.02942064 +26897130,0.02942064 +26897130,0 +26900844,0 +26900844,0.253621 +26900904,0.253621 +26900904,0 +26901426,0 +26901426,0.062764031 +26901480,0.062764031 +26901480,0 +26901546,0 +26901546,0.14815932 +26901618,0.14815932 +26901618,0 +26901660,0 +26901660,0.10199155 +26901666,0.10199155 +26901666,0 +26903928,0 +26903928,0.21318648 +26903946,0.21318648 +26903946,0 +26911806,0 +26911806,0.041038021 +26911830,0.041038021 +26911830,0 +26911920,0 +26911920,0.24321062 +26911926,0.24321062 +26911926,0 +26912040,0 +26912040,0.2936029 +26912154,0.070911285 +26912154,0 +26912160,0 +26912160,0.2936029 +26912178,0.070911285 +26912178,0 +26912268,0 +26912268,0.09067592 +26912280,0.09067592 +26912280,0 +26912388,0 +26912388,0.17818346 +26912394,0.17818346 +26912394,0 +26912502,0 +26912502,0.018406759 +26912508,0.018406759 +26912508,0 +26913594,0 +26913594,0.32875679 +26913612,0.32875679 +26913612,0 +26915058,0 +26915058,0.2088111 +26915400,0.041490646 +26915400,0 +26915406,0 +26915406,0.041490646 +26915844,0.2088111 +26915844,0 +26916132,0 +26916132,0.23415812 +26916222,0.23415812 +26916222,0 +26916384,0 +26916384,0.38774894 +26916396,0.38774894 +26916396,0 +26917032,0 +26917032,0.0085998793 +26917044,0.0085998793 +26917044,0 +26917146,0 +26917146,0.10093543 +26917230,0.10093543 +26917230,0 +26917266,0 +26917266,0.28530477 +26917362,0.28530477 +26917362,0 +26921148,0 +26921148,0.29269765 +26921220,0.29269765 +26921220,0 +26924850,0 +26924850,0.12311406 +26924886,0.12311406 +26924886,0 +26924964,0 +26924964,0.0076946288 +26925006,0.0076946288 +26925006,0 +26928270,0 +26928270,0.17788171 +26928282,0.17788171 +26928282,0 +26928390,0 +26928390,0.040887145 +26928408,0.040887145 +26928408,0 +26928504,0 +26928504,0.17712734 +26928618,0.10319855 +26928618,0 +26928648,0 +26928648,0.10319855 +26928690,0.17712734 +26928690,0 +26933712,0 +26933712,0.13141219 +26933718,0.13141219 +26933718,0 +26933826,0 +26933826,0.21031986 +26933838,0.21031986 +26933838,0 +26935632,0 +26935632,0.20911285 +26935722,0.20911285 +26935722,0 +26936742,0 +26936742,0.073476162 +26936814,0.073476162 +26936814,0 +26938116,0 +26938116,0.15600483 +26938122,0.15600483 +26938122,0 +26938254,0 +26938254,0.013729632 +26938284,0.013729632 +26938284,0 +26938374,0 +26938374,0.15630658 +26938440,0.15630658 +26938440,0 +26939172,0 +26939172,0.16928183 +26939214,0.16928183 +26939214,0 +26939394,0 +26939394,0.3528968 +26939454,0.3528968 +26939454,0 +26939694,0 +26939694,0.35576343 +26939712,0.35576343 +26939712,0 +26940726,0 +26940726,0.242758 +26940738,0.242758 +26940738,0 +26940846,0 +26940846,0.32196741 +26940960,0.1579662 +26940960,0 +26940996,0 +26940996,0.32196741 +26941068,0.1579662 +26941068,0 +26941074,0 +26941074,0.13080869 +26941098,0.13080869 +26941098,0 +26944584,0 +26944584,0.16550996 +26944752,0.16550996 +26944752,0 +26946402,0 +26946402,0.17667471 +26946498,0.17667471 +26946498,0 +26954820,0 +26954820,0.56019916 +26955174,0.56019916 +26955174,0 +26985768,0 +26985768,0.28198552 +26985804,0.28198552 +26985804,0 +26991102,0 +26991102,0.22525649 +26991144,0.22525649 +26991144,0 +26993214,0 +26993214,0.16701871 +26993250,0.16701871 +26993250,0 +27003228,0 +27003228,0.021273386 +27003354,0.021273386 +27003354,0 +27007044,0 +27007044,0.092184671 +27007062,0.092184671 +27007062,0 +27012810,0 +27012810,0.32996379 +27012834,0.32996379 +27012834,0 +27015522,0 +27015522,0.24064575 +27015528,0.24064575 +27015528,0 +27015702,0 +27015702,0.017803259 +27015708,0.017803259 +27015708,0 +27019902,0 +27019902,0.29918527 +27019986,0.29918527 +27019986,0 +27020022,0 +27020022,0.2076041 +27020046,0.2076041 +27020046,0 +27020808,0 +27020808,0.003922752 +27020814,0.003922752 +27020814,0 +27020922,0 +27020922,0 +27020922,0.26010863 +27020922,0.24260712 +27020934,0 +27020934,0.24260712 +27021024,0.26010863 +27021024,0 +27021450,0 +27021450,0.2027761 +27021552,0.2027761 +27021552,0 +27021630,0 +27021630,0.0076946288 +27021666,0.0076946288 +27021666,0 +27022374,0 +27022374,0.17773084 +27022446,0.17773084 +27022446,0 +27022962,0 +27022962,0.29043452 +27023028,0.29043452 +27023028,0 +27023544,0 +27023544,0.1943271 +27023628,0.1943271 +27023628,0 +27024300,0 +27024300,0.30371153 +27024330,0.30371153 +27024330,0 +27024414,0 +27024414,0.088412794 +27024486,0.088412794 +27024486,0 +27024606,0 +27024606,0.27414001 +27024720,0.23672299 +27024720,0 +27024726,0 +27024726,0.23672299 +27024732,0.27414001 +27024732,0 +27028368,0 +27028368,0.069100785 +27028428,0.069100785 +27028428,0 +27032448,0 +27032448,0.13533494 +27032460,0.13533494 +27032460,0 +27035268,0 +27035268,0.20488835 +27035274,0.20488835 +27035274,0 +27038490,0 +27038490,0.34640917 +27038520,0.34640917 +27038520,0 +27045924,0 +27045924,0.17697646 +27045942,0.17697646 +27045942,0 +27046044,0 +27046044,0.014484007 +27046050,0.014484007 +27046050,0 +27046158,0 +27046158,0.1997586 +27046290,0.1997586 +27046290,0 +27063702,0 +27063702,0.11511768 +27063738,0.11511768 +27063738,0 +27063816,0 +27063816,0.11421243 +27063840,0.11421243 +27063840,0 +27063930,0 +27063930,0.20564273 +27063942,0.20564273 +27063942,0 +27064050,0 +27064050,0.10199155 +27064116,0.10199155 +27064116,0 +27064164,0 +27064164,0.1004828 +27064170,0.1004828 +27064170,0 +27064278,0 +27064278,0.20141823 +27064302,0.20141823 +27064302,0 +27064398,0 +27064398,0.12809294 +27064488,0.12809294 +27064488,0 +27064512,0 +27064512,0.19870247 +27064536,0.19870247 +27064536,0 +27064626,0 +27064626,0.062160531 +27064644,0.062160531 +27064644,0 +27067908,0 +27067908,0.18889559 +27067950,0.18889559 +27067950,0 +27069858,0 +27069858,0.15509958 +27069936,0.15509958 +27069936,0 +27069978,0 +27069978,0.0082981291 +27069984,0.0082981291 +27069984,0 +27071370,0 +27071370,0.98174412 +27071670,0.98174412 +27071670,0 +27075390,0 +27075390,0.26478576 +27075432,0.26478576 +27075432,0 +27077442,0 +27077442,0.30522028 +27077472,0.30522028 +27077472,0 +27078996,0 +27078996,0.14680145 +27079020,0.14680145 +27079020,0 +27079428,0 +27079428,0.065479783 +27079470,0.065479783 +27079470,0 +27079542,0 +27079542,0.012220881 +27079590,0.012220881 +27079590,0 +27079656,0 +27079656,0.24471937 +27079662,0.24471937 +27079662,0 +27079776,0 +27079776,0.15811708 +27079794,0.15811708 +27079794,0 +27079890,0 +27079890,0.063971032 +27079968,0.063971032 +27079968,0 +27080004,0 +27080004,0.1065178 +27080052,0.1065178 +27080052,0 +27080124,0 +27080124,0.24984912 +27080184,0.24984912 +27080184,0 +27080238,0 +27080238,0.16928183 +27080280,0.16928183 +27080280,0 +27080352,0 +27080352,0.28258902 +27080394,0.28258902 +27080394,0 +27080466,0 +27080466,0.022480386 +27080478,0.022480386 +27080478,0 +27080586,0 +27080586,0.053560652 +27080592,0.053560652 +27080592,0 +27088902,0 +27088902,0.16626433 +27089028,0.16626433 +27089028,0 +27092856,0 +27092856,0.33675317 +27092862,0.33675317 +27092862,0 +27106044,0 +27106044,0.14680145 +27106062,0.14680145 +27106062,0 +27106734,0 +27106734,0.086300543 +27106854,0.18542547 +27106854,0 +27106926,0 +27106926,0.086300543 +27106944,0.18542547 +27106944,0 +27108864,0 +27108864,0.25377188 +27108876,0.25377188 +27108876,0 +27110502,0 +27110502,0.19885335 +27110526,0.19885335 +27110526,0 +27114930,0 +27114930,0.29677127 +27114954,0.29677127 +27114954,0 +27121374,0 +27121374,0.21710923 +27121422,0.21710923 +27121422,0 +27124458,0 +27124458,0.1471032 +27124578,0.077549789 +27124578,0 +27124608,0 +27124608,0.077549789 +27124614,0.1471032 +27124614,0 +27124692,0 +27124692,0.11375981 +27124698,0.11375981 +27124698,0 +27124806,0 +27124806,0.061406156 +27124848,0.061406156 +27124848,0 +27124926,0 +27124926,0.0084490042 +27124932,0.0084490042 +27124932,0 +27125040,0 +27125040,0.18542547 +27125058,0.18542547 +27125058,0 +27125154,0 +27125154,0.24713337 +27125178,0.24713337 +27125178,0 +27125274,0 +27125274,0.15117683 +27125352,0.15117683 +27125352,0 +27125388,0 +27125388,0.3577248 +27125394,0.3577248 +27125394,0 +27125502,0 +27125502,0.11888956 +27125622,0.13141219 +27125622,0 +27125640,0 +27125640,0.13141219 +27125658,0.11888956 +27125658,0 +27125736,0 +27125736,0.0012070006 +27125742,0.0012070006 +27125742,0 +27142392,0 +27142392,0.12914906 +27142416,0.12914906 +27142416,0 +27149022,0 +27149022,0.92063971 +27149382,0.92063971 +27149382,0 +27152826,0 +27152826,0.21756186 +27152868,0.21756186 +27152868,0 +27152940,0 +27152940,0.10078455 +27153030,0.10078455 +27153030,0 +27154494,0 +27154494,0.38699457 +27154500,0.38699457 +27154500,0 +27157686,0 +27157686,0.68678334 +27157950,0.68678334 +27157950,0 +27168168,0 +27168168,0.4055522 +27168228,0.4055522 +27168228,0 +27171720,0 +27171720,0.032890766 +27171726,0.032890766 +27171726,0 +27176082,0 +27176082,0.23717562 +27176100,0.23717562 +27176100,0 +27178722,0 +27178722,0.20971635 +27178740,0.20971635 +27178740,0 +27180294,0 +27180294,0.18814122 +27180324,0.18814122 +27180324,0 +27186492,0 +27186492,0.27112251 +27186534,0.27112251 +27186534,0 +27187644,0 +27187644,0.17592034 +27187680,0.17592034 +27187680,0 +27192588,0 +27192588,0.26599276 +27193344,0.26599276 +27193344,0 +27194424,0 +27194424,0.2590525 +27195150,0.2590525 +27195150,0 +27201672,0 +27201672,0.17275196 +27201678,0.17275196 +27201678,0 +27213114,0 +27213114,0.25633675 +27213180,0.25633675 +27213180,0 +27213228,0 +27213228,0.33720579 +27213252,0.33720579 +27213252,0 +27214026,0 +27214026,0.1059143 +27214110,0.1059143 +27214110,0 +27222876,0 +27222876,0.41822571 +27222888,0.41822571 +27222888,0 +27222996,0 +27222996,0.13065782 +27223056,0.13065782 +27223056,0 +27223110,0 +27223110,0.19824985 +27223146,0.19824985 +27223146,0 +27223224,0 +27223224,0.32815329 +27223314,0.32815329 +27223314,0 +27241014,0 +27241014,0.0072420036 +27241056,0.0072420036 +27241056,0 +27246774,0 +27246774,0.38292094 +27247296,0.38292094 +27247296,0 +27253038,0 +27253038,0.16762221 +27253056,0.16762221 +27253056,0 +27253152,0 +27253152,0.13080869 +27253176,0.13080869 +27253176,0 +27261696,0 +27261696,0.11617381 +27261702,0.11617381 +27261702,0 +27266748,0 +27266748,0.092486421 +27266772,0.092486421 +27266772,0 +27271050,0 +27271050,0.13518407 +27271062,0.13518407 +27271062,0 +27272430,0 +27272430,0.20232348 +27272454,0.20232348 +27272454,0 +27272544,0 +27272544,0.0073928787 +27272550,0.0073928787 +27272550,0 +27272658,0 +27272658,0.21062161 +27272664,0.48687387 +27272664,0 +27272670,0 +27272670,0.48687387 +27272682,0.21062161 +27272682,0 +27272778,0 +27272778,0.24668075 +27272790,0.24668075 +27272790,0 +27272892,0 +27272892,0.0075437538 +27272922,0.0075437538 +27272922,0 +27273006,0 +27273006,0.060802655 +27273138,0.060802655 +27273138,0 +27275352,0 +27275352,0.094447797 +27275358,0.094447797 +27275358,0 +27275472,0 +27275472,0.0490344 +27275508,0.0490344 +27275508,0 +27275586,0 +27275586,0.15283645 +27275604,0.15283645 +27275604,0 +27275700,0 +27275700,0.19342185 +27275706,0.19342185 +27275706,0 +27275820,0 +27275820,0.32905854 +27275832,0.32905854 +27275832,0 +27275934,0 +27275934,0.11406156 +27275976,0.11406156 +27275976,0 +27276936,0 +27276936,0.30175015 +27276966,0.30175015 +27276966,0 +27278154,0 +27278154,0.032438141 +27278160,0.032438141 +27278160,0 +27279312,0 +27279312,0.1537417 +27279330,0.1537417 +27279330,0 +27280842,0 +27280842,0.25875075 +27280860,0.25875075 +27280860,0 +27283746,0 +27283746,0.091128546 +27283788,0.091128546 +27283788,0 +27286704,0 +27286704,0.23747737 +27286758,0.23747737 +27286758,0 +27287004,0 +27287004,0.56276403 +27287094,0.56276403 +27287094,0 +27287130,0 +27287130,0.10093543 +27287244,0.36044056 +27287244,0 +27287262,0 +27287262,0.36044056 +27287298,0.31532891 +27287298,0 +27287322,0 +27287322,0.10093543 +27287376,0.31532891 +27287376,0 +27287598,0 +27287598,0.18286059 +27287604,0.18286059 +27287604,0 +27287898,0 +27287898,0.31095353 +27287928,0.31095353 +27287928,0 +27291162,0 +27291162,0.27896801 +27291210,0.27896801 +27291210,0 +27291456,0 +27291456,0.13955944 +27291462,0.13955944 +27291462,0 +27291756,0 +27291756,0.34490042 +27291774,0.34490042 +27291774,0 +27292056,0 +27292056,0.31593241 +27292122,0.16928183 +27292122,0 +27292134,0 +27292134,0.057483404 +27292140,0.057483404 +27292140,0 +27292146,0 +27292146,0.31593241 +27292194,0.16928183 +27292194,0 +27292242,0 +27292242,0.071967411 +27292260,0.071967411 +27292260,0 +27292356,0 +27292356,0 +27292356,0.33162342 +27292356,0.16128546 +27292398,0 +27292398,0.16128546 +27292410,0.33162342 +27292410,0 +27292470,0 +27292470,0.0076946288 +27292494,0.0076946288 +27292494,0 +27292590,0 +27292590,0.048129149 +27292596,0.048129149 +27292596,0 +27295614,0 +27295614,0.27489439 +27295686,0.27489439 +27295686,0 +27295914,0 +27295914,0.25829813 +27295962,0.25829813 +27295962,0 +27296214,0 +27296214,0.23958962 +27296274,0.23958962 +27296274,0 +27296508,0 +27296508,0.39499095 +27296676,0.39499095 +27296676,0 +27296808,0 +27296808,0.25950513 +27296862,0.25950513 +27296862,0 +27311250,0 +27311250,0.95745323 +27311580,0.95745323 +27311580,0 +27315450,0 +27315450,0.071213036 +27315534,0.071213036 +27315534,0 +27327642,0 +27327642,0.6028968 +27327924,0.6028968 +27327924,0 +27331968,0 +27331968,0.30763428 +27331986,0.30763428 +27331986,0 +27333534,0 +27333534,0.257242 +27333612,0.257242 +27333612,0 +27335910,0 +27335910,0.068648159 +27335922,0.068648159 +27335922,0 +27340530,0 +27340530,0.19206397 +27340542,0.19206397 +27340542,0 +27344010,0 +27344010,0.12975256 +27344028,0.12975256 +27344028,0 +27344124,0 +27344124,0.096861798 +27344208,0.096861798 +27344208,0 +27344238,0 +27344238,0.04043452 +27344244,0.04043452 +27344244,0 +27344358,0 +27344358,0.087960169 +27344364,0.087960169 +27344364,0 +27346146,0 +27346146,0.057483404 +27346152,0.057483404 +27346152,0 +27350520,0 +27350520,0.32347616 +27350592,0.32347616 +27350592,0 +27369576,0 +27369576,0.13412794 +27369588,0.13412794 +27369588,0 +27369720,0 +27369720,0.22525649 +27369762,0.22525649 +27369762,0 +27371772,0 +27371772,0.15766445 +27371778,0.15766445 +27371778,0 +27371886,0 +27371886,0.045564273 +27371898,0.045564273 +27371898,0 +27372006,0 +27372006,0.22616174 +27372108,0.22616174 +27372108,0 +27373302,0 +27373302,0.11541943 +27373320,0.11541943 +27373320,0 +27373422,0 +27373422,0.0076946288 +27373512,0.0076946288 +27373512,0 +27379662,0 +27379662,0.22223899 +27379674,0.22223899 +27379674,0 +27380928,0 +27380928,0.087205794 +27380952,0.087205794 +27380952,0 +27381042,0 +27381042,0.098370549 +27381078,0.098370549 +27381078,0 +27381162,0 +27381162,0.034852142 +27381276,0.23159324 +27381276,0 +27381288,0 +27381288,0.23159324 +27381390,0.25105613 +27381390,0 +27381402,0 +27381402,0.25105613 +27381462,0.034852142 +27381462,0 +27381510,0 +27381510,0.056125528 +27381516,0.056125528 +27381516,0 +27384126,0 +27384126,0.16747133 +27384138,0.16747133 +27384138,0 +27384240,0 +27384240,0.14152082 +27384294,0.14152082 +27384294,0 +27391116,0 +27391116,0.21982498 +27391122,0.21982498 +27391122,0 +27414552,0 +27414552,0.24109837 +27414642,0.24109837 +27414642,0 +27418392,0 +27418392,0.29918527 +27418470,0.29918527 +27418470,0 +27418512,0 +27418512,0.12567894 +27418638,0.12567894 +27418638,0 +27428676,0 +27428676,0.077549789 +27428682,0.077549789 +27428682,0 +27436806,0 +27436806,0.14499095 +27436914,0.14499095 +27436914,0 +27437730,0 +27437730,0.29450815 +27437748,0.29450815 +27437748,0 +27444282,0 +27444282,0.16038021 +27444342,0.16038021 +27444342,0 +27444396,0 +27444396,0.17079059 +27444462,0.17079059 +27444462,0 +27448122,0 +27448122,0.18436934 +27448140,0.18436934 +27448140,0 +27448242,0 +27448242,0.11149668 +27448260,0.11149668 +27448260,0 +27450366,0 +27450366,0.22691611 +27450378,0.22691611 +27450378,0 +27450480,0 +27450480,0.018859384 +27450504,0.018859384 +27450504,0 +27450594,0 +27450594,0.027911889 +27450600,0.027911889 +27450600,0 +27450714,0 +27450714,0.22661436 +27450804,0.22661436 +27450804,0 +27450828,0 +27450828,0.19900422 +27450876,0.19900422 +27450876,0 +27450942,0 +27450942,0.30295715 +27450990,0.30295715 +27450990,0 +27451062,0 +27451062,0.018708509 +27451068,0.018708509 +27451068,0 +27454686,0 +27454686,0.28319252 +27454716,0.28319252 +27454716,0 +27454800,0 +27454800,0.20262523 +27454818,0.20262523 +27454818,0 +27460320,0 +27460320,0.251207 +27460374,0.251207 +27460374,0 +27463920,0 +27463920,0.086149668 +27464034,0 +27464034,0 +27464034,0.086149668 +27464034,0.16958358 +27464064,0.16958358 +27464064,0 +27464148,0 +27464148,0.21922148 +27464304,0.21922148 +27464304,0 +27490290,0 +27490290,0.025196138 +27490374,0.025196138 +27490374,0 +27496992,0 +27496992,0.27489439 +27496998,0.27489439 +27496998,0 +27497112,0 +27497112,0.18814122 +27497124,0.18814122 +27497124,0 +27505422,0 +27505422,0.34957755 +27505488,0.34957755 +27505488,0 +27505500,0 +27505500,0.1907061 +27505584,0.1907061 +27505584,0 +27506328,0 +27506328,0.16882921 +27506358,0.16882921 +27506358,0 +27506448,0 +27506448,0.030476765 +27506454,0.030476765 +27506454,0 +27506892,0 +27506892,0.30703078 +27506898,0.30703078 +27506898,0 +27513330,0 +27513330,0.23808087 +27513348,0.23808087 +27513348,0 +27513450,0 +27513450,0.24471937 +27513540,0.24471937 +27513540,0 +27513564,0 +27513564,0.0076946288 +27513582,0.0076946288 +27513582,0 +27513678,0 +27513678,0.098068799 +27513684,0.098068799 +27513684,0 +27517746,0 +27517746,0.2045866 +27517794,0.2045866 +27517794,0 +27520050,0 +27520050,0.22238986 +27520164,0.047223899 +27520164,0 +27520176,0 +27520176,0.22238986 +27520230,0.047223899 +27520230,0 +27520278,0 +27520278,0.27323476 +27520302,0.27323476 +27520302,0 +27520362,0 +27520362,0.095503923 +27520380,0.095503923 +27520380,0 +27521754,0 +27521754,0.0066385033 +27521760,0.0066385033 +27521760,0 +27528216,0 +27528216,0.052957151 +27528258,0.052957151 +27528258,0 +27535182,0 +27535182,0.22359686 +27535230,0.22359686 +27535230,0 +27538806,0 +27538806,0.093995172 +27538842,0.093995172 +27538842,0 +27541320,0 +27541320,0.18949909 +27541380,0.18949909 +27541380,0 +27541830,0 +27541830,0.1913096 +27541842,0.1913096 +27541842,0 +27549912,0 +27549912,0.11722993 +27549942,0.11722993 +27549942,0 +27552918,0 +27552918,0.0073928787 +27552978,0.0073928787 +27552978,0 +27553032,0 +27553032,0.18723597 +27553056,0.18723597 +27553056,0 +27553416,0 +27553416,0.084339167 +27553422,0.084339167 +27553422,0 +27580524,0 +27580524,0.085395293 +27580530,0.085395293 +27580530,0 +27586500,0 +27586500,0.17320459 +27586536,0.17320459 +27586536,0 +27586614,0 +27586614,0.1416717 +27586632,0.1416717 +27586632,0 +27586734,0 +27586734,0.098521424 +27586740,0.098521424 +27586740,0 +27586848,0 +27586848,0.17350634 +27586902,0.17350634 +27586902,0 +27586962,0 +27586962,0.059595655 +27586968,0.059595655 +27586968,0 +27587082,0 +27587082,0.25196138 +27587136,0.25196138 +27587136,0 +27587196,0 +27587196,0.19477972 +27587220,0.19477972 +27587220,0 +27587310,0 +27587310,0.21062161 +27587430,0.00075437538 +27587430,0 +27587436,0 +27587436,0.00075437538 +27587490,0.21062161 +27587490,0 +27587544,0 +27587544,0.1997586 +27587580,0.1997586 +27587580,0 +27591942,0 +27591942,0.14981895 +27591996,0.14981895 +27591996,0 +27592056,0 +27592056,0.17773084 +27592164,0.17773084 +27592164,0 +27594810,0 +27594810,0.40283645 +27595164,0.40283645 +27595164,0 +27595728,0 +27595728,0.066083283 +27595752,0.066083283 +27595752,0 +27596688,0 +27596688,0.08946892 +27596706,0.08946892 +27596706,0 +27597390,0 +27597390,0.066234158 +27597444,0.066234158 +27597444,0 +27600000,0 +27600000,0.085847918 +27600036,0.085847918 +27600036,0 +27600114,0 +27600114,0.14619795 +27600198,0.14619795 +27600198,0 +27600234,0 +27600234,0.17441159 +27600258,0.14499095 +27600258,0 +27600282,0 +27600282,0.14499095 +27600342,0.17441159 +27600342,0 +27600372,0 +27600372,0.035153893 +27600378,0.035153893 +27600378,0 +27600486,0 +27600486,0.19281835 +27600504,0.19281835 +27600504,0 +27600606,0 +27600606,0.076795413 +27600636,0.076795413 +27600636,0 +27600720,0 +27600720,0.050090525 +27600774,0.050090525 +27600774,0 +27600834,0 +27600834,0.021424261 +27600852,0.021424261 +27600852,0 +27600948,0 +27600948,0.0067893784 +27600978,0.0067893784 +27600978,0 +27607842,0 +27607842,0.31698853 +27607944,0.31698853 +27607944,0 +27612300,0 +27612300,0.19870247 +27612372,0.19870247 +27612372,0 +27617394,0 +27617394,0.017501509 +27617400,0.017501509 +27617400,0 +27617514,0 +27617514,0.07936029 +27617520,0.07936029 +27617520,0 +27621996,0 +27621996,0.16505733 +27622008,0.16505733 +27622008,0 +27623676,0 +27623676,0.19462885 +27623688,0.19462885 +27623688,0 +27623796,0 +27623796,0.14061557 +27623838,0.14061557 +27623838,0 +27623874,0 +27623874,0.11526856 +27623880,0.11526856 +27623880,0 +27623910,0 +27623910,0.16143633 +27623916,0.16143633 +27623916,0 +27624024,0 +27624024,0.065178033 +27624048,0.065178033 +27624048,0 +27624144,0 +27624144,0.20654798 +27624192,0.20654798 +27624192,0 +27625152,0 +27625152,0.10138805 +27625188,0.10138805 +27625188,0 +27625272,0 +27625272,0.12764031 +27625284,0.12764031 +27625284,0 +27625386,0 +27625386,0.27761014 +27625422,0.27761014 +27625422,0 +27625500,0 +27625500,0.24245625 +27625506,0.24245625 +27625506,0 +27626820,0 +27626820,0.19885335 +27626832,0.19885335 +27626832,0 +27633738,0 +27633738,0.16732046 +27633756,0.16732046 +27633756,0 +27634872,0 +27634872,0.093542547 +27634944,0.093542547 +27634944,0 +27639360,0 +27639360,0.29043452 +27639378,0.29043452 +27639378,0 +27639474,0 +27639474,0.14559445 +27639492,0.14559445 +27639492,0 +27643086,0 +27643086,0.20111648 +27643164,0.20111648 +27643164,0 +27652140,0 +27652140,0.13654194 +27652158,0.13654194 +27652158,0 +27676656,0 +27676656,0.15766445 +27676698,0.15766445 +27676698,0 +27676764,0 +27676764,0.24305975 +27676824,0.24305975 +27676824,0 +27676884,0 +27676884,0.061707906 +27676890,0.061707906 +27676890,0 +27676998,0 +27676998,0.22963186 +27677052,0.22963186 +27677052,0 +27681342,0 +27681342,0.031985516 +27681348,0.031985516 +27681348,0 +27681462,0 +27681462,0.0502414 +27681540,0.0502414 +27681540,0 +27681576,0 +27681576,0.12296319 +27681582,0.12296319 +27681582,0 +27681690,0 +27681690,0.19477972 +27681756,0.19477972 +27681756,0 +27681810,0 +27681810,0.045866023 +27681924,0.2033796 +27681924,0 +27681966,0 +27681966,0 +27681966,0.2033796 +27681966,0.045866023 +27682038,0 +27682038,0.10817743 +27682044,0.10817743 +27682044,0 +27682158,0 +27682158,0.18919734 +27682200,0.18919734 +27682200,0 +27682272,0 +27682272,0.25226313 +27682308,0.25226313 +27682308,0 +27682386,0 +27682386,0.12447194 +27682446,0.12447194 +27682446,0 +27685830,0 +27685830,0.2070006 +27685902,0.2070006 +27685902,0 +27685944,0 +27685944,0.12914906 +27686046,0.12914906 +27686046,0 +27686316,0 +27686316,0.13940857 +27686322,0.13940857 +27686322,0 +27695754,0 +27695754,0.18964997 +27695760,0.18964997 +27695760,0 +27708654,0 +27708654,0.32573929 +27708660,0.32573929 +27708660,0 +27710256,0 +27710256,0.18753772 +27710274,0.18753772 +27710274,0 +27712476,0 +27712476,0.12341581 +27712530,0.12341581 +27712530,0 +27715254,0 +27715254,0.17863609 +27715272,0.17863609 +27715272,0 +27715800,0 +27715800,0.31819553 +27715884,0.31819553 +27715884,0 +27716982,0 +27716982,0.21726011 +27716988,0.21726011 +27716988,0 +27717096,0 +27717096,0.1991551 +27717102,0.1991551 +27717102,0 +27717216,0 +27717216,0.27066989 +27717252,0.27066989 +27717252,0 +27720258,0 +27720258,0.23430899 +27720270,0.23430899 +27720270,0 +27720750,0 +27720750,0.21439348 +27720792,0.21439348 +27720792,0 +27721716,0 +27721716,0.22254074 +27721746,0.22254074 +27721746,0 +27722634,0 +27722634,0.23792999 +27722946,0.23792999 +27722946,0 +27724248,0 +27724248,0.10033193 +27724290,0.10033193 +27724290,0 +27728940,0 +27728940,0.076795413 +27728946,0.076795413 +27728946,0 +27729054,0 +27729054,0.033192517 +27729060,0.033192517 +27729060,0 +27734238,0 +27734238,0.15208208 +27734286,0.15208208 +27734286,0 +27734352,0 +27734352,0.091128546 +27734388,0.091128546 +27734388,0 +27734472,0 +27734472,0.016596258 +27734586,0.1404647 +27734586,0 +27734598,0 +27734598,0.1404647 +27734628,0.016596258 +27734628,0 +27734700,0 +27734700,0.21499698 +27734766,0.21499698 +27734766,0 +27734820,0 +27734820,0.00015087508 +27734826,0.00015087508 +27734826,0 +27734934,0 +27734934,0.28500302 +27734952,0.28500302 +27734952,0 +27735048,0 +27735048,0.0092033796 +27735054,0.0092033796 +27735054,0 +27735168,0 +27735168,0.09957755 +27735240,0.09957755 +27735240,0 +27735282,0 +27735282,0.047374774 +27735288,0.047374774 +27735288,0 +27735396,0 +27735396,0.32815329 +27735486,0.32815329 +27735486,0 +27763314,0 +27763314,0.23958962 +27763332,0.23958962 +27763332,0 +27765006,0 +27765006,0.05944478 +27765012,0.05944478 +27765012,0 +27766440,0 +27766440,0.21695836 +27766554,0.21318648 +27766554,0 +27766578,0 +27766578,0.056125528 +27766596,0.056125528 +27766596,0 +27766602,0 +27766602,0.21695836 +27766626,0.21318648 +27766626,0 +27766674,0 +27766674,0.16520821 +27766680,0.16520821 +27766680,0 +27766698,0 +27766698,0.20051298 +27766734,0.20051298 +27766734,0 +27766812,0 +27766812,0.28862402 +27766872,0.28862402 +27766872,0 +27770106,0 +27770106,0.22963186 +27770250,0.22963186 +27770250,0 +27773094,0 +27773094,0.11300543 +27773100,0.11300543 +27773100,0 +27773208,0 +27773208,0.32815329 +27773274,0.32815329 +27773274,0 +27773328,0 +27773328,0.2045866 +27773358,0.2045866 +27773358,0 +27773442,0 +27773442,0.3480688 +27773454,0.3480688 +27773454,0 +27773556,0 +27773556,0.19477972 +27773568,0.19477972 +27773568,0 +27773676,0 +27773676,0.12190706 +27773694,0.12190706 +27773694,0 +27773790,0 +27773790,0.15464695 +27773826,0.15464695 +27773826,0 +27777210,0 +27777210,0.18135184 +27777282,0.18135184 +27777282,0 +27777330,0 +27777330,0.15479783 +27777354,0.15479783 +27777354,0 +27777690,0 +27777690,0.16128546 +27777708,0.16128546 +27777708,0 +27777804,0 +27777804,0.23642124 +27777936,0.23642124 +27777936,0 +27787938,0 +27787938,0.14121907 +27788016,0.14121907 +27788016,0 +27788520,0 +27788520,0.13548582 +27788628,0.13548582 +27788628,0 +27789108,0 +27789108,0.19764635 +27789180,0.19764635 +27789180,0 +27789696,0 +27789696,0.17848521 +27789798,0.17848521 +27789798,0 +27791700,0 +27791700,0.22646349 +27791742,0.22646349 +27791742,0 +27795156,0 +27795156,0.17833434 +27795204,0.17833434 +27795204,0 +27795276,0 +27795276,0.16581171 +27795300,0.16581171 +27795300,0 +27795588,0 +27795588,0.032287266 +27795618,0.032287266 +27795618,0 +27795708,0 +27795708,0.013427882 +27795714,0.013427882 +27795714,0 +27795822,0 +27795822,0.0078455039 +27795888,0.0078455039 +27795888,0 +27795936,0 +27795936,0.1095353 +27795948,0.1095353 +27795948,0 +27796056,0 +27796056,0.21167773 +27796086,0.21167773 +27796086,0 +27796170,0 +27796170,0.19568497 +27796254,0.19568497 +27796254,0 +27796284,0 +27796284,0.25392275 +27796290,0.25392275 +27796290,0 +27798258,0 +27798258,0.23098974 +27798300,0.23098974 +27798300,0 +27804426,0 +27804426,0.34399517 +27804450,0.34399517 +27804450,0 +27810708,0 +27810708,0.11360893 +27810738,0.11360893 +27810738,0 +27815778,0 +27815778,0.12326494 +27815790,0.12326494 +27815790,0 +27817224,0 +27817224,0.047223899 +27817230,0.047223899 +27817230,0 +27817416,0 +27817416,0.13518407 +27817428,0.13518407 +27817428,0 +27832926,0 +27832926,0.22782136 +27832992,0.22782136 +27832992,0 +27847560,0 +27847560,0.026101388 +27847602,0.026101388 +27847602,0 +27847680,0 +27847680,0.28334339 +27847698,0.28334339 +27847698,0 +27852186,0 +27852186,0.088563669 +27852210,0.088563669 +27852210,0 +27852300,0 +27852300,0.0078455039 +27852348,0.0078455039 +27852348,0 +27853722,0 +27853722,0.46620398 +27853764,0.45187085 +27853764,0 +27854028,0 +27854028,0.46620398 +27854100,0.45187085 +27854100,0 +27854178,0 +27854178,0.17184671 +27854214,0.17184671 +27854214,0 +27855006,0 +27855006,0.14634882 +27855018,0.14634882 +27855018,0 +27867324,0 +27867324,0.085395293 +27867330,0.085395293 +27867330,0 +27871302,0 +27871302,0.21122511 +27871338,0.21122511 +27871338,0 +27876708,0 +27876708,0.0015087508 +27876714,0.0015087508 +27876714,0 +27890862,0 +27890862,0.13971032 +27890880,0.13971032 +27890880,0 +27896280,0 +27896280,0.16234158 +27896304,0.16234158 +27896304,0 +27900522,0 +27900522,0.17275196 +27900648,0.17275196 +27900648,0 +27901728,0 +27901728,0.03952927 +27901734,0.03952927 +27901734,0 +27903810,0 +27903810,0.34112855 +27903882,0.34112855 +27903882,0 +27903924,0 +27903924,0.19523235 +27903936,0.19523235 +27903936,0 +27932742,0 +27932742,0.17275196 +27932766,0.17275196 +27932766,0 +27944526,0 +27944526,0.28817139 +27944574,0.28817139 +27944574,0 +27949368,0 +27949368,0.2518105 +27949410,0.2518105 +27949410,0 +27954276,0 +27954276,0.39136995 +27954324,0.39136995 +27954324,0 +27960354,0 +27960354,0.0073928787 +27960366,0.0073928787 +27960366,0 +27960468,0 +27960468,0.078153289 +27960522,0.078153289 +27960522,0 +27968424,0 +27968424,0.09067592 +27968454,0.09067592 +27968454,0 +27968538,0 +27968538,0.071514786 +27968544,0.071514786 +27968544,0 +27968658,0 +27968658,0.28183464 +27968664,0.28183464 +27968664,0 +27968772,0 +27968772,0.097465299 +27968844,0.097465299 +27968844,0 +27976542,0 +27976542,0.21484611 +27976620,0.21484611 +27976620,0 +27976656,0 +27976656,0.15359083 +27976746,0.15359083 +27976746,0 +27977298,0 +27977298,0.26870851 +27977406,0.26870851 +27977406,0 +27977412,0 +27977412,0.017954134 +27977466,0.017954134 +27977466,0 +27977526,0 +27977526,0.12311406 +27977532,0.12311406 +27977532,0 +27977892,0 +27977892,0.21891973 +27977958,0.21891973 +27977958,0 +27978480,0 +27978480,0.21424261 +27978534,0.21424261 +27978534,0 +27979068,0 +27979068,0.22178636 +27979134,0.22178636 +27979134,0 +27979656,0 +27979656,0.17561859 +27979740,0.17561859 +27979740,0 +27980244,0 +27980244,0.18859384 +27980340,0.18859384 +27980340,0 +27990024,0 +27990024,0.18617984 +27990084,0.18617984 +27990084,0 +28024956,0 +28024956,0.12401931 +28025004,0.12401931 +28025004,0 +28025826,0 +28025826,0.1961376 +28025892,0.1961376 +28025892,0 +28026228,0 +28026228,0.12703681 +28026402,0.12703681 +28026402,0 +28027026,0 +28027026,0.3086904 +28027080,0.3086904 +28027080,0 +28027146,0 +28027146,0.33283042 +28027158,0.33283042 +28027158,0 +28027260,0 +28027260,0.15389258 +28027272,0.15389258 +28027272,0 +28027374,0 +28027374,0.22057936 +28027422,0.22057936 +28027422,0 +28029834,0 +28029834,0.21484611 +28029846,0.21484611 +28029846,0 +28029948,0 +28029948,0.28123114 +28030068,0.096409173 +28030068,0 +28030080,0 +28030080,0.28123114 +28030134,0.096409173 +28030134,0 +28030182,0 +28030182,0.074984912 +28030212,0.074984912 +28030212,0 +28030296,0 +28030296,0.13563669 +28030380,0.13563669 +28030380,0 +28030416,0 +28030416,0.25256488 +28030422,0.25256488 +28030422,0 +28030530,0 +28030530,0.22073024 +28030560,0.22073024 +28030560,0 +28030644,0 +28030644,0.085395293 +28030650,0.085395293 +28030650,0 +28030764,0 +28030764,0.16053108 +28030770,0.16053108 +28030770,0 +28030878,0 +28030878,0.20805673 +28030914,0.20805673 +28030914,0 +28034484,0 +28034484,0.16022933 +28034490,0.16022933 +28034490,0 +28038984,0 +28038984,0.047827399 +28039032,0.047827399 +28039032,0 +28054290,0 +28054290,0.33011467 +28054296,0.33011467 +28054296,0 +28057140,0 +28057140,0.16294508 +28057194,0.16294508 +28057194,0 +28065756,0 +28065756,0.0037718769 +28065762,0.0037718769 +28065762,0 +28070190,0 +28070190,0.12748944 +28070256,0.12748944 +28070256,0 +28073502,0 +28073502,0.256035 +28073550,0.256035 +28073550,0 +28073622,0 +28073622,0.16852746 +28073628,0.16852746 +28073628,0 +28073736,0 +28073736,0.1095353 +28073760,0.1095353 +28073760,0 +28073850,0 +28073850,0.21469523 +28073874,0.21469523 +28073874,0 +28073970,0 +28073970,0.16671696 +28074084,0.19477972 +28074084,0 +28074138,0 +28074138,0.19477972 +28074192,0.16671696 +28074192,0 +28074198,0 +28074198,0.12009656 +28074210,0.12009656 +28074210,0 +28075776,0 +28075776,0.19447797 +28075800,0.19447797 +28075800,0 +28079322,0 +28079322,0.037115269 +28079340,0.037115269 +28079340,0 +28079436,0 +28079436,0.066837658 +28079442,0.066837658 +28079442,0 +28079550,0 +28079550,0.17079059 +28079562,0.17079059 +28079562,0 +28103622,0 +28103622,0.25633675 +28103634,0.25633675 +28103634,0 +28103736,0 +28103736,0.12929994 +28103778,0.12929994 +28103778,0 +28104582,0 +28104582,0.24109837 +28104618,0.24109837 +28104618,0 +28104696,0 +28104696,0.17290284 +28104720,0.17290284 +28104720,0 +28106916,0 +28106916,0.016294508 +28106976,0.016294508 +28106976,0 +28107498,0 +28107498,0.087356669 +28107528,0.087356669 +28107528,0 +28108596,0 +28108596,0.029873265 +28108674,0.029873265 +28108674,0 +28108710,0 +28108710,0.048732649 +28108716,0.048732649 +28108716,0 +28114548,0 +28114548,0.096409173 +28114554,0.096409173 +28114554,0 +28114662,0 +28114662,0.22238986 +28114668,0.10681955 +28114668,0 +28114674,0 +28114674,0 +28114674,0.22238986 +28114674,0.10681955 +28114776,0 +28114776,0.21575136 +28114806,0.21575136 +28114806,0 +28114938,0 +28114938,0.26538926 +28114968,0.26538926 +28114968,0 +28117224,0 +28117224,0.08056729 +28117320,0.08056729 +28117320,0 +28120698,0 +28120698,0.17622209 +28120722,0.17622209 +28120722,0 +28128282,0 +28128282,0.048129149 +28128288,0.048129149 +28128288,0 +28136700,0 +28136700,0.0031683766 +28136706,0.0031683766 +28136706,0 +28139832,0 +28139832,0.096258298 +28139904,0.096258298 +28139904,0 +28140474,0 +28140474,0.22269161 +28140534,0.22269161 +28140534,0 +28144044,0 +28144044,0.18964997 +28144116,0.18964997 +28144116,0 +28145454,0 +28145454,0.15208208 +28145496,0.15208208 +28145496,0 +28149318,0 +28149318,0.13488232 +28149372,0.13488232 +28149372,0 +28149672,0 +28149672,0.17486421 +28149816,0.17486421 +28149816,0 +28150182,0 +28150182,0.4545866 +28150254,0.4545866 +28150254,0 +28153872,0 +28153872,0.38518407 +28153938,0.38518407 +28153938,0 +28154634,0 +28154634,0.2942064 +28154700,0.2942064 +28154700,0 +28190544,0 +28190544,0.19266747 +28190604,0.19266747 +28190604,0 +28190658,0 +28190658,0.42727821 +28190664,0.42727821 +28190664,0 +28203354,0 +28203354,0.20066385 +28203420,0.20066385 +28203420,0 +28203942,0 +28203942,0.2421545 +28204032,0.2421545 +28204032,0 +28204530,0 +28204530,0.18814122 +28204584,0.18814122 +28204584,0 +28205118,0 +28205118,0.12205794 +28205196,0.12205794 +28205196,0 +28205706,0 +28205706,0.18240797 +28205772,0.18240797 +28205772,0 +28206288,0 +28206288,0.21318648 +28206396,0.21318648 +28206396,0 +28207884,0 +28207884,0.0049788775 +28207890,0.0049788775 +28207890,0 +28219320,0 +28219320,0.24064575 +28219422,0.24064575 +28219422,0 +28221894,0 +28221894,0.0063367532 +28221900,0.0063367532 +28221900,0 +28225650,0 +28225650,0.22057936 +28225776,0.22057936 +28225776,0 +28231794,0 +28231794,0.060199155 +28231830,0.060199155 +28231830,0 +28231908,0 +28231908,0.11360893 +28231944,0.11360893 +28231944,0 +28234350,0 +28234350,0.16641521 +28234470,0 +28234470,0 +28234470,0.0058841279 +28234470,0.16641521 +28234476,0.0058841279 +28234476,0 +28236150,0 +28236150,0.055220278 +28236192,0.055220278 +28236192,0 +28236264,0 +28236264,0.068949909 +28236270,0.068949909 +28236270,0 +28246254,0 +28246254,1 +28246530,1 +28246530,0 +28275726,0 +28275726,0.052957151 +28275738,0.052957151 +28275738,0 +28275840,0 +28275840,0.16671696 +28275876,0.16671696 +28275876,0 +28278300,0 +28278300,0.13156307 +28278354,0.13156307 +28278354,0 +28278414,0 +28278414,0.013277007 +28278420,0.013277007 +28278420,0 +28280670,0 +28280670,0.16611346 +28280700,0.16611346 +28280700,0 +28284168,0 +28284168,0.041490646 +28284174,0.041490646 +28284174,0 +28284186,0 +28284186,0.39725407 +28284282,0.12070006 +28284282,0 +28284318,0 +28284318,0.12070006 +28284498,0.39725407 +28284498,0 +28286016,0 +28286016,0.18089922 +28286328,0.18089922 +28286328,0 +28288068,0 +28288068,0.22329511 +28288098,0.22329511 +28288098,0 +28288188,0 +28288188,0.16867833 +28288266,0.16867833 +28288266,0 +28288302,0 +28288302,0.16339771 +28288314,0.16339771 +28288314,0 +28291134,0 +28291134,0.13427882 +28291140,0.13427882 +28291140,0 +28291248,0 +28291248,0.13955944 +28291272,0.13955944 +28291272,0 +28299054,0 +28299054,0.36104406 +28299384,0.31080266 +28299384,0 +28299414,0 +28299414,0.31080266 +28299534,0.36104406 +28299534,0 +28300992,0 +28300992,0.42969221 +28301034,0.11707906 +28301034,0 +28301046,0 +28301046,0.11707906 +28301064,0.42969221 +28301064,0 +28301148,0 +28301148,0.087356669 +28301214,0.087356669 +28301214,0 +28305444,0 +28305444,0.42501509 +28305516,0.42501509 +28305516,0 +28306806,0 +28306806,0.12311406 +28306812,0.12311406 +28306812,0 +28308786,0 +28308786,0.091279421 +28308792,0.091279421 +28308792,0 +28308900,0 +28308900,0.17184671 +28308936,0.17184671 +28308936,0 +28311258,0 +28311258,0.25105613 +28311318,0.25105613 +28311318,0 +28311378,0 +28311378,0.29164152 +28311438,0.29164152 +28311438,0 +28311492,0 +28311492,0.31336753 +28311516,0.31336753 +28311516,0 +28311546,0 +28311546,0.25694025 +28311600,0.25694025 +28311600,0 +28311606,0 +28311606,0.08086904 +28311660,0.08086904 +28311660,0 +28311726,0 +28311726,0.12447194 +28311732,0.12447194 +28311732,0 +28311840,0 +28311840,0.3528968 +28311894,0.3528968 +28311894,0 +28317414,0 +28317414,0.19824985 +28317516,0.19824985 +28317516,0 +28320156,0 +28320156,0.21605311 +28320180,0.21605311 +28320180,0 +28323720,0 +28323720,0.040585395 +28323774,0.040585395 +28323774,0 +28323834,0 +28323834,0.014182257 +28323840,0.014182257 +28323840,0 +28323954,0 +28323954,0.19447797 +28323966,0.19447797 +28323966,0 +28326966,0 +28326966,0.1955341 +28326972,0.1955341 +28326972,0 +28327086,0 +28327086,0.12899819 +28327122,0.12899819 +28327122,0 +28327200,0 +28327200,0.072872661 +28327206,0.072872661 +28327206,0 +28328754,0 +28328754,0.52097164 +28329108,0.52097164 +28329108,0 +28349496,0 +28349496,0.0006035003 +28349502,0.0006035003 +28349502,0 +28359348,0 +28359348,0.23219674 +28359366,0.23219674 +28359366,0 +28359744,0 +28359744,0.021273386 +28359750,0.021273386 +28359750,0 +28359864,0 +28359864,0.1440857 +28359870,0.1440857 +28359870,0 +28366830,0 +28366830,0.12220881 +28366944,0.11768256 +28366944,0 +28366974,0 +28366974,0.12220881 +28367010,0.11768256 +28367010,0 +28367508,0 +28367508,0.038020519 +28367550,0.038020519 +28367550,0 +28372236,0 +28372236,0.36089318 +28372284,0.36089318 +28372284,0 +28376694,0 +28376694,0.35546168 +28376766,0.35546168 +28376766,0 +28376928,0 +28376928,0.19809897 +28377030,0.30129753 +28377030,0 +28377042,0 +28377042,0.30129753 +28377108,0.19809897 +28377108,0 +28377144,0 +28377144,0.083433917 +28377150,0.083433917 +28377150,0 +28377510,0 +28377510,0.18678334 +28377606,0.18678334 +28377606,0 +28378014,0 +28378014,0.13412794 +28378020,0.13412794 +28378020,0 +28378098,0 +28378098,0.23430899 +28378164,0.23430899 +28378164,0 +28378686,0 +28378686,0.21529873 +28378746,0.21529873 +28378746,0 +28379274,0 +28379274,0.21967411 +28379352,0.21967411 +28379352,0 +28380090,0 +28380090,0.0078455039 +28380102,0.0078455039 +28380102,0 +28382994,0 +28382994,0.093542547 +28383090,0.093542547 +28383090,0 +28383108,0 +28383108,0.013427882 +28383114,0.013427882 +28383114,0 +28383570,0 +28383570,0.12009656 +28383576,0.12009656 +28383576,0 +28384062,0 +28384062,0.21333736 +28384152,0.21333736 +28384152,0 +28385772,0 +28385772,0.1095353 +28385778,0.1095353 +28385778,0 +28388664,0 +28388664,0.0076946288 +28388778,0.0076946288 +28388778,0 +28393194,0 +28393194,0.18980084 +28393224,0.18980084 +28393224,0 +28393308,0 +28393308,0.20081473 +28393344,0.20081473 +28393344,0 +28393428,0 +28393428,0.086753168 +28393554,0.086753168 +28393554,0 +28396434,0 +28396434,0.17109234 +28396452,0.17109234 +28396452,0 +28404132,0 +28404132,0.10425468 +28404144,0.10425468 +28404144,0 +28404348,0 +28404348,0.26086301 +28404414,0.26086301 +28404414,0 +28404648,0 +28404648,0.29616777 +28404660,0.16581171 +28404660,0 +28404708,0 +28404708,0.16581171 +28404750,0.29616777 +28404750,0 +28404774,0 +28404774,0.10938443 +28404792,0.10938443 +28404792,0 +28408380,0 +28408380,0.31185878 +28408392,0.31185878 +28408392,0 +28408494,0 +28408494,0.13246832 +28408506,0.13246832 +28408506,0 +28408806,0 +28408806,0.42199759 +28408866,0.42199759 +28408866,0 +28409106,0 +28409106,0.42335546 +28409166,0.42335546 +28409166,0 +28409430,0 +28409430,0.0072420036 +28409436,0.0072420036 +28409436,0 +28409550,0 +28409550,0.243965 +28409574,0.243965 +28409574,0 +28410138,0 +28410138,0.13684369 +28410192,0.13684369 +28410192,0 +28415790,0 +28415790,0.28983102 +28415844,0.28983102 +28415844,0 +28416948,0 +28416948,0.23913699 +28416978,0.23913699 +28416978,0 +28417062,0 +28417062,0.20443573 +28417086,0.20443573 +28417086,0 +28417452,0 +28417452,0.25331925 +28417536,0.25331925 +28417536,0 +28417752,0 +28417752,0.33916717 +28417824,0.33916717 +28417824,0 +28418046,0 +28418046,0.44885335 +28418124,0.44885335 +28418124,0 +28418814,0 +28418814,0.21107423 +28418826,0.21107423 +28418826,0 +28421214,0 +28421214,0.16913096 +28421256,0.16913096 +28421256,0 +28421328,0 +28421328,0.073023537 +28421334,0.073023537 +28421334,0 +28421940,0 +28421940,0.11738081 +28421964,0.11738081 +28421964,0 +28425654,0 +28425654,0.054164152 +28425678,0.054164152 +28425678,0 +28447824,0 +28447824,0.015238383 +28447830,0.015238383 +28447830,0 +28447938,0 +28447938,0.021575136 +28447950,0.021575136 +28447950,0 +28448052,0 +28448052,0.22797224 +28448064,0.22797224 +28448064,0 +28452048,0 +28452048,0.20307785 +28452096,0.20307785 +28452096,0 +28452162,0 +28452162,0.38850332 +28452168,0.38850332 +28452168,0 +28455462,0 +28455462,0.12869644 +28455552,0.12869644 +28455552,0 +28456050,0 +28456050,0.21318648 +28456188,0.21318648 +28456188,0 +28456638,0 +28456638,0.2457755 +28456710,0.2457755 +28456710,0 +28457226,0 +28457226,0 +28457226,0.21122511 +28457226,0.17260109 +28457256,0 +28457256,0.17260109 +28457292,0.21122511 +28457292,0 +28457808,0 +28457808,0.13442969 +28457874,0.13442969 +28457874,0 +28458396,0 +28458396,0.20805673 +28458450,0.20805673 +28458450,0 +28460154,0 +28460154,0.16928183 +28460166,0.16928183 +28460166,0 +28462824,0 +28462824,0.036964393 +28462830,0.036964393 +28462830,0 +28465164,0 +28465164,0.015691008 +28465170,0.015691008 +28465170,0 +28471908,0 +28471908,0.25331925 +28471914,0.25331925 +28471914,0 +28480230,0 +28480230,0.082830416 +28480290,0.082830416 +28480290,0 +28480308,0 +28480308,0.071665661 +28480326,0.071665661 +28480326,0 +28480428,0 +28480428,0.17546771 +28480452,0.17546771 +28480452,0 +28486398,0 +28486398,0.23144237 +28486464,0.23144237 +28486464,0 +28487226,0 +28487226,0.18029572 +28487286,0.18029572 +28487286,0 +28487346,0 +28487346,0.092788171 +28487352,0.092788171 +28487352,0 +28487700,0 +28487700,0.001961376 +28487706,0.001961376 +28487706,0 +28491936,0 +28491936,0.11858781 +28491966,0.11858781 +28491966,0 +28493784,0 +28493784,0.28771877 +28493808,0.28771877 +28493808,0 +28495812,0 +28495812,0.10319855 +28495872,0.10319855 +28495872,0 +28534458,0 +28534458,0.64695232 +28534824,0.64695232 +28534824,0 +28537770,0 +28537770,0.034550392 +28537776,0.034550392 +28537776,0 +28556994,0 +28556994,0.16460471 +28557036,0.16460471 +28557036,0 +28559772,0 +28559772,0.0067893784 +28559784,0.0067893784 +28559784,0 +28563660,0 +28563660,0.259656 +28563726,0.259656 +28563726,0 +28570584,0 +28570584,0.059897405 +28570602,0.059897405 +28570602,0 +28570950,0 +28570950,0.27489439 +28571106,0.27489439 +28571106,0 +28583112,0 +28583112,0.020971635 +28583238,0.020971635 +28583238,0 +28586148,0 +28586148,0.012824381 +28586166,0.012824381 +28586166,0 +28586268,0 +28586268,0.2421545 +28586286,0.2421545 +28586286,0 +28587138,0 +28587138,0.10576343 +28587144,0.10576343 +28587144,0 +28589664,0 +28589664,0.052655401 +28589682,0.052655401 +28589682,0 +28594758,0 +28594758,0.19357272 +28594842,0.19357272 +28594842,0 +28595340,0 +28595340,0.17335546 +28595436,0.17335546 +28595436,0 +28595928,0 +28595928,0.15404345 +28596012,0.15404345 +28596012,0 +28596516,0 +28596516,0.24200362 +28596588,0.24200362 +28596588,0 +28617474,0 +28617474,0.30552203 +28617486,0.30552203 +28617486,0 +28617594,0 +28617594,0.28983102 +28617702,0.28983102 +28617702,0 +28617708,0 +28617708,0.065630658 +28617822,0.16777308 +28617822,0 +28617858,0 +28617858,0 +28617858,0.16777308 +28617858,0.065630658 +28617942,0 +28617942,0.18316234 +28618050,0.18316234 +28618050,0 +28618056,0 +28618056,0.071967411 +28618062,0.071967411 +28618062,0 +28621200,0 +28621200,0.32905854 +28622220,0.32905854 +28622220,0 +28624842,0 +28624842,0.29330115 +28624854,0.29330115 +28624854,0 +28625370,0 +28625370,0.16022933 +28625400,0.16022933 +28625400,0 +28625490,0 +28625490,0.087356669 +28625520,0.087356669 +28625520,0 +28630950,0 +28630950,0.21107423 +28630962,0.21107423 +28630962,0 +28633110,0 +28633110,0.13156307 +28633122,0.13156307 +28633122,0 +28647516,0 +28647516,0.17199759 +28647522,0.17199759 +28647522,0 +28647636,0 +28647636,0.31004828 +28647864,0.31004828 +28647864,0 +28655646,0 +28655646,0.042697646 +28655694,0.042697646 +28655694,0 +28656762,0 +28656762,0.258449 +28656774,0.258449 +28656774,0 +28659144,0 +28659144,0.40570308 +28659156,0.40570308 +28659156,0 +28659264,0 +28659264,0.11632468 +28659282,0.11632468 +28659282,0 +28662516,0 +28662516,0.22404949 +28662582,0.22404949 +28662582,0 +28664484,0 +28664484,0.17954134 +28664544,0.17954134 +28664544,0 +28664748,0 +28664748,0.0992758 +28664766,0.0992758 +28664766,0 +28664862,0 +28664862,0.2493965 +28664874,0.2493965 +28664874,0 +28664982,0 +28664982,0.12839469 +28664994,0.12839469 +28664994,0 +28665072,0 +28665072,0.18874472 +28665096,0.19266747 +28665096,0 +28665138,0 +28665138,0.18874472 +28665186,0.19266747 +28665186,0 +28665660,0 +28665660,0.26508751 +28665762,0.26508751 +28665762,0 +28666248,0 +28666248,0.21922148 +28666308,0.21922148 +28666308,0 +28666836,0 +28666836,0.2542245 +28666932,0.2542245 +28666932,0 +28667124,0 +28667124,0.23732649 +28667166,0.23732649 +28667166,0 +28667418,0 +28667418,0.19025347 +28667496,0.19025347 +28667496,0 +28668006,0 +28668006,0.19055522 +28668090,0.19055522 +28668090,0 +28670004,0 +28670004,0.037869644 +28670010,0.037869644 +28670010,0 +28670118,0 +28670118,0.091128546 +28670148,0.091128546 +28670148,0 +28670238,0 +28670238,0.017803259 +28670244,0.017803259 +28670244,0 +28670352,0 +28670352,0.094900422 +28670358,0.094900422 +28670358,0 +28670466,0 +28670466,0.22133374 +28670568,0.22133374 +28670568,0 +28670586,0 +28670586,0.14996982 +28670604,0.14996982 +28670604,0 +28673112,0 +28673112,0.1059143 +28673124,0.1059143 +28673124,0 +28673424,0 +28673424,0.44885335 +28673718,0.44885335 +28673718,0 +28681770,0 +28681770,0.22027761 +28681782,0.22027761 +28681782,0 +28682706,0 +28682706,0.18889559 +28682772,0.18889559 +28682772,0 +28682820,0 +28682820,0.32362704 +28682862,0.32362704 +28682862,0 +28717740,0 +28717740,0.23642124 +28717776,0.23642124 +28717776,0 +28722816,0 +28722816,0.051901026 +28722846,0.051901026 +28722846,0 +28722930,0 +28722930,0.042546771 +28722996,0.042546771 +28722996,0 +28727166,0 +28727166,0.19719372 +28727208,0.19719372 +28727208,0 +28727280,0 +28727280,0.16671696 +28727310,0.16671696 +28727310,0 +28737030,0 +28737030,0.21952323 +28737036,0.21952323 +28737036,0 +28741350,0 +28741350,0.0076946288 +28741452,0.0076946288 +28741452,0 +28741470,0 +28741470,0.22148461 +28741494,0.22148461 +28741494,0 +28741584,0 +28741584,0.20866023 +28741650,0.20866023 +28741650,0 +28741698,0 +28741698,0.28364514 +28741710,0.28364514 +28741710,0 +28741818,0 +28741818,0.22465299 +28741830,0.22465299 +28741830,0 +28742106,0 +28742106,0.18240797 +28742214,0.18240797 +28742214,0 +28742220,0 +28742220,0.15585395 +28742238,0.15585395 +28742238,0 +28744074,0 +28744074,0.17878696 +28744092,0.17878696 +28744092,0 +28744188,0 +28744188,0.1477067 +28744254,0.1477067 +28744254,0 +28746372,0 +28746372,0.022027761 +28746432,0.022027761 +28746432,0 +28750458,0 +28750458,0.26780326 +28750524,0.26780326 +28750524,0 +28750572,0 +28750572,0.18286059 +28750584,0.18286059 +28750584,0 +28750686,0 +28750686,0.33961979 +28750782,0.33961979 +28750782,0 +28750806,0 +28750806,0.064121907 +28750848,0.064121907 +28750848,0 +28750920,0 +28750920,0.13624019 +28750980,0.13624019 +28750980,0 +28751034,0 +28751034,0.19115872 +28751154,0.13080869 +28751154,0 +28751202,0 +28751202,0.13080869 +28751208,0.19115872 +28751208,0 +28751268,0 +28751268,0.1404647 +28751280,0.1404647 +28751280,0 +28754988,0 +28754988,0.69930597 +28755072,0.039981895 +28755072,0 +28755078,0 +28755078,0.039981895 +28755306,0.69930597 +28755306,0 +28757304,0 +28757304,0.1053108 +28757316,0.1053108 +28757316,0 +28757418,0 +28757418,0.20006035 +28757454,0.20006035 +28757454,0 +28769616,0 +28769616,0.15389258 +28769640,0.15389258 +28769640,0 +28783794,0 +28783794,0.24894387 +28783806,0.24894387 +28783806,0 +28783908,0 +28783908,0.015389258 +28783998,0.015389258 +28783998,0 +28784022,0 +28784022,0.25935425 +28784034,0.25935425 +28784034,0 +28794852,0 +28794852,0.14544357 +28794864,0.14544357 +28794864,0 +28794966,0 +28794966,0.25950513 +28795050,0.25950513 +28795050,0 +28796940,0 +28796940,0.27459264 +28796958,0.27459264 +28796958,0 +28797054,0 +28797054,0.24652987 +28797120,0.24652987 +28797120,0 +28797174,0 +28797174,0.22178636 +28797180,0.22178636 +28797180,0 +28797516,0 +28797516,0.2445685 +28797582,0.2445685 +28797582,0 +28804062,0 +28804062,0.31125528 +28804098,0.31125528 +28804098,0 +28804356,0 +28804356,0.37748944 +28804374,0.37748944 +28804374,0 +28804656,0 +28804656,0.29586602 +28804740,0.29586602 +28804740,0 +28804758,0 +28804758,0.19900422 +28804872,0.032890766 +28804872,0 +28804878,0 +28804878,0.032890766 +28804926,0.19900422 +28804926,0 +28804956,0 +28804956,0.35757393 +28804974,0.35757393 +28804974,0 +28804992,0 +28804992,0.24064575 +28805082,0.24064575 +28805082,0 +28805106,0 +28805106,0.26342788 +28805130,0.26342788 +28805130,0 +28807920,0 +28807920,0.41264333 +28807932,0.41264333 +28807932,0 +28811568,0 +28811568,0.23476162 +28811634,0.23476162 +28811634,0 +28812156,0 +28812156,0.18980084 +28812276,0.18980084 +28812276,0 +28812618,0 +28812618,0.18874472 +28812726,0.18874472 +28812726,0 +28812732,0 +28812732,0.1483102 +28812744,0.18210622 +28812744,0 +28812822,0 +28812822,0.1483102 +28812828,0.18210622 +28812828,0 +28812852,0 +28812852,0.28907664 +28812882,0.28907664 +28812882,0 +28812966,0 +28812966,0.11888956 +28813020,0.11888956 +28813020,0 +28813332,0 +28813332,0.23249849 +28813398,0.23249849 +28813398,0 +28814502,0 +28814502,0.20488835 +28814508,0.20488835 +28814508,0 +28821924,0 +28821924,0.20745323 +28821942,0.20745323 +28821942,0 +28822038,0 +28822038,0.028213639 +28822044,0.028213639 +28822044,0 +28822158,0 +28822158,0.052806276 +28822164,0.052806276 +28822164,0 +28829298,0 +28829298,0.20503923 +28829358,0.20503923 +28829358,0 +28832604,0 +28832604,0.011315631 +28832610,0.011315631 +28832610,0 +28843284,0 +28843284,0.23340374 +28843350,0.23340374 +28843350,0 +28850562,0 +28850562,0.082226916 +28850574,0.082226916 +28850574,0 +28852524,0 +28852524,0.18270972 +28852536,0.18270972 +28852536,0 +28878792,0 +28878792,0.3553108 +28878798,0.3553108 +28878798,0 +28878912,0 +28878912,0.19930597 +28878918,0.19930597 +28878918,0 +28882746,0 +28882746,0.22631261 +28882818,0.22631261 +28882818,0 +28887198,0 +28887198,0.13050694 +28887264,0.13050694 +28887264,0 +28890456,0 +28890456,0.25648763 +28890480,0.25648763 +28890480,0 +28891314,0 +28891314,0.023687387 +28891368,0.023687387 +28891368,0 +28893588,0 +28893588,0.17184671 +28893654,0.17184671 +28893654,0 +28893702,0 +28893702,0.037567894 +28893708,0.037567894 +28893708,0 +28893816,0 +28893816,0.23038624 +28893822,0.23038624 +28893822,0 +28893924,0 +28893924,0.087054919 +28894032,0.087054919 +28894032,0 +28894038,0 +28894038,0.1471032 +28894062,0.1471032 +28894062,0 +28894152,0 +28894152,0.0058841279 +28894164,0.0058841279 +28894164,0 +28894272,0 +28894272,0.19115872 +28894374,0.19115872 +28894374,0 +28894386,0 +28894386,0.18859384 +28894434,0.18859384 +28894434,0 +28894500,0 +28894500,0.18512372 +28894542,0.18512372 +28894542,0 +28894620,0 +28894620,0.20624623 +28894662,0.20624623 +28894662,0 +28894734,0 +28894734,0.054013277 +28894758,0.054013277 +28894758,0 +28894848,0 +28894848,0.22933011 +28894872,0.22933011 +28894872,0 +28894968,0 +28894968,0.31683766 +28895004,0.31683766 +28895004,0 +28895082,0 +28895082,0.096409173 +28895148,0.096409173 +28895148,0 +28895196,0 +28895196,0.022933011 +28895202,0.022933011 +28895202,0 +28895316,0 +28895316,0.21303561 +28895406,0.21303561 +28895406,0 +28895430,0 +28895430,0.025799638 +28895436,0.025799638 +28895436,0 +28896450,0 +28896450,0.21318648 +28896456,0.21318648 +28896456,0 +28896564,0 +28896564,0.26901026 +28896636,0.26901026 +28896636,0 +28896678,0 +28896678,0.023989137 +28896720,0.023989137 +28896720,0 +28896726,0 +28896726,0.33449004 +28896828,0.33449004 +28896828,0 +28897746,0 +28897746,0.070609535 +28897788,0.070609535 +28897788,0 +28898184,0 +28898184,0.13397707 +28898214,0.13397707 +28898214,0 +28898358,0 +28898358,0.13261919 +28898424,0.13261919 +28898424,0 +28898478,0 +28898478,0.11059143 +28898664,0.11059143 +28898664,0 +28902612,0 +28902612,0.13412794 +28902636,0.13412794 +28902636,0 +28902726,0 +28902726,0.17667471 +28902780,0.17667471 +28902780,0 +28906572,0 +28906572,0.23657212 +28906638,0.0075437538 +28906638,0 +28906668,0 +28906668,0.23657212 +28906752,0 +28906752,0 +28906752,0.0075437538 +28906752,0.30959565 +28906794,0.30959565 +28906794,0 +28906866,0 +28906866,0.20986723 +28906932,0.20986723 +28906932,0 +28907160,0 +28907160,0.26689801 +28907226,0.26689801 +28907226,0 +28907496,0 +28907496,0.05974653 +28907502,0.05974653 +28907502,0 +28907748,0 +28907748,0.27625226 +28907850,0.27625226 +28907850,0 +28908330,0 +28908330,0.21967411 +28908408,0.21967411 +28908408,0 +28908918,0 +28908918,0.21469523 +28909032,0.21469523 +28909032,0 +28910148,0 +28910148,0.1422752 +28910202,0.1422752 +28910202,0 +28910244,0 +28910244,0.053560652 +28910310,0.053560652 +28910310,0 +28910358,0 +28910358,0.08026554 +28910364,0.08026554 +28910364,0 +28910472,0 +28910472,0.20790585 +28910514,0.20790585 +28910514,0 +28912554,0 +28912554,0.17637296 +28912566,0.17637296 +28912566,0 +28914564,0 +28914564,0.14695232 +28914588,0.14695232 +28914588,0 +28914696,0 +28914696,0.34520217 +28914780,0.34520217 +28914780,0 +28914816,0 +28914816,0.16038021 +28914828,0.16038021 +28914828,0 +28916778,0 +28916778,0.1501207 +28916784,0.1501207 +28916784,0 +28917138,0 +28917138,0.084339167 +28917150,0.084339167 +28917150,0 +28917252,0 +28917252,0.055522028 +28917366,0.10274593 +28917366,0 +28917396,0 +28917396,0.055522028 +28917486,0.1525347 +28917486,0 +28917522,0 +28917522,0.10274593 +28917564,0.1525347 +28917564,0 +28917600,0 +28917600,0.078907664 +28917606,0.078907664 +28917606,0 +28917714,0 +28917714,0.081019916 +28917768,0.081019916 +28917768,0 +28917834,0 +28917834,0.097767049 +28917870,0.097767049 +28917870,0 +28917948,0 +28917948,0.33479179 +28917990,0.33479179 +28917990,0 +28918668,0 +28918668,0.27021726 +28918746,0.27021726 +28918746,0 +28919256,0 +28919256,0.22314424 +28919334,0.22314424 +28919334,0 +28919838,0 +28919838,0.22767049 +28919916,0.22767049 +28919916,0 +28920426,0 +28920426,0.18934822 +28920492,0.18934822 +28920492,0 +28921422,0 +28921422,0.13231744 +28921434,0.13231744 +28921434,0 +28924356,0 +28924356,0.21605311 +28924362,0.21605311 +28924362,0 +28927056,0 +28927056,0.12356669 +28927092,0.12356669 +28927092,0 +28928994,0 +28928994,0.23747737 +28929084,0.23747737 +28929084,0 +28930248,0 +28930248,0.035153893 +28930254,0.035153893 +28930254,0 +28935588,0 +28935588,0.26388051 +28935630,0.26388051 +28935630,0 +28936146,0 +28936146,0.1913096 +28936194,0.1913096 +28936194,0 +28936260,0 +28936260,0.12582981 +28936374,0.25558238 +28936374,0 +28936398,0 +28936398,0.25558238 +28936404,0.12582981 +28936404,0 +28939902,0 +28939902,0.12145444 +28939968,0.12145444 +28939968,0 +28963608,0 +28963608,0.20322873 +28963692,0.20322873 +28963692,0 +28963728,0 +28963728,0.026704888 +28963734,0.026704888 +28963734,0 +28964952,0 +28964952,0.35561255 +28964964,0.35561255 +28964964,0 +28965066,0 +28965066,0.3577248 +28965108,0.3577248 +28965108,0 +28965660,0 +28965660,0.21726011 +28965732,0.21726011 +28965732,0 +28965774,0 +28965774,0.026554013 +28965780,0.026554013 +28965780,0 +28965888,0 +28965888,0.10863005 +28965900,0.10863005 +28965900,0 +28970646,0 +28970646,0.11179843 +28970676,0.11179843 +28970676,0 +28970760,0 +28970760,0.18286059 +28970820,0.18286059 +28970820,0 +28970874,0 +28970874,0.24471937 +28970898,0.24471937 +28970898,0 +28970994,0 +28970994,0.24864212 +28971060,0.24864212 +28971060,0 +28971108,0 +28971108,0.074532287 +28971114,0.074532287 +28971114,0 +28971222,0 +28971222,0.32709716 +28971258,0.32709716 +28971258,0 +28971342,0 +28971342,0.23958962 +28971354,0.23958962 +28971354,0 +28971456,0 +28971456,0.078002414 +28971486,0.078002414 +28971486,0 +28971570,0 +28971570,0.039981895 +28971576,0.039981895 +28971576,0 +28972410,0 +28972410,0.45443573 +28972650,0.45443573 +28972650,0 +28975578,0 +28975578,0.36179843 +28975590,0.36179843 +28975590,0 +28976046,0 +28976046,0.18467109 +28976058,0.18467109 +28976058,0 +28978614,0 +28978614,0.50935425 +28978908,0.50935425 +28978908,0 +28985712,0 +28985712,0.22057936 +28985796,0.22057936 +28985796,0 +28986300,0 +28986300,0.19100785 +28986348,0.18361497 +28986348,0 +28986390,0 +28986390,0.19100785 +28986396,0.18361497 +28986396,0 +28986882,0 +28986882,0.18406759 +28987002,0.18406759 +28987002,0 +28987470,0 +28987470,0.19990947 +28987566,0.19990947 +28987566,0 +28988274,0 +28988274,0.35123718 +28988328,0.35123718 +28988328,0 +28988574,0 +28988574,0.41988533 +28988658,0.41988533 +28988658,0 +28988874,0 +28988874,0.32981291 +28988946,0.32981291 +28988946,0 +28989168,0 +28989168,0.29330115 +28989222,0.29330115 +28989222,0 +28993938,0 +28993938,0.011315631 +28993944,0.011315631 +28993944,0 +28994304,0 +28994304,0.10395293 +28994358,0.10395293 +28994358,0 +29000070,0 +29000070,0.1010863 +29000118,0.1010863 +29000118,0 +29007036,0 +29007036,0.23445987 +29007054,0.23445987 +29007054,0 +29008110,0 +29008110,0.27730839 +29008218,0.27730839 +29008218,0 +29008230,0 +29008230,0.00015087508 +29008236,0.00015087508 +29008236,0 +29008344,0 +29008344,0.17531684 +29008434,0.17531684 +29008434,0 +29010420,0 +29010420,0.20866023 +29010492,0.20866023 +29010492,0 +29010534,0 +29010534,0.13744719 +29010558,0.13744719 +29010558,0 +29010648,0 +29010648,0.011013881 +29010654,0.011013881 +29010654,0 +29010768,0 +29010768,0.1997586 +29010774,0.1997586 +29010774,0 +29010882,0 +29010882,0.093391672 +29010888,0.1035003 +29010888,0 +29010894,0 +29010894,0.1035003 +29010978,0.093391672 +29010978,0 +29010996,0 +29010996,0.14634882 +29011002,0.14634882 +29011002,0 +29012616,0 +29012616,0.068799034 +29012676,0.068799034 +29012676,0 +29012730,0 +29012730,0.28590827 +29012754,0.28590827 +29012754,0 +29012850,0 +29012850,0.031834641 +29012856,0.031834641 +29012856,0 +29018136,0 +29018136,0.007996379 +29018142,0.007996379 +29018142,0 +29018256,0 +29018256,0.075739288 +29018262,0.075739288 +29018262,0 +29021058,0 +29021058,0.18361497 +29021082,0.18361497 +29021082,0 +29021172,0 +29021172,0.11134581 +29021226,0.11134581 +29021226,0 +29021286,0 +29021286,0.047374774 +29021292,0.047374774 +29021292,0 +29021406,0 +29021406,0.09037417 +29021442,0.09037417 +29021442,0 +29021520,0 +29021520,0.13865419 +29021550,0.13865419 +29021550,0 +29021634,0 +29021634,0.2021726 +29021754,0.071363911 +29021754,0 +29021772,0 +29021772,0.2021726 +29021826,0.071363911 +29021826,0 +29021868,0 +29021868,0.21846711 +29021886,0.21846711 +29021886,0 +29026044,0 +29026044,0.0043753772 +29026050,0.0043753772 +29026050,0 +29026914,0 +29026914,0.20232348 +29026950,0.20232348 +29026950,0 +29054892,0 +29054892,0.10304768 +29054952,0.10304768 +29054952,0 +29056398,0 +29056398,0.22057936 +29056500,0.22057936 +29056500,0 +29056692,0 +29056692,0.10199155 +29056716,0.16898008 +29056716,0 +29056740,0 +29056740,0.10199155 +29056746,0.16898008 +29056746,0 +29056812,0 +29056812,0.20368135 +29056848,0.20368135 +29056848,0 +29056926,0 +29056926,0.0054315027 +29056932,0.0054315027 +29056932,0 +29058270,0 +29058270,0.24683162 +29058330,0.24683162 +29058330,0 +29058858,0 +29058858,0.22782136 +29058930,0.22782136 +29058930,0 +29059446,0 +29059446,0.19930597 +29059512,0.19930597 +29059512,0 +29060034,0 +29060034,0.19930597 +29060118,0.19930597 +29060118,0 +29060622,0 +29060622,0.16988533 +29060706,0.16988533 +29060706,0 +29064390,0 +29064390,0.20368135 +29064552,0.20368135 +29064552,0 +29068290,0 +29068290,0.12899819 +29068368,0.12899819 +29068368,0 +29069832,0 +29069832,0.21786361 +29069838,0.21786361 +29069838,0 +29074344,0 +29074344,0.077851539 +29074356,0.077851539 +29074356,0 +29074458,0 +29074458,0.17878696 +29074482,0.17878696 +29074482,0 +29076624,0 +29076624,0.35561255 +29076666,0.35561255 +29076666,0 +29076738,0 +29076738,0.056427278 +29076756,0.056427278 +29076756,0 +29078826,0 +29078826,0.15706095 +29078916,0.15706095 +29078916,0 +29087856,0 +29087856,0.3026554 +29087940,0.3026554 +29087940,0 +29087970,0 +29087970,0.069100785 +29088036,0.069100785 +29088036,0 +29089110,0 +29089110,0.20126735 +29089134,0.20126735 +29089134,0 +29091774,0 +29091774,0.062462281 +29091780,0.062462281 +29091780,0 +29091894,0 +29091894,0.037567894 +29091906,0.037567894 +29091906,0 +29094906,0 +29094906,0.014634882 +29094912,0.014634882 +29094912,0 +29095020,0 +29095020,0.15841883 +29095038,0.15841883 +29095038,0 +29095134,0 +29095134,0.039680145 +29095194,0.039680145 +29095194,0 +29095248,0 +29095248,0.18587809 +29095260,0.18587809 +29095260,0 +29098866,0 +29098866,0.16173808 +29098884,0.16173808 +29098884,0 +29103708,0 +29103708,0.074381412 +29103774,0.074381412 +29103774,0 +29111082,0 +29111082,0.042395896 +29111094,0.042395896 +29111094,0 +29111196,0 +29111196,0.24607725 +29111214,0.24607725 +29111214,0 +29122194,0 +29122194,0.26101388 +29122200,0.26101388 +29122200,0 +29122308,0 +29122308,0.035606518 +29122314,0.035606518 +29122314,0 +29122422,0 +29122422,0.0030175015 +29122428,0.0030175015 +29122428,0 +29122542,0 +29122542,0.1047073 +29122548,0.1047073 +29122548,0 +29136390,0 +29136390,0.20971635 +29136426,0.20971635 +29136426,0 +29143548,0 +29143548,0.099426675 +29143578,0.099426675 +29143578,0 +29145528,0 +29145528,0.14302957 +29145552,0.14302957 +29145552,0 +29149104,0 +29149104,0.063820157 +29149170,0.063820157 +29149170,0 +29149986,0 +29149986,0.27715751 +29150058,0.27715751 +29150058,0 +29151366,0 +29151366,0.054918527 +29151372,0.054918527 +29151372,0 +29151480,0 +29151480,0.063971032 +29151492,0.063971032 +29151492,0 +29151594,0 +29151594,0.061557031 +29151600,0.061557031 +29151600,0 +29151714,0 +29151714,0.055974653 +29151720,0.055974653 +29151720,0 +29151828,0 +29151828,0.32513579 +29151834,0.32513579 +29151834,0 +29151942,0 +29151942,0.20353048 +29152062,0.17471334 +29152062,0 +29152074,0 +29152074,0 +29152074,0.20353048 +29152074,0.17471334 +29152176,0 +29152176,0.13608932 +29152236,0.13608932 +29152236,0 +29152290,0 +29152290,0.10153893 +29152296,0.10153893 +29152296,0 +29152410,0 +29152410,0.28832227 +29152518,0.28832227 +29152518,0 +29152524,0 +29152524,0.25558238 +29152554,0.25558238 +29152554,0 +29152638,0 +29152638,0.13789982 +29152650,0.13789982 +29152650,0 +29152758,0 +29152758,0.16928183 +29152866,0.16928183 +29152866,0 +29156466,0 +29156466,0.21695836 +29156514,0.21695836 +29156514,0 +29156580,0 +29156580,0.23777912 +29156592,0.23777912 +29156592,0 +29157702,0 +29157702,0.0075437538 +29157816,0.21409173 +29157816,0 +29157822,0 +29157822,0.21409173 +29157840,0.0075437538 +29157840,0 +29157930,0 +29157930,0.29164152 +29157960,0.29164152 +29157960,0 +29158050,0 +29158050,0.21439348 +29158176,0.21439348 +29158176,0 +29160684,0 +29160684,0.077549789 +29160714,0.077549789 +29160714,0 +29169024,0 +29169024,0.13005432 +29169036,0.13005432 +29169036,0 +29169138,0 +29169138,0.30159928 +29169144,0.30159928 +29169144,0 +29169252,0 +29169252,0.11013881 +29169366,0.11013881 +29169366,0 +29191722,0 +29191722,0.17109234 +29191812,0.17109234 +29191812,0 +29194566,0 +29194566,0.30069403 +29194974,0.30069403 +29194974,0 +29196402,0 +29196402,0.32438141 +29196630,0.32438141 +29196630,0 +29228730,0 +29228730,0.26342788 +29228790,0.26342788 +29228790,0 +29229360,0 +29229360,0.18783947 +29229384,0.18783947 +29229384,0 +29234958,0 +29234958,0.1913096 +29234988,0.1913096 +29234988,0 +29239404,0 +29239404,0.19583585 +29239416,0.19583585 +29239416,0 +29244354,0 +29244354,0.027911889 +29244360,0.027911889 +29244360,0 +29249250,0 +29249250,0.1925166 +29249346,0.1925166 +29249346,0 +29249370,0 +29249370,0.17094146 +29249382,0.17094146 +29249382,0 +29249484,0 +29249484,0.17320459 +29249502,0.17320459 +29249502,0 +29249598,0 +29249598,0.25875075 +29249640,0.25875075 +29249640,0 +29251542,0 +29251542,0.17124321 +29251584,0.17124321 +29251584,0 +29277300,0 +29277300,0.0075437538 +29277330,0.0075437538 +29277330,0 +29277414,0 +29277414,0.0073928787 +29277480,0.0073928787 +29277480,0 +29277528,0 +29277528,0.040283645 +29277534,0.040283645 +29277534,0 +29277648,0 +29277648,0.19749547 +29277672,0.19749547 +29277672,0 +29277762,0 +29277762,0.28213639 +29277804,0.28213639 +29277804,0 +29277876,0 +29277876,0.13518407 +29277924,0.13518407 +29277924,0 +29282814,0 +29282814,0.18286059 +29282880,0.18286059 +29282880,0 +29288508,0 +29288508,0.16309596 +29288532,0.16309596 +29288532,0 +29288622,0 +29288622,0.22872661 +29288670,0.22872661 +29288670,0 +29308812,0 +29308812,0.30642728 +29308818,0.30642728 +29308818,0 +29308932,0 +29308932,0.0076946288 +29308944,0 +29308944,0 +29308944,0.0076946288 +29308944,0.21469523 +29309064,0.13050694 +29309064,0 +29309070,0 +29309070,0.21469523 +29309094,0.13050694 +29309094,0 +29309178,0 +29309178,0.15449608 +29309220,0.15449608 +29309220,0 +29309292,0 +29309292,0.026252263 +29309316,0.026252263 +29309316,0 +29309412,0 +29309412,0.22420036 +29309466,0.22420036 +29309466,0 +29313522,0 +29313522,0.24230537 +29313816,0.24230537 +29313816,0 +29319396,0 +29319396,0.11707906 +29319402,0.11707906 +29319402,0 +29323956,0 +29323956,0.042697646 +29324010,0.042697646 +29324010,0 +29324070,0 +29324070,0.27715751 +29324082,0.27715751 +29324082,0 +29324184,0 +29324184,0.11798431 +29324190,0.11798431 +29324190,0 +29327250,0 +29327250,0.21695836 +29327292,0.21695836 +29327292,0 +29334048,0 +29334048,0.4509656 +29334396,0.4509656 +29334396,0 +29337396,0 +29337396,0.13699457 +29337408,0.13699457 +29337408,0 +29343708,0 +29343708,0.20413398 +29343882,0.20413398 +29343882,0 +29347392,0 +29347392,0.33539529 +29347398,0.33539529 +29347398,0 +29347506,0 +29347506,0.019462885 +29347512,0.019462885 +29347512,0 +29350968,0 +29350968,0.16143633 +29350986,0.16143633 +29350986,0 +29352090,0 +29352090,0.27851539 +29352102,0.27851539 +29352102,0 +29352204,0 +29352204,0.21182861 +29352306,0.21182861 +29352306,0 +29354454,0 +29354454,0.13186482 +29354490,0.13186482 +29354490,0 +29354946,0 +29354946,0.065479783 +29354952,0.065479783 +29354952,0 +29355060,0 +29355060,0.013277007 +29355066,0.013277007 +29355066,0 +29356158,0 +29356158,0.082981291 +29356176,0.082981291 +29356176,0 +29358438,0 +29358438,0.14302957 +29358486,0.14302957 +29358486,0 +29358552,0 +29358552,0.1065178 +29358564,0.1065178 +29358564,0 +29358666,0 +29358666,0.15178033 +29358780,0.15178033 +29358780,0 +29387436,0 +29387436,0.071967411 +29387442,0.071967411 +29387442,0 +29398374,0 +29398374,0.22178636 +29398386,0.22178636 +29398386,0 +29398950,0 +29398950,0.09067592 +29399016,0.09067592 +29399016,0 +29399064,0 +29399064,0.15268558 +29399070,0.15268558 +29399070,0 +29399184,0 +29399184,0.257242 +29399214,0.257242 +29399214,0 +29403624,0 +29403624,0.6537417 +29403834,0.6537417 +29403834,0 +29404314,0 +29404314,0.24019312 +29404368,0.24019312 +29404368,0 +29406888,0 +29406888,0.13910682 +29406954,0.13910682 +29406954,0 +29407002,0 +29407002,0.28228727 +29407038,0.28228727 +29407038,0 +29407122,0 +29407122,0.25211225 +29407236,0.17893784 +29407236,0 +29407254,0 +29407254,0.17893784 +29407260,0.25211225 +29407260,0 +29407350,0 +29407350,0.18195534 +29407380,0.18195534 +29407380,0 +29412168,0 +29412168,0.33614967 +29412186,0.33614967 +29412186,0 +29412282,0 +29412282,0.011768256 +29412438,0.011768256 +29412438,0 +29418456,0 +29418456,0.14604707 +29418462,0.14604707 +29418462,0 +29422908,0 +29422908,0.39363307 +29422920,0.39363307 +29422920,0 +29423208,0 +29423208,0.3008449 +29423286,0.3008449 +29423286,0 +29423796,0 +29423796,0.18255884 +29423886,0.18255884 +29423886,0 +29424384,0 +29424384,0.21710923 +29424462,0.21710923 +29424462,0 +29424966,0 +29424966,0.16385033 +29425032,0.16385033 +29425032,0 +29426274,0 +29426274,0.1483102 +29426334,0.1483102 +29426334,0 +29441892,0 +29441892,0.0073928787 +29441964,0.0073928787 +29441964,0 +29443812,0 +29443812,0 +29443812,0.23114062 +29443812,0.086451418 +29443830,0 +29443830,0.086451418 +29443926,0.23114062 +29443926,0 +29443950,0 +29443950,0.21786361 +29444034,0.21786361 +29444034,0 +29445030,0 +29445030,0.1071213 +29445084,0.1071213 +29445084,0 +29446428,0 +29446428,0.18904647 +29446452,0.18904647 +29446452,0 +29446806,0 +29446806,0.19945685 +29446824,0.19945685 +29446824,0 +29452152,0 +29452152,0.034550392 +29452266,0.20730235 +29452266,0 +29452284,0 +29452284,0.034550392 +29452320,0.20730235 +29452320,0 +29452380,0 +29452380,0.22223899 +29452434,0.22223899 +29452434,0 +29485974,0 +29485974,0.23295112 +29486058,0.23295112 +29486058,0 +29487324,0 +29487324,0.0075437538 +29487408,0.0075437538 +29487408,0 +29488734,0 +29488734,0.24185275 +29488752,0.24185275 +29488752,0 +29488848,0 +29488848,0.039680145 +29488884,0.039680145 +29488884,0 +29488968,0 +29488968,0.27278214 +29489040,0.27278214 +29489040,0 +29489082,0 +29489082,0.015540133 +29489088,0.015540133 +29489088,0 +29490756,0 +29490756,0.23853349 +29490780,0.23853349 +29490780,0 +29490876,0 +29490876,0.0073928787 +29490954,0.0073928787 +29490954,0 +29492238,0 +29492238,0.013126132 +29492244,0.013126132 +29492244,0 +29492358,0 +29492358,0.0010561255 +29492364,0.0010561255 +29492364,0 +29497230,0 +29497230,0.32694629 +29497302,0.32694629 +29497302,0 +29498226,0 +29498226,0.16732046 +29498250,0.16732046 +29498250,0 +29502756,0 +29502756,0.37733856 +29502774,0.37733856 +29502774,0 +29502834,0 +29502834,0.14514182 +29502846,0.14514182 +29502846,0 +29502954,0 +29502954,0.14484007 +29502960,0.14484007 +29502960,0 +29503068,0 +29503068,0.11330718 +29503092,0.11330718 +29503092,0 +29505144,0 +29505144,0.14378395 +29505156,0.14378395 +29505156,0 +29506752,0 +29506752,0.077398914 +29506770,0.077398914 +29506770,0 +29506866,0 +29506866,0.27474351 +29506872,0.27474351 +29506872,0 +29516754,0 +29516754,0.21167773 +29516778,0.21167773 +29516778,0 +29516868,0 +29516868,0.31216053 +29516922,0.31216053 +29516922,0 +29516982,0 +29516982,0.15359083 +29517024,0.15359083 +29517024,0 +29524104,0 +29524104,0.25256488 +29524116,0.25256488 +29524116,0 +29524218,0 +29524218,0.17954134 +29524266,0.17954134 +29524266,0 +29524338,0 +29524338,0.16716958 +29524368,0.16716958 +29524368,0 +29524452,0 +29524452,0.19870247 +29524470,0.19870247 +29524470,0 +29527512,0 +29527512,0.32226916 +29527560,0.32226916 +29527560,0 +29527842,0 +29527842,0.17109234 +29527872,0.17109234 +29527872,0 +29531160,0 +29531160,0.15630658 +29531172,0.15630658 +29531172,0 +29531280,0 +29531280,0.14634882 +29531292,0.14634882 +29531292,0 +29532954,0 +29532954,0.20307785 +29532984,0.20307785 +29532984,0 +29533068,0 +29533068,0.2996379 +29533158,0.2996379 +29533158,0 +29533686,0 +29533686,0.51780326 +29533908,0.0042245021 +29533908,0 +29533914,0 +29533914,0.0042245021 +29534010,0.51780326 +29534010,0 +29534022,0 +29534022,0.20473748 +29534040,0.20473748 +29534040,0 +29570790,0 +29570790,0.15645745 +29570862,0.15645745 +29570862,0 +29570904,0 +29570904,0.35395293 +29570928,0.35395293 +29570928,0 +29572578,0 +29572578,0.15721183 +29572602,0.15721183 +29572602,0 +29572962,0 +29572962,0.22057936 +29572998,0.22057936 +29572998,0 +29573076,0 +29573076,0.0070911285 +29573118,0.0070911285 +29573118,0 +29573190,0 +29573190,0.11255281 +29573196,0.11255281 +29573196,0 +29577732,0 +29577732,0.20926373 +29577762,0.20926373 +29577762,0 +29582424,0 +29582424,0.32860591 +29582490,0.32860591 +29582490,0 +29585760,0 +29585760,0.017048884 +29585766,0.017048884 +29585766,0 +29586126,0 +29586126,0.089921545 +29586240,0.037266144 +29586240,0 +29586246,0 +29586246,0.037266144 +29586270,0.089921545 +29586270,0 +29587212,0 +29587212,0.3002414 +29587296,0.3002414 +29587296,0 +29587542,0 +29587542,0.055823778 +29587548,0.055823778 +29587548,0 +29588520,0 +29588520,0.038925769 +29588526,0.038925769 +29588526,0 +29598558,0 +29598558,0.21861798 +29598582,0.21861798 +29598582,0 +29601030,0 +29601030,0.3577248 +29601138,0.3577248 +29601138,0 +29608842,0 +29608842,0.064121907 +29608854,0.064121907 +29608854,0 +29611590,0 +29611590,0.16324683 +29611602,0.16324683 +29611602,0 +29612820,0 +29612820,0.010561255 +29612826,0.010561255 +29612826,0 +29612934,0 +29612934,0.21982498 +29612994,0.21982498 +29612994,0 +29613054,0 +29613054,0.11406156 +29613168,0.11406156 +29613168,0 +29614698,0 +29614698,0.027911889 +29614704,0.027911889 +29614704,0 +29614836,0 +29614836,0.27172601 +29614872,0.27172601 +29614872,0 +29617926,0 +29617926,0.13277007 +29618046,0 +29618046,0 +29618046,0.13277007 +29618046,0.1955341 +29618082,0.1955341 +29618082,0 +29620440,0 +29620440,0.20669885 +29620506,0.20669885 +29620506,0 +29620560,0 +29620560,0.15178033 +29620566,0.15178033 +29620566,0 +29624592,0 +29624592,0.20368135 +29624628,0.20368135 +29624628,0 +29625678,0 +29625678,0.16943271 +29625726,0.16943271 +29625726,0 +29635122,0 +29635122,0.26267351 +29635134,0.26267351 +29635134,0 +29656872,0 +29656872,0.035003018 +29656878,0.035003018 +29656878,0 +29656992,0 +29656992,0.24019312 +29657004,0.24019312 +29657004,0 +29683080,0 +29683080,0.14499095 +29683086,0.14499095 +29683086,0 +29685420,0 +29685420,0.063971032 +29685438,0.063971032 +29685438,0 +29685534,0 +29685534,0.12251056 +29685540,0.12251056 +29685540,0 +29688474,0 +29688474,0.26101388 +29688498,0.26101388 +29688498,0 +29693178,0 +29693178,0.00045262523 +29693184,0.00045262523 +29693184,0 +29693292,0 +29693292,0.074834037 +29693310,0.074834037 +29693310,0 +29693406,0 +29693406,0.1967411 +29693430,0.1967411 +29693430,0 +29693526,0 +29693526,0.21439348 +29693550,0.21439348 +29693550,0 +29693640,0 +29693640,0.066234158 +29693682,0.066234158 +29693682,0 +29694624,0 +29694624,0.18723597 +29694654,0.18723597 +29694654,0 +29697792,0 +29697792,0.20745323 +29697822,0.20745323 +29697822,0 +29698710,0 +29698710,0.13593844 +29698740,0.13593844 +29698740,0 +29701314,0 +29701314,0.020368135 +29701320,0.020368135 +29701320,0 +29701542,0 +29701542,0.17908871 +29701554,0.17908871 +29701554,0 +29708148,0 +29708148,0.039981895 +29708154,0.039981895 +29708154,0 +29714580,0 +29714580,0.1543452 +29714586,0.1543452 +29714586,0 +29714694,0 +29714694,0.014484007 +29714700,0.014484007 +29714700,0 +29725746,0 +29725746,0.17275196 +29725776,0.17275196 +29725776,0 +29753820,0 +29753820,0.36722993 +29753832,0.36722993 +29753832,0 +29753940,0 +29753940,0.018406759 +29753946,0.018406759 +29753946,0 +29754390,0 +29754390,0.087356669 +29754462,0.087356669 +29754462,0 +29754504,0 +29754504,0.12266144 +29754534,0.12266144 +29754534,0 +29757150,0 +29757150,0.25769463 +29757168,0.25769463 +29757168,0 +29757264,0 +29757264,0.21243211 +29757270,0.21243211 +29757270,0 +29758626,0 +29758626,0.19583585 +29758644,0.19583585 +29758644,0 +29758746,0 +29758746,0.078756789 +29758752,0.078756789 +29758752,0 +29762544,0 +29762544,0.32754979 +29762586,0.32754979 +29762586,0 +29767368,0 +29767368,0.051297526 +29767374,0.051297526 +29767374,0 +29773824,0 +29773824,0.066385033 +29773830,0.066385033 +29773830,0 +29774250,0 +29774250,0.11481593 +29774268,0.11481593 +29774268,0 +29774364,0 +29774364,0.31910078 +29774400,0.31910078 +29774400,0 +29775102,0 +29775102,0.26689801 +29775180,0.26689801 +29775180,0 +29775216,0 +29775216,0.020971635 +29775234,0.020971635 +29775234,0 +29778348,0 +29778348,0.0073928787 +29778450,0.0073928787 +29778450,0 +29790348,0 +29790348,0.257242 +29790930,0.257242 +29790930,0 +29792184,0 +29792184,0.32498491 +29793210,0.32498491 +29793210,0 +29793546,0 +29793546,0.87371756 +29793780,0.87371756 +29793780,0 +29797488,0 +29797488,0.095956548 +29797506,0.095956548 +29797506,0 +29798058,0 +29798058,0.20066385 +29798112,0.20066385 +29798112,0 +29798172,0 +29798172,0.0057332529 +29798184,0.0057332529 +29798184,0 +29798286,0 +29798286,0.14906457 +29798316,0.14906457 +29798316,0 +29798400,0 +29798400,0.14302957 +29798538,0.14302957 +29798538,0 +29800530,0 +29800530,0.2518105 +29800704,0.2518105 +29800704,0 +29828574,0 +29828574,0.240344 +29828652,0.240344 +29828652,0 +29836782,0 +29836782,0.16898008 +29836824,0.16898008 +29836824,0 +29836896,0 +29836896,0.13578757 +29836926,0.13578757 +29836926,0 +29837010,0 +29837010,0.16777308 +29837016,0.16777308 +29837016,0 +29840178,0 +29840178,0.24049487 +29840190,0.24049487 +29840190,0 +29840298,0 +29840298,0.16038021 +29840310,0.16038021 +29840310,0 +29843058,0 +29843058,0.09037417 +29843160,0.09037417 +29843160,0 +29843280,0 +29843280,0.32785154 +29843316,0.32785154 +29843316,0 +29845890,0 +29845890,0.11647556 +29845926,0.11647556 +29845926,0 +29847678,0 +29847678,0.32754979 +29847690,0.32754979 +29847690,0 +29847792,0 +29847792,0.26071213 +29847846,0.26071213 +29847846,0 +29851344,0 +29851344,0.23868437 +29851404,0.23868437 +29851404,0 +29855802,0 +29855802,0.26795413 +29855874,0.26795413 +29855874,0 +29856324,0 +29856324,0.1495172 +29856348,0.1495172 +29856348,0 +29869296,0 +29869296,0.11089318 +29869302,0.11089318 +29869302,0 +29869410,0 +29869410,0.23536512 +29869476,0.23536512 +29869476,0 +29869500,0 +29869500,0.032136391 +29869506,0.032136391 +29869506,0 +29869968,0 +29869968,0.26765238 +29869974,0.26765238 +29869974,0 +29870622,0 +29870622,0.025648763 +29870628,0.025648763 +29870628,0 +29872704,0 +29872704,0.2578455 +29872740,0.2578455 +29872740,0 +29874810,0 +29874810,0.0078455039 +29874846,0.0078455039 +29874846,0 +29875092,0 +29875092,0.43829209 +29875356,0.43829209 +29875356,0 +29875854,0 +29875854,0.019764635 +29875860,0.019764635 +29875860,0 +29879880,0 +29879880,0.21620398 +29879964,0.21620398 +29879964,0 +29881014,0 +29881014,0.17048884 +29881110,0.17048884 +29881110,0 +29881128,0 +29881128,0.01991551 +29881134,0.01991551 +29881134,0 +29881242,0 +29881242,0.17999396 +29881248,0.17999396 +29881248,0 +29881758,0 +29881758,0.20353048 +29881764,0.20353048 +29881764,0 +29881872,0 +29881872,0.20021123 +29881884,0.20021123 +29881884,0 +29882910,0 +29882910,0.067893784 +29882916,0.067893784 +29882916,0 +29883024,0 +29883024,0.012522631 +29883060,0.012522631 +29883060,0 +29883144,0 +29883144,0.02051901 +29883156,0.02051901 +29883156,0 +29883258,0 +29883258,0.010863005 +29883264,0.010863005 +29883264,0 +29883372,0 +29883372,0.085244418 +29883384,0.085244418 +29883384,0 +29887398,0 +29887398,0.1531382 +29887446,0.1531382 +29887446,0 +29913708,0 +29913708,0.15600483 +29913762,0.15600483 +29913762,0 +29918766,0 +29918766,0.27549789 +29920020,0.27549789 +29920020,0 +29923518,0 +29923518,0.22736874 +29923530,0.22736874 +29923530,0 +29925288,0 +29925288,0.20745323 +29925300,0.20745323 +29925300,0 +29925660,0 +29925660,0.027308389 +29925684,0.027308389 +29925684,0 +29928516,0 +29928516,0.057785154 +29928630,0.32951116 +29928630,0 +29928636,0 +29928636,0.057785154 +29928744,0.17290284 +29928744,0 +29928756,0 +29928756,0.17290284 +29928858,0.32951116 +29928858,0 +29928864,0 +29928864,0.20368135 +29928882,0.20368135 +29928882,0 +29928978,0 +29928978,0.25678938 +29929056,0.25678938 +29929056,0 +29934816,0 +29934816,0.38578757 +29934858,0.38578757 +29934858,0 +29938272,0 +29938272,0.029571515 +29938278,0.029571515 +29938278,0 +29938386,0 +29938386,0.08026554 +29938392,0.08026554 +29938392,0 +29941908,0 +29941908,0.13820157 +29942064,0.13820157 +29942064,0 +29944854,0 +29944854,0.1907061 +29944872,0.1907061 +29944872,0 +29951814,0 +29951814,0.19296922 +29951880,0.19296922 +29951880,0 +29953956,0 +29953956,0.18542547 +29954148,0.18542547 +29954148,0 +29955204,0 +29955204,0.0073928787 +29955228,0.0073928787 +29955228,0 +29955324,0 +29955324,0.0075437538 +29955438,0.0075437538 +29955438,0 +29960328,0 +29960328,0.20503923 +29960364,0.20503923 +29960364,0 +29960472,0 +29960472,0.63971032 +29960652,0.63971032 +29960652,0 +29963736,0 +29963736,0.43829209 +29963946,0.43829209 +29963946,0 +29965938,0 +29965938,0.32966204 +29965956,0.32966204 +29965956,0 +29967852,0 +29967852,0.27082076 +29967894,0.27082076 +29967894,0 +29968152,0 +29968152,0.27474351 +29968212,0.27474351 +29968212,0 +29968452,0 +29968452,0.39423657 +29968506,0.39423657 +29968506,0 +29968746,0 +29968746,0.41098371 +29968776,0.41098371 +29968776,0 +29969046,0 +29969046,0.27323476 +29969106,0.27323476 +29969106,0 +29970744,0 +29970744,0.024290887 +29970762,0.024290887 +29970762,0 +29986770,0 +29986770,0.43663247 +29986776,0.43663247 +29986776,0 +30007116,0 +30007116,0.15162945 +30007122,0.15162945 +30007122,0 +30007230,0 +30007230,0.26870851 +30007278,0.26870851 +30007278,0 +30007350,0 +30007350,0.18738684 +30007374,0.18738684 +30007374,0 +30010032,0 +30010032,0.15343995 +30010074,0.15343995 +30010074,0 +30011730,0 +30011730,0.13322269 +30011766,0.13322269 +30011766,0 +30011844,0 +30011844,0.12764031 +30011886,0.12764031 +30011886,0 +30012264,0 +30012264,0.092184671 +30012270,0.092184671 +30012270,0 +30014136,0 +30014136,0.090525045 +30014142,0.090525045 +30014142,0 +30015120,0 +30015120,0.28605914 +30015414,0.28605914 +30015414,0 +30016956,0 +30016956,0.35878093 +30017490,0.35878093 +30017490,0 +30018036,0 +30018036,0.18995172 +30018144,0.18995172 +30018144,0 +30018546,0 +30018546,0.18044659 +30018552,0.18044659 +30018552,0 +30018666,0 +30018666,0.18753772 +30018768,0.18753772 +30018768,0 +30018780,0 +30018780,0.29284852 +30018798,0.29284852 +30018798,0 +30018894,0 +30018894,0.26403138 +30018948,0.26403138 +30018948,0 +30019014,0 +30019014,0.096258298 +30019032,0.096258298 +30019032,0 +30019128,0 +30019128,0.03983102 +30019164,0.03983102 +30019164,0 +30019242,0 +30019242,0.014031382 +30019248,0.014031382 +30019248,0 +30019362,0 +30019362,0.3535003 +30019398,0.3535003 +30019398,0 +30019476,0 +30019476,0.20488835 +30019482,0.20488835 +30019482,0 +30021780,0 +30021780,0.10485818 +30021798,0.10485818 +30021798,0 +30021900,0 +30021900,0.1561557 +30021906,0.1561557 +30021906,0 +30022014,0 +30022014,0.3050694 +30022044,0.3050694 +30022044,0 +30023556,0 +30023556,0.034097767 +30023562,0.034097767 +30023562,0 +30027024,0 +30027024,0.78666264 +30027558,0.78666264 +30027558,0 +30034884,0 +30034884,0.10334943 +30034896,0.10334943 +30034896,0 +30035004,0 +30035004,0.33418829 +30035010,0.33418829 +30035010,0 +30040566,0 +30040566,0.24849125 +30040626,0.24849125 +30040626,0 +30044688,0 +30044688,0.042094146 +30044724,0.042094146 +30044724,0 +30047616,0 +30047616,0.33539529 +30047628,0.33539529 +30047628,0 +30047730,0 +30047730,0.13835244 +30047844,0.086149668 +30047844,0 +30047874,0 +30047874,0.086149668 +30047898,0.13835244 +30047898,0 +30047958,0 +30047958,0.28998189 +30047970,0.28998189 +30047970,0 +30049944,0 +30049944,0.042395896 +30049962,0.042395896 +30049962,0 +30050058,0 +30050058,0.27972239 +30050148,0.27972239 +30050148,0 +30050514,0 +30050514,0.26252263 +30050532,0.26252263 +30050532,0 +30050628,0 +30050628,0.24487025 +30050640,0.24487025 +30050640,0 +30053064,0 +30053064,0.25226313 +30053412,0.25226313 +30053412,0 +30054900,0 +30054900,0.2954134 +30055638,0.2954134 +30055638,0 +30059274,0 +30059274,0.081623416 +30059334,0.081623416 +30059334,0 +30059388,0 +30059388,0.19779722 +30059394,0.19779722 +30059394,0 +30061410,0 +30061410,0.098823174 +30061524,0.098823174 +30061524,0 +30061530,0 +30061530,0.25467713 +30061536,0.25467713 +30061536,0 +30061644,0 +30061644,0.0067893784 +30061662,0.0067893784 +30061662,0 +30061758,0 +30061758,0.24351237 +30061782,0.24351237 +30061782,0 +30066294,0 +30066294,0.1434822 +30066354,0.1434822 +30066354,0 +30072864,0 +30072864,0.28394689 +30072960,0.28394689 +30072960,0 +30072978,0 +30072978,0.025648763 +30072984,0.025648763 +30072984,0 +30073098,0 +30073098,0.26569101 +30073140,0.26569101 +30073140,0 +30075648,0 +30075648,0.41219071 +30076380,0.41219071 +30076380,0 +30095844,0 +30095844,0.3032589 +30096132,0.3032589 +30096132,0 +30097674,0 +30097674,0.34293905 +30098166,0.34293905 +30098166,0 +30101730,0 +30101730,0.35742305 +30101772,0.35742305 +30101772,0 +30103956,0 +30103956,0.26282438 +30103968,0.26282438 +30103968,0 +30104076,0 +30104076,0.1440857 +30104112,0.1440857 +30104112,0 +30104976,0 +30104976,0.26780326 +30105036,0.26780326 +30105036,0 +30105558,0 +30105558,0.47812311 +30105564,0.26071213 +30105564,0 +30105630,0 +30105630,0.47812311 +30105654,0.26071213 +30105654,0 +30105858,0 +30105858,0.51674713 +30105894,0.51674713 +30105894,0 +30106152,0 +30106152,0 +30106152,0.42229934 +30106152,0.18904647 +30106164,0 +30106164,0.42229934 +30106218,0.18904647 +30106218,0 +30106740,0 +30106740,0.18255884 +30106836,0.18255884 +30106836,0 +30107322,0 +30107322,0.2033796 +30107400,0.2033796 +30107400,0 +30107910,0 +30107910,0.24290887 +30107982,0.24290887 +30107982,0 +30108486,0 +30108486,0.13895594 +30108522,0.13895594 +30108522,0 +30108768,0 +30108768,0.14665057 +30108822,0.14665057 +30108822,0 +30108882,0 +30108882,0.077248039 +30108888,0.077248039 +30108888,0 +30111366,0 +30111366,0.01071213 +30111372,0.01071213 +30111372,0 +30114834,0 +30114834,0.013427882 +30114954,0.27640314 +30114954,0 +30114972,0 +30114972,0.27640314 +30115032,0.013427882 +30115032,0 +30115068,0 +30115068,0.007996379 +30115074,0.007996379 +30115074,0 +30115182,0 +30115182,0.14182257 +30115224,0.14182257 +30115224,0 +30115302,0 +30115302,0.23129149 +30115380,0.23129149 +30115380,0 +30115416,0 +30115416,0.18059747 +30115530,0.091732046 +30115530,0 +30115536,0 +30115536,0.091732046 +30115554,0.18059747 +30115554,0 +30115650,0 +30115650,0.17229934 +30115698,0.17229934 +30115698,0 +30115764,0 +30115764,0.030778515 +30115806,0.030778515 +30115806,0 +30118980,0 +30118980,0.050090525 +30119016,0.050090525 +30119016,0 +30120582,0 +30120582,0.23566687 +30120612,0.23566687 +30120612,0 +30126198,0 +30126198,0.31427278 +30126234,0.31427278 +30126234,0 +30128976,0 +30128976,0.25497888 +30129012,0.25497888 +30129012,0 +30129756,0 +30129756,0.07045866 +30129768,0.07045866 +30129768,0 +30130344,0 +30130344,0.077851539 +30130350,0.077851539 +30130350,0 +30131496,0 +30131496,0.13714544 +30131514,0.088563669 +30131514,0 +30131526,0 +30131526,0.13714544 +30131610,0.057030779 +30131610,0 +30131616,0 +30131616,0.057030779 +30131634,0.088563669 +30131634,0 +30131724,0 +30131724,0.0096560048 +30131730,0.0096560048 +30131730,0 +30131844,0 +30131844,0.41038021 +30131850,0.41038021 +30131850,0 +30131958,0 +30131958,0.2469825 +30131964,0.2469825 +30131964,0 +30132072,0 +30132072,0.24622812 +30132168,0.24622812 +30132168,0 +30132684,0 +30132684,0.12703681 +30132732,0.12703681 +30132732,0 +30133914,0 +30133914,0.18904647 +30133962,0.18904647 +30133962,0 +30134028,0 +30134028,0.0073928787 +30134058,0.0073928787 +30134058,0 +30138114,0 +30138114,0.20534098 +30138120,0.20534098 +30138120,0 +30138732,0 +30138732,0.18557634 +30138738,0.18557634 +30138738,0 +30138846,0 +30138846,0.22540736 +30138990,0.22540736 +30138990,0 +30142512,0 +30142512,0.1452927 +30142626,0.15570308 +30142626,0 +30142650,0 +30142650,0.15570308 +30142698,0.1452927 +30142698,0 +30143508,0 +30143508,0.025497888 +30143514,0.025497888 +30143514,0 +30148110,0 +30148110,0.14619795 +30148122,0.14619795 +30148122,0 +30153984,0 +30153984,0.34414605 +30154020,0.34414605 +30154020,0 +30175890,0 +30175890,0.26297526 +30175902,0.26297526 +30175902,0 +30181662,0 +30181662,0.30703078 +30181722,0.30703078 +30181722,0 +30186324,0 +30186324,0.19161135 +30186474,0.19161135 +30186474,0 +30189696,0 +30189696,0.29948702 +30189798,0.29948702 +30189798,0 +30194154,0 +30194154,0.30642728 +30194166,0.30642728 +30194166,0 +30195210,0 +30195210,0.24381412 +30195234,0.24381412 +30195234,0 +30198978,0 +30198978,0.31940253 +30199092,0.17516596 +30199092,0 +30199122,0 +30199122,0.31940253 +30199146,0.17516596 +30199146,0 +30199212,0 +30199212,0.19462885 +30199284,0.19462885 +30199284,0 +30201834,0 +30201834,0.28017502 +30201846,0.28017502 +30201846,0 +30223194,0 +30223194,0.14740495 +30223206,0.14740495 +30223206,0 +30223926,0 +30223926,0.22435124 +30223962,0.22435124 +30223962,0 +30224358,0 +30224358,0.071665661 +30224412,0.071665661 +30224412,0 +30226584,0 +30226584,0.055522028 +30226650,0.055522028 +30226650,0 +30227568,0 +30227568,0.10923355 +30227574,0.10923355 +30227574,0 +30236040,0 +30236040,0.24969825 +30236046,0.24969825 +30236046,0 +30238878,0 +30238878,0.10455643 +30238884,0.10455643 +30238884,0 +30239532,0 +30239532,0.01961376 +30239538,0.01961376 +30239538,0 +30253656,0 +30253656,0.25075438 +30253698,0.25075438 +30253698,0 +30253776,0 +30253776,0.018708509 +30253782,0.018708509 +30253782,0 +30253890,0 +30253890,0.020669885 +30253908,0.020669885 +30253908,0 +30267834,0 +30267834,0.22797224 +30267894,0.22797224 +30267894,0 +30271890,0 +30271890,0.33328304 +30271980,0.33328304 +30271980,0 +30272004,0 +30272004,0.13940857 +30272070,0.13940857 +30272070,0 +30272118,0 +30272118,0.084037417 +30272148,0.084037417 +30272148,0 +30274662,0 +30274662,0.3553108 +30274680,0.3553108 +30274680,0 +30274782,0 +30274782,0.12070006 +30274872,0.12070006 +30274872,0 +30288228,0 +30288228,0.11436331 +30288234,0.11436331 +30288234,0 +30288342,0 +30288342,0.083735667 +30288366,0.083735667 +30288366,0 +30291258,0 +30291258,0.1979481 +30291324,0.1979481 +30291324,0 +30291846,0 +30291846,0.17637296 +30291912,0.17637296 +30291912,0 +30292776,0 +30292776,0.088714544 +30292800,0.088714544 +30292800,0 +30298338,0 +30298338,0.26222088 +30298404,0.26222088 +30298404,0 +30298554,0 +30298554,0.13292094 +30298566,0.13292094 +30298566,0 +30300390,0 +30300390,0.0081472541 +30300402,0.0081472541 +30300402,0 +30300510,0 +30300510,0.28983102 +30300606,0.28983102 +30300606,0 +30304746,0 +30304746,0.17833434 +30304812,0.17833434 +30304812,0 +30309348,0 +30309348,0.26976463 +30309378,0.26976463 +30309378,0 +30325998,0 +30325998,0.26735063 +30326070,0.26735063 +30326070,0 +30326586,0 +30326586,0.18814122 +30326694,0.18814122 +30326694,0 +30327174,0 +30327174,0.27474351 +30327246,0.27474351 +30327246,0 +30327762,0 +30327762,0.1913096 +30327882,0.1913096 +30327882,0 +30354054,0 +30354054,0.20866023 +30354114,0.20866023 +30354114,0 +30354168,0 +30354168,0.066385033 +30354186,0.066385033 +30354186,0 +30354288,0 +30354288,0.31200966 +30354300,0.31200966 +30354300,0 +30354402,0 +30354402,0.17742909 +30354420,0.17742909 +30354420,0 +30354516,0 +30354516,0.046620398 +30354522,0.046620398 +30354522,0 +30354912,0 +30354912,0.16988533 +30354954,0.16988533 +30354954,0 +30356292,0 +30356292,0.013578757 +30356406,0.013578757 +30356406,0 +30370242,0 +30370242,0.056879903 +30370308,0.056879903 +30370308,0 +30372654,0 +30372654,0.35018105 +30372726,0.35018105 +30372726,0 +30375462,0 +30375462,0.012070006 +30375468,0.012070006 +30375468,0 +30377058,0 +30377058,0.24426675 +30377064,0.24426675 +30377064,0 +30377952,0 +30377952,0.1041038 +30377970,0.1041038 +30377970,0 +30379920,0 +30379920,0.32076041 +30379956,0.32076041 +30379956,0 +30380034,0 +30380034,0.16882921 +30380076,0.16882921 +30380076,0 +30380148,0 +30380148,0.0058841279 +30380154,0.0058841279 +30380154,0 +30380268,0 +30380268,0.15464695 +30380304,0.15464695 +30380304,0 +30382074,0 +30382074,0.21122511 +30382116,0.21122511 +30382116,0 +30382188,0 +30382188,0.13156307 +30382206,0.13156307 +30382206,0 +30382302,0 +30382302,0.01041038 +30382350,0.01041038 +30382350,0 +30382836,0 +30382836,0.15178033 +30382860,0.15178033 +30382860,0 +30390540,0 +30390540,0.084339167 +30390570,0.084339167 +30390570,0 +30390606,0 +30390606,0.061255281 +30390636,0.061255281 +30390636,0 +30390654,0 +30390654,0.11496681 +30390678,0.11496681 +30390678,0 +30390774,0 +30390774,0.13065782 +30390804,0.13065782 +30390804,0 +30390888,0 +30390888,0.28862402 +30390936,0.28862402 +30390936,0 +30397416,0 +30397416,0.1428787 +30397494,0.1428787 +30397494,0 +30423774,0 +30423774,0.06985516 +30423780,0.06985516 +30423780,0 +30436506,0 +30436506,0.34897405 +30437244,0.34897405 +30437244,0 +30438654,0 +30438654,0.037567894 +30438660,0.037567894 +30438660,0 +30441810,0 +30441810,0.11587206 +30441822,0.11587206 +30441822,0 +30442038,0 +30442038,0.0027157514 +30442044,0.0027157514 +30442044,0 +30442194,0 +30442194,0.28047677 +30442746,0.28047677 +30442746,0 +30446022,0 +30446022,0.19161135 +30446028,0.19161135 +30446028,0 +30446196,0 +30446196,0.10380205 +30446256,0.10380205 +30446256,0 +30446286,0 +30446286,0.33041642 +30446310,0.24140012 +30446310,0 +30446322,0 +30446322,0.33041642 +30446334,0.24140012 +30446334,0 +30446430,0 +30446430,0.27142426 +30446472,0.27142426 +30446472,0 +30446544,0 +30446544,0.246379 +30446568,0.246379 +30446568,0 +30446658,0 +30446658,0.025045263 +30446664,0.025045263 +30446664,0 +30446778,0 +30446778,0.15223295 +30446784,0.15223295 +30446784,0 +30446892,0 +30446892,0.12522631 +30446904,0.12522631 +30446904,0 +30447006,0 +30447006,0.096560048 +30447012,0.096560048 +30447012,0 +30447126,0 +30447126,0.27926976 +30447144,0.27926976 +30447144,0 +30447240,0 +30447240,0.18240797 +30447246,0.18240797 +30447246,0 +30457728,0 +30457728,0.24079662 +30457734,0.24079662 +30457734,0 +30458928,0 +30458928,0.0030175015 +30458934,0.0030175015 +30458934,0 +30459042,0 +30459042,0.30884128 +30459096,0.30884128 +30459096,0 +30459636,0 +30459636,0.11315631 +30459666,0.11315631 +30459666,0 +30459750,0 +30459750,0.057634279 +30459792,0.057634279 +30459792,0 +30459870,0 +30459870,0.041943271 +30459882,0.041943271 +30459882,0 +30467250,0 +30467250,0.16385033 +30467262,0.16385033 +30467262,0 +30467364,0 +30467364,0.087658419 +30467376,0.087658419 +30467376,0 +30468966,0 +30468966,0.076946288 +30468972,0.076946288 +30468972,0 +30470802,0 +30470802,0.27926976 +30470874,0.27926976 +30470874,0 +30471096,0 +30471096,0.40585395 +30471144,0.40585395 +30471144,0 +30471396,0 +30471396,0.32060954 +30471456,0.32060954 +30471456,0 +30475656,0 +30475656,0.084339167 +30475662,0.084339167 +30475662,0 +30475770,0 +30475770,0.070911285 +30475776,0.070911285 +30475776,0 +30479214,0 +30479214,0.27926976 +30479322,0.27926976 +30479322,0 +30481122,0 +30481122,0.007996379 +30481158,0.007996379 +30481158,0 +30481284,0 +30481284,0.27157514 +30481290,0.27157514 +30481290,0 +30481518,0 +30481518,0.257242 +30482040,0.257242 +30482040,0 +30484776,0 +30484776,0.27866626 +30484902,0.27866626 +30484902,0 +30487668,0 +30487668,0.0075437538 +30487674,0.0075437538 +30487674,0 +30520578,0 +30520578,0.18995172 +30520590,0.18995172 +30520590,0 +30529176,0 +30529176,0.0075437538 +30529248,0.0075437538 +30529248,0 +30529290,0 +30529290,0.1543452 +30529350,0.1543452 +30529350,0 +30530370,0 +30530370,0.25392275 +30530436,0.25392275 +30530436,0 +30530958,0 +30530958,0.17395896 +30531030,0.17395896 +30531030,0 +30531546,0 +30531546,0.22978274 +30531642,0.22978274 +30531642,0 +30532134,0 +30532134,0.19945685 +30532206,0.19945685 +30532206,0 +30532722,0 +30532722,0.21695836 +30532806,0.21695836 +30532806,0 +30533304,0 +30533304,0.20488835 +30533394,0.013578757 +30533394,0 +30533400,0 +30533400,0 +30533400,0.20488835 +30533400,0.013578757 +30533892,0 +30533892,0.18814122 +30533982,0.18814122 +30533982,0 +30541626,0 +30541626,0.14182257 +30541644,0.14182257 +30541644,0 +30541740,0 +30541740,0.19176222 +30541806,0.19176222 +30541806,0 +30543936,0 +30543936,0.022178636 +30543942,0.022178636 +30543942,0 +30544056,0 +30544056,0.13231744 +30544110,0.13231744 +30544110,0 +30544170,0 +30544170,0.11692818 +30544242,0.11692818 +30544242,0 +30544284,0 +30544284,0.25497888 +30544296,0.25497888 +30544296,0 +30544404,0 +30544404,0.19342185 +30544464,0.19342185 +30544464,0 +30544518,0 +30544518,0.32302354 +30544524,0.32302354 +30544524,0 +30545628,0 +30545628,0.20051298 +30545664,0.20051298 +30545664,0 +30551448,0 +30551448,0.13126132 +30551454,0.13126132 +30551454,0 +30551538,0 +30551538,0.22148461 +30551550,0.22148461 +30551550,0 +30551568,0 +30551568,0.21922148 +30551658,0.044508147 +30551658,0 +30551676,0 +30551676,0.21922148 +30551688,0.044508147 +30551688,0 +30560454,0 +30560454,0.1416717 +30560598,0.1416717 +30560598,0 +30560904,0 +30560904,0.033343392 +30560946,0.033343392 +30560946,0 +30562650,0 +30562650,0.13231744 +30562698,0.13231744 +30562698,0 +30562764,0 +30562764,0.25558238 +30562770,0.25558238 +30562770,0 +30562884,0 +30562884,0.007996379 +30562890,0.007996379 +30562890,0 +30562998,0 +30562998,0.18783947 +30563022,0.18783947 +30563022,0 +30563112,0 +30563112,0.19659022 +30563130,0.19659022 +30563130,0 +30563232,0 +30563232,0.23295112 +30563250,0.23295112 +30563250,0 +30563346,0 +30563346,0.12703681 +30563406,0.12703681 +30563406,0 +30563460,0 +30563460,0.21650573 +30563466,0.21650573 +30563466,0 +30563574,0 +30563574,0.26554013 +30563646,0.26554013 +30563646,0 +30563694,0 +30563694,0.17350634 +30563700,0.17350634 +30563700,0 +30563808,0 +30563808,0.014333132 +30563814,0.014333132 +30563814,0 +30563922,0 +30563922,0.036210018 +30563934,0.036210018 +30563934,0 +30564798,0 +30564798,0.20368135 +30564894,0.20368135 +30564894,0 +30564912,0 +30564912,0.20488835 +30564930,0.20488835 +30564930,0 +30565032,0 +30565032,0.22887749 +30565056,0.22887749 +30565056,0 +30565146,0 +30565146,0.17245021 +30565188,0.17245021 +30565188,0 +30565260,0 +30565260,0.29450815 +30565278,0.29450815 +30565278,0 +30565374,0 +30565374,0.27745926 +30565386,0.27745926 +30565386,0 +30568206,0 +30568206,0.070911285 +30568242,0.070911285 +30568242,0 +30568326,0 +30568326,0.15087508 +30568368,0.15087508 +30568368,0 +30569118,0 +30569118,0.10184068 +30569124,0.10184068 +30569124,0 +30572262,0 +30572262,0.57830416 +30572586,0.57830416 +30572586,0 +30573186,0 +30573186,0.10334943 +30573222,0.10334943 +30573222,0 +30579222,0 +30579222,0.18361497 +30579276,0.18361497 +30579276,0 +30579336,0 +30579336,0.10787568 +30579366,0.10787568 +30579366,0 +30579456,0 +30579456,0.26252263 +30579462,0.26252263 +30579462,0 +30579570,0 +30579570,0.11526856 +30579684,0 +30579684,0 +30579684,0.11526856 +30579684,0.14136995 +30579762,0.21484611 +30579762,0 +30579804,0 +30579804,0.13729632 +30579810,0 +30579810,0 +30579810,0.14136995 +30579810,0.21484611 +30579822,0.23974049 +30579822,0 +30579840,0 +30579840,0.13729632 +30579858,0.23974049 +30579858,0 +30579876,0 +30579876,0.22691611 +30579978,0.22691611 +30579978,0 +30580890,0 +30580890,0.30672903 +30580950,0.30672903 +30580950,0 +30585096,0 +30585096,0.0030175015 +30585102,0.0030175015 +30585102,0 +30585210,0 +30585210,0.03092939 +30585264,0.03092939 +30585264,0 +30603858,0 +30603858,0.014333132 +30603864,0.014333132 +30603864,0 +30603972,0 +30603972,0.015238383 +30604098,0.015238383 +30604098,0 +30608028,0 +30608028,0.3462583 +30608034,0.3462583 +30608034,0 +30613122,0 +30613122,0.11873868 +30613164,0.11873868 +30613164,0 +30614508,0 +30614508,0.13955944 +30614514,0.13955944 +30614514,0 +30619206,0 +30619206,0.37628244 +30619278,0.37628244 +30619278,0 +30619500,0 +30619500,0.39363307 +30619590,0.39363307 +30619590,0 +30619800,0 +30619800,0.26101388 +30619824,0.26101388 +30619824,0 +30620100,0 +30620100,0.27202776 +30620118,0.27202776 +30620118,0 +30620400,0 +30620400,0.22374774 +30620472,0.22374774 +30620472,0 +30620694,0 +30620694,0.38126132 +30620760,0.38126132 +30620760,0 +30623502,0 +30623502,0.25528063 +30623574,0.25528063 +30623574,0 +30623622,0 +30623622,0.085546168 +30623670,0.085546168 +30623670,0 +30626472,0 +30626472,0.254828 +30626484,0.254828 +30626484,0 +30636948,0 +30636948,0.19930597 +30636960,0.19930597 +30636960,0 +30637062,0 +30637062,0.15826795 +30637092,0.15826795 +30637092,0 +30637182,0 +30637182,0.13442969 +30637200,0.13442969 +30637200,0 +30637296,0 +30637296,0.1507242 +30637326,0.1507242 +30637326,0 +30637410,0 +30637410,0.092486421 +30637452,0.092486421 +30637452,0 +30641688,0 +30641688,0.095956548 +30641730,0.095956548 +30641730,0 +30641802,0 +30641802,0.01041038 +30641916,0.01041038 +30641916,0 +30647376,0 +30647376,0.21590223 +30647406,0.21590223 +30647406,0 +30647496,0 +30647496,0.11994568 +30647508,0.11994568 +30647508,0 +30649230,0 +30649230,0.19462885 +30649284,0.19462885 +30649284,0 +30649554,0 +30649554,0.21967411 +30649680,0.21967411 +30649680,0 +30653172,0 +30653172,0.24683162 +30653190,0.24683162 +30653190,0 +30657660,0 +30657660,0.091581171 +30657690,0.091581171 +30657690,0 +30657774,0 +30657774,0.11089318 +30657822,0.11089318 +30657822,0 +30657894,0 +30657894,0.24743512 +30657906,0.24743512 +30657906,0 +30671370,0 +30671370,0.0075437538 +30671394,0.0075437538 +30671394,0 +30671586,0 +30671586,0.089619795 +30671592,0.089619795 +30671592,0 +31020504,0 +31020504,0.32106216 +31021098,0.32106216 +31021098,0 +31042482,0 +31042482,0.26312613 +31042506,0.26312613 +31042506,0 +31049088,0 +31049088,0.24562462 +31049118,0.24562462 +31049118,0 +31049850,0 +31049850,0.095503923 +31049880,0.095503923 +31049880,0 +31066830,0 +31066830,0.20187085 +31066872,0.20187085 +31066872,0 +31066944,0 +31066944,0.12688594 +31066956,0.12688594 +31066956,0 +31070166,0 +31070166,0.27368739 +31070190,0.27368739 +31070190,0 +31071708,0 +31071708,0.1519312 +31071816,0.1519312 +31071816,0 +31080906,0 +31080906,0.15691008 +31080996,0.15691008 +31080996,0 +31098324,0 +31098324,0.33645142 +31098384,0.33645142 +31098384,0 +31098444,0 +31098444,0.240344 +31098456,0.240344 +31098456,0 +31098558,0 +31098558,0.0072420036 +31098606,0.0072420036 +31098606,0 +31105422,0 +31105422,0.11496681 +31105428,0.11496681 +31105428,0 +31129830,0 +31129830,0.27474351 +31129866,0.27474351 +31129866,0 +31130484,0 +31130484,0.24260712 +31130796,0.24260712 +31130796,0 +31131360,0 +31131360,0.011013881 +31131366,0.011013881 +31131366,0 +31131984,0 +31131984,0.22465299 +31132038,0.22465299 +31132038,0 +31135380,0 +31135380,0.015841883 +31135404,0.015841883 +31135404,0 +31138836,0 +31138836,0.33509354 +31138854,0.33509354 +31138854,0 +31145118,0 +31145118,0.27097164 +31145130,0.27097164 +31145130,0 +31164546,0 +31164546,0.064725407 +31164552,0.064725407 +31164552,0 +31165674,0 +31165674,0.13050694 +31165704,0.13050694 +31165704,0 +31168320,0 +31168320,0.1483102 +31168524,0.1483102 +31168524,0 +31169220,0 +31169220,0.14182257 +31169286,0.14182257 +31169286,0 +31169358,0 +31169358,0.012371756 +31169364,0.012371756 +31169364,0 +31169472,0 +31169472,0.11707906 +31169490,0.1973446 +31169490,0 +31169502,0 +31169502,0 +31169502,0.1973446 +31169502,0.11707906 +31169586,0 +31169586,0.23566687 +31169592,0.23566687 +31169592,0 +31169604,0 +31169604,0.074984912 +31169652,0.074984912 +31169652,0 +31169718,0 +31169718,0.096409173 +31169724,0.096409173 +31169724,0 +31170978,0 +31170978,0.11194931 +31170990,0.11194931 +31170990,0 +31171098,0 +31171098,0.081321666 +31171104,0.081321666 +31171104,0 +31171698,0 +31171698,0.20624623 +31171806,0.20624623 +31171806,0 +31172280,0 +31172280,0.22827399 +31172364,0.22827399 +31172364,0 +31172868,0 +31172868,0.28470127 +31172934,0.28470127 +31172934,0 +31173456,0 +31173456,0.21348823 +31173606,0.21348823 +31173606,0 +31179348,0 +31179348,0.16852746 +31179402,0.16852746 +31179402,0 +31184448,0 +31184448,0.10727218 +31184460,0.10727218 +31184460,0 +31184532,0 +31184532,0.20202173 +31184574,0.20202173 +31184574,0 +31212012,0 +31212012,0.1010863 +31212072,0.1010863 +31212072,0 +31212132,0 +31212132,0.17124321 +31212156,0.17124321 +31212156,0 +31212246,0 +31212246,0.0070911285 +31212282,0.0070911285 +31212282,0 +31212360,0 +31212360,0.12235969 +31212480,0.12235969 +31212480,0 +31228866,0 +31228866,0.16596258 +31228896,0.16596258 +31228896,0 +31229964,0 +31229964,0.19538322 +31229982,0.19538322 +31229982,0 +31231212,0 +31231212,0.06095353 +31231278,0.06095353 +31231278,0 +31235994,0 +31235994,0.057936029 +31236006,0.057936029 +31236006,0 +31239336,0 +31239336,0.24803862 +31239942,0.24803862 +31239942,0 +31240266,0 +31240266,0.34248642 +31240338,0.34248642 +31240338,0 +31240380,0 +31240380,0.14091732 +31240434,0.14091732 +31240434,0 +31243632,0 +31243632,0.18799034 +31243656,0.18799034 +31243656,0 +31257954,0 +31257954,0.13608932 +31257960,0.13608932 +31257960,0 +31258068,0 +31258068,0.2015691 +31258074,0.2015691 +31258074,0 +31258188,0 +31258188,0.25588413 +31258206,0.25588413 +31258206,0 +31258302,0 +31258302,0.17561859 +31258320,0.17561859 +31258320,0 +31259358,0 +31259358,0.34354255 +31259382,0.34354255 +31259382,0 +31259478,0 +31259478,0.096560048 +31259484,0.096560048 +31259484,0 +31260246,0 +31260246,0.23657212 +31260366,0 +31260366,0 +31260366,0.018708509 +31260366,0.23657212 +31260372,0.018708509 +31260372,0 +31260480,0 +31260480,0.073325287 +31260492,0.073325287 +31260492,0 +31260594,0 +31260594,0.26433313 +31260618,0.26433313 +31260618,0 +31260714,0 +31260714,0.21001811 +31260774,0.21001811 +31260774,0 +31261326,0 +31261326,0.29556427 +31261338,0.29556427 +31261338,0 +31267776,0 +31267776,0.093240797 +31267788,0.093240797 +31267788,0 +31269120,0 +31269120,0.026403138 +31269180,0.026403138 +31269180,0 +31270194,0 +31270194,0.1907061 +31270206,0.1907061 +31270206,0 +31270308,0 +31270308,0.24049487 +31270320,0.24049487 +31270320,0 +31270428,0 +31270428,0.2948099 +31270440,0.2948099 +31270440,0 +31270542,0 +31270542,0.26101388 +31270560,0.26101388 +31270560,0 +31271334,0 +31271334,0.17848521 +31271364,0.17848521 +31271364,0 +31271454,0 +31271454,0.0069402535 +31271466,0.0069402535 +31271466,0 +31271568,0 +31271568,0.051146651 +31271574,0.051146651 +31271574,0 +31291728,0 +31291728,0.025497888 +31291740,0.025497888 +31291740,0 +31299600,0 +31299600,0.41596258 +31299978,0.41596258 +31299978,0 +31301652,0 +31301652,0.26327701 +31301730,0.26327701 +31301730,0 +31301766,0 +31301766,0.13578757 +31301796,0.13578757 +31301796,0 +31301886,0 +31301886,0.17154496 +31301910,0.17154496 +31301910,0 +31302000,0 +31302000,0.04933615 +31302036,0.04933615 +31302036,0 +31302114,0 +31302114,0.22329511 +31302234,0.050694025 +31302234,0 +31302240,0 +31302240,0.050694025 +31302252,0.22329511 +31302252,0 +31302348,0 +31302348,0.12748944 +31302456,0.12748944 +31302456,0 +31302462,0 +31302462,0.15087508 +31302510,0.15087508 +31302510,0 +31302582,0 +31302582,0.13639107 +31302588,0.13639107 +31302588,0 +31302696,0 +31302696,0.0090525045 +31302702,0.0090525045 +31302702,0 +31302810,0 +31302810,0.009957755 +31302816,0.009957755 +31302816,0 +31302930,0 +31302930,0.078756789 +31302948,0.078756789 +31302948,0 +31303098,0 +31303098,0.12929994 +31303164,0.12929994 +31303164,0 +31303212,0 +31303212,0.18572722 +31303296,0.18572722 +31303296,0 +31303332,0 +31303332,0.016294508 +31303338,0.016294508 +31303338,0 +31303344,0 +31303344,0.14257695 +31303386,0.14257695 +31303386,0 +31303446,0 +31303446,0.14906457 +31303464,0.20549185 +31303464,0 +31303518,0 +31303518,0.20549185 +31303524,0.14906457 +31303524,0 +31303578,0 +31303578,0.18799034 +31303716,0.18799034 +31303716,0 +31304274,0 +31304274,0.33011467 +31304682,0.33011467 +31304682,0 +31308618,0 +31308618,0.017954134 +31308624,0.017954134 +31308624,0 +31308732,0 +31308732,0.13352444 +31308774,0.13352444 +31308774,0 +31308852,0 +31308852,0.15962583 +31308864,0.15962583 +31308864,0 +31308966,0 +31308966,0.10138805 +31309002,0.10138805 +31309002,0 +31309224,0 +31309224,0.03062764 +31309242,0.03062764 +31309242,0 +31311702,0 +31311702,0.078304164 +31311780,0.078304164 +31311780,0 +31318446,0 +31318446,0.16460471 +31318458,0.16460471 +31318458,0 +31319622,0 +31319622,0.13216657 +31319628,0.13216657 +31319628,0 +31319742,0 +31319742,0.023838262 +31319772,0.023838262 +31319772,0 +31335252,0 +31335252,0.065027158 +31335258,0.065027158 +31335258,0 +31338126,0 +31338126,0.043602897 +31338192,0.043602897 +31338192,0 +31338240,0 +31338240,0.13503319 +31338318,0.13503319 +31338318,0 +31339182,0 +31339182,0.082830416 +31339296,0.12417019 +31339296,0 +31339326,0 +31339326,0.12417019 +31339332,0.082830416 +31339332,0 +31339410,0 +31339410,0.17969221 +31339416,0.17969221 +31339416,0 +31339530,0 +31339530,0.072721786 +31339596,0.072721786 +31339596,0 +31339644,0 +31339644,0.071363911 +31339656,0.071363911 +31339656,0 +31339758,0 +31339758,0.17063971 +31339800,0.17063971 +31339800,0 +31339878,0 +31339878,0.34882317 +31339950,0.34882317 +31339950,0 +31339992,0 +31339992,0.0081472541 +31339998,0.0081472541 +31339998,0 +31340106,0 +31340106,0.041792396 +31340112,0.041792396 +31340112,0 +31340208,0 +31340208,0.088412794 +31340214,0.088412794 +31340214,0 +31340226,0 +31340226,0.13412794 +31340298,0.13412794 +31340298,0 +31345566,0 +31345566,0.25528063 +31345668,0.25528063 +31345668,0 +31347222,0 +31347222,0.09957755 +31347228,0.09957755 +31347228,0 +31347336,0 +31347336,0.0043753772 +31347342,0.0043753772 +31347342,0 +31347450,0 +31347450,0.089318045 +31347552,0.089318045 +31347552,0 +31347966,0 +31347966,0.1446892 +31348032,0.1446892 +31348032,0 +31354506,0 +31354506,0.041792396 +31354512,0.041792396 +31354512,0 +31355772,0 +31355772,0.17154496 +31355790,0.17154496 +31355790,0 +31355886,0 +31355886,0.32347616 +31355946,0.32347616 +31355946,0 +31356006,0 +31356006,0.18482197 +31356060,0.18482197 +31356060,0 +31356120,0 +31356120,0.23536512 +31356198,0.23536512 +31356198,0 +31356234,0 +31356234,0.069402535 +31356258,0.069402535 +31356258,0 +31389810,0 +31389810,0.17426071 +31389822,0.17426071 +31389822,0 +31389930,0 +31389930,0.14257695 +31389942,0.14257695 +31389942,0 +31390044,0 +31390044,0.087507544 +31390050,0.087507544 +31390050,0 +31390158,0 +31390158,0.30129753 +31390170,0.30129753 +31390170,0 +31390278,0 +31390278,0.051146651 +31390302,0.051146651 +31390302,0 +31390392,0 +31390392,0.1446892 +31390398,0.1446892 +31390398,0 +31392552,0 +31392552,0.32060954 +31392630,0.32060954 +31392630,0 +31392666,0 +31392666,0.19146047 +31392780,0.18995172 +31392780,0 +31392792,0 +31392792,0.19146047 +31392804,0.18995172 +31392804,0 +31393746,0 +31393746,0.034248642 +31393752,0.034248642 +31393752,0 +31393860,0 +31393860,0.11375981 +31393866,0.11375981 +31393866,0 +31393974,0 +31393974,0.15585395 +31394052,0.15585395 +31394052,0 +31394094,0 +31394094,0.14197345 +31394172,0.14197345 +31394172,0 +31396770,0 +31396770,0.18225709 +31396782,0.18225709 +31396782,0 +31400280,0 +31400280,0.061557031 +31400286,0.061557031 +31400286,0 +31400394,0 +31400394,0.15721183 +31400400,0.15721183 +31400400,0 +31400508,0 +31400508,0.24622812 +31400604,0.24622812 +31400604,0 +31400628,0 +31400628,0.25226313 +31400664,0.25226313 +31400664,0 +31407744,0 +31407744,0.085697043 +31407774,0.085697043 +31407774,0 +31410522,0 +31410522,0.23943874 +31410546,0.23943874 +31410546,0 +31410636,0 +31410636,0.13578757 +31410720,0.13578757 +31410720,0 +31412826,0 +31412826,0.24471937 +31412886,0.24471937 +31412886,0 +31412940,0 +31412940,0.25045263 +31412964,0.25045263 +31412964,0 +31415442,0 +31415442,0.34127942 +31415454,0.34127942 +31415454,0 +31415556,0 +31415556,0.11119493 +31415586,0.11119493 +31415586,0 +31415676,0 +31415676,0.11330718 +31415706,0.11330718 +31415706,0 +31417164,0 +31417164,0.21047073 +31417248,0.21047073 +31417248,0 +31417284,0 +31417284,0.074381412 +31417296,0.074381412 +31417296,0 +31417398,0 +31417398,0.01931201 +31417404,0.01931201 +31417404,0 +31419444,0 +31419444,0.24079662 +31419450,0.24079662 +31419450,0 +31420620,0 +31420620,0.081170791 +31420626,0.081170791 +31420626,0 +31426470,0 +31426470,0.099426675 +31426482,0.099426675 +31426482,0 +31426584,0 +31426584,0.1531382 +31426620,0.1531382 +31426620,0 +31426704,0 +31426704,0.20413398 +31426770,0.20413398 +31426770,0 +31426818,0 +31426818,0.1028968 +31426836,0.1028968 +31426836,0 +31426932,0 +31426932,0.10787568 +31426938,0.10787568 +31426938,0 +31427028,0 +31427028,0.0073928787 +31427046,0.0052806276 +31427046,0 +31427052,0 +31427052,0 +31427052,0.0073928787 +31427052,0.0052806276 +31427148,0 +31427148,0.17079059 +31427238,0.17079059 +31427238,0 +31427262,0 +31427262,0.074532287 +31427280,0.074532287 +31427280,0 +31430070,0 +31430070,0.14604707 +31430112,0.14604707 +31430112,0 +31430184,0 +31430184,0.13578757 +31430196,0.13578757 +31430196,0 +31431252,0 +31431252,0.25135788 +31431264,0.25135788 +31431264,0 +31431324,0 +31431324,0.12190706 +31431366,0.03032589 +31431366,0 +31431372,0 +31431372,0.03032589 +31431408,0.12190706 +31431408,0 +31431444,0 +31431444,0 +31431444,0.098370549 +31431444,0.042395896 +31431456,0 +31431456,0.098370549 +31431510,0.042395896 +31431510,0 +31431558,0 +31431558,0.1095353 +31431564,0.1095353 +31431564,0 +31431672,0 +31431672,0.20021123 +31431678,0.20021123 +31431678,0 +31431792,0 +31431792,0.0076946288 +31431840,0.0076946288 +31431840,0 +31432764,0 +31432764,0.21710923 +31432794,0.21710923 +31432794,0 +31433682,0 +31433682,0.23340374 +31433700,0.23340374 +31433700,0 +31442028,0 +31442028,0.022329511 +31442034,0.022329511 +31442034,0 +31442100,0 +31442100,0.39121907 +31442142,0.33011467 +31442142,0 +31442178,0 +31442178,0.39121907 +31442202,0.33011467 +31442202,0 +31442256,0 +31442256,0.28937839 +31442268,0.28937839 +31442268,0 +31442376,0 +31442376,0.21454436 +31442418,0.21454436 +31442418,0 +31442490,0 +31442490,0.36104406 +31442496,0.36104406 +31442496,0 +31446552,0 +31446552,0.26599276 +31446624,0.26599276 +31446624,0 +31456308,0 +31456308,0.23989137 +31456326,0.23989137 +31456326,0 +31456422,0 +31456422,0.23129149 +31456506,0.23129149 +31456506,0 +31456536,0 +31456536,0.001961376 +31456542,0.001961376 +31456542,0 +31456656,0 +31456656,0.17893784 +31456668,0.17893784 +31456668,0 +31456770,0 +31456770,0.1573627 +31456836,0.1573627 +31456836,0 +31471740,0 +31471740,0.18904647 +31471830,0.18904647 +31471830,0 +31472322,0 +31472322,0.16128546 +31472460,0.16128546 +31472460,0 +31472910,0 +31472910,0.21016898 +31472982,0.21016898 +31472982,0 +31473498,0 +31473498,0.22751961 +31473624,0.22751961 +31473624,0 +31474086,0 +31474086,0.22857574 +31474170,0.22857574 +31474170,0 +31474674,0 +31474674,0.22887749 +31474752,0.22887749 +31474752,0 +31475256,0 +31475256,0.16611346 +31475352,0.16611346 +31475352,0 +31475844,0 +31475844,0.17350634 +31475940,0.17350634 +31475940,0 +31476432,0 +31476432,0.21137598 +31476516,0.21137598 +31476516,0 +31477020,0 +31477020,0.23898612 +31477074,0.23898612 +31477074,0 +31477608,0 +31477608,0.23204587 +31477686,0.23204587 +31477686,0 +31483476,0 +31483476,0.068648159 +31483482,0.068648159 +31483482,0 +31483590,0 +31483590,0.45609535 +31483596,0.45609535 +31483596,0 +31484040,0 +31484040,0.27202776 +31484154,0.27202776 +31484154,0 +31484628,0 +31484628,0.23536512 +31484694,0.23536512 +31484694,0 +31485210,0 +31485210,0.24547375 +31485276,0.24547375 +31485276,0 +31487904,0 +31487904,0.2039831 +31487910,0.2039831 +31487910,0 +31488576,0 +31488576,0.41264333 +31488600,0.41264333 +31488600,0 +31488900,0 +31488900,0.14378395 +31488906,0.14378395 +31488906,0 +31500804,0 +31500804,0.026101388 +31500918,0.25196138 +31500918,0 +31500966,0 +31500966,0.026101388 +31500972,0.25196138 +31500972,0 +31501038,0 +31501038,0.12281231 +31501146,0.12281231 +31501146,0 +31501230,0 +31501230,0.0073928787 +31501266,0.0073928787 +31501266,0 +31501344,0 +31501344,0.088111044 +31501350,0.088111044 +31501350,0 +31501458,0 +31501458,0.097767049 +31501470,0.097767049 +31501470,0 +31501578,0 +31501578,0.21062161 +31501614,0.21062161 +31501614,0 +31501692,0 +31501692,0.20066385 +31501716,0.20066385 +31501716,0 +31502442,0 +31502442,0.11722993 +31502466,0.11722993 +31502466,0 +31504254,0 +31504254,0.1416717 +31504272,0.1416717 +31504272,0 +31505718,0 +31505718,0.33041642 +31505802,0.33041642 +31505802,0 +31516584,0 +31516584,0.1047073 +31516590,0.1047073 +31516590,0 +31516704,0 +31516704,0.061255281 +31516710,0.061255281 +31516710,0 +31516818,0 +31516818,0.014634882 +31516842,0.014634882 +31516842,0 +31519908,0 +31519908,0.10440555 +31519932,0.10440555 +31519932,0 +31521114,0 +31521114,0.082528666 +31521120,0.082528666 +31521120,0 +31521234,0 +31521234,0.22299336 +31521300,0.22299336 +31521300,0 +31521348,0 +31521348,0.14091732 +31521402,0.14091732 +31521402,0 +31523310,0 +31523310,0.06955341 +31523322,0.06955341 +31523322,0 +31523424,0 +31523424,0.061858781 +31523430,0.061858781 +31523430,0 +31523910,0 +31523910,0.21560048 +31523940,0.21560048 +31523940,0 +31527780,0 +31527780,0.3068799 +31527792,0.3068799 +31527792,0 +31529880,0 +31529880,0.06065178 +31529922,0.06065178 +31529922,0 +31529994,0 +31529994,0.02082076 +31530000,0.02082076 +31530000,0 +31536000,0 From 47818a0a8f662329365937fd5ff37d07254526b3 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 16 Jun 2022 13:01:57 -0700 Subject: [PATCH 004/183] initial implementation of DHW served by direct district heat exchange --- Buildings/Experimental/DHC/Loads/Heating.mo | 61 +++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index 4970d98173e..a90f786ec6f 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -282,6 +282,67 @@ First implementation. fillColor={0,0,0}, fillPattern=FillPattern.Solid)})); end IdealValve; + + model DirectHeatExchangerWaterHeaterWithAuxHeat + "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+60 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + Buildings.Fluid.HeatExchangers.Heater_T heaDhw( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + dp_nominal=0) "Supplemental electric resistance domestic hot water heater" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-48,32},{-32,48}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium + = Medium) "Hot water supply port" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Modelica.Blocks.Interfaces.RealOutput Q_flow "Thermal energy added to water" + annotation (Placement(transformation(extent={{100,30},{120,50}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTem(redeclare package + Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium + = Medium) "Port for domestic cold water inlet" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + dp1_nominal=0, + dp2_nominal=0, + eps=0.85) "Domestic hot water heater" + annotation (Placement(transformation(extent={{-60,-16},{-40,4}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium + = Medium) "Port for district heating supply" + annotation (Placement(transformation(extent={{-30,-110},{-10,-90}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium + = Medium) "Port for district heating return" + annotation (Placement(transformation(extent={{-90,-110},{-70,-90}}))); + equation + connect(conTSetHw.y, heaDhw.TSet) annotation (Line(points={{-31.2,40},{-20,40}, + {-20,8},{-12,8}}, color={0,0,127})); + connect(senTem.port_b, port_hw) + annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); + connect(senTem.port_a, heaDhw.port_b) + annotation (Line(points={{50,0},{10,0}}, color={0,127,255})); + connect(heaDhw.Q_flow, Q_flow) annotation (Line(points={{11,8},{40,8},{40,40}, + {110,40}}, color={0,0,127})); + connect(hex.port_b1, heaDhw.port_a) + annotation (Line(points={{-40,0},{-10,0}}, color={0,127,255})); + connect(hex.port_a1, port_cw) + annotation (Line(points={{-60,0},{-100,0}}, color={0,127,255})); + connect(port_dhs, hex.port_a2) annotation (Line(points={{-20,-100},{-20,-12},{ + -40,-12}}, color={0,127,255})); + connect(hex.port_b2, port_dhr) annotation (Line(points={{-60,-12},{-80,-12},{-80, + -100}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end DirectHeatExchangerWaterHeaterWithAuxHeat; annotation (Documentation(info="

This package contains base classes that are used to construct the classes in From cfd310b0ea82eb67e6908f1f8f6a85384112ef1f Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Tue, 21 Jun 2022 16:20:24 -0700 Subject: [PATCH 005/183] updated water consumption integrator blocks --- Buildings/Experimental/DHC/Loads/Heating.mo | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index a90f786ec6f..fec16636abc 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -46,10 +46,9 @@ package Heating "Package of models for district heating loads" TSet=TDhwSet, mDhw_flow_nominal=mDhw_flow_nominal) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Blocks.Continuous.Integrator watCon "Integrated hot water consumption" - annotation (Placement(transformation(extent={{110,-50},{130,-30}}))); - Modelica.Blocks.Math.Gain neg(k=-1) - annotation (Placement(transformation(extent={{52,-50},{72,-30}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{84,-50},{104,-30}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{180,20},{220,60}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" @@ -67,14 +66,12 @@ package Heating "Package of models for district heating loads" 40},{-200,40}}, color={0,127,255})); connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, -40},{-200,-40}}, color={0,127,255})); - connect(neg.y, watCon.u) annotation (Line(points={{73,-40},{108,-40}}, - color={0,0,127})); - connect(gaiDhw.y, neg.u) annotation (Line(points={{51,20},{0,20},{0,-40},{50,-40}}, - color={0,0,127})); connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, color={0,0,127})); connect(watCon.y, mDhw) - annotation (Line(points={{131,-40},{200,-40}}, color={0,0,127})); + annotation (Line(points={{105,-40},{200,-40}}, color={0,0,127})); + connect(watCon.u, gaiDhw.y) annotation (Line(points={{82,-40},{0,-40},{ + 0,20},{51,20}}, color={0,0,127})); annotation (Documentation(info="

This is a single zone model based on the envelope of the BESTEST Case 600 From 1b2ee36fe53c40678d30ee16f21db21f812a3de6 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Tue, 21 Jun 2022 16:21:04 -0700 Subject: [PATCH 006/183] calculate power supplied by auxiliary electric resistance --- Buildings/Experimental/DHC/Loads/Heating.mo | 22 ++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index fec16636abc..bbd326b56ee 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -290,20 +290,20 @@ First implementation. redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, dp_nominal=0) "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation (Placement(transformation(extent={{8,-10},{28,10}}))); Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-48,32},{-32,48}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium - = Medium) "Hot water supply port" + annotation (Placement(transformation(extent={{-30,32},{-14,48}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = + Medium) "Hot water supply port" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealOutput Q_flow "Thermal energy added to water" - annotation (Placement(transformation(extent={{100,30},{120,50}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTem(redeclare package - Medium = - Medium, m_flow_nominal=mHw_flow_nominal) + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea + "Thermal energy added to water with electric resistance" + annotation (Placement(transformation(extent={{96,30},{116,50}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare + package Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium - = Medium) "Port for domestic cold water inlet" + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = + Medium) "Port for domestic cold water inlet" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, From 7dc1866567ca06e9762a112295d56860e00a6060 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Tue, 21 Jun 2022 16:22:02 -0700 Subject: [PATCH 007/183] add intermediate temperature sensor after heat exchanger --- Buildings/Experimental/DHC/Loads/Heating.mo | 50 ++++++++++++--------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index bbd326b56ee..ad3ca842163 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -313,30 +313,38 @@ First implementation. dp1_nominal=0, dp2_nominal=0, eps=0.85) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-60,-16},{-40,4}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium - = Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-30,-110},{-10,-90}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium - = Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,-110},{-70,-90}}))); + annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = + Medium) "Port for district heating supply" + annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = + Medium) "Port for district heating return" + annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); + Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium + = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-36,-10},{-16,10}}))); equation - connect(conTSetHw.y, heaDhw.TSet) annotation (Line(points={{-31.2,40},{-20,40}, - {-20,8},{-12,8}}, color={0,0,127})); - connect(senTem.port_b, port_hw) + connect(conTSetHw.y, heaDhw.TSet) annotation (Line(points={{-13.2,40},{ + -8,40},{-8,8},{6,8}}, + color={0,0,127})); + connect(senTemAuxHeaOut.port_b, port_hw) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(senTem.port_a, heaDhw.port_b) - annotation (Line(points={{50,0},{10,0}}, color={0,127,255})); - connect(heaDhw.Q_flow, Q_flow) annotation (Line(points={{11,8},{40,8},{40,40}, - {110,40}}, color={0,0,127})); - connect(hex.port_b1, heaDhw.port_a) - annotation (Line(points={{-40,0},{-10,0}}, color={0,127,255})); + connect(senTemAuxHeaOut.port_a, heaDhw.port_b) + annotation (Line(points={{50,0},{28,0}}, color={0,127,255})); + connect(heaDhw.Q_flow, PEleAuxHea) annotation (Line(points={{29,8},{40, + 8},{40,40},{106,40}}, color={0,0,127})); connect(hex.port_a1, port_cw) - annotation (Line(points={{-60,0},{-100,0}}, color={0,127,255})); - connect(port_dhs, hex.port_a2) annotation (Line(points={{-20,-100},{-20,-12},{ - -40,-12}}, color={0,127,255})); - connect(hex.port_b2, port_dhr) annotation (Line(points={{-60,-12},{-80,-12},{-80, - -100}}, color={0,127,255})); + annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); + connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, + 12},{-50,12}}, + color={0,127,255})); + connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, + 12},{-80,100}}, + color={0,127,255})); + connect(senTemHXOut.port_a, hex.port_b1) + annotation (Line(points={{-36,0},{-50,0}}, color={0,127,255})); + connect(senTemHXOut.port_b, heaDhw.port_a) + annotation (Line(points={{-16,0},{8,0}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWaterHeaterWithAuxHeat; From 33806b1f42c16adeba87fa96e4d9899a723753ea Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Tue, 21 Jun 2022 16:22:58 -0700 Subject: [PATCH 008/183] created example to test direct district HX with aux heating for DHW --- Buildings/Experimental/DHC/Loads/Heating.mo | 111 ++++++++++++++++++++ 1 file changed, 111 insertions(+) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index ad3ca842163..7eb6394c4b2 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -356,6 +356,117 @@ Buildings.Experimental.DHC.Loads.Heating.DHW.

")); end BaseClasses; + + package Examples "Example implementations of district-integrated DHW models" + extends Modelica.Icons.ExamplesPackage; + + model DistrictHeatExchangeDHWAuxHeat + "Example implementation of direct district heat exchange and auxiliary line heater for DHW" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + Buildings.Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDcw, + nPorts=2) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) + "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{64,24},{52,36}}))); + BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( + redeclare package Medium = Medium, + TSetHw(displayUnit = "degC") = TSetHw, + mHw_flow_nominal = mHw_flow_nominal, + mDH_flow_nominal = mDH_flow_nominal) + "Direct district heat exchanger with auxiliary electric heating" + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{30,-10},{10,10}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet(displayUnit = "degC") = TSetTw, + mDhw_flow_nominal=mDhw_flow_nominal) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + Modelica.Blocks.Sources.Sine sine(f=0.001, + offset=1) + annotation (Placement(transformation(extent={{100,20},{80,40}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") + "Thermal energy added to water with electric resistance" + annotation (Placement(transformation(extent={{96,70},{116,90}}))); + Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{96,50},{116,70}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" + annotation (Placement(transformation(extent={{96,-40},{116,-20}}), + iconTransformation(extent={{76,-60},{116,-20}}))); + Fluid.Sources.Boundary_pT souDHw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDHw, + nPorts=1) "Source of district hot water" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-54,90}))); + Fluid.Sources.MassFlowSource_T sinDHw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for district heating water" + annotation (Placement(transformation(extent={{-82,22},{-62,42}}))); + Modelica.Blocks.Sources.Constant const(k=-1) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-90,90}))); + equation + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{0,0},{10,0}}, color={0,127,255})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51.4,30},{40,30}, + {40,8},{32,8}}, color={0,0,127})); + connect(sine.y, gaiDhw.u) + annotation (Line(points={{79,30},{65.2,30}}, + color={0,0,127})); + connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{40,-30}, + {40,8},{32,8}}, color={0,0,127})); + connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-40,10},{-30, + 10},{-30,6},{-20,6}}, color={0,127,255})); + connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-80,2}, + {-80,6},{-70,6},{-70,10},{-60,10}}, color={0,127,255})); + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,-2},{-80,-6}, + {-70,-6},{-70,-10},{-30,-10},{-30,-6},{-20,-6}}, color={0,127,255})); + connect(disHXAuxHea.PEleAuxHea, PEleAuxHea) annotation (Line(points={{-39.4,14}, + {-20,14},{-20,80},{106,80}}, color={0,0,127})); + connect(tmv.TTw, TTw) + annotation (Line(points={{1,8},{10,8},{10,60},{106,60}}, color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{81,-30},{106,-30}}, color={0,0,127})); + connect(souDHw.ports[1], disHXAuxHea.port_dhs) + annotation (Line(points={{-54,80},{-54,20}}, color={0,127,255})); + connect(sinDHw.ports[1], disHXAuxHea.port_dhr) + annotation (Line(points={{-62,32},{-58,32},{-58,20}}, color={0,127,255})); + connect(const.y, sinDHw.m_flow_in) + annotation (Line(points={{-90,79},{-90,40},{-84,40}}, color={0,0,127})); + annotation (experiment(StopTime=3600, Interval=1)); + end DistrictHeatExchangeDHWAuxHeat; + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains a collection of residential domestic hot water models +to demonstrate how these models might be used in district heating systems. +

+")); + end Examples; annotation (preferredView="info", Documentation(info="

This package contains models for building domestic hot water loads served by a district heating network. From 9e06ee54484d7925ba2e182179af7bd63bcb5a14 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 7 Jul 2022 11:47:48 -0700 Subject: [PATCH 009/183] exposing PI gains as parameters in thermostatic mixing valve --- Buildings/Experimental/DHC/Loads/Heating.mo | 25 +++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index 7eb6394c4b2..8f50253f3cd 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -14,6 +14,10 @@ package Heating "Package of models for district heating loads" "Design domestic hot water supply flow rate of system"; parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 "Temperature setpoint of tempered doemstic hot water outlet"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = Medium) "Domestic hot water supply port" annotation ( Placement(transformation(extent={{-210,30},{-190,50}}), @@ -44,7 +48,9 @@ package Heating "Package of models for district heating loads" DomesticWaterMixer tmv( redeclare package Medium = Medium, TSet=TDhwSet, - mDhw_flow_nominal=mDhw_flow_nominal) "Ideal thermostatic mixing valve" + mDhw_flow_nominal=mDhw_flow_nominal, + k=k, + Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" @@ -103,13 +109,17 @@ First implementation. replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = Medium) "Port for tempered water outlet" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Buildings.Controls.Continuous.LimPID conPID( controllerType=Modelica.Blocks.Types.SimpleController.PI, - k=2, - Ti=15, + k=k, + Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,40},{20,60}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = @@ -371,6 +381,10 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, T(displayUnit = "degC") = TDcw, @@ -394,7 +408,10 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. BaseClasses.DomesticWaterMixer tmv( redeclare package Medium = Medium, TSet(displayUnit = "degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal) "Ideal thermostatic mixing valve" + mDhw_flow_nominal=mDhw_flow_nominal, + k=k, + Ti=Ti) + "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Modelica.Blocks.Sources.Sine sine(f=0.001, offset=1) From 3e1c8b03640519b56c49e38bb2ac9136da2247f5 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 7 Jul 2022 11:59:36 -0700 Subject: [PATCH 010/183] replaced ideal valve with three way linear valve in tmv model --- Buildings/Experimental/DHC/Loads/Heating.mo | 32 ++++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index 8f50253f3cd..51811f16110 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -12,6 +12,7 @@ package Heating "Package of models for district heating loads" replaceable package Medium = Buildings.Media.Water "Medium model for water"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Design domestic hot water supply flow rate of system"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 "Temperature setpoint of tempered doemstic hot water outlet"; parameter Real k(min=0) = 2 "Gain of controller"; @@ -49,6 +50,7 @@ package Heating "Package of models for district heating loads" redeclare package Medium = Medium, TSet=TDhwSet, mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, k=k, Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); @@ -109,6 +111,7 @@ First implementation. replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real k(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or @@ -127,11 +130,14 @@ First implementation. annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" annotation (Placement(transformation(extent={{80,40},{60,60}}))); - IdealValve ideValHea(redeclare package Medium = Medium, final m_flow_nominal= - mDhw_flow_nominal) "Ideal valve" annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=-90, - origin={0,6}))); + Fluid.Actuators.Valves.ThreeWayLinear + ideValHea(redeclare package Medium = Medium, final m_flow_nominal= + mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal) + "Ideal valve" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=180, + origin={0,0}))); Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = Medium) "Port for hot water supply" annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); @@ -156,18 +162,20 @@ First implementation. annotation (Line(points={{59,50},{42,50}}, color={0,0,127})); connect(senTemTw.T, conPID.u_m) annotation (Line(points={{30,11},{30,38}}, color={0,0,127})); - connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{9.8,-1.77636e-15}, - {20,-1.77636e-15},{20,0}}, color={0,127,255})); - connect(conPID.y, ideValHea.y) annotation (Line(points={{19,50},{1.9984e-15,50}, - {1.9984e-15,17}}, color={0,0,127})); + connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, + {20,-6.66134e-16},{20,0}}, color={0,127,255})); + connect(conPID.y, ideValHea.y) annotation (Line(points={{19,50},{8.88178e-16,50}, + {8.88178e-16,12}},color={0,0,127})); connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,20},{90,20},{90, 80},{110,80}}, color={0,0,127})); connect(ideValHea.port_1, senTemHw.port_b) - annotation (Line(points={{-9.8,0},{-20,0}}, color={0,127,255})); + annotation (Line(points={{-10,1.77636e-15},{-10,0},{-20,0}}, + color={0,127,255})); connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-54,0},{-54, 60},{-100,60}}, color={0,127,255})); connect(ideValHea.port_3, senTemCw.port_b) - annotation (Line(points={{0,-4},{0,-60},{-20,-60}}, color={0,127,255})); + annotation (Line(points={{-1.77636e-15,-10},{-1.77636e-15,-60},{-20,-60}}, + color={0,127,255})); connect(senTemCw.port_a, port_cw) annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); connect(senTemTw.port_b, senFloDhw.port_a) @@ -381,6 +389,7 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real k(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or @@ -409,6 +418,7 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. redeclare package Medium = Medium, TSet(displayUnit = "degC") = TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, k=k, Ti=Ti) "Ideal thermostatic mixing valve" From 2afea38ed3c7a17fdde97bf0cc18f76809e2d2a5 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 7 Jul 2022 12:45:33 -0700 Subject: [PATCH 011/183] initial implementation of heat pump water heater served by district heat --- Buildings/Experimental/DHC/Loads/Heating.mo | 98 +++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index 51811f16110..d17d2e1251c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -366,6 +366,104 @@ First implementation. annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWaterHeaterWithAuxHeat; + + model HeatPumpWaterHeaterWithTank + "A model for domestic water heating served by heat pump water heater and local storage tank" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+60 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = + Medium) "Hot water supply port" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Modelica.Blocks.Interfaces.RealOutput PEleHP + "Thermal energy added to water with heat pump" + annotation (Placement(transformation(extent={{96,30},{116,50}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare + package + Medium = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = + Medium) "Port for domestic cold water inlet" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + QCon_flow_nominal=QCon_flow_nominal, + dp1_nominal=0, + dp2_nominal=0) + "Domestic hot water heater" + annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = + Medium) "Port for district heating supply" + annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = + Medium) "Port for district heating return" + annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); + Fluid.Storage.StratifiedEnhancedInternalHex tan( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + VTan=VTan, + hTan=hTan, + dIns=dIns, + kIns=kIns, + nSeg=5, + redeclare package MediumHex = Medium, + CHex=40, + Q_flow_nominal=0.278*4200*20, + hHex_a=0.995, + hHex_b=0.1, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal=false, + allowFlowReversalHex=false, + mHex_flow_nominal=mHex_flow_nominal, + TTan_nominal=293.15, + THex_nominal=323.15, + dpHex_nominal=dpHex_nominal) + "Hot water tank with heat exchanger configured as steady state" + annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-28,20}))); + equation + connect(senTemTankOut.port_b, port_hw) + annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); + connect(port_dhs, heaPum.port_a2) + annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); + connect(heaPum.port_b2, port_dhr) + annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); + connect(tan.port_a, senTemTankOut.port_a) + annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); + connect(heaPum.P, PEleHP) annotation (Line(points={{-49,48},{0,48},{0,40},{106, + 40}}, color={0,0,127})); + connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, + {-80,39},{-72,39}}, color={0,0,127})); + connect(port_cw, tan.port_b) + annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); + connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, + -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); + connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, + {-28,-3.8},{-28,10}}, color={0,127,255})); + connect(heaPum.port_b1, senTemHPOut.port_a) + annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end HeatPumpWaterHeaterWithTank; annotation (Documentation(info="

This package contains base classes that are used to construct the classes in From 9d608f52023aab97b4238401590cd62582564680 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 27 Jul 2022 14:45:03 -0700 Subject: [PATCH 012/183] added alternate flow path without electric resistance --- Buildings/Experimental/DHC/Loads/Heating.mo | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index d17d2e1251c..782185c56d8 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -338,17 +338,21 @@ First implementation. Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = Medium) "Port for district heating return" annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium - = Medium, m_flow_nominal=mHw_flow_nominal) + Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{-36,-10},{-16,10}}))); + protected + Fluid.FixedResistances.LosslessPipe pip( + redeclare final package Medium = Medium, + final m_flow_nominal=mHw_flow_nominal, + final show_T=false) if haveER == false "Pipe without electric resistance" + annotation (Placement(transformation(extent={{8,-38},{28,-18}}))); equation connect(conTSetHw.y, heaDhw.TSet) annotation (Line(points={{-13.2,40},{ -8,40},{-8,8},{6,8}}, color={0,0,127})); connect(senTemAuxHeaOut.port_b, port_hw) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(senTemAuxHeaOut.port_a, heaDhw.port_b) - annotation (Line(points={{50,0},{28,0}}, color={0,127,255})); connect(heaDhw.Q_flow, PEleAuxHea) annotation (Line(points={{29,8},{40, 8},{40,40},{106,40}}, color={0,0,127})); connect(hex.port_a1, port_cw) @@ -363,6 +367,12 @@ First implementation. annotation (Line(points={{-36,0},{-50,0}}, color={0,127,255})); connect(senTemHXOut.port_b, heaDhw.port_a) annotation (Line(points={{-16,0},{8,0}}, color={0,127,255})); + connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-16,0},{-4,0}, + {-4,-28},{8,-28}}, color={0,127,255})); + connect(heaDhw.port_b, senTemAuxHeaOut.port_a) + annotation (Line(points={{28,0},{50,0}}, color={0,127,255})); + connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{28,-28}, + {40,-28},{40,0},{50,0}}, color={0,127,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWaterHeaterWithAuxHeat; From 8e31fd046049db0d040021fdec1a831bbd2e7f51 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 27 Jul 2022 14:45:44 -0700 Subject: [PATCH 013/183] created haveER flag to determine whether electric resistance is present --- Buildings/Experimental/DHC/Loads/Heating.mo | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index 782185c56d8..a2a7b2e0dc4 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -304,17 +304,20 @@ First implementation. parameter Modelica.Units.SI.Temperature TSetHw = 273.15+60 "Temperature setpoint of hot water supply from heater"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) "Supplemental electric resistance domestic hot water heater" + dp_nominal=0) if haveER == true + "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{8,-10},{28,10}}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) if haveER == true + "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-30,32},{-14,48}}))); Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = Medium) "Hot water supply port" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea if haveER == true "Thermal energy added to water with electric resistance" annotation (Placement(transformation(extent={{96,30},{116,50}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare @@ -502,6 +505,8 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; + Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, T(displayUnit = "degC") = TDcw, @@ -514,7 +519,8 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. redeclare package Medium = Medium, TSetHw(displayUnit = "degC") = TSetHw, mHw_flow_nominal = mHw_flow_nominal, - mDH_flow_nominal = mDH_flow_nominal) + mDH_flow_nominal = mDH_flow_nominal, + haveER=haveER) "Direct district heat exchanger with auxiliary electric heating" annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); Buildings.Fluid.Sources.MassFlowSource_T sinDhw( @@ -537,7 +543,8 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == + true "Thermal energy added to water with electric resistance" annotation (Placement(transformation(extent={{96,70},{116,90}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" From 08a6fff4d8e83918dd916d9c4918885d37e8b2ae Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Tue, 16 Aug 2022 18:21:16 -0700 Subject: [PATCH 014/183] preliminary implementation of integration with ETS --- Buildings/Experimental/DHC/Loads/Heating.mo | 249 ++++++++++++++++++++ 1 file changed, 249 insertions(+) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index a2a7b2e0dc4..369867903a6 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -599,6 +599,255 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. annotation (Line(points={{-90,79},{-90,40},{-84,40}}, color={0,0,127})); annotation (experiment(StopTime=3600, Interval=1)); end DistrictHeatExchangeDHWAuxHeat; + + model DistrictETSIntegration + "Example implementation of connecting district ETS to building DHW model" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; + + Buildings.Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDcw, + nPorts=2) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) + "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{82,74},{70,86}}))); + BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( + redeclare package Medium = Medium, + TSetHw(displayUnit = "degC") = TSetHw, + mHw_flow_nominal = mHw_flow_nominal, + mDH_flow_nominal = mDH_flow_nominal, + haveER=haveER) + "Direct district heat exchanger with auxiliary electric heating" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{48,38},{28,58}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet(displayUnit = "degC") = TSetTw, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) + "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + Modelica.Blocks.Sources.Sine sine(f=0.001, + offset=1) + annotation (Placement(transformation(extent={{120,70},{100,90}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{80,38},{100,58}}))); + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == + true + "Thermal energy added to water with electric resistance" + annotation (Placement(transformation(extent={{120,110},{140,130}}))); + Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{120,90},{140,110}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" + annotation (Placement(transformation(extent={{120,38},{140,58}}), + iconTransformation(extent={{100,18},{140,58}}))); + Modelica.Blocks.Sources.Constant const(k=1) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=0, + origin={-60,150}))); + EnergyTransferStations.Combined.HeatPumpHeatExchanger ets( + nPorts_aHeaWat=1, + nPorts_aChiWat=1, + nPorts_bChiWat=1, + nPorts_bHeaWat=1) + annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare + final package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) + "Heating water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-106,40}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare + final package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) + "Chilled water return temperature" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=0, + origin={-108,0}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare + package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) + "Chilled water supply temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={80,-40}))); + EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( + redeclare package Medium = Medium, + final m_flow_nominal=mHeaWat_flow_nominal, + dp_nominal=100E3) "Heating water distribution pump" + annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare + package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) + "Heating water supply temperature" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={-34,98}))); + Fluid.MixingVolumes.MixingVolume volChiWat( + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + T_start=7 + 273.15, + final prescribedHeatFlowRate=true, + redeclare package Medium = Medium, + V=10, + final mSenFac=1, + final m_flow_nominal=mChiWat_flow_nominal, + nPorts=2) "Volume for chilled water distribution circuit" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={151,-90}))); + EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( + redeclare package Medium = Medium, + final m_flow_nominal=mChiWat_flow_nominal, + dp_nominal=100E3) "Chilled water distribution pump" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) + "District heat pump electricity use" + annotation (Placement(transformation(extent={{100,-2},{120,18}}))); + Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= + 0.01, final h=0.005) + "Enable heating" + annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); + Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= + 0.01, final h=0.005) + "Enable cooling" + annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + + 273.15, y(final unit="K", displayUnit="degC")) + "Heating water supply temperature set point" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + + 273.15, y(final unit="K", displayUnit="degC")) + "Chilled water supply temperature set point" + annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); + Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare + final package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) + "District water supply temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-40,-60}))); + Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package + Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) + "District water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={40,-60}))); + Fluid.Sources.Boundary_pT disWat( + redeclare package Medium = Medium, + use_T_in=true, + nPorts=2) "District water boundary conditions" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,-90}))); + Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( + table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, + 16; 11,13; 12,11], + timeScale=2592000, + tableName="tab1", + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, + offset={273.15}, + columns={2}, + smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) + "District water supply temperature" + annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); + equation + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, + color={0,127,255})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, + {60,80},{60,56},{50,56}}, + color={0,0,127})); + connect(sine.y, gaiDhw.u) + annotation (Line(points={{99,80},{83.2,80}}, + color={0,0,127})); + connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ + 60,48},{60,56},{50,56}}, + color={0,0,127})); + connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, + {-10,60},{-10,56},{0,56}}, + color={0,127,255})); + connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,52}, + {-60,60},{-40,60}}, color={0,127,255})); + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,48}, + {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); + connect(disHXAuxHea.PEleAuxHea, PEleAuxHea) annotation (Line(points={{-19.4, + 64},{0,64},{0,120},{130,120}}, + color={0,0,127})); + connect(tmv.TTw, TTw) + annotation (Line(points={{21,58},{28,58},{28,100},{130,100}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); + connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( + points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); + connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( + points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); + connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( + points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); + connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points + ={{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points + ={{-34,108},{-34,132},{-30,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) + annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); + connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, + {-20,150},{-20,144}}, color={0,0,127})); + connect(senTChiWatSup.port_b, pumChiWat.port_a) + annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); + connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={ + {120,-40},{140,-40},{140,-88},{141,-88}}, color={0,127,255})); + connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( + points={{141,-92},{140,-92},{140,-140},{-140,-140},{-140,0},{-118, + 0}}, color={0,127,255})); + connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( + points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ + 0,127,255})); + connect(ets.PHea, EDisHP.u) + annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); + connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, + {-74,10},{-34,10}}, color={255,0,255})); + connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, + {-70,6},{-34,6}}, color={255,0,255})); + connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ + -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); + connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ + -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); + connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points + ={{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); + connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points + ={{40,-50},{40,-20},{30,-20}}, color={0,127,255})); + connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points= + {{-2,-80},{40,-80},{40,-70}}, color={0,127,255})); + connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points= + {{2,-80},{-40,-80},{-40,-70}}, color={0,127,255})); + connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, + -110},{-4,-110},{-4,-102}}, color={0,0,127})); + connect(PEleAuxHea, PEleAuxHea) + annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); + annotation (experiment(StopTime=3600, Interval=1), + Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), + Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); + end DistrictETSIntegration; annotation ( preferredView="info", Documentation( From a0be96e0378ff78bcb4fed1027b9734b737f7675 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 28 Sep 2022 19:41:45 -0700 Subject: [PATCH 015/183] reconfigured DHW generation models with partial base class --- Buildings/Experimental/DHC/Loads/Heating.mo | 129 +++++++++----------- 1 file changed, 58 insertions(+), 71 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index 369867903a6..d809b888fb4 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -298,34 +298,45 @@ First implementation. fillPattern=FillPattern.Solid)})); end IdealValve; - model DirectHeatExchangerWaterHeaterWithAuxHeat - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" + partial model PartialDHWGeneration + "A partial model for domestic water heating" replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+60 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + + Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = Medium) "Hot water supply port" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = Medium) "Port for domestic cold water inlet" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = Medium) "Port for district heating supply" + annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = Medium) "Port for district heating return" + annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); + Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{96,30},{116,50}}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end PartialDHWGeneration; + + model DirectHeatExchangerWaterHeaterWithAuxHeat + "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" + extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialDHWGeneration; + parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; + Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, dp_nominal=0) if haveER == true "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{8,-10},{28,10}}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) if haveER == true - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-30,32},{-14,48}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = - Medium) "Hot water supply port" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea if haveER == true - "Thermal energy added to water with electric resistance" - annotation (Placement(transformation(extent={{96,30},{116,50}}))); + annotation (Placement(transformation(extent={{10,-10},{30,10}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = - Medium) "Port for domestic cold water inlet" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -335,57 +346,49 @@ First implementation. dp2_nominal=0, eps=0.85) "Domestic hot water heater" annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = - Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = - Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-36,-10},{-16,10}}))); + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); protected Fluid.FixedResistances.LosslessPipe pip( redeclare final package Medium = Medium, final m_flow_nominal=mHw_flow_nominal, final show_T=false) if haveER == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{8,-38},{28,-18}}))); + annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); + equation - connect(conTSetHw.y, heaDhw.TSet) annotation (Line(points={{-13.2,40},{ - -8,40},{-8,8},{6,8}}, - color={0,0,127})); connect(senTemAuxHeaOut.port_b, port_hw) - annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(heaDhw.Q_flow, PEleAuxHea) annotation (Line(points={{29,8},{40, - 8},{40,40},{106,40}}, color={0,0,127})); + annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); connect(hex.port_a1, port_cw) annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, 12},{-50,12}}, color={0,127,255})); connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, - 12},{-80,100}}, + 12},{-80,60},{-80,60},{-80,100}}, color={0,127,255})); connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-36,0},{-50,0}}, color={0,127,255})); + annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-16,0},{8,0}}, color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-16,0},{-4,0}, - {-4,-28},{8,-28}}, color={0,127,255})); + annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); + connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, + {0,-28},{10,-28}}, color={0,127,255})); connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{28,0},{50,0}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{28,-28}, - {40,-28},{40,0},{50,0}}, color={0,127,255})); + annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); + connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, + {40,-28},{40,0},{60,0}}, color={0,127,255})); + connect(conTSetHw.y, heaDhw.TSet) + annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); + connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, + 40},{106,40}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWaterHeaterWithAuxHeat; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+60 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialDHWGeneration; + parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; @@ -393,21 +396,11 @@ First implementation. parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = - Medium) "Hot water supply port" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEleHP - "Thermal energy added to water with heat pump" - annotation (Placement(transformation(extent={{96,30},{116,50}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = - Medium) "Port for domestic cold water inlet" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -418,12 +411,6 @@ First implementation. dp2_nominal=0) "Domestic hot water heater" annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = - Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = - Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); Fluid.Storage.StratifiedEnhancedInternalHex tan( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, @@ -462,7 +449,7 @@ First implementation. annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); connect(tan.port_a, senTemTankOut.port_a) annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); - connect(heaPum.P, PEleHP) annotation (Line(points={{-49,48},{0,48},{0,40},{106, + connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, 40}}, color={0,0,127})); connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, {-80,39},{-72,39}}, color={0,0,127})); @@ -585,7 +572,7 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. {-80,6},{-70,6},{-70,10},{-60,10}}, color={0,127,255})); connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,-2},{-80,-6}, {-70,-6},{-70,-10},{-30,-10},{-30,-6},{-20,-6}}, color={0,127,255})); - connect(disHXAuxHea.PEleAuxHea, PEleAuxHea) annotation (Line(points={{-39.4,14}, + connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-39.4,14}, {-20,14},{-20,80},{106,80}}, color={0,0,127})); connect(tmv.TTw, TTw) annotation (Line(points={{1,8},{10,8},{10,60},{106,60}}, color={0,0,127})); @@ -790,7 +777,7 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. {-60,60},{-40,60}}, color={0,127,255})); connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,48}, {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); - connect(disHXAuxHea.PEleAuxHea, PEleAuxHea) annotation (Line(points={{-19.4, + connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, 64},{0,64},{0,120},{130,120}}, color={0,0,127})); connect(tmv.TTw, TTw) @@ -804,10 +791,10 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); - connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points - ={{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points - ={{-34,108},{-34,132},{-30,132}}, color={0,127,255})); + connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= + {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= + {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, @@ -832,10 +819,10 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); - connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points - ={{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); - connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points - ={{40,-50},{40,-20},{30,-20}}, color={0,127,255})); + connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= + {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); + connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= + {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points= {{-2,-80},{40,-80},{40,-70}}, color={0,127,255})); connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points= From d151c971540df1307818ad119157138b1545be0f Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 28 Sep 2022 19:42:50 -0700 Subject: [PATCH 016/183] created new partial building model with flow distribution for SC and DHW --- .../BaseClasses/PartialBuildingWFloDis.mo | 492 ++++++++++++++++++ .../DHC/Loads/BaseClasses/package.order | 1 + 2 files changed, 493 insertions(+) create mode 100644 Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo diff --git a/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo b/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo new file mode 100644 index 00000000000..d978fd4abf5 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo @@ -0,0 +1,492 @@ +within Buildings.Experimental.DHC.Loads.BaseClasses; +partial model PartialBuildingWFloDis + "Partial class for building model with flow distribution" + replaceable package Medium=Buildings.Media.Water + constrainedby Modelica.Media.Interfaces.PartialMedium + "Medium in the building distribution system"; + parameter Integer nPorts_aHeaWat=0 + "Number of heating water inlet ports" + annotation (Evaluate=true,Dialog(connectorSizing=true)); + parameter Integer nPorts_bHeaWat=0 + "Number of heating water outlet ports" + annotation (Evaluate=true,Dialog(connectorSizing=true)); + parameter Integer nPorts_aChiWat=0 + "Number of chilled water inlet ports" + annotation (Evaluate=true,Dialog(connectorSizing=true)); + parameter Integer nPorts_bChiWat=0 + "Number of chilled water outlet ports" + annotation (Evaluate=true,Dialog(connectorSizing=true)); + parameter Boolean have_heaWat=false + "Set to true if the building has heating water system" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_chiWat=false + "Set to true if the building has chilled water system" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_eleHea=false + "Set to true if the building has decentralized electric heating system" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_eleCoo=false + "Set to true if the building has decentralized electric cooling system" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_fan=false + "Set to true if fan power is computed" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_pum=false + "Set to true if pump power is computed" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Boolean have_weaBus=false + "Set to true to use a weather bus" + annotation (Evaluate=true, Dialog(group="Configuration")); + parameter Real facMul(min=Modelica.Constants.eps)=1 + "Multiplier factor" + annotation (Evaluate=true, Dialog(group="Scaling")); + parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTw "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Real k(min=0) "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; + parameter Boolean allowFlowReversal=false + "= true to allow flow reversal, false restricts to design direction (port_a -> port_b)" + annotation (Dialog(tab="Assumptions"),Evaluate=true); + final parameter Boolean have_heaLoa=have_heaWat or have_eleHea + "Set to true if the building has heating loads" + annotation (Evaluate=true, Dialog(group="Configuration")); + final parameter Boolean have_cooLoa=have_chiWat or have_eleCoo + "Set to true if the building has cooling loads" + annotation (Evaluate=true, Dialog(group="Configuration")); + // IO CONNECTORS + Buildings.BoundaryConditions.WeatherData.Bus weaBus if have_weaBus + "Weather data bus" + annotation (Placement(transformation(extent={{-16,284},{18,316}}), + iconTransformation(extent={{-16,198},{18,230}}))); + Modelica.Fluid.Interfaces.FluidPorts_a ports_aHeaWat[nPorts_aHeaWat]( + redeclare each package Medium=Medium, + each m_flow( + min= + if allowFlowReversal then + -Modelica.Constants.inf + else + 0), + each h_outflow( + start=Medium.h_default, + nominal=Medium.h_default)) if have_heaWat + "Heating water inlet ports" + annotation (Placement(transformation(extent={{-310,-100},{-290,-20}}), + iconTransformation(extent={{-310,-100},{-290,-20}}))); + Modelica.Fluid.Interfaces.FluidPorts_b ports_bHeaWat[nPorts_bHeaWat]( + redeclare each package Medium=Medium, + each m_flow( + max= + if allowFlowReversal then + +Modelica.Constants.inf + else + 0), + each h_outflow( + start=Medium.h_default, + nominal=Medium.h_default)) if have_heaWat + "Heating water outlet ports" + annotation (Placement(transformation(extent={{290,-100},{310,-20}}), + iconTransformation(extent={{290,-100},{310,-20}}))); + Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiWat[nPorts_aChiWat]( + redeclare each package Medium=Medium, + each m_flow( + min= + if allowFlowReversal then + -Modelica.Constants.inf + else + 0), + each h_outflow( + start=Medium.h_default, + nominal=Medium.h_default)) if have_chiWat + "Chilled water inlet ports" + annotation (Placement(transformation(extent={{-310,-300},{-290,-220}}), + iconTransformation(extent={{-310,-220},{-290,-140}}))); + Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiWat[nPorts_bChiWat]( + redeclare each package Medium=Medium, + each m_flow( + max= + if allowFlowReversal then + +Modelica.Constants.inf + else + 0), + each h_outflow( + start=Medium.h_default, + nominal=Medium.h_default)) if have_chiWat + "Chilled water outlet ports" + annotation (Placement(transformation(extent={{290,-300},{310,-220}}), + iconTransformation(extent={{290,-220},{310,-140}}))); + Modelica.Blocks.Interfaces.RealOutput QHea_flow( + final unit="W") if have_heaLoa + "Total heating heat flow rate transferred to the loads (>=0)" + annotation (Placement(transformation(extent={{300,260},{340,300}}), + iconTransformation(extent={{300,240},{340,280}}))); + Modelica.Blocks.Interfaces.RealOutput QCoo_flow( + final unit="W") if have_cooLoa + "Total cooling heat flow rate transferred to the loads (<=0)" + annotation (Placement(transformation(extent={{300,220},{340,260}}), + iconTransformation(extent={{300,200},{340,240}}))); + Modelica.Blocks.Interfaces.RealOutput PHea( + final unit="W") if have_eleHea + "Power drawn by decentralized heating system" + annotation (Placement(transformation(extent={{300,180},{340,220}}), + iconTransformation(extent={{300,160},{340,200}}))); + Modelica.Blocks.Interfaces.RealOutput PCoo( + final unit="W") if have_eleCoo + "Power drawn by decentralized cooling system" + annotation (Placement(transformation(extent={{300,140},{340,180}}), + iconTransformation(extent={{300,120},{340,160}}))); + Modelica.Blocks.Interfaces.RealOutput PFan( + final quantity="Power", + final unit="W") if have_fan + "Power drawn by fan motors" + annotation (Placement(transformation(extent={{300,100},{340,140}}), + iconTransformation(extent={{300,80},{340,120}}))); + Modelica.Blocks.Interfaces.RealOutput PPum( + final quantity="Power", + final unit="W") if have_pum + "Power drawn by pump motors" + annotation (Placement(transformation(extent={{300,60},{340,100}}), + iconTransformation(extent={{300,40},{340,80}}))); + Fluid.BaseClasses.MassFlowRateMultiplier mulHeaWatInl[nPorts_aHeaWat]( + redeclare each final package Medium = Medium, + each final k=1/facMul, + each final allowFlowReversal=allowFlowReversal) if have_heaWat + "Mass flow rate multiplier" + annotation (Placement(transformation(extent={{-280,-70},{-260,-50}}))); + Fluid.BaseClasses.MassFlowRateMultiplier mulChiWatInl[nPorts_aChiWat]( + redeclare each final package Medium = Medium, + each final k=1/facMul, + each final allowFlowReversal=allowFlowReversal) if have_chiWat + "Mass flow rate multiplier" + annotation (Placement(transformation(extent={{-280,-270},{-260,-250}}))); + Fluid.BaseClasses.MassFlowRateMultiplier mulHeaWatOut[nPorts_bHeaWat]( + redeclare each final package Medium = Medium, + each final k=facMul, + each final allowFlowReversal=allowFlowReversal) if have_heaWat + "Mass flow rate multiplier" + annotation (Placement(transformation(extent={{260,-70},{280,-50}}))); + Fluid.BaseClasses.MassFlowRateMultiplier mulChiWatOut[nPorts_bChiWat]( + redeclare each final package Medium = Medium, + each final k=facMul, + each final allowFlowReversal=allowFlowReversal) if have_chiWat + "Mass flow rate multiplier" + annotation (Placement(transformation(extent={{260,-270},{280,-250}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulQHea_flow(u( + final unit="W"), final k=facMul) if have_heaLoa "Scaling" + annotation (Placement(transformation(extent={{270,270},{290,290}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulQCoo_flow(u( + final unit="W"), final k=facMul) if have_cooLoa "Scaling" + annotation (Placement(transformation(extent={{270,230},{290,250}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPHea(u(final + unit="W"), final k=facMul) if have_eleHea "Scaling" + annotation (Placement(transformation(extent={{270,190},{290,210}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPCoo(u(final + unit="W"), final k=facMul) if have_eleCoo "Scaling" + annotation (Placement(transformation(extent={{270,150},{290,170}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPFan(u(final + unit="W"), final k=facMul) if have_fan "Scaling" + annotation (Placement(transformation(extent={{270,110},{290,130}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPPum(u(final + unit="W"), final k=facMul) if have_pum "Scaling" + annotation (Placement(transformation(extent={{270,70},{290,90}}))); + FlowDistribution disFloHea( + redeclare final package Medium = Medium, + final allowFlowReversal=allowFlowReversal, + m_flow_nominal=mHeaWat_flow_nominal, + have_pum=true, + typCtr=Buildings.Experimental.DHC.Loads.BaseClasses.Types.PumpControlType.ConstantHead, + dp_nominal=100000, + nPorts_a1=1, + nPorts_b1=1) if have_heaWat + "Heating water distribution system" + annotation (Placement(transformation(extent={{120,-70},{140,-50}}))); + + FlowDistribution disFloCoo( + redeclare final package Medium = Medium, + final allowFlowReversal=allowFlowReversal, + m_flow_nominal=mChiWat_flow_nominal, + typDis=Buildings.Experimental.DHC.Loads.BaseClasses.Types.DistributionType.ChilledWater, + have_pum=true, + typCtr=Buildings.Experimental.DHC.Loads.BaseClasses.Types.PumpControlType.ConstantHead, + dp_nominal=100000, + nPorts_b1=1, + nPorts_a1=1) if have_chiWat + "Chilled water distribution system" + annotation (Placement(transformation(extent={{120,-270},{140,-250}}))); + + Fluid.FixedResistances.Junction spl( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal*{1,-1,-1}, + dp_nominal=0*{1,1,1}) + annotation (Placement(transformation(extent={{-220,-70},{-200,-50}}))); + Fluid.FixedResistances.Junction mix( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal*{1,-1,1}, + dp_nominal=0*{1,1,1}) + annotation (Placement(transformation(extent={{200,-70},{220,-50}}))); + Heating.DHW.BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( + TSetHw=TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal, + haveER=true) + annotation (Placement(transformation(extent={{-106,-120},{-86,-100}}))); + Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit="degC") = TDcw, + nPorts=2) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-170,-128},{-150,-108}}))); + Heating.DHW.BaseClasses.DomesticWaterMixer + tmv( + redeclare package Medium = Medium, + TSet(displayUnit="degC") = TSetTw, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) + "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-40,-130},{-20,-110}}))); + Modelica.Blocks.Interfaces.RealOutput PDhw(final unit="W") if + have_eleHea + "Power drawn by decentralized water heating system" annotation (Placement( + transformation(extent={{300,20},{340,60}}), iconTransformation(extent={{ + 300,160},{340,200}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPDhw(u(final + unit="W"), final k=facMul) if have_eleHea "Scaling" + annotation (Placement(transformation(extent={{272,30},{292,50}}))); + Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{40,-130},{20,-110}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{120,-170},{140,-150}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) + "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{132,-126},{120,-114}}))); + Modelica.Blocks.Sources.Sine sine(f=0.001, offset=1) + annotation (Placement(transformation(extent={{180,-130},{160,-110}}))); + Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K", displayUnit="degC") "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{300,-120},{340,-80}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" + annotation (Placement(transformation(extent={{300,-180},{340,-140}}), + iconTransformation(extent={{378,-162},{418,-122}}))); +protected + final parameter Modelica.Units.SI.SpecificHeatCapacity cp_default= + Medium.specificHeatCapacityCp(Medium.setState_pTX( + p=Medium.p_default, + T=Medium.T_default, + X=Medium.X_default)) + "Specific heat capacity of medium at default medium state"; +initial equation + assert( + nPorts_aHeaWat == nPorts_bHeaWat, + "In "+getInstanceName()+": The numbers of heating water inlet ports ("+String( + nPorts_aHeaWat)+") and outlet ports ("+String( + nPorts_bHeaWat)+") must be equal."); + assert( + nPorts_aChiWat == nPorts_bChiWat, + "In "+getInstanceName()+": The numbers of chilled water inlet ports ("+String( + nPorts_aChiWat)+") and outlet ports ("+String( + nPorts_bChiWat)+") must be equal."); +equation + connect(mulQHea_flow.y, QHea_flow) + annotation (Line(points={{292,280},{320,280}}, color={0,0,127})); + connect(mulQCoo_flow.y, QCoo_flow) + annotation (Line(points={{292,240},{320,240}}, color={0,0,127})); + connect(mulPHea.y, PHea) + annotation (Line(points={{292,200},{320,200}}, color={0,0,127})); + connect(mulPCoo.y, PCoo) + annotation (Line(points={{292,160},{320,160}}, color={0,0,127})); + connect(mulPFan.y, PFan) + annotation (Line(points={{292,120},{320,120}}, color={0,0,127})); + connect(mulPPum.y, PPum) + annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); + connect(ports_aChiWat,mulChiWatInl. port_a) + annotation (Line(points={{-300,-260},{-280,-260}}, color={0,127,255})); + connect(ports_aHeaWat,mulHeaWatInl. port_a) + annotation (Line(points={{-300,-60},{-280,-60}}, color={0,127,255})); + connect(mulHeaWatOut.port_b, ports_bHeaWat) + annotation (Line(points={{280,-60},{300,-60}}, color={0,127,255})); + connect(mulChiWatOut.port_b, ports_bChiWat) + annotation (Line(points={{280,-260},{300,-260}}, color={0,127,255})); + connect(mulChiWatOut[1].port_a, disFloCoo.port_b) + annotation (Line(points={{260,-260},{140,-260}}, color={0,127,255})); + connect(mulChiWatInl[1].port_b, disFloCoo.port_a) + annotation (Line(points={{-260,-260},{120,-260}}, color={0,127,255})); + connect(mulHeaWatInl[1].port_b, spl.port_1) + annotation (Line(points={{-260,-60},{-220,-60}}, color={0,127,255})); + connect(mix.port_2, mulHeaWatOut[1].port_a) + annotation (Line(points={{220,-60},{260,-60}}, color={0,127,255})); + connect(disFloHea.port_b, mix.port_1) + annotation (Line(points={{140,-60},{200,-60}}, color={0,127,255})); + connect(disFloHea.port_a, spl.port_2) + annotation (Line(points={{120,-60},{-200,-60}}, color={0,127,255})); + connect(genDHW.port_dhr, mix.port_3) annotation (Line(points={{-104,-100},{-120, + -100},{-120,-140},{210,-140},{210,-70}}, color={0,127,255})); + connect(spl.port_3, genDHW.port_dhs) annotation (Line(points={{-210,-70},{-210, + -80},{-100,-80},{-100,-100}}, color={0,127,255})); + connect(souDcw.ports[1], genDHW.port_cw) annotation (Line(points={{-150,-116}, + {-140,-116},{-140,-110},{-106,-110}}, color={0,127,255})); + connect(tmv.port_cw, souDcw.ports[2]) annotation (Line(points={{-40,-126},{-140, + -126},{-140,-120},{-150,-120}}, color={0,127,255})); + connect(genDHW.port_hw, tmv.port_hw) annotation (Line(points={{-86,-110},{-60, + -110},{-60,-114},{-40,-114}}, color={0,127,255})); + connect(genDHW.PEle, mulPDhw.u) annotation (Line(points={{-85.4,-106},{-60,-106}, + {-60,40},{270,40}}, color={0,0,127})); + connect(mulPDhw.y, PDhw) + annotation (Line(points={{294,40},{320,40}}, color={0,0,127})); + connect(PDhw, PDhw) + annotation (Line(points={{320,40},{320,40}}, color={0,0,127})); + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{-20,-120},{20,-120}}, color={0,127,255})); + connect(gaiDhw.u, sine.y) + annotation (Line(points={{133.2,-120},{159,-120}}, color={0,0,127})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{119.4,-120},{80, + -120},{80,-112},{42,-112}}, color={0,0,127})); + connect(sinDhw.m_flow_in, watCon.u) annotation (Line(points={{42,-112},{80,-112}, + {80,-160},{118,-160}}, color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{141,-160},{320,-160}}, color={0,0,127})); + connect(tmv.TTw, TTw) annotation (Line(points={{-19,-112},{0,-112},{0,-100},{320, + -100}}, color={0,0,127})); + annotation ( + Documentation( + info=" +

+Partial model to be used for modeling the thermal loads on an energy +transfer station or a dedicated plant. +Models extending this class are typically used in conjunction with + +Buildings.Experimental.DHC.Loads.BaseClasses.FlowDistribution +and models extending + +Buildings.Experimental.DHC.Loads.BaseClasses.PartialTerminalUnit +as described in the schematics here under. +The fluid ports represent the connection between the production system and +the building distribution system. +

+

Scaling

+

+Scaling is implemented by means of a multiplier factor facMul. +Each extensive quantity (mass and heat flow rate, electric power) +flowing out through fluid ports, or connected to an +output connector is multiplied by facMul. +Each extensive quantity (mass and heat flow rate, electric power) +flowing in through fluid ports, or connected to an +input connector is multiplied by 1/facMul. +This allows modeling, with a single instance, +multiple identical buildings served by the same energy transfer station. +

+

Examples

+

+See various use cases in + +Buildings.Experimental.DHC.Loads.BaseClasses.Examples. +

+

+
+\"image\" +

+", +revisions=" + +"), + Icon( + coordinateSystem( + extent={{-300,-300},{300,300}}, + preserveAspectRatio=false), + graphics={ + Rectangle( + extent={{-300,-300},{300,300}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{20,-188},{300,-172}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={255,0,0}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-300,-172},{-20,-188}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{18,-38},{46,-10}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,-328},{150,-368}}, + textColor={0,0,255}, + textString="%name"), + Rectangle( + extent={{20,-52},{300,-68}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-300,-68},{-20,-52}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={255,0,0}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-180,180},{174,-220}}, + lineColor={150,150,150}, + fillPattern=FillPattern.Sphere, + fillColor={255,255,255}), + Rectangle( + extent={{36,42},{108,114}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-124,42},{-52,114}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-126,-122},{-54,-50}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{40,-122},{112,-50}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{0,264},{-218,164},{220,164},{0,264}}, + lineColor={95,95,95}, + smooth=Smooth.None, + fillPattern=FillPattern.Solid, + fillColor={95,95,95})}), + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-300,-300},{300,300}}))); +end PartialBuildingWFloDis; diff --git a/Buildings/Experimental/DHC/Loads/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/BaseClasses/package.order index 52d611fc112..c8884970fe6 100644 --- a/Buildings/Experimental/DHC/Loads/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/BaseClasses/package.order @@ -1,6 +1,7 @@ ConstraintViolation FlowDistribution PartialBuilding +PartialBuildingWFloDis PartialBuildingWithPartialETS PartialTerminalUnit SimpleRoomODE From 0a70563cc8ebfa61d6d3f3d7f6f7c49eba308218 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Fri, 7 Oct 2022 17:21:32 -0700 Subject: [PATCH 017/183] reorganized DHW package with new partial base class and inputs / outputs --- Buildings/Experimental/DHC/Loads/Heating.mo | 916 ++++++++++++-------- 1 file changed, 564 insertions(+), 352 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo index d809b888fb4..c23f91d37d7 100644 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ b/Buildings/Experimental/DHC/Loads/Heating.mo @@ -7,106 +7,6 @@ package Heating "Package of models for district heating loads" "Package with base classes that are used by multiple models" extends Modelica.Icons.BasesPackage; - model DomesticWaterFixture - "Thermostatic mixing valve and hot water fixture with representative annual load profile" - replaceable package Medium = Buildings.Media.Water "Medium model for water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal - "Design domestic hot water supply flow rate of system"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 - "Temperature setpoint of tempered doemstic hot water outlet"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = - Medium) "Domestic hot water supply port" annotation ( - Placement(transformation(extent={{-210,30},{-190,50}}), - iconTransformation(extent={{-210,30},{-190,50}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{72,10},{52,30}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw(tableOnFile=true, - table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; - 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; - 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600* - 17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; - 3600*23,0.3; 3600*24,0.1], - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource( - "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{130,10},{110,30}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dcw(redeclare package Medium = - Medium) "Domestic cold water supply port" annotation ( - Placement(transformation(extent={{-210,-50},{-190,-30}}), - iconTransformation(extent={{-210,-50},{-190,-30}}))); - DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet=TDhwSet, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{84,-50},{104,-30}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{180,20},{220,60}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{180,-60},{220,-20}}), - iconTransformation(extent={{180,-60},{220,-20}}))); - equation - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51,20},{0,20},{0, - -12},{-28,-12}}, color={0,0,127})); - connect(schDhw.y[1], gaiDhw.u) - annotation (Line(points={{109,20},{74,20}}, color={0,0,127})); - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{-90,0},{-70,0},{-70,-20},{-50,-20}}, - color={0,127,255})); - connect(tmv.port_hw, port_dhw) annotation (Line(points={{-110,6},{-150,6},{-150, - 40},{-200,40}}, color={0,127,255})); - connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, - -40},{-200,-40}}, color={0,127,255})); - connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{105,-40},{200,-40}}, color={0,0,127})); - connect(watCon.u, gaiDhw.y) annotation (Line(points={{82,-40},{0,-40},{ - 0,20},{51,20}}, color={0,0,127})); - annotation (Documentation(info=" -

-This is a single zone model based on the envelope of the BESTEST Case 600 -building, though it has some modifications. Supply and return air ports are -included for simulation with air-based HVAC systems. Heating and cooling -setpoints and internal loads are time-varying according to an assumed -occupancy schedule. -

-

-This zone model utilizes schedules and constructions from -the Schedules and Constructions packages. -

-", revisions=" -
    -
  • -June 21, 2017, by Michael Wetter:
    -Refactored implementation. -
  • -
  • -June 1, 2017, by David Blum:
    -First implementation. -
  • -
-"),Diagram(coordinateSystem(extent={{-200,-200},{200,200}})), - Icon(coordinateSystem(extent={{-200,-200},{200,200}}))); - end DomesticWaterFixture; - model DomesticWaterMixer "A model for a domestic water mixer" replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; @@ -116,8 +16,8 @@ First implementation. parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); - Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = - Medium) "Port for tempered water outlet" + Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium + = Medium) "Port for tempered water outlet" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Buildings.Controls.Continuous.LimPID conPID( controllerType=Modelica.Blocks.Types.SimpleController.PI, @@ -125,7 +25,8 @@ First implementation. Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,40},{20,60}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package + Medium = Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" @@ -138,22 +39,24 @@ First implementation. extent={{10,10},{-10,-10}}, rotation=180, origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = - Medium) "Port for hot water supply" + Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium + = Medium) "Port for hot water supply" annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = - Medium) "Port for domestic cold water supply" + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium + = Medium) "Port for domestic cold water supply" annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium = + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package + Medium = Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package + Medium = Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = - Medium) "Mass flow rate of domestic hot water" + Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium + = Medium) "Mass flow rate of domestic hot water" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Modelica.Blocks.Logical.GreaterThreshold greaterThreshold annotation (Placement(transformation(extent={{54,22},{44,32}}))); @@ -186,157 +89,64 @@ First implementation. annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); connect(greaterThreshold.y, conPID.trigger) annotation (Line(points={{43.5,27},{38,27},{38,38}}, color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics + ={ Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-86,72},{-64,50}}, + textColor={238,46,47}, + textString="hot", + textStyle={TextStyle.Bold}), + Text( + extent={{-86,-44},{-52,-74}}, + textColor={28,108,200}, + textStyle={TextStyle.Bold}, + textString="cold"), + Text( + extent={{10,36},{86,-34}}, + textColor={102,44,145}, + textStyle={TextStyle.Bold}, + textString="tempered")}), Diagram( coordinateSystem(preserveAspectRatio=false))); end DomesticWaterMixer; - model IdealValve "Ideal three-way valve" - extends Modelica.Blocks.Icons.Block; - replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" - annotation (choicesAllMatching = true); - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Design chilled water supply flow"; - parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; - Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{50,88}, - {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{50,-108}, - {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{90,-10}, - {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( - transformation(extent={{-120,-10},{-100,10}}), - iconTransformation(extent={{-120,-10},{-100,10}}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = - Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( - Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={0,-40}))); - Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( - redeclare package Medium = Medium, - control_m_flow=true, - control_dp=false, - m_flow_small=m_flow_nominal*1E-5, - show_V_flow=false, - allowFlowReversal=false) "Prescribed mass flow rate for the bypass" - annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=180, - origin={50,0}))); - Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" - annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); - Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" - annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); - Modelica.Blocks.Math.Feedback feedback - annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); - Modelica.Blocks.Logical.Switch fraSwi - annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); - Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" - annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); - Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) - annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); - equation - connect(feedback.u1, one.y) - annotation (Line(points={{-58,22},{-69,22}}, - color={0,0,127})); - connect(y, feedback.u2) - annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); - connect(preMasFlo.port_a, port_3) - annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, - 0}}, color={0,127,255})); - connect(feedback.y, pro.u1) - annotation (Line(points={{-41,22},{-30,22}}, - color={0,0,127})); - connect(pro.y, preMasFlo.m_flow_in) - annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); - connect(port_1, senMasFlo.port_a) - annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, - -30}}, color={0,127,255})); - connect(senMasFlo.port_b, port_2) - annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, - -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); - connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, - 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, - color={0,127,255})); - connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, - {-60,-12},{-42,-12}}, color={0,0,127})); - connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, - {-42,-28}}, color={0,0,127})); - connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, - {-40,0},{-40,10},{-30,10}}, color={0,0,127})); - connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, - {-42,-20}}, color={255,0,255})); - annotation ( - Icon( - graphics={ - Polygon( - points={{60,0},{68,14},{52,14},{60,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line(points={{60,100},{60,-100}}, color={28,108,200}), - Line(points={{102,0},{62,0}}, color={28,108,200}), - Polygon( - points={{60,0},{68,-14},{52,-14},{60,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line(points={{62,0},{-98,0}}, color={0,0,0}), - Rectangle( - visible=use_inputFilter, - extent={{28,-10},{46,10}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Polygon( - points={{72,-8},{72,8},{60,0},{72,-8}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid)})); - end IdealValve; - - partial model PartialDHWGeneration + partial model PartialFourPortDHW "A partial model for domestic water heating" + extends Buildings.Fluid.Interfaces.PartialFourPort; replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = Medium) "Hot water supply port" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = Medium) "Port for domestic cold water inlet" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); - Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{96,30},{116,50}}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Modelica.Blocks.Interfaces.RealInput TSetHw "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); - end PartialDHWGeneration; + end PartialFourPortDHW; model DirectHeatExchangerWaterHeaterWithAuxHeat "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialDHWGeneration; + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; + parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if haveER == true + dp_nominal=0) if havePEle == true "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,-10},{30,10}}))); + annotation (Placement(transformation(extent={{10,16},{30,-4}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + annotation (Placement(transformation(extent={{60,-4},{80,16}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -345,49 +155,53 @@ First implementation. dp1_nominal=0, dp2_nominal=0, eps=0.85) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium + = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); protected Fluid.FixedResistances.LosslessPipe pip( redeclare final package Medium = Medium, final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if haveER == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); + final show_T=false) if havePEle == false "Pipe without electric resistance" + annotation (Placement(transformation(extent={{10,44},{30,24}}))); equation - connect(senTemAuxHeaOut.port_b, port_hw) - annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); - connect(hex.port_a1, port_cw) - annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); - connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, - 12},{-50,12}}, - color={0,127,255})); - connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, - 12},{-80,60},{-80,60},{-80,100}}, - color={0,127,255})); connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); + annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, - {0,-28},{10,-28}}, color={0,127,255})); + annotation (Line(points={{-20,6},{10,6}},color={0,127,255})); + connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{-4,6}, + {-4,34},{10,34}}, color={0,127,255})); connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, - {40,-28},{40,0},{60,0}}, color={0,127,255})); - connect(conTSetHw.y, heaDhw.TSet) - annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); - connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, - 40},{106,40}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); + connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,34},{ + 44,34},{44,6},{60,6}}, color={0,127,255})); + connect(senTemAuxHeaOut.port_b, port_b1) annotation (Line(points={{80,6},{90,6}, + {90,60},{100,60}}, color={0,127,255})); + connect(port_a1, hex.port_a1) + annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); + connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,-2},{40,-2},{40,-20}, + {94,-20},{94,0},{110,0}}, color={0,0,127})); + connect(TSetHw, heaDhw.TSet) annotation (Line(points={{-110,0},{-90,0},{-90,-20}, + {0,-20},{0,-2},{8,-2}}, color={0,0,127})); + connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, + -60}}, color={0,127,255})); + connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, + -6}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics + ={ Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWaterHeaterWithAuxHeat; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" - extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialDHWGeneration; + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; @@ -398,9 +212,9 @@ First implementation. parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare - package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -410,7 +224,7 @@ First implementation. dp1_nominal=0, dp2_nominal=0) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Fluid.Storage.StratifiedEnhancedInternalHex tan( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, @@ -433,37 +247,328 @@ First implementation. THex_nominal=323.15, dpHex_nominal=dpHex_nominal) "Hot water tank with heat exchanger configured as steady state" - annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( + annotation (Placement(transformation(extent={{-40,50},{-60,70}}))); + Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium + = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( transformation( extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-28,20}))); + rotation=0, + origin={50,6}))); equation - connect(senTemTankOut.port_b, port_hw) - annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); - connect(port_dhs, heaPum.port_a2) - annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); - connect(heaPum.port_b2, port_dhr) - annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, - 40}}, color={0,0,127})); - connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, - {-80,39},{-72,39}}, color={0,0,127})); - connect(port_cw, tan.port_b) - annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, - -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, - {-28,-3.8},{-28,10}}, color={0,127,255})); + annotation (Line(points={{-40,60},{-10,60}}, + color={0,127,255})); + connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, + {-40,6},{-10,6}}, color={0,127,255})); + connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40, + 56.2},{20,56.2},{20,56},{80,56},{80,6},{60,6}}, + color={0,127,255})); connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); + connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0}, + {-60,14},{-12,14},{-12,9}}, color={0,0,127})); + connect(tan.port_b, port_a1) + annotation (Line(points={{-60,60},{-100,60}}, color={0,127,255})); + connect(senTemTankOut.port_b, port_b1) + annotation (Line(points={{10,60},{100,60}}, color={0,127,255})); + connect(port_a2, heaPum.port_a2) annotation (Line(points={{100,-60},{20, + -60},{20,-6},{10,-6}}, color={0,127,255})); + connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{ + -20,-60},{-20,-6},{-10,-6}}, color={0,127,255})); + connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20}, + {80,-20},{80,0},{110,0}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics + ={ Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end HeatPumpWaterHeaterWithTank; + + package DELETE "These models are outdated" + partial model PartialDHWGeneration + "A partial model for domestic water heating" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + + Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package + Medium = Medium) "Hot water supply port" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package + Medium = Medium) "Port for domestic cold water inlet" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package + Medium = Medium) "Port for district heating supply" + annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package + Medium = Medium) "Port for district heating return" + annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); + Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{96,30},{116,50}}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end PartialDHWGeneration; + + model DirectHeatExchangerWaterHeaterWithAuxHeatOLD + "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; + + parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; + + Buildings.Fluid.HeatExchangers.Heater_T heaDhw( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + dp_nominal=0) if haveER == true + "Supplemental electric resistance domestic hot water heater" + annotation (Placement(transformation(extent={{10,-10},{30,10}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare + package Medium = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + dp1_nominal=0, + dp2_nominal=0, + eps=0.85) "Domestic hot water heater" + annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); + Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium + = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); + protected + Fluid.FixedResistances.LosslessPipe pip( + redeclare final package Medium = Medium, + final m_flow_nominal=mHw_flow_nominal, + final show_T=false) if haveER == false "Pipe without electric resistance" + annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); + + equation + connect(senTemAuxHeaOut.port_b, port_hw) + annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); + connect(hex.port_a1, port_cw) + annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); + connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, + 12},{-50,12}}, + color={0,127,255})); + connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, + 12},{-80,60},{-80,60},{-80,100}}, + color={0,127,255})); + connect(senTemHXOut.port_a, hex.port_b1) + annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); + connect(senTemHXOut.port_b, heaDhw.port_a) + annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); + connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, + {0,-28},{10,-28}}, color={0,127,255})); + connect(heaDhw.port_b, senTemAuxHeaOut.port_a) + annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); + connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, + {40,-28},{40,0},{60,0}}, color={0,127,255})); + connect(conTSetHw.y, heaDhw.TSet) + annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); + connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, + 40},{106,40}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end DirectHeatExchangerWaterHeaterWithAuxHeatOLD; + + model HeatPumpWaterHeaterWithTankOLD + "A model for domestic water heating served by heat pump water heater and local storage tank" + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; + + parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare + package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + QCon_flow_nominal=QCon_flow_nominal, + dp1_nominal=0, + dp2_nominal=0) + "Domestic hot water heater" + annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); + Fluid.Storage.StratifiedEnhancedInternalHex tan( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + VTan=VTan, + hTan=hTan, + dIns=dIns, + kIns=kIns, + nSeg=5, + redeclare package MediumHex = Medium, + CHex=40, + Q_flow_nominal=0.278*4200*20, + hHex_a=0.995, + hHex_b=0.1, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal=false, + allowFlowReversalHex=false, + mHex_flow_nominal=mHex_flow_nominal, + TTan_nominal=293.15, + THex_nominal=323.15, + dpHex_nominal=dpHex_nominal) + "Hot water tank with heat exchanger configured as steady state" + annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium + = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-28,20}))); + equation + connect(senTemTankOut.port_b, port_hw) + annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); + connect(port_dhs, heaPum.port_a2) + annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); + connect(heaPum.port_b2, port_dhr) + annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); + connect(tan.port_a, senTemTankOut.port_a) + annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); + connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, + 40}}, color={0,0,127})); + connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, + {-80,39},{-72,39}}, color={0,0,127})); + connect(port_cw, tan.port_b) + annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); + connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, + -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); + connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, + {-28,-3.8},{-28,10}}, color={0,127,255})); + connect(heaPum.port_b1, senTemHPOut.port_a) + annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); + end HeatPumpWaterHeaterWithTankOLD; + + model IdealValve "Ideal three-way valve" + extends Modelica.Blocks.Icons.Block; + replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" + annotation (choicesAllMatching = true); + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal + "Design chilled water supply flow"; + parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; + Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium + = Medium) annotation (Placement(transformation(extent={{50,88}, + {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium + = Medium) annotation (Placement(transformation(extent={{50,-108}, + {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium + = Medium) annotation (Placement(transformation(extent={{90,-10}, + {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); + Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( + transformation(extent={{-120,-10},{-100,10}}), + iconTransformation(extent={{-120,-10},{-100,10}}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package + Medium = + Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( + Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={0,-40}))); + Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( + redeclare package Medium = Medium, + control_m_flow=true, + control_dp=false, + m_flow_small=m_flow_nominal*1E-5, + show_V_flow=false, + allowFlowReversal=false) "Prescribed mass flow rate for the bypass" + annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=180, + origin={50,0}))); + Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" + annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); + Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" + annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); + Modelica.Blocks.Math.Feedback feedback + annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); + Modelica.Blocks.Logical.Switch fraSwi + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" + annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); + Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + equation + connect(feedback.u1, one.y) + annotation (Line(points={{-58,22},{-69,22}}, + color={0,0,127})); + connect(y, feedback.u2) + annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); + connect(preMasFlo.port_a, port_3) + annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, + 0}}, color={0,127,255})); + connect(feedback.y, pro.u1) + annotation (Line(points={{-41,22},{-30,22}}, + color={0,0,127})); + connect(pro.y, preMasFlo.m_flow_in) + annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); + connect(port_1, senMasFlo.port_a) + annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, + -30}}, color={0,127,255})); + connect(senMasFlo.port_b, port_2) + annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, + -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); + connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, + 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, + color={0,127,255})); + connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, + {-60,-12},{-42,-12}}, color={0,0,127})); + connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, + {-42,-28}}, color={0,0,127})); + connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, + {-40,0},{-40,10},{-30,10}}, color={0,0,127})); + connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, + {-42,-20}}, color={255,0,255})); + annotation ( + Icon( + graphics={ + Polygon( + points={{60,0},{68,14},{52,14},{60,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line(points={{60,100},{60,-100}}, color={28,108,200}), + Line(points={{102,0},{62,0}}, color={28,108,200}), + Polygon( + points={{60,0},{68,-14},{52,-14},{60,0}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line(points={{62,0},{-98,0}}, color={0,0,0}), + Rectangle( + visible=use_inputFilter, + extent={{28,-10},{46,10}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Polygon( + points={{72,-8},{72,8},{60,0},{72,-8}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid)})); + end IdealValve; + end DELETE; annotation (Documentation(info="

This package contains base classes that are used to construct the classes in @@ -476,6 +581,107 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. package Examples "Example implementations of district-integrated DHW models" extends Modelica.Icons.ExamplesPackage; + model DomesticWaterFixture + "Thermostatic mixing valve and hot water fixture with representative annual load profile" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Medium model for water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal + "Design domestic hot water supply flow rate of system"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 + "Temperature setpoint of tempered doemstic hot water outlet"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = + Medium) "Domestic hot water supply port" annotation ( + Placement(transformation(extent={{-210,30},{-190,50}}), + iconTransformation(extent={{-210,30},{-190,50}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{72,10},{52,30}}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw(tableOnFile=true, + table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; + 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; + 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600* + 17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; + 3600*23,0.3; 3600*24,0.1], + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource( + "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{130,10},{110,30}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dcw(redeclare package Medium = + Medium) "Domestic cold water supply port" annotation ( + Placement(transformation(extent={{-210,-50},{-190,-30}}), + iconTransformation(extent={{-210,-50},{-190,-30}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet=TDhwSet, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{84,-50},{104,-30}}))); + Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{180,20},{220,60}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" + annotation (Placement(transformation(extent={{180,-60},{220,-20}}), + iconTransformation(extent={{180,-60},{220,-20}}))); + equation + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51,20},{0,20},{0, + -12},{-28,-12}}, color={0,0,127})); + connect(schDhw.y[1], gaiDhw.u) + annotation (Line(points={{109,20},{74,20}}, color={0,0,127})); + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{-90,0},{-70,0},{-70,-20},{-50,-20}}, + color={0,127,255})); + connect(tmv.port_hw, port_dhw) annotation (Line(points={{-110,6},{-150,6},{-150, + 40},{-200,40}}, color={0,127,255})); + connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, + -40},{-200,-40}}, color={0,127,255})); + connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{105,-40},{200,-40}}, color={0,0,127})); + connect(watCon.u, gaiDhw.y) annotation (Line(points={{82,-40},{0,-40},{ + 0,20},{51,20}}, color={0,0,127})); + annotation (Documentation(info=" +

+This is a single zone model based on the envelope of the BESTEST Case 600 +building, though it has some modifications. Supply and return air ports are +included for simulation with air-based HVAC systems. Heating and cooling +setpoints and internal loads are time-varying according to an assumed +occupancy schedule. +

+

+This zone model utilizes schedules and constructions from +the Schedules and Constructions packages. +

+", revisions=" +
    +
  • +June 21, 2017, by Michael Wetter:
    +Refactored implementation. +
  • +
  • +June 1, 2017, by David Blum:
    +First implementation. +
  • +
+"),Diagram(coordinateSystem(extent={{-200,-200},{200,200}})), + Icon(coordinateSystem(extent={{-200,-200},{200,200}}))); + end DomesticWaterFixture; + model DistrictHeatExchangeDHWAuxHeat "Example implementation of direct district heat exchange and auxiliary line heater for DHW" extends Modelica.Icons.Example; @@ -492,29 +698,31 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; + parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + nPorts=3) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) "Gain for multiplying domestic hot water schedule" annotation (Placement(transformation(extent={{64,24},{52,36}}))); BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, redeclare package Medium = Medium, - TSetHw(displayUnit = "degC") = TSetHw, - mHw_flow_nominal = mHw_flow_nominal, - mDH_flow_nominal = mDH_flow_nominal, - haveER=haveER) + havePEle=havePEle, + TSetHw(displayUnit="degC") = TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal) "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); Buildings.Fluid.Sources.MassFlowSource_T sinDhw( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{30,-10},{10,10}}))); + annotation (Placement(transformation(extent={{34,-10},{14,10}}))); BaseClasses.DomesticWaterMixer tmv( redeclare package Medium = Medium, TSet(displayUnit = "degC") = TSetTw, @@ -523,67 +731,70 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. k=k, Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); Modelica.Blocks.Sources.Sine sine(f=0.001, offset=1) annotation (Placement(transformation(extent={{100,20},{80,40}}))); Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == - true - "Thermal energy added to water with electric resistance" - annotation (Placement(transformation(extent={{96,70},{116,90}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{96,50},{116,70}}))); + annotation (Placement(transformation(extent={{100,50},{120,70}}))); Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{96,-40},{116,-20}}), - iconTransformation(extent={{76,-60},{116,-20}}))); + annotation (Placement(transformation(extent={{100,-40},{120,-20}}), + iconTransformation(extent={{80,-60},{120,-20}}))); Fluid.Sources.Boundary_pT souDHw( redeclare package Medium = Medium, T(displayUnit = "degC") = TDHw, nPorts=1) "Source of district hot water" annotation (Placement( transformation( extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-54,90}))); + rotation=90, + origin={-20,-50}))); Fluid.Sources.MassFlowSource_T sinDHw( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Sink for district heating water" - annotation (Placement(transformation(extent={{-82,22},{-62,42}}))); - Modelica.Blocks.Sources.Constant const(k=-1) annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={-74,-50}))); + Modelica.Blocks.Sources.Constant const(k=-1) + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, rotation=-90, - origin={-90,90}))); + origin={-90,-90}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); equation connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{0,0},{10,0}}, color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51.4,30},{40,30}, - {40,8},{32,8}}, color={0,0,127})); + annotation (Line(points={{0,0},{14,0}}, color={0,127,255})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51.4,30},{44,30}, + {44,8},{36,8}}, color={0,0,127})); connect(sine.y, gaiDhw.u) annotation (Line(points={{79,30},{65.2,30}}, color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{40,-30}, - {40,8},{32,8}}, color={0,0,127})); - connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-40,10},{-30, - 10},{-30,6},{-20,6}}, color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-80,2}, - {-80,6},{-70,6},{-70,10},{-60,10}}, color={0,127,255})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,-2},{-80,-6}, - {-70,-6},{-70,-10},{-30,-10},{-30,-6},{-20,-6}}, color={0,127,255})); - connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-39.4,14}, - {-20,14},{-20,80},{106,80}}, color={0,0,127})); + connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{44,-30}, + {44,8},{36,8}}, color={0,0,127})); + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,30},{-30,30}, + {-30,6},{-20,6}}, color={0,127,255})); connect(tmv.TTw, TTw) - annotation (Line(points={{1,8},{10,8},{10,60},{106,60}}, color={0,0,127})); + annotation (Line(points={{1,-8},{10,-8},{10,60},{110,60}}, + color={0,0,127})); connect(watCon.y, mDhw) - annotation (Line(points={{81,-30},{106,-30}}, color={0,0,127})); - connect(souDHw.ports[1], disHXAuxHea.port_dhs) - annotation (Line(points={{-54,80},{-54,20}}, color={0,127,255})); - connect(sinDHw.ports[1], disHXAuxHea.port_dhr) - annotation (Line(points={{-62,32},{-58,32},{-58,20}}, color={0,127,255})); + annotation (Line(points={{81,-30},{110,-30}}, color={0,0,127})); connect(const.y, sinDHw.m_flow_in) - annotation (Line(points={{-90,79},{-90,40},{-84,40}}, color={0,0,127})); + annotation (Line(points={{-90,-79},{-90,-76},{-82,-76},{-82,-62}}, + color={0,0,127})); + connect(conTSetHw.y, disHXAuxHea.TSetHw) + annotation (Line(points={{-79,0},{-71,0}}, color={0,0,127})); + connect(disHXAuxHea.port_a2, souDHw.ports[1]) annotation (Line(points={{-50,-6}, + {-40,-6},{-40,-34},{-20,-34},{-20,-40}}, color={0,127,255})); + connect(disHXAuxHea.port_b1, tmv.port_hw) annotation (Line(points={{-50,6},{-36, + 6},{-36,-6},{-20,-6}}, color={0,127,255})); + connect(disHXAuxHea.port_b2, sinDHw.ports[1]) + annotation (Line(points={{-70,-6},{-74,-6},{-74,-40}}, color={0,127,255})); + connect(disHXAuxHea.port_a1, souDcw.ports[3]) annotation (Line(points={{-70,6}, + {-76,6},{-76,31.3333},{-80,31.3333}}, color={0,127,255})); annotation (experiment(StopTime=3600, Interval=1)); end DistrictHeatExchangeDHWAuxHeat; @@ -613,11 +824,12 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) "Gain for multiplying domestic hot water schedule" annotation (Placement(transformation(extent={{82,74},{70,86}}))); - BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( + BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD + disHXAuxHea( redeclare package Medium = Medium, - TSetHw(displayUnit = "degC") = TSetHw, - mHw_flow_nominal = mHw_flow_nominal, - mDH_flow_nominal = mDH_flow_nominal, + TSetHw(displayUnit="degC") = TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal, haveER=haveER) "Direct district heat exchanger with auxiliary electric heating" annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); @@ -773,9 +985,9 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, {-10,60},{-10,56},{0,56}}, color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,52}, + connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, {-60,60},{-40,60}}, color={0,127,255})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,48}, + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, 64},{0,64},{0,120},{130,120}}, @@ -801,10 +1013,10 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. {-20,150},{-20,144}}, color={0,0,127})); connect(senTChiWatSup.port_b, pumChiWat.port_a) annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); - connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={ - {120,-40},{140,-40},{140,-88},{141,-88}}, color={0,127,255})); + connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, + {140,-40},{140,-89},{141,-89}}, color={0,127,255})); connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( - points={{141,-92},{140,-92},{140,-140},{-140,-140},{-140,0},{-118, + points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, 0}}, color={0,127,255})); connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ @@ -823,10 +1035,10 @@ Buildings.Experimental.DHC.Loads.Heating.DHW. {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); - connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points= - {{-2,-80},{40,-80},{40,-70}}, color={0,127,255})); - connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points= - {{2,-80},{-40,-80},{-40,-70}}, color={0,127,255})); + connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, + {40,-80},{40,-70}}, color={0,127,255})); + connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, + {-40,-80},{-40,-70}}, color={0,127,255})); connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, -110},{-4,-110},{-4,-102}}, color={0,0,127})); connect(PEleAuxHea, PEleAuxHea) From 235fe7066949aa0049b48bac9717ac38f97f9bd8 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Fri, 7 Oct 2022 17:23:09 -0700 Subject: [PATCH 018/183] partial building with flow distribution using old base class --- .../DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo b/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo index d978fd4abf5..c81622a27c9 100644 --- a/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo +++ b/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo @@ -232,7 +232,8 @@ partial model PartialBuildingWFloDis m_flow_nominal=mHw_flow_nominal*{1,-1,1}, dp_nominal=0*{1,1,1}) annotation (Placement(transformation(extent={{200,-70},{220,-50}}))); - Heating.DHW.BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( + Heating.DHW.BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD + genDHW( TSetHw=TSetHw, mHw_flow_nominal=mHw_flow_nominal, mDH_flow_nominal=mDH_flow_nominal, From 44fd10dcdae2d33b35d51d6dac458bf81081a4e2 Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 15:41:56 -0700 Subject: [PATCH 019/183] unchecked "save as one file" in Heating package --- Buildings/Experimental/DHC/Loads/Heating.mo | 1071 ----------------- ...tHeatExchangerWaterHeaterWithAuxHeatOLD.mo | 64 + .../DELETE/HeatPumpWaterHeaterWithTankOLD.mo | 81 ++ .../DHW/BaseClasses/DELETE/IdealValve.mo | 109 ++ .../DELETE/PartialDHWGeneration.mo | 28 + .../Heating/DHW/BaseClasses/DELETE/package.mo | 6 + .../DHW/BaseClasses/DELETE/package.order | 4 + ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 67 ++ .../DHW/BaseClasses/DomesticWaterMixer.mo | 106 ++ .../HeatPumpWaterHeaterWithTank.mo | 88 ++ .../DHW/BaseClasses/PartialFourPortDHW.mo | 18 + .../Loads/Heating/DHW/BaseClasses/package.mo | 16 + .../Heating/DHW/BaseClasses/package.order | 5 + .../DHW/Examples/DistrictETSIntegration.mo | 250 ++++ .../DistrictHeatExchangeDHWAuxHeat.mo | 116 ++ .../DHW/Examples/DomesticWaterFixture.mo | 102 ++ .../DHC/Loads/Heating/DHW/Examples/package.mo | 16 + .../Loads/Heating/DHW/Examples/package.order | 3 + .../DHC/Loads/Heating/DHW/package.mo | 10 + .../DHC/Loads/Heating/DHW/package.order | 2 + .../Experimental/DHC/Loads/Heating/package.mo | 10 + .../DHC/Loads/Heating/package.order | 1 + 22 files changed, 1102 insertions(+), 1071 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/Heating.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/package.order create mode 100644 Buildings/Experimental/DHC/Loads/Heating/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/package.order diff --git a/Buildings/Experimental/DHC/Loads/Heating.mo b/Buildings/Experimental/DHC/Loads/Heating.mo deleted file mode 100644 index c23f91d37d7..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating.mo +++ /dev/null @@ -1,1071 +0,0 @@ -within Buildings.Experimental.DHC.Loads; -package Heating "Package of models for district heating loads" - extends Modelica.Icons.Package; - package DHW "Package of models for DHW loads served by district heating" - extends Modelica.Icons.Package; - package BaseClasses - "Package with base classes that are used by multiple models" - extends Modelica.Icons.BasesPackage; - - model DomesticWaterMixer "A model for a domestic water mixer" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium - = Medium) "Port for tempered water outlet" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Buildings.Controls.Continuous.LimPID conPID( - controllerType=Modelica.Blocks.Types.SimpleController.PI, - k=k, - Ti=Ti, - reset=Buildings.Types.Reset.Parameter) - annotation (Placement(transformation(extent={{40,40},{20,60}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package - Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" - annotation (Placement(transformation(extent={{80,40},{60,60}}))); - Fluid.Actuators.Valves.ThreeWayLinear - ideValHea(redeclare package Medium = Medium, final m_flow_nominal= - mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) - "Ideal valve" annotation (Placement(transformation( - extent={{10,10},{-10,-10}}, - rotation=180, - origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium - = Medium) "Port for hot water supply" - annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium - = Medium) "Port for domestic cold water supply" - annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package - Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package - Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" - annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium - = Medium) "Mass flow rate of domestic hot water" - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Blocks.Logical.GreaterThreshold greaterThreshold - annotation (Placement(transformation(extent={{54,22},{44,32}}))); - equation - connect(conTSetCon.y, conPID.u_s) - annotation (Line(points={{59,50},{42,50}}, color={0,0,127})); - connect(senTemTw.T, conPID.u_m) - annotation (Line(points={{30,11},{30,38}}, color={0,0,127})); - connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, - {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, ideValHea.y) annotation (Line(points={{19,50},{8.88178e-16,50}, - {8.88178e-16,12}},color={0,0,127})); - connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,20},{90,20},{90, - 80},{110,80}}, color={0,0,127})); - connect(ideValHea.port_1, senTemHw.port_b) - annotation (Line(points={{-10,1.77636e-15},{-10,0},{-20,0}}, - color={0,127,255})); - connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-54,0},{-54, - 60},{-100,60}}, color={0,127,255})); - connect(ideValHea.port_3, senTemCw.port_b) - annotation (Line(points={{-1.77636e-15,-10},{-1.77636e-15,-60},{-20,-60}}, - color={0,127,255})); - connect(senTemCw.port_a, port_cw) - annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); - connect(senTemTw.port_b, senFloDhw.port_a) - annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); - connect(senFloDhw.port_b, port_tw) - annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(greaterThreshold.u, senFloDhw.m_flow) - annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); - connect(greaterThreshold.y, conPID.trigger) - annotation (Line(points={{43.5,27},{38,27},{38,38}}, color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics - ={ Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-86,72},{-64,50}}, - textColor={238,46,47}, - textString="hot", - textStyle={TextStyle.Bold}), - Text( - extent={{-86,-44},{-52,-74}}, - textColor={28,108,200}, - textStyle={TextStyle.Bold}, - textString="cold"), - Text( - extent={{10,36},{86,-34}}, - textColor={102,44,145}, - textStyle={TextStyle.Bold}, - textString="tempered")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end DomesticWaterMixer; - - partial model PartialFourPortDHW - "A partial model for domestic water heating" - extends Buildings.Fluid.Interfaces.PartialFourPort; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; - - Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput TSetHw - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end PartialFourPortDHW; - - model DirectHeatExchangerWaterHeaterWithAuxHeat - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - - parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; - - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if havePEle == true - "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,16},{30,-4}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare - package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-4},{80,16}}))); - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dp1_nominal=0, - dp2_nominal=0, - eps=0.85) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium - = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); - protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, - final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if havePEle == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,44},{30,24}}))); - - equation - connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); - connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-20,6},{10,6}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{-4,6}, - {-4,34},{10,34}}, color={0,127,255})); - connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,34},{ - 44,34},{44,6},{60,6}}, color={0,127,255})); - connect(senTemAuxHeaOut.port_b, port_b1) annotation (Line(points={{80,6},{90,6}, - {90,60},{100,60}}, color={0,127,255})); - connect(port_a1, hex.port_a1) - annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); - connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,-2},{40,-2},{40,-20}, - {94,-20},{94,0},{110,0}}, color={0,0,127})); - connect(TSetHw, heaDhw.TSet) annotation (Line(points={{-110,0},{-90,0},{-90,-20}, - {0,-20},{0,-2},{8,-2}}, color={0,0,127})); - connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, - -60}}, color={0,127,255})); - connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, - -6}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics - ={ Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end DirectHeatExchangerWaterHeaterWithAuxHeat; - - model HeatPumpWaterHeaterWithTank - "A model for domestic water heating served by heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - - parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare - package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - QCon_flow_nominal=QCon_flow_nominal, - dp1_nominal=0, - dp2_nominal=0) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Fluid.Storage.StratifiedEnhancedInternalHex tan( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - VTan=VTan, - hTan=hTan, - dIns=dIns, - kIns=kIns, - nSeg=5, - redeclare package MediumHex = Medium, - CHex=40, - Q_flow_nominal=0.278*4200*20, - hHex_a=0.995, - hHex_b=0.1, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, - allowFlowReversalHex=false, - mHex_flow_nominal=mHex_flow_nominal, - TTan_nominal=293.15, - THex_nominal=323.15, - dpHex_nominal=dpHex_nominal) - "Hot water tank with heat exchanger configured as steady state" - annotation (Placement(transformation(extent={{-40,50},{-60,70}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium - = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={50,6}))); - equation - connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-40,60},{-10,60}}, - color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, - {-40,6},{-10,6}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40, - 56.2},{20,56.2},{20,56},{80,56},{80,6},{60,6}}, - color={0,127,255})); - connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0}, - {-60,14},{-12,14},{-12,9}}, color={0,0,127})); - connect(tan.port_b, port_a1) - annotation (Line(points={{-60,60},{-100,60}}, color={0,127,255})); - connect(senTemTankOut.port_b, port_b1) - annotation (Line(points={{10,60},{100,60}}, color={0,127,255})); - connect(port_a2, heaPum.port_a2) annotation (Line(points={{100,-60},{20, - -60},{20,-6},{10,-6}}, color={0,127,255})); - connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{ - -20,-60},{-20,-6},{-10,-6}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20}, - {80,-20},{80,0},{110,0}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics - ={ Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end HeatPumpWaterHeaterWithTank; - - package DELETE "These models are outdated" - partial model PartialDHWGeneration - "A partial model for domestic water heating" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package - Medium = Medium) "Hot water supply port" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package - Medium = Medium) "Port for domestic cold water inlet" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package - Medium = Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package - Medium = Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); - Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{96,30},{116,50}}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end PartialDHWGeneration; - - model DirectHeatExchangerWaterHeaterWithAuxHeatOLD - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; - - parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if haveER == true - "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,-10},{30,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare - package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dp1_nominal=0, - dp2_nominal=0, - eps=0.85) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium - = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); - protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, - final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if haveER == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); - - equation - connect(senTemAuxHeaOut.port_b, port_hw) - annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); - connect(hex.port_a1, port_cw) - annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); - connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, - 12},{-50,12}}, - color={0,127,255})); - connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, - 12},{-80,60},{-80,60},{-80,100}}, - color={0,127,255})); - connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); - connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, - {0,-28},{10,-28}}, color={0,127,255})); - connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, - {40,-28},{40,0},{60,0}}, color={0,127,255})); - connect(conTSetHw.y, heaDhw.TSet) - annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); - connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, - 40},{106,40}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end DirectHeatExchangerWaterHeaterWithAuxHeatOLD; - - model HeatPumpWaterHeaterWithTankOLD - "A model for domestic water heating served by heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; - - parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare - package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - QCon_flow_nominal=QCon_flow_nominal, - dp1_nominal=0, - dp2_nominal=0) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); - Fluid.Storage.StratifiedEnhancedInternalHex tan( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - VTan=VTan, - hTan=hTan, - dIns=dIns, - kIns=kIns, - nSeg=5, - redeclare package MediumHex = Medium, - CHex=40, - Q_flow_nominal=0.278*4200*20, - hHex_a=0.995, - hHex_b=0.1, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, - allowFlowReversalHex=false, - mHex_flow_nominal=mHex_flow_nominal, - TTan_nominal=293.15, - THex_nominal=323.15, - dpHex_nominal=dpHex_nominal) - "Hot water tank with heat exchanger configured as steady state" - annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium - = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-28,20}))); - equation - connect(senTemTankOut.port_b, port_hw) - annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); - connect(port_dhs, heaPum.port_a2) - annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); - connect(heaPum.port_b2, port_dhr) - annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); - connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, - 40}}, color={0,0,127})); - connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, - {-80,39},{-72,39}}, color={0,0,127})); - connect(port_cw, tan.port_b) - annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, - -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, - {-28,-3.8},{-28,10}}, color={0,127,255})); - connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); - end HeatPumpWaterHeaterWithTankOLD; - - model IdealValve "Ideal three-way valve" - extends Modelica.Blocks.Icons.Block; - replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" - annotation (choicesAllMatching = true); - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Design chilled water supply flow"; - parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; - Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium - = Medium) annotation (Placement(transformation(extent={{50,88}, - {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium - = Medium) annotation (Placement(transformation(extent={{50,-108}, - {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium - = Medium) annotation (Placement(transformation(extent={{90,-10}, - {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( - transformation(extent={{-120,-10},{-100,10}}), - iconTransformation(extent={{-120,-10},{-100,10}}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package - Medium = - Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( - Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={0,-40}))); - Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( - redeclare package Medium = Medium, - control_m_flow=true, - control_dp=false, - m_flow_small=m_flow_nominal*1E-5, - show_V_flow=false, - allowFlowReversal=false) "Prescribed mass flow rate for the bypass" - annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=180, - origin={50,0}))); - Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" - annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); - Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" - annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); - Modelica.Blocks.Math.Feedback feedback - annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); - Modelica.Blocks.Logical.Switch fraSwi - annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); - Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" - annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); - Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) - annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); - equation - connect(feedback.u1, one.y) - annotation (Line(points={{-58,22},{-69,22}}, - color={0,0,127})); - connect(y, feedback.u2) - annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); - connect(preMasFlo.port_a, port_3) - annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, - 0}}, color={0,127,255})); - connect(feedback.y, pro.u1) - annotation (Line(points={{-41,22},{-30,22}}, - color={0,0,127})); - connect(pro.y, preMasFlo.m_flow_in) - annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); - connect(port_1, senMasFlo.port_a) - annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, - -30}}, color={0,127,255})); - connect(senMasFlo.port_b, port_2) - annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, - -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); - connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, - 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, - color={0,127,255})); - connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, - {-60,-12},{-42,-12}}, color={0,0,127})); - connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, - {-42,-28}}, color={0,0,127})); - connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, - {-40,0},{-40,10},{-30,10}}, color={0,0,127})); - connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, - {-42,-20}}, color={255,0,255})); - annotation ( - Icon( - graphics={ - Polygon( - points={{60,0},{68,14},{52,14},{60,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line(points={{60,100},{60,-100}}, color={28,108,200}), - Line(points={{102,0},{62,0}}, color={28,108,200}), - Polygon( - points={{60,0},{68,-14},{52,-14},{60,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line(points={{62,0},{-98,0}}, color={0,0,0}), - Rectangle( - visible=use_inputFilter, - extent={{28,-10},{46,10}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Polygon( - points={{72,-8},{72,8},{60,0},{72,-8}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid)})); - end IdealValve; - end DELETE; - annotation (Documentation(info=" -

-This package contains base classes that are used to construct the classes in - -Buildings.Experimental.DHC.Loads.Heating.DHW. -

-")); - end BaseClasses; - - package Examples "Example implementations of district-integrated DHW models" - extends Modelica.Icons.ExamplesPackage; - - model DomesticWaterFixture - "Thermostatic mixing valve and hot water fixture with representative annual load profile" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Medium model for water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal - "Design domestic hot water supply flow rate of system"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 - "Temperature setpoint of tempered doemstic hot water outlet"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = - Medium) "Domestic hot water supply port" annotation ( - Placement(transformation(extent={{-210,30},{-190,50}}), - iconTransformation(extent={{-210,30},{-190,50}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{72,10},{52,30}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw(tableOnFile=true, - table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; - 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; - 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600* - 17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; - 3600*23,0.3; 3600*24,0.1], - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource( - "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{130,10},{110,30}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dcw(redeclare package Medium = - Medium) "Domestic cold water supply port" annotation ( - Placement(transformation(extent={{-210,-50},{-190,-30}}), - iconTransformation(extent={{-210,-50},{-190,-30}}))); - BaseClasses.DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet=TDhwSet, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{84,-50},{104,-30}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{180,20},{220,60}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{180,-60},{220,-20}}), - iconTransformation(extent={{180,-60},{220,-20}}))); - equation - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51,20},{0,20},{0, - -12},{-28,-12}}, color={0,0,127})); - connect(schDhw.y[1], gaiDhw.u) - annotation (Line(points={{109,20},{74,20}}, color={0,0,127})); - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{-90,0},{-70,0},{-70,-20},{-50,-20}}, - color={0,127,255})); - connect(tmv.port_hw, port_dhw) annotation (Line(points={{-110,6},{-150,6},{-150, - 40},{-200,40}}, color={0,127,255})); - connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, - -40},{-200,-40}}, color={0,127,255})); - connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{105,-40},{200,-40}}, color={0,0,127})); - connect(watCon.u, gaiDhw.y) annotation (Line(points={{82,-40},{0,-40},{ - 0,20},{51,20}}, color={0,0,127})); - annotation (Documentation(info=" -

-This is a single zone model based on the envelope of the BESTEST Case 600 -building, though it has some modifications. Supply and return air ports are -included for simulation with air-based HVAC systems. Heating and cooling -setpoints and internal loads are time-varying according to an assumed -occupancy schedule. -

-

-This zone model utilizes schedules and constructions from -the Schedules and Constructions packages. -

-", revisions=" -
    -
  • -June 21, 2017, by Michael Wetter:
    -Refactored implementation. -
  • -
  • -June 1, 2017, by David Blum:
    -First implementation. -
  • -
-"),Diagram(coordinateSystem(extent={{-200,-200},{200,200}})), - Icon(coordinateSystem(extent={{-200,-200},{200,200}}))); - end DomesticWaterFixture; - - model DistrictHeatExchangeDHWAuxHeat - "Example implementation of direct district heat exchange and auxiliary line heater for DHW" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=3) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{64,24},{52,36}}))); - BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - redeclare package Medium = Medium, - havePEle=havePEle, - TSetHw(displayUnit="degC") = TSetHw, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal) - "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{34,-10},{14,10}}))); - BaseClasses.DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit = "degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) - "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, - offset=1) - annotation (Placement(transformation(extent={{100,20},{80,40}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-40},{120,-20}}), - iconTransformation(extent={{80,-60},{120,-20}}))); - Fluid.Sources.Boundary_pT souDHw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDHw, - nPorts=1) "Source of district hot water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-20,-50}))); - Fluid.Sources.MassFlowSource_T sinDHw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for district heating water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=90, - origin={-74,-50}))); - Modelica.Blocks.Sources.Constant const(k=-1) - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={-90,-90}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - equation - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{0,0},{14,0}}, color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51.4,30},{44,30}, - {44,8},{36,8}}, color={0,0,127})); - connect(sine.y, gaiDhw.u) - annotation (Line(points={{79,30},{65.2,30}}, - color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{44,-30}, - {44,8},{36,8}}, color={0,0,127})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,30},{-30,30}, - {-30,6},{-20,6}}, color={0,127,255})); - connect(tmv.TTw, TTw) - annotation (Line(points={{1,-8},{10,-8},{10,60},{110,60}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{81,-30},{110,-30}}, color={0,0,127})); - connect(const.y, sinDHw.m_flow_in) - annotation (Line(points={{-90,-79},{-90,-76},{-82,-76},{-82,-62}}, - color={0,0,127})); - connect(conTSetHw.y, disHXAuxHea.TSetHw) - annotation (Line(points={{-79,0},{-71,0}}, color={0,0,127})); - connect(disHXAuxHea.port_a2, souDHw.ports[1]) annotation (Line(points={{-50,-6}, - {-40,-6},{-40,-34},{-20,-34},{-20,-40}}, color={0,127,255})); - connect(disHXAuxHea.port_b1, tmv.port_hw) annotation (Line(points={{-50,6},{-36, - 6},{-36,-6},{-20,-6}}, color={0,127,255})); - connect(disHXAuxHea.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-70,-6},{-74,-6},{-74,-40}}, color={0,127,255})); - connect(disHXAuxHea.port_a1, souDcw.ports[3]) annotation (Line(points={{-70,6}, - {-76,6},{-76,31.3333},{-80,31.3333}}, color={0,127,255})); - annotation (experiment(StopTime=3600, Interval=1)); - end DistrictHeatExchangeDHWAuxHeat; - - model DistrictETSIntegration - "Example implementation of connecting district ETS to building DHW model" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{82,74},{70,86}}))); - BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD - disHXAuxHea( - redeclare package Medium = Medium, - TSetHw(displayUnit="degC") = TSetHw, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - haveER=haveER) - "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{48,38},{28,58}}))); - BaseClasses.DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit = "degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) - "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, - offset=1) - annotation (Placement(transformation(extent={{120,70},{100,90}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{80,38},{100,58}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == - true - "Thermal energy added to water with electric resistance" - annotation (Placement(transformation(extent={{120,110},{140,130}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{120,90},{140,110}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{120,38},{140,58}}), - iconTransformation(extent={{100,18},{140,58}}))); - Modelica.Blocks.Sources.Constant const(k=1) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=0, - origin={-60,150}))); - EnergyTransferStations.Combined.HeatPumpHeatExchanger ets( - nPorts_aHeaWat=1, - nPorts_aChiWat=1, - nPorts_bChiWat=1, - nPorts_bHeaWat=1) - annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare - final package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={-106,40}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare - final package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water return temperature" annotation (Placement(transformation( - extent={{10,10},{-10,-10}}, - rotation=0, - origin={-108,0}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare - package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={80,-40}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( - redeclare package Medium = Medium, - final m_flow_nominal=mHeaWat_flow_nominal, - dp_nominal=100E3) "Heating water distribution pump" - annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare - package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water supply temperature" annotation (Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={-34,98}))); - Fluid.MixingVolumes.MixingVolume volChiWat( - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - T_start=7 + 273.15, - final prescribedHeatFlowRate=true, - redeclare package Medium = Medium, - V=10, - final mSenFac=1, - final m_flow_nominal=mChiWat_flow_nominal, - nPorts=2) "Volume for chilled water distribution circuit" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={151,-90}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( - redeclare package Medium = Medium, - final m_flow_nominal=mChiWat_flow_nominal, - dp_nominal=100E3) "Chilled water distribution pump" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) - "District heat pump electricity use" - annotation (Placement(transformation(extent={{100,-2},{120,18}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= - 0.01, final h=0.005) - "Enable heating" - annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= - 0.01, final h=0.005) - "Enable cooling" - annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + - 273.15, y(final unit="K", displayUnit="degC")) - "Heating water supply temperature set point" - annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); - Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + - 273.15, y(final unit="K", displayUnit="degC")) - "Chilled water supply temperature set point" - annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare - final package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-60}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package - Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={40,-60}))); - Fluid.Sources.Boundary_pT disWat( - redeclare package Medium = Medium, - use_T_in=true, - nPorts=2) "District water boundary conditions" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={0,-90}))); - Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( - table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, - 16; 11,13; 12,11], - timeScale=2592000, - tableName="tab1", - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, - offset={273.15}, - columns={2}, - smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) - "District water supply temperature" - annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); - equation - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, - color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, - {60,80},{60,56},{50,56}}, - color={0,0,127})); - connect(sine.y, gaiDhw.u) - annotation (Line(points={{99,80},{83.2,80}}, - color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ - 60,48},{60,56},{50,56}}, - color={0,0,127})); - connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, - {-10,60},{-10,56},{0,56}}, - color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, - {-60,60},{-40,60}}, color={0,127,255})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, - {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); - connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, - 64},{0,64},{0,120},{130,120}}, - color={0,0,127})); - connect(tmv.TTw, TTw) - annotation (Line(points={{21,58},{28,58},{28,100},{130,100}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); - connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( - points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); - connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( - points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); - connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( - points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); - connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= - {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= - {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) - annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); - connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, - {-20,150},{-20,144}}, color={0,0,127})); - connect(senTChiWatSup.port_b, pumChiWat.port_a) - annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); - connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, - {140,-40},{140,-89},{141,-89}}, color={0,127,255})); - connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( - points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, - 0}}, color={0,127,255})); - connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( - points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ - 0,127,255})); - connect(ets.PHea, EDisHP.u) - annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); - connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, - {-74,10},{-34,10}}, color={255,0,255})); - connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, - {-70,6},{-34,6}}, color={255,0,255})); - connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ - -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); - connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ - -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); - connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= - {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); - connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= - {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); - connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, - {40,-80},{40,-70}}, color={0,127,255})); - connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, - {-40,-80},{-40,-70}}, color={0,127,255})); - connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, - -110},{-4,-110},{-4,-102}}, color={0,0,127})); - connect(PEleAuxHea, PEleAuxHea) - annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); - annotation (experiment(StopTime=3600, Interval=1), - Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), - Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); - end DistrictETSIntegration; - annotation ( - preferredView="info", - Documentation( - info=" -

-This package contains a collection of residential domestic hot water models -to demonstrate how these models might be used in district heating systems. -

-")); - end Examples; - annotation (preferredView="info", Documentation(info=" -

-This package contains models for building domestic hot water loads served by a district heating network. -

-")); - end DHW; -annotation (preferredView="info", Documentation(info=" -

-This package contains models for building heating loads served by a district network. -

-")); -end Heating; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo new file mode 100644 index 00000000000..68dc226903b --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo @@ -0,0 +1,64 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; +model DirectHeatExchangerWaterHeaterWithAuxHeatOLD + "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; + + parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; + + Buildings.Fluid.HeatExchangers.Heater_T heaDhw( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + dp_nominal=0) if haveER == true + "Supplemental electric resistance domestic hot water heater" + annotation (Placement(transformation(extent={{10,-10},{30,10}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package + Medium = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + dp1_nominal=0, + dp2_nominal=0, + eps=0.85) "Domestic hot water heater" + annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); + Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); +protected + Fluid.FixedResistances.LosslessPipe pip( + redeclare final package Medium = Medium, + final m_flow_nominal=mHw_flow_nominal, + final show_T=false) if haveER == false "Pipe without electric resistance" + annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); + +equation + connect(senTemAuxHeaOut.port_b, port_hw) + annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); + connect(hex.port_a1, port_cw) + annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); + connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, + 12},{-50,12}}, + color={0,127,255})); + connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, + 12},{-80,60},{-80,60},{-80,100}}, + color={0,127,255})); + connect(senTemHXOut.port_a, hex.port_b1) + annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); + connect(senTemHXOut.port_b, heaDhw.port_a) + annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); + connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, + {0,-28},{10,-28}}, color={0,127,255})); + connect(heaDhw.port_b, senTemAuxHeaOut.port_a) + annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); + connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, + {40,-28},{40,0},{60,0}}, color={0,127,255})); + connect(conTSetHw.y, heaDhw.TSet) + annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); + connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, + 40},{106,40}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end DirectHeatExchangerWaterHeaterWithAuxHeatOLD; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo new file mode 100644 index 00000000000..727f2b6ed2f --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo @@ -0,0 +1,81 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; +model HeatPumpWaterHeaterWithTankOLD + "A model for domestic water heating served by heat pump water heater and local storage tank" + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; + + parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package + Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + QCon_flow_nominal=QCon_flow_nominal, + dp1_nominal=0, + dp2_nominal=0) + "Domestic hot water heater" + annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); + Fluid.Storage.StratifiedEnhancedInternalHex tan( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + VTan=VTan, + hTan=hTan, + dIns=dIns, + kIns=kIns, + nSeg=5, + redeclare package MediumHex = Medium, + CHex=40, + Q_flow_nominal=0.278*4200*20, + hHex_a=0.995, + hHex_b=0.1, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal=false, + allowFlowReversalHex=false, + mHex_flow_nominal=mHex_flow_nominal, + TTan_nominal=293.15, + THex_nominal=323.15, + dpHex_nominal=dpHex_nominal) + "Hot water tank with heat exchanger configured as steady state" + annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-28,20}))); +equation + connect(senTemTankOut.port_b, port_hw) + annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); + connect(port_dhs, heaPum.port_a2) + annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); + connect(heaPum.port_b2, port_dhr) + annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); + connect(tan.port_a, senTemTankOut.port_a) + annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); + connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, + 40}}, color={0,0,127})); + connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, + {-80,39},{-72,39}}, color={0,0,127})); + connect(port_cw, tan.port_b) + annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); + connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, + -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); + connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, + {-28,-3.8},{-28,10}}, color={0,127,255})); + connect(heaPum.port_b1, senTemHPOut.port_a) + annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end HeatPumpWaterHeaterWithTankOLD; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo new file mode 100644 index 00000000000..7b1f51acfcc --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo @@ -0,0 +1,109 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; +model IdealValve "Ideal three-way valve" + extends Modelica.Blocks.Icons.Block; + replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" + annotation (choicesAllMatching = true); + parameter Modelica.Units.SI.MassFlowRate m_flow_nominal + "Design chilled water supply flow"; + parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; + Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium = + Medium) annotation (Placement(transformation(extent={{50,88}, + {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium = + Medium) annotation (Placement(transformation(extent={{50,-108}, + {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium = + Medium) annotation (Placement(transformation(extent={{90,-10}, + {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); + Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( + transformation(extent={{-120,-10},{-100,10}}), + iconTransformation(extent={{-120,-10},{-100,10}}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package + Medium = + Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( + Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={0,-40}))); + Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( + redeclare package Medium = Medium, + control_m_flow=true, + control_dp=false, + m_flow_small=m_flow_nominal*1E-5, + show_V_flow=false, + allowFlowReversal=false) "Prescribed mass flow rate for the bypass" + annotation (Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=180, + origin={50,0}))); + Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" + annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); + Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" + annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); + Modelica.Blocks.Math.Feedback feedback + annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); + Modelica.Blocks.Logical.Switch fraSwi + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" + annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); + Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); +equation + connect(feedback.u1, one.y) + annotation (Line(points={{-58,22},{-69,22}}, + color={0,0,127})); + connect(y, feedback.u2) + annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); + connect(preMasFlo.port_a, port_3) + annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, + 0}}, color={0,127,255})); + connect(feedback.y, pro.u1) + annotation (Line(points={{-41,22},{-30,22}}, + color={0,0,127})); + connect(pro.y, preMasFlo.m_flow_in) + annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); + connect(port_1, senMasFlo.port_a) + annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, + -30}}, color={0,127,255})); + connect(senMasFlo.port_b, port_2) + annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, + -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); + connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, + 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, + color={0,127,255})); + connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, + {-60,-12},{-42,-12}}, color={0,0,127})); + connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, + {-42,-28}}, color={0,0,127})); + connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, + {-40,0},{-40,10},{-30,10}}, color={0,0,127})); + connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, + {-42,-20}}, color={255,0,255})); + annotation ( + Icon( + graphics={ + Polygon( + points={{60,0},{68,14},{52,14},{60,0}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line(points={{60,100},{60,-100}}, color={28,108,200}), + Line(points={{102,0},{62,0}}, color={28,108,200}), + Polygon( + points={{60,0},{68,-14},{52,-14},{60,0}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line(points={{62,0},{-98,0}}, color={0,0,0}), + Rectangle( + visible=use_inputFilter, + extent={{28,-10},{46,10}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Polygon( + points={{72,-8},{72,8},{60,0},{72,-8}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid)})); +end IdealValve; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo new file mode 100644 index 00000000000..77c044e42be --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo @@ -0,0 +1,28 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; +partial model PartialDHWGeneration + "A partial model for domestic water heating" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + + Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package + Medium = Medium) "Hot water supply port" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package + Medium = Medium) "Port for domestic cold water inlet" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package + Medium = Medium) "Port for district heating supply" + annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package + Medium = Medium) "Port for district heating return" + annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); + Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{96,30},{116,50}}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end PartialDHWGeneration; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo new file mode 100644 index 00000000000..13bf1a12237 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo @@ -0,0 +1,6 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +package DELETE "These models are outdated" + + + +end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order new file mode 100644 index 00000000000..688c9bc1853 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order @@ -0,0 +1,4 @@ +PartialDHWGeneration +DirectHeatExchangerWaterHeaterWithAuxHeatOLD +HeatPumpWaterHeaterWithTankOLD +IdealValve diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo new file mode 100644 index 00000000000..0a661eab2e2 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -0,0 +1,67 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +model DirectHeatExchangerWaterHeaterWithAuxHeat + "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; + + parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; + + Buildings.Fluid.HeatExchangers.Heater_T heaDhw( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + dp_nominal=0) if havePEle == true + "Supplemental electric resistance domestic hot water heater" + annotation (Placement(transformation(extent={{10,16},{30,-4}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package + Medium = Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{60,-4},{80,16}}))); + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + dp1_nominal=0, + dp2_nominal=0, + eps=0.85) "Domestic hot water heater" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); +protected + Fluid.FixedResistances.LosslessPipe pip( + redeclare final package Medium = Medium, + final m_flow_nominal=mHw_flow_nominal, + final show_T=false) if havePEle == false "Pipe without electric resistance" + annotation (Placement(transformation(extent={{10,44},{30,24}}))); + +equation + connect(senTemHXOut.port_a, hex.port_b1) + annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); + connect(senTemHXOut.port_b, heaDhw.port_a) + annotation (Line(points={{-20,6},{10,6}},color={0,127,255})); + connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{-4,6}, + {-4,34},{10,34}}, color={0,127,255})); + connect(heaDhw.port_b, senTemAuxHeaOut.port_a) + annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); + connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,34},{ + 44,34},{44,6},{60,6}}, color={0,127,255})); + connect(senTemAuxHeaOut.port_b, port_b1) annotation (Line(points={{80,6},{90,6}, + {90,60},{100,60}}, color={0,127,255})); + connect(port_a1, hex.port_a1) + annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); + connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,-2},{40,-2},{40,-20}, + {94,-20},{94,0},{110,0}}, color={0,0,127})); + connect(TSetHw, heaDhw.TSet) annotation (Line(points={{-110,0},{-90,0},{-90,-20}, + {0,-20},{0,-2},{8,-2}}, color={0,0,127})); + connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, + -60}}, color={0,127,255})); + connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, + -6}}, color={0,127,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end DirectHeatExchangerWaterHeaterWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo new file mode 100644 index 00000000000..65e213add2d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo @@ -0,0 +1,106 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +model DomesticWaterMixer "A model for a domestic water mixer" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = + Medium) "Port for tempered water outlet" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Buildings.Controls.Continuous.LimPID conPID( + controllerType=Modelica.Blocks.Types.SimpleController.PI, + k=k, + Ti=Ti, + reset=Buildings.Types.Reset.Parameter) + annotation (Placement(transformation(extent={{40,40},{20,60}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package + Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" + annotation (Placement(transformation(extent={{80,40},{60,60}}))); + Fluid.Actuators.Valves.ThreeWayLinear + ideValHea(redeclare package Medium = Medium, final m_flow_nominal= + mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal) + "Ideal valve" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=180, + origin={0,0}))); + Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = + Medium) "Port for hot water supply" + annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = + Medium) "Port for domestic cold water supply" + annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); + Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package + Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package + Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = + Medium) "Mass flow rate of domestic hot water" + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Modelica.Blocks.Logical.GreaterThreshold greaterThreshold + annotation (Placement(transformation(extent={{54,22},{44,32}}))); +equation + connect(conTSetCon.y, conPID.u_s) + annotation (Line(points={{59,50},{42,50}}, color={0,0,127})); + connect(senTemTw.T, conPID.u_m) + annotation (Line(points={{30,11},{30,38}}, color={0,0,127})); + connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, + {20,-6.66134e-16},{20,0}}, color={0,127,255})); + connect(conPID.y, ideValHea.y) annotation (Line(points={{19,50},{8.88178e-16,50}, + {8.88178e-16,12}},color={0,0,127})); + connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,20},{90,20},{90, + 80},{110,80}}, color={0,0,127})); + connect(ideValHea.port_1, senTemHw.port_b) + annotation (Line(points={{-10,1.77636e-15},{-10,0},{-20,0}}, + color={0,127,255})); + connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-54,0},{-54, + 60},{-100,60}}, color={0,127,255})); + connect(ideValHea.port_3, senTemCw.port_b) + annotation (Line(points={{-1.77636e-15,-10},{-1.77636e-15,-60},{-20,-60}}, + color={0,127,255})); + connect(senTemCw.port_a, port_cw) + annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); + connect(senTemTw.port_b, senFloDhw.port_a) + annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); + connect(senFloDhw.port_b, port_tw) + annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); + connect(greaterThreshold.u, senFloDhw.m_flow) + annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); + connect(greaterThreshold.y, conPID.trigger) + annotation (Line(points={{43.5,27},{38,27},{38,38}}, color={255,0,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-86,72},{-64,50}}, + textColor={238,46,47}, + textString="hot", + textStyle={TextStyle.Bold}), + Text( + extent={{-86,-44},{-52,-74}}, + textColor={28,108,200}, + textStyle={TextStyle.Bold}, + textString="cold"), + Text( + extent={{10,36},{86,-34}}, + textColor={102,44,145}, + textStyle={TextStyle.Bold}, + textString="tempered")}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end DomesticWaterMixer; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo new file mode 100644 index 00000000000..b061038834f --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo @@ -0,0 +1,88 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +model HeatPumpWaterHeaterWithTank + "A model for domestic water heating served by heat pump water heater and local storage tank" + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; + + parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package + Medium = + Medium, m_flow_nominal=mHw_flow_nominal) + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHw_flow_nominal, + m2_flow_nominal=mDH_flow_nominal, + QCon_flow_nominal=QCon_flow_nominal, + dp1_nominal=0, + dp2_nominal=0) + "Domestic hot water heater" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Fluid.Storage.StratifiedEnhancedInternalHex tan( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + VTan=VTan, + hTan=hTan, + dIns=dIns, + kIns=kIns, + nSeg=5, + redeclare package MediumHex = Medium, + CHex=40, + Q_flow_nominal=0.278*4200*20, + hHex_a=0.995, + hHex_b=0.1, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal=false, + allowFlowReversalHex=false, + mHex_flow_nominal=mHex_flow_nominal, + TTan_nominal=293.15, + THex_nominal=323.15, + dpHex_nominal=dpHex_nominal) + "Hot water tank with heat exchanger configured as steady state" + annotation (Placement(transformation(extent={{-40,50},{-60,70}}))); + Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = + Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={50,6}))); +equation + connect(tan.port_a, senTemTankOut.port_a) + annotation (Line(points={{-40,60},{-10,60}}, + color={0,127,255})); + connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, + {-40,6},{-10,6}}, color={0,127,255})); + connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40, + 56.2},{20,56.2},{20,56},{80,56},{80,6},{60,6}}, + color={0,127,255})); + connect(heaPum.port_b1, senTemHPOut.port_a) + annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); + connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0}, + {-60,14},{-12,14},{-12,9}}, color={0,0,127})); + connect(tan.port_b, port_a1) + annotation (Line(points={{-60,60},{-100,60}}, color={0,127,255})); + connect(senTemTankOut.port_b, port_b1) + annotation (Line(points={{10,60},{100,60}}, color={0,127,255})); + connect(port_a2, heaPum.port_a2) annotation (Line(points={{100,-60},{20, + -60},{20,-6},{10,-6}}, color={0,127,255})); + connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{ + -20,-60},{-20,-6},{-10,-6}}, color={0,127,255})); + connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20}, + {80,-20},{80,0},{110,0}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end HeatPumpWaterHeaterWithTank; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo new file mode 100644 index 00000000000..d9bdc45c523 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo @@ -0,0 +1,18 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +partial model PartialFourPortDHW + "A partial model for domestic water heating" + extends Buildings.Fluid.Interfaces.PartialFourPort; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; + parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; + + Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Modelica.Blocks.Interfaces.RealInput TSetHw + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end PartialFourPortDHW; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo new file mode 100644 index 00000000000..9dcbfdc5299 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo @@ -0,0 +1,16 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW; +package BaseClasses "Package with base classes that are used by multiple models" + extends Modelica.Icons.BasesPackage; + + + + + +annotation (Documentation(info=" +

+This package contains base classes that are used to construct the classes in + +Buildings.Experimental.DHC.Loads.Heating.DHW. +

+")); +end BaseClasses; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order new file mode 100644 index 00000000000..34acd66eebc --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order @@ -0,0 +1,5 @@ +DomesticWaterMixer +PartialFourPortDHW +DirectHeatExchangerWaterHeaterWithAuxHeat +HeatPumpWaterHeaterWithTank +DELETE diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo new file mode 100644 index 00000000000..8226c0b4ebe --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo @@ -0,0 +1,250 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; +model DistrictETSIntegration + "Example implementation of connecting district ETS to building DHW model" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; + + Buildings.Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDcw, + nPorts=2) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) + "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{82,74},{70,86}}))); + BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD + disHXAuxHea( + redeclare package Medium = Medium, + TSetHw(displayUnit="degC") = TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal, + haveER=haveER) + "Direct district heat exchanger with auxiliary electric heating" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{48,38},{28,58}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet(displayUnit = "degC") = TSetTw, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) + "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + Modelica.Blocks.Sources.Sine sine(f=0.001, + offset=1) + annotation (Placement(transformation(extent={{120,70},{100,90}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{80,38},{100,58}}))); + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == + true + "Thermal energy added to water with electric resistance" + annotation (Placement(transformation(extent={{120,110},{140,130}}))); + Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{120,90},{140,110}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" + annotation (Placement(transformation(extent={{120,38},{140,58}}), + iconTransformation(extent={{100,18},{140,58}}))); + Modelica.Blocks.Sources.Constant const(k=1) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=0, + origin={-60,150}))); + EnergyTransferStations.Combined.HeatPumpHeatExchanger ets( + nPorts_aHeaWat=1, + nPorts_aChiWat=1, + nPorts_bChiWat=1, + nPorts_bHeaWat=1) + annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare final + package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) + "Heating water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-106,40}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare final + package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) + "Chilled water return temperature" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=0, + origin={-108,0}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare package + Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) + "Chilled water supply temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={80,-40}))); + EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( + redeclare package Medium = Medium, + final m_flow_nominal=mHeaWat_flow_nominal, + dp_nominal=100E3) "Heating water distribution pump" + annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare package + Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) + "Heating water supply temperature" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={-34,98}))); + Fluid.MixingVolumes.MixingVolume volChiWat( + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + T_start=7 + 273.15, + final prescribedHeatFlowRate=true, + redeclare package Medium = Medium, + V=10, + final mSenFac=1, + final m_flow_nominal=mChiWat_flow_nominal, + nPorts=2) "Volume for chilled water distribution circuit" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={151,-90}))); + EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( + redeclare package Medium = Medium, + final m_flow_nominal=mChiWat_flow_nominal, + dp_nominal=100E3) "Chilled water distribution pump" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) + "District heat pump electricity use" + annotation (Placement(transformation(extent={{100,-2},{120,18}}))); + Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= + 0.01, final h=0.005) + "Enable heating" + annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); + Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= + 0.01, final h=0.005) + "Enable cooling" + annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + + 273.15, y(final unit="K", displayUnit="degC")) + "Heating water supply temperature set point" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + + 273.15, y(final unit="K", displayUnit="degC")) + "Chilled water supply temperature set point" + annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); + Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare final + package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) + "District water supply temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-40,-60}))); + Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package + Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) + "District water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={40,-60}))); + Fluid.Sources.Boundary_pT disWat( + redeclare package Medium = Medium, + use_T_in=true, + nPorts=2) "District water boundary conditions" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,-90}))); + Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( + table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, + 16; 11,13; 12,11], + timeScale=2592000, + tableName="tab1", + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, + offset={273.15}, + columns={2}, + smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) + "District water supply temperature" + annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); +equation + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, + color={0,127,255})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, + {60,80},{60,56},{50,56}}, + color={0,0,127})); + connect(sine.y, gaiDhw.u) + annotation (Line(points={{99,80},{83.2,80}}, + color={0,0,127})); + connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ + 60,48},{60,56},{50,56}}, + color={0,0,127})); + connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, + {-10,60},{-10,56},{0,56}}, + color={0,127,255})); + connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, + {-60,60},{-40,60}}, color={0,127,255})); + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, + {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); + connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, + 64},{0,64},{0,120},{130,120}}, + color={0,0,127})); + connect(tmv.TTw, TTw) + annotation (Line(points={{21,58},{28,58},{28,100},{130,100}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); + connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( + points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); + connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( + points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); + connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( + points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); + connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= + {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= + {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) + annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); + connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, + {-20,150},{-20,144}}, color={0,0,127})); + connect(senTChiWatSup.port_b, pumChiWat.port_a) + annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); + connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, + {140,-40},{140,-89},{141,-89}}, color={0,127,255})); + connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( + points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, + 0}}, color={0,127,255})); + connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( + points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ + 0,127,255})); + connect(ets.PHea, EDisHP.u) + annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); + connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, + {-74,10},{-34,10}}, color={255,0,255})); + connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, + {-70,6},{-34,6}}, color={255,0,255})); + connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ + -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); + connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ + -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); + connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= + {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); + connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= + {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); + connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, + {40,-80},{40,-70}}, color={0,127,255})); + connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, + {-40,-80},{-40,-70}}, color={0,127,255})); + connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, + -110},{-4,-110},{-4,-102}}, color={0,0,127})); + connect(PEleAuxHea, PEleAuxHea) + annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); + annotation (experiment(StopTime=3600, Interval=1), + Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), + Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); +end DistrictETSIntegration; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo new file mode 100644 index 00000000000..1c97110b9b2 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo @@ -0,0 +1,116 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; +model DistrictHeatExchangeDHWAuxHeat + "Example implementation of direct district heat exchange and auxiliary line heater for DHW" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; + + Buildings.Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDcw, + nPorts=3) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) + "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{64,24},{52,36}}))); + BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + redeclare package Medium = Medium, + havePEle=havePEle, + TSetHw(displayUnit="degC") = TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal) + "Direct district heat exchanger with auxiliary electric heating" + annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{34,-10},{14,10}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet(displayUnit = "degC") = TSetTw, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) + "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); + Modelica.Blocks.Sources.Sine sine(f=0.001, + offset=1) + annotation (Placement(transformation(extent={{100,20},{80,40}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" + annotation (Placement(transformation(extent={{100,-40},{120,-20}}), + iconTransformation(extent={{80,-60},{120,-20}}))); + Fluid.Sources.Boundary_pT souDHw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDHw, + nPorts=1) "Source of district hot water" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-20,-50}))); + Fluid.Sources.MassFlowSource_T sinDHw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for district heating water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={-74,-50}))); + Modelica.Blocks.Sources.Constant const(k=-1) + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=-90, + origin={-90,-90}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); +equation + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{0,0},{14,0}}, color={0,127,255})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51.4,30},{44,30}, + {44,8},{36,8}}, color={0,0,127})); + connect(sine.y, gaiDhw.u) + annotation (Line(points={{79,30},{65.2,30}}, + color={0,0,127})); + connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{44,-30}, + {44,8},{36,8}}, color={0,0,127})); + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,30},{-30,30}, + {-30,6},{-20,6}}, color={0,127,255})); + connect(tmv.TTw, TTw) + annotation (Line(points={{1,-8},{10,-8},{10,60},{110,60}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{81,-30},{110,-30}}, color={0,0,127})); + connect(const.y, sinDHw.m_flow_in) + annotation (Line(points={{-90,-79},{-90,-76},{-82,-76},{-82,-62}}, + color={0,0,127})); + connect(conTSetHw.y, disHXAuxHea.TSetHw) + annotation (Line(points={{-79,0},{-71,0}}, color={0,0,127})); + connect(disHXAuxHea.port_a2, souDHw.ports[1]) annotation (Line(points={{-50,-6}, + {-40,-6},{-40,-34},{-20,-34},{-20,-40}}, color={0,127,255})); + connect(disHXAuxHea.port_b1, tmv.port_hw) annotation (Line(points={{-50,6},{-36, + 6},{-36,-6},{-20,-6}}, color={0,127,255})); + connect(disHXAuxHea.port_b2, sinDHw.ports[1]) + annotation (Line(points={{-70,-6},{-74,-6},{-74,-40}}, color={0,127,255})); + connect(disHXAuxHea.port_a1, souDcw.ports[3]) annotation (Line(points={{-70,6}, + {-76,6},{-76,31.3333},{-80,31.3333}}, color={0,127,255})); + annotation (experiment(StopTime=3600, Interval=1)); +end DistrictHeatExchangeDHWAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo new file mode 100644 index 00000000000..75f8dcfbfad --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -0,0 +1,102 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; +model DomesticWaterFixture + "Thermostatic mixing valve and hot water fixture with representative annual load profile" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Medium model for water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal + "Design domestic hot water supply flow rate of system"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 + "Temperature setpoint of tempered doemstic hot water outlet"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = + Medium) "Domestic hot water supply port" annotation ( + Placement(transformation(extent={{-210,30},{-190,50}}), + iconTransformation(extent={{-210,30},{-190,50}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{72,10},{52,30}}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw(tableOnFile=true, + table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; + 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; + 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600* + 17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; + 3600*23,0.3; 3600*24,0.1], + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource( + "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{130,10},{110,30}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_dcw(redeclare package Medium = + Medium) "Domestic cold water supply port" annotation ( + Placement(transformation(extent={{-210,-50},{-190,-30}}), + iconTransformation(extent={{-210,-50},{-190,-30}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet=TDhwSet, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{84,-50},{104,-30}}))); + Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{180,20},{220,60}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" + annotation (Placement(transformation(extent={{180,-60},{220,-20}}), + iconTransformation(extent={{180,-60},{220,-20}}))); +equation + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51,20},{0,20},{0, + -12},{-28,-12}}, color={0,0,127})); + connect(schDhw.y[1], gaiDhw.u) + annotation (Line(points={{109,20},{74,20}}, color={0,0,127})); + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{-90,0},{-70,0},{-70,-20},{-50,-20}}, + color={0,127,255})); + connect(tmv.port_hw, port_dhw) annotation (Line(points={{-110,6},{-150,6},{-150, + 40},{-200,40}}, color={0,127,255})); + connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, + -40},{-200,-40}}, color={0,127,255})); + connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{105,-40},{200,-40}}, color={0,0,127})); + connect(watCon.u, gaiDhw.y) annotation (Line(points={{82,-40},{0,-40},{ + 0,20},{51,20}}, color={0,0,127})); +annotation (Documentation(info=" +

+This is a single zone model based on the envelope of the BESTEST Case 600 +building, though it has some modifications. Supply and return air ports are +included for simulation with air-based HVAC systems. Heating and cooling +setpoints and internal loads are time-varying according to an assumed +occupancy schedule. +

+

+This zone model utilizes schedules and constructions from +the Schedules and Constructions packages. +

+", revisions=" +
    +
  • +June 21, 2017, by Michael Wetter:
    +Refactored implementation. +
  • +
  • +June 1, 2017, by David Blum:
    +First implementation. +
  • +
+"), + Diagram(coordinateSystem(extent={{-200,-200},{200,200}})), + Icon(coordinateSystem(extent={{-200,-200},{200,200}}))); +end DomesticWaterFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo new file mode 100644 index 00000000000..2b361379f46 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo @@ -0,0 +1,16 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW; +package Examples "Example implementations of district-integrated DHW models" + extends Modelica.Icons.ExamplesPackage; + + + + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains a collection of residential domestic hot water models +to demonstrate how these models might be used in district heating systems. +

+")); +end Examples; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order new file mode 100644 index 00000000000..e4db23bdb56 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order @@ -0,0 +1,3 @@ +DomesticWaterFixture +DistrictHeatExchangeDHWAuxHeat +DistrictETSIntegration diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.mo new file mode 100644 index 00000000000..7422a49a814 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.mo @@ -0,0 +1,10 @@ +within Buildings.Experimental.DHC.Loads.Heating; +package DHW "Package of models for DHW loads served by district heating" + extends Modelica.Icons.Package; + +annotation (preferredView="info", Documentation(info=" +

+This package contains models for building domestic hot water loads served by a district heating network. +

+")); +end DHW; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order new file mode 100644 index 00000000000..045169d5c7d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order @@ -0,0 +1,2 @@ +BaseClasses +Examples diff --git a/Buildings/Experimental/DHC/Loads/Heating/package.mo b/Buildings/Experimental/DHC/Loads/Heating/package.mo new file mode 100644 index 00000000000..39f6e46ac11 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/package.mo @@ -0,0 +1,10 @@ +within Buildings.Experimental.DHC.Loads; +package Heating "Package of models for district heating loads" + extends Modelica.Icons.Package; + +annotation (preferredView="info", Documentation(info=" +

+This package contains models for building heating loads served by a district network. +

+")); +end Heating; diff --git a/Buildings/Experimental/DHC/Loads/Heating/package.order b/Buildings/Experimental/DHC/Loads/Heating/package.order new file mode 100644 index 00000000000..1185ed32426 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/package.order @@ -0,0 +1 @@ +DHW From 45129d28a93e246bec8c36698fe95d97d0f2804e Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 15:47:32 -0700 Subject: [PATCH 020/183] assigned medium model This resolves errors in DirectHeatExchangerWaterHeaterWithAuxHeat caused by medium models not matching across components. --- .../DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo index d9bdc45c523..0ec7411c60f 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo @@ -1,7 +1,9 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; partial model PartialFourPortDHW "A partial model for domestic water heating" - extends Buildings.Fluid.Interfaces.PartialFourPort; + extends Buildings.Fluid.Interfaces.PartialFourPort( + redeclare final package Medium1=Medium, + redeclare final package Medium2=Medium); replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; From c204d455ee7158d6a75f38b16d98bd8d21c2bda2 Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 15:55:41 -0700 Subject: [PATCH 021/183] removed duplicate declaration In DirectHeatExchangerWaterHeaterWithAuxHeat, the variable havePEle is already declared in its parent model PartialFourPortDHW. --- .../BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo | 2 -- 1 file changed, 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index 0a661eab2e2..9f60a7a03ef 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -4,8 +4,6 @@ model DirectHeatExchangerWaterHeaterWithAuxHeat extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, From 0ecc3582c04a86df2fa08555af5114142a8d9236 Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 15:58:30 -0700 Subject: [PATCH 022/183] removed duplicate medium assignment --- .../Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo | 2 -- 1 file changed, 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo index 1c97110b9b2..9f40958fae1 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo @@ -26,8 +26,6 @@ model DistrictHeatExchangeDHWAuxHeat "Gain for multiplying domestic hot water schedule" annotation (Placement(transformation(extent={{64,24},{52,36}}))); BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, redeclare package Medium = Medium, havePEle=havePEle, TSetHw(displayUnit="degC") = TSetHw, From 79d5dd3a8602df1138238f4b1a5ef8be72c1b351 Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 16:00:58 -0700 Subject: [PATCH 023/183] gave havePEle value in example model This commit exposes more errors. --- .../Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo index 9f40958fae1..0fee07bcb38 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo @@ -15,7 +15,7 @@ model DistrictHeatExchangeDHWAuxHeat parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; + parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, From 304b519f09a96d2734d78616df795611adbb7ece Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 16:02:08 -0700 Subject: [PATCH 024/183] removed unnecessary annotation that caused error --- .../Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo index 0fee07bcb38..3fa1260b037 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo @@ -12,9 +12,7 @@ model DistrictHeatExchangeDHWAuxHeat parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( From 99bbecaf672fdd2cb2cc1189bd044dc4ec68ccbf Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 16:03:04 -0700 Subject: [PATCH 025/183] corrected annotation --- .../DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo index 65e213add2d..62c04b82e58 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo @@ -6,8 +6,8 @@ model DomesticWaterMixer "A model for a domestic water mixer" parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real k(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); + conPID.controllerType == Modelica.Blocks.Types.SimpleController.PI or + conPID.controllerType == Modelica.Blocks.Types.SimpleController.PID)); Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = Medium) "Port for tempered water outlet" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); From 390cff31a506cdfffc041543db5f5a7b101a3b58 Mon Sep 17 00:00:00 2001 From: hcasperfu Date: Tue, 11 Oct 2022 16:12:22 -0700 Subject: [PATCH 026/183] fixed connector error with souDcw This is done by manually deleting and remaking connectors from souDcw in the graphic view. --- .../DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo index 3fa1260b037..39ebcf98032 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo @@ -18,7 +18,7 @@ model DistrictHeatExchangeDHWAuxHeat Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, T(displayUnit = "degC") = TDcw, - nPorts=3) "Source of domestic cold water" + nPorts=2) "Source of domestic cold water" annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) "Gain for multiplying domestic hot water schedule" @@ -88,8 +88,6 @@ equation color={0,0,127})); connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{44,-30}, {44,8},{36,8}}, color={0,0,127})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-80,30},{-30,30}, - {-30,6},{-20,6}}, color={0,127,255})); connect(tmv.TTw, TTw) annotation (Line(points={{1,-8},{10,-8},{10,60},{110,60}}, color={0,0,127})); @@ -106,7 +104,9 @@ equation 6},{-36,-6},{-20,-6}}, color={0,127,255})); connect(disHXAuxHea.port_b2, sinDHw.ports[1]) annotation (Line(points={{-70,-6},{-74,-6},{-74,-40}}, color={0,127,255})); - connect(disHXAuxHea.port_a1, souDcw.ports[3]) annotation (Line(points={{-70,6}, - {-76,6},{-76,31.3333},{-80,31.3333}}, color={0,127,255})); + connect(souDcw.ports[1], disHXAuxHea.port_a1) annotation (Line(points={{-80, + 29},{-78,29},{-78,30},{-74,30},{-74,6},{-70,6}}, color={0,127,255})); + connect(tmv.port_cw, souDcw.ports[2]) annotation (Line(points={{-20,6},{-34,6}, + {-34,30},{-80,30}}, color={0,127,255})); annotation (experiment(StopTime=3600, Interval=1)); end DistrictHeatExchangeDHWAuxHeat; From 91c42c3aa4335fbc7e2b74761b705624a12939f9 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 20 Oct 2022 16:02:19 -0700 Subject: [PATCH 027/183] new base classes for daily and annual load schedules --- .../DHW/BaseClasses/AnnualScheduleDHWLoad.mo | 73 +++++++++++++++++++ .../DHW/BaseClasses/DailyPeriodicDHWLoad.mo | 63 ++++++++++++++++ .../Heating/DHW/BaseClasses/package.order | 2 + 3 files changed, 138 insertions(+) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo new file mode 100644 index 00000000000..b3d646ba5c4 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo @@ -0,0 +1,73 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +model AnnualScheduleDHWLoad + "A model with an annual schedule of domestic water draws" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; + + Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{60,10},{40,30}}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw( + tableOnFile=true, + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{100,10},{80,30}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" + annotation (Placement(transformation(extent={{100,-90},{120,-70}}), + iconTransformation(extent={{100,-60},{120,-40}}))); +equation + connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, + {-20,8},{-44,8}}, color={0,0,127})); + connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, + {39,20}}, color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{61,-80},{110,-80}}, color={0,0,127})); + connect(sinDhw.ports[1], port_tw) + annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); + connect(schDhw.y[1], gaiDhw.u) + annotation (Line(points={{79,20},{62,20}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-47.728,58.2054},{-65.772,38.1027},{-65.772,-4.6152},{-40, + -37.2823},{-14.228,-4.6152},{-14.228,38.1027},{-32.272,58.2054},{ + -40,73.2823},{-47.728,58.2054}}, + lineColor={28,108,200}, + lineThickness=0.5, + smooth=Smooth.Bezier, + fillColor={0,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, + -57.282},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, + 53.2823},{-7.728,38.2054}}, + lineColor={28,108,200}, + lineThickness=0.5, + smooth=Smooth.Bezier, + fillColor={0,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{32.272,18.2054},{14.228,-1.8973},{14.228,-44.615},{40, + -77.282},{65.772,-44.615},{65.772,-1.8973},{47.728,18.2054},{40, + 33.2823},{32.272,18.2054}}, + lineColor={28,108,200}, + lineThickness=0.5, + smooth=Smooth.Bezier, + fillColor={0,255,255}, + fillPattern=FillPattern.Solid)}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end AnnualScheduleDHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo new file mode 100644 index 00000000000..89b11b7ad0e --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo @@ -0,0 +1,63 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +model DailyPeriodicDHWLoad + "A model for a daily periodic domestic water draw" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; + + Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{60,10},{40,30}}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw( + tableOnFile=false, + table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; + 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; 3600 + *12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600*17,0.7; + 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; 3600*23, + 0.3; 3600*24,0.1], + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{100,10},{80,30}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" + annotation (Placement(transformation(extent={{100,-90},{120,-70}}), + iconTransformation(extent={{100,-60},{120,-40}}))); +equation + connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, + {-20,8},{-44,8}}, color={0,0,127})); + connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, + {39,20}}, color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{61,-80},{110,-80}}, color={0,0,127})); + connect(sinDhw.ports[1], port_tw) + annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); + connect(schDhw.y[1], gaiDhw.u) + annotation (Line(points={{79,20},{62,20}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, + -57.2823},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, + 53.2823},{-7.728,38.2054}}, + lineColor={28,108,200}, + lineThickness=0.5, + smooth=Smooth.Bezier, + fillColor={0,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-70,70},{70,-70}}, + lineColor={0,0,0}, + pattern=LinePattern.Dash, + lineThickness=1)}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end DailyPeriodicDHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order index 34acd66eebc..87f686423b8 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order @@ -2,4 +2,6 @@ DomesticWaterMixer PartialFourPortDHW DirectHeatExchangerWaterHeaterWithAuxHeat HeatPumpWaterHeaterWithTank +DailyPeriodicDHWLoad +AnnualScheduleDHWLoad DELETE From c9576df04fe5d2a774f3a5057d7ca9d49dee0bfb Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 20 Oct 2022 16:03:43 -0700 Subject: [PATCH 028/183] modified icons for heat generation devices --- ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 11 ++-- .../HeatPumpWaterHeaterWithTank.mo | 60 +++++++++++++++++-- 2 files changed, 62 insertions(+), 9 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index 9f60a7a03ef..a2fb5f62b10 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -7,11 +7,10 @@ model DirectHeatExchangerWaterHeaterWithAuxHeat Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if havePEle == true - "Supplemental electric resistance domestic hot water heater" + dp_nominal=0) if havePEle == true "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,16},{30,-4}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) + Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{60,-4},{80,16}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, @@ -60,6 +59,10 @@ equation extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255}, - fillPattern=FillPattern.Solid)}), Diagram( + fillPattern=FillPattern.Solid), Line( + points={{-80,0},{-70,0},{-60,20},{-40,-20},{-20,20},{0,-20},{20,20},{ + 40,-20},{60,20},{70,0},{80,0}}, + color={238,46,47}, + thickness=1)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWaterHeaterWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo index b061038834f..942a2ece987 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo @@ -13,8 +13,7 @@ model HeatPumpWaterHeaterWithTank parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package - Medium = - Medium, m_flow_nominal=mHw_flow_nominal) + Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{-10,50},{10,70}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, @@ -61,8 +60,8 @@ equation color={0,127,255})); connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, {-40,6},{-10,6}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40, - 56.2},{20,56.2},{20,56},{80,56},{80,6},{60,6}}, + connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40,56.2}, + {80,56.2},{80,6},{60,6}}, color={0,127,255})); connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); @@ -83,6 +82,57 @@ equation extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255}, - fillPattern=FillPattern.Solid)}), Diagram( + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-20,-60},{20,-40}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-20,22},{20,-48}}, + lineColor={175,175,175}, + lineThickness=1, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-20,10},{20,30}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-20,50},{20,20}}, + lineColor={0,0,0}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-20,40},{20,60}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line( + points={{-20,50},{-20,-50}}, + color={95,95,95}, + thickness=1), + Line( + points={{20,50},{20,-50}}, + color={95,95,95}, + thickness=1), + Polygon( + points={{-140,86},{-140,86}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.CrossDiag), + Polygon( + points={{20,40},{18,38},{14,36},{8,34},{8,26},{14,28},{18,30},{20,32}, + {20,40}}, + lineColor={95,95,95}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.CrossDiag)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end HeatPumpWaterHeaterWithTank; From ba82922e099be13b18dc2c89981c9f5b270ca305 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 20 Oct 2022 16:06:16 -0700 Subject: [PATCH 029/183] reorganized examples to separate heater and fixture testing --- .../DHC/Loads/Heating/DHW/Examples/DELETE.mo | 253 ++++++++++++++++++ .../DHW/Examples/DistrictETSIntegration.mo | 250 ----------------- .../DHW/Examples/DomesticWaterFixture.mo | 100 +++---- .../DHW/Examples/DomesticWaterHeater.mo | 77 ++++++ ...at.mo => DomesticWaterHeaterAndFixture.mo} | 97 +++---- .../Loads/Heating/DHW/Examples/package.order | 5 +- 6 files changed, 416 insertions(+), 366 deletions(-) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo rename Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/{DistrictHeatExchangeDHWAuxHeat.mo => DomesticWaterHeaterAndFixture.mo} (52%) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo new file mode 100644 index 00000000000..662cc57adbc --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo @@ -0,0 +1,253 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; +package DELETE "These models are outdated" + + model DistrictETSIntegration + "Example implementation of connecting district ETS to building DHW model" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Real k(min=0) = 2 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + controllerType == Modelica.Blocks.Types.SimpleController.PI or + controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; + + Buildings.Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDcw, + nPorts=2) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) + "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{82,74},{70,86}}))); + BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD + disHXAuxHea( + redeclare package Medium = Medium, + TSetHw(displayUnit="degC") = TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal, + haveER=haveER) + "Direct district heat exchanger with auxiliary electric heating" + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{48,38},{28,58}}))); + BaseClasses.DomesticWaterMixer tmv( + redeclare package Medium = Medium, + TSet(displayUnit = "degC") = TSetTw, + mDhw_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal, + k=k, + Ti=Ti) + "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + Modelica.Blocks.Sources.Sine sine(f=0.001, + offset=1) + annotation (Placement(transformation(extent={{120,70},{100,90}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) + "Integrated hot water consumption" + annotation (Placement(transformation(extent={{80,38},{100,58}}))); + Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == + true + "Thermal energy added to water with electric resistance" + annotation (Placement(transformation(extent={{120,110},{140,130}}))); + Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{120,90},{140,110}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" + annotation (Placement(transformation(extent={{120,38},{140,58}}), + iconTransformation(extent={{100,18},{140,58}}))); + Modelica.Blocks.Sources.Constant const(k=1) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=0, + origin={-60,150}))); + EnergyTransferStations.Combined.HeatPumpHeatExchanger ets( + nPorts_aHeaWat=1, + nPorts_aChiWat=1, + nPorts_bChiWat=1, + nPorts_bHeaWat=1) + annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare final + package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) + "Heating water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-106,40}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare final + package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) + "Chilled water return temperature" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=0, + origin={-108,0}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare package + Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) + "Chilled water supply temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={80,-40}))); + EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( + redeclare package Medium = Medium, + final m_flow_nominal=mHeaWat_flow_nominal, + dp_nominal=100E3) "Heating water distribution pump" + annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare package + Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) + "Heating water supply temperature" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=90, + origin={-34,98}))); + Fluid.MixingVolumes.MixingVolume volChiWat( + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + T_start=7 + 273.15, + final prescribedHeatFlowRate=true, + redeclare package Medium = Medium, + V=10, + final mSenFac=1, + final m_flow_nominal=mChiWat_flow_nominal, + nPorts=2) "Volume for chilled water distribution circuit" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={151,-90}))); + EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( + redeclare package Medium = Medium, + final m_flow_nominal=mChiWat_flow_nominal, + dp_nominal=100E3) "Chilled water distribution pump" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) + "District heat pump electricity use" + annotation (Placement(transformation(extent={{100,-2},{120,18}}))); + Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= + 0.01, final h=0.005) + "Enable heating" + annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); + Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= + 0.01, final h=0.005) + "Enable cooling" + annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + + 273.15, y(final unit="K", displayUnit="degC")) + "Heating water supply temperature set point" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + + 273.15, y(final unit="K", displayUnit="degC")) + "Chilled water supply temperature set point" + annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); + Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare final + package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) + "District water supply temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-40,-60}))); + Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package + Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) + "District water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={40,-60}))); + Fluid.Sources.Boundary_pT disWat( + redeclare package Medium = Medium, + use_T_in=true, + nPorts=2) "District water boundary conditions" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={0,-90}))); + Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( + table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, + 16; 11,13; 12,11], + timeScale=2592000, + tableName="tab1", + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, + offset={273.15}, + columns={2}, + smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) + "District water supply temperature" + annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); + equation + connect(tmv.port_tw, sinDhw.ports[1]) + annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, + color={0,127,255})); + connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, + {60,80},{60,56},{50,56}}, + color={0,0,127})); + connect(sine.y, gaiDhw.u) + annotation (Line(points={{99,80},{83.2,80}}, + color={0,0,127})); + connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ + 60,48},{60,56},{50,56}}, + color={0,0,127})); + connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, + {-10,60},{-10,56},{0,56}}, + color={0,127,255})); + connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, + {-60,60},{-40,60}}, color={0,127,255})); + connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, + {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); + connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, + 64},{0,64},{0,120},{130,120}}, + color={0,0,127})); + connect(tmv.TTw, TTw) + annotation (Line(points={{21,56},{28,56},{28,100},{130,100}}, + color={0,0,127})); + connect(watCon.y, mDhw) + annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); + connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( + points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); + connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( + points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); + connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( + points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); + connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= + {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= + {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); + connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) + annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); + connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, + {-20,150},{-20,144}}, color={0,0,127})); + connect(senTChiWatSup.port_b, pumChiWat.port_a) + annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); + connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, + {140,-40},{140,-89},{141,-89}}, color={0,127,255})); + connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( + points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, + 0}}, color={0,127,255})); + connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( + points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ + 0,127,255})); + connect(ets.PHea, EDisHP.u) + annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); + connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, + {-74,10},{-34,10}}, color={255,0,255})); + connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, + {-70,6},{-34,6}}, color={255,0,255})); + connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ + -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); + connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ + -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); + connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= + {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); + connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= + {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); + connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, + {40,-80},{40,-70}}, color={0,127,255})); + connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, + {-40,-80},{-40,-70}}, color={0,127,255})); + connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, + -110},{-4,-110},{-4,-102}}, color={0,0,127})); + connect(PEleAuxHea, PEleAuxHea) + annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); + annotation (experiment(StopTime=3600, Interval=1), + Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), + Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); + end DistrictETSIntegration; +end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo deleted file mode 100644 index 8226c0b4ebe..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictETSIntegration.mo +++ /dev/null @@ -1,250 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; -model DistrictETSIntegration - "Example implementation of connecting district ETS to building DHW model" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{82,74},{70,86}}))); - BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD - disHXAuxHea( - redeclare package Medium = Medium, - TSetHw(displayUnit="degC") = TSetHw, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - haveER=haveER) - "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{48,38},{28,58}}))); - BaseClasses.DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit = "degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) - "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, - offset=1) - annotation (Placement(transformation(extent={{120,70},{100,90}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{80,38},{100,58}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == - true - "Thermal energy added to water with electric resistance" - annotation (Placement(transformation(extent={{120,110},{140,130}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{120,90},{140,110}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{120,38},{140,58}}), - iconTransformation(extent={{100,18},{140,58}}))); - Modelica.Blocks.Sources.Constant const(k=1) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=0, - origin={-60,150}))); - EnergyTransferStations.Combined.HeatPumpHeatExchanger ets( - nPorts_aHeaWat=1, - nPorts_aChiWat=1, - nPorts_bChiWat=1, - nPorts_bHeaWat=1) - annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare final - package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={-106,40}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare final - package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water return temperature" annotation (Placement(transformation( - extent={{10,10},{-10,-10}}, - rotation=0, - origin={-108,0}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare package - Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={80,-40}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( - redeclare package Medium = Medium, - final m_flow_nominal=mHeaWat_flow_nominal, - dp_nominal=100E3) "Heating water distribution pump" - annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare package - Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water supply temperature" annotation (Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={-34,98}))); - Fluid.MixingVolumes.MixingVolume volChiWat( - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - T_start=7 + 273.15, - final prescribedHeatFlowRate=true, - redeclare package Medium = Medium, - V=10, - final mSenFac=1, - final m_flow_nominal=mChiWat_flow_nominal, - nPorts=2) "Volume for chilled water distribution circuit" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={151,-90}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( - redeclare package Medium = Medium, - final m_flow_nominal=mChiWat_flow_nominal, - dp_nominal=100E3) "Chilled water distribution pump" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) - "District heat pump electricity use" - annotation (Placement(transformation(extent={{100,-2},{120,18}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= - 0.01, final h=0.005) - "Enable heating" - annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= - 0.01, final h=0.005) - "Enable cooling" - annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + - 273.15, y(final unit="K", displayUnit="degC")) - "Heating water supply temperature set point" - annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); - Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + - 273.15, y(final unit="K", displayUnit="degC")) - "Chilled water supply temperature set point" - annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare final - package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-60}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package - Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={40,-60}))); - Fluid.Sources.Boundary_pT disWat( - redeclare package Medium = Medium, - use_T_in=true, - nPorts=2) "District water boundary conditions" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={0,-90}))); - Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( - table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, - 16; 11,13; 12,11], - timeScale=2592000, - tableName="tab1", - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, - offset={273.15}, - columns={2}, - smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) - "District water supply temperature" - annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); -equation - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, - color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, - {60,80},{60,56},{50,56}}, - color={0,0,127})); - connect(sine.y, gaiDhw.u) - annotation (Line(points={{99,80},{83.2,80}}, - color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ - 60,48},{60,56},{50,56}}, - color={0,0,127})); - connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, - {-10,60},{-10,56},{0,56}}, - color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, - {-60,60},{-40,60}}, color={0,127,255})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, - {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); - connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, - 64},{0,64},{0,120},{130,120}}, - color={0,0,127})); - connect(tmv.TTw, TTw) - annotation (Line(points={{21,58},{28,58},{28,100},{130,100}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); - connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( - points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); - connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( - points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); - connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( - points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); - connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= - {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= - {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) - annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); - connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, - {-20,150},{-20,144}}, color={0,0,127})); - connect(senTChiWatSup.port_b, pumChiWat.port_a) - annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); - connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, - {140,-40},{140,-89},{141,-89}}, color={0,127,255})); - connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( - points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, - 0}}, color={0,127,255})); - connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( - points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ - 0,127,255})); - connect(ets.PHea, EDisHP.u) - annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); - connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, - {-74,10},{-34,10}}, color={255,0,255})); - connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, - {-70,6},{-34,6}}, color={255,0,255})); - connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ - -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); - connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ - -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); - connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= - {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); - connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= - {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); - connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, - {40,-80},{40,-70}}, color={0,127,255})); - connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, - {-40,-80},{-40,-70}}, color={0,127,255})); - connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, - -110},{-4,-110},{-4,-102}}, color={0,0,127})); - connect(PEleAuxHea, PEleAuxHea) - annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); - annotation (experiment(StopTime=3600, Interval=1), - Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), - Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); -end DistrictETSIntegration; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 75f8dcfbfad..dd3c93d3645 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -3,76 +3,58 @@ model DomesticWaterFixture "Thermostatic mixing valve and hot water fixture with representative annual load profile" extends Modelica.Icons.Example; replaceable package Medium = Buildings.Media.Water "Medium model for water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal - "Design domestic hot water supply flow rate of system"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = 0.1 "Design domestic hot water supply flow rate of system"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Modelica.Units.SI.Temperature TDhwSet=273.15 + 40 - "Temperature setpoint of tempered doemstic hot water outlet"; - parameter Real k(min=0) = 2 "Gain of controller"; + parameter Real kCon(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); - Modelica.Fluid.Interfaces.FluidPort_a port_dhw(redeclare package Medium = - Medium) "Domestic hot water supply port" annotation ( - Placement(transformation(extent={{-210,30},{-190,50}}), - iconTransformation(extent={{-210,30},{-190,50}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-30,-30},{-50,-10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{72,10},{52,30}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw(tableOnFile=true, - table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; - 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; - 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600* - 17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; - 3600*23,0.3; 3600*24,0.1], - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource( - "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{130,10},{110,30}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dcw(redeclare package Medium = - Medium) "Domestic cold water supply port" annotation ( - Placement(transformation(extent={{-210,-50},{-190,-30}}), - iconTransformation(extent={{-210,-50},{-190,-30}}))); + BaseClasses.DomesticWaterMixer tmv( redeclare package Medium = Medium, - TSet=TDhwSet, + TSet=TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, - k=k, + k=kCon, Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{84,-50},{104,-30}}))); + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{180,20},{220,60}}))); + annotation (Placement(transformation(extent={{100,70},{120,90}}), + iconTransformation(extent={{100,70},{120,90}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{180,-60},{220,-20}}), - iconTransformation(extent={{180,-60},{220,-20}}))); + annotation (Placement(transformation(extent={{100,-70},{120,-50}}), + iconTransformation(extent={{100,-70},{120,-50}}))); + BaseClasses.DailyPeriodicDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) + "load for DHW" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit="degC") = TDcw, + nPorts=1) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-100,-60},{-80,-40}}))); + Fluid.Sources.Boundary_pT souHw( + redeclare package Medium = Medium, + T(displayUnit="degC") = TSetHw, + nPorts=1) "Source of heated domestic water" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={-90,70}))); equation - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51,20},{0,20},{0, - -12},{-28,-12}}, color={0,0,127})); - connect(schDhw.y[1], gaiDhw.u) - annotation (Line(points={{109,20},{74,20}}, color={0,0,127})); - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{-90,0},{-70,0},{-70,-20},{-50,-20}}, - color={0,127,255})); - connect(tmv.port_hw, port_dhw) annotation (Line(points={{-110,6},{-150,6},{-150, - 40},{-200,40}}, color={0,127,255})); - connect(tmv.port_cw, port_dcw) annotation (Line(points={{-110,-6},{-150,-6},{-150, - -40},{-200,-40}}, color={0,127,255})); - connect(tmv.TTw, TTw) annotation (Line(points={{-89,8},{-70,8},{-70,40},{200,40}}, + connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{0,6},{0,80},{110,80}}, color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{105,-40},{200,-40}}, color={0,0,127})); - connect(watCon.u, gaiDhw.y) annotation (Line(points={{82,-40},{0,-40},{ - 0,20},{51,20}}, color={0,0,127})); + connect(tmv.port_tw, loaDHW.port_tw) + annotation (Line(points={{-20,0},{20,0}}, color={0,127,255})); + connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-5},{60,-5},{60,-60}, + {110,-60}}, color={0,0,127})); + connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-80,-50},{-60, + -50},{-60,-6},{-40,-6}}, color={0,127,255})); + connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,70},{-60, + 70},{-60,6},{-40,6}}, + color={0,127,255})); annotation (Documentation(info="

This is a single zone model based on the envelope of the BESTEST Case 600 @@ -97,6 +79,6 @@ First implementation. "), - Diagram(coordinateSystem(extent={{-200,-200},{200,200}})), - Icon(coordinateSystem(extent={{-200,-200},{200,200}}))); + Diagram(coordinateSystem(extent={{-100,-100},{100,120}})), + Icon(coordinateSystem(extent={{-100,-100},{100,120}}))); end DomesticWaterFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo new file mode 100644 index 00000000000..e51a2a14c3d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -0,0 +1,77 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; +model DomesticWaterHeater + "Example implementation of direct district heat exchange and auxiliary line heater for DHW" + extends Modelica.Icons.Example; + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; + parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; + + Buildings.Fluid.Sources.Boundary_pT souDcw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDcw, + nPorts=1) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=-90, + origin={-30,30}))); + BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( + redeclare package Medium = Medium, + havePEle=havePEle, + TSetHw(displayUnit="degC") = TSetHw, + mHw_flow_nominal=mHw_flow_nominal, + mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Fluid.Sources.MassFlowSource_T sinDhw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for domestic hot water supply" + annotation (Placement(transformation(extent={{10,10},{-10,-10}}, + rotation=90, + origin={30,30}))); + Fluid.Sources.Boundary_pT souDHw( + redeclare package Medium = Medium, + T(displayUnit = "degC") = TDHw, + nPorts=1) "Source of district hot water" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={30,-30}))); + Fluid.Sources.MassFlowSource_T sinDHw( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for district heating water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={-30,-30}))); + Modelica.Blocks.Sources.Constant const(k=-1) + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=-90, + origin={0,-90}))); + Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); +equation + connect(conTSetHw.y, genDHW.TSetHw) + annotation (Line(points={{-79,0},{-11,0}}, color={0,0,127})); + connect(genDHW.port_a2, souDHw.ports[1]) + annotation (Line(points={{10,-6},{30,-6},{30,-20}}, color={0,127,255})); + connect(genDHW.port_b2, sinDHw.ports[1]) + annotation (Line(points={{-10,-6},{-30,-6},{-30,-20}}, color={0,127,255})); + connect(souDcw.ports[1], genDHW.port_a1) + annotation (Line(points={{-30,20},{-30,6},{-10,6}}, color={0,127,255})); + connect(genDHW.PEle, PEle) annotation (Line(points={{11,0},{80,0},{80,80},{ + 110,80}}, color={0,0,127})); + connect(const.y, sinDHw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, + {2.05391e-15,-60},{-60,-60},{-60,-42},{-38,-42}}, color={0,0,127})); + connect(const.y, sinDhw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, + {2.05391e-15,-60},{60,-60},{60,60},{38,60},{38,42}}, color={0,0,127})); + connect(genDHW.port_b1, sinDhw.ports[1]) + annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); + annotation (experiment(StopTime=3600, Interval=1)); +end DomesticWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo similarity index 52% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 39ebcf98032..b3ace3576c5 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DistrictHeatExchangeDHWAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -1,5 +1,5 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; -model DistrictHeatExchangeDHWAuxHeat +model DomesticWaterHeaterAndFixture "Example implementation of direct district heat exchange and auxiliary line heater for DHW" extends Modelica.Icons.Example; replaceable package Medium = Buildings.Media.Water "Water media model"; @@ -11,7 +11,7 @@ model DistrictHeatExchangeDHWAuxHeat parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; + parameter Real kCon(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; @@ -19,43 +19,27 @@ model DistrictHeatExchangeDHWAuxHeat redeclare package Medium = Medium, T(displayUnit = "degC") = TDcw, nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{64,24},{52,36}}))); - BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat disHXAuxHea( + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={-30,-50}))); + BaseClasses.HeatPumpWaterHeaterWithTank genDHW( redeclare package Medium = Medium, havePEle=havePEle, TSetHw(displayUnit="degC") = TSetHw, mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal) - "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{34,-10},{14,10}}))); + mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); BaseClasses.DomesticWaterMixer tmv( redeclare package Medium = Medium, TSet(displayUnit = "degC") = TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, - k=k, + k=kCon, Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, - offset=1) - annotation (Placement(transformation(extent={{100,20},{80,40}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-40},{120,-20}}), - iconTransformation(extent={{80,-60},{120,-20}}))); Fluid.Sources.Boundary_pT souDHw( redeclare package Medium = Medium, T(displayUnit = "degC") = TDHw, @@ -63,14 +47,14 @@ model DistrictHeatExchangeDHWAuxHeat transformation( extent={{-10,-10},{10,10}}, rotation=90, - origin={-20,-50}))); + origin={10,-50}))); Fluid.Sources.MassFlowSource_T sinDHw( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Sink for district heating water" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=90, - origin={-74,-50}))); + origin={-70,-50}))); Modelica.Blocks.Sources.Constant const(k=-1) annotation (Placement(transformation(extent={{10,-10},{-10,10}}, rotation=-90, @@ -78,35 +62,38 @@ model DistrictHeatExchangeDHWAuxHeat Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); + BaseClasses.AnnualScheduleDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) + "load for DHW" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}), + iconTransformation(extent={{100,-70},{120,-50}}))); equation - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{0,0},{14,0}}, color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{51.4,30},{44,30}, - {44,8},{36,8}}, color={0,0,127})); - connect(sine.y, gaiDhw.u) - annotation (Line(points={{79,30},{65.2,30}}, - color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{58,-30},{44,-30}, - {44,8},{36,8}}, color={0,0,127})); connect(tmv.TTw, TTw) - annotation (Line(points={{1,-8},{10,-8},{10,60},{110,60}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{81,-30},{110,-30}}, color={0,0,127})); + annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); connect(const.y, sinDHw.m_flow_in) - annotation (Line(points={{-90,-79},{-90,-76},{-82,-76},{-82,-62}}, + annotation (Line(points={{-90,-79},{-90,-70},{-78,-70},{-78,-62}}, color={0,0,127})); - connect(conTSetHw.y, disHXAuxHea.TSetHw) - annotation (Line(points={{-79,0},{-71,0}}, color={0,0,127})); - connect(disHXAuxHea.port_a2, souDHw.ports[1]) annotation (Line(points={{-50,-6}, - {-40,-6},{-40,-34},{-20,-34},{-20,-40}}, color={0,127,255})); - connect(disHXAuxHea.port_b1, tmv.port_hw) annotation (Line(points={{-50,6},{-36, - 6},{-36,-6},{-20,-6}}, color={0,127,255})); - connect(disHXAuxHea.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-70,-6},{-74,-6},{-74,-40}}, color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_a1) annotation (Line(points={{-80, - 29},{-78,29},{-78,30},{-74,30},{-74,6},{-70,6}}, color={0,127,255})); - connect(tmv.port_cw, souDcw.ports[2]) annotation (Line(points={{-20,6},{-34,6}, - {-34,30},{-80,30}}, color={0,127,255})); + connect(conTSetHw.y, genDHW.TSetHw) + annotation (Line(points={{-79,0},{-41,0}}, color={0,0,127})); + connect(genDHW.PEle, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80}, + {110,80}}, color={0,0,127})); + connect(genDHW.port_b1, tmv.port_hw) + annotation (Line(points={{-20,6},{0,6}}, color={0,127,255})); + connect(souDHw.ports[1], genDHW.port_a2) annotation (Line(points={{10,-40},{ + 10,-20},{-14,-20},{-14,-6},{-20,-6}}, color={0,127,255})); + connect(genDHW.port_b2, sinDHw.ports[1]) + annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); + connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-29,-40},{-29, + -30},{-6,-30},{-6,-6},{0,-6}}, color={0,127,255})); + connect(souDcw.ports[2], genDHW.port_a1) annotation (Line(points={{-31,-40},{ + -31,-30},{-50,-30},{-50,6},{-40,6}}, color={0,127,255})); + connect(tmv.port_tw, loaDHW.port_tw) + annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); + connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-5},{80,-5},{80,-60}, + {110,-60}}, color={0,0,127})); annotation (experiment(StopTime=3600, Interval=1)); -end DistrictHeatExchangeDHWAuxHeat; +end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order index e4db23bdb56..9622cff465c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order @@ -1,3 +1,4 @@ +DomesticWaterHeater DomesticWaterFixture -DistrictHeatExchangeDHWAuxHeat -DistrictETSIntegration +DomesticWaterHeaterAndFixture +DELETE From 7ecca9d3556185dad90359c711804cb0cca2dbd5 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 20 Oct 2022 16:07:15 -0700 Subject: [PATCH 030/183] modified thermostatic mixing valve icon with colored fluid streams --- .../DHW/BaseClasses/DomesticWaterMixer.mo | 114 +++++++++++++----- 1 file changed, 83 insertions(+), 31 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo index 62c04b82e58..5daa08a3ab0 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo @@ -16,13 +16,12 @@ model DomesticWaterMixer "A model for a domestic water mixer" k=k, Ti=Ti, reset=Buildings.Types.Reset.Parameter) - annotation (Placement(transformation(extent={{40,40},{20,60}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package - Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" + annotation (Placement(transformation(extent={{40,60},{20,80}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium + = Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" - annotation (Placement(transformation(extent={{80,40},{60,60}}))); + annotation (Placement(transformation(extent={{80,60},{60,80}}))); Fluid.Actuators.Valves.ThreeWayLinear ideValHea(redeclare package Medium = Medium, final m_flow_nominal= mDhw_flow_nominal, @@ -38,14 +37,12 @@ model DomesticWaterMixer "A model for a domestic water mixer" Medium) "Port for domestic cold water supply" annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package - Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium + = Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package - Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium + = Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = Medium) "Mass flow rate of domestic hot water" @@ -54,15 +51,16 @@ model DomesticWaterMixer "A model for a domestic water mixer" annotation (Placement(transformation(extent={{54,22},{44,32}}))); equation connect(conTSetCon.y, conPID.u_s) - annotation (Line(points={{59,50},{42,50}}, color={0,0,127})); + annotation (Line(points={{59,70},{42,70}}, color={0,0,127})); connect(senTemTw.T, conPID.u_m) - annotation (Line(points={{30,11},{30,38}}, color={0,0,127})); + annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, ideValHea.y) annotation (Line(points={{19,50},{8.88178e-16,50}, - {8.88178e-16,12}},color={0,0,127})); - connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,20},{90,20},{90, - 80},{110,80}}, color={0,0,127})); + connect(conPID.y, ideValHea.y) annotation (Line(points={{19,70},{0,70},{0,12}, + {9.99201e-16,12}},color={0,0,127})); + connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,30},{34,30},{34, + 40},{96,40},{96,60},{110,60}}, + color={0,0,127})); connect(ideValHea.port_1, senTemHw.port_b) annotation (Line(points={{-10,1.77636e-15},{-10,0},{-20,0}}, color={0,127,255})); @@ -80,27 +78,81 @@ equation connect(greaterThreshold.u, senFloDhw.m_flow) annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); connect(greaterThreshold.y, conPID.trigger) - annotation (Line(points={{43.5,27},{38,27},{38,38}}, color={255,0,255})); + annotation (Line(points={{43.5,27},{38,27},{38,58}}, color={255,0,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), + Rectangle( + visible=use_inputFilter, + extent={{-34,-28},{32,32}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Ellipse( + visible=use_inputFilter, + extent={{-34,32},{32,-28}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), Text( - extent={{-86,72},{-64,50}}, - textColor={238,46,47}, - textString="hot", + visible=use_inputFilter, + extent={{-22,26},{20,-20}}, + textColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + textString="M", textStyle={TextStyle.Bold}), Text( - extent={{-86,-44},{-52,-74}}, - textColor={28,108,200}, - textStyle={TextStyle.Bold}, - textString="cold"), - Text( - extent={{10,36},{86,-34}}, - textColor={102,44,145}, - textStyle={TextStyle.Bold}, - textString="tempered")}), Diagram( + extent={{-42,58},{-162,8}}, + textColor={0,0,0}, + textString=DynamicSelect("", String(y, format=".2f"))), + Rectangle( + extent={{-40,22},{40,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={192,192,192}, + origin={-78,60}, + rotation=90), + Rectangle( + extent={{-22,22},{22,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={238,46,47}, + origin={-78,60}, + rotation=90), + Line( + visible=use_inputFilter, + points={{-32,-28},{28,-28}}), + Rectangle( + extent={{-40,22},{40,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={192,192,192}, + origin={-78,-60}, + rotation=90), + Rectangle( + extent={{-22,22},{22,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={28,108,200}, + origin={-78,-60}, + rotation=90), + Rectangle( + extent={{-40,22},{40,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={192,192,192}, + origin={78,0}, + rotation=90), + Rectangle( + extent={{-22,22},{22,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={102,44,145}, + origin={78,0}, + rotation=90)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end DomesticWaterMixer; From 9f901b528634d2865939d22d770d896d2ae91182 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Fri, 21 Oct 2022 11:46:59 -0700 Subject: [PATCH 031/183] reorganized DHW package to remove complete models from base classes --- .../AnnualScheduleDHWLoad.mo | 10 +++++++-- .../Heating/DHW/BaseClasses/package.order | 5 ----- .../{BaseClasses => }/DailyPeriodicDHWLoad.mo | 13 ++++++++---- ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 2 +- .../{BaseClasses => }/DomesticWaterMixer.mo | 10 +++++++-- .../DHC/Loads/Heating/DHW/Examples/DELETE.mo | 7 +++---- .../DHW/Examples/DomesticWaterFixture.mo | 21 +++++++++---------- .../DHW/Examples/DomesticWaterHeater.mo | 3 +-- .../Examples/DomesticWaterHeaterAndFixture.mo | 12 +++++------ .../HeatPumpWaterHeaterWithTank.mo | 14 ++++++------- .../DHC/Loads/Heating/DHW/package.order | 5 +++++ 11 files changed, 57 insertions(+), 45 deletions(-) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{BaseClasses => }/AnnualScheduleDHWLoad.mo (91%) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{BaseClasses => }/DailyPeriodicDHWLoad.mo (89%) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{BaseClasses => }/DirectHeatExchangerWaterHeaterWithAuxHeat.mo (98%) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{BaseClasses => }/DomesticWaterMixer.mo (96%) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{BaseClasses => }/HeatPumpWaterHeaterWithTank.mo (95%) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/AnnualScheduleDHWLoad.mo similarity index 91% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/AnnualScheduleDHWLoad.mo index b3d646ba5c4..2fd7dae9d36 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/AnnualScheduleDHWLoad.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/AnnualScheduleDHWLoad.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +within Buildings.Experimental.DHC.Loads.Heating.DHW; model AnnualScheduleDHWLoad "A model with an annual schedule of domestic water draws" replaceable package Medium = Buildings.Media.Water "Water media model"; @@ -68,6 +68,12 @@ equation lineThickness=0.5, smooth=Smooth.Bezier, fillColor={0,255,255}, - fillPattern=FillPattern.Solid)}), Diagram( + fillPattern=FillPattern.Solid), + Text( + extent={{-147,139},{153,99}}, + textColor={0,0,255}, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={0,127,255}, + textString="%name")}), Diagram( coordinateSystem(preserveAspectRatio=false))); end AnnualScheduleDHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order index 87f686423b8..eb2a1333c46 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order @@ -1,7 +1,2 @@ -DomesticWaterMixer PartialFourPortDHW -DirectHeatExchangerWaterHeaterWithAuxHeat -HeatPumpWaterHeaterWithTank -DailyPeriodicDHWLoad -AnnualScheduleDHWLoad DELETE diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DailyPeriodicDHWLoad.mo similarity index 89% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/DailyPeriodicDHWLoad.mo index 89b11b7ad0e..c04287b1ce4 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DailyPeriodicDHWLoad.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DailyPeriodicDHWLoad.mo @@ -1,6 +1,5 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; -model DailyPeriodicDHWLoad - "A model for a daily periodic domestic water draw" +within Buildings.Experimental.DHC.Loads.Heating.DHW; +model DailyPeriodicDHWLoad "A model for a daily periodic domestic water draw" replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; @@ -58,6 +57,12 @@ equation extent={{-70,70},{70,-70}}, lineColor={0,0,0}, pattern=LinePattern.Dash, - lineThickness=1)}), Diagram( + lineThickness=1), + Text( + extent={{-147,143},{153,103}}, + textColor={0,0,255}, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={0,127,255}, + textString="%name")}), Diagram( coordinateSystem(preserveAspectRatio=false))); end DailyPeriodicDHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo similarity index 98% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index a2fb5f62b10..0e9840e82a7 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +within Buildings.Experimental.DHC.Loads.Heating.DHW; model DirectHeatExchangerWaterHeaterWithAuxHeat "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" extends diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo similarity index 96% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index 5daa08a3ab0..b4a79710338 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +within Buildings.Experimental.DHC.Loads.Heating.DHW; model DomesticWaterMixer "A model for a domestic water mixer" replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; @@ -153,6 +153,12 @@ equation fillPattern=FillPattern.VerticalCylinder, fillColor={102,44,145}, origin={78,0}, - rotation=90)}), Diagram( + rotation=90), + Text( + extent={{-153,147},{147,107}}, + textColor={0,0,255}, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={0,127,255}, + textString="%name")}), Diagram( coordinateSystem(preserveAspectRatio=false))); end DomesticWaterMixer; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo index 662cc57adbc..46c5b2f345f 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo @@ -41,14 +41,13 @@ package DELETE "These models are outdated" use_m_flow_in=true, nPorts=1) "Sink for domestic hot water supply" annotation (Placement(transformation(extent={{48,38},{28,58}}))); - BaseClasses.DomesticWaterMixer tmv( + DomesticWaterMixer tmv( redeclare package Medium = Medium, - TSet(displayUnit = "degC") = TSetTw, + TSet(displayUnit="degC") = TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, k=k, - Ti=Ti) - "Ideal thermostatic mixing valve" + Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,40},{20,60}}))); Modelica.Blocks.Sources.Sine sine(f=0.001, offset=1) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index dd3c93d3645..053cef340e2 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -13,7 +13,7 @@ model DomesticWaterFixture controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); - BaseClasses.DomesticWaterMixer tmv( + DomesticWaterMixer tmv( redeclare package Medium = Medium, TSet=TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, @@ -22,12 +22,12 @@ model DomesticWaterFixture Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,70},{120,90}}), - iconTransformation(extent={{100,70},{120,90}}))); + annotation (Placement(transformation(extent={{100,50},{120,70}}), + iconTransformation(extent={{100,50},{120,70}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); - BaseClasses.DailyPeriodicDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) + DailyPeriodicDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Sources.Boundary_pT souDcw( @@ -42,9 +42,9 @@ model DomesticWaterFixture transformation( extent={{-10,-10},{10,10}}, rotation=0, - origin={-90,70}))); + origin={-90,50}))); equation - connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{0,6},{0,80},{110,80}}, + connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{14,6},{14,60},{110,60}}, color={0,0,127})); connect(tmv.port_tw, loaDHW.port_tw) annotation (Line(points={{-20,0},{20,0}}, color={0,127,255})); @@ -52,9 +52,8 @@ equation {110,-60}}, color={0,0,127})); connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-80,-50},{-60, -50},{-60,-6},{-40,-6}}, color={0,127,255})); - connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,70},{-60, - 70},{-60,6},{-40,6}}, - color={0,127,255})); + connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,50},{-46,50}, + {-46,6},{-40,6}}, color={0,127,255})); annotation (Documentation(info="

This is a single zone model based on the envelope of the BESTEST Case 600 @@ -79,6 +78,6 @@ First implementation. "), - Diagram(coordinateSystem(extent={{-100,-100},{100,120}})), - Icon(coordinateSystem(extent={{-100,-100},{100,120}}))); + Diagram(coordinateSystem(extent={{-100,-100},{100,100}})), + Icon(coordinateSystem(extent={{-100,-100},{100,100}}))); end DomesticWaterFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index e51a2a14c3d..7e88e3b6034 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -17,10 +17,9 @@ model DomesticWaterHeater annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=-90, origin={-30,30}))); - BaseClasses.DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( + DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( redeclare package Medium = Medium, havePEle=havePEle, - TSetHw(displayUnit="degC") = TSetHw, mHw_flow_nominal=mHw_flow_nominal, mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index b3ace3576c5..2c8b6b983fe 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -22,21 +22,19 @@ model DomesticWaterHeaterAndFixture annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=90, origin={-30,-50}))); - BaseClasses.HeatPumpWaterHeaterWithTank genDHW( + HeatPumpWaterHeaterWithTank genDHW( redeclare package Medium = Medium, havePEle=havePEle, - TSetHw(displayUnit="degC") = TSetHw, mHw_flow_nominal=mHw_flow_nominal, mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - BaseClasses.DomesticWaterMixer tmv( + DomesticWaterMixer tmv( redeclare package Medium = Medium, - TSet(displayUnit = "degC") = TSetTw, + TSet(displayUnit="degC") = TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, k=kCon, - Ti=Ti) - "Ideal thermostatic mixing valve" + Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); @@ -65,7 +63,7 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - BaseClasses.AnnualScheduleDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) + AnnualScheduleDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo similarity index 95% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 942a2ece987..67b412d0965 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; +within Buildings.Experimental.DHC.Loads.Heating.DHW; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" extends @@ -40,7 +40,7 @@ model HeatPumpWaterHeaterWithTank hHex_b=0.1, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, + allowFlowReversal=true, allowFlowReversalHex=false, mHex_flow_nominal=mHex_flow_nominal, TTan_nominal=293.15, @@ -61,12 +61,10 @@ equation connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, {-40,6},{-10,6}}, color={0,127,255})); connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40,56.2}, - {80,56.2},{80,6},{60,6}}, + {-20,56.2},{-20,40},{80,40},{80,6},{60,6}}, color={0,127,255})); connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0}, - {-60,14},{-12,14},{-12,9}}, color={0,0,127})); connect(tan.port_b, port_a1) annotation (Line(points={{-60,60},{-100,60}}, color={0,127,255})); connect(senTemTankOut.port_b, port_b1) @@ -75,8 +73,10 @@ equation -60},{20,-6},{10,-6}}, color={0,127,255})); connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{ -20,-60},{-20,-6},{-10,-6}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20}, - {80,-20},{80,0},{110,0}}, color={0,0,127})); + connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20},{70, + -20},{70,0},{110,0}}, color={0,0,127})); + connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0},{-60,20}, + {-20,20},{-20,8},{-12,8},{-12,9}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order index 045169d5c7d..69679535afd 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order @@ -1,2 +1,7 @@ +DomesticWaterMixer +DirectHeatExchangerWaterHeaterWithAuxHeat +HeatPumpWaterHeaterWithTank +DailyPeriodicDHWLoad +AnnualScheduleDHWLoad BaseClasses Examples From d61a8b0ae298e2a82605aabd6de77c2c5155e688 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Tue, 25 Oct 2022 17:11:53 -0700 Subject: [PATCH 032/183] updated HPWH specs to 50 gallon (really 45 gallon) Rheem or A.O. Smith --- .../DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 67b412d0965..7427757eaad 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -4,9 +4,9 @@ model HeatPumpWaterHeaterWithTank extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; + parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.1016 "Thickness of insulation"; parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; From 699a7c83a956115fd10697ef070e7da0278293bc Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 9 Nov 2022 16:53:46 -0800 Subject: [PATCH 033/183] adding parameter for controller type to TMV --- .../DHC/Loads/Heating/DHW/DomesticWaterMixer.mo | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index b4a79710338..44b416f89ac 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -1,24 +1,23 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model DomesticWaterMixer "A model for a domestic water mixer" replaceable package Medium = Buildings.Media.Water "Water media model"; + final parameter Modelica.Blocks.Types.SimpleController controllerType = Modelica.Blocks.Types.SimpleController.PI "Type of controller"; parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - conPID.controllerType == Modelica.Blocks.Types.SimpleController.PI or - conPID.controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = Medium) "Port for tempered water outlet" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Buildings.Controls.Continuous.LimPID conPID( - controllerType=Modelica.Blocks.Types.SimpleController.PI, + controllerType = controllerType, k=k, Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium - = Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" annotation (Placement(transformation(extent={{80,60},{60,80}}))); From b86bcd00bae5afc451d70db34573142bc6cc20fd Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 9 Nov 2022 16:54:17 -0800 Subject: [PATCH 034/183] adding nominal pressure drop across TMV for design flow of 6.5 gpm --- .../DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 053cef340e2..2dc046cc731 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -7,7 +7,7 @@ model DomesticWaterFixture parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = 0.1 "Design domestic hot water supply flow rate of system"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 85000 "Pressure difference for thermostatic mixing valve with nominal flow of 6.5gpm"; parameter Real kCon(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or From a7919c34b31f73110cd9dcb584516a5371ec7221 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 9 Nov 2022 16:55:35 -0800 Subject: [PATCH 035/183] adding circulation pump between heat pump and tank with flow as input --- .../Examples/DomesticWaterHeaterAndFixture.mo | 5 ++++ .../DHW/HeatPumpWaterHeaterWithTank.mo | 28 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 2c8b6b983fe..41c97cea0ac 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -69,6 +69,9 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); + Modelica.Blocks.Sources.Constant conuPumHw(k=0.5) + "Flow setpoint for circulation pump between heat pump and tank" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); @@ -93,5 +96,7 @@ equation annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-5},{80,-5},{80,-60}, {110,-60}}, color={0,0,127})); + connect(conuPumHw.y, genDHW.uPum) annotation (Line(points={{-79,30},{-60,30}, + {-60,2},{-41,2}}, color={0,0,127})); annotation (experiment(StopTime=3600, Interval=1)); end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 7427757eaad..9668786563c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -54,15 +54,29 @@ model HeatPumpWaterHeaterWithTank extent={{-10,-10},{10,10}}, rotation=0, origin={50,6}))); + Modelica.Blocks.Interfaces.RealInput uPum + "Control signal for pump serving source [0-1]" + annotation (Placement(transformation(extent={{-120,10},{-100,30}}), + iconTransformation(extent={{-120,10},{-100,30}}))); + Modelica.Blocks.Math.Gain gai(k=mHw_flow_nominal) + "Gain for control signal controlling source pump" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Fluid.Movers.FlowControlled_m_flow pumHw( + redeclare package Medium = Medium, + m_flow_nominal=mHw_flow_nominal, + addPowerToMedium=false, + nominalValuesDefineDefaultPressureCurve=true, + dp_nominal=0) "Pump to move water through the heat exchanger to the tank" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={50,40}))); equation connect(tan.port_a, senTemTankOut.port_a) annotation (Line(points={{-40,60},{-10,60}}, color={0,127,255})); connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, {-40,6},{-10,6}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-40,56.2}, - {-20,56.2},{-20,40},{80,40},{80,6},{60,6}}, - color={0,127,255})); connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); connect(tan.port_b, port_a1) @@ -77,6 +91,14 @@ equation -20},{70,0},{110,0}}, color={0,0,127})); connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0},{-60,20}, {-20,20},{-20,8},{-12,8},{-12,9}}, color={0,0,127})); + connect(senTemHPOut.port_b, pumHw.port_a) annotation (Line(points={{60,6},{80, + 6},{80,40},{60,40}}, color={0,127,255})); + connect(pumHw.port_b, tan.portHex_a) annotation (Line(points={{40,40},{-20,40}, + {-20,56.2},{-40,56.2}}, color={0,127,255})); + connect(gai.y, pumHw.m_flow_in) annotation (Line(points={{-59,30},{0,30},{0, + 20},{50,20},{50,28}}, color={0,0,127})); + connect(gai.u, uPum) annotation (Line(points={{-82,30},{-90,30},{-90,20},{ + -110,20}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, From 8bab34f643bd6dcf6f10333a73ae8b3fb5c78ad7 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 16 Nov 2022 13:08:27 -0800 Subject: [PATCH 036/183] added documentation to substation models --- ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 21 +++++++++++++- .../DHW/HeatPumpWaterHeaterWithTank.mo | 29 +++++++++++++++---- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index 0e9840e82a7..39f0d37870e 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -54,7 +54,26 @@ equation -60}}, color={0,127,255})); connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, -6}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (preferredView="info",Documentation(info=" +

+This model is an example of a domestic hot water (DHW) substation for a +low-temperature district heating (LTDH) network. It includes preheating by the +district and optional electric resistance to bring the temperature to setpoint. +

+

+For more info, please see Fig. 5 in Evaluations of different domestic hot water +preparing methods with ultra-low-temperature district heating by X. Yang, +H. Li, and S. Svendsen at +doi.org/10.1016/j.energy.2016.04.109. +

+", revisions=" +
    +
  • +November 16, 2022 by Dre Helmns:
    +Created substation model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 9668786563c..e9fc497b0f0 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -95,11 +95,30 @@ equation 6},{80,40},{60,40}}, color={0,127,255})); connect(pumHw.port_b, tan.portHex_a) annotation (Line(points={{40,40},{-20,40}, {-20,56.2},{-40,56.2}}, color={0,127,255})); - connect(gai.y, pumHw.m_flow_in) annotation (Line(points={{-59,30},{0,30},{0, - 20},{50,20},{50,28}}, color={0,0,127})); - connect(gai.u, uPum) annotation (Line(points={{-82,30},{-90,30},{-90,20},{ - -110,20}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + connect(gai.y, pumHw.m_flow_in) annotation (Line(points={{-59,30},{0,30},{0,20}, + {50,20},{50,28}}, color={0,0,127})); + connect(gai.u, uPum) annotation (Line(points={{-82,30},{-90,30},{-90,20},{-110, + 20}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This model is an example of a domestic hot water (DHW) substation for an +ultra-low-temperature district heating (ULTDH) network. It includes a micro heat +pump and storage tank with direct thermostatic mixing rather than heat exchange. +

+

+For more info, please see Fig. 3 in Evaluations of different domestic hot water +preparing methods with ultra-low-temperature district heating by X. Yang, +H. Li, and S. Svendsen at +doi.org/10.1016/j.energy.2016.04.109. +

+", revisions=" +
    +
  • +November 16, 2022 by Dre Helmns:
    +Created substation model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, From 5ec1aba1b598d775c6e60f8a2d8671467c0fcd27 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 16 Nov 2022 13:11:05 -0800 Subject: [PATCH 037/183] exposing eps and QMax_flow parameters for HX+ER substation --- .../DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo | 8 ++++++-- .../DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index 39f0d37870e..f6c4162abca 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -3,11 +3,15 @@ model DirectHeatExchangerWaterHeaterWithAuxHeat "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; + parameter Modelica.Units.SI.Efficiency eps(max=1) = eps "Heat exchanger effectiveness"; + parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = QMax_flow "Maximum heat flow rate for heating (positive)"; Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if havePEle == true "Supplemental electric resistance domestic hot water heater" + dp_nominal=0, + QMax_flow=QMax_flow) + if havePEle == true "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,16},{30,-4}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) @@ -19,7 +23,7 @@ model DirectHeatExchangerWaterHeaterWithAuxHeat m2_flow_nominal=mDH_flow_nominal, dp1_nominal=0, dp2_nominal=0, - eps=0.85) "Domestic hot water heater" + eps=eps) "Domestic hot water heater" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index 7e88e3b6034..b0d46514b7f 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -9,6 +9,8 @@ model DomesticWaterHeater parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; + parameter Modelica.Units.SI.Efficiency eps(max=1) = 0.8 "Heat exchanger effectiveness"; + parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for heating (positive)"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -21,7 +23,9 @@ model DomesticWaterHeater redeclare package Medium = Medium, havePEle=havePEle, mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" + mDH_flow_nominal=mDH_flow_nominal, + eps=eps, + QMax_flow=QMax_flow) "Generation of DHW" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Fluid.Sources.MassFlowSource_T sinDhw( redeclare package Medium = Medium, From f53f795254f4c4ef950e36189324fc6fce4e7e11 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 16 Nov 2022 13:13:32 -0800 Subject: [PATCH 038/183] adding hysteresis to control thermostatic mixing valve --- .../Loads/Heating/DHW/DomesticWaterMixer.mo | 38 +++++++++---------- .../DHW/Examples/DomesticWaterFixture.mo | 7 +++- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index 44b416f89ac..82b19f07687 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -6,6 +6,8 @@ model DomesticWaterMixer "A model for a domestic water mixer" parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real k(min=0) = 2 "Gain of controller"; + parameter Real uLow = uLow "low hysteresis threshold"; + parameter Real uHigh = uHigh "high hysteresis threshold"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = Medium) "Port for tempered water outlet" @@ -16,16 +18,16 @@ model DomesticWaterMixer "A model for a domestic water mixer" Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium + = Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" annotation (Placement(transformation(extent={{80,60},{60,80}}))); - Fluid.Actuators.Valves.ThreeWayLinear - ideValHea(redeclare package Medium = Medium, final m_flow_nominal= - mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) - "Ideal valve" annotation (Placement(transformation( + Fluid.Actuators.Valves.ThreeWayLinear ValHea( + redeclare package Medium = Medium, + final m_flow_nominal=mDhw_flow_nominal, + dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( + transformation( extent={{10,10},{-10,-10}}, rotation=180, origin={0,0}))); @@ -46,37 +48,35 @@ model DomesticWaterMixer "A model for a domestic water mixer" Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = Medium) "Mass flow rate of domestic hot water" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Blocks.Logical.GreaterThreshold greaterThreshold + Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) annotation (Placement(transformation(extent={{54,22},{44,32}}))); equation connect(conTSetCon.y, conPID.u_s) annotation (Line(points={{59,70},{42,70}}, color={0,0,127})); connect(senTemTw.T, conPID.u_m) annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); - connect(ideValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, + connect(ValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, ideValHea.y) annotation (Line(points={{19,70},{0,70},{0,12}, - {9.99201e-16,12}},color={0,0,127})); + connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ + 9.99201e-16,12}}, color={0,0,127})); connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,30},{34,30},{34, 40},{96,40},{96,60},{110,60}}, color={0,0,127})); - connect(ideValHea.port_1, senTemHw.port_b) - annotation (Line(points={{-10,1.77636e-15},{-10,0},{-20,0}}, - color={0,127,255})); + connect(ValHea.port_1, senTemHw.port_b) annotation (Line(points={{-10, + 1.77636e-15},{-10,0},{-20,0}}, color={0,127,255})); connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-54,0},{-54, 60},{-100,60}}, color={0,127,255})); - connect(ideValHea.port_3, senTemCw.port_b) - annotation (Line(points={{-1.77636e-15,-10},{-1.77636e-15,-60},{-20,-60}}, - color={0,127,255})); + connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, + -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); connect(senTemCw.port_a, port_cw) annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); connect(senTemTw.port_b, senFloDhw.port_a) annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); connect(senFloDhw.port_b, port_tw) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(greaterThreshold.u, senFloDhw.m_flow) + connect(hysteresis.u, senFloDhw.m_flow) annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); - connect(greaterThreshold.y, conPID.trigger) + connect(hysteresis.y, conPID.trigger) annotation (Line(points={{43.5,27},{38,27},{38,58}}, color={255,0,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 2dc046cc731..49a4a739bc1 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -12,6 +12,8 @@ model DomesticWaterFixture parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Real uLow = 0.1 "low hysteresis threshold"; + parameter Real uHigh = 0.9 "high hysteresis threshold"; DomesticWaterMixer tmv( redeclare package Medium = Medium, @@ -19,6 +21,8 @@ model DomesticWaterFixture mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, k=kCon, + uLow=uLow, + uHigh=uHigh, Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" @@ -27,7 +31,8 @@ model DomesticWaterFixture Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); - DailyPeriodicDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) + DailyPeriodicDHWLoad loaDHW(redeclare package Medium = Medium, + mDhw_flow_nominal=mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Sources.Boundary_pT souDcw( From bad491a35711ddaaf2a5948deaf93490a9c6cb9d Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 16 Nov 2022 13:15:34 -0800 Subject: [PATCH 039/183] exposing HPWH parameters; to be stored in records --- .../Examples/DomesticWaterHeaterAndFixture.mo | 39 +++++++++++++-- .../DHW/HeatPumpWaterHeaterWithTank.mo | 49 ++++++++++--------- 2 files changed, 62 insertions(+), 26 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 41c97cea0ac..7216c1bc174 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -14,6 +14,21 @@ model DomesticWaterHeaterAndFixture parameter Real kCon(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; + parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.1016 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal=mHex_flow_nominal*4200*20 "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Real uLow = 0.1 "low hysteresis threshold"; + parameter Real uHigh = 0.9 "high hysteresis threshold"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -26,7 +41,20 @@ model DomesticWaterHeaterAndFixture redeclare package Medium = Medium, havePEle=havePEle, mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" + mDH_flow_nominal=mDH_flow_nominal, + QCon_flow_max = QCon_flow_max, + QCon_flow_nominal=QCon_flow_nominal, + VTan=VTan, + hTan=hTan, + dIns=dIns, + kIns=kIns, + QTan_flow_nominal = QTan_flow_nominal, + hHex_a = hHex_a, + hHex_b = hHex_b, + mHex_flow_nominal = mHex_flow_nominal, + TTan_nominal = TTan_nominal, + THex_nominal = THex_nominal, + dpHex_nominal = dpHex_nominal) "Generation of DHW" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); DomesticWaterMixer tmv( redeclare package Medium = Medium, @@ -34,6 +62,8 @@ model DomesticWaterHeaterAndFixture mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, k=kCon, + uLow=uLow, + uHigh=uHigh, Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" @@ -63,7 +93,8 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - AnnualScheduleDHWLoad loaDHW(mDhw_flow_nominal=mDhw_flow_nominal) + AnnualScheduleDHWLoad loaDHW(redeclare package Medium = Medium, + mDhw_flow_nominal=mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" @@ -96,7 +127,7 @@ equation annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-5},{80,-5},{80,-60}, {110,-60}}, color={0,0,127})); - connect(conuPumHw.y, genDHW.uPum) annotation (Line(points={{-79,30},{-60,30}, - {-60,2},{-41,2}}, color={0,0,127})); + connect(conuPumHw.y, genDHW.uPum) annotation (Line(points={{-79,30},{-60,30},{ + -60,2},{-41,2}}, color={0,0,127})); annotation (experiment(StopTime=3600, Interval=1)); end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index e9fc497b0f0..6ce28b7de54 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -1,16 +1,21 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; + extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.1016 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + parameter Modelica.Units.SI.Volume VTan = VTan "Tank volume"; + parameter Modelica.Units.SI.Length hTan = hTan "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = dIns "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns = kIns "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal = dpHex_nominal "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = mHex_flow_nominal "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = QCon_flow_max "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = QCon_flow_nominal "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = QTan_flow_nominal "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a = hHex_a "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = hHex_b "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = TTan_nominal "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = THex_nominal "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) @@ -20,6 +25,7 @@ model HeatPumpWaterHeaterWithTank redeclare package Medium2 = Medium, m1_flow_nominal=mHw_flow_nominal, m2_flow_nominal=mDH_flow_nominal, + QCon_flow_max = QCon_flow_max, QCon_flow_nominal=QCon_flow_nominal, dp1_nominal=0, dp2_nominal=0) @@ -34,19 +40,18 @@ model HeatPumpWaterHeaterWithTank kIns=kIns, nSeg=5, redeclare package MediumHex = Medium, - CHex=40, - Q_flow_nominal=0.278*4200*20, - hHex_a=0.995, - hHex_b=0.1, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=true, - allowFlowReversalHex=false, - mHex_flow_nominal=mHex_flow_nominal, - TTan_nominal=293.15, - THex_nominal=323.15, - dpHex_nominal=dpHex_nominal) - "Hot water tank with heat exchanger configured as steady state" + Q_flow_nominal = QTan_flow_nominal, + hHex_a = hHex_a, + hHex_b = hHex_b, + energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, + energyDynamicsHex = Modelica.Fluid.Types.Dynamics.SteadyState, + allowFlowReversal = true, + allowFlowReversalHex = false, + mHex_flow_nominal = mHex_flow_nominal, + TTan_nominal = TTan_nominal, + THex_nominal = THex_nominal, + dpHex_nominal = dpHex_nominal) + "Hot water tank with heat exchanger configured as steady state, deleted CHex = 40" annotation (Placement(transformation(extent={{-40,50},{-60,70}}))); Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( From 72d78a611ee3dda1c04a3516d2f4557f6729fa38 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Mon, 21 Nov 2022 16:23:02 -0800 Subject: [PATCH 040/183] create package for data records to parameterize gen and load models --- Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo | 4 ++++ Buildings/Experimental/DHC/Loads/Heating/DHW/package.order | 1 + 2 files changed, 5 insertions(+) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo new file mode 100644 index 00000000000..f91e4eed003 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo @@ -0,0 +1,4 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW; +package Data "Library for DHW load profiles, equipment specifications, etc..." + +end Data; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order index 69679535afd..8c37450cc62 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order @@ -5,3 +5,4 @@ DailyPeriodicDHWLoad AnnualScheduleDHWLoad BaseClasses Examples +Data From 118b46fc0abf76ba9544997169f9884c9237af02 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Mon, 21 Nov 2022 16:23:32 -0800 Subject: [PATCH 041/183] add equipment specification records within new data package --- .../Data/DirectHeatExchangerWaterHeater.mo | 31 +++++++++++++ .../Heating/DHW/Data/HeatPumpWaterHeater.mo | 43 +++++++++++++++++++ .../DHC/Loads/Heating/DHW/Data/package.order | 2 + 3 files changed, 76 insertions(+) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo new file mode 100644 index 00000000000..cf40454273f --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo @@ -0,0 +1,31 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; +record DirectHeatExchangerWaterHeater + "Equipment specifications for a typical direct heat exchanger water heater" + parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; + parameter Modelica.Units.SI.Efficiency eps(max=1) = 0.8 "Heat exchanger effectiveness"; + parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for heating (positive)"; + + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + origin={0,-25}, + lineColor={64,64,64}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-100.0,-75.0},{100.0,75.0}}, + radius=25.0), + Line( + origin={0,-25}, + points={{0.0,75.0},{0.0,-75.0}}, + color={64,64,64}), + Line( + points={{-100,0},{100,0}}, + color={64,64,64}), + Line( + origin={0,-50}, + points={{-100.0,0.0},{100.0,0.0}}, + color={64,64,64}), + Text( + lineColor={0,0,255}, + extent={{-150,60},{150,100}}, + textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); +end DirectHeatExchangerWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo new file mode 100644 index 00000000000..b473befcd1d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo @@ -0,0 +1,43 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; +record HeatPumpWaterHeater + "Equipment specifications for a typical heat pump water heater" + parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; + parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.508 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*20 "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Integer nSeg(min=2) = 5 "Number of volume segments"; + + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + origin={0,-25}, + lineColor={64,64,64}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-100.0,-75.0},{100.0,75.0}}, + radius=25.0), + Line( + origin={0,-25}, + points={{0.0,75.0},{0.0,-75.0}}, + color={64,64,64}), + Line( + points={{-100,0},{100,0}}, + color={64,64,64}), + Line( + origin={0,-50}, + points={{-100.0,0.0},{100.0,0.0}}, + color={64,64,64}), + Text( + lineColor={0,0,255}, + extent={{-150,60},{150,100}}, + textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); +end HeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order new file mode 100644 index 00000000000..bf2db33f7d0 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order @@ -0,0 +1,2 @@ +HeatPumpWaterHeater +DirectHeatExchangerWaterHeater From 092c3a571a33d4637e88878df5d1f91f12ee26e6 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Mon, 21 Nov 2022 16:25:03 -0800 Subject: [PATCH 042/183] call data record to parameterize equipment in example models --- .../DHW/Examples/DomesticWaterHeater.mo | 16 +++--- .../Examples/DomesticWaterHeaterAndFixture.mo | 49 +++++++------------ 2 files changed, 25 insertions(+), 40 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index b0d46514b7f..4b18005e98b 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -8,9 +8,7 @@ model DomesticWaterHeater parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; - parameter Modelica.Units.SI.Efficiency eps(max=1) = 0.8 "Heat exchanger effectiveness"; - parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for heating (positive)"; + parameter Boolean havePEle = datGenDHW.havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -21,11 +19,11 @@ model DomesticWaterHeater origin={-30,30}))); DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( redeclare package Medium = Medium, - havePEle=havePEle, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - eps=eps, - QMax_flow=QMax_flow) "Generation of DHW" + havePEle = havePEle, + mHw_flow_nominal = mHw_flow_nominal, + mDH_flow_nominal = mDH_flow_nominal, + eps=datGenDHW.eps, + QMax_flow = datGenDHW.QMax_flow) "Generation of DHW" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Fluid.Sources.MassFlowSource_T sinDhw( redeclare package Medium = Medium, @@ -59,6 +57,8 @@ model DomesticWaterHeater Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); + replaceable Data.DirectHeatExchangerWaterHeater datGenDHW + annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); equation connect(conTSetHw.y, genDHW.TSetHw) annotation (Line(points={{-79,0},{-11,0}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 7216c1bc174..5f50867eec0 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -13,22 +13,9 @@ model DomesticWaterHeaterAndFixture parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; parameter Real kCon(min=0) = 2 "Gain of controller"; parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; - parameter Boolean havePEle=true "Flag that specifies whether electric power is required for water heating"; - parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.1016 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal=mHex_flow_nominal*4200*20 "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; parameter Real uLow = 0.1 "low hysteresis threshold"; parameter Real uHigh = 0.9 "high hysteresis threshold"; + parameter Boolean havePEle = datGenDHW.havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -42,19 +29,20 @@ model DomesticWaterHeaterAndFixture havePEle=havePEle, mHw_flow_nominal=mHw_flow_nominal, mDH_flow_nominal=mDH_flow_nominal, - QCon_flow_max = QCon_flow_max, - QCon_flow_nominal=QCon_flow_nominal, - VTan=VTan, - hTan=hTan, - dIns=dIns, - kIns=kIns, - QTan_flow_nominal = QTan_flow_nominal, - hHex_a = hHex_a, - hHex_b = hHex_b, - mHex_flow_nominal = mHex_flow_nominal, - TTan_nominal = TTan_nominal, - THex_nominal = THex_nominal, - dpHex_nominal = dpHex_nominal) "Generation of DHW" + QCon_flow_max = datGenDHW.QCon_flow_max, + QCon_flow_nominal=datGenDHW.QCon_flow_nominal, + VTan=datGenDHW.VTan, + hTan=datGenDHW.hTan, + dIns=datGenDHW.dIns, + kIns=datGenDHW.kIns, + QTan_flow_nominal = datGenDHW.QTan_flow_nominal, + hHex_a = datGenDHW.hHex_a, + hHex_b = datGenDHW.hHex_b, + mHex_flow_nominal = datGenDHW.mHex_flow_nominal, + TTan_nominal = datGenDHW.TTan_nominal, + THex_nominal = datGenDHW.THex_nominal, + dpHex_nominal = datGenDHW.dpHex_nominal, + nSeg=datGenDHW.nSeg) "Generation of DHW" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); DomesticWaterMixer tmv( redeclare package Medium = Medium, @@ -100,9 +88,8 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); - Modelica.Blocks.Sources.Constant conuPumHw(k=0.5) - "Flow setpoint for circulation pump between heat pump and tank" - annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); + replaceable Data.HeatPumpWaterHeater datGenDHW + annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); @@ -127,7 +114,5 @@ equation annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-5},{80,-5},{80,-60}, {110,-60}}, color={0,0,127})); - connect(conuPumHw.y, genDHW.uPum) annotation (Line(points={{-79,30},{-60,30},{ - -60,2},{-41,2}}, color={0,0,127})); annotation (experiment(StopTime=3600, Interval=1)); end DomesticWaterHeaterAndFixture; From b6937c147262bb4d64d789a226794c0d13fa428d Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Mon, 21 Nov 2022 16:26:08 -0800 Subject: [PATCH 043/183] clean up connections in DomesticWaterMixer model --- .../DHC/Loads/Heating/DHW/DomesticWaterMixer.mo | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index 82b19f07687..adca7c69555 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -49,7 +49,7 @@ model DomesticWaterMixer "A model for a domestic water mixer" Medium) "Mass flow rate of domestic hot water" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) - annotation (Placement(transformation(extent={{54,22},{44,32}}))); + annotation (Placement(transformation(extent={{56,24},{44,36}}))); equation connect(conTSetCon.y, conPID.u_s) annotation (Line(points={{59,70},{42,70}}, color={0,0,127})); @@ -59,13 +59,13 @@ equation {20,-6.66134e-16},{20,0}}, color={0,127,255})); connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ 9.99201e-16,12}}, color={0,0,127})); - connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,30},{34,30},{34, - 40},{96,40},{96,60},{110,60}}, - color={0,0,127})); + connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,40},{90,40},{90, + 60},{110,60}}, color={0,0,127})); connect(ValHea.port_1, senTemHw.port_b) annotation (Line(points={{-10, 1.77636e-15},{-10,0},{-20,0}}, color={0,127,255})); - connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-54,0},{-54, - 60},{-100,60}}, color={0,127,255})); + connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-60,0},{ + -60,60},{-100,60}}, + color={0,127,255})); connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); connect(senTemCw.port_a, port_cw) @@ -75,9 +75,10 @@ equation connect(senFloDhw.port_b, port_tw) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); connect(hysteresis.u, senFloDhw.m_flow) - annotation (Line(points={{55,27},{60,27},{60,11}}, color={0,0,127})); + annotation (Line(points={{57.2,30},{60,30},{60,11}}, + color={0,0,127})); connect(hysteresis.y, conPID.trigger) - annotation (Line(points={{43.5,27},{38,27},{38,58}}, color={255,0,255})); + annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, From 82d6ea44a74b7e8c64704610a887dc54bcbb52a6 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Mon, 21 Nov 2022 16:27:02 -0800 Subject: [PATCH 044/183] add PI control for HPWH pump flow --- .../DHW/HeatPumpWaterHeaterWithTank.mo | 64 ++++++++++++------- 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 6ce28b7de54..9ea4f7f2a52 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -52,58 +52,78 @@ model HeatPumpWaterHeaterWithTank THex_nominal = THex_nominal, dpHex_nominal = dpHex_nominal) "Hot water tank with heat exchanger configured as steady state, deleted CHex = 40" - annotation (Placement(transformation(extent={{-40,50},{-60,70}}))); + annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( + Medium, m_flow_nominal=mHex_flow_nominal) annotation (Placement( transformation( extent={{-10,-10},{10,10}}, rotation=0, origin={50,6}))); - Modelica.Blocks.Interfaces.RealInput uPum - "Control signal for pump serving source [0-1]" - annotation (Placement(transformation(extent={{-120,10},{-100,30}}), - iconTransformation(extent={{-120,10},{-100,30}}))); - Modelica.Blocks.Math.Gain gai(k=mHw_flow_nominal) + Modelica.Blocks.Math.Gain gai(k=mHex_flow_nominal) "Gain for control signal controlling source pump" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + annotation (Placement(transformation(extent={{20,80},{40,100}}))); Fluid.Movers.FlowControlled_m_flow pumHw( redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, + m_flow_nominal=mHex_flow_nominal, addPowerToMedium=false, nominalValuesDefineDefaultPressureCurve=true, dp_nominal=0) "Pump to move water through the heat exchanger to the tank" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, + extent={{-10,10},{10,-10}}, rotation=180, origin={50,40}))); + Controls.Continuous.LimPID conPI( + controllerType=Modelica.Blocks.Types.SimpleController.PI, + k=0.1, + Ti=120) annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TTan + "Temeprature of water in top of tank" + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + Modelica.Blocks.Math.Add add + "Gain for control signal controlling source pump" + annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); + Modelica.Blocks.Sources.Constant dTTanHex(k=5) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); equation connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-40,60},{-10,60}}, + annotation (Line(points={{-40,50},{-20,50},{-20,60},{0,60}}, color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,52}, - {-40,6},{-10,6}}, color={0,127,255})); + connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, + 6},{-10,6}}, color={0,127,255})); connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); connect(tan.port_b, port_a1) - annotation (Line(points={{-60,60},{-100,60}}, color={0,127,255})); + annotation (Line(points={{-60,50},{-80,50},{-80,60},{-100,60}}, + color={0,127,255})); connect(senTemTankOut.port_b, port_b1) - annotation (Line(points={{10,60},{100,60}}, color={0,127,255})); + annotation (Line(points={{20,60},{100,60}}, color={0,127,255})); connect(port_a2, heaPum.port_a2) annotation (Line(points={{100,-60},{20, -60},{20,-6},{10,-6}}, color={0,127,255})); connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{ -20,-60},{-20,-6},{-10,-6}}, color={0,127,255})); connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20},{70, -20},{70,0},{110,0}}, color={0,0,127})); - connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-60,0},{-60,20}, - {-20,20},{-20,8},{-12,8},{-12,9}}, color={0,0,127})); connect(senTemHPOut.port_b, pumHw.port_a) annotation (Line(points={{60,6},{80, 6},{80,40},{60,40}}, color={0,127,255})); connect(pumHw.port_b, tan.portHex_a) annotation (Line(points={{40,40},{-20,40}, - {-20,56.2},{-40,56.2}}, color={0,127,255})); - connect(gai.y, pumHw.m_flow_in) annotation (Line(points={{-59,30},{0,30},{0,20}, - {50,20},{50,28}}, color={0,0,127})); - connect(gai.u, uPum) annotation (Line(points={{-82,30},{-90,30},{-90,20},{-110, - 20}}, color={0,0,127})); + {-20,46.2},{-40,46.2}}, color={0,127,255})); + connect(gai.y, pumHw.m_flow_in) annotation (Line(points={{41,90},{50,90},{50,52}}, + color={0,0,127})); + connect(tan.heaPorVol[nSeg-1], TTan.port) annotation (Line(points={{-50,50},{-44, + 50},{-44,70},{-40,70}}, color={191,0,0})); + connect(TTan.T, conPI.u_m) + annotation (Line(points={{-19,70},{-10,70},{-10,78}}, color={0,0,127})); + connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-90,0},{-90,90}, + {-22,90}}, color={0,0,127})); + connect(conPI.y, gai.u) + annotation (Line(points={{1,90},{18,90}}, color={0,0,127})); + connect(TSetHw, add.u1) annotation (Line(points={{-110,0},{-80,0},{-80,6},{-72, + 6}}, color={0,0,127})); + connect(dTTanHex.y, add.u2) annotation (Line(points={{-79,-30},{-76,-30},{-76, + -6},{-72,-6}}, color={0,0,127})); + connect(heaPum.TSet, add.y) annotation (Line(points={{-12,9},{-20,9},{-20,0},{ + -49,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From f4eddd9691e4fd6c4978af36e37f376e6f24239f Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Mon, 21 Nov 2022 16:28:15 -0800 Subject: [PATCH 045/183] update parameterization within HPWH model --- .../DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 9ea4f7f2a52..7c21bcd7b00 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -16,14 +16,15 @@ model HeatPumpWaterHeaterWithTank parameter Modelica.Units.SI.Height hHex_b = hHex_b "Height of portHex_b of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Temperature TTan_nominal = TTan_nominal "Temperature of fluid inside the tank at nominal heat transfer conditions"; parameter Modelica.Units.SI.Temperature THex_nominal = THex_nominal "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Integer nSeg(min=2) = nSeg "Number of volume segments"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + annotation (Placement(transformation(extent={{0,50},{20,70}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, + m1_flow_nominal=mHex_flow_nominal, m2_flow_nominal=mDH_flow_nominal, QCon_flow_max = QCon_flow_max, QCon_flow_nominal=QCon_flow_nominal, @@ -38,7 +39,7 @@ model HeatPumpWaterHeaterWithTank hTan=hTan, dIns=dIns, kIns=kIns, - nSeg=5, + nSeg=nSeg, redeclare package MediumHex = Medium, Q_flow_nominal = QTan_flow_nominal, hHex_a = hHex_a, From df62e7e6e77fcbe039797f50fbbf389257c08189 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 12:20:19 -0800 Subject: [PATCH 046/183] debugged HPWH model --- .../DHW/HeatPumpWaterHeaterWithTank.mo | 163 ++++++++++-------- 1 file changed, 91 insertions(+), 72 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 7c21bcd7b00..5fc0daef3b9 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -1,59 +1,42 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" - extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; + extends + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW(mHw_flow_nominal=0.1,mDH_flow_nominal=1); - parameter Modelica.Units.SI.Volume VTan = VTan "Tank volume"; - parameter Modelica.Units.SI.Length hTan = hTan "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = dIns "Thickness of insulation"; + parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; parameter Modelica.Units.SI.ThermalConductivity kIns = kIns "Specific heat conductivity of insulation"; parameter Modelica.Units.SI.PressureDifference dpHex_nominal = dpHex_nominal "Pressure drop across the heat exchanger at nominal conditions"; parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = mHex_flow_nominal "Mass flow rate of heat exchanger"; parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = QCon_flow_max "Maximum heating flow rate"; parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = QCon_flow_nominal "Nominal heating flow rate"; parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = QTan_flow_nominal "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = hHex_a "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = hHex_b "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = TTan_nominal "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = THex_nominal "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Integer nSeg(min=2) = nSeg "Number of volume segments"; + parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = 333.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal=-5 "Temperature difference evaporator inlet-outlet"; + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal=10 "Temperature difference condenser outlet-inlet"; + parameter Integer nSeg(min=2) = 5 "Number of volume segments"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{0,50},{20,70}}))); + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, m1_flow_nominal=mHex_flow_nominal, m2_flow_nominal=mDH_flow_nominal, + dTEva_nominal=dTEva_nominal, + dTCon_nominal=dTCon_nominal, QCon_flow_max = QCon_flow_max, QCon_flow_nominal=QCon_flow_nominal, - dp1_nominal=0, - dp2_nominal=0) + dp1_nominal=5000, + dp2_nominal=5000) "Domestic hot water heater" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Fluid.Storage.StratifiedEnhancedInternalHex tan( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - VTan=VTan, - hTan=hTan, - dIns=dIns, - kIns=kIns, - nSeg=nSeg, - redeclare package MediumHex = Medium, - Q_flow_nominal = QTan_flow_nominal, - hHex_a = hHex_a, - hHex_b = hHex_b, - energyDynamics = Modelica.Fluid.Types.Dynamics.FixedInitial, - energyDynamicsHex = Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal = true, - allowFlowReversalHex = false, - mHex_flow_nominal = mHex_flow_nominal, - TTan_nominal = TTan_nominal, - THex_nominal = THex_nominal, - dpHex_nominal = dpHex_nominal) - "Hot water tank with heat exchanger configured as steady state, deleted CHex = 40" - annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = Medium, m_flow_nominal=mHex_flow_nominal) annotation (Placement( transformation( @@ -63,58 +46,66 @@ model HeatPumpWaterHeaterWithTank Modelica.Blocks.Math.Gain gai(k=mHex_flow_nominal) "Gain for control signal controlling source pump" annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Fluid.Movers.FlowControlled_m_flow pumHw( - redeclare package Medium = Medium, - m_flow_nominal=mHex_flow_nominal, - addPowerToMedium=false, - nominalValuesDefineDefaultPressureCurve=true, - dp_nominal=0) "Pump to move water through the heat exchanger to the tank" - annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=180, - origin={50,40}))); Controls.Continuous.LimPID conPI( controllerType=Modelica.Blocks.Types.SimpleController.PI, k=0.1, Ti=120) annotation (Placement(transformation(extent={{-20,80},{0,100}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TTan - "Temeprature of water in top of tank" - annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); Modelica.Blocks.Math.Add add "Gain for control signal controlling source pump" annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); Modelica.Blocks.Sources.Constant dTTanHex(k=5) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); + Modelica.Blocks.Math.Add QEva_flow(k2=-1) "Evaporator heat flow rate" + annotation (Placement(transformation(extent={{28,-50},{48,-30}}))); + Modelica.Blocks.Math.Gain mEva_flow(k=-1/4184/dTEva_nominal) + "Evaporator mass flow rate" + annotation (Placement(transformation(extent={{56,-50},{76,-30}}))); + Fluid.Movers.FlowControlled_m_flow pumDH( + inputType=Buildings.Fluid.Types.InputType.Continuous, + redeclare package Medium = Medium, + m_flow_nominal=mDH_flow_nominal, + use_inputFilter=false, + massFlowRates={0,0.5,1}*mDH_flow_nominal, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) + "Pump with m_flow input" + annotation (Placement(transformation(extent={{60,-90},{40,-70}}))); + Fluid.Movers.FlowControlled_m_flow pumHex( + inputType=Buildings.Fluid.Types.InputType.Continuous, + redeclare package Medium = Medium, + m_flow_nominal=mHex_flow_nominal, + use_inputFilter=false, + massFlowRates={0,0.5,1}*mHex_flow_nominal, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) + "Pump with m_flow input" + annotation (Placement(transformation(extent={{60,30},{40,50}}))); + Fluid.Storage.StratifiedEnhancedInternalHex + tanSte(energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + redeclare package Medium = Medium, + redeclare package MediumHex = Medium, + hTan=hTan, + dIns=dIns, + VTan=VTan, + nSeg=nSeg, + hHex_a=hHex_a, + hHex_b=hHex_b, + Q_flow_nominal=QTan_flow_nominal, + TTan_nominal=TTan_nominal, + THex_nominal=THex_nominal, + mHex_flow_nominal=mHex_flow_nominal, + show_T=true, + m_flow_nominal=mHw_flow_nominal) + "Tank with steady-state heat exchanger balance" + annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); equation - connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-40,50},{-20,50},{-20,60},{0,60}}, - color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, - 6},{-10,6}}, color={0,127,255})); connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(tan.port_b, port_a1) - annotation (Line(points={{-60,50},{-80,50},{-80,60},{-100,60}}, - color={0,127,255})); connect(senTemTankOut.port_b, port_b1) - annotation (Line(points={{20,60},{100,60}}, color={0,127,255})); - connect(port_a2, heaPum.port_a2) annotation (Line(points={{100,-60},{20, - -60},{20,-6},{10,-6}}, color={0,127,255})); - connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{ - -20,-60},{-20,-6},{-10,-6}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{11,0},{30,0},{30,-20},{70, - -20},{70,0},{110,0}}, color={0,0,127})); - connect(senTemHPOut.port_b, pumHw.port_a) annotation (Line(points={{60,6},{80, - 6},{80,40},{60,40}}, color={0,127,255})); - connect(pumHw.port_b, tan.portHex_a) annotation (Line(points={{40,40},{-20,40}, - {-20,46.2},{-40,46.2}}, color={0,127,255})); - connect(gai.y, pumHw.m_flow_in) annotation (Line(points={{41,90},{50,90},{50,52}}, - color={0,0,127})); - connect(tan.heaPorVol[nSeg-1], TTan.port) annotation (Line(points={{-50,50},{-44, - 50},{-44,70},{-40,70}}, color={191,0,0})); - connect(TTan.T, conPI.u_m) - annotation (Line(points={{-19,70},{-10,70},{-10,78}}, color={0,0,127})); + annotation (Line(points={{0,60},{100,60}}, color={0,127,255})); + connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-10,-60}, + {-10,-6}}, color={0,127,255})); + connect(heaPum.P, PEle) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, + {76,0},{110,0}}, color={0,0,127})); connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-90,0},{-90,90}, {-22,90}}, color={0,0,127})); connect(conPI.y, gai.u) @@ -125,6 +116,34 @@ equation -6},{-72,-6}}, color={0,0,127})); connect(heaPum.TSet, add.y) annotation (Line(points={{-12,9},{-20,9},{-20,0},{ -49,0}}, color={0,0,127})); + connect(senTemTankOut.T, conPI.u_m) + annotation (Line(points={{-10,71},{-10,78}}, color={0,0,127})); + connect(heaPum.QCon_flow, QEva_flow.u1) annotation (Line(points={{11,9},{16,9}, + {16,-34},{26,-34}}, color={0,0,127})); + connect(heaPum.P, QEva_flow.u2) annotation (Line(points={{11,0},{20,0},{20,-46}, + {26,-46}}, color={0,0,127})); + connect(QEva_flow.y, mEva_flow.u) + annotation (Line(points={{49,-40},{54,-40}}, color={0,0,127})); + connect(port_a2, pumDH.port_a) annotation (Line(points={{100,-60},{90,-60},{90, + -80},{60,-80}}, color={0,127,255})); + connect(pumDH.port_b, heaPum.port_a2) + annotation (Line(points={{40,-80},{10,-80},{10,-6}}, color={0,127,255})); + connect(mEva_flow.y, pumDH.m_flow_in) annotation (Line(points={{77,-40},{80,-40}, + {80,-60},{50,-60},{50,-68}}, color={0,0,127})); + connect(gai.y, pumHex.m_flow_in) + annotation (Line(points={{41,90},{50,90},{50,52}}, color={0,0,127})); + connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{80, + 40},{80,6},{60,6}}, color={0,127,255})); + connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{ + -30,40},{-30,46.2},{-40,46.2}}, + color={0,127,255})); + connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, + 20},{-10,20},{-10,6}}, color={0,127,255})); + connect(tanSte.port_a, senTemTankOut.port_a) annotation (Line(points={{-40,50}, + {-30,50},{-30,60},{-20,60}}, color={0,127,255})); + connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{ + -80,60},{-100,60}}, + color={0,127,255})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 53482ee43a67a889eb79a2f7b2652a5f5f1db65c Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 13:28:51 -0800 Subject: [PATCH 047/183] updating HPWH parametrization: model requires hTan have a non-zero value --- .../DHW/HeatPumpWaterHeaterWithTank.mo | 45 +++++++++---------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 5fc0daef3b9..1c15d0792d4 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -2,24 +2,25 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW(mHw_flow_nominal=0.1,mDH_flow_nominal=1); + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW(mDH_flow_nominal = 1); + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.1 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = kIns "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = dpHex_nominal "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = mHex_flow_nominal "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = QCon_flow_max "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = QCon_flow_nominal "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = QTan_flow_nominal "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 333.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal=-5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal=10 "Temperature difference condenser outlet-inlet"; - parameter Integer nSeg(min=2) = 5 "Number of volume segments"; + parameter Modelica.Units.SI.Length hTan = 1 "Height of tank (without insulation)"; + parameter Integer nSeg(min=4) = 5 "Number of volume segments"; + + parameter Modelica.Units.SI.Volume VTan "Tank volume"; + parameter Modelica.Units.SI.Length dIns "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal "Temperature difference evaporator inlet-outlet"; + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal "Temperature difference condenser outlet-inlet"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) @@ -134,16 +135,14 @@ equation annotation (Line(points={{41,90},{50,90},{50,52}}, color={0,0,127})); connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{80, 40},{80,6},{60,6}}, color={0,127,255})); - connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{ - -30,40},{-30,46.2},{-40,46.2}}, - color={0,127,255})); + connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{-30, + 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, 20},{-10,20},{-10,6}}, color={0,127,255})); connect(tanSte.port_a, senTemTankOut.port_a) annotation (Line(points={{-40,50}, {-30,50},{-30,60},{-20,60}}, color={0,127,255})); - connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{ - -80,60},{-100,60}}, - color={0,127,255})); + connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, + 60},{-100,60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 9cb7e09a976efd43f7dfe1a5b8aeb6a066bfb326 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 14:44:24 -0800 Subject: [PATCH 048/183] updating annotation for generation and fixture models --- .../DHW/BaseClasses/PartialFourPortDHW.mo | 13 ++++++++++++- ...DirectHeatExchangerWaterHeaterWithAuxHeat.mo | 4 ++-- .../DHC/Loads/Heating/DHW/DomesticWaterMixer.mo | 13 ++++++++++++- .../Heating/DHW/Examples/DomesticWaterHeater.mo | 13 ++++++++++++- .../Examples/DomesticWaterHeaterAndFixture.mo | 17 +++++++++++++++-- .../Heating/DHW/HeatPumpWaterHeaterWithTank.mo | 4 ++-- 6 files changed, 55 insertions(+), 9 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo index 0ec7411c60f..57ed4db323b 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo @@ -15,6 +15,17 @@ partial model PartialFourPortDHW Modelica.Blocks.Interfaces.RealInput TSetHw "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + annotation (preferredView="info",Documentation(info=" +

+This partial model can be used for different domestic hot water generation methods. +

+", revisions=" +
    +
  • +September 29, 2022 by Dre Helmns:
    +Created partial model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false))); end PartialFourPortDHW; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index f6c4162abca..1476b2b2ab7 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -73,8 +73,8 @@ doi.org/10.1016/j.energy.2016.04.109. ", revisions="
  • -November 16, 2022 by Dre Helmns:
    -Created substation model. +June 16, 2022 by Dre Helmns:
    +Created generation model.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index adca7c69555..6a261ce0612 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -79,7 +79,18 @@ equation color={0,0,127})); connect(hysteresis.y, conPID.trigger) annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (preferredView="info",Documentation(info=" +

+This model is for a domestic water mixer, mixing hot and cold fluid to achieve a specified tempered outlet temperature. +

+", revisions=" +
    +
  • +June 16, 2022 by Dre Helmns:
    +Created valve model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index 4b18005e98b..edff5814b4e 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -76,5 +76,16 @@ equation {2.05391e-15,-60},{60,-60},{60,60},{38,60},{38,42}}, color={0,0,127})); connect(genDHW.port_b1, sinDhw.ports[1]) annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); - annotation (experiment(StopTime=3600, Interval=1)); + annotation (preferredView="info",Documentation(info=" +

+This is an example of a domestic water heater. +

+", revisions=" +
    +
  • +June 21, 2022 by Dre Helmns:
    +Created example. +
  • +
+"),experiment(StopTime=3600, Interval=1)); end DomesticWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 5f50867eec0..2084b0d2241 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -112,7 +112,20 @@ equation -31,-30},{-50,-30},{-50,6},{-40,6}}, color={0,127,255})); connect(tmv.port_tw, loaDHW.port_tw) annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-5},{80,-5},{80,-60}, + connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-8},{80,-8},{80,-60}, {110,-60}}, color={0,0,127})); - annotation (experiment(StopTime=3600, Interval=1)); + connect(loaDHW.schDhw, schDhw.y[1]) + annotation (Line(points={{61,2},{74,2},{74,30},{79,30}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This is an example of a domestic water heater and fixture. +

+", revisions=" +
    +
  • +October 20, 2022 by Dre Helmns:
    +Created example. +
  • +
+"),experiment(StopTime=3600, Interval=1)); end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 1c15d0792d4..f403031abd2 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -158,8 +158,8 @@ doi.org/10.1016/j.energy.2016.04.109. ", revisions="
  • -November 16, 2022 by Dre Helmns:
    -Created substation model. +July 7, 2022 by Dre Helmns:
    +Created generation model.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ From 400919ae282d7770d4ba27708e462a5b0212b620 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 14:47:48 -0800 Subject: [PATCH 049/183] update records in data package --- ... GenericDirectHeatExchangerWaterHeater.mo} | 19 +++++-- .../DHW/Data/GenericHeatPumpWaterHeater.mo | 56 +++++++++++++++++++ .../DHC/Loads/Heating/DHW/Data/package.mo | 2 +- .../DHC/Loads/Heating/DHW/Data/package.order | 3 +- .../DHW/Examples/DomesticWaterHeater.mo | 2 +- 5 files changed, 75 insertions(+), 7 deletions(-) rename Buildings/Experimental/DHC/Loads/Heating/DHW/Data/{DirectHeatExchangerWaterHeater.mo => GenericDirectHeatExchangerWaterHeater.mo} (70%) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo similarity index 70% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo index cf40454273f..847167a9f2a 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/DirectHeatExchangerWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo @@ -1,11 +1,22 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; -record DirectHeatExchangerWaterHeater - "Equipment specifications for a typical direct heat exchanger water heater" +record GenericDirectHeatExchangerWaterHeater + "Equipment specifications for a generic direct heat exchanger water heater" parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; parameter Modelica.Units.SI.Efficiency eps(max=1) = 0.8 "Heat exchanger effectiveness"; parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for heating (positive)"; - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (preferredView="info",Documentation(info=" +

+This record corresponds to a generic direct heat exchanger water heater. +

+", revisions=" +
    +
  • +November 22, 2022 by Dre Helmns:
    +Created record. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( origin={0,-25}, lineColor={64,64,64}, @@ -28,4 +39,4 @@ record DirectHeatExchangerWaterHeater lineColor={0,0,255}, extent={{-150,60},{150,100}}, textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end DirectHeatExchangerWaterHeater; +end GenericDirectHeatExchangerWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo new file mode 100644 index 00000000000..d44ad58601e --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo @@ -0,0 +1,56 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; +record GenericHeatPumpWaterHeater + "Equipment specifications for a generic heat pump water heater" + parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; + parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = 333.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; + parameter Integer nSeg(min=4) = 5 "Number of volume segments"; + + annotation (preferredView="info",Documentation(info=" +

+This record corresponds to a generic heat pump water heater. +

+", revisions=" +
    +
  • +November 22, 2022 by Dre Helmns:
    +Created record. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + origin={0,-25}, + lineColor={64,64,64}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-100.0,-75.0},{100.0,75.0}}, + radius=25.0), + Line( + origin={0,-25}, + points={{0.0,75.0},{0.0,-75.0}}, + color={64,64,64}), + Line( + points={{-100,0},{100,0}}, + color={64,64,64}), + Line( + origin={0,-50}, + points={{-100.0,0.0},{100.0,0.0}}, + color={64,64,64}), + Text( + lineColor={0,0,255}, + extent={{-150,60},{150,100}}, + textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); +end GenericHeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo index f91e4eed003..dc5bc14869c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo @@ -1,4 +1,4 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; package Data "Library for DHW load profiles, equipment specifications, etc..." - + end Data; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order index bf2db33f7d0..696aeabf519 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order @@ -1,2 +1,3 @@ HeatPumpWaterHeater -DirectHeatExchangerWaterHeater +GenericDirectHeatExchangerWaterHeater +GenericHeatPumpWaterHeater diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index edff5814b4e..b435a96c82e 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -57,7 +57,7 @@ model DomesticWaterHeater Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - replaceable Data.DirectHeatExchangerWaterHeater datGenDHW + replaceable Data.GenericDirectHeatExchangerWaterHeater datGenDHW annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); equation connect(conTSetHw.y, genDHW.TSetHw) From 18ce461c6565e054a3b7876fec5bc87eb67c82c5 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 14:49:14 -0800 Subject: [PATCH 050/183] include HP dT as parameters in HPWH model --- .../Heating/DHW/Data/HeatPumpWaterHeater.mo | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo index b473befcd1d..8ceeb6e8d3f 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo @@ -10,14 +10,27 @@ record HeatPumpWaterHeater parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*20 "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Integer nSeg(min=2) = 5 "Number of volume segments"; + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; + parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (preferredView="info",Documentation(info=" +

+This record corresponds to a 50-gallon Rheem or A.O. Smith heat pump water heater that would commonly be used in a single apartment unit of a multifamily residential building. +

+", revisions=" +
    +
  • +November 22, 2022 by Dre Helmns:
    +Created record. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( origin={0,-25}, lineColor={64,64,64}, From b888611382aa9293605ce820f1f97b2e3bc17fa8 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 14:53:18 -0800 Subject: [PATCH 051/183] move one of the DHW load models to delete folder --- .../DHW/{ => DELETE}/AnnualScheduleDHWLoad.mo | 15 +++++++++++++-- .../DHC/Loads/Heating/DHW/DELETE/package.mo | 3 +++ .../DHC/Loads/Heating/DHW/DELETE/package.order | 1 + .../DHC/Loads/Heating/DHW/package.order | 4 ++-- 4 files changed, 19 insertions(+), 4 deletions(-) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{ => DELETE}/AnnualScheduleDHWLoad.mo (91%) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/AnnualScheduleDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo similarity index 91% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/AnnualScheduleDHWLoad.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo index 2fd7dae9d36..916857997d6 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/AnnualScheduleDHWLoad.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; +within Buildings.Experimental.DHC.Loads.Heating.DHW.DELETE; model AnnualScheduleDHWLoad "A model with an annual schedule of domestic water draws" replaceable package Medium = Buildings.Media.Water "Water media model"; @@ -36,7 +36,18 @@ equation annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); connect(schDhw.y[1], gaiDhw.u) annotation (Line(points={{79,20},{62,20}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (preferredView="info",Documentation(info=" +

+This model is for connecting domestic hot water load schedules. +

+", revisions=" +
    +
  • +October 20, 2022 by Dre Helmns:
    +Created load model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo new file mode 100644 index 00000000000..3401fe66e14 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo @@ -0,0 +1,3 @@ +within Buildings.Experimental.DHC.Loads.Heating.DHW; +package DELETE "These are DHW models to be deleted" +end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order new file mode 100644 index 00000000000..8aacf68236d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order @@ -0,0 +1 @@ +AnnualScheduleDHWLoad diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order index 8c37450cc62..76426d661db 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order @@ -1,8 +1,8 @@ DomesticWaterMixer DirectHeatExchangerWaterHeaterWithAuxHeat HeatPumpWaterHeaterWithTank -DailyPeriodicDHWLoad -AnnualScheduleDHWLoad +DHWLoad +DELETE BaseClasses Examples Data From 6a58dd96a6ddeb52aaf7f46ac87f58a362abaf34 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 14:55:16 -0800 Subject: [PATCH 052/183] refactor models with DHW load that has schedule as an input --- .../{DailyPeriodicDHWLoad.mo => DHWLoad.mo} | 42 +++++++++++-------- .../DHW/Examples/DomesticWaterFixture.mo | 39 +++++++++-------- .../Examples/DomesticWaterHeaterAndFixture.mo | 18 ++++++-- 3 files changed, 57 insertions(+), 42 deletions(-) rename Buildings/Experimental/DHC/Loads/Heating/DHW/{DailyPeriodicDHWLoad.mo => DHWLoad.mo} (68%) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DailyPeriodicDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo similarity index 68% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/DailyPeriodicDHWLoad.mo rename to Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo index c04287b1ce4..c529029027c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DailyPeriodicDHWLoad.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo @@ -1,5 +1,5 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; -model DailyPeriodicDHWLoad "A model for a daily periodic domestic water draw" +model DHWLoad "A model for domestic water draws" replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; @@ -12,33 +12,39 @@ model DailyPeriodicDHWLoad "A model for a daily periodic domestic water draw" annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" annotation (Placement(transformation(extent={{60,10},{40,30}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=false, - table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5,0.3; - 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11,0.6; 3600 - *12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; 3600*17,0.7; - 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600*22,0.5; 3600*23, - 0.3; 3600*24,0.1], - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,10},{80,30}}))); Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}), - iconTransformation(extent={{100,-60},{120,-40}}))); + annotation (Placement(transformation(extent={{100,-82},{120,-62}}), + iconTransformation(extent={{100,-82},{120,-62}}))); + Modelica.Blocks.Interfaces.RealInput schDhw + "Domestic hot water fraction schedule" annotation (Placement(transformation( + extent={{120,20},{100,40}}), iconTransformation(extent={{120,20},{100, + 40}}))); equation connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, {-20,8},{-44,8}}, color={0,0,127})); connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, {39,20}}, color={0,0,127})); connect(watCon.y, mDhw) - annotation (Line(points={{61,-80},{110,-80}}, color={0,0,127})); + annotation (Line(points={{61,-80},{86,-80},{86,-72},{110,-72}}, + color={0,0,127})); connect(sinDhw.ports[1], port_tw) annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); - connect(schDhw.y[1], gaiDhw.u) - annotation (Line(points={{79,20},{62,20}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + connect(schDhw, gaiDhw.u) annotation (Line(points={{110,30},{86,30},{86,20},{ + 62,20}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This model is for connecting domestic hot water load schedules. +

+", revisions=" +
    +
  • +October 20, 2022 by Dre Helmns:
    +Created load model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, @@ -65,4 +71,4 @@ equation fillColor={0,127,255}, textString="%name")}), Diagram( coordinateSystem(preserveAspectRatio=false))); -end DailyPeriodicDHWLoad; +end DHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 49a4a739bc1..ea33e12b036 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -31,9 +31,8 @@ model DomesticWaterFixture Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); - DailyPeriodicDHWLoad loaDHW(redeclare package Medium = Medium, - mDhw_flow_nominal=mDhw_flow_nominal) - "load for DHW" + DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= + mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -48,38 +47,38 @@ model DomesticWaterFixture extent={{-10,-10},{10,10}}, rotation=0, origin={-90,50}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw( + tableOnFile=false, + table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5, + 0.3; 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11, + 0.6; 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; + 3600*17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600* + 22,0.5; 3600*23,0.3; 3600*24,0.1], + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{100,20},{80,40}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{14,6},{14,60},{110,60}}, color={0,0,127})); connect(tmv.port_tw, loaDHW.port_tw) annotation (Line(points={{-20,0},{20,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-5},{60,-5},{60,-60}, + connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-8},{60,-8},{60,-60}, {110,-60}}, color={0,0,127})); connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-80,-50},{-60, -50},{-60,-6},{-40,-6}}, color={0,127,255})); connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,50},{-46,50}, {-46,6},{-40,6}}, color={0,127,255})); -annotation (Documentation(info=" + connect(schDhw.y[1], loaDHW.schDhw) + annotation (Line(points={{79,30},{60,30},{60,2},{41,2}}, color={0,0,127})); +annotation (preferredView="info",Documentation(info="

-This is a single zone model based on the envelope of the BESTEST Case 600 -building, though it has some modifications. Supply and return air ports are -included for simulation with air-based HVAC systems. Heating and cooling -setpoints and internal loads are time-varying according to an assumed -occupancy schedule. -

-

-This zone model utilizes schedules and constructions from -the Schedules and Constructions packages. +This is an example of a domestic water fixture.

", revisions="
  • -June 21, 2017, by Michael Wetter:
    -Refactored implementation. -
  • -
  • -June 1, 2017, by David Blum:
    -First implementation. +October 20, 2022 by Dre Helmns:
    +Created example.
"), diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 2084b0d2241..da8245d55fa 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -42,7 +42,9 @@ model DomesticWaterHeaterAndFixture TTan_nominal = datGenDHW.TTan_nominal, THex_nominal = datGenDHW.THex_nominal, dpHex_nominal = datGenDHW.dpHex_nominal, - nSeg=datGenDHW.nSeg) "Generation of DHW" + nSeg=datGenDHW.nSeg, + dTEva_nominal=datGenDHW.dTEva_nominal, + dTCon_nominal=datGenDHW.dTCon_nominal) "Generation of DHW" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); DomesticWaterMixer tmv( redeclare package Medium = Medium, @@ -81,15 +83,23 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - AnnualScheduleDHWLoad loaDHW(redeclare package Medium = Medium, - mDhw_flow_nominal=mDhw_flow_nominal) - "load for DHW" + DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= + mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); replaceable Data.HeatPumpWaterHeater datGenDHW annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); + Modelica.Blocks.Sources.CombiTimeTable schDhw( + tableOnFile=true, + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource( + "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" + annotation (Placement(transformation(extent={{100,20},{80,40}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); From 0a5db0c673ad7788ed3b170bad41d18c6114c222 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 15:31:18 -0800 Subject: [PATCH 053/183] update domestic water heater model to have dynamic temperature input --- .../Heating/DHW/Examples/DomesticWaterFixture.mo | 7 ++++--- .../Heating/DHW/Examples/DomesticWaterHeater.mo | 12 +++++++++++- .../DHW/Examples/DomesticWaterHeaterAndFixture.mo | 7 ++++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index ea33e12b036..99a44fc7860 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -62,14 +62,15 @@ equation color={0,0,127})); connect(tmv.port_tw, loaDHW.port_tw) annotation (Line(points={{-20,0},{20,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-8},{60,-8},{60,-60}, - {110,-60}}, color={0,0,127})); + connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-7.2},{60,-7.2},{60, + -60},{110,-60}}, + color={0,0,127})); connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-80,-50},{-60, -50},{-60,-6},{-40,-6}}, color={0,127,255})); connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,50},{-46,50}, {-46,6},{-40,6}}, color={0,127,255})); connect(schDhw.y[1], loaDHW.schDhw) - annotation (Line(points={{79,30},{60,30},{60,2},{41,2}}, color={0,0,127})); + annotation (Line(points={{79,30},{60,30},{60,3},{41,3}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water fixture. diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index b435a96c82e..0508c623009 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -34,6 +34,7 @@ model DomesticWaterHeater origin={30,30}))); Fluid.Sources.Boundary_pT souDHw( redeclare package Medium = Medium, + use_T_in=true, T(displayUnit = "degC") = TDHw, nPorts=1) "Source of district hot water" annotation (Placement( transformation( @@ -54,11 +55,18 @@ model DomesticWaterHeater Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true + Modelica.Blocks.Interfaces.RealOutput PEle(unit="W") if havePEle == true "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); replaceable Data.GenericDirectHeatExchangerWaterHeater datGenDHW annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); + Modelica.Blocks.Sources.Sine TDis( + amplitude=5, + f=0.001, + offset=TDHw) "Signal to represent fluctuating district water temperature" + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=-90, + origin={50,-90}))); equation connect(conTSetHw.y, genDHW.TSetHw) annotation (Line(points={{-79,0},{-11,0}}, color={0,0,127})); @@ -76,6 +84,8 @@ equation {2.05391e-15,-60},{60,-60},{60,60},{38,60},{38,42}}, color={0,0,127})); connect(genDHW.port_b1, sinDhw.ports[1]) annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); + connect(TDis.y, souDHw.T_in) annotation (Line(points={{50,-79},{50,-48},{26,-48}, + {26,-42}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater. diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index da8245d55fa..56ed1946d4e 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -122,10 +122,11 @@ equation -31,-30},{-50,-30},{-50,6},{-40,6}}, color={0,127,255})); connect(tmv.port_tw, loaDHW.port_tw) annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-8},{80,-8},{80,-60}, - {110,-60}}, color={0,0,127})); + connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-7.2},{80,-7.2},{80, + -60},{110,-60}}, + color={0,0,127})); connect(loaDHW.schDhw, schDhw.y[1]) - annotation (Line(points={{61,2},{74,2},{74,30},{79,30}}, color={0,0,127})); + annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater and fixture. From c88b3bc039c1128e9877ccc1907f4f6a15ded35f Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Wed, 21 Dec 2022 15:31:51 -0800 Subject: [PATCH 054/183] create simulate and plot script for DomesticWaterHeater example --- .../DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo | 4 +++- .../Loads/Heating/DHW/Examples/DomesticWaterHeater.mos | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index 0508c623009..b14664745a3 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -97,5 +97,7 @@ June 21, 2022 by Dre Helmns:
Created example. -"),experiment(StopTime=3600, Interval=1)); +"),__Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos" + "Simulate and plot"),experiment(StopTime=3600, Interval=1)); end DomesticWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos new file mode 100644 index 00000000000..1b832620afc --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos @@ -0,0 +1,8 @@ +// Script generated by Dymola Wed Dec 21 15:22:38 2022 +// Simulate and plot commands +simulateModel("Buildings.Experimental.DHC.Loads.Heating.DHW.Examples.DomesticWaterHeater", stopTime=3600, numberOfIntervals=0, outputInterval=1, resultFile="DomesticWaterHeater"); +removePlots(false); +Advanced.SequenceInLegend = false; +createPlot(id=1, position={15, 15, 894, 574}, y={"TSetHw", "souDHw.T_in", "genDHW.senTemHXOut.T", "genDHW.senTemAuxHeaOut.T"}, range={0.0, 3600.0, 10.0, 60.0}, grid=true, subPlot=101, colors={{0,140,72}, {102,44,145}, {28,108,200}, {238,46,47}}, patterns={LinePattern.Dot, LinePattern.Solid, LinePattern.Solid, LinePattern.Solid}, thicknesses={1.0, 0.5, 0.5, 0.5}, timeUnit="s", displayUnits={"degC", "degC", "degC", "degC"}); +createPlot(id=1, position={15, 15, 894, 574}, y={"PEle", "genDHW.heaDhw.Q_flow"}, range={0.0, 3600.0, 30000.0, 70000.0}, grid=true, subPlot=102, colors={{0,0,0}, {244,125,35}}, patterns={LinePattern.Solid, LinePattern.Dash}, markers={MarkerStyle.None, MarkerStyle.FilledCircle}, timeUnit="s", displayUnits={"W", "W"}); + From d18d3a6f06195ed90cfa017ca861d2498a19f0ba Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 22 Dec 2022 16:31:14 -0800 Subject: [PATCH 055/183] create simulate and plot script for DomesticWaterFixture example --- .../Loads/Heating/DHW/Examples/DomesticWaterFixture.mo | 8 +++++++- .../Loads/Heating/DHW/Examples/DomesticWaterFixture.mos | 8 ++++++++ .../Loads/Heating/DHW/Examples/DomesticWaterHeater.mos | 0 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos rename Buildings/{ => Resources/Scripts/Dymola}/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos (100%) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 99a44fc7860..41add810894 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -84,5 +84,11 @@ Created example. "), Diagram(coordinateSystem(extent={{-100,-100},{100,100}})), - Icon(coordinateSystem(extent={{-100,-100},{100,100}}))); + Icon(coordinateSystem(extent={{-100,-100},{100,100}})), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos" + "Simulate and plot"),experiment( + StopTime=86400, + Interval=60, + __Dymola_Algorithm="Dassl")); end DomesticWaterFixture; diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos new file mode 100644 index 00000000000..5eab8382853 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos @@ -0,0 +1,8 @@ +// Script generated by Dymola Thu Dec 22 16:26:09 2022 +// Simulate and plot commands +simulateModel("Buildings.Experimental.DHC.Loads.Heating.DHW.Examples.DomesticWaterFixture", stopTime=86400, numberOfIntervals=0, outputInterval=60, resultFile="DomesticWaterFixture"); +removePlots(false); +Advanced.SequenceInLegend = false; +createPlot(id=1, position={15, 15, 865, 528}, y={"TSetHw", "TSetTw", "TDcw", "TTw"}, range={0.0, 1.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{238,46,47}, {102,44,145}, {28,108,200}, {217,67,180}}, patterns={LinePattern.Solid, LinePattern.Solid, LinePattern.Solid, LinePattern.Dash}, markers={MarkerStyle.None, MarkerStyle.None, MarkerStyle.None, MarkerStyle.FilledCircle}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC"}); +createPlot(id=1, position={15, 15, 865, 528}, y={"loaDHW.port_tw.m_flow"}, range={0.0, 1500.0, -0.05, 0.15000000000000002}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="min", displayUnits={"kg/s"}); + diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos similarity index 100% rename from Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos rename to Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos From acf390ea29d49a338e0cf6d528b11b355dc130d5 Mon Sep 17 00:00:00 2001 From: Dre Helmns Date: Thu, 22 Dec 2022 16:37:26 -0800 Subject: [PATCH 056/183] update default TMV controller parameters --- .../DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 41add810894..24f9503acb7 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -8,8 +8,8 @@ model DomesticWaterFixture parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = 0.1 "Design domestic hot water supply flow rate of system"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 85000 "Pressure difference for thermostatic mixing valve with nominal flow of 6.5gpm"; - parameter Real kCon(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= + parameter Real kCon(min=0) = 0.1 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 120 "Time constant of Integrator block" annotation (Dialog(enable= controllerType == Modelica.Blocks.Types.SimpleController.PI or controllerType == Modelica.Blocks.Types.SimpleController.PID)); parameter Real uLow = 0.1 "low hysteresis threshold"; From c3b2c396a476d859eb667e7cbb47eb2d24815143 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 5 Jan 2023 12:55:57 -0800 Subject: [PATCH 057/183] Fix Ti parameter declaration and align time scale on simulate and plot --- .../DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo | 4 +--- .../DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo index 24f9503acb7..c4e27e082a5 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo @@ -9,9 +9,7 @@ model DomesticWaterFixture parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = 0.1 "Design domestic hot water supply flow rate of system"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 85000 "Pressure difference for thermostatic mixing valve with nominal flow of 6.5gpm"; parameter Real kCon(min=0) = 0.1 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 120 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); + parameter Modelica.Units.SI.Time Ti = 120 "Time constant of Integrator block"; parameter Real uLow = 0.1 "low hysteresis threshold"; parameter Real uHigh = 0.9 "high hysteresis threshold"; diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos index 5eab8382853..746c9fda536 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos @@ -3,6 +3,6 @@ simulateModel("Buildings.Experimental.DHC.Loads.Heating.DHW.Examples.DomesticWaterFixture", stopTime=86400, numberOfIntervals=0, outputInterval=60, resultFile="DomesticWaterFixture"); removePlots(false); Advanced.SequenceInLegend = false; -createPlot(id=1, position={15, 15, 865, 528}, y={"TSetHw", "TSetTw", "TDcw", "TTw"}, range={0.0, 1.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{238,46,47}, {102,44,145}, {28,108,200}, {217,67,180}}, patterns={LinePattern.Solid, LinePattern.Solid, LinePattern.Solid, LinePattern.Dash}, markers={MarkerStyle.None, MarkerStyle.None, MarkerStyle.None, MarkerStyle.FilledCircle}, timeUnit="d", displayUnits={"degC", "degC", "degC", "degC"}); -createPlot(id=1, position={15, 15, 865, 528}, y={"loaDHW.port_tw.m_flow"}, range={0.0, 1500.0, -0.05, 0.15000000000000002}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="min", displayUnits={"kg/s"}); +createPlot(id=1, position={15, 15, 865, 528}, y={"TSetHw", "TSetTw", "TDcw", "TTw"}, range={0.0, 1.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{238,46,47}, {102,44,145}, {28,108,200}, {217,67,180}}, patterns={LinePattern.Solid, LinePattern.Solid, LinePattern.Solid, LinePattern.Dash}, markers={MarkerStyle.None, MarkerStyle.None, MarkerStyle.None, MarkerStyle.FilledCircle}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC"}); +createPlot(id=1, position={15, 15, 865, 528}, y={"loaDHW.port_tw.m_flow"}, range={0.0, 1500.0, -0.05, 0.15000000000000002}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="h", displayUnits={"kg/s"}); From ad10f431cd977f55e1fc34b1b586d0f1b8d96165 Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 27 Jan 2023 14:55:10 -0800 Subject: [PATCH 058/183] Add pressure boundary to hx loop, remove duplicate dhw flow sink, give value to dp_valve_nominal, make eva and con flow constant --- .../Loads/Heating/DHW/DomesticWaterMixer.mo | 1 + .../Examples/DomesticWaterHeaterAndFixture.mo | 44 ++++++------ .../DHW/HeatPumpWaterHeaterWithTank.mo | 67 ++++++++----------- 3 files changed, 49 insertions(+), 63 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index 6a261ce0612..566e3c030b3 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -25,6 +25,7 @@ model DomesticWaterMixer "A model for a domestic water mixer" annotation (Placement(transformation(extent={{80,60},{60,80}}))); Fluid.Actuators.Valves.ThreeWayLinear ValHea( redeclare package Medium = Medium, + riseTime=30, final m_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( transformation( diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 56ed1946d4e..f82b3af6bb8 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -4,17 +4,17 @@ model DomesticWaterHeaterAndFixture extends Modelica.Icons.Example; replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; + parameter Modelica.Units.SI.Temperature TDHw = 273.15+30 "Temperature setpoint of hot water supply from district"; parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real kCon(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; - parameter Real uLow = 0.1 "low hysteresis threshold"; - parameter Real uHigh = 0.9 "high hysteresis threshold"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; + parameter Real kCon(min=0) = 0.5 "Gain of controller"; + parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 240 "Time constant of Integrator block"; + parameter Real uLow = 0.01*mDhw_flow_nominal "low hysteresis threshold"; + parameter Real uHigh = 0.05*mDhw_flow_nominal "high hysteresis threshold"; parameter Boolean havePEle = datGenDHW.havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( @@ -66,17 +66,6 @@ model DomesticWaterHeaterAndFixture extent={{-10,-10},{10,10}}, rotation=90, origin={10,-50}))); - Fluid.Sources.MassFlowSource_T sinDHw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for district heating water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=90, - origin={-70,-50}))); - Modelica.Blocks.Sources.Constant const(k=-1) - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={-90,-90}))); Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); @@ -96,16 +85,20 @@ model DomesticWaterHeaterAndFixture tableName="tab1", fileName=Modelica.Utilities.Files.loadResource( "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" annotation (Placement(transformation(extent={{100,20},{80,40}}))); + + Fluid.Sources.Boundary_pT sinDHw( + redeclare package Medium = Medium, + T(displayUnit="degC"), + nPorts=1) "Sink of district hot water" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-70,-50}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); - connect(const.y, sinDHw.m_flow_in) - annotation (Line(points={{-90,-79},{-90,-70},{-78,-70},{-78,-62}}, - color={0,0,127})); connect(conTSetHw.y, genDHW.TSetHw) annotation (Line(points={{-79,0},{-41,0}}, color={0,0,127})); connect(genDHW.PEle, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80}, @@ -114,8 +107,6 @@ equation annotation (Line(points={{-20,6},{0,6}}, color={0,127,255})); connect(souDHw.ports[1], genDHW.port_a2) annotation (Line(points={{10,-40},{ 10,-20},{-14,-20},{-14,-6},{-20,-6}}, color={0,127,255})); - connect(genDHW.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-29,-40},{-29, -30},{-6,-30},{-6,-6},{0,-6}}, color={0,127,255})); connect(souDcw.ports[2], genDHW.port_a1) annotation (Line(points={{-31,-40},{ @@ -127,6 +118,8 @@ equation color={0,0,127})); connect(loaDHW.schDhw, schDhw.y[1]) annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); + connect(genDHW.port_b2, sinDHw.ports[1]) + annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater and fixture. @@ -138,5 +131,8 @@ October 20, 2022 by Dre Helmns:
Created example. -"),experiment(StopTime=3600, Interval=1)); +"),experiment( + StopTime=86400, + Interval=1, + __Dymola_Algorithm="Dassl")); end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index f403031abd2..7135460499a 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -24,7 +24,7 @@ model HeatPumpWaterHeaterWithTank Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + annotation (Placement(transformation(extent={{-20,44},{0,64}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -32,6 +32,7 @@ model HeatPumpWaterHeaterWithTank m2_flow_nominal=mDH_flow_nominal, dTEva_nominal=dTEva_nominal, dTCon_nominal=dTCon_nominal, + etaCarnot_nominal=0.3, QCon_flow_max = QCon_flow_max, QCon_flow_nominal=QCon_flow_nominal, dp1_nominal=5000, @@ -44,40 +45,24 @@ model HeatPumpWaterHeaterWithTank extent={{-10,-10},{10,10}}, rotation=0, origin={50,6}))); - Modelica.Blocks.Math.Gain gai(k=mHex_flow_nominal) - "Gain for control signal controlling source pump" - annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Controls.Continuous.LimPID conPI( - controllerType=Modelica.Blocks.Types.SimpleController.PI, - k=0.1, - Ti=120) annotation (Placement(transformation(extent={{-20,80},{0,100}}))); Modelica.Blocks.Math.Add add "Gain for control signal controlling source pump" annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); Modelica.Blocks.Sources.Constant dTTanHex(k=5) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); - Modelica.Blocks.Math.Add QEva_flow(k2=-1) "Evaporator heat flow rate" - annotation (Placement(transformation(extent={{28,-50},{48,-30}}))); - Modelica.Blocks.Math.Gain mEva_flow(k=-1/4184/dTEva_nominal) - "Evaporator mass flow rate" - annotation (Placement(transformation(extent={{56,-50},{76,-30}}))); Fluid.Movers.FlowControlled_m_flow pumDH( inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, m_flow_nominal=mDH_flow_nominal, - use_inputFilter=false, - massFlowRates={0,0.5,1}*mDH_flow_nominal, - energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) + massFlowRates={0,0.5,1}*mDH_flow_nominal) "Pump with m_flow input" annotation (Placement(transformation(extent={{60,-90},{40,-70}}))); Fluid.Movers.FlowControlled_m_flow pumHex( inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, m_flow_nominal=mHex_flow_nominal, - use_inputFilter=false, - massFlowRates={0,0.5,1}*mHex_flow_nominal, - energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState) + massFlowRates={0,0.5,1}*mHex_flow_nominal) "Pump with m_flow input" annotation (Placement(transformation(extent={{60,30},{40,50}}))); Fluid.Storage.StratifiedEnhancedInternalHex @@ -98,51 +83,55 @@ model HeatPumpWaterHeaterWithTank m_flow_nominal=mHw_flow_nominal) "Tank with steady-state heat exchanger balance" annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); + Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) + annotation (Placement(transformation(extent={{100,30},{80,50}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor + annotation (Placement(transformation(extent={{-60,62},{-40,82}}))); + Modelica.Blocks.Sources.Constant dTTanHex1(k=mDH_flow_nominal) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + Modelica.Blocks.Sources.Constant dTTanHex2(k=mHex_flow_nominal) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{20,80},{40,100}}))); equation connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); connect(senTemTankOut.port_b, port_b1) - annotation (Line(points={{0,60},{100,60}}, color={0,127,255})); + annotation (Line(points={{0,54},{20,54},{20,60},{100,60}}, + color={0,127,255})); connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-10,-60}, {-10,-6}}, color={0,127,255})); connect(heaPum.P, PEle) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, {76,0},{110,0}}, color={0,0,127})); - connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-90,0},{-90,90}, - {-22,90}}, color={0,0,127})); - connect(conPI.y, gai.u) - annotation (Line(points={{1,90},{18,90}}, color={0,0,127})); connect(TSetHw, add.u1) annotation (Line(points={{-110,0},{-80,0},{-80,6},{-72, 6}}, color={0,0,127})); connect(dTTanHex.y, add.u2) annotation (Line(points={{-79,-30},{-76,-30},{-76, -6},{-72,-6}}, color={0,0,127})); connect(heaPum.TSet, add.y) annotation (Line(points={{-12,9},{-20,9},{-20,0},{ -49,0}}, color={0,0,127})); - connect(senTemTankOut.T, conPI.u_m) - annotation (Line(points={{-10,71},{-10,78}}, color={0,0,127})); - connect(heaPum.QCon_flow, QEva_flow.u1) annotation (Line(points={{11,9},{16,9}, - {16,-34},{26,-34}}, color={0,0,127})); - connect(heaPum.P, QEva_flow.u2) annotation (Line(points={{11,0},{20,0},{20,-46}, - {26,-46}}, color={0,0,127})); - connect(QEva_flow.y, mEva_flow.u) - annotation (Line(points={{49,-40},{54,-40}}, color={0,0,127})); connect(port_a2, pumDH.port_a) annotation (Line(points={{100,-60},{90,-60},{90, -80},{60,-80}}, color={0,127,255})); connect(pumDH.port_b, heaPum.port_a2) annotation (Line(points={{40,-80},{10,-80},{10,-6}}, color={0,127,255})); - connect(mEva_flow.y, pumDH.m_flow_in) annotation (Line(points={{77,-40},{80,-40}, - {80,-60},{50,-60},{50,-68}}, color={0,0,127})); - connect(gai.y, pumHex.m_flow_in) - annotation (Line(points={{41,90},{50,90},{50,52}}, color={0,0,127})); - connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{80, - 40},{80,6},{60,6}}, color={0,127,255})); + connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{ + 70,40},{70,6},{60,6}}, + color={0,127,255})); connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{-30, 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, 20},{-10,20},{-10,6}}, color={0,127,255})); connect(tanSte.port_a, senTemTankOut.port_a) annotation (Line(points={{-40,50}, - {-30,50},{-30,60},{-20,60}}, color={0,127,255})); + {-30,50},{-30,54},{-20,54}}, color={0,127,255})); connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, 60},{-100,60}}, color={0,127,255})); + connect(bou.ports[1], senTemHPOut.port_b) annotation (Line(points={{80,40},{ + 70,40},{70,6},{60,6}}, color={0,127,255})); + connect(temperatureSensor.port, tanSte.heaPorVol[4]) annotation (Line(points= + {{-60,72},{-66,72},{-66,50.12},{-50,50.12}}, color={191,0,0})); + connect(dTTanHex1.y, pumDH.m_flow_in) + annotation (Line(points={{41,-30},{50,-30},{50,-68}}, color={0,0,127})); + connect(dTTanHex2.y, pumHex.m_flow_in) + annotation (Line(points={{41,90},{50,90},{50,52}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 6d934ec0a2e8398eb422fe9825c5bf70a8b78765 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 2 Feb 2023 08:40:12 -0800 Subject: [PATCH 059/183] Move evapoarator pump outside heatpump-tank model --- .../Examples/DomesticWaterHeaterAndFixture.mo | 4 +++- .../Heating/DHW/HeatPumpWaterHeaterWithTank.mo | 18 ++---------------- 2 files changed, 5 insertions(+), 17 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index f82b3af6bb8..80ed37c1095 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -58,8 +58,10 @@ model DomesticWaterHeaterAndFixture annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Fluid.Sources.Boundary_pT souDHw( + Fluid.Sources.MassFlowSource_T + souDHw( redeclare package Medium = Medium, + m_flow=mDH_flow_nominal, T(displayUnit = "degC") = TDHw, nPorts=1) "Source of district hot water" annotation (Placement( transformation( diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 7135460499a..920ce01b2bf 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -51,13 +51,6 @@ model HeatPumpWaterHeaterWithTank Modelica.Blocks.Sources.Constant dTTanHex(k=5) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); - Fluid.Movers.FlowControlled_m_flow pumDH( - inputType=Buildings.Fluid.Types.InputType.Continuous, - redeclare package Medium = Medium, - m_flow_nominal=mDH_flow_nominal, - massFlowRates={0,0.5,1}*mDH_flow_nominal) - "Pump with m_flow input" - annotation (Placement(transformation(extent={{60,-90},{40,-70}}))); Fluid.Movers.FlowControlled_m_flow pumHex( inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, @@ -87,9 +80,6 @@ model HeatPumpWaterHeaterWithTank annotation (Placement(transformation(extent={{100,30},{80,50}}))); Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor annotation (Placement(transformation(extent={{-60,62},{-40,82}}))); - Modelica.Blocks.Sources.Constant dTTanHex1(k=mDH_flow_nominal) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); Modelica.Blocks.Sources.Constant dTTanHex2(k=mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{20,80},{40,100}}))); @@ -109,10 +99,6 @@ equation -6},{-72,-6}}, color={0,0,127})); connect(heaPum.TSet, add.y) annotation (Line(points={{-12,9},{-20,9},{-20,0},{ -49,0}}, color={0,0,127})); - connect(port_a2, pumDH.port_a) annotation (Line(points={{100,-60},{90,-60},{90, - -80},{60,-80}}, color={0,127,255})); - connect(pumDH.port_b, heaPum.port_a2) - annotation (Line(points={{40,-80},{10,-80},{10,-6}}, color={0,127,255})); connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{ 70,40},{70,6},{60,6}}, color={0,127,255})); @@ -128,10 +114,10 @@ equation 70,40},{70,6},{60,6}}, color={0,127,255})); connect(temperatureSensor.port, tanSte.heaPorVol[4]) annotation (Line(points= {{-60,72},{-66,72},{-66,50.12},{-50,50.12}}, color={191,0,0})); - connect(dTTanHex1.y, pumDH.m_flow_in) - annotation (Line(points={{41,-30},{50,-30},{50,-68}}, color={0,0,127})); connect(dTTanHex2.y, pumHex.m_flow_in) annotation (Line(points={{41,90},{50,90},{50,52}}, color={0,0,127})); + connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-6},{20,-6},{20, + -60},{100,-60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 36b3a35c06860c6af09d2c8a1475a2f51176cdf9 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 2 Feb 2023 08:55:08 -0800 Subject: [PATCH 060/183] Add PI control of tank temperature by circulation pump --- .../DHW/HeatPumpWaterHeaterWithTank.mo | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 920ce01b2bf..0ee6787ab64 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -78,11 +78,15 @@ model HeatPumpWaterHeaterWithTank annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) annotation (Placement(transformation(extent={{100,30},{80,50}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor temperatureSensor - annotation (Placement(transformation(extent={{-60,62},{-40,82}}))); - Modelica.Blocks.Sources.Constant dTTanHex2(k=mHex_flow_nominal) + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor tanTemSen + "Temperature of the hot water tank" + annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); + Controls.OBC.CDL.Continuous.MultiplyByParameter + dTTanHex2(k=mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{20,80},{40,100}}))); + Controls.OBC.CDL.Continuous.PID conPI(k=0.1, Ti=120) + annotation (Placement(transformation(extent={{-10,80},{10,100}}))); equation connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); @@ -112,12 +116,18 @@ equation 60},{-100,60}}, color={0,127,255})); connect(bou.ports[1], senTemHPOut.port_b) annotation (Line(points={{80,40},{ 70,40},{70,6},{60,6}}, color={0,127,255})); - connect(temperatureSensor.port, tanSte.heaPorVol[4]) annotation (Line(points= - {{-60,72},{-66,72},{-66,50.12},{-50,50.12}}, color={191,0,0})); connect(dTTanHex2.y, pumHex.m_flow_in) - annotation (Line(points={{41,90},{50,90},{50,52}}, color={0,0,127})); + annotation (Line(points={{42,90},{50,90},{50,52}}, color={0,0,127})); connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-6},{20,-6},{20, -60},{100,-60}}, color={0,127,255})); + connect(conPI.y, dTTanHex2.u) + annotation (Line(points={{12,90},{18,90}}, color={0,0,127})); + connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,90}, + {-12,90}}, color={0,0,127})); + connect(tanTemSen.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, + 70},{0,70},{0,78}}, color={0,0,127})); + connect(tanTemSen.port, tanSte.heaPorVol[4]) annotation (Line(points={{-40,72}, + {-46,72},{-46,50.12},{-50,50.12}}, color={191,0,0})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 0aaf2c64af380545300f20e4b80396e80252f4b5 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 14 Feb 2023 12:50:27 -0800 Subject: [PATCH 061/183] Make PEle 0 if no electric heating, modify aux heat parameter --- .../DHW/BaseClasses/PartialFourPortDHW.mo | 12 ++++-- .../GenericDirectHeatExchangerWaterHeater.mo | 42 ------------------- .../DHC/Loads/Heating/DHW/Data/package.order | 1 - ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 13 +++--- .../DHW/Examples/DomesticWaterHeater.mo | 19 ++++----- 5 files changed, 24 insertions(+), 63 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo index 57ed4db323b..9d5e0c21a06 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo @@ -7,14 +7,20 @@ partial model PartialFourPortDHW replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - parameter Boolean havePEle "Flag that specifies whether electric power is required for water heating"; - - Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true + Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Modelica.Blocks.Interfaces.RealInput TSetHw "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" + annotation (Placement(transformation(extent={{60,80},{80,100}}))); +protected + parameter Boolean have_PEle "Flag that specifies whether electric power is required for water heating"; +equation + connect(zero.y, PEle) + annotation (Line(points={{81,90},{82,90},{82,0},{110,0}}, + color={0,0,127})); annotation (preferredView="info",Documentation(info="

This partial model can be used for different domestic hot water generation methods. diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo deleted file mode 100644 index 847167a9f2a..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericDirectHeatExchangerWaterHeater.mo +++ /dev/null @@ -1,42 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; -record GenericDirectHeatExchangerWaterHeater - "Equipment specifications for a generic direct heat exchanger water heater" - parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; - parameter Modelica.Units.SI.Efficiency eps(max=1) = 0.8 "Heat exchanger effectiveness"; - parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for heating (positive)"; - - annotation (preferredView="info",Documentation(info=" -

-This record corresponds to a generic direct heat exchanger water heater. -

-", revisions=" -
    -
  • -November 22, 2022 by Dre Helmns:
    -Created record. -
  • -
-"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end GenericDirectHeatExchangerWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order index 696aeabf519..95fdcdc786b 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order @@ -1,3 +1,2 @@ HeatPumpWaterHeater -GenericDirectHeatExchangerWaterHeater GenericHeatPumpWaterHeater diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index 1476b2b2ab7..0e36b0c4050 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -2,16 +2,19 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model DirectHeatExchangerWaterHeaterWithAuxHeat "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW; - parameter Modelica.Units.SI.Efficiency eps(max=1) = eps "Heat exchanger effectiveness"; - parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = QMax_flow "Maximum heat flow rate for heating (positive)"; + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW( + final have_PEle = have_eleHea); + parameter Modelica.Units.SI.Efficiency eps(min=0,max=1) = 0.8 "Heat exchanger effectiveness"; + parameter Boolean have_eleHea = true "True if has auxiliary electric heater"; + parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for electric heater (positive)" + annotation(Dialog(enable=have_eleHea)); Buildings.Fluid.HeatExchangers.Heater_T heaDhw( redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal, dp_nominal=0, QMax_flow=QMax_flow) - if havePEle == true "Supplemental electric resistance domestic hot water heater" + if have_eleHea == true "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,16},{30,-4}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) @@ -32,7 +35,7 @@ protected Fluid.FixedResistances.LosslessPipe pip( redeclare final package Medium = Medium, final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if havePEle == false "Pipe without electric resistance" + final show_T=false) if have_eleHea == false "Pipe without electric resistance" annotation (Placement(transformation(extent={{10,44},{30,24}}))); equation diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index b14664745a3..fc4f44fb891 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -8,7 +8,6 @@ model DomesticWaterHeater parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Boolean havePEle = datGenDHW.havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -19,11 +18,9 @@ model DomesticWaterHeater origin={-30,30}))); DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( redeclare package Medium = Medium, - havePEle = havePEle, mHw_flow_nominal = mHw_flow_nominal, - mDH_flow_nominal = mDH_flow_nominal, - eps=datGenDHW.eps, - QMax_flow = datGenDHW.QMax_flow) "Generation of DHW" + mDH_flow_nominal = mDH_flow_nominal) + "Generation of DHW" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Fluid.Sources.MassFlowSource_T sinDhw( redeclare package Medium = Medium, @@ -55,11 +52,6 @@ model DomesticWaterHeater Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEle(unit="W") if havePEle == true - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); - replaceable Data.GenericDirectHeatExchangerWaterHeater datGenDHW - annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); Modelica.Blocks.Sources.Sine TDis( amplitude=5, f=0.001, @@ -67,6 +59,9 @@ model DomesticWaterHeater annotation (Placement(transformation(extent={{10,-10},{-10,10}}, rotation=-90, origin={50,-90}))); + Modelica.Blocks.Interfaces.RealOutput PEle + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); equation connect(conTSetHw.y, genDHW.TSetHw) annotation (Line(points={{-79,0},{-11,0}}, color={0,0,127})); @@ -76,8 +71,6 @@ equation annotation (Line(points={{-10,-6},{-30,-6},{-30,-20}}, color={0,127,255})); connect(souDcw.ports[1], genDHW.port_a1) annotation (Line(points={{-30,20},{-30,6},{-10,6}}, color={0,127,255})); - connect(genDHW.PEle, PEle) annotation (Line(points={{11,0},{80,0},{80,80},{ - 110,80}}, color={0,0,127})); connect(const.y, sinDHw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, {2.05391e-15,-60},{-60,-60},{-60,-42},{-38,-42}}, color={0,0,127})); connect(const.y, sinDhw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, @@ -86,6 +79,8 @@ equation annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); connect(TDis.y, souDHw.T_in) annotation (Line(points={{50,-79},{50,-48},{26,-48}, {26,-42}}, color={0,0,127})); + connect(genDHW.PEle, PEle) + annotation (Line(points={{11,0},{110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater. From 73f366c32af3c53e38c770bff48ad03e953ac391 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 14 Feb 2023 13:22:59 -0800 Subject: [PATCH 062/183] Make heat pump water heater performance a record --- .../Examples/DomesticWaterHeaterAndFixture.mo | 37 +++-------- .../DHW/HeatPumpWaterHeaterWithTank.mo | 65 +++++++------------ 2 files changed, 34 insertions(+), 68 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 80ed37c1095..96edcab289c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -15,7 +15,6 @@ model DomesticWaterHeaterAndFixture parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 240 "Time constant of Integrator block"; parameter Real uLow = 0.01*mDhw_flow_nominal "low hysteresis threshold"; parameter Real uHigh = 0.05*mDhw_flow_nominal "high hysteresis threshold"; - parameter Boolean havePEle = datGenDHW.havePEle "Flag that specifies whether electric power is required for water heating"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -26,25 +25,8 @@ model DomesticWaterHeaterAndFixture origin={-30,-50}))); HeatPumpWaterHeaterWithTank genDHW( redeclare package Medium = Medium, - havePEle=havePEle, mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - QCon_flow_max = datGenDHW.QCon_flow_max, - QCon_flow_nominal=datGenDHW.QCon_flow_nominal, - VTan=datGenDHW.VTan, - hTan=datGenDHW.hTan, - dIns=datGenDHW.dIns, - kIns=datGenDHW.kIns, - QTan_flow_nominal = datGenDHW.QTan_flow_nominal, - hHex_a = datGenDHW.hHex_a, - hHex_b = datGenDHW.hHex_b, - mHex_flow_nominal = datGenDHW.mHex_flow_nominal, - TTan_nominal = datGenDHW.TTan_nominal, - THex_nominal = datGenDHW.THex_nominal, - dpHex_nominal = datGenDHW.dpHex_nominal, - nSeg=datGenDHW.nSeg, - dTEva_nominal=datGenDHW.dTEva_nominal, - dTCon_nominal=datGenDHW.dTCon_nominal) "Generation of DHW" + mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); DomesticWaterMixer tmv( redeclare package Medium = Medium, @@ -71,17 +53,12 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEle if havePEle == true - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= mDhw_flow_nominal) "load for DHW" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" annotation (Placement(transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent={{100,-70},{120,-50}}))); - replaceable Data.HeatPumpWaterHeater datGenDHW - annotation (Placement(transformation(extent={{-98,82},{-82,98}}))); Modelica.Blocks.Sources.CombiTimeTable schDhw( tableOnFile=true, tableName="tab1", @@ -98,13 +75,14 @@ model DomesticWaterHeaterAndFixture extent={{-10,-10},{10,10}}, rotation=90, origin={-70,-50}))); + Modelica.Blocks.Interfaces.RealOutput PEle + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); connect(conTSetHw.y, genDHW.TSetHw) annotation (Line(points={{-79,0},{-41,0}}, color={0,0,127})); - connect(genDHW.PEle, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80}, - {110,80}}, color={0,0,127})); connect(genDHW.port_b1, tmv.port_hw) annotation (Line(points={{-20,6},{0,6}}, color={0,127,255})); connect(souDHw.ports[1], genDHW.port_a2) annotation (Line(points={{10,-40},{ @@ -122,6 +100,8 @@ equation annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); connect(genDHW.port_b2, sinDHw.ports[1]) annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); + connect(genDHW.PEle, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80},{ + 110,80}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater and fixture. @@ -134,7 +114,8 @@ Created example. "),experiment( - StopTime=86400, - Interval=1, + StopTime=864000, + Interval=300, + Tolerance=1e-06, __Dymola_Algorithm="Dassl")); end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 0ee6787ab64..3945ebfdfae 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -2,45 +2,30 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW(mDH_flow_nominal = 1); - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.1 "Mass flow rate of heat exchanger"; - - parameter Modelica.Units.SI.Length hTan = 1 "Height of tank (without insulation)"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - parameter Modelica.Units.SI.Volume VTan "Tank volume"; - parameter Modelica.Units.SI.Length dIns "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal "Temperature difference condenser outlet-inlet"; - + Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW( + final have_PEle = true); + parameter Buildings.Experimental.DHC.Loads.Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea + "Performance data" + annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{-20,44},{0,64}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, - m1_flow_nominal=mHex_flow_nominal, + m1_flow_nominal=datWatHea.mHex_flow_nominal, m2_flow_nominal=mDH_flow_nominal, - dTEva_nominal=dTEva_nominal, - dTCon_nominal=dTCon_nominal, + dTEva_nominal=datWatHea.dTEva_nominal, + dTCon_nominal=datWatHea.dTCon_nominal, etaCarnot_nominal=0.3, - QCon_flow_max = QCon_flow_max, - QCon_flow_nominal=QCon_flow_nominal, + QCon_flow_max = datWatHea.QCon_flow_max, + QCon_flow_nominal=datWatHea.QCon_flow_nominal, dp1_nominal=5000, dp2_nominal=5000) "Domestic hot water heater" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=mHex_flow_nominal) annotation (Placement( + Medium, m_flow_nominal=datWatHea.mHex_flow_nominal) annotation (Placement( transformation( extent={{-10,-10},{10,10}}, rotation=0, @@ -54,24 +39,24 @@ model HeatPumpWaterHeaterWithTank Fluid.Movers.FlowControlled_m_flow pumHex( inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, - m_flow_nominal=mHex_flow_nominal, - massFlowRates={0,0.5,1}*mHex_flow_nominal) + m_flow_nominal=datWatHea.mHex_flow_nominal, + massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) "Pump with m_flow input" annotation (Placement(transformation(extent={{60,30},{40,50}}))); Fluid.Storage.StratifiedEnhancedInternalHex tanSte(energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare package Medium = Medium, redeclare package MediumHex = Medium, - hTan=hTan, - dIns=dIns, - VTan=VTan, - nSeg=nSeg, - hHex_a=hHex_a, - hHex_b=hHex_b, - Q_flow_nominal=QTan_flow_nominal, - TTan_nominal=TTan_nominal, - THex_nominal=THex_nominal, - mHex_flow_nominal=mHex_flow_nominal, + hTan=datWatHea.hTan, + dIns=datWatHea.dIns, + VTan=datWatHea.VTan, + nSeg=datWatHea.nSeg, + hHex_a=datWatHea.hHex_a, + hHex_b=datWatHea.hHex_b, + Q_flow_nominal=datWatHea.QTan_flow_nominal, + TTan_nominal=datWatHea.TTan_nominal, + THex_nominal=datWatHea.THex_nominal, + mHex_flow_nominal=datWatHea.mHex_flow_nominal, show_T=true, m_flow_nominal=mHw_flow_nominal) "Tank with steady-state heat exchanger balance" @@ -82,7 +67,7 @@ model HeatPumpWaterHeaterWithTank "Temperature of the hot water tank" annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); Controls.OBC.CDL.Continuous.MultiplyByParameter - dTTanHex2(k=mHex_flow_nominal) + dTTanHex2(k=datWatHea.mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{20,80},{40,100}}))); Controls.OBC.CDL.Continuous.PID conPI(k=0.1, Ti=120) @@ -127,7 +112,7 @@ equation connect(tanTemSen.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, 70},{0,70},{0,78}}, color={0,0,127})); connect(tanTemSen.port, tanSte.heaPorVol[4]) annotation (Line(points={{-40,72}, - {-46,72},{-46,50.12},{-50,50.12}}, color={191,0,0})); + {-46,72},{-46,50},{-50,50}}, color={191,0,0})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 039c86e40edb596dbb4d9555a5083db204dac621 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Feb 2023 07:51:31 -0800 Subject: [PATCH 063/183] Remove havePEle flag from record --- .../DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo | 1 - .../DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo | 1 - 2 files changed, 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo index d44ad58601e..101f1d999d1 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo @@ -1,7 +1,6 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; record GenericHeatPumpWaterHeater "Equipment specifications for a generic heat pump water heater" - parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo index 8ceeb6e8d3f..b114d820058 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo @@ -1,7 +1,6 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; record HeatPumpWaterHeater "Equipment specifications for a typical heat pump water heater" - parameter Boolean havePEle = true "Flag that specifies whether electric power is required for water heating"; parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; parameter Modelica.Units.SI.Length dIns = 0.508 "Thickness of insulation"; From 35be82303ea793ab01d5313505e4fdd97b2814d7 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Feb 2023 08:26:19 -0800 Subject: [PATCH 064/183] Simplify and tune defaults of tmv controller parameters --- .../Loads/Heating/DHW/DomesticWaterMixer.mo | 28 +++++++++---------- .../Examples/DomesticWaterHeaterAndFixture.mo | 16 +++-------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo index 566e3c030b3..8355877d7e1 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo @@ -1,31 +1,28 @@ within Buildings.Experimental.DHC.Loads.Heating.DHW; model DomesticWaterMixer "A model for a domestic water mixer" replaceable package Medium = Buildings.Media.Water "Water media model"; - final parameter Modelica.Blocks.Types.SimpleController controllerType = Modelica.Blocks.Types.SimpleController.PI "Type of controller"; parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Real uLow = uLow "low hysteresis threshold"; - parameter Real uHigh = uHigh "high hysteresis threshold"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; + parameter Real k = 0.1 "Proportional gain of valve controller"; + parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = Medium) "Port for tempered water outlet" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Buildings.Controls.Continuous.LimPID conPID( - controllerType = controllerType, + controllerType=Modelica.Blocks.Types.SimpleController.PI, k=k, Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium - = Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" annotation (Placement(transformation(extent={{80,60},{60,80}}))); Fluid.Actuators.Valves.ThreeWayLinear ValHea( redeclare package Medium = Medium, - riseTime=30, + riseTime=5, final m_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( transformation( @@ -40,17 +37,20 @@ model DomesticWaterMixer "A model for a domestic water mixer" annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium - = Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium - = Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = Medium) "Mass flow rate of domestic hot water" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) annotation (Placement(transformation(extent={{56,24},{44,36}}))); +protected + parameter Real uLow = 0.01*mDhw_flow_nominal "Low hysteresis threshold"; + parameter Real uHigh = 0.05*mDhw_flow_nominal "High hysteresis threshold"; equation connect(conTSetCon.y, conPID.u_s) annotation (Line(points={{59,70},{42,70}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 96edcab289c..34ccd29dfdd 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -11,10 +11,6 @@ model DomesticWaterHeaterAndFixture parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; - parameter Real kCon(min=0) = 0.5 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 240 "Time constant of Integrator block"; - parameter Real uLow = 0.01*mDhw_flow_nominal "low hysteresis threshold"; - parameter Real uHigh = 0.05*mDhw_flow_nominal "high hysteresis threshold"; Buildings.Fluid.Sources.Boundary_pT souDcw( redeclare package Medium = Medium, @@ -32,11 +28,8 @@ model DomesticWaterHeaterAndFixture redeclare package Medium = Medium, TSet(displayUnit="degC") = TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=kCon, - uLow=uLow, - uHigh=uHigh, - Ti=Ti) "Ideal thermostatic mixing valve" + dpValve_nominal=dpValve_nominal) + "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); @@ -62,8 +55,7 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Sources.CombiTimeTable schDhw( tableOnFile=true, tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource( - "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" annotation (Placement(transformation(extent={{100,20},{80,40}}))); @@ -115,7 +107,7 @@ Created example. "),experiment( StopTime=864000, - Interval=300, + Interval=1, Tolerance=1e-06, __Dymola_Algorithm="Dassl")); end DomesticWaterHeaterAndFixture; From 917689c90ca996e88ed606f1f5e9279a67fe5cae Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Feb 2023 08:50:07 -0800 Subject: [PATCH 065/183] Tune and expose circulation pump controller parameters, make dTHex equal to dTCon_nominal in record --- .../Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 3945ebfdfae..7655bfd5e8c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -7,6 +7,8 @@ model HeatPumpWaterHeaterWithTank parameter Buildings.Experimental.DHC.Loads.Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); + parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; + parameter Real Ti=60 "Integrator time constant of circulation pump controller"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package Medium = Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement(transformation(extent={{-20,44},{0,64}}))); @@ -33,13 +35,14 @@ model HeatPumpWaterHeaterWithTank Modelica.Blocks.Math.Add add "Gain for control signal controlling source pump" annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); - Modelica.Blocks.Sources.Constant dTTanHex(k=5) - "Temperature setpoint for domestic hot water supply from heater" + Modelica.Blocks.Sources.Constant dTTanHex(k=datWatHea.dTCon_nominal) + "Temperature difference of heat pump condenser leaving water above tank set point" annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); Fluid.Movers.FlowControlled_m_flow pumHex( inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, m_flow_nominal=datWatHea.mHex_flow_nominal, + riseTime=10, massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) "Pump with m_flow input" annotation (Placement(transformation(extent={{60,30},{40,50}}))); @@ -70,7 +73,10 @@ model HeatPumpWaterHeaterWithTank dTTanHex2(k=datWatHea.mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Controls.OBC.CDL.Continuous.PID conPI(k=0.1, Ti=120) + Controls.OBC.CDL.Continuous.PID conPI( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + k=k, + Ti=Ti) annotation (Placement(transformation(extent={{-10,80},{10,100}}))); equation connect(heaPum.port_b1, senTemHPOut.port_a) From 2d11813cbce5abdbf43f363b815a0fbe418192c4 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 2 May 2023 07:10:09 -0700 Subject: [PATCH 066/183] Add Combined BuildingTimeSeriesWithETS example model --- .../Examples/BuildingTimeSeriesWithETS.mo | 96 +++++++++++++++++++ .../DHC/Loads/Combined/Examples/package.mo | 4 + .../DHC/Loads/Combined/Examples/package.order | 1 + 3 files changed, 101 insertions(+) create mode 100644 Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo create mode 100644 Buildings/Experimental/DHC/Loads/Combined/Examples/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/Combined/Examples/package.order diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo new file mode 100644 index 00000000000..b0a5aa6a8eb --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo @@ -0,0 +1,96 @@ +within Buildings.Experimental.DHC.Loads.Combined.Examples; +model BuildingTimeSeriesWithETS + "Example model of a building with loads provided as time series for heating, cooling, and domestic hot water" + extends Modelica.Icons.Example; + package Medium=Buildings.Media.Water + "Medium model"; + Buildings.Fluid.Sources.Boundary_pT supAmbWat( + redeclare package Medium = Medium, + p(displayUnit="bar"), + use_T_in=true, + T=280.15, + nPorts=1) "Ambient water supply" + annotation (Placement(transformation(extent={{-10,-10},{10,10}},rotation=0,origin={-50,10}))); + Buildings.Fluid.Sources.Boundary_pT sinAmbWat( + redeclare package Medium = Medium, + p(displayUnit="bar"), + nPorts=1) "Sink for ambient water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}},rotation=0,origin={-50,-50}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = Medium) + "Mass flow rate sensor" + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + Modelica.Blocks.Sources.Constant TDisSup(k( + unit="K", + displayUnit="degC") = 288.15) + "District supply temperature" + annotation (Placement(transformation(extent={{-90,4},{-70,24}}))); + Buildings.Experimental.DHC.Loads.Combined.BuildingTimeSeriesWithETS bui( + redeclare package MediumSer = Medium, + redeclare package MediumBui = Medium, + bui(facMul=10), + allowFlowReversalSer=true, + filNam="modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos") + annotation (Placement(transformation(extent={{40,-20},{60,0}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) + "Cold water temperature" + annotation (Placement(transformation(extent={{60,80},{80,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THotWatSupSet(k=bui.ets.THotWatSup_nominal) + "Hot water supply temperature set point" + annotation (Placement(transformation(extent={{20,80},{40,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=bui.TChiWatSup_nominal) + "Chilled water supply temperature set point" + annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupMaxSet(k=bui.THeaWatSup_nominal) + "Heating water supply temperature set point - Maximum value" + annotation (Placement(transformation(extent={{-60,80},{-40,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) + "Heating water supply temperature set point - Minimum value" + annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); +equation + connect(supAmbWat.ports[1], senMasFlo.port_a) + annotation (Line(points={{-40,10},{-20,10}}, color={0,127,255})); + connect(TDisSup.y,supAmbWat. T_in) + annotation (Line(points={{-69,14},{-62,14}}, color={0,0,127})); + connect(senMasFlo.port_b, bui.port_aSerAmb) annotation (Line(points={{0,10},{20, + 10},{20,-10},{40,-10}}, color={0,127,255})); + connect(sinAmbWat.ports[1], bui.port_bSerAmb) annotation (Line(points={{-40,-50}, + {80,-50},{80,-10},{60,-10}}, color={0,127,255})); + connect(THeaWatSupMinSet.y, bui.THeaWatSupMinSet) annotation (Line(points={{-78, + 90},{-70,90},{-70,60},{34,60},{34,-1},{38,-1}}, color={0,0,127})); + connect(THeaWatSupMaxSet.y, bui.THeaWatSupMaxSet) annotation (Line(points={{-38, + 90},{-30,90},{-30,58},{32,58},{32,-3},{38,-3}}, color={0,0,127})); + connect(TChiWatSupSet.y, bui.TChiWatSupSet) annotation (Line(points={{2,90},{10, + 90},{10,56},{30,56},{30,-5},{38,-5}}, color={0,0,127})); + connect(THotWatSupSet.y, bui.THotWatSupSet) annotation (Line(points={{42,90},{ + 50,90},{50,40},{28,40},{28,-7},{38,-7}}, color={0,0,127})); + connect(TColWat.y, bui.TColWat) annotation (Line(points={{82,90},{88,90},{88,38}, + {26,38},{26,-26},{42,-26},{42,-22}}, color={0,0,127})); + annotation ( + Icon( + coordinateSystem( + preserveAspectRatio=false)), + Diagram( + coordinateSystem( + preserveAspectRatio=false)), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mos" "Simulate and plot"), + experiment( + StopTime=604800, + Interval=600, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + Documentation(info=" +

+This model provides an example for a building with loads provided +as time series and connected to a direct ETS for cooling with the +return chilled water temperature controlled above a minimum threshold. +

+", revisions=" +
    +
  • +March 20, 2022, by Chengnan Shi:
    +First implementation. +
  • +
+")); +end BuildingTimeSeriesWithETS; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/package.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/package.mo new file mode 100644 index 00000000000..0fd052cb28c --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/package.mo @@ -0,0 +1,4 @@ +within Buildings.Experimental.DHC.Loads.Combined; +package Examples "Example models" + extends Modelica.Icons.ExamplesPackage; +end Examples; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order b/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order new file mode 100644 index 00000000000..d36587bb820 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order @@ -0,0 +1 @@ +BuildingTimeSeriesWithETS From 50f4b6f2fb7fdec91b79c33fd852a39989493f2a Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 2 May 2023 07:12:26 -0700 Subject: [PATCH 067/183] Update package order --- Buildings/Experimental/DHC/Loads/Combined/package.order | 1 + 1 file changed, 1 insertion(+) diff --git a/Buildings/Experimental/DHC/Loads/Combined/package.order b/Buildings/Experimental/DHC/Loads/Combined/package.order index a57bc67331b..1069a5236c1 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/package.order +++ b/Buildings/Experimental/DHC/Loads/Combined/package.order @@ -1,2 +1,3 @@ BuildingTimeSeriesWithETS BaseClasses +Examples From a5f96c61a1726e64f669837f75404319e63b1e6a Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 2 May 2023 07:13:13 -0700 Subject: [PATCH 068/183] Make DHW draw through in HeatPumpHeatExchanger --- .../Combined/HeatPumpHeatExchanger.mo | 101 ++++++++++-------- 1 file changed, 58 insertions(+), 43 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 34b48741ca1..6ede5144ccb 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -1,7 +1,8 @@ within Buildings.Experimental.DHC.EnergyTransferStations.Combined; model HeatPumpHeatExchanger "Model of a substation with heat pump and compressor-less cooling" - extends Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.PartialETS( + extends + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.PartialETS( final typ=Buildings.Experimental.DHC.Types.DistrictSystemType.CombinedGeneration5, final have_weaBus=false, final have_chiWat=true, @@ -295,8 +296,8 @@ model HeatPumpHeatExchanger final m_flow_nominal=mSerWat_flow_nominal) "Flow switch box" annotation (Placement(transformation(extent={{-10,-390},{10,-370}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatSup(redeclare - final package - Medium = MediumBui, final m_flow_nominal=proHeaWat.m1_flow_nominal + final package Medium = + MediumBui, final m_flow_nominal=proHeaWat.m1_flow_nominal *{1,-1,-1}) "Bypass heating water (supply)" annotation (Placement( transformation( extent={{-10,-10},{10,10}}, @@ -349,19 +350,13 @@ model HeatPumpHeatExchanger annotation (Placement(transformation(extent={{-10,24},{10,44}}))); Fluid.Sources.Boundary_pT sinSHW( redeclare final package Medium = MediumBui, + use_T_in=true, nPorts=1) if have_hotWat "Sink for service hot water" annotation (Placement( transformation( extent={{10,-10},{-10,10}}, rotation=180, - origin={-60,60}))); - Fluid.Sources.MassFlowSource_T souColWat( - redeclare final package Medium = MediumBui, - use_m_flow_in=true, - use_T_in=true, - nPorts=1) if have_hotWat - "Source for cold water" - annotation (Placement(transformation(extent={{-48,-50},{-28,-30}}))); + origin={-40,-10}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 if have_hotWat "Compute mass flow rate from load" annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); @@ -393,8 +388,8 @@ model HeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Continuous.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = - MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium + = MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW(trueHoldDuration=15* @@ -453,15 +448,26 @@ model HeatPumpHeatExchanger if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); + Fluid.Sources.MassFlowSource_T souColWat1( + redeclare final package Medium = MediumBui, + use_m_flow_in=true, + nPorts=1) if have_hotWat + "Source for cold water" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSin(final k=-1) + if have_hotWat "Convert to sink" + annotation (Placement(transformation(extent={{-98,50},{-78,70}}))); equation connect(TChiWatSupSet, conTChiWat.u_s) annotation (Line(points={{-320,0},{-200, 0},{-200,-200},{-152,-200}}, color={0,0,127})); connect(pum1HexChi.P, PPumCooTot.u[1]) annotation (Line(points={{89,-331},{84, -331},{84,-322},{180,-322},{180,380},{188,380}}, color={0,0,127})); - connect(PPumHeaTot.y, PPumTot.u[1]) annotation (Line(points={{212,420},{216,420}, - {216,401},{218,401}}, color={0,0,127})); - connect(PPumCooTot.y, PPumTot.u[2]) annotation (Line(points={{212,380},{216,380}, - {216,399},{218,399}}, color={0,0,127})); + connect(PPumHeaTot.y, PPumTot.u[1]) annotation (Line(points={{212,420},{216, + 420},{216,399.5},{218,399.5}}, + color={0,0,127})); + connect(PPumCooTot.y, PPumTot.u[2]) annotation (Line(points={{212,380},{216, + 380},{216,400.5},{218,400.5}}, + color={0,0,127})); connect(pum1HexChi.port_b, hexChi.port_a1) annotation (Line(points={{90,-340}, {10,-340}}, color={0,127,255})); connect(pum1HexChi.m_flow_actual, mCoo_flow) annotation (Line(points={{89,-335}, @@ -489,7 +495,7 @@ equation connect(senTHeaWatSup.port_b, ports_bHeaWat[1]) annotation (Line(points={{150,260},{300,260}}, color={0,127,255})); connect(bypHeaWatRet.port_2, volHeaWatRet.ports[1]) annotation (Line(points={{90,240}, - {80,240},{80,177.333}}, color={0,127,255})); + {80,240},{80,178.667}}, color={0,127,255})); connect(bouHeaWat.ports[1], volHeaWatRet.ports[2]) annotation (Line(points={{60,160}, {60,180},{80,180}}, color={0,127,255})); connect(ports_aChiWat[1], senMasFloChiWat.port_a) annotation (Line(points={{-300, @@ -499,7 +505,7 @@ equation connect(bypHeaWatRet.port_3, bypHeaWatSup.port_3) annotation (Line(points={{100,250},{100,250}}, color={0,127,255})); connect(volHeaWatRet.ports[3], proHeaWat.port_a1) annotation (Line(points={{80, - 182.667},{80,180},{-20,180},{-20,208},{-10,208}}, color={0,127,255})); + 181.333},{80,180},{-20,180},{-20,208},{-10,208}}, color={0,127,255})); connect(proHeaWat.port_b2, volMix_b.ports[3]) annotation (Line(points={{10, 220},{262,220},{262,-360},{260,-360}}, color={0,127,255})); connect(volMix_a.ports[3], proHeaWat.port_a2) annotation (Line(points={{-260, @@ -509,8 +515,9 @@ equation connect(THeaWatSupSet, proHeaWat.TSupSet) annotation (Line(points={{-320,40},{ -200,40},{-200,217},{-12,217}}, color={0,0,127})); - connect(proHeaWat.PPum, PPumHeaTot.u[1]) annotation (Line(points={{12,214},{172, - 214},{172,421},{188,421}}, color={0,0,127})); + connect(proHeaWat.PPum, PPumHeaTot.u[1]) annotation (Line(points={{12,214},{ + 172,214},{172,419.5},{188,419.5}}, + color={0,0,127})); connect(volMix_a.ports[4], proHotWat.port_a2) annotation (Line(points={{-260, -360},{-258,-360},{-258,20},{14,20},{14,28},{10,28}}, color={0,127, 255})); @@ -518,10 +525,6 @@ equation annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); connect(THotWatSupSet, proHotWat.TSupSet) annotation (Line(points={{-320,-40}, {-160,-40},{-160,37},{-12,37}}, color={0,0,127})); - connect(sinSHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-50,60}, - {-20,60},{-20,40},{-10,40}}, color={0,127,255})); - connect(TColWat, souColWat.T_in) annotation (Line(points={{-320,-80},{-60,-80}, - {-60,-36},{-50,-36}}, color={0,0,127})); connect(gai.y, div1.u2) annotation (Line(points={{-98,0},{-80,0},{-80,-20},{-120, -20},{-120,-46},{-102,-46}}, color={0,0,127})); connect(loaSHW, div1.u1) annotation (Line(points={{-320,-120},{-290,-120},{-290, @@ -529,23 +532,26 @@ equation connect(masFloHeaTot.y, mHea_flow) annotation (Line(points={{292,-140},{320,-140}}, color={0,0,127})); connect(proHotWat.mEva_flow, masFloHeaTot.u[2]) annotation (Line(points={{12,31}, - {218,31},{218,-141},{268,-141}}, color={0,0,127})); + {218,31},{218,-139.5},{268,-139.5}}, + color={0,0,127})); connect(zer.y, masFloHeaTot.u[2]) annotation (Line(points={{161,360},{216,360}, - {216,-144},{268,-144},{268,-141}},color={0,0,127})); - connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{176, - 34},{176,420},{188,420},{188,419}}, color={0,0,127})); + {216,-144},{268,-144},{268,-139.5}}, + color={0,0,127})); + connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{ + 176,34},{176,420},{188,420},{188,420.5}}, + color={0,0,127})); connect(proHeaWat.mEva_flow, masFloHeaTot.u[1]) annotation (Line(points={{12,211}, - {220,211},{220,-139},{268,-139}}, color={0,0,127})); - connect(zer.y, PPumHeaTot.u[2]) annotation (Line(points={{161,360},{174,360},{ - 174,418},{188,418},{188,419}}, color={0,0,127})); + {220,211},{220,-140.5},{268,-140.5}}, + color={0,0,127})); + connect(zer.y, PPumHeaTot.u[2]) annotation (Line(points={{161,360},{174,360}, + {174,418},{188,418},{188,420.5}}, + color={0,0,127})); connect(senMasFloHeaWat.port_b, senTHeaWatRet.port_a) annotation (Line(points={{-230, 260},{-220,260},{-220,300},{10,300}}, color={0,127,255})); connect(senTHeaWatRet.port_b, bypHeaWatRet.port_1) annotation (Line(points={{30,300}, {120,300},{120,240},{110,240}}, color={0,127,255})); connect(senMasFloChiWat.port_b, senTChiWatRet.port_a) annotation (Line(points={{-230,-120},{30,-120}}, color={0,127,255})); - connect(souColWat.ports[1], proHotWat.port_a1) annotation (Line(points={{-28,-40}, - {-20,-40},{-20,28},{-10,28}}, color={0,127,255})); connect(delT.y, gai.u) annotation (Line(points={{-128,0},{-122,0}}, color={0,0,127})); connect(TColWat, delT.u2) annotation (Line(points={{-320,-80},{-156,-80},{-156, @@ -573,10 +579,8 @@ equation annotation (Line(points={{-320,80},{-142,80}}, color={255,0,255})); connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, {-114,43},{-12,43}},color={255,0,255})); - connect(div1.y, souColWat.m_flow_in) annotation (Line(points={{-78,-40},{-68,-40}, - {-68,-32},{-50,-32}}, color={0,0,127})); connect(senTChiWatRet.port_b, volChiWat.ports[1]) annotation (Line(points={{50,-120}, - {60,-120},{60,-280},{-102.667,-280}}, color={0,127,255})); + {60,-120},{60,-280},{-101.333,-280}}, color={0,127,255})); connect(volChiWat.ports[2], hexChi.port_a2) annotation (Line(points={{-100, -280},{-120,-280},{-120,-320},{-20,-320},{-20,-328},{-10,-328}}, color={0,127,255})); @@ -584,7 +588,7 @@ equation -328},{20,-328},{20,-320},{80,-320},{80,-280},{130,-280}}, color={0, 127,255})); connect(bouChiWat.ports[1], volChiWat.ports[3]) - annotation (Line(points={{-142,-280},{-97.3333,-280}}, color={0,127,255})); + annotation (Line(points={{-142,-280},{-98.6667,-280}}, color={0,127,255})); connect(senTChiWatSup.T, conTChiWat.u_m) annotation (Line(points={{140,-269}, {140,-220},{-140,-220},{-140,-212}}, color={0,0,127})); connect(zer1.y, masFloHea.u2) annotation (Line(points={{-19,-240},{-8,-240},{ @@ -595,12 +599,13 @@ equation 20,211},{20,-246},{6,-246},{6,-252}}, color={0,0,127})); connect(masFloHea.y, swiFlo.mPos_flow) annotation (Line(points={{0,-276},{0, -320},{-16,-320},{-16,-376},{-12,-376}}, color={0,0,127})); - connect(proHeaWat.PHea, PHeaTot.u[1]) annotation (Line(points={{12,217},{240,217}, - {240,81},{268,81}}, color={0,0,127})); - connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{240,37}, - {240,79},{268,79}}, color={0,0,127})); + connect(proHeaWat.PHea, PHeaTot.u[1]) annotation (Line(points={{12,217},{240, + 217},{240,79.5},{268,79.5}}, color={0,0,127})); + connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{240, + 37},{240,80.5},{268,80.5}}, + color={0,0,127})); connect(zer.y, PHeaTot.u[2]) annotation (Line(points={{161,360},{242,360},{ - 242,78},{268,78},{268,79}}, color={0,0,127})); + 242,78},{268,78},{268,80.5}},color={0,0,127})); connect(PHeaTot.y, PHea) annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); connect(loaSHW, heaFloEvaSHW.u1) annotation (Line(points={{-320,-120},{-288, @@ -640,6 +645,16 @@ equation annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, 280},{-110,246},{-102,246}}, color={0,0,127})); + connect(toSin.y, souColWat1.m_flow_in) annotation (Line(points={{-76,60},{-72, + 60},{-72,68},{-62,68}}, color={0,0,127})); + connect(div1.y, toSin.u) annotation (Line(points={{-78,-40},{-70,-40},{-70,32}, + {-108,32},{-108,60},{-100,60}}, color={0,0,127})); + connect(sinSHW.T_in, delT.u2) annotation (Line(points={{-52,-14},{-60,-14},{ + -60,-80},{-156,-80},{-156,-6},{-152,-6}}, color={0,0,127})); + connect(sinSHW.ports[1], proHotWat.port_a1) annotation (Line(points={{-30,-10}, + {-20,-10},{-20,28},{-10,28}}, color={0,127,255})); + connect(souColWat1.ports[1], proHotWat.port_b1) annotation (Line(points={{-40, + 60},{-20,60},{-20,40},{-10,40}}, color={0,127,255})); annotation ( defaultComponentName="ets", Documentation(info=" From e059ada8aa23fe3bdf6f5ae336f3dab5f2c6f2db Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 8 May 2023 08:49:49 -0700 Subject: [PATCH 069/183] Change names of dhw sou and sin --- .../Combined/HeatPumpHeatExchanger.mo | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 6ede5144ccb..8eb2ea646a5 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -348,11 +348,11 @@ model HeatPumpHeatExchanger final dp2_nominal=dp_nominal) if have_hotWat "Subsystem for hot water production" annotation (Placement(transformation(extent={{-10,24},{10,44}}))); - Fluid.Sources.Boundary_pT sinSHW( + Fluid.Sources.Boundary_pT souDCW( redeclare final package Medium = MediumBui, use_T_in=true, - nPorts=1) if have_hotWat - "Sink for service hot water" annotation (Placement( + nPorts=1) if have_hotWat "Source for domestic cold water" + annotation (Placement( transformation( extent={{10,-10},{-10,10}}, rotation=180, @@ -388,8 +388,8 @@ model HeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Continuous.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium - = MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = + MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW(trueHoldDuration=15* @@ -448,11 +448,10 @@ model HeatPumpHeatExchanger if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - Fluid.Sources.MassFlowSource_T souColWat1( + Fluid.Sources.MassFlowSource_T sinDHW( redeclare final package Medium = MediumBui, use_m_flow_in=true, - nPorts=1) if have_hotWat - "Source for cold water" + nPorts=1) if have_hotWat "Sink for domestic hot water" annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSin(final k=-1) if have_hotWat "Convert to sink" @@ -645,16 +644,16 @@ equation annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, 280},{-110,246},{-102,246}}, color={0,0,127})); - connect(toSin.y, souColWat1.m_flow_in) annotation (Line(points={{-76,60},{-72, - 60},{-72,68},{-62,68}}, color={0,0,127})); + connect(toSin.y, sinDHW.m_flow_in) annotation (Line(points={{-76,60},{-72,60}, + {-72,68},{-62,68}}, color={0,0,127})); connect(div1.y, toSin.u) annotation (Line(points={{-78,-40},{-70,-40},{-70,32}, {-108,32},{-108,60},{-100,60}}, color={0,0,127})); - connect(sinSHW.T_in, delT.u2) annotation (Line(points={{-52,-14},{-60,-14},{ + connect(souDCW.T_in, delT.u2) annotation (Line(points={{-52,-14},{-60,-14},{ -60,-80},{-156,-80},{-156,-6},{-152,-6}}, color={0,0,127})); - connect(sinSHW.ports[1], proHotWat.port_a1) annotation (Line(points={{-30,-10}, + connect(souDCW.ports[1], proHotWat.port_a1) annotation (Line(points={{-30,-10}, {-20,-10},{-20,28},{-10,28}}, color={0,127,255})); - connect(souColWat1.ports[1], proHotWat.port_b1) annotation (Line(points={{-40, - 60},{-20,60},{-20,40},{-10,40}}, color={0,127,255})); + connect(sinDHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-40,60}, + {-20,60},{-20,40},{-10,40}}, color={0,127,255})); annotation ( defaultComponentName="ets", Documentation(info=" From 0e7ade42879f3995789cbfc8ed61b4f1752f64eb Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 8 May 2023 11:59:34 -0700 Subject: [PATCH 070/183] Initial implementation of DHW ETS --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 759 ++++++++++++++++++ .../Combined/Subsystems/HeatPumpDHWTank.mo | 249 ++++++ .../Combined/Subsystems/package.order | 1 + .../Combined/package.order | 1 + .../BuildingTimeSeriesWithETSWithDHWTank.mo | 146 ++++ .../BuildingTimeSeriesWithETSDHWTank.mo | 106 +++ .../DHC/Loads/Combined/Examples/package.order | 1 + .../DHC/Loads/Combined/package.order | 1 + .../DHW/BaseClasses/PartialFourPortDHW.mo | 6 +- .../DHW/Data/GenericHeatPumpWaterHeater.mo | 2 + ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 2 +- .../DHW/Examples/DomesticWaterHeater.mo | 2 +- .../Examples/DomesticWaterHeaterAndFixture.mo | 2 +- .../DHW/HeatPumpWaterHeaterWithTank.mo | 22 +- 14 files changed, 1289 insertions(+), 11 deletions(-) create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo create mode 100644 Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo create mode 100644 Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo new file mode 100644 index 00000000000..27a5c42e4b0 --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -0,0 +1,759 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined; +model HeatPumpHeatExchangerDHWTank + "Model of a substation with heat pump and compressor-less cooling with domestic hot water served by a heat pump with storage tank" + extends + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.PartialETS( + final typ=Buildings.Experimental.DHC.Types.DistrictSystemType.CombinedGeneration5, + final have_weaBus=false, + final have_chiWat=true, + final have_heaWat=true, + final have_hotWat=true, + final have_eleHea=true, + final nFue=0, + final have_eleCoo=false, + final have_pum=true, + final have_fan=false, + nPorts_aHeaWat=1, + nPorts_aChiWat=1); + // SYSTEM GENERAL + parameter Boolean have_varFloCon = true + "Set to true for heat pumps with variable condenser flow" + annotation(Evaluate=true); + parameter Boolean have_varFloEva = true + "Set to true for heat pumps with variable evaporator flow" + annotation(Evaluate=true); + parameter Real ratFloMin( + final unit="1", + final min=0, + final max=1)=0.3 + "Minimum condenser or evaporator mass flow rate (ratio to nominal)" + annotation (Dialog(enable=have_varFloCon or have_varFloEva)); + parameter Modelica.Units.SI.Temperature TDisWatMin + "District water minimum temperature" annotation (Dialog(group="DHC system")); + parameter Modelica.Units.SI.Temperature TDisWatMax + "District water maximum temperature" annotation (Dialog(group="DHC system")); + parameter Modelica.Units.SI.TemperatureDifference dT_nominal(min=0) = 5 + "Water temperature drop/increase accross load and source-side HX (always positive)" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TChiWatSup_nominal=291.15 + "Chilled water supply temperature" + annotation (Dialog(group="Nominal conditions")); + final parameter Modelica.Units.SI.Temperature TChiWatRet_nominal= + TChiWatSup_nominal + dT_nominal "Chilled water return temperature" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature THeaWatSup_nominal=313.15 + "Heating water supply temperature" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.Temperature THeaWatRet_nominal= + THeaWatSup_nominal - dT_nominal "Heating water return temperature" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature THotWatSup_nominal=datWatHea.TTan_nominal + "Hot water supply temperature" + annotation (Dialog(group="Nominal condition", enable=have_hotWat)); + parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 + "Cold water temperature (for hot water production)" + annotation (Dialog(group="Nominal condition", enable=have_hotWat)); + parameter Modelica.Units.SI.Pressure dp_nominal(displayUnit="Pa") = 50000 + "Pressure difference at nominal flow rate (for each flow leg)" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal(min=0)= + abs(QHeaWat_flow_nominal/cpBui_default/(THeaWatSup_nominal - + THeaWatRet_nominal)) "Heating water mass flow rate" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal(min=0)= + abs(QChiWat_flow_nominal/cpBui_default/(TChiWatSup_nominal - + TChiWatRet_nominal)) "Chilled water mass flow rate" + annotation (Dialog(group="Nominal conditions")); + final parameter Modelica.Units.SI.MassFlowRate mEvaHotWat_flow_nominal(min=0)=proHotWat.heaPumTan.mDH_flow_nominal + "Evaporator water mass flow rate of heat pump for hot water production" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate mSerWat_flow_nominal(min=0)= + max(proHeaWat.m2_flow_nominal + mEvaHotWat_flow_nominal, hexChi.m1_flow_nominal) + "Service water mass flow rate" + annotation (Dialog(group="Nominal condition")); + constant Modelica.Units.SI.SpecificHeatCapacity cpBui_default= + MediumBui.specificHeatCapacityCp(MediumBui.setState_pTX(p=MediumBui.p_default, + T=MediumBui.T_default)) "Specific heat capacity of the fluid"; + constant Modelica.Units.SI.SpecificHeatCapacity cpSer_default= + MediumBui.specificHeatCapacityCp(MediumSer.setState_pTX(p=MediumSer.p_default, + T=MediumSer.T_default)) "Specific heat capacity of the fluid"; + // Heat pump for heating water production + parameter Real COPHeaWat_nominal(final unit="1") + "COP of heat pump for heating water production" + annotation (Dialog(group="Nominal condition")); + // Heat pump for hot water production + parameter Real COPHotWat_nominal(final unit="1") + "COP of heat pump for hot water production" + annotation (Dialog(group="Nominal condition", enable=have_hotWat)); + // District HX + final parameter Modelica.Units.SI.MassFlowRate m1HexChi_flow_nominal(min=0)= + abs(QChiWat_flow_nominal/cpSer_default/dT_nominal) + "CHW HX primary mass flow rate" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate m2HexChi_flow_nominal(min=0)= + abs(QChiWat_flow_nominal/cpSer_default/(THeaWatSup_nominal - + THeaWatRet_nominal)) "CHW HX secondary mass flow rate" + annotation (Dialog(group="Nominal condition")); + // Dynamics + parameter Modelica.Fluid.Types.Dynamics mixingVolumeEnergyDynamics= + Modelica.Fluid.Types.Dynamics.FixedInitial + "Formulation of energy balance for mixing volume at inlet and outlet" + annotation(Dialog(tab="Dynamics")); + // IO CONNECTORS + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uCoo + "Cooling enable signal" + annotation (Placement(transformation(extent={{-340, + 100},{-300,140}}), iconTransformation(extent={{-380,20},{-300,100}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uHea + "Heating enable signal" + annotation (Placement(transformation(extent={{-340, + 140},{-300,180}}), iconTransformation(extent={{-380,60},{-300,140}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSHW if have_hotWat + "SHW production enable signal" + annotation (Placement(transformation(extent= + {{-340,60},{-300,100}}), iconTransformation(extent={{-380,-20},{-300, + 60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput THeaWatSupSet( + final unit="K", + displayUnit="degC") + "Heating water supply temperature set point" + annotation (Placement( + transformation( + extent={{-340,20},{-300,60}}), + iconTransformation( + extent={{-380,-60},{-300,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( + final unit="K", + displayUnit="degC") if have_hotWat + "Service hot water supply temperature set point" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-320,-40}), + iconTransformation( + extent={{-380,-140},{-300,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TColWat( + final unit="K", + displayUnit="degC") if have_hotWat + "Cold water temperature" annotation ( + Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-320,-80}), iconTransformation( + extent={{-40,-40},{40,40}}, + rotation=0, + origin={-340,-140}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput loaSHW( + final unit="W") if have_hotWat "Service hot water load" + annotation ( + Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-320,-120}),iconTransformation( + extent={{-40,-40},{40,40}}, + rotation=0, + origin={-340,-180}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSupSet(final unit="K", + displayUnit="degC") + "Chilled water supply temperature set point" annotation (Placement( + transformation( + extent={{-340,-20},{-300,20}}), + iconTransformation( + extent={{-380,-100},{-300,-20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mHea_flow(final unit="kg/s") + "District water mass flow rate used for heating service" + annotation ( Placement(transformation(extent={{300,-160},{340,-120}}), + iconTransformation(extent={{300,-160},{380,-80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCoo_flow(final unit="kg/s") + "District water mass flow rate used for cooling service" + annotation ( Placement(transformation(extent={{300,-200},{340,-160}}), + iconTransformation(extent={{300,-200},{380,-120}}))); + // COMPONENTS + Buildings.Fluid.Delays.DelayFirstOrder volMix_a( + redeclare final package Medium = MediumSer, + final nPorts=if have_hotWat then 4 else 3, + final m_flow_nominal=mSerWat_flow_nominal, + tau=600, + final energyDynamics=mixingVolumeEnergyDynamics) + "Mixing volume to break algebraic loops and to emulate the delay of the substation" + annotation (Placement(transformation(extent={{-270,-360},{-250,-380}}))); + Buildings.Fluid.Delays.DelayFirstOrder volMix_b( + redeclare final package Medium = MediumSer, + final nPorts=if have_hotWat then 4 else 3, + final m_flow_nominal=mSerWat_flow_nominal, + tau=600, + final energyDynamics=mixingVolumeEnergyDynamics) + "Mixing volume to break algebraic loops and to emulate the delay of the substation" + annotation (Placement(transformation(extent={{250,-360},{270,-380}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pum1HexChi( + redeclare final package Medium = MediumSer, + final m_flow_nominal=m1HexChi_flow_nominal, + final allowFlowReversal=allowFlowReversalSer) + "Chilled water HX primary pump" + annotation (Placement(transformation(extent={{110,-350},{90,-330}}))); + Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU hexChi( + redeclare final package Medium1 = MediumSer, + redeclare final package Medium2 = MediumBui, + final m1_flow_nominal=m1HexChi_flow_nominal, + final m2_flow_nominal=m2HexChi_flow_nominal, + final dp1_nominal=dp_nominal/2, + final dp2_nominal=dp_nominal/2, + configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow, + final Q_flow_nominal=QChiWat_flow_nominal, + final T_a1_nominal=TDisWatMax, + final T_a2_nominal=TChiWatRet_nominal, + final allowFlowReversal1=allowFlowReversalSer, + final allowFlowReversal2=allowFlowReversalBui) + "Chilled water HX" + annotation (Placement(transformation(extent={{10,-324},{-10,-344}}))); + Buildings.Fluid.Delays.DelayFirstOrder volHeaWatRet( + redeclare final package Medium = MediumBui, + final m_flow_nominal=proHeaWat.m1_flow_nominal, + tau=60, + final energyDynamics=mixingVolumeEnergyDynamics, + T_start=THeaWatSup_nominal, + nPorts=3) "Mixing volume representing building HHW primary" annotation ( + Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=90, + origin={90,180}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFloHeaWat( + redeclare final package Medium = MediumBui, + final allowFlowReversal=allowFlowReversalBui) + "Heating water mass flow rate" + annotation (Placement(transformation(extent={{-250,250},{-230,270}}))); + Buildings.Fluid.Delays.DelayFirstOrder volChiWat( + redeclare final package Medium = MediumBui, + final m_flow_nominal=m1HexChi_flow_nominal, + tau=60, + final energyDynamics=mixingVolumeEnergyDynamics, + T_start=TChiWatSup_nominal, + nPorts=3) "Mixing volume representing building CHW primary" + annotation (Placement(transformation(extent={{-110,-280},{-90,-260}}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFloChiWat( + redeclare final package Medium = MediumBui, + final allowFlowReversal=allowFlowReversalBui) + "Chilled water mass flow rate" + annotation (Placement(transformation(extent={{-250,-130},{-230,-110}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k= + m1HexChi_flow_nominal) + annotation (Placement(transformation(extent={{-108,-210},{-88,-190}}))); + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PIDWithEnable conTChiWat( + k=0.05, + Ti=120, + yMax=1, + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + reverseActing=false, + yMin=0) "PI controller for district HX primary side" + annotation (Placement(transformation(extent={{-150,-210},{-130,-190}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumHeaTot(final nin=2) + "Total pump power for heating applications" + annotation (Placement(transformation(extent={{190,410},{210,430}}))); + Buildings.Fluid.Sources.Boundary_pT bouHeaWat( + redeclare final package Medium = MediumBui, + nPorts=1) + "Pressure boundary condition representing the expansion vessel" + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=-90, + origin={60,150}))); + Buildings.Fluid.Sources.Boundary_pT bouChiWat( + redeclare final package Medium = MediumBui, + nPorts=1) + "Pressure boundary condition representing the expansion vessel" + annotation (Placement(transformation(extent={{-162,-290},{-142,-270}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumCooTot(nin=1) + "Total pump power for space cooling" + annotation (Placement(transformation(extent={{190,370},{210,390}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumTot(nin=2) + "Total pump power" + annotation (Placement(transformation(extent={{220,390},{240,410}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup( + redeclare final package Medium=MediumBui, + final allowFlowReversal=allowFlowReversalBui, + final m_flow_nominal=mHeaWat_flow_nominal) + "Heating water supply temperature" + annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={140,260}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTChiWatSup( + redeclare final package Medium=MediumBui, + final allowFlowReversal=allowFlowReversalBui, + final m_flow_nominal=mChiWat_flow_nominal) + "Chilled water supply temperature" + annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={140,-280}))); + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox + swiFlo( + redeclare final package Medium = MediumSer, + final m_flow_nominal=mSerWat_flow_nominal) "Flow switch box" + annotation (Placement(transformation(extent={{-10,-390},{10,-370}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatSup(redeclare + final package Medium = + MediumBui, final m_flow_nominal=proHeaWat.m1_flow_nominal + *{1,-1,-1}) "Bypass heating water (supply)" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={100,260}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatRet( + redeclare final package Medium = MediumBui, + final m_flow_nominal=proHeaWat.m1_flow_nominal*{1,-1,1}) + "Bypass heating water (return)" + annotation (Placement( + transformation( + extent={{10,10},{-10,-10}}, + rotation=0, + origin={100,240}))); + Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaHea( + trueHoldDuration=15*60) "Enable heating" + annotation (Placement(transformation(extent={{-140,150},{-120,170}}))); + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump proHeaWat( + redeclare final package Medium1 = MediumBui, + redeclare final package Medium2 = MediumSer, + final have_varFloCon=have_varFloCon, + final have_varFloEva=have_varFloEva, + final COP_nominal=COPHeaWat_nominal, + final TCon_nominal=THeaWatSup_nominal, + final TEva_nominal=TDisWatMin-dT_nominal, + final Q1_flow_nominal=QHeaWat_flow_nominal, + final allowFlowReversal1=allowFlowReversalBui, + final allowFlowReversal2=allowFlowReversalSer, + final dT1_nominal=dT_nominal, + final dT2_nominal=-dT_nominal, + final dp1_nominal=dp_nominal, + final dp2_nominal=dp_nominal) "Subsystem for heating water production" + annotation (Placement(transformation(extent={{-10,204},{10,224}}))); + Subsystems.HeatPumpDHWTank proHotWat( + redeclare final package Medium1 = MediumBui, + redeclare final package Medium2 = MediumSer, + final have_varFloEva=have_varFloEva, + final COP_nominal=COPHotWat_nominal, + final allowFlowReversal1=allowFlowReversalBui, + final allowFlowReversal2=allowFlowReversalSer, + mHw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - + TColWat_nominal), + datWatHea=datWatHea) + "Subsystem for hot water production" + annotation (Placement(transformation(extent={{-10,24},{10,44}}))); + Fluid.Sources.Boundary_pT souDCW( + redeclare final package Medium = MediumBui, + use_T_in=true, + nPorts=1) if have_hotWat "Source for domestic cold water" + annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=180, + origin={-40,-10}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div1 if have_hotWat + "Compute mass flow rate from load" + annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(final k= + cpBui_default) if have_hotWat "Times Cp" + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiSum masFloHeaTot(final nin=2) + "Compute district water mass flow rate used for heating service" + annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); + Modelica.Blocks.Sources.Constant zer(final k=0) if not have_hotWat + "Replacement variable" + annotation (Placement(transformation(extent={{140,350},{160,370}}))); + Fluid.Sensors.TemperatureTwoPort senTHeaWatRet( + redeclare final package Medium = MediumBui, + final allowFlowReversal=allowFlowReversalBui, + final m_flow_nominal=mHeaWat_flow_nominal) + "Heating water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={20,300}))); + Fluid.Sensors.TemperatureTwoPort senTChiWatRet( + redeclare final package Medium = MediumBui, + final allowFlowReversal=allowFlowReversalBui, + final m_flow_nominal=mChiWat_flow_nominal) + "Chilled water return temperature" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={40,-120}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract delT if have_hotWat + "Compute DeltaT needed on condenser side" + annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = + MediumBui, final allowFlowReversal=allowFlowReversalBui) + "Primary heating water mass flow rate" + annotation (Placement(transformation(extent={{30,270},{50,250}}))); + Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW(trueHoldDuration=15* + 60) if have_hotWat "Enable SHW production" + annotation (Placement(transformation(extent={{-140,70},{-120,90}}))); + Modelica.Blocks.Sources.Constant zer1(k=0) if not have_hotWat + "Replacement variable" + annotation (Placement(transformation(extent={{-40,-250},{-20,-230}}))); + Buildings.Controls.OBC.CDL.Continuous.Add masFloHea + "Service water mass flow rate for heating applications" + annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=-90, + origin={0,-264}))); + Buildings.Controls.OBC.CDL.Continuous.MultiSum PHeaTot(final nin=2) + "Total power used for heating and hot water production" + annotation (Placement(transformation(extent={{270,70},{290,90}}))); + Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaSHW if have_hotWat and have_varFloEva + "Heat flow rate at evaporator" + annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract dTHHW + "Heating hot water DeltaT" + annotation (Placement(transformation(extent={{0,310},{-20,330}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter capFloHHW( + final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" + annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); + Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaHHW if have_varFloEva + "Heat flow rate at evaporator" + annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaSHW( + final Q_flow_nominal=-QHotWat_flow_nominal*(1 + 1/COPHotWat_nominal), + final dT_nominal=-dT_nominal, + final ratFloMin=ratFloMin, + final cp=cpSer_default) if have_hotWat and have_varFloEva + "Mass flow rate control" + annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloConHHW( + final Q_flow_nominal=QHeaWat_flow_nominal, + final dT_nominal=dT_nominal, + final ratFloMin=ratFloMin, + final cp=cpBui_default) if have_varFloCon + "Mass flow rate control" + annotation (Placement(transformation(extent={{-100,270},{-80,290}}))); + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaHHW( + final Q_flow_nominal=-QHeaWat_flow_nominal*(1 + 1/COPHeaWat_nominal), + final dT_nominal=-dT_nominal, + final ratFloMin=ratFloMin, + final cp=cpSer_default) if have_varFloEva + "Mass flow rate control" + annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); + Buildings.Controls.OBC.CDL.Continuous.Max priOve if have_varFloCon + "Ensure primary overflow" + annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply loaHHW + if have_varFloEva or have_varFloCon "Heating load" + annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); + + Fluid.Sources.MassFlowSource_T sinDHW( + redeclare final package Medium = MediumBui, + use_m_flow_in=true, + nPorts=1) if have_hotWat "Sink for domestic hot water" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSin(final k=-1) + if have_hotWat "Convert to sink" + annotation (Placement(transformation(extent={{-98,50},{-78,70}}))); + parameter Loads.Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea + "Performance data" + annotation (Placement(transformation(extent={{-6,6},{6,18}}))); +equation + connect(TChiWatSupSet, conTChiWat.u_s) annotation (Line(points={{-320,0},{-200, + 0},{-200,-200},{-152,-200}}, color={0,0,127})); + connect(pum1HexChi.P, PPumCooTot.u[1]) annotation (Line(points={{89,-331},{84, + -331},{84,-322},{180,-322},{180,380},{188,380}}, color={0,0,127})); + connect(PPumHeaTot.y, PPumTot.u[1]) annotation (Line(points={{212,420},{216, + 420},{216,399.5},{218,399.5}}, + color={0,0,127})); + connect(PPumCooTot.y, PPumTot.u[2]) annotation (Line(points={{212,380},{216, + 380},{216,400.5},{218,400.5}}, + color={0,0,127})); + connect(pum1HexChi.port_b, hexChi.port_a1) annotation (Line(points={{90,-340}, + {10,-340}}, color={0,127,255})); + connect(pum1HexChi.m_flow_actual, mCoo_flow) annotation (Line(points={{89,-335}, + {82,-335},{82,-320},{276,-320},{276,-180},{320,-180}}, color={0,0,127})); + connect(volMix_a.ports[1], swiFlo.port_bSup) annotation (Line(points={{-260,-360}, + {-6,-360},{-6,-370}}, color={0,127,255})); + connect(swiFlo.port_aRet, volMix_b.ports[1]) annotation (Line(points={{6,-370}, + {6,-360},{260,-360}}, color={0,127,255})); + connect(volMix_b.ports[2], pum1HexChi.port_a) annotation (Line(points={{260,-360}, + {258,-360},{258,-340},{110,-340}}, color={0,127,255})); + connect(hexChi.port_b1, volMix_a.ports[2]) annotation (Line(points={{-10,-340}, + {-256,-340},{-256,-360},{-260,-360}}, color={0,127,255})); + connect(pum1HexChi.m_flow_actual, swiFlo.mRev_flow) annotation (Line(points={ + {89,-335},{80,-335},{80,-356},{-20,-356},{-20,-384},{-12,-384}}, + color={0,0,127})); + connect(gai2.y, pum1HexChi.m_flow_in) + annotation (Line(points={{-86,-200},{100,-200},{100,-328}}, + color={0,0,127})); + connect(PPumTot.y, PPum) annotation (Line(points={{242,400},{244,400},{244,-40}, + {320,-40}}, color={0,0,127})); + connect(ports_aHeaWat[1], senMasFloHeaWat.port_a) annotation (Line(points={{-300, + 260},{-250,260}}, color={0,127,255})); + connect(bypHeaWatSup.port_2, senTHeaWatSup.port_a) + annotation (Line(points={{110,260},{130,260}}, color={0,127,255})); + connect(senTHeaWatSup.port_b, ports_bHeaWat[1]) + annotation (Line(points={{150,260},{300,260}}, color={0,127,255})); + connect(bypHeaWatRet.port_2, volHeaWatRet.ports[1]) annotation (Line(points={{90,240}, + {80,240},{80,178.667}}, color={0,127,255})); + connect(bouHeaWat.ports[1], volHeaWatRet.ports[2]) annotation (Line(points={{60,160}, + {60,180},{80,180}}, color={0,127,255})); + connect(ports_aChiWat[1], senMasFloChiWat.port_a) annotation (Line(points={{-300, + 200},{-280,200},{-280,-120},{-250,-120}}, color={0,127,255})); + connect(senTChiWatSup.port_b, ports_bChiWat[1]) annotation (Line(points={{150, + -280},{200,-280},{200,200},{300,200}}, color={0,127,255})); + connect(bypHeaWatRet.port_3, bypHeaWatSup.port_3) + annotation (Line(points={{100,250},{100,250}}, color={0,127,255})); + connect(volHeaWatRet.ports[3], proHeaWat.port_a1) annotation (Line(points={{80, + 181.333},{80,180},{-20,180},{-20,208},{-10,208}}, color={0,127,255})); + connect(proHeaWat.port_b2, volMix_b.ports[3]) annotation (Line(points={{10, + 220},{262,220},{262,-360},{260,-360}}, color={0,127,255})); + connect(volMix_a.ports[3], proHeaWat.port_a2) annotation (Line(points={{-260, + -360},{-260,200},{14,200},{14,208},{10,208}}, color={0,127,255})); + connect(enaHea.y, proHeaWat.uEna) annotation (Line(points={{-118,160},{-48,160}, + {-48,223},{-12,223}}, color={255,0,255})); + connect(THeaWatSupSet, proHeaWat.TSupSet) annotation (Line(points={{-320,40},{ + -200,40},{-200,217},{-12,217}}, + color={0,0,127})); + connect(proHeaWat.PPum, PPumHeaTot.u[1]) annotation (Line(points={{12,214},{ + 172,214},{172,419.5},{188,419.5}}, + color={0,0,127})); + connect(volMix_a.ports[4], proHotWat.port_a2) annotation (Line(points={{-260, + -360},{-258,-360},{-258,20},{14,20},{14,28},{10,28}}, color={0,127, + 255})); + connect(proHotWat.port_b2, volMix_b.ports[4]) + annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); + connect(THotWatSupSet, proHotWat.TSupSet) annotation (Line(points={{-320,-40}, + {-160,-40},{-160,37},{-12,37}}, color={0,0,127})); + connect(gai.y, div1.u2) annotation (Line(points={{-98,0},{-80,0},{-80,-20},{-120, + -20},{-120,-46},{-102,-46}}, color={0,0,127})); + connect(loaSHW, div1.u1) annotation (Line(points={{-320,-120},{-290,-120},{-290, + -34},{-102,-34}}, color={0,0,127})); + connect(masFloHeaTot.y, mHea_flow) + annotation (Line(points={{292,-140},{320,-140}}, color={0,0,127})); + connect(proHotWat.mEva_flow, masFloHeaTot.u[2]) annotation (Line(points={{12,31}, + {218,31},{218,-139.5},{268,-139.5}}, + color={0,0,127})); + connect(zer.y, masFloHeaTot.u[2]) annotation (Line(points={{161,360},{216,360}, + {216,-144},{268,-144},{268,-139.5}}, + color={0,0,127})); + connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{ + 176,34},{176,420},{188,420},{188,420.5}}, + color={0,0,127})); + connect(proHeaWat.mEva_flow, masFloHeaTot.u[1]) annotation (Line(points={{12,211}, + {220,211},{220,-140.5},{268,-140.5}}, + color={0,0,127})); + connect(zer.y, PPumHeaTot.u[2]) annotation (Line(points={{161,360},{174,360}, + {174,418},{188,418},{188,420.5}}, + color={0,0,127})); + connect(senMasFloHeaWat.port_b, senTHeaWatRet.port_a) annotation (Line(points={{-230, + 260},{-220,260},{-220,300},{10,300}}, color={0,127,255})); + connect(senTHeaWatRet.port_b, bypHeaWatRet.port_1) annotation (Line(points={{30,300}, + {120,300},{120,240},{110,240}}, color={0,127,255})); + connect(senMasFloChiWat.port_b, senTChiWatRet.port_a) + annotation (Line(points={{-230,-120},{30,-120}}, color={0,127,255})); + connect(delT.y, gai.u) + annotation (Line(points={{-128,0},{-122,0}}, color={0,0,127})); + connect(TColWat, delT.u2) annotation (Line(points={{-320,-80},{-156,-80},{-156, + -6},{-152,-6}}, color={0,0,127})); + connect(THotWatSupSet, delT.u1) annotation (Line(points={{-320,-40},{-160,-40}, + {-160,6},{-152,6}}, + color={0,0,127})); + connect(proHeaWat.port_b1, senMasFloHeaWatPri.port_a) annotation (Line(points= + {{-10,220},{-20,220},{-20,260},{30,260}}, color={0,127,255})); + connect(senMasFloHeaWatPri.port_b, bypHeaWatSup.port_1) + annotation (Line(points={{50,260},{90,260}}, color={0,127,255})); + connect(port_aSerAmb, swiFlo.port_aSup) annotation (Line(points={{-300,-200},{ + -272,-200},{-272,-344},{-280,-344},{-280,-400},{-6,-400},{-6,-390}}, + color={0,127,255})); + connect(swiFlo.port_bRet, port_bSerAmb) annotation (Line(points={{6,-390},{6, + -400},{280,-400},{280,-200},{300,-200}}, + color={0,127,255})); + connect(uHea, enaHea.u) annotation (Line(points={{-320,160},{-142,160}}, + color={255,0,255})); + connect(conTChiWat.y, gai2.u) + annotation (Line(points={{-128,-200},{-110,-200}}, color={0,0,127})); + connect(uCoo, conTChiWat.uEna) annotation (Line(points={{-320,120},{-180,120}, + {-180,-220},{-144,-220},{-144,-212}}, color={255,0,255})); + connect(uSHW, enaSHW.u) + annotation (Line(points={{-320,80},{-142,80}}, color={255,0,255})); + connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, + {-114,43},{-12,43}},color={255,0,255})); + connect(senTChiWatRet.port_b, volChiWat.ports[1]) annotation (Line(points={{50,-120}, + {60,-120},{60,-280},{-101.333,-280}}, color={0,127,255})); + connect(volChiWat.ports[2], hexChi.port_a2) annotation (Line(points={{-100, + -280},{-120,-280},{-120,-320},{-20,-320},{-20,-328},{-10,-328}}, + color={0,127,255})); + connect(hexChi.port_b2, senTChiWatSup.port_a) annotation (Line(points={{10, + -328},{20,-328},{20,-320},{80,-320},{80,-280},{130,-280}}, color={0, + 127,255})); + connect(bouChiWat.ports[1], volChiWat.ports[3]) + annotation (Line(points={{-142,-280},{-98.6667,-280}}, color={0,127,255})); + connect(senTChiWatSup.T, conTChiWat.u_m) annotation (Line(points={{140,-269}, + {140,-220},{-140,-220},{-140,-212}}, color={0,0,127})); + connect(zer1.y, masFloHea.u2) annotation (Line(points={{-19,-240},{-8,-240},{ + -8,-252},{-6,-252}}, color={0,0,127})); + connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{12,31},{18, + 31},{18,-240},{-6,-240},{-6,-252}}, color={0,0,127})); + connect(proHeaWat.mEva_flow, masFloHea.u1) annotation (Line(points={{12,211},{ + 20,211},{20,-246},{6,-246},{6,-252}}, color={0,0,127})); + connect(masFloHea.y, swiFlo.mPos_flow) annotation (Line(points={{0,-276},{0, + -320},{-16,-320},{-16,-376},{-12,-376}}, color={0,0,127})); + connect(proHeaWat.PHea, PHeaTot.u[1]) annotation (Line(points={{12,217},{240, + 217},{240,79.5},{268,79.5}}, color={0,0,127})); + connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{240, + 37},{240,80.5},{268,80.5}}, + color={0,0,127})); + connect(zer.y, PHeaTot.u[2]) annotation (Line(points={{161,360},{242,360},{ + 242,78},{268,78},{268,80.5}},color={0,0,127})); + connect(PHeaTot.y, PHea) + annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); + connect(loaSHW, heaFloEvaSHW.u1) annotation (Line(points={{-320,-120},{-288, + -120},{-288,-36},{-164,-36},{-164,106},{-102,106}}, + color={0,0,127})); + connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{12,37},{18, + 37},{18,80},{-108,80},{-108,94},{-102,94}}, + color={0,0,127})); + connect(senTHeaWatRet.T, dTHHW.u2) + annotation (Line(points={{20,311},{20,314},{2,314}}, color={0,0,127})); + connect(senTHeaWatSup.T, dTHHW.u1) + annotation (Line(points={{140,271},{140,326},{2,326}}, color={0,0,127})); + connect(senMasFloHeaWat.m_flow, capFloHHW.u) annotation (Line(points={{-240,271}, + {-240,320},{-222,320}}, color={0,0,127})); + connect(proHeaWat.PHea, heaFloEvaHHW.u2) annotation (Line(points={{12,217},{ + 20,217},{20,226},{-110,226},{-110,234},{-102,234}}, + color={0,0,127})); + connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38,100}, + {-16,100},{-16,31},{-12,31}}, color={0,0,127})); + connect(conFloEvaHHW.m_flow, proHeaWat.m2_flow) annotation (Line(points={{-38,240}, + {-28,240},{-28,211},{-12,211}}, color={0,0,127})); + connect(senMasFloHeaWat.m_flow, priOve.u1) annotation (Line(points={{-240,271}, + {-240,296},{-70,296},{-70,286},{-62,286}}, color={0,0,127})); + connect(conFloConHHW.m_flow, priOve.u2) annotation (Line(points={{-78,280},{-70, + 280},{-70,274},{-62,274}}, color={0,0,127})); + connect(priOve.y, proHeaWat.m1_flow) annotation (Line(points={{-38,280},{-24,280}, + {-24,214},{-12,214}}, color={0,0,127})); + connect(heaFloEvaSHW.y, conFloEvaSHW.loa) + annotation (Line(points={{-78,100},{-62,100}}, color={0,0,127})); + connect(heaFloEvaHHW.y, conFloEvaHHW.loa) + annotation (Line(points={{-78,240},{-62,240}}, color={0,0,127})); + connect(capFloHHW.y, loaHHW.u2) annotation (Line(points={{-198,320},{-180,320}, + {-180,274},{-142,274}}, color={0,0,127})); + connect(dTHHW.y, loaHHW.u1) annotation (Line(points={{-22,320},{-160,320},{ + -160,286},{-142,286}}, color={0,0,127})); + connect(loaHHW.y, conFloConHHW.loa) + annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); + connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, + 280},{-110,246},{-102,246}}, color={0,0,127})); + connect(toSin.y, sinDHW.m_flow_in) annotation (Line(points={{-76,60},{-72,60}, + {-72,68},{-62,68}}, color={0,0,127})); + connect(div1.y, toSin.u) annotation (Line(points={{-78,-40},{-70,-40},{-70,32}, + {-108,32},{-108,60},{-100,60}}, color={0,0,127})); + connect(souDCW.T_in, delT.u2) annotation (Line(points={{-52,-14},{-60,-14},{ + -60,-80},{-156,-80},{-156,-6},{-152,-6}}, color={0,0,127})); + connect(souDCW.ports[1], proHotWat.port_a1) annotation (Line(points={{-30,-10}, + {-20,-10},{-20,28},{-10,28}}, color={0,127,255})); + connect(sinDHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-40,60}, + {-20,60},{-20,40},{-10,40}}, color={0,127,255})); + annotation ( + defaultComponentName="ets", + Documentation(info=" +

+This model represents an energy transfer station as described in Sommer (2020). +

+
    +
  • +The cooling function is provided in a compressor-less mode by a heat exchanger +connected to the service line. +The chilled water is typically produced at high temperature and distributed +to radiant cooling systems, for instance at 19°C. +
  • +
  • +The heating functions are provided by water-to-water heat pumps. +
      +
    • +By default the condenser and evaporator loops are operated +with variable mass flow rate, with a lower limit specified by the ratio +ratFloMin. +The model can also represent constant flow condenser and evaporator loops +by setting have_varFloCon and have_varFloEva +to false. +
    • +
    • +The evaporator water is supplied by mixing the flow rate from the direct connection +to the service line to the flow rate from the primary side of the cooling +heat exchanger. +The hydronic arrangement modeled in + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox +ensures that the resulting fluid stream in the service line always flows +in the same direction. +
    • +
    • +The heating hot water is typically produced at low temperature, +for instance 40°C. +
    • +
    +
  • +
+

Controls

+

+Heating (resp. cooling) is enabled based on the input signal uHea +(resp. uCoo) which is held for 15 minutes, meaning that, +when enabled, the mode remains active for at least 15 minutes and, +when disabled, the mode cannot be enabled again for at least 15 minutes. +The heating and cooling enable signals should be computed externally based +on a schedule (to lock out the system during off-hours), ideally in conjunction +with the number of requests yielded by the terminal unit controllers, or any +other signal representative of the load. +

+

+When enabled, +

+ +

Modeling considerations

+

+There is a control volume at each of the two fluid ports that serve as inlet and outlet +of the heating and cooling systems. These approximate the dynamics +of the substation, and they also generally avoid nonlinear systems +of equations if multiple substations are connected to each other. +

+

References

+

+Sommer T., Sulzer M., Wetter M., Sotnikov A., Mennel S., Stettler C. +The reservoir network: A new network topology for district heating +and cooling. +Energy, Volume 199, 15 May 2020, 117418. +

+", + revisions=" +
    +
  • +February 23, 2021, by Antoine Gautier:
    +Refactored with subsystem models and partial ETS base class.
    +This is for + +issue 1769. +
  • +
  • +December 12, 2017, by Michael Wetter:
    +Removed call to Modelica.Utilities.Files.loadResource.
    +This is for +issue 1097. +
  • +
+"), + Diagram(coordinateSystem(extent={{-300,-420},{300,440}})), + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-300,-300},{300,300}}))); +end HeatPumpHeatExchangerDHWTank; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo new file mode 100644 index 00000000000..637fcc4e59e --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -0,0 +1,249 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +model HeatPumpDHWTank + "Base subsystem with water-to-water heat pump with storage tank for domestic hot waterr" + replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium + "Medium model on condenser side" + annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + replaceable package Medium2=Modelica.Media.Interfaces.PartialMedium + "Medium model on evaporator side" + annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + parameter Boolean have_varFloEva = true + "Set to true for a variable evaporator flow" + annotation(Evaluate=true); + parameter Real COP_nominal(final unit="1") + "Heat pump COP" + annotation (Dialog(group="Nominal condition")); + parameter Boolean allowFlowReversal1=false + "Set to true to allow flow reversal on condenser side" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + parameter Boolean allowFlowReversal2=false + "Set to true to allow flow reversal on evaporator side" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal(min=0) "Mass flow rate of domestic hot water leaving tank" + annotation (Dialog(group="Nominal condition")); + // IO CONNECTORS + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) + "Enable signal" + annotation ( + Placement(transformation(extent={{-240,100},{-200,140}}), + iconTransformation(extent={{-140,70},{-100,110}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( + final unit="K", + displayUnit="degC") + "Supply temperature set point" + annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), + iconTransformation(extent={{-140,10},{-100,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput m2_flow( + final unit="kg/s") if have_varFloEva + "Evaporator mass flow rate" + annotation (Placement(transformation(extent={{-240,20},{-200,60}}), + iconTransformation(extent={{-140,-50},{-100,-10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a2( + redeclare final package Medium = Medium2, + m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), + h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) + "Fluid port for entering evaporator water" annotation (Placement( + transformation(extent={{190,-70},{210,-50}}), iconTransformation(extent= + {{90,-70},{110,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b2( + redeclare final package Medium = Medium2, + m_flow(max=if allowFlowReversal2 then +Modelica.Constants.inf else 0), + h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) + "Fluid port for leaving evaporator water" annotation (Placement( + transformation(extent={{190,50},{210,70}}), iconTransformation(extent={{ + 90,50},{110,70}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a1( + redeclare final package Medium = Medium1, + m_flow(min=if allowFlowReversal1 then -Modelica.Constants.inf else 0), + h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) + "Fluid port for entering condenser water" annotation (Placement( + transformation(extent={{-210,-70},{-190,-50}}), iconTransformation( + extent={{-110,-70},{-90,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b1( + redeclare final package Medium = Medium1, + m_flow(max=if allowFlowReversal1 then +Modelica.Constants.inf else 0), + h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) + "Fluid port for leaving condenser water" annotation (Placement( + transformation(extent={{-210,50},{-190,70}}), iconTransformation(extent= + {{-110,50},{-90,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput PHea( + final unit="W") "Heat pump power" + annotation (Placement(transformation(extent={{200,20},{240,60}}), + iconTransformation(extent={{100,10},{140,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput PPum( + final unit="W") "Pump power" + annotation (Placement(transformation(extent={{200,-20},{240,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mEva_flow(final unit="kg/s") + "Evaporator water mass flow rate" + annotation (Placement(transformation( + extent={{200,-60},{240,-20}}), iconTransformation(extent={{100,-50},{ + 140,-10}}))); + // COMPONENTS + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( + redeclare final package Medium = Medium2, + final m_flow_nominal=heaPumTan.mDH_flow_nominal, + final allowFlowReversal=allowFlowReversal2, + dp_nominal=datWatHea.dp2_nominal) + "Heat pump evaporator water pump" + annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea + annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant floEvaNom(final k= + mDH_flow_nominal) if not have_varFloEva + "Nominal flow rate" + annotation (Placement(transformation(extent={{0,80},{-20,100}}))); + Fluid.Sensors.TemperatureTwoPort senTHotSup( + redeclare final package Medium = Medium1, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=mHw_flow_nominal) + "Temperature of water leaving the domestic hot water storage tank" + annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=-90, + origin={40,20}))); + Fluid.Sensors.TemperatureTwoPort senTColSou( + redeclare final package Medium = Medium1, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=mHw_flow_nominal) + "Temperature of water entering domestic hot water tank" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-40,-20}))); + Buildings.Controls.OBC.CDL.Continuous.Switch enaHeaPum( + u2(start=false)) + "Enable heat pump by switching to actual set point" + annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); + Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold staPum( + y(each start=false), + t=1e-2*heaPumTan.mDH_flow_nominal, + h=0.5e-2*heaPumTan.mDH_flow_nominal) + "Pump return status" + annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply floEva + "Zero flow rate if not enabled" + annotation (Placement(transformation(extent={{-20,110},{0,130}}))); + Loads.Heating.DHW.HeatPumpWaterHeaterWithTank heaPumTan( + mHw_flow_nominal=mHw_flow_nominal, datWatHea=datWatHea) + "Heat pump with storage tank for domestic hot water" + annotation (Placement(transformation(extent={{0,-20},{20,0}}))); + parameter Loads.Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea + "Performance data" + annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); + Modelica.Blocks.Math.Add add + annotation (Placement(transformation(extent={{140,-18},{160,2}}))); +equation + connect(senTColSou.T,enaHeaPum. u3) annotation (Line(points={{-51,-20},{-150,-20}, + {-150,12},{-142,12}}, color={0,0,127})); + connect(uEna, booToRea.u) + annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); + connect(TSupSet, enaHeaPum.u1) annotation (Line(points={{-220,-20},{-180,-20}, + {-180,28},{-142,28}}, color={0,0,127})); + connect(senTHotSup.port_b, port_b1) + annotation (Line(points={{40,30},{40,60},{-200,60}}, color={0,127,255})); + connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{49,-55},{ + 44,-55},{44,-40},{220,-40}}, color={0,0,127})); + connect(port_a2, pumEva.port_a) + annotation (Line(points={{200,-60},{70,-60}}, color={0,127,255})); + connect(booToRea.y, floEva.u1) annotation (Line(points={{-158,120},{-140,120}, + {-140,134},{-40,134},{-40,126},{-22,126}}, color={0,0,127})); + connect(m2_flow, floEva.u2) annotation (Line(points={{-220,40},{-40,40},{-40,114}, + {-22,114}}, color={0,0,127})); + connect(floEvaNom.y, floEva.u2) annotation (Line(points={{-22,90},{-30,90},{-30, + 114},{-22,114}}, color={0,0,127})); + connect(floEva.y, pumEva.m_flow_in) + annotation (Line(points={{2,120},{60,120},{60,-48}}, color={0,0,127})); + connect(port_a1,senTColSou. port_a) annotation (Line(points={{-200,-60},{-40,-60}, + {-40,-30}}, color={0,127,255})); + connect(heaPumTan.port_a1,senTColSou. port_b) + annotation (Line(points={{0,-4},{-40,-4},{-40,-10}}, color={0,127,255})); + connect(heaPumTan.port_b1,senTHotSup. port_a) + annotation (Line(points={{20,-4},{40,-4},{40,10}}, color={0,127,255})); + connect(pumEva.port_b, heaPumTan.port_a2) annotation (Line(points={{50,-60},{40, + -60},{40,-16},{20,-16}}, color={0,127,255})); + connect(heaPumTan.port_b2, port_b2) annotation (Line(points={{0,-16},{-20,-16}, + {-20,40},{160,40},{160,60},{200,60}}, color={0,127,255})); + connect(enaHeaPum.y, heaPumTan.TSetHw) annotation (Line(points={{-118,20},{-10, + 20},{-10,-10},{-1,-10}}, color={0,0,127})); + connect(heaPumTan.PHea, PHea) annotation (Line(points={{21,-10},{80,-10},{80,20}, + {180,20},{180,40},{220,40}}, color={0,0,127})); + connect(staPum.y, enaHeaPum.u2) annotation (Line(points={{-102,-100},{-160,-100}, + {-160,20},{-142,20}}, color={255,0,255})); + connect(pumEva.m_flow_actual, staPum.u) annotation (Line(points={{49,-55},{0,-55}, + {0,-100},{-78,-100}}, color={0,0,127})); + connect(add.y, PPum) annotation (Line(points={{161,-8},{180,-8},{180,0},{220,0}}, + color={0,0,127})); + connect(add.u2, pumEva.P) annotation (Line(points={{138,-14},{120,-14},{120,-20}, + {49,-20},{49,-51}}, color={0,0,127})); + connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-12},{120,-12},{120, + -2},{138,-2}}, color={0,0,127})); + annotation ( + defaultComponentName="heaPum", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-60,60},{60,-60}}, + lineColor={27,0,55}, + fillColor={170,213,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-58,62},{62,-58}}, + lineColor={27,0,55}, + fillColor={170,213,255}, + fillPattern=FillPattern.Solid)}), Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), + Documentation(info=" +

+This model represents a water-to-water heat pump, an evaporator water pump, +and an optional condenser water pump if have_pumCon is set to +true. +The heat pump model is described in + +Buildings.Fluid.HeatPumps.Carnot_TCon. +By default variable speed pumps are considered. +Constant speed pumps may also be represented by setting have_varFloEva +and have_varFloCon to false. +

+

Controls

+

+The system is enabled when the input control signal uEna switches to +true. +When enabled, +

+
    +
  • +the evaporator and optionally the condenser water pumps are commanded on and supply either +the mass flow rate set point provided as an input in the case of variable speed pumps, +or the nominal mass flow rate in the case of constant speed pumps, +
  • +
  • +the heat pump is commanded on when the evaporator and optionally the condenser water pump +are proven on. When enabled, the heat pump controller—idealized in this model—tracks the +supply temperature set point at the condenser outlet. +
  • +
+", revisions=" +
    +
  • +November 16, 2022, by Michael Wetter:
    +Set pumEva.dp_nominal to correct value. +
  • +
  • +February 23, 2021, by Antoine Gautier:
    +First implementation. +
  • +
+")); +end HeatPumpDHWTank; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order index fa193cec052..21578f7a969 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order @@ -2,6 +2,7 @@ Borefield Chiller HeatExchanger HeatPump +HeatPumpDHWTank SwitchBox WatersideEconomizer Validation diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order index 1e1b2663f47..c74a100031b 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order @@ -1,5 +1,6 @@ ChillerBorefield HeatPumpHeatExchanger +HeatPumpHeatExchangerDHWTank Controls Subsystems Examples diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo new file mode 100644 index 00000000000..a030439ad77 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -0,0 +1,146 @@ +within Buildings.Experimental.DHC.Loads.Combined; +model BuildingTimeSeriesWithETSWithDHWTank + "Model of a building with loads provided as time series, with a domestic hot water heat pump and tank, connected to an ETS" + extends + Buildings.Experimental.DHC.Loads.Combined.BaseClasses.PartialBuildingWithETS( + redeclare Buildings.Experimental.DHC.Loads.BaseClasses.Examples.BaseClasses.BuildingTimeSeries bui( + final filNam=filNam, + have_hotWat=true, + T_aHeaWat_nominal=ets.THeaWatSup_nominal, + T_bHeaWat_nominal=ets.THeaWatRet_nominal, + T_aChiWat_nominal=ets.TChiWatSup_nominal, + T_bChiWat_nominal=ets.TChiWatRet_nominal), + redeclare Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchangerDHWTank ets( + QChiWat_flow_nominal=QCoo_flow_nominal, + QHeaWat_flow_nominal=QHea_flow_nominal, + QHotWat_flow_nominal=QHot_flow_nominal, + datWatHea=datWatHea)); + parameter String filNam + "Library path of the file with thermal loads as time series"; + final parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal( + max=-Modelica.Constants.eps)= + bui.facMul * bui.QCoo_flow_nominal + "Space cooling design load (<=0)" + annotation (Dialog(group="Design parameter")); + final parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal( + min=Modelica.Constants.eps)= + bui.facMul * bui.QHea_flow_nominal + "Space heating design load (>=0)" + annotation (Dialog(group="Design parameter")); + final parameter Modelica.Units.SI.HeatFlowRate QHot_flow_nominal( + min=Modelica.Constants.eps)= + bui.facMul * Buildings.Experimental.DHC.Loads.BaseClasses.getPeakLoad( + string="#Peak water heating load", + filNam=Modelica.Utilities.Files.loadResource(filNam)) + "Hot water design load (>=0)" + annotation (Dialog(group="Design parameter")); + Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( + final unit="K", + displayUnit="degC") + "Service hot water supply temperature set point" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-320,40}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-120,30}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TColWat( + final unit="K", + displayUnit="degC") + "Cold water temperature" + annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=0, + origin={-320,0}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-80,-120}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter loaHeaNor( + k=1/QHea_flow_nominal) "Normalized heating load" + annotation (Placement(transformation(extent={{-200,-110},{-180,-90}}))); + Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold enaHeaCoo[2](each t=1e-4) + "Threshold comparison to enable heating and cooling" + annotation (Placement(transformation(extent={{-110,-130},{-90,-110}}))); + Modelica.Blocks.Sources.BooleanConstant enaSHW( + final k=true) if have_hotWat + "SHW production enable signal" + annotation (Placement(transformation(extent={{0,-130},{-20,-110}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter loaCooNor(k=1/ + QCoo_flow_nominal) "Normalized cooling load" + annotation (Placement(transformation(extent={{-200,-150},{-180,-130}}))); + parameter Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea + "Performance data" + annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); +equation + connect(bui.QReqHotWat_flow, ets.loaSHW) annotation (Line(points={{28,4},{28, + -10},{-64,-10},{-64,-74},{-34,-74}}, color={0,0,127})); + connect(THotWatSupSet, ets.THotWatSupSet) annotation (Line(points={{-320,40}, + {-136,40},{-136,-66},{-34,-66}}, color={0,0,127})); + connect(TColWat, ets.TColWat) annotation (Line(points={{-320,0},{-148,0},{ + -148,-70},{-34,-70}}, color={0,0,127})); + connect(enaHeaCoo[1].y, ets.uHea) annotation (Line(points={{-88,-120},{-40, + -120},{-40,-46},{-34,-46}}, color={255,0,255})); + connect(enaHeaCoo[2].y, ets.uCoo) annotation (Line(points={{-88,-120},{-40, + -120},{-40,-50},{-34,-50}}, color={255,0,255})); + connect(enaSHW.y, ets.uSHW) annotation (Line(points={{-21,-120},{-38,-120},{-38, + -54},{-34,-54}}, color={255,0,255})); + connect(loaHeaNor.y, enaHeaCoo[1].u) annotation (Line(points={{-178,-100},{ + -120,-100},{-120,-120},{-112,-120}}, color={0,0,127})); + connect(loaCooNor.y, enaHeaCoo[2].u) annotation (Line(points={{-178,-140},{ + -120,-140},{-120,-120},{-112,-120}}, color={0,0,127})); + connect(bui.QReqHea_flow, loaHeaNor.u) annotation (Line(points={{20,4},{20,-6}, + {-218,-6},{-218,-100},{-202,-100}}, color={0,0,127})); + connect(bui.QReqCoo_flow, loaCooNor.u) annotation (Line(points={{24,4},{24,-4}, + {-220,-4},{-220,-140},{-202,-140}}, color={0,0,127})); + connect(loaHeaNor.y, resTHeaWatSup.u) annotation (Line(points={{-178,-100},{ + -120,-100},{-120,-40},{-112,-40}}, color={0,0,127})); + annotation ( + Documentation(info=" +

+This model is composed of a heat pump based energy transfer station model + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchanger +connected to a simplified building model where the space heating, cooling +and hot water loads are provided as time series. +

+

Scaling

+

+The parameter bui.facMul is the multiplier factor +applied to the building loads that are provided as time series. +It is used to represent multiple identical buildings served by +a unique energy transfer station. +The parameter facMul is the multiplier factor +applied to the whole system composed of the building(s) and the +energy transfer station. +It is used to represent multiple identical ETSs served by +the DHC system. +So, if for instance the overall heating and cooling efficiency is +equal to 1, then the load on the district loop +is the load provided as time series multiplied by facMul * bui.facMul. +

+

+Note that the parameters QCoo_flow_nominal, QHea_flow_nominal +and QHot_flow_nominal are the ETS design values. They include +the building loads multiplier factor bui.facMul but not +the building and ETS multiplier factor facMul. +

+", revisions=" +
    +
  • +November 21, 2022, by David Blum:
    +Change bui.facMulHea and bui.facMulCoo to be default.
    +This is for + +issue 2302. +
  • +
  • +February 23, 2021, by Antoine Gautier:
    +First implementation. +
  • +
+"), + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-300,-300},{ + 300,300}}))); +end BuildingTimeSeriesWithETSWithDHWTank; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo new file mode 100644 index 00000000000..5176809e4e5 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -0,0 +1,106 @@ +within Buildings.Experimental.DHC.Loads.Combined.Examples; +model BuildingTimeSeriesWithETSDHWTank + "Example model of a building with loads provided as time series for heating, cooling, and domestic hot water heat pump and tank" + extends Modelica.Icons.Example; + package Medium=Buildings.Media.Water + "Medium model"; + Buildings.Fluid.Sources.Boundary_pT supAmbWat( + redeclare package Medium = Medium, + p(displayUnit="bar"), + use_T_in=true, + T=280.15, + nPorts=1) "Ambient water supply" + annotation (Placement(transformation(extent={{-10,-10},{10,10}},rotation=0,origin={-50,10}))); + Buildings.Fluid.Sources.Boundary_pT sinAmbWat( + redeclare package Medium = Medium, + p(displayUnit="bar"), + nPorts=1) "Sink for ambient water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}},rotation=0,origin={-50,-50}))); + Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = Medium) + "Mass flow rate sensor" + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + Modelica.Blocks.Sources.Constant TDisSup(k( + unit="K", + displayUnit="degC") = 288.15) + "District supply temperature" + annotation (Placement(transformation(extent={{-90,4},{-70,24}}))); + BuildingTimeSeriesWithETSWithDHWTank bui( + redeclare package MediumSer = Medium, + redeclare package MediumBui = Medium, + bui(facMul=10), + allowFlowReversalSer=true, + filNam="modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", + datWatHea=datWatHea) + annotation (Placement(transformation(extent={{40,-20},{60,0}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) + "Cold water temperature" + annotation (Placement(transformation(extent={{60,80},{80,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THotWatSupSet(k=bui.ets.THotWatSup_nominal) + "Hot water supply temperature set point" + annotation (Placement(transformation(extent={{20,80},{40,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=bui.TChiWatSup_nominal) + "Chilled water supply temperature set point" + annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupMaxSet(k=bui.THeaWatSup_nominal) + "Heating water supply temperature set point - Maximum value" + annotation (Placement(transformation(extent={{-60,80},{-40,100}}))); + Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) + "Heating water supply temperature set point - Minimum value" + annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); + parameter Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea( + mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal, + + QCon_flow_max=1.2*datWatHea.QCon_flow_nominal, + QCon_flow_nominal=bui.QHot_flow_nominal, + TTan_nominal=333.15, + THex_nominal=datWatHea.TTan_nominal + datWatHea.dTCon_nominal) + "Performance data" + annotation (Placement(transformation(extent={{44,-38},{56,-26}}))); +equation + connect(supAmbWat.ports[1], senMasFlo.port_a) + annotation (Line(points={{-40,10},{-20,10}}, color={0,127,255})); + connect(TDisSup.y,supAmbWat. T_in) + annotation (Line(points={{-69,14},{-62,14}}, color={0,0,127})); + connect(senMasFlo.port_b, bui.port_aSerAmb) annotation (Line(points={{0,10},{20, + 10},{20,-10},{40,-10}}, color={0,127,255})); + connect(sinAmbWat.ports[1], bui.port_bSerAmb) annotation (Line(points={{-40,-50}, + {80,-50},{80,-10},{60,-10}}, color={0,127,255})); + connect(THeaWatSupMinSet.y, bui.THeaWatSupMinSet) annotation (Line(points={{-78, + 90},{-70,90},{-70,60},{34,60},{34,-1},{38,-1}}, color={0,0,127})); + connect(THeaWatSupMaxSet.y, bui.THeaWatSupMaxSet) annotation (Line(points={{-38, + 90},{-30,90},{-30,58},{32,58},{32,-3},{38,-3}}, color={0,0,127})); + connect(TChiWatSupSet.y, bui.TChiWatSupSet) annotation (Line(points={{2,90},{10, + 90},{10,56},{30,56},{30,-5},{38,-5}}, color={0,0,127})); + connect(THotWatSupSet.y, bui.THotWatSupSet) annotation (Line(points={{42,90},{ + 50,90},{50,40},{28,40},{28,-7},{38,-7}}, color={0,0,127})); + connect(TColWat.y, bui.TColWat) annotation (Line(points={{82,90},{88,90},{88,38}, + {26,38},{26,-26},{42,-26},{42,-22}}, color={0,0,127})); + annotation ( + Icon( + coordinateSystem( + preserveAspectRatio=false)), + Diagram( + coordinateSystem( + preserveAspectRatio=false)), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mos" "Simulate and plot"), + experiment( + StopTime=864000, + Interval=600, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + Documentation(info=" +

+This model provides an example for a building with loads provided +as time series and connected to a direct ETS for cooling with the +return chilled water temperature controlled above a minimum threshold. +

+", revisions=" +
    +
  • +March 20, 2022, by Chengnan Shi:
    +First implementation. +
  • +
+")); +end BuildingTimeSeriesWithETSDHWTank; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order b/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order index d36587bb820..04027fc9454 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/package.order @@ -1 +1,2 @@ BuildingTimeSeriesWithETS +BuildingTimeSeriesWithETSDHWTank diff --git a/Buildings/Experimental/DHC/Loads/Combined/package.order b/Buildings/Experimental/DHC/Loads/Combined/package.order index 1069a5236c1..fc49af3a8ca 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/package.order +++ b/Buildings/Experimental/DHC/Loads/Combined/package.order @@ -1,3 +1,4 @@ BuildingTimeSeriesWithETS +BuildingTimeSeriesWithETSWithDHWTank BaseClasses Examples diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo index 9d5e0c21a06..0c43735537a 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo @@ -7,8 +7,8 @@ partial model PartialFourPortDHW replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - Modelica.Blocks.Interfaces.RealOutput PEle - "Electric power required for generation equipment" + Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") + "Electric power required for heating equipment" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Modelica.Blocks.Interfaces.RealInput TSetHw "Temperature setpoint for domestic hot water supply from heater" @@ -18,7 +18,7 @@ partial model PartialFourPortDHW protected parameter Boolean have_PEle "Flag that specifies whether electric power is required for water heating"; equation - connect(zero.y, PEle) + connect(zero.y,PHea) annotation (Line(points={{81,90},{82,90},{82,0},{110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info=" diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo index 101f1d999d1..e0b0c355910 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo @@ -16,6 +16,8 @@ record GenericHeatPumpWaterHeater parameter Modelica.Units.SI.Temperature THex_nominal = 333.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; + parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; + parameter Modelica.Units.SI.PressureDifference dp2_nominal = 5000 "Pressure drop across evaporator"; parameter Integer nSeg(min=4) = 5 "Number of volume segments"; annotation (preferredView="info",Documentation(info=" diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo index 0e36b0c4050..40faaac645b 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo @@ -53,7 +53,7 @@ equation {90,60},{100,60}}, color={0,127,255})); connect(port_a1, hex.port_a1) annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); - connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,-2},{40,-2},{40,-20}, + connect(heaDhw.Q_flow,PHea) annotation (Line(points={{31,-2},{40,-2},{40,-20}, {94,-20},{94,0},{110,0}}, color={0,0,127})); connect(TSetHw, heaDhw.TSet) annotation (Line(points={{-110,0},{-90,0},{-90,-20}, {0,-20},{0,-2},{8,-2}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo index fc4f44fb891..53076ab4583 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo @@ -79,7 +79,7 @@ equation annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); connect(TDis.y, souDHw.T_in) annotation (Line(points={{50,-79},{50,-48},{26,-48}, {26,-42}}, color={0,0,127})); - connect(genDHW.PEle, PEle) + connect(genDHW.PHea, PEle) annotation (Line(points={{11,0},{110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 34ccd29dfdd..f8cec475906 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -92,7 +92,7 @@ equation annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); connect(genDHW.port_b2, sinDHw.ports[1]) annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(genDHW.PEle, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80},{ + connect(genDHW.PHea, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80},{ 110,80}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo index 7655bfd5e8c..88ec0950a7c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo @@ -3,7 +3,11 @@ model HeatPumpWaterHeaterWithTank "A model for domestic water heating served by heat pump water heater and local storage tank" extends Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW( - final have_PEle = true); + final have_PEle = true, + mDH_flow_nominal = heaPum.QEva_flow_nominal/cp2_default/heaPum.dTEva_nominal); + constant Modelica.Units.SI.SpecificHeatCapacity cp2_default= + Medium.specificHeatCapacityCp(Medium.setState_pTX(p=Medium.p_default, + T=Medium.T_default)) "Specific heat capacity of the fluid"; parameter Buildings.Experimental.DHC.Loads.Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); @@ -19,11 +23,12 @@ model HeatPumpWaterHeaterWithTank m2_flow_nominal=mDH_flow_nominal, dTEva_nominal=datWatHea.dTEva_nominal, dTCon_nominal=datWatHea.dTCon_nominal, + use_eta_Carnot_nominal=true, etaCarnot_nominal=0.3, QCon_flow_max = datWatHea.QCon_flow_max, QCon_flow_nominal=datWatHea.QCon_flow_nominal, - dp1_nominal=5000, - dp2_nominal=5000) + dp1_nominal=datWatHea.dp1_nominal, + dp2_nominal=datWatHea.dp2_nominal) "Domestic hot water heater" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = @@ -47,7 +52,9 @@ model HeatPumpWaterHeaterWithTank "Pump with m_flow input" annotation (Placement(transformation(extent={{60,30},{40,50}}))); Fluid.Storage.StratifiedEnhancedInternalHex - tanSte(energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + tanSte( + T_start=datWatHea.TTan_nominal, + energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare package Medium = Medium, redeclare package MediumHex = Medium, hTan=datWatHea.hTan, @@ -78,6 +85,9 @@ model HeatPumpWaterHeaterWithTank k=k, Ti=Ti) annotation (Placement(transformation(extent={{-10,80},{10,100}}))); + Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") + "Electric power required for pumping equipment" + annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); equation connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); @@ -86,7 +96,7 @@ equation color={0,127,255})); connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-10,-60}, {-10,-6}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, + connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, {76,0},{110,0}}, color={0,0,127})); connect(TSetHw, add.u1) annotation (Line(points={{-110,0},{-80,0},{-80,6},{-72, 6}}, color={0,0,127})); @@ -119,6 +129,8 @@ equation 70},{0,70},{0,78}}, color={0,0,127})); connect(tanTemSen.port, tanSte.heaPorVol[4]) annotation (Line(points={{-40,72}, {-46,72},{-46,50},{-50,50}}, color={191,0,0})); + connect(pumHex.P, PPum) annotation (Line(points={{39,49},{32,49},{32,-20},{110, + -20}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From 6e3989d4577e95d8276bee932b310b5a2f20483e Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 29 Aug 2023 13:14:01 -0700 Subject: [PATCH 071/183] Upate for CDL.Continuous to CDL.Reals --- .../PartialHeatPumpHeatExchanger.mo | 36 ++++++++--------- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 2 +- .../HeatPumpHeatExchangerDHWTank_Current.mo | 36 ++++++++--------- .../Combined/HeatPumpHeatExchanger_Current.mo | 40 +++++++++---------- .../Combined/Subsystems/HeatPumpDHWTank.mo | 8 ++-- .../BuildingTimeSeriesWithETSWithDHWTank.mo | 6 +-- .../BuildingTimeSeriesWithETSDHWTank.mo | 13 +++--- .../Loads/DHW/HeatPumpWaterHeaterWithTank.mo | 4 +- 8 files changed, 72 insertions(+), 73 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index a9c5b369d89..9b49865a5da 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -238,7 +238,7 @@ model PartialHeatPumpHeatExchanger final allowFlowReversal=allowFlowReversalBui) "Chilled water mass flow rate" annotation (Placement(transformation(extent={{-250,-130},{-230,-110}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k= + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k= m1HexChi_flow_nominal) annotation (Placement(transformation(extent={{-108,-210},{-88,-190}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PIDWithEnable conTChiWat( @@ -249,7 +249,7 @@ model PartialHeatPumpHeatExchanger reverseActing=false, yMin=0) "PI controller for district HX primary side" annotation (Placement(transformation(extent={{-150,-210},{-130,-190}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumHeaTot(nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumHeaTot(nin=2) "Total pump power for heating applications" annotation (Placement(transformation(extent={{190,410},{210,430}}))); Buildings.Fluid.Sources.Boundary_pT bouHeaWat( @@ -264,10 +264,10 @@ model PartialHeatPumpHeatExchanger nPorts=1) "Pressure boundary condition representing the expansion vessel" annotation (Placement(transformation(extent={{-162,-290},{-142,-270}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumCooTot(nin=1) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumCooTot(nin=1) "Total pump power for space cooling" annotation (Placement(transformation(extent={{190,370},{210,390}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumTot(nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumTot(nin=2) "Total pump power" annotation (Placement(transformation(extent={{220,390},{240,410}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup( @@ -331,13 +331,13 @@ model PartialHeatPumpHeatExchanger final dp1_nominal=dp_nominal, final dp2_nominal=dp_nominal) "Subsystem for heating water production" annotation (Placement(transformation(extent={{-10,204},{10,224}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div1 if have_hotWat + Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat "Compute mass flow rate from load" annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(final k= + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= cpBui_default) if have_hotWat "Times Cp" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum masFloHeaTot(nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum masFloHeaTot(nin=2) "Compute district water mass flow rate used for heating service" annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); Modelica.Blocks.Sources.Constant zer(final k=0) if not have_hotWat @@ -359,7 +359,7 @@ model PartialHeatPumpHeatExchanger extent={{-10,-10},{10,10}}, rotation=0, origin={40,-120}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract delT if have_hotWat + Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = @@ -372,26 +372,26 @@ model PartialHeatPumpHeatExchanger Modelica.Blocks.Sources.Constant zer1(k=0) if not have_hotWat "Replacement variable" annotation (Placement(transformation(extent={{-40,-250},{-20,-230}}))); - Buildings.Controls.OBC.CDL.Continuous.Add masFloHea + Buildings.Controls.OBC.CDL.Reals.Add masFloHea "Service water mass flow rate for heating applications" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=-90, origin={0,-264}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PHeaTot(nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(nin=2) "Total power used for heating and hot water production" annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaSHW if have_hotWat and have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaSHW if have_hotWat and have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract dTHHW + Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW "Heating hot water DeltaT" annotation (Placement(transformation(extent={{0,310},{-20,330}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter capFloHHW( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter capFloHHW( final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); - Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaHHW if have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaSHW( @@ -415,17 +415,17 @@ model PartialHeatPumpHeatExchanger final cp=cpSer_default) if have_varFloEva "Mass flow rate control" annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); - Buildings.Controls.OBC.CDL.Continuous.Max priOve if have_varFloCon + Buildings.Controls.OBC.CDL.Reals.Max priOve if have_varFloCon "Ensure primary overflow" annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply loaHHW + Buildings.Controls.OBC.CDL.Reals.Multiply loaHHW if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSub(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub(final k=-1) if have_hotWat and have_varFloEva "Convert to subtraction" annotation (Placement(transformation(extent={{-80,70},{-100,90}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSub1(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub1(final k=-1) if have_varFloEva "Convert to subtraction" annotation (Placement(transformation(extent={{-80,216},{-100,236}}))); equation diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 36a9d5a6c22..11d1ec95bf6 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -34,7 +34,7 @@ model HeatPumpHeatExchangerDHWTank use_m_flow_in=true, nPorts=1) if have_hotWat "Sink for domestic hot water" annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSin(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) if have_hotWat "Convert to sink" annotation (Placement(transformation(extent={{-98,50},{-78,70}}))); equation diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo index 8c993cb5bd6..70f7012df17 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo @@ -236,7 +236,7 @@ model HeatPumpHeatExchangerDHWTank_Current final allowFlowReversal=allowFlowReversalBui) "Chilled water mass flow rate" annotation (Placement(transformation(extent={{-250,-130},{-230,-110}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k= + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k= m1HexChi_flow_nominal) annotation (Placement(transformation(extent={{-108,-210},{-88,-190}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PIDWithEnable conTChiWat( @@ -247,7 +247,7 @@ model HeatPumpHeatExchangerDHWTank_Current reverseActing=false, yMin=0) "PI controller for district HX primary side" annotation (Placement(transformation(extent={{-150,-210},{-130,-190}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumHeaTot(final nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumHeaTot(final nin=2) "Total pump power for heating applications" annotation (Placement(transformation(extent={{190,410},{210,430}}))); Buildings.Fluid.Sources.Boundary_pT bouHeaWat( @@ -262,10 +262,10 @@ model HeatPumpHeatExchangerDHWTank_Current nPorts=1) "Pressure boundary condition representing the expansion vessel" annotation (Placement(transformation(extent={{-162,-290},{-142,-270}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumCooTot(nin=1) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumCooTot(nin=1) "Total pump power for space cooling" annotation (Placement(transformation(extent={{190,370},{210,390}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumTot(nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumTot(nin=2) "Total pump power" annotation (Placement(transformation(extent={{220,390},{240,410}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup( @@ -350,13 +350,13 @@ model HeatPumpHeatExchangerDHWTank_Current extent={{10,-10},{-10,10}}, rotation=180, origin={-40,-10}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div1 if have_hotWat + Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat "Compute mass flow rate from load" annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(final k= + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= cpBui_default) if have_hotWat "Times Cp" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum masFloHeaTot(final nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum masFloHeaTot(final nin=2) "Compute district water mass flow rate used for heating service" annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); Modelica.Blocks.Sources.Constant zer(final k=0) if not have_hotWat @@ -378,7 +378,7 @@ model HeatPumpHeatExchangerDHWTank_Current extent={{-10,-10},{10,10}}, rotation=0, origin={40,-120}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract delT if have_hotWat + Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = @@ -391,26 +391,26 @@ model HeatPumpHeatExchangerDHWTank_Current Modelica.Blocks.Sources.Constant zer1(k=0) if not have_hotWat "Replacement variable" annotation (Placement(transformation(extent={{-40,-250},{-20,-230}}))); - Buildings.Controls.OBC.CDL.Continuous.Add masFloHea + Buildings.Controls.OBC.CDL.Reals.Add masFloHea "Service water mass flow rate for heating applications" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=-90, origin={0,-264}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PHeaTot(final nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(final nin=2) "Total power used for heating and hot water production" annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaSHW if have_hotWat and have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaSHW if have_hotWat and have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract dTHHW + Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW "Heating hot water DeltaT" annotation (Placement(transformation(extent={{0,310},{-20,330}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter capFloHHW( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter capFloHHW( final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); - Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaHHW if have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloConHHW( @@ -427,10 +427,10 @@ model HeatPumpHeatExchangerDHWTank_Current final cp=cpSer_default) if have_varFloEva "Mass flow rate control" annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); - Buildings.Controls.OBC.CDL.Continuous.Max priOve if have_varFloCon + Buildings.Controls.OBC.CDL.Reals.Max priOve if have_varFloCon "Ensure primary overflow" annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply loaHHW + Buildings.Controls.OBC.CDL.Reals.Multiply loaHHW if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); @@ -439,7 +439,7 @@ model HeatPumpHeatExchangerDHWTank_Current use_m_flow_in=true, nPorts=1) if have_hotWat "Sink for domestic hot water" annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSin(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) if have_hotWat "Convert to sink" annotation (Placement(transformation(extent={{-98,50},{-78,70}}))); parameter Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea @@ -452,7 +452,7 @@ model HeatPumpHeatExchangerDHWTank_Current final cp=cpSer_default) if have_hotWat and have_varFloEva "Mass flow rate control" annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSub(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub(final k=-1) if have_hotWat "Convert to subtraction" annotation (Placement(transformation(extent={{-80,70},{-100,90}}))); equation diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo index 065c3f0fcf4..28c8a44ed88 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo @@ -240,7 +240,7 @@ model HeatPumpHeatExchanger_Current final allowFlowReversal=allowFlowReversalBui) "Chilled water mass flow rate" annotation (Placement(transformation(extent={{-250,-130},{-230,-110}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k= + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k= m1HexChi_flow_nominal) annotation (Placement(transformation(extent={{-108,-210},{-88,-190}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PIDWithEnable conTChiWat( @@ -251,7 +251,7 @@ model HeatPumpHeatExchanger_Current reverseActing=false, yMin=0) "PI controller for district HX primary side" annotation (Placement(transformation(extent={{-150,-210},{-130,-190}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumHeaTot(final nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumHeaTot(final nin=2) "Total pump power for heating applications" annotation (Placement(transformation(extent={{190,410},{210,430}}))); Buildings.Fluid.Sources.Boundary_pT bouHeaWat( @@ -266,10 +266,10 @@ model HeatPumpHeatExchanger_Current nPorts=1) "Pressure boundary condition representing the expansion vessel" annotation (Placement(transformation(extent={{-162,-290},{-142,-270}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumCooTot(nin=1) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumCooTot(nin=1) "Total pump power for space cooling" annotation (Placement(transformation(extent={{190,370},{210,390}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PPumTot(nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PPumTot(nin=2) "Total pump power" annotation (Placement(transformation(extent={{220,390},{240,410}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup( @@ -365,13 +365,13 @@ model HeatPumpHeatExchanger_Current nPorts=1) if have_hotWat "Source for cold water" annotation (Placement(transformation(extent={{-48,-50},{-28,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div1 if have_hotWat + Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat "Compute mass flow rate from load" annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(final k= + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= cpBui_default) if have_hotWat "Times Cp" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum masFloHeaTot(final nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum masFloHeaTot(final nin=2) "Compute district water mass flow rate used for heating service" annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); Modelica.Blocks.Sources.Constant zer(final k=0) if not have_hotWat @@ -393,11 +393,11 @@ model HeatPumpHeatExchanger_Current extent={{-10,-10},{10,10}}, rotation=0, origin={40,-120}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract delT if have_hotWat + Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium - = MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = + MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW( @@ -406,26 +406,26 @@ model HeatPumpHeatExchanger_Current Modelica.Blocks.Sources.Constant zer1(k=0) if not have_hotWat "Replacement variable" annotation (Placement(transformation(extent={{-40,-250},{-20,-230}}))); - Buildings.Controls.OBC.CDL.Continuous.Add masFloHea + Buildings.Controls.OBC.CDL.Reals.Add masFloHea "Service water mass flow rate for heating applications" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=-90, origin={0,-264}))); - Buildings.Controls.OBC.CDL.Continuous.MultiSum PHeaTot(final nin=2) + Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(final nin=2) "Total power used for heating and hot water production" annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaSHW if have_hotWat and have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaSHW if have_hotWat and have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract dTHHW + Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW "Heating hot water DeltaT" annotation (Placement(transformation(extent={{0,310},{-20,330}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter capFloHHW( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter capFloHHW( final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); - Buildings.Controls.OBC.CDL.Continuous.Add heaFloEvaHHW if have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaSHW( @@ -449,17 +449,17 @@ model HeatPumpHeatExchanger_Current final cp=cpSer_default) if have_varFloEva "Mass flow rate control" annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); - Buildings.Controls.OBC.CDL.Continuous.Max priOve if have_varFloCon + Buildings.Controls.OBC.CDL.Reals.Max priOve if have_varFloCon "Ensure primary overflow" annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply loaHHW + Buildings.Controls.OBC.CDL.Reals.Multiply loaHHW if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSub(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub(final k=-1) if have_hotWat "Convert to subtraction" annotation (Placement(transformation(extent={{-80,70},{-100,90}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter toSub1(final k=-1) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub1(final k=-1) if have_hotWat "Convert to subtraction" annotation (Placement(transformation(extent={{-80,216},{-100,236}}))); equation diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 418f7bf7566..b4dcbf07d43 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -95,7 +95,7 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant floEvaNom(final k= + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k= mDH_flow_nominal) if not have_varFloEva "Nominal flow rate" annotation (Placement(transformation(extent={{0,80},{-20,100}}))); @@ -118,17 +118,17 @@ model HeatPumpDHWTank extent={{-10,-10},{10,10}}, rotation=90, origin={-40,-20}))); - Buildings.Controls.OBC.CDL.Continuous.Switch enaHeaPum( + Buildings.Controls.OBC.CDL.Reals.Switch enaHeaPum( u2(start=false)) "Enable heat pump by switching to actual set point" annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); - Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold staPum( + Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum( y(each start=false), t=1e-2*heaPumTan.mDH_flow_nominal, h=0.5e-2*heaPumTan.mDH_flow_nominal) "Pump return status" annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply floEva + Buildings.Controls.OBC.CDL.Reals.Multiply floEva "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); Loads.DHW.HeatPumpWaterHeaterWithTank heaPumTan(mHw_flow_nominal= diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo index 08ff3a18855..051d73e253f 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -61,17 +61,17 @@ model BuildingTimeSeriesWithETSWithDHWTank extent={{-20,-20},{20,20}}, rotation=90, origin={-80,-120}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter loaHeaNor( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter loaHeaNor( k=1/QHea_flow_nominal) "Normalized heating load" annotation (Placement(transformation(extent={{-200,-110},{-180,-90}}))); - Buildings.Controls.OBC.CDL.Continuous.GreaterThreshold enaHeaCoo[2](each t=1e-4) + Buildings.Controls.OBC.CDL.Reals.GreaterThreshold enaHeaCoo[2](each t=1e-4) "Threshold comparison to enable heating and cooling" annotation (Placement(transformation(extent={{-110,-130},{-90,-110}}))); Modelica.Blocks.Sources.BooleanConstant enaSHW( final k=true) if have_hotWat "SHW production enable signal" annotation (Placement(transformation(extent={{0,-130},{-20,-110}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter loaCooNor(k=1/ + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter loaCooNor(k=1/ QCoo_flow_nominal) "Normalized cooling load" annotation (Placement(transformation(extent={{-200,-150},{-180,-130}}))); parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index ad5a1a4d4fb..a60715e6d82 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -32,24 +32,23 @@ model BuildingTimeSeriesWithETSDHWTank filNam="modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", datWatHea=datWatHea) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); - Controls.OBC.CDL.Continuous.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) + Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) "Cold water temperature" annotation (Placement(transformation(extent={{60,80},{80,100}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THotWatSupSet(k=bui.ets.THotWatSup_nominal) + Controls.OBC.CDL.Reals.Sources.Constant THotWatSupSet(k=bui.ets.THotWatSup_nominal) "Hot water supply temperature set point" annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=bui.TChiWatSup_nominal) + Controls.OBC.CDL.Reals.Sources.Constant TChiWatSupSet(k=bui.TChiWatSup_nominal) "Chilled water supply temperature set point" annotation (Placement(transformation(extent={{-20,80},{0,100}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupMaxSet(k=bui.THeaWatSup_nominal) + Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMaxSet(k=bui.THeaWatSup_nominal) "Heating water supply temperature set point - Maximum value" annotation (Placement(transformation(extent={{-60,80},{-40,100}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) + Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) "Heating water supply temperature set point - Minimum value" annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal, - QCon_flow_max=1.2*datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, TTan_nominal=333.15, @@ -84,7 +83,7 @@ equation coordinateSystem( preserveAspectRatio=false)), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSWithDHWTank.mos" "Simulate and plot"), experiment( StopTime=864000, Interval=600, diff --git a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo index 22bd8890ebb..e3b0b84fe17 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo @@ -76,11 +76,11 @@ model HeatPumpWaterHeaterWithTank Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor tanTemSen "Temperature of the hot water tank" annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); - Controls.OBC.CDL.Continuous.MultiplyByParameter + Controls.OBC.CDL.Reals.MultiplyByParameter dTTanHex2(k=datWatHea.mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Controls.OBC.CDL.Continuous.PID conPI( + Controls.OBC.CDL.Reals.PID conPI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, k=k, Ti=Ti) From e651d7684caf4b04661c01cb83c99b45844f35b6 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 5 Sep 2023 10:27:01 -0700 Subject: [PATCH 072/183] Make ETS with Tank extend original ETS --- .../BuildingTimeSeriesWithETSWithDHWTank.mo | 137 +----------------- .../BuildingTimeSeriesWithETSDHWTank.mo | 11 +- 2 files changed, 8 insertions(+), 140 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo index 051d73e253f..a7c66c475f7 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -1,17 +1,7 @@ within Buildings.Experimental.DHC.Loads.Combined; model BuildingTimeSeriesWithETSWithDHWTank - "Model of a building with loads provided as time series, with a domestic hot water heat pump and tank, connected to an ETS" - extends - Buildings.Experimental.DHC.Loads.Combined.BaseClasses.PartialBuildingWithETS( + extends BuildingTimeSeriesWithETS( redeclare - Buildings.Experimental.DHC.Loads.BaseClasses.Examples.BaseClasses.BuildingTimeSeries - bui( - final filNam=filNam, - have_hotWat=true, - T_aHeaWat_nominal=ets.THeaWatSup_nominal, - T_bHeaWat_nominal=ets.THeaWatRet_nominal, - T_aChiWat_nominal=ets.TChiWatSup_nominal, - T_bChiWat_nominal=ets.TChiWatRet_nominal), redeclare Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchangerDHWTank ets( have_hotWat=true, @@ -19,131 +9,6 @@ model BuildingTimeSeriesWithETSWithDHWTank QHeaWat_flow_nominal=QHea_flow_nominal, QHotWat_flow_nominal=QHot_flow_nominal, datWatHea=datWatHea)); - parameter String filNam - "Library path of the file with thermal loads as time series"; - final parameter Modelica.Units.SI.HeatFlowRate QCoo_flow_nominal( - max=-Modelica.Constants.eps)= - bui.facMul * bui.QCoo_flow_nominal - "Space cooling design load (<=0)" - annotation (Dialog(group="Design parameter")); - final parameter Modelica.Units.SI.HeatFlowRate QHea_flow_nominal( - min=Modelica.Constants.eps)= - bui.facMul * bui.QHea_flow_nominal - "Space heating design load (>=0)" - annotation (Dialog(group="Design parameter")); - final parameter Modelica.Units.SI.HeatFlowRate QHot_flow_nominal( - min=Modelica.Constants.eps)= - bui.facMul * Buildings.Experimental.DHC.Loads.BaseClasses.getPeakLoad( - string="#Peak water heating load", - filNam=Modelica.Utilities.Files.loadResource(filNam)) - "Hot water design load (>=0)" - annotation (Dialog(group="Design parameter")); - Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( - final unit="K", - displayUnit="degC") - "Service hot water supply temperature set point" - annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,40}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-120,30}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TColWat( - final unit="K", - displayUnit="degC") - "Cold water temperature" - annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,0}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-80,-120}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter loaHeaNor( - k=1/QHea_flow_nominal) "Normalized heating load" - annotation (Placement(transformation(extent={{-200,-110},{-180,-90}}))); - Buildings.Controls.OBC.CDL.Reals.GreaterThreshold enaHeaCoo[2](each t=1e-4) - "Threshold comparison to enable heating and cooling" - annotation (Placement(transformation(extent={{-110,-130},{-90,-110}}))); - Modelica.Blocks.Sources.BooleanConstant enaSHW( - final k=true) if have_hotWat - "SHW production enable signal" - annotation (Placement(transformation(extent={{0,-130},{-20,-110}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter loaCooNor(k=1/ - QCoo_flow_nominal) "Normalized cooling load" - annotation (Placement(transformation(extent={{-200,-150},{-180,-130}}))); parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); -equation - connect(bui.QReqHotWat_flow, ets.loaSHW) annotation (Line(points={{28,4},{28, - -10},{-64,-10},{-64,-74},{-34,-74}}, color={0,0,127})); - connect(THotWatSupSet, ets.THotWatSupSet) annotation (Line(points={{-320,40}, - {-136,40},{-136,-66},{-34,-66}}, color={0,0,127})); - connect(TColWat, ets.TColWat) annotation (Line(points={{-320,0},{-148,0},{ - -148,-70},{-34,-70}}, color={0,0,127})); - connect(enaHeaCoo[1].y, ets.uHea) annotation (Line(points={{-88,-120},{-40, - -120},{-40,-46},{-34,-46}}, color={255,0,255})); - connect(enaHeaCoo[2].y, ets.uCoo) annotation (Line(points={{-88,-120},{-40, - -120},{-40,-50},{-34,-50}}, color={255,0,255})); - connect(enaSHW.y, ets.uSHW) annotation (Line(points={{-21,-120},{-38,-120},{-38, - -54},{-34,-54}}, color={255,0,255})); - connect(loaHeaNor.y, enaHeaCoo[1].u) annotation (Line(points={{-178,-100},{ - -120,-100},{-120,-120},{-112,-120}}, color={0,0,127})); - connect(loaCooNor.y, enaHeaCoo[2].u) annotation (Line(points={{-178,-140},{ - -120,-140},{-120,-120},{-112,-120}}, color={0,0,127})); - connect(bui.QReqHea_flow, loaHeaNor.u) annotation (Line(points={{20,4},{20,-6}, - {-218,-6},{-218,-100},{-202,-100}}, color={0,0,127})); - connect(bui.QReqCoo_flow, loaCooNor.u) annotation (Line(points={{24,4},{24,-4}, - {-220,-4},{-220,-140},{-202,-140}}, color={0,0,127})); - connect(loaHeaNor.y, resTHeaWatSup.u) annotation (Line(points={{-178,-100},{ - -120,-100},{-120,-40},{-112,-40}}, color={0,0,127})); - annotation ( - Documentation(info=" -

-This model is composed of a heat pump based energy transfer station model - -Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchanger -connected to a simplified building model where the space heating, cooling -and hot water loads are provided as time series. -

-

Scaling

-

-The parameter bui.facMul is the multiplier factor -applied to the building loads that are provided as time series. -It is used to represent multiple identical buildings served by -a unique energy transfer station. -The parameter facMul is the multiplier factor -applied to the whole system composed of the building(s) and the -energy transfer station. -It is used to represent multiple identical ETSs served by -the DHC system. -So, if for instance the overall heating and cooling efficiency is -equal to 1, then the load on the district loop -is the load provided as time series multiplied by facMul * bui.facMul. -

-

-Note that the parameters QCoo_flow_nominal, QHea_flow_nominal -and QHot_flow_nominal are the ETS design values. They include -the building loads multiplier factor bui.facMul but not -the building and ETS multiplier factor facMul. -

-", revisions=" -
    -
  • -November 21, 2022, by David Blum:
    -Change bui.facMulHea and bui.facMulCoo to be default.
    -This is for - -issue 2302. -
  • -
  • -February 23, 2021, by Antoine Gautier:
    -First implementation. -
  • -
-"), - Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-300,-300},{ - 300,300}}))); end BuildingTimeSeriesWithETSWithDHWTank; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index a60715e6d82..1944858cbd8 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -24,12 +24,14 @@ model BuildingTimeSeriesWithETSDHWTank displayUnit="degC") = 288.15) "District supply temperature" annotation (Placement(transformation(extent={{-90,4},{-70,24}}))); - BuildingTimeSeriesWithETSWithDHWTank bui( + BuildingTimeSeriesWithETSWithDHWTank bui( redeclare package MediumSer = Medium, redeclare package MediumBui = Medium, bui(facMul=10), allowFlowReversalSer=true, - filNam="modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", + filNam= + "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", + datWatHea=datWatHea) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) @@ -51,8 +53,9 @@ model BuildingTimeSeriesWithETSDHWTank mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal, QCon_flow_max=1.2*datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, - TTan_nominal=333.15, - THex_nominal=datWatHea.TTan_nominal + datWatHea.dTCon_nominal) + TTan_nominal=bui.ets.THotWatSup_nominal, + THex_nominal=datWatHea.TTan_nominal + datWatHea.dTCon_nominal, + dTCon_nominal=5) "Performance data" annotation (Placement(transformation(extent={{44,-38},{56,-26}}))); From 51781350e5f3fd503ceaca57451a29846e6ee8dd Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 5 Sep 2023 10:31:38 -0700 Subject: [PATCH 073/183] Delete excess models --- .../HeatPumpHeatExchangerDHWTank_Current.mo | 763 ----------------- .../Combined/HeatPumpHeatExchanger_Current.mo | 777 ------------------ .../Combined/package.order | 2 - .../DHC/Loads/DHW/Examples/DELETE.mo | 252 ------ .../DHC/Loads/DHW/Examples/package.order | 1 - 5 files changed, 1795 deletions(-) delete mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo delete mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Examples/DELETE.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo deleted file mode 100644 index 70f7012df17..00000000000 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank_Current.mo +++ /dev/null @@ -1,763 +0,0 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined; -model HeatPumpHeatExchangerDHWTank_Current - "Model of a substation with heat pump and compressor-less cooling with domestic hot water served by a heat pump with storage tank" - extends - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.PartialETS( - final typ=Buildings.Experimental.DHC.Types.DistrictSystemType.CombinedGeneration5, - final have_weaBus=false, - final have_chiWat=true, - final have_heaWat=true, - final have_hotWat=true, - final have_eleHea=true, - final nFue=0, - final have_eleCoo=false, - final have_pum=true, - final have_fan=false, - nPorts_aHeaWat=1, - nPorts_aChiWat=1); - // SYSTEM GENERAL - parameter Boolean have_varFloCon = true - "Set to true for heat pumps with variable condenser flow" - annotation(Evaluate=true); - parameter Boolean have_varFloEva = true - "Set to true for heat pumps with variable evaporator flow" - annotation(Evaluate=true); - parameter Real ratFloMin( - final unit="1", - final min=0, - final max=1)=0.3 - "Minimum condenser or evaporator mass flow rate (ratio to nominal)" - annotation (Dialog(enable=have_varFloCon or have_varFloEva)); - parameter Modelica.Units.SI.Temperature TDisWatMin - "District water minimum temperature" annotation (Dialog(group="DHC system")); - parameter Modelica.Units.SI.Temperature TDisWatMax - "District water maximum temperature" annotation (Dialog(group="DHC system")); - parameter Modelica.Units.SI.TemperatureDifference dT_nominal(min=0) = 5 - "Water temperature drop/increase accross load and source-side HX (always positive)" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature TChiWatSup_nominal=291.15 - "Chilled water supply temperature" - annotation (Dialog(group="Nominal conditions")); - final parameter Modelica.Units.SI.Temperature TChiWatRet_nominal= - TChiWatSup_nominal + dT_nominal "Chilled water return temperature" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature THeaWatSup_nominal=313.15 - "Heating water supply temperature" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.Temperature THeaWatRet_nominal= - THeaWatSup_nominal - dT_nominal "Heating water return temperature" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature THotWatSup_nominal=datWatHea.TTan_nominal - "Hot water supply temperature" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 - "Cold water temperature (for hot water production)" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - parameter Modelica.Units.SI.Pressure dp_nominal(displayUnit="Pa") = 50000 - "Pressure difference at nominal flow rate (for each flow leg)" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal(min=0)= - abs(QHeaWat_flow_nominal/cpBui_default/(THeaWatSup_nominal - - THeaWatRet_nominal)) "Heating water mass flow rate" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal(min=0)= - abs(QChiWat_flow_nominal/cpBui_default/(TChiWatSup_nominal - - TChiWatRet_nominal)) "Chilled water mass flow rate" - annotation (Dialog(group="Nominal conditions")); - final parameter Modelica.Units.SI.MassFlowRate mEvaHotWat_flow_nominal(min=0)=proHotWat.heaPumTan.mDH_flow_nominal - "Evaporator water mass flow rate of heat pump for hot water production" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate mSerWat_flow_nominal(min=0)= - max(proHeaWat.m2_flow_nominal + mEvaHotWat_flow_nominal, hexChi.m1_flow_nominal) - "Service water mass flow rate" - annotation (Dialog(group="Nominal condition")); - constant Modelica.Units.SI.SpecificHeatCapacity cpBui_default= - MediumBui.specificHeatCapacityCp(MediumBui.setState_pTX(p=MediumBui.p_default, - T=MediumBui.T_default)) "Specific heat capacity of the fluid"; - constant Modelica.Units.SI.SpecificHeatCapacity cpSer_default= - MediumBui.specificHeatCapacityCp(MediumSer.setState_pTX(p=MediumSer.p_default, - T=MediumSer.T_default)) "Specific heat capacity of the fluid"; - // Heat pump for heating water production - parameter Real COPHeaWat_nominal(final unit="1") - "COP of heat pump for heating water production" - annotation (Dialog(group="Nominal condition")); - // Heat pump for hot water production - parameter Real COPHotWat_nominal(final unit="1") - "COP of heat pump for hot water production" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - // District HX - final parameter Modelica.Units.SI.MassFlowRate m1HexChi_flow_nominal(min=0)= - abs(QChiWat_flow_nominal/cpSer_default/dT_nominal) - "CHW HX primary mass flow rate" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate m2HexChi_flow_nominal(min=0)= - abs(QChiWat_flow_nominal/cpSer_default/(THeaWatSup_nominal - - THeaWatRet_nominal)) "CHW HX secondary mass flow rate" - annotation (Dialog(group="Nominal condition")); - // Dynamics - parameter Modelica.Fluid.Types.Dynamics mixingVolumeEnergyDynamics= - Modelica.Fluid.Types.Dynamics.FixedInitial - "Formulation of energy balance for mixing volume at inlet and outlet" - annotation(Dialog(tab="Dynamics")); - // IO CONNECTORS - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uCoo - "Cooling enable signal" - annotation (Placement(transformation(extent={{-340, - 100},{-300,140}}), iconTransformation(extent={{-380,20},{-300,100}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uHea - "Heating enable signal" - annotation (Placement(transformation(extent={{-340, - 140},{-300,180}}), iconTransformation(extent={{-380,60},{-300,140}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSHW if have_hotWat - "SHW production enable signal" - annotation (Placement(transformation(extent= - {{-340,60},{-300,100}}), iconTransformation(extent={{-380,-20},{-300, - 60}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput THeaWatSupSet( - final unit="K", - displayUnit="degC") - "Heating water supply temperature set point" - annotation (Placement( - transformation( - extent={{-340,20},{-300,60}}), - iconTransformation( - extent={{-380,-60},{-300,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( - final unit="K", - displayUnit="degC") if have_hotWat - "Service hot water supply temperature set point" - annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,-40}), - iconTransformation( - extent={{-380,-140},{-300,-60}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TColWat( - final unit="K", - displayUnit="degC") if have_hotWat - "Cold water temperature" annotation ( - Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,-80}), iconTransformation( - extent={{-40,-40},{40,40}}, - rotation=0, - origin={-340,-140}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput loaSHW( - final unit="W") if have_hotWat "Service hot water load" - annotation ( - Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,-120}),iconTransformation( - extent={{-40,-40},{40,40}}, - rotation=0, - origin={-340,-180}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSupSet(final unit="K", - displayUnit="degC") - "Chilled water supply temperature set point" annotation (Placement( - transformation( - extent={{-340,-20},{-300,20}}), - iconTransformation( - extent={{-380,-100},{-300,-20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mHea_flow(final unit="kg/s") - "District water mass flow rate used for heating service" - annotation ( Placement(transformation(extent={{300,-160},{340,-120}}), - iconTransformation(extent={{300,-160},{380,-80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCoo_flow(final unit="kg/s") - "District water mass flow rate used for cooling service" - annotation ( Placement(transformation(extent={{300,-200},{340,-160}}), - iconTransformation(extent={{300,-200},{380,-120}}))); - // COMPONENTS - Buildings.Fluid.Delays.DelayFirstOrder volMix_a( - redeclare final package Medium = MediumSer, - final nPorts=if have_hotWat then 4 else 3, - final m_flow_nominal=mSerWat_flow_nominal, - tau=600, - final energyDynamics=mixingVolumeEnergyDynamics) - "Mixing volume to break algebraic loops and to emulate the delay of the substation" - annotation (Placement(transformation(extent={{-270,-360},{-250,-380}}))); - Buildings.Fluid.Delays.DelayFirstOrder volMix_b( - redeclare final package Medium = MediumSer, - final nPorts=if have_hotWat then 4 else 3, - final m_flow_nominal=mSerWat_flow_nominal, - tau=600, - final energyDynamics=mixingVolumeEnergyDynamics) - "Mixing volume to break algebraic loops and to emulate the delay of the substation" - annotation (Placement(transformation(extent={{250,-360},{270,-380}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pum1HexChi( - redeclare final package Medium = MediumSer, - final m_flow_nominal=m1HexChi_flow_nominal, - final allowFlowReversal=allowFlowReversalSer) - "Chilled water HX primary pump" - annotation (Placement(transformation(extent={{110,-350},{90,-330}}))); - Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU hexChi( - redeclare final package Medium1 = MediumSer, - redeclare final package Medium2 = MediumBui, - final m1_flow_nominal=m1HexChi_flow_nominal, - final m2_flow_nominal=m2HexChi_flow_nominal, - final dp1_nominal=dp_nominal/2, - final dp2_nominal=dp_nominal/2, - configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow, - final Q_flow_nominal=QChiWat_flow_nominal, - final T_a1_nominal=TDisWatMax, - final T_a2_nominal=TChiWatRet_nominal, - final allowFlowReversal1=allowFlowReversalSer, - final allowFlowReversal2=allowFlowReversalBui) - "Chilled water HX" - annotation (Placement(transformation(extent={{10,-324},{-10,-344}}))); - Buildings.Fluid.Delays.DelayFirstOrder volHeaWatRet( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal, - tau=60, - final energyDynamics=mixingVolumeEnergyDynamics, - T_start=THeaWatSup_nominal, - nPorts=3) "Mixing volume representing building HHW primary" annotation ( - Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=90, - origin={90,180}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFloHeaWat( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui) - "Heating water mass flow rate" - annotation (Placement(transformation(extent={{-250,250},{-230,270}}))); - Buildings.Fluid.Delays.DelayFirstOrder volChiWat( - redeclare final package Medium = MediumBui, - final m_flow_nominal=m1HexChi_flow_nominal, - tau=60, - final energyDynamics=mixingVolumeEnergyDynamics, - T_start=TChiWatSup_nominal, - nPorts=3) "Mixing volume representing building CHW primary" - annotation (Placement(transformation(extent={{-110,-280},{-90,-260}}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFloChiWat( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui) - "Chilled water mass flow rate" - annotation (Placement(transformation(extent={{-250,-130},{-230,-110}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k= - m1HexChi_flow_nominal) - annotation (Placement(transformation(extent={{-108,-210},{-88,-190}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PIDWithEnable conTChiWat( - k=0.05, - Ti=120, - yMax=1, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, - reverseActing=false, - yMin=0) "PI controller for district HX primary side" - annotation (Placement(transformation(extent={{-150,-210},{-130,-190}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PPumHeaTot(final nin=2) - "Total pump power for heating applications" - annotation (Placement(transformation(extent={{190,410},{210,430}}))); - Buildings.Fluid.Sources.Boundary_pT bouHeaWat( - redeclare final package Medium = MediumBui, - nPorts=1) - "Pressure boundary condition representing the expansion vessel" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={60,150}))); - Buildings.Fluid.Sources.Boundary_pT bouChiWat( - redeclare final package Medium = MediumBui, - nPorts=1) - "Pressure boundary condition representing the expansion vessel" - annotation (Placement(transformation(extent={{-162,-290},{-142,-270}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PPumCooTot(nin=1) - "Total pump power for space cooling" - annotation (Placement(transformation(extent={{190,370},{210,390}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PPumTot(nin=2) - "Total pump power" - annotation (Placement(transformation(extent={{220,390},{240,410}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup( - redeclare final package Medium=MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mHeaWat_flow_nominal) - "Heating water supply temperature" - annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={140,260}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTChiWatSup( - redeclare final package Medium=MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mChiWat_flow_nominal) - "Chilled water supply temperature" - annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={140,-280}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox - swiFlo( - redeclare final package Medium = MediumSer, - final m_flow_nominal=mSerWat_flow_nominal) "Flow switch box" - annotation (Placement(transformation(extent={{-10,-390},{10,-370}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatSup(redeclare - final package Medium = - MediumBui, final m_flow_nominal=proHeaWat.m1_flow_nominal - *{1,-1,-1}) "Bypass heating water (supply)" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={100,260}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatRet( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal*{1,-1,1}) - "Bypass heating water (return)" - annotation (Placement( - transformation( - extent={{10,10},{-10,-10}}, - rotation=0, - origin={100,240}))); - Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaHea( - trueHoldDuration=15*60) "Enable heating" - annotation (Placement(transformation(extent={{-140,150},{-120,170}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump proHeaWat( - redeclare final package Medium1 = MediumBui, - redeclare final package Medium2 = MediumSer, - final have_varFloCon=have_varFloCon, - final have_varFloEva=have_varFloEva, - final COP_nominal=COPHeaWat_nominal, - final TCon_nominal=THeaWatSup_nominal, - final TEva_nominal=TDisWatMin-dT_nominal, - final Q1_flow_nominal=QHeaWat_flow_nominal, - final allowFlowReversal1=allowFlowReversalBui, - final allowFlowReversal2=allowFlowReversalSer, - final dT1_nominal=dT_nominal, - final dT2_nominal=-dT_nominal, - final dp1_nominal=dp_nominal, - final dp2_nominal=dp_nominal) "Subsystem for heating water production" - annotation (Placement(transformation(extent={{-10,204},{10,224}}))); - Subsystems.HeatPumpDHWTank proHotWat( - redeclare final package Medium1 = MediumBui, - redeclare final package Medium2 = MediumSer, - final have_varFloEva=have_varFloEva, - final COP_nominal=COPHotWat_nominal, - final allowFlowReversal1=allowFlowReversalBui, - final allowFlowReversal2=allowFlowReversalSer, - mHw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - - TColWat_nominal), - datWatHea=datWatHea) - "Subsystem for hot water production" - annotation (Placement(transformation(extent={{-10,24},{10,44}}))); - Fluid.Sources.Boundary_pT souDCW( - redeclare final package Medium = MediumBui, - use_T_in=true, - nPorts=1) if have_hotWat "Source for domestic cold water" - annotation (Placement( - transformation( - extent={{10,-10},{-10,10}}, - rotation=180, - origin={-40,-10}))); - Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat - "Compute mass flow rate from load" - annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= - cpBui_default) if have_hotWat "Times Cp" - annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum masFloHeaTot(final nin=2) - "Compute district water mass flow rate used for heating service" - annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); - Modelica.Blocks.Sources.Constant zer(final k=0) if not have_hotWat - "Replacement variable" - annotation (Placement(transformation(extent={{140,350},{160,370}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatRet( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mHeaWat_flow_nominal) - "Heating water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={20,300}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatRet( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mChiWat_flow_nominal) - "Chilled water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={40,-120}))); - Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat - "Compute DeltaT needed on condenser side" - annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = - MediumBui, final allowFlowReversal=allowFlowReversalBui) - "Primary heating water mass flow rate" - annotation (Placement(transformation(extent={{30,270},{50,250}}))); - Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW(trueHoldDuration=15* - 60) if have_hotWat "Enable SHW production" - annotation (Placement(transformation(extent={{-140,70},{-120,90}}))); - Modelica.Blocks.Sources.Constant zer1(k=0) if not have_hotWat - "Replacement variable" - annotation (Placement(transformation(extent={{-40,-250},{-20,-230}}))); - Buildings.Controls.OBC.CDL.Reals.Add masFloHea - "Service water mass flow rate for heating applications" - annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={0,-264}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(final nin=2) - "Total power used for heating and hot water production" - annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaSHW if have_hotWat and have_varFloEva - "Heat flow rate at evaporator" - annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW - "Heating hot water DeltaT" - annotation (Placement(transformation(extent={{0,310},{-20,330}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter capFloHHW( - final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" - annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); - Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva - "Heat flow rate at evaporator" - annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloConHHW( - final Q_flow_nominal=QHeaWat_flow_nominal, - final dT_nominal=dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpBui_default) if have_varFloCon - "Mass flow rate control" - annotation (Placement(transformation(extent={{-100,270},{-80,290}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaHHW( - final Q_flow_nominal=-QHeaWat_flow_nominal*(1 + 1/COPHeaWat_nominal), - final dT_nominal=-dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpSer_default) if have_varFloEva - "Mass flow rate control" - annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); - Buildings.Controls.OBC.CDL.Reals.Max priOve if have_varFloCon - "Ensure primary overflow" - annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply loaHHW - if have_varFloEva or have_varFloCon "Heating load" - annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - - Fluid.Sources.MassFlowSource_T sinDHW( - redeclare final package Medium = MediumBui, - use_m_flow_in=true, - nPorts=1) if have_hotWat "Sink for domestic hot water" - annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) - if have_hotWat "Convert to sink" - annotation (Placement(transformation(extent={{-98,50},{-78,70}}))); - parameter Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea - "Performance data" - annotation (Placement(transformation(extent={{-6,6},{6,18}}))); - Controls.PrimaryVariableFlow conFloEvaSHW( - final Q_flow_nominal=-QHotWat_flow_nominal*(1 - 1/COPHotWat_nominal), - final dT_nominal=-dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpSer_default) if have_hotWat and have_varFloEva - "Mass flow rate control" - annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub(final k=-1) - if have_hotWat "Convert to subtraction" - annotation (Placement(transformation(extent={{-80,70},{-100,90}}))); -equation - connect(TChiWatSupSet, conTChiWat.u_s) annotation (Line(points={{-320,0},{-200, - 0},{-200,-200},{-152,-200}}, color={0,0,127})); - connect(pum1HexChi.P, PPumCooTot.u[1]) annotation (Line(points={{89,-331},{84, - -331},{84,-322},{180,-322},{180,380},{188,380}}, color={0,0,127})); - connect(PPumHeaTot.y, PPumTot.u[1]) annotation (Line(points={{212,420},{216, - 420},{216,399.5},{218,399.5}}, - color={0,0,127})); - connect(PPumCooTot.y, PPumTot.u[2]) annotation (Line(points={{212,380},{216, - 380},{216,400.5},{218,400.5}}, - color={0,0,127})); - connect(pum1HexChi.port_b, hexChi.port_a1) annotation (Line(points={{90,-340}, - {10,-340}}, color={0,127,255})); - connect(pum1HexChi.m_flow_actual, mCoo_flow) annotation (Line(points={{89,-335}, - {82,-335},{82,-320},{276,-320},{276,-180},{320,-180}}, color={0,0,127})); - connect(volMix_a.ports[1], swiFlo.port_bSup) annotation (Line(points={{-260,-360}, - {-6,-360},{-6,-370}}, color={0,127,255})); - connect(swiFlo.port_aRet, volMix_b.ports[1]) annotation (Line(points={{6,-370}, - {6,-360},{260,-360}}, color={0,127,255})); - connect(volMix_b.ports[2], pum1HexChi.port_a) annotation (Line(points={{260,-360}, - {258,-360},{258,-340},{110,-340}}, color={0,127,255})); - connect(hexChi.port_b1, volMix_a.ports[2]) annotation (Line(points={{-10,-340}, - {-256,-340},{-256,-360},{-260,-360}}, color={0,127,255})); - connect(pum1HexChi.m_flow_actual, swiFlo.mRev_flow) annotation (Line(points={ - {89,-335},{80,-335},{80,-356},{-20,-356},{-20,-384},{-12,-384}}, - color={0,0,127})); - connect(gai2.y, pum1HexChi.m_flow_in) - annotation (Line(points={{-86,-200},{100,-200},{100,-328}}, - color={0,0,127})); - connect(PPumTot.y, PPum) annotation (Line(points={{242,400},{244,400},{244,-40}, - {320,-40}}, color={0,0,127})); - connect(ports_aHeaWat[1], senMasFloHeaWat.port_a) annotation (Line(points={{-300, - 260},{-250,260}}, color={0,127,255})); - connect(bypHeaWatSup.port_2, senTHeaWatSup.port_a) - annotation (Line(points={{110,260},{130,260}}, color={0,127,255})); - connect(senTHeaWatSup.port_b, ports_bHeaWat[1]) - annotation (Line(points={{150,260},{300,260}}, color={0,127,255})); - connect(bypHeaWatRet.port_2, volHeaWatRet.ports[1]) annotation (Line(points={{90,240}, - {80,240},{80,178.667}}, color={0,127,255})); - connect(bouHeaWat.ports[1], volHeaWatRet.ports[2]) annotation (Line(points={{60,160}, - {60,180},{80,180}}, color={0,127,255})); - connect(ports_aChiWat[1], senMasFloChiWat.port_a) annotation (Line(points={{-300, - 200},{-280,200},{-280,-120},{-250,-120}}, color={0,127,255})); - connect(senTChiWatSup.port_b, ports_bChiWat[1]) annotation (Line(points={{150, - -280},{200,-280},{200,200},{300,200}}, color={0,127,255})); - connect(bypHeaWatRet.port_3, bypHeaWatSup.port_3) - annotation (Line(points={{100,250},{100,250}}, color={0,127,255})); - connect(volHeaWatRet.ports[3], proHeaWat.port_a1) annotation (Line(points={{80, - 181.333},{80,180},{-20,180},{-20,208},{-10,208}}, color={0,127,255})); - connect(proHeaWat.port_b2, volMix_b.ports[3]) annotation (Line(points={{10, - 220},{262,220},{262,-360},{260,-360}}, color={0,127,255})); - connect(volMix_a.ports[3], proHeaWat.port_a2) annotation (Line(points={{-260, - -360},{-260,200},{14,200},{14,208},{10,208}}, color={0,127,255})); - connect(enaHea.y, proHeaWat.uEna) annotation (Line(points={{-118,160},{-48,160}, - {-48,223},{-12,223}}, color={255,0,255})); - connect(THeaWatSupSet, proHeaWat.TSupSet) annotation (Line(points={{-320,40},{ - -200,40},{-200,217},{-12,217}}, - color={0,0,127})); - connect(proHeaWat.PPum, PPumHeaTot.u[1]) annotation (Line(points={{12,214},{ - 172,214},{172,419.5},{188,419.5}}, - color={0,0,127})); - connect(volMix_a.ports[4], proHotWat.port_a2) annotation (Line(points={{-260, - -360},{-258,-360},{-258,20},{14,20},{14,28},{10,28}}, color={0,127, - 255})); - connect(proHotWat.port_b2, volMix_b.ports[4]) - annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); - connect(THotWatSupSet, proHotWat.TSupSet) annotation (Line(points={{-320,-40}, - {-160,-40},{-160,37},{-12,37}}, color={0,0,127})); - connect(gai.y, div1.u2) annotation (Line(points={{-98,0},{-80,0},{-80,-20},{-120, - -20},{-120,-46},{-102,-46}}, color={0,0,127})); - connect(loaSHW, div1.u1) annotation (Line(points={{-320,-120},{-290,-120},{-290, - -34},{-102,-34}}, color={0,0,127})); - connect(masFloHeaTot.y, mHea_flow) - annotation (Line(points={{292,-140},{320,-140}}, color={0,0,127})); - connect(proHotWat.mEva_flow, masFloHeaTot.u[2]) annotation (Line(points={{12,31}, - {218,31},{218,-139.5},{268,-139.5}}, - color={0,0,127})); - connect(zer.y, masFloHeaTot.u[2]) annotation (Line(points={{161,360},{216,360}, - {216,-144},{268,-144},{268,-139.5}}, - color={0,0,127})); - connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{ - 176,34},{176,420},{188,420},{188,420.5}}, - color={0,0,127})); - connect(proHeaWat.mEva_flow, masFloHeaTot.u[1]) annotation (Line(points={{12,211}, - {220,211},{220,-140.5},{268,-140.5}}, - color={0,0,127})); - connect(zer.y, PPumHeaTot.u[2]) annotation (Line(points={{161,360},{174,360}, - {174,418},{188,418},{188,420.5}}, - color={0,0,127})); - connect(senMasFloHeaWat.port_b, senTHeaWatRet.port_a) annotation (Line(points={{-230, - 260},{-220,260},{-220,300},{10,300}}, color={0,127,255})); - connect(senTHeaWatRet.port_b, bypHeaWatRet.port_1) annotation (Line(points={{30,300}, - {120,300},{120,240},{110,240}}, color={0,127,255})); - connect(senMasFloChiWat.port_b, senTChiWatRet.port_a) - annotation (Line(points={{-230,-120},{30,-120}}, color={0,127,255})); - connect(delT.y, gai.u) - annotation (Line(points={{-128,0},{-122,0}}, color={0,0,127})); - connect(TColWat, delT.u2) annotation (Line(points={{-320,-80},{-156,-80},{-156, - -6},{-152,-6}}, color={0,0,127})); - connect(THotWatSupSet, delT.u1) annotation (Line(points={{-320,-40},{-160,-40}, - {-160,6},{-152,6}}, - color={0,0,127})); - connect(proHeaWat.port_b1, senMasFloHeaWatPri.port_a) annotation (Line(points= - {{-10,220},{-20,220},{-20,260},{30,260}}, color={0,127,255})); - connect(senMasFloHeaWatPri.port_b, bypHeaWatSup.port_1) - annotation (Line(points={{50,260},{90,260}}, color={0,127,255})); - connect(port_aSerAmb, swiFlo.port_aSup) annotation (Line(points={{-300,-200},{ - -272,-200},{-272,-344},{-280,-344},{-280,-400},{-6,-400},{-6,-390}}, - color={0,127,255})); - connect(swiFlo.port_bRet, port_bSerAmb) annotation (Line(points={{6,-390},{6, - -400},{280,-400},{280,-200},{300,-200}}, - color={0,127,255})); - connect(uHea, enaHea.u) annotation (Line(points={{-320,160},{-142,160}}, - color={255,0,255})); - connect(conTChiWat.y, gai2.u) - annotation (Line(points={{-128,-200},{-110,-200}}, color={0,0,127})); - connect(uCoo, conTChiWat.uEna) annotation (Line(points={{-320,120},{-180,120}, - {-180,-220},{-144,-220},{-144,-212}}, color={255,0,255})); - connect(uSHW, enaSHW.u) - annotation (Line(points={{-320,80},{-142,80}}, color={255,0,255})); - connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, - {-114,43},{-12,43}},color={255,0,255})); - connect(senTChiWatRet.port_b, volChiWat.ports[1]) annotation (Line(points={{50,-120}, - {60,-120},{60,-280},{-101.333,-280}}, color={0,127,255})); - connect(volChiWat.ports[2], hexChi.port_a2) annotation (Line(points={{-100, - -280},{-120,-280},{-120,-320},{-20,-320},{-20,-328},{-10,-328}}, - color={0,127,255})); - connect(hexChi.port_b2, senTChiWatSup.port_a) annotation (Line(points={{10, - -328},{20,-328},{20,-320},{80,-320},{80,-280},{130,-280}}, color={0, - 127,255})); - connect(bouChiWat.ports[1], volChiWat.ports[3]) - annotation (Line(points={{-142,-280},{-98.6667,-280}}, color={0,127,255})); - connect(senTChiWatSup.T, conTChiWat.u_m) annotation (Line(points={{140,-269}, - {140,-220},{-140,-220},{-140,-212}}, color={0,0,127})); - connect(zer1.y, masFloHea.u2) annotation (Line(points={{-19,-240},{-8,-240},{ - -8,-252},{-6,-252}}, color={0,0,127})); - connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{12,31},{18, - 31},{18,-240},{-6,-240},{-6,-252}}, color={0,0,127})); - connect(proHeaWat.mEva_flow, masFloHea.u1) annotation (Line(points={{12,211},{ - 20,211},{20,-246},{6,-246},{6,-252}}, color={0,0,127})); - connect(masFloHea.y, swiFlo.mPos_flow) annotation (Line(points={{0,-276},{0, - -320},{-16,-320},{-16,-376},{-12,-376}}, color={0,0,127})); - connect(proHeaWat.PHea, PHeaTot.u[1]) annotation (Line(points={{12,217},{240, - 217},{240,79.5},{268,79.5}}, color={0,0,127})); - connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{240, - 37},{240,80.5},{268,80.5}}, - color={0,0,127})); - connect(zer.y, PHeaTot.u[2]) annotation (Line(points={{161,360},{242,360},{ - 242,78},{268,78},{268,80.5}},color={0,0,127})); - connect(PHeaTot.y, PHea) - annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); - connect(loaSHW, heaFloEvaSHW.u1) annotation (Line(points={{-320,-120},{-288, - -120},{-288,-36},{-164,-36},{-164,106},{-102,106}}, - color={0,0,127})); - connect(senTHeaWatRet.T, dTHHW.u2) - annotation (Line(points={{20,311},{20,314},{2,314}}, color={0,0,127})); - connect(senTHeaWatSup.T, dTHHW.u1) - annotation (Line(points={{140,271},{140,326},{2,326}}, color={0,0,127})); - connect(senMasFloHeaWat.m_flow, capFloHHW.u) annotation (Line(points={{-240,271}, - {-240,320},{-222,320}}, color={0,0,127})); - connect(proHeaWat.PHea, heaFloEvaHHW.u2) annotation (Line(points={{12,217},{ - 20,217},{20,226},{-110,226},{-110,234},{-102,234}}, - color={0,0,127})); - connect(conFloEvaHHW.m_flow, proHeaWat.m2_flow) annotation (Line(points={{-38,240}, - {-28,240},{-28,211},{-12,211}}, color={0,0,127})); - connect(senMasFloHeaWat.m_flow, priOve.u1) annotation (Line(points={{-240,271}, - {-240,296},{-70,296},{-70,286},{-62,286}}, color={0,0,127})); - connect(conFloConHHW.m_flow, priOve.u2) annotation (Line(points={{-78,280},{-70, - 280},{-70,274},{-62,274}}, color={0,0,127})); - connect(priOve.y, proHeaWat.m1_flow) annotation (Line(points={{-38,280},{-24,280}, - {-24,214},{-12,214}}, color={0,0,127})); - connect(heaFloEvaHHW.y, conFloEvaHHW.loa) - annotation (Line(points={{-78,240},{-62,240}}, color={0,0,127})); - connect(capFloHHW.y, loaHHW.u2) annotation (Line(points={{-198,320},{-180,320}, - {-180,274},{-142,274}}, color={0,0,127})); - connect(dTHHW.y, loaHHW.u1) annotation (Line(points={{-22,320},{-160,320},{ - -160,286},{-142,286}}, color={0,0,127})); - connect(loaHHW.y, conFloConHHW.loa) - annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); - connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, - 280},{-110,246},{-102,246}}, color={0,0,127})); - connect(toSin.y, sinDHW.m_flow_in) annotation (Line(points={{-76,60},{-72,60}, - {-72,68},{-62,68}}, color={0,0,127})); - connect(div1.y, toSin.u) annotation (Line(points={{-78,-40},{-70,-40},{-70,32}, - {-108,32},{-108,60},{-100,60}}, color={0,0,127})); - connect(souDCW.T_in, delT.u2) annotation (Line(points={{-52,-14},{-60,-14},{ - -60,-80},{-156,-80},{-156,-6},{-152,-6}}, color={0,0,127})); - connect(souDCW.ports[1], proHotWat.port_a1) annotation (Line(points={{-30,-10}, - {-20,-10},{-20,28},{-10,28}}, color={0,127,255})); - connect(sinDHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-40,60}, - {-20,60},{-20,40},{-10,40}}, color={0,127,255})); - connect(heaFloEvaSHW.y, conFloEvaSHW.loa) - annotation (Line(points={{-78,100},{-62,100}}, color={0,0,127})); - connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38, - 100},{-16,100},{-16,31},{-12,31}}, color={0,0,127})); - connect(toSub.y, heaFloEvaSHW.u2) annotation (Line(points={{-102,80},{-106,80}, - {-106,94},{-102,94}}, color={0,0,127})); - connect(proHotWat.PHea, toSub.u) annotation (Line(points={{12,37},{18,37},{18, - 80},{-78,80}}, color={0,0,127})); - annotation ( - defaultComponentName="ets", - Documentation(info=" -

-This model represents an energy transfer station as described in Sommer (2020). -

-
    -
  • -The cooling function is provided in a compressor-less mode by a heat exchanger -connected to the service line. -The chilled water is typically produced at high temperature and distributed -to radiant cooling systems, for instance at 19°C. -
  • -
  • -The heating functions are provided by water-to-water heat pumps. -
      -
    • -By default the condenser and evaporator loops are operated -with variable mass flow rate, with a lower limit specified by the ratio -ratFloMin. -The model can also represent constant flow condenser and evaporator loops -by setting have_varFloCon and have_varFloEva -to false. -
    • -
    • -The evaporator water is supplied by mixing the flow rate from the direct connection -to the service line to the flow rate from the primary side of the cooling -heat exchanger. -The hydronic arrangement modeled in - -Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox -ensures that the resulting fluid stream in the service line always flows -in the same direction. -
    • -
    • -The heating hot water is typically produced at low temperature, -for instance 40°C. -
    • -
    -
  • -
-

Controls

-

-Heating (resp. cooling) is enabled based on the input signal uHea -(resp. uCoo) which is held for 15 minutes, meaning that, -when enabled, the mode remains active for at least 15 minutes and, -when disabled, the mode cannot be enabled again for at least 15 minutes. -The heating and cooling enable signals should be computed externally based -on a schedule (to lock out the system during off-hours), ideally in conjunction -with the number of requests yielded by the terminal unit controllers, or any -other signal representative of the load. -

-

-When enabled, -

- -

Modeling considerations

-

-There is a control volume at each of the two fluid ports that serve as inlet and outlet -of the heating and cooling systems. These approximate the dynamics -of the substation, and they also generally avoid nonlinear systems -of equations if multiple substations are connected to each other. -

-

References

-

-Sommer T., Sulzer M., Wetter M., Sotnikov A., Mennel S., Stettler C. -The reservoir network: A new network topology for district heating -and cooling. -Energy, Volume 199, 15 May 2020, 117418. -

-", - revisions=" -
    -
  • -February 23, 2021, by Antoine Gautier:
    -Refactored with subsystem models and partial ETS base class.
    -This is for - -issue 1769. -
  • -
  • -December 12, 2017, by Michael Wetter:
    -Removed call to Modelica.Utilities.Files.loadResource.
    -This is for -issue 1097. -
  • -
-"), - Diagram(coordinateSystem(extent={{-300,-420},{300,440}})), - Icon(coordinateSystem(preserveAspectRatio=false, extent={{-300,-300},{300,300}}))); -end HeatPumpHeatExchangerDHWTank_Current; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo deleted file mode 100644 index 28c8a44ed88..00000000000 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger_Current.mo +++ /dev/null @@ -1,777 +0,0 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined; -model HeatPumpHeatExchanger_Current - "Model of a substation with heat pump and compressor-less cooling" - extends - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.PartialETS( - final typ=Buildings.Experimental.DHC.Types.DistrictSystemType.CombinedGeneration5, - final have_weaBus=false, - final have_chiWat=true, - final have_heaWat=true, - have_hotWat=false, - final have_eleHea=true, - final nFue=0, - final have_eleCoo=false, - final have_pum=true, - final have_fan=false, - nPorts_aHeaWat=1, - nPorts_aChiWat=1); - // SYSTEM GENERAL - parameter Boolean have_varFloCon = true - "Set to true for heat pumps with variable condenser flow" - annotation(Evaluate=true); - parameter Boolean have_varFloEva = true - "Set to true for heat pumps with variable evaporator flow" - annotation(Evaluate=true); - parameter Real ratFloMin( - final unit="1", - final min=0, - final max=1)=0.3 - "Minimum condenser or evaporator mass flow rate (ratio to nominal)" - annotation (Dialog(enable=have_varFloCon or have_varFloEva)); - parameter Modelica.Units.SI.Temperature TDisWatMin - "District water minimum temperature" annotation (Dialog(group="DHC system")); - parameter Modelica.Units.SI.Temperature TDisWatMax - "District water maximum temperature" annotation (Dialog(group="DHC system")); - parameter Modelica.Units.SI.TemperatureDifference dT_nominal(min=0) = 5 - "Water temperature drop/increase accross load and source-side HX (always positive)" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature TChiWatSup_nominal=291.15 - "Chilled water supply temperature" - annotation (Dialog(group="Nominal conditions")); - final parameter Modelica.Units.SI.Temperature TChiWatRet_nominal= - TChiWatSup_nominal + dT_nominal "Chilled water return temperature" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature THeaWatSup_nominal=313.15 - "Heating water supply temperature" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.Temperature THeaWatRet_nominal= - THeaWatSup_nominal - dT_nominal "Heating water return temperature" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature THotWatSup_nominal=336.15 - "Hot water supply temperature" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 - "Cold water temperature (for hot water production)" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - parameter Modelica.Units.SI.Pressure dp_nominal(displayUnit="Pa") = 50000 - "Pressure difference at nominal flow rate (for each flow leg)" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate mHeaWat_flow_nominal(min=0)= - abs(QHeaWat_flow_nominal/cpBui_default/(THeaWatSup_nominal - THeaWatRet_nominal)) - "Heating water mass flow rate" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate mChiWat_flow_nominal(min=0)= - abs(QChiWat_flow_nominal/cpBui_default/(TChiWatSup_nominal - TChiWatRet_nominal)) - "Chilled water mass flow rate" - annotation (Dialog(group="Nominal conditions")); - final parameter Modelica.Units.SI.MassFlowRate mEvaHotWat_flow_nominal(min=0)= - QHotWat_flow_nominal*(COPHotWat_nominal - 1)/COPHotWat_nominal/cpSer_default/dT_nominal - "Evaporator water mass flow rate of heat pump for hot water production" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - final parameter Modelica.Units.SI.MassFlowRate mSerWat_flow_nominal(min=0)= - max(proHeaWat.m2_flow_nominal + mEvaHotWat_flow_nominal, hexChi.m1_flow_nominal) - "Service water mass flow rate" - annotation (Dialog(group="Nominal condition")); - constant Modelica.Units.SI.SpecificHeatCapacity cpBui_default= - MediumBui.specificHeatCapacityCp(MediumBui.setState_pTX( - p=MediumBui.p_default, - T=MediumBui.T_default)) "Specific heat capacity of the fluid"; - constant Modelica.Units.SI.SpecificHeatCapacity cpSer_default= - MediumBui.specificHeatCapacityCp(MediumSer.setState_pTX( - p=MediumSer.p_default, - T=MediumSer.T_default)) "Specific heat capacity of the fluid"; - // Heat pump for heating water production - parameter Real COPHeaWat_nominal(final unit="1") - "COP of heat pump for heating water production" - annotation (Dialog(group="Nominal condition")); - // Heat pump for hot water production - parameter Real COPHotWat_nominal(final unit="1") - "COP of heat pump for hot water production" - annotation (Dialog(group="Nominal condition", enable=have_hotWat)); - // District HX - final parameter Modelica.Units.SI.MassFlowRate m1HexChi_flow_nominal(min=0)= - abs(QChiWat_flow_nominal/cpSer_default/dT_nominal) - "CHW HX primary mass flow rate" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate m2HexChi_flow_nominal(min=0)= - abs(QChiWat_flow_nominal/cpSer_default/(THeaWatSup_nominal - - THeaWatRet_nominal)) "CHW HX secondary mass flow rate" - annotation (Dialog(group="Nominal condition")); - // Dynamics - parameter Modelica.Fluid.Types.Dynamics mixingVolumeEnergyDynamics= - Modelica.Fluid.Types.Dynamics.FixedInitial - "Formulation of energy balance for mixing volume at inlet and outlet" - annotation(Dialog(tab="Dynamics")); - // IO CONNECTORS - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uCoo - "Cooling enable signal" - annotation (Placement(transformation(extent={{-340, - 100},{-300,140}}), iconTransformation(extent={{-380,20},{-300,100}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uHea - "Heating enable signal" - annotation (Placement(transformation(extent={{-340, - 140},{-300,180}}), iconTransformation(extent={{-380,60},{-300,140}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uSHW if have_hotWat - "SHW production enable signal" - annotation (Placement(transformation(extent= - {{-340,60},{-300,100}}), iconTransformation(extent={{-380,-20},{-300, - 60}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput THeaWatSupSet( - final unit="K", - displayUnit="degC") - "Heating water supply temperature set point" - annotation (Placement( - transformation( - extent={{-340,20},{-300,60}}), - iconTransformation( - extent={{-380,-60},{-300,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( - final unit="K", - displayUnit="degC") if have_hotWat - "Service hot water supply temperature set point" - annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,-40}), - iconTransformation( - extent={{-380,-140},{-300,-60}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TColWat( - final unit="K", - displayUnit="degC") if have_hotWat - "Cold water temperature" annotation ( - Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,-80}), iconTransformation( - extent={{-40,-40},{40,40}}, - rotation=0, - origin={-340,-140}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput loaSHW( - final unit="W") if have_hotWat "Service hot water load" - annotation ( - Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=0, - origin={-320,-120}),iconTransformation( - extent={{-40,-40},{40,40}}, - rotation=0, - origin={-340,-180}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TChiWatSupSet(final unit="K", - displayUnit="degC") - "Chilled water supply temperature set point" annotation (Placement( - transformation( - extent={{-340,-20},{-300,20}}), - iconTransformation( - extent={{-380,-100},{-300,-20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mHea_flow(final unit="kg/s") - "District water mass flow rate used for heating service" - annotation ( Placement(transformation(extent={{300,-160},{340,-120}}), - iconTransformation(extent={{300,-160},{380,-80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mCoo_flow(final unit="kg/s") - "District water mass flow rate used for cooling service" - annotation ( Placement(transformation(extent={{300,-200},{340,-160}}), - iconTransformation(extent={{300,-200},{380,-120}}))); - // COMPONENTS - Buildings.Fluid.Delays.DelayFirstOrder volMix_a( - redeclare final package Medium = MediumSer, - final nPorts=if have_hotWat then 4 else 3, - final m_flow_nominal=mSerWat_flow_nominal, - tau=600, - final energyDynamics=mixingVolumeEnergyDynamics) - "Mixing volume to break algebraic loops and to emulate the delay of the substation" - annotation (Placement(transformation(extent={{-270,-360},{-250,-380}}))); - Buildings.Fluid.Delays.DelayFirstOrder volMix_b( - redeclare final package Medium = MediumSer, - final nPorts=if have_hotWat then 4 else 3, - final m_flow_nominal=mSerWat_flow_nominal, - tau=600, - final energyDynamics=mixingVolumeEnergyDynamics) - "Mixing volume to break algebraic loops and to emulate the delay of the substation" - annotation (Placement(transformation(extent={{250,-360},{270,-380}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pum1HexChi( - redeclare final package Medium = MediumSer, - final m_flow_nominal=m1HexChi_flow_nominal, - final allowFlowReversal=allowFlowReversalSer, - dp_nominal=dp_nominal) - "Chilled water HX primary pump" - annotation (Placement(transformation(extent={{110,-350},{90,-330}}))); - Buildings.Fluid.HeatExchangers.DryCoilEffectivenessNTU hexChi( - redeclare final package Medium1 = MediumSer, - redeclare final package Medium2 = MediumBui, - final m1_flow_nominal=m1HexChi_flow_nominal, - final m2_flow_nominal=m2HexChi_flow_nominal, - final dp1_nominal=dp_nominal/2, - final dp2_nominal=dp_nominal/2, - configuration=Buildings.Fluid.Types.HeatExchangerConfiguration.CounterFlow, - final Q_flow_nominal=QChiWat_flow_nominal, - final T_a1_nominal=TDisWatMax, - final T_a2_nominal=TChiWatRet_nominal, - final allowFlowReversal1=allowFlowReversalSer, - final allowFlowReversal2=allowFlowReversalBui) - "Chilled water HX" - annotation (Placement(transformation(extent={{10,-324},{-10,-344}}))); - Buildings.Fluid.Delays.DelayFirstOrder volHeaWatRet( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal, - tau=60, - final energyDynamics=mixingVolumeEnergyDynamics, - T_start=THeaWatSup_nominal, - nPorts=3) "Mixing volume representing building HHW primary" annotation ( - Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=90, - origin={90,180}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFloHeaWat( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui) - "Heating water mass flow rate" - annotation (Placement(transformation(extent={{-250,250},{-230,270}}))); - Buildings.Fluid.Delays.DelayFirstOrder volChiWat( - redeclare final package Medium = MediumBui, - final m_flow_nominal=m1HexChi_flow_nominal, - tau=60, - final energyDynamics=mixingVolumeEnergyDynamics, - T_start=TChiWatSup_nominal, - nPorts=3) "Mixing volume representing building CHW primary" - annotation (Placement(transformation(extent={{-110,-280},{-90,-260}}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFloChiWat( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui) - "Chilled water mass flow rate" - annotation (Placement(transformation(extent={{-250,-130},{-230,-110}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k= - m1HexChi_flow_nominal) - annotation (Placement(transformation(extent={{-108,-210},{-88,-190}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PIDWithEnable conTChiWat( - k=0.05, - Ti=120, - yMax=1, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, - reverseActing=false, - yMin=0) "PI controller for district HX primary side" - annotation (Placement(transformation(extent={{-150,-210},{-130,-190}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PPumHeaTot(final nin=2) - "Total pump power for heating applications" - annotation (Placement(transformation(extent={{190,410},{210,430}}))); - Buildings.Fluid.Sources.Boundary_pT bouHeaWat( - redeclare final package Medium = MediumBui, - nPorts=1) - "Pressure boundary condition representing the expansion vessel" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={60,150}))); - Buildings.Fluid.Sources.Boundary_pT bouChiWat( - redeclare final package Medium = MediumBui, - nPorts=1) - "Pressure boundary condition representing the expansion vessel" - annotation (Placement(transformation(extent={{-162,-290},{-142,-270}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PPumCooTot(nin=1) - "Total pump power for space cooling" - annotation (Placement(transformation(extent={{190,370},{210,390}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PPumTot(nin=2) - "Total pump power" - annotation (Placement(transformation(extent={{220,390},{240,410}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTHeaWatSup( - redeclare final package Medium=MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mHeaWat_flow_nominal) - "Heating water supply temperature" - annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={140,260}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTChiWatSup( - redeclare final package Medium=MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mChiWat_flow_nominal) - "Chilled water supply temperature" - annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={140,-280}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox - swiFlo( - redeclare final package Medium = MediumSer, - final m_flow_nominal=mSerWat_flow_nominal) "Flow switch box" - annotation (Placement(transformation(extent={{-10,-390},{10,-370}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatSup( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal - *{1,-1,-1}) "Bypass heating water (supply)" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={100,260}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatRet( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal*{1,-1,1}) - "Bypass heating water (return)" - annotation (Placement( - transformation( - extent={{10,10},{-10,-10}}, - rotation=0, - origin={100,240}))); - Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaHea( - trueHoldDuration=15*60) "Enable heating" - annotation (Placement(transformation(extent={{-140,150},{-120,170}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump proHeaWat( - redeclare final package Medium1 = MediumBui, - redeclare final package Medium2 = MediumSer, - final have_varFloCon=have_varFloCon, - final have_varFloEva=have_varFloEva, - final COP_nominal=COPHeaWat_nominal, - final TCon_nominal=THeaWatSup_nominal, - final TEva_nominal=TDisWatMin-dT_nominal, - final Q1_flow_nominal=QHeaWat_flow_nominal, - final allowFlowReversal1=allowFlowReversalBui, - final allowFlowReversal2=allowFlowReversalSer, - final dT1_nominal=dT_nominal, - final dT2_nominal=-dT_nominal, - final dp1_nominal=dp_nominal, - final dp2_nominal=dp_nominal) "Subsystem for heating water production" - annotation (Placement(transformation(extent={{-10,204},{10,224}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump proHotWat( - redeclare final package Medium1 = MediumBui, - redeclare final package Medium2 = MediumSer, - final have_pumCon=false, - final have_varFloEva=have_varFloEva, - final COP_nominal=COPHotWat_nominal, - final TCon_nominal=THotWatSup_nominal, - final TEva_nominal=TDisWatMin-dT_nominal, - final Q1_flow_nominal=QHotWat_flow_nominal, - final allowFlowReversal1=allowFlowReversalBui, - final allowFlowReversal2=allowFlowReversalSer, - final dT1_nominal=THotWatSup_nominal - TColWat_nominal, - final dT2_nominal=-dT_nominal, - final dp1_nominal=dp_nominal, - final dp2_nominal=dp_nominal) if have_hotWat - "Subsystem for hot water production" - annotation (Placement(transformation(extent={{-10,24},{10,44}}))); - Fluid.Sources.Boundary_pT sinSHW( - redeclare final package Medium = MediumBui, - nPorts=1) if have_hotWat - "Sink for service hot water" annotation (Placement( - transformation( - extent={{10,-10},{-10,10}}, - rotation=180, - origin={-60,60}))); - Fluid.Sources.MassFlowSource_T souColWat( - redeclare final package Medium = MediumBui, - use_m_flow_in=true, - use_T_in=true, - nPorts=1) if have_hotWat - "Source for cold water" - annotation (Placement(transformation(extent={{-48,-50},{-28,-30}}))); - Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat - "Compute mass flow rate from load" - annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= - cpBui_default) if have_hotWat "Times Cp" - annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum masFloHeaTot(final nin=2) - "Compute district water mass flow rate used for heating service" - annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); - Modelica.Blocks.Sources.Constant zer(final k=0) if not have_hotWat - "Replacement variable" - annotation (Placement(transformation(extent={{140,350},{160,370}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatRet( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mHeaWat_flow_nominal) - "Heating water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={20,300}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatRet( - redeclare final package Medium = MediumBui, - final allowFlowReversal=allowFlowReversalBui, - final m_flow_nominal=mChiWat_flow_nominal) - "Chilled water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={40,-120}))); - Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat - "Compute DeltaT needed on condenser side" - annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = - MediumBui, final allowFlowReversal=allowFlowReversalBui) - "Primary heating water mass flow rate" - annotation (Placement(transformation(extent={{30,270},{50,250}}))); - Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW( - trueHoldDuration=15*60) if have_hotWat "Enable SHW production" - annotation (Placement(transformation(extent={{-140,70},{-120,90}}))); - Modelica.Blocks.Sources.Constant zer1(k=0) if not have_hotWat - "Replacement variable" - annotation (Placement(transformation(extent={{-40,-250},{-20,-230}}))); - Buildings.Controls.OBC.CDL.Reals.Add masFloHea - "Service water mass flow rate for heating applications" - annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={0,-264}))); - Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(final nin=2) - "Total power used for heating and hot water production" - annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaSHW if have_hotWat and have_varFloEva - "Heat flow rate at evaporator" - annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW - "Heating hot water DeltaT" - annotation (Placement(transformation(extent={{0,310},{-20,330}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter capFloHHW( - final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" - annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); - Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva - "Heat flow rate at evaporator" - annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaSHW( - final Q_flow_nominal=-QHotWat_flow_nominal*(1 - 1/COPHotWat_nominal), - final dT_nominal=-dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpSer_default) if have_hotWat and have_varFloEva - "Mass flow rate control" - annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloConHHW( - final Q_flow_nominal=QHeaWat_flow_nominal, - final dT_nominal=dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpBui_default) if have_varFloCon - "Mass flow rate control" - annotation (Placement(transformation(extent={{-100,270},{-80,290}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaHHW( - final Q_flow_nominal=-QHeaWat_flow_nominal*(1 - 1/COPHeaWat_nominal), - final dT_nominal=-dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpSer_default) if have_varFloEva - "Mass flow rate control" - annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); - Buildings.Controls.OBC.CDL.Reals.Max priOve if have_varFloCon - "Ensure primary overflow" - annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply loaHHW - if have_varFloEva or have_varFloCon "Heating load" - annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub(final k=-1) - if have_hotWat "Convert to subtraction" - annotation (Placement(transformation(extent={{-80,70},{-100,90}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub1(final k=-1) - if have_hotWat "Convert to subtraction" - annotation (Placement(transformation(extent={{-80,216},{-100,236}}))); -equation - connect(TChiWatSupSet, conTChiWat.u_s) annotation (Line(points={{-320,0},{-200, - 0},{-200,-200},{-152,-200}}, color={0,0,127})); - connect(pum1HexChi.P, PPumCooTot.u[1]) annotation (Line(points={{89,-331},{84, - -331},{84,-322},{180,-322},{180,380},{188,380}}, color={0,0,127})); - connect(PPumHeaTot.y, PPumTot.u[1]) annotation (Line(points={{212,420},{216,420}, - {216,399.5},{218,399.5}}, - color={0,0,127})); - connect(PPumCooTot.y, PPumTot.u[2]) annotation (Line(points={{212,380},{216,380}, - {216,400.5},{218,400.5}}, - color={0,0,127})); - connect(pum1HexChi.port_b, hexChi.port_a1) annotation (Line(points={{90,-340}, - {10,-340}}, color={0,127,255})); - connect(pum1HexChi.m_flow_actual, mCoo_flow) annotation (Line(points={{89,-335}, - {82,-335},{82,-320},{276,-320},{276,-180},{320,-180}}, color={0,0,127})); - connect(volMix_a.ports[1], swiFlo.port_bSup) annotation (Line(points={{-260,-360}, - {-6,-360},{-6,-370}}, color={0,127,255})); - connect(swiFlo.port_aRet, volMix_b.ports[1]) annotation (Line(points={{6,-370}, - {6,-360},{260,-360}}, color={0,127,255})); - connect(volMix_b.ports[2], pum1HexChi.port_a) annotation (Line(points={{260,-360}, - {258,-360},{258,-340},{110,-340}}, color={0,127,255})); - connect(hexChi.port_b1, volMix_a.ports[2]) annotation (Line(points={{-10,-340}, - {-256,-340},{-256,-360},{-260,-360}}, color={0,127,255})); - connect(pum1HexChi.m_flow_actual, swiFlo.mRev_flow) annotation (Line(points={ - {89,-335},{80,-335},{80,-356},{-20,-356},{-20,-384},{-12,-384}}, - color={0,0,127})); - connect(gai2.y, pum1HexChi.m_flow_in) - annotation (Line(points={{-86,-200},{100,-200},{100,-328}}, - color={0,0,127})); - connect(PPumTot.y, PPum) annotation (Line(points={{242,400},{244,400},{244,-40}, - {320,-40}}, color={0,0,127})); - connect(ports_aHeaWat[1], senMasFloHeaWat.port_a) annotation (Line(points={{-300, - 260},{-250,260}}, color={0,127,255})); - connect(bypHeaWatSup.port_2, senTHeaWatSup.port_a) - annotation (Line(points={{110,260},{130,260}}, color={0,127,255})); - connect(senTHeaWatSup.port_b, ports_bHeaWat[1]) - annotation (Line(points={{150,260},{300,260}}, color={0,127,255})); - connect(bypHeaWatRet.port_2, volHeaWatRet.ports[1]) annotation (Line(points={{90,240}, - {80,240},{80,178.667}}, color={0,127,255})); - connect(bouHeaWat.ports[1], volHeaWatRet.ports[2]) annotation (Line(points={{60,160}, - {60,180},{80,180}}, color={0,127,255})); - connect(ports_aChiWat[1], senMasFloChiWat.port_a) annotation (Line(points={{-300, - 200},{-280,200},{-280,-120},{-250,-120}}, color={0,127,255})); - connect(senTChiWatSup.port_b, ports_bChiWat[1]) annotation (Line(points={{150, - -280},{200,-280},{200,200},{300,200}}, color={0,127,255})); - connect(bypHeaWatRet.port_3, bypHeaWatSup.port_3) - annotation (Line(points={{100,250},{100,250}}, color={0,127,255})); - connect(volHeaWatRet.ports[3], proHeaWat.port_a1) annotation (Line(points={{80, - 181.333},{80,180},{-20,180},{-20,208},{-10,208}}, color={0,127,255})); - connect(proHeaWat.port_b2, volMix_b.ports[3]) annotation (Line(points={{10, - 220},{262,220},{262,-360},{260,-360}}, color={0,127,255})); - connect(volMix_a.ports[3], proHeaWat.port_a2) annotation (Line(points={{-260, - -360},{-260,200},{14,200},{14,208},{10,208}}, color={0,127,255})); - connect(enaHea.y, proHeaWat.uEna) annotation (Line(points={{-118,160},{-48,160}, - {-48,223},{-12,223}}, color={255,0,255})); - connect(THeaWatSupSet, proHeaWat.TSupSet) annotation (Line(points={{-320,40},{ - -200,40},{-200,217},{-12,217}}, - color={0,0,127})); - connect(proHeaWat.PPum, PPumHeaTot.u[1]) annotation (Line(points={{12,214},{172, - 214},{172,419.5},{188,419.5}}, - color={0,0,127})); - connect(volMix_a.ports[4], proHotWat.port_a2) annotation (Line(points={{-260, - -360},{-258,-360},{-258,20},{14,20},{14,28},{10,28}}, color={0,127, - 255})); - connect(proHotWat.port_b2, volMix_b.ports[4]) - annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); - connect(THotWatSupSet, proHotWat.TSupSet) annotation (Line(points={{-320,-40}, - {-160,-40},{-160,37},{-12,37}}, color={0,0,127})); - connect(sinSHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-50,60}, - {-20,60},{-20,40},{-10,40}}, color={0,127,255})); - connect(TColWat, souColWat.T_in) annotation (Line(points={{-320,-80},{-60,-80}, - {-60,-36},{-50,-36}}, color={0,0,127})); - connect(gai.y, div1.u2) annotation (Line(points={{-98,0},{-80,0},{-80,-20},{-120, - -20},{-120,-46},{-102,-46}}, color={0,0,127})); - connect(loaSHW, div1.u1) annotation (Line(points={{-320,-120},{-290,-120},{-290, - -34},{-102,-34}}, color={0,0,127})); - connect(masFloHeaTot.y, mHea_flow) - annotation (Line(points={{292,-140},{320,-140}}, color={0,0,127})); - connect(proHotWat.mEva_flow, masFloHeaTot.u[2]) annotation (Line(points={{12,31}, - {218,31},{218,-139.5},{268,-139.5}}, - color={0,0,127})); - connect(zer.y, masFloHeaTot.u[2]) annotation (Line(points={{161,360},{216,360}, - {216,-144},{268,-144},{268,-139.5}}, - color={0,0,127})); - connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{176, - 34},{176,420},{188,420},{188,420.5}}, - color={0,0,127})); - connect(proHeaWat.mEva_flow, masFloHeaTot.u[1]) annotation (Line(points={{12,211}, - {220,211},{220,-140.5},{268,-140.5}}, - color={0,0,127})); - connect(zer.y, PPumHeaTot.u[2]) annotation (Line(points={{161,360},{174,360},{ - 174,418},{188,418},{188,420.5}}, - color={0,0,127})); - connect(senMasFloHeaWat.port_b, senTHeaWatRet.port_a) annotation (Line(points={{-230, - 260},{-220,260},{-220,300},{10,300}}, color={0,127,255})); - connect(senTHeaWatRet.port_b, bypHeaWatRet.port_1) annotation (Line(points={{30,300}, - {120,300},{120,240},{110,240}}, color={0,127,255})); - connect(senMasFloChiWat.port_b, senTChiWatRet.port_a) - annotation (Line(points={{-230,-120},{30,-120}}, color={0,127,255})); - connect(souColWat.ports[1], proHotWat.port_a1) annotation (Line(points={{-28,-40}, - {-20,-40},{-20,28},{-10,28}}, color={0,127,255})); - connect(delT.y, gai.u) - annotation (Line(points={{-128,0},{-122,0}}, color={0,0,127})); - connect(TColWat, delT.u2) annotation (Line(points={{-320,-80},{-156,-80},{-156, - -6},{-152,-6}}, color={0,0,127})); - connect(THotWatSupSet, delT.u1) annotation (Line(points={{-320,-40},{-160,-40}, - {-160,6},{-152,6}}, - color={0,0,127})); - connect(proHeaWat.port_b1, senMasFloHeaWatPri.port_a) annotation (Line(points= - {{-10,220},{-20,220},{-20,260},{30,260}}, color={0,127,255})); - connect(senMasFloHeaWatPri.port_b, bypHeaWatSup.port_1) - annotation (Line(points={{50,260},{90,260}}, color={0,127,255})); - connect(port_aSerAmb, swiFlo.port_aSup) annotation (Line(points={{-300,-200},{ - -272,-200},{-272,-344},{-280,-344},{-280,-400},{-6,-400},{-6,-390}}, - color={0,127,255})); - connect(swiFlo.port_bRet, port_bSerAmb) annotation (Line(points={{6,-390},{6, - -400},{280,-400},{280,-200},{300,-200}}, - color={0,127,255})); - connect(uHea, enaHea.u) annotation (Line(points={{-320,160},{-142,160}}, - color={255,0,255})); - connect(conTChiWat.y, gai2.u) - annotation (Line(points={{-128,-200},{-110,-200}}, color={0,0,127})); - connect(uCoo, conTChiWat.uEna) annotation (Line(points={{-320,120},{-180,120}, - {-180,-220},{-144,-220},{-144,-212}}, color={255,0,255})); - connect(uSHW, enaSHW.u) - annotation (Line(points={{-320,80},{-142,80}}, color={255,0,255})); - connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, - {-114,43},{-12,43}},color={255,0,255})); - connect(div1.y, souColWat.m_flow_in) annotation (Line(points={{-78,-40},{-68,-40}, - {-68,-32},{-50,-32}}, color={0,0,127})); - connect(senTChiWatRet.port_b, volChiWat.ports[1]) annotation (Line(points={{50,-120}, - {60,-120},{60,-280},{-101.333,-280}}, color={0,127,255})); - connect(volChiWat.ports[2], hexChi.port_a2) annotation (Line(points={{-100, - -280},{-120,-280},{-120,-320},{-20,-320},{-20,-328},{-10,-328}}, - color={0,127,255})); - connect(hexChi.port_b2, senTChiWatSup.port_a) annotation (Line(points={{10, - -328},{20,-328},{20,-320},{80,-320},{80,-280},{130,-280}}, color={0, - 127,255})); - connect(bouChiWat.ports[1], volChiWat.ports[3]) - annotation (Line(points={{-142,-280},{-98.6667,-280}}, color={0,127,255})); - connect(senTChiWatSup.T, conTChiWat.u_m) annotation (Line(points={{140,-269}, - {140,-220},{-140,-220},{-140,-212}}, color={0,0,127})); - connect(zer1.y, masFloHea.u2) annotation (Line(points={{-19,-240},{-8,-240},{ - -8,-252},{-6,-252}}, color={0,0,127})); - connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{12,31},{18, - 31},{18,-240},{-6,-240},{-6,-252}}, color={0,0,127})); - connect(proHeaWat.mEva_flow, masFloHea.u1) annotation (Line(points={{12,211},{ - 20,211},{20,-246},{6,-246},{6,-252}}, color={0,0,127})); - connect(masFloHea.y, swiFlo.mPos_flow) annotation (Line(points={{0,-276},{0, - -320},{-16,-320},{-16,-376},{-12,-376}}, color={0,0,127})); - connect(proHeaWat.PHea, PHeaTot.u[1]) annotation (Line(points={{12,217},{240,217}, - {240,79.5},{268,79.5}}, color={0,0,127})); - connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{240,37}, - {240,80.5},{268,80.5}}, - color={0,0,127})); - connect(zer.y, PHeaTot.u[2]) annotation (Line(points={{161,360},{242,360},{242, - 78},{268,78},{268,80.5}}, color={0,0,127})); - connect(PHeaTot.y, PHea) - annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); - connect(loaSHW, heaFloEvaSHW.u1) annotation (Line(points={{-320,-120},{-288, - -120},{-288,-36},{-164,-36},{-164,106},{-102,106}}, - color={0,0,127})); - connect(senTHeaWatRet.T, dTHHW.u2) - annotation (Line(points={{20,311},{20,314},{2,314}}, color={0,0,127})); - connect(senTHeaWatSup.T, dTHHW.u1) - annotation (Line(points={{140,271},{140,326},{2,326}}, color={0,0,127})); - connect(senMasFloHeaWat.m_flow, capFloHHW.u) annotation (Line(points={{-240,271}, - {-240,320},{-222,320}}, color={0,0,127})); - connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38,100}, - {-16,100},{-16,31},{-12,31}}, color={0,0,127})); - connect(conFloEvaHHW.m_flow, proHeaWat.m2_flow) annotation (Line(points={{-38,240}, - {-28,240},{-28,211},{-12,211}}, color={0,0,127})); - connect(senMasFloHeaWat.m_flow, priOve.u1) annotation (Line(points={{-240,271}, - {-240,296},{-70,296},{-70,286},{-62,286}}, color={0,0,127})); - connect(conFloConHHW.m_flow, priOve.u2) annotation (Line(points={{-78,280},{-70, - 280},{-70,274},{-62,274}}, color={0,0,127})); - connect(priOve.y, proHeaWat.m1_flow) annotation (Line(points={{-38,280},{-24,280}, - {-24,214},{-12,214}}, color={0,0,127})); - connect(heaFloEvaSHW.y, conFloEvaSHW.loa) - annotation (Line(points={{-78,100},{-62,100}}, color={0,0,127})); - connect(heaFloEvaHHW.y, conFloEvaHHW.loa) - annotation (Line(points={{-78,240},{-62,240}}, color={0,0,127})); - connect(capFloHHW.y, loaHHW.u2) annotation (Line(points={{-198,320},{-180,320}, - {-180,274},{-142,274}}, color={0,0,127})); - connect(dTHHW.y, loaHHW.u1) annotation (Line(points={{-22,320},{-160,320},{ - -160,286},{-142,286}}, color={0,0,127})); - connect(loaHHW.y, conFloConHHW.loa) - annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); - connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, - 280},{-110,246},{-102,246}}, color={0,0,127})); - connect(proHotWat.PHea, toSub.u) annotation (Line(points={{12,37},{18,37},{18, - 80},{-78,80}}, color={0,0,127})); - connect(toSub.y, heaFloEvaSHW.u2) annotation (Line(points={{-102,80},{-108,80}, - {-108,94},{-102,94}}, color={0,0,127})); - connect(proHeaWat.PHea, toSub1.u) annotation (Line(points={{12,217},{20,217}, - {20,226},{-78,226}}, color={0,0,127})); - connect(toSub1.y, heaFloEvaHHW.u2) annotation (Line(points={{-102,226},{-110, - 226},{-110,234},{-102,234}}, color={0,0,127})); - annotation ( - defaultComponentName="ets", - Documentation(info=" -

-This model represents an energy transfer station as described in Sommer (2020). -

-
    -
  • -The cooling function is provided in a compressor-less mode by a heat exchanger -connected to the service line. -The chilled water is typically produced at high temperature and distributed -to radiant cooling systems, for instance at 19°C. -
  • -
  • -The heating functions are provided by water-to-water heat pumps. -
      -
    • -By default the condenser and evaporator loops are operated -with variable mass flow rate, with a lower limit specified by the ratio -ratFloMin. -The model can also represent constant flow condenser and evaporator loops -by setting have_varFloCon and have_varFloEva -to false. -
    • -
    • -The evaporator water is supplied by mixing the flow rate from the direct connection -to the service line to the flow rate from the primary side of the cooling -heat exchanger. -The hydronic arrangement modeled in - -Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox -ensures that the resulting fluid stream in the service line always flows -in the same direction. -
    • -
    • -The heating hot water is typically produced at low temperature, -for instance 40°C. -
    • -
    -
  • -
-

Controls

-

-Heating (resp. cooling) is enabled based on the input signal uHea -(resp. uCoo) which is held for 15 minutes, meaning that, -when enabled, the mode remains active for at least 15 minutes and, -when disabled, the mode cannot be enabled again for at least 15 minutes. -The heating and cooling enable signals should be computed externally based -on a schedule (to lock out the system during off-hours), ideally in conjunction -with the number of requests yielded by the terminal unit controllers, or any -other signal representative of the load. -

-

-When enabled, -

- -

Modeling considerations

-

-There is a control volume at each of the two fluid ports that serve as inlet and outlet -of the heating and cooling systems. These approximate the dynamics -of the substation, and they also generally avoid nonlinear systems -of equations if multiple substations are connected to each other. -

-

References

-

-Sommer T., Sulzer M., Wetter M., Sotnikov A., Mennel S., Stettler C. -The reservoir network: A new network topology for district heating -and cooling. -Energy, Volume 199, 15 May 2020, 117418. -

-", - revisions=" -
    -
  • -May 17, 2023, by David Blum:
    -Assigned dp_nominal to pum1HexChi.
    -Corrected calculation of heat pump evaporator mass flow control.
    -This is for - -issue 3379. -
  • -
  • -February 23, 2021, by Antoine Gautier:
    -Refactored with subsystem models and partial ETS base class.
    -This is for - -issue 1769. -
  • -
  • -December 12, 2017, by Michael Wetter:
    -Removed call to Modelica.Utilities.Files.loadResource.
    -This is for -issue 1097. -
  • -
-"), - Diagram(coordinateSystem(extent={{-300,-420},{300,440}})), - Icon(coordinateSystem(preserveAspectRatio=false, extent={{-300,-300},{300,300}}))); -end HeatPumpHeatExchanger_Current; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order index c892ae9a8e9..c74a100031b 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/package.order @@ -1,8 +1,6 @@ ChillerBorefield HeatPumpHeatExchanger -HeatPumpHeatExchanger_Current HeatPumpHeatExchangerDHWTank -HeatPumpHeatExchangerDHWTank_Current Controls Subsystems Examples diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/DELETE.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/DELETE.mo deleted file mode 100644 index e31541d152e..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/DELETE.mo +++ /dev/null @@ -1,252 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.Examples; -package DELETE "These models are outdated" - - model DistrictETSIntegration - "Example implementation of connecting district ETS to building DHW model" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{82,74},{70,86}}))); - BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD - disHXAuxHea( - redeclare package Medium = Medium, - TSetHw(displayUnit="degC") = TSetHw, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - haveER=haveER) - "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{48,38},{28,58}}))); - DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit="degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, - offset=1) - annotation (Placement(transformation(extent={{120,70},{100,90}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{80,38},{100,58}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == - true - "Thermal energy added to water with electric resistance" - annotation (Placement(transformation(extent={{120,110},{140,130}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{120,90},{140,110}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{120,38},{140,58}}), - iconTransformation(extent={{100,18},{140,58}}))); - Modelica.Blocks.Sources.Constant const(k=1) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=0, - origin={-60,150}))); - EnergyTransferStations.Combined.HeatPumpHeatExchanger_Current ets( - nPorts_aHeaWat=1, - nPorts_aChiWat=1, - nPorts_bChiWat=1, - nPorts_bHeaWat=1) - annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare final - package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={-106,40}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare final - package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water return temperature" annotation (Placement(transformation( - extent={{10,10},{-10,-10}}, - rotation=0, - origin={-108,0}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare package - Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={80,-40}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( - redeclare package Medium = Medium, - final m_flow_nominal=mHeaWat_flow_nominal, - dp_nominal=100E3) "Heating water distribution pump" - annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare package - Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water supply temperature" annotation (Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={-34,98}))); - Fluid.MixingVolumes.MixingVolume volChiWat( - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - T_start=7 + 273.15, - final prescribedHeatFlowRate=true, - redeclare package Medium = Medium, - V=10, - final mSenFac=1, - final m_flow_nominal=mChiWat_flow_nominal, - nPorts=2) "Volume for chilled water distribution circuit" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={151,-90}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( - redeclare package Medium = Medium, - final m_flow_nominal=mChiWat_flow_nominal, - dp_nominal=100E3) "Chilled water distribution pump" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) - "District heat pump electricity use" - annotation (Placement(transformation(extent={{100,-2},{120,18}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= - 0.01, final h=0.005) - "Enable heating" - annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= - 0.01, final h=0.005) - "Enable cooling" - annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + - 273.15, y(final unit="K", displayUnit="degC")) - "Heating water supply temperature set point" - annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); - Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + - 273.15, y(final unit="K", displayUnit="degC")) - "Chilled water supply temperature set point" - annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare final - package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-60}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package - Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={40,-60}))); - Fluid.Sources.Boundary_pT disWat( - redeclare package Medium = Medium, - use_T_in=true, - nPorts=2) "District water boundary conditions" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={0,-90}))); - Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( - table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, - 16; 11,13; 12,11], - timeScale=2592000, - tableName="tab1", - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, - offset={273.15}, - columns={2}, - smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) - "District water supply temperature" - annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); - equation - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, - color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, - {60,80},{60,56},{50,56}}, - color={0,0,127})); - connect(sine.y, gaiDhw.u) - annotation (Line(points={{99,80},{83.2,80}}, - color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ - 60,48},{60,56},{50,56}}, - color={0,0,127})); - connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, - {-10,60},{-10,56},{0,56}}, - color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, - {-60,60},{-40,60}}, color={0,127,255})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, - {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); - connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, - 64},{0,64},{0,120},{130,120}}, - color={0,0,127})); - connect(tmv.TTw, TTw) - annotation (Line(points={{21,56},{28,56},{28,100},{130,100}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); - connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( - points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); - connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( - points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); - connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( - points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); - connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= - {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= - {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) - annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); - connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, - {-20,150},{-20,144}}, color={0,0,127})); - connect(senTChiWatSup.port_b, pumChiWat.port_a) - annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); - connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, - {140,-40},{140,-89},{141,-89}}, color={0,127,255})); - connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( - points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, - 0}}, color={0,127,255})); - connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( - points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ - 0,127,255})); - connect(ets.PHea, EDisHP.u) - annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); - connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, - {-74,10},{-34,10}}, color={255,0,255})); - connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, - {-70,6},{-34,6}}, color={255,0,255})); - connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ - -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); - connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ - -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); - connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= - {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); - connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= - {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); - connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, - {40,-80},{40,-70}}, color={0,127,255})); - connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, - {-40,-80},{-40,-70}}, color={0,127,255})); - connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, - -110},{-4,-110},{-4,-102}}, color={0,0,127})); - connect(PEleAuxHea, PEleAuxHea) - annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); - annotation (experiment(StopTime=3600, Interval=1), - Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), - Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); - end DistrictETSIntegration; -end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order b/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order index 9622cff465c..31961120d41 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order @@ -1,4 +1,3 @@ DomesticWaterHeater DomesticWaterFixture DomesticWaterHeaterAndFixture -DELETE From f6fdbab33a6c26ec6d6bca96cbe15661b2303274 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 5 Sep 2023 15:15:31 -0700 Subject: [PATCH 074/183] Add tmv, adjust parameters --- .../PartialHeatPumpHeatExchanger.mo | 9 +- .../Combined/HeatPumpHeatExchanger.mo | 4 +- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 88 ++++++++++++------- .../Combined/Subsystems/HeatPumpDHWTank.mo | 23 ++--- .../BuildingTimeSeriesWithETSDHWTank.mo | 13 +-- .../DHW/Data/GenericHeatPumpWaterHeater.mo | 2 +- .../DHW/Examples/DomesticWaterFixture.mo | 9 +- .../Examples/DomesticWaterHeaterAndFixture.mo | 11 ++- .../Loads/DHW/HeatPumpWaterHeaterWithTank.mo | 23 ++--- ...terMixer.mo => ThermostaticMixingValve.mo} | 44 +++++----- .../Experimental/DHC/Loads/DHW/package.order | 2 +- 11 files changed, 124 insertions(+), 104 deletions(-) rename Buildings/Experimental/DHC/Loads/DHW/{DomesticWaterMixer.mo => ThermostaticMixingValve.mo} (87%) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index 9b49865a5da..eec23691f15 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -47,8 +47,8 @@ model PartialHeatPumpHeatExchanger final parameter Modelica.Units.SI.Temperature THeaWatRet_nominal= THeaWatSup_nominal - dT_nominal "Heating water return temperature" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature THotWatSup_nominal=336.15 - "Hot water supply temperature" + parameter Modelica.Units.SI.Temperature THotWatSup_nominal=49+273.15 + "Hot water supply temperature to fixture" annotation (Dialog(group="Nominal condition", enable=have_hotWat)); parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 "Cold water temperature (for hot water production)" @@ -128,7 +128,7 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( final unit="K", displayUnit="degC") if have_hotWat - "Service hot water supply temperature set point" + "Domestic hot water temperature set point for supply to fixture(s)" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, @@ -559,9 +559,6 @@ equation 78},{268,78},{268,80.5}}, color={0,0,127})); connect(PHeaTot.y, PHea) annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); - connect(loaSHW, heaFloEvaSHW.u1) annotation (Line(points={{-320,-120},{-288, - -120},{-288,-36},{-164,-36},{-164,106},{-102,106}}, - color={0,0,127})); connect(senTHeaWatRet.T, dTHHW.u2) annotation (Line(points={{20,311},{20,314},{2,314}}, color={0,0,127})); connect(senTHeaWatSup.T, dTHHW.u1) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 6395a5b5c13..634e94cc8b5 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -59,7 +59,7 @@ equation connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{12,31},{18, 31},{18,-240},{-6,-240},{-6,-252}}, color={0,0,127})); connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{240, - 37},{240,80},{256,80},{256,80},{268,80}}, + 37},{240,80},{256,80},{256,80.5},{268,80.5}}, color={0,0,127})); connect(TColWat, souColWat.T_in) annotation (Line(points={{-320,-80},{-60,-80}, {-60,-36},{-50,-36}}, color={0,0,127})); @@ -69,4 +69,6 @@ equation {14,28},{14,20},{-260,20},{-260,-360}}, color={0,127,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); + connect(heaFloEvaSHW.u1, div1.u1) annotation (Line(points={{-102,106},{-290, + 106},{-290,-34},{-102,-34}}, color={0,0,127})); end HeatPumpHeatExchanger; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 11d1ec95bf6..85097919923 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -13,7 +13,7 @@ model HeatPumpHeatExchangerDHWTank transformation( extent={{10,-10},{-10,10}}, rotation=180, - origin={-40,-10}))); + origin={-50,-10}))); Subsystems.HeatPumpDHWTank proHotWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, @@ -25,52 +25,74 @@ model HeatPumpHeatExchangerDHWTank TColWat_nominal), datWatHea=datWatHea) if have_hotWat "Subsystem for hot water production" - annotation (Placement(transformation(extent={{-10,24},{10,44}}))); + annotation (Placement(transformation(extent={{32,24},{52,44}}))); parameter Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" - annotation (Placement(transformation(extent={{-6,6},{6,18}}))); + annotation (Placement(transformation(extent={{36,48},{48,60}}))); Fluid.Sources.MassFlowSource_T sinDHW( redeclare final package Medium = MediumBui, use_m_flow_in=true, nPorts=1) if have_hotWat "Sink for domestic hot water" - annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + annotation (Placement(transformation(extent={{-68,50},{-48,70}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) if have_hotWat "Convert to sink" - annotation (Placement(transformation(extent={{-98,50},{-78,70}}))); + annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); + Loads.DHW.ThermostaticMixingValve tmv( + redeclare package Medium = MediumBui, + mDhw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - + TColWat_nominal), + dpValve_nominal=1000) "Thermostatic mixing valve" + annotation (Placement(transformation(extent={{-20,48},{-40,70}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction dcwSpl( + redeclare final package Medium = MediumBui, final m_flow_nominal= + proHeaWat.m1_flow_nominal*{1,-1,-1}) "Splitter for domestic cold water" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-12,4}))); equation - connect(toSin.u, div1.y) annotation (Line(points={{-100,60},{-108,60},{-108,32}, - {-70,32},{-70,-40},{-78,-40}}, color={0,0,127})); - connect(souDCW.ports[1], proHotWat.port_a1) annotation (Line(points={{-30,-10}, - {-20,-10},{-20,28},{-10,28}}, color={0,127,255})); - connect(sinDHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-40,60}, - {-20,60},{-20,40},{-10,40}}, color={0,127,255})); - connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38, - 100},{-16,100},{-16,31},{-12,31}}, color={0,0,127})); - connect(THotWatSupSet, proHotWat.TSupSet) annotation (Line(points={{-320,-40}, - {-160,-40},{-160,36},{-86,36},{-86,37},{-12,37}}, - color={0,0,127})); - connect(souDCW.T_in, delT.u2) annotation (Line(points={{-52,-14},{-60,-14},{-60, - -80},{-156,-80},{-156,-6},{-152,-6}}, color={0,0,127})); + connect(toSin.u, div1.y) annotation (Line(points={{-102,60},{-108,60},{-108, + 32},{-70,32},{-70,-40},{-78,-40}}, + color={0,0,127})); + connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38,100}, + {28,100},{28,31},{30,31}}, color={0,0,127})); + connect(souDCW.T_in, delT.u2) annotation (Line(points={{-62,-14},{-64,-14},{ + -64,-60},{-156,-60},{-156,-6},{-152,-6}}, color={0,0,127})); connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, - {-114,43},{-12,43}}, color={255,0,255})); + {-114,43},{30,43}}, color={255,0,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) - annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); - connect(proHotWat.PHea, toSub.u) annotation (Line(points={{12,37},{14,37},{14, + annotation (Line(points={{52,40},{260,40},{260,-360}}, color={0,127,255})); + connect(proHotWat.PHea, toSub.u) annotation (Line(points={{54,37},{56,37},{56, 80},{-78,80}}, color={0,0,127})); - connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{12,37},{24,37}, - {24,38},{252,38},{252,84},{260,84},{260,80.5},{268,80.5}}, + connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{54,37},{66,37}, + {66,38},{268,38},{268,80.5}}, color={0,0,127})); - connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{176, - 34},{176,420.5},{188,420.5}}, + connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{54,34},{ + 176,34},{176,420.5},{188,420.5}}, color={0,0,127})); - connect(proHotWat.mEva_flow, masFloHeaTot.u[2]) annotation (Line(points={{12,31}, - {26,31},{26,30},{214,30},{214,-139.5},{268,-139.5}}, + connect(proHotWat.mEva_flow, masFloHeaTot.u[2]) annotation (Line(points={{54,31}, + {68,31},{68,30},{256,30},{256,-139.5},{268,-139.5}}, color={0,0,127})); - connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{12,31},{16, - 31},{16,-242},{-6,-242},{-6,-252}}, color={0,0,127})); - connect(toSin.y, sinDHW.m_flow_in) annotation (Line(points={{-76,60},{-68,60}, - {-68,68},{-62,68}}, color={0,0,127})); - connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{10,28}, - {14,28},{14,20},{-262,20},{-262,-360},{-260,-360}}, color={0,127,255})); + connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{54,31},{ + 58,31},{58,-242},{-6,-242},{-6,-252}}, + color={0,0,127})); + connect(toSin.y, sinDHW.m_flow_in) annotation (Line(points={{-78,60},{-76,60}, + {-76,68},{-70,68}}, color={0,0,127})); + connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, + {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); + connect(tmv.port_tw, sinDHW.ports[1]) annotation (Line(points={{-40,59},{-45, + 59},{-45,60},{-48,60}}, color={0,127,255})); + connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-40,-10},{ + -12,-10},{-12,-6}}, color={0,127,255})); + connect(dcwSpl.port_3, proHotWat.port_a1) + annotation (Line(points={{-2,4},{0,4},{0,28},{32,28}}, color={0,127,255})); + connect(dcwSpl.port_2, tmv.port_cw) annotation (Line(points={{-12,14},{-12, + 54.6},{-20,54.6}}, color={0,127,255})); + connect(proHotWat.port_b1, tmv.port_hw) annotation (Line(points={{32,40},{0, + 40},{0,63.4},{-20,63.4}}, color={0,127,255})); + connect(tmv.TSet, delT.u1) annotation (Line(points={{-18,67.8},{-12,67.8},{ + -12,68},{-8,68},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); + connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, + {68,24},{68,120},{-108,120},{-108,106},{-102,106}}, color={0,0,127})); end HeatPumpHeatExchangerDHWTank; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index b4dcbf07d43..7b7b16b8e17 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -33,12 +33,6 @@ model HeatPumpDHWTank annotation ( Placement(transformation(extent={{-240,100},{-200,140}}), iconTransformation(extent={{-140,70},{-100,110}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( - final unit="K", - displayUnit="degC") - "Supply temperature set point" - annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), - iconTransformation(extent={{-140,10},{-100,50}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput m2_flow( final unit="kg/s") if have_varFloEva "Evaporator mass flow rate" @@ -95,9 +89,8 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k= - mDH_flow_nominal) if not have_varFloEva - "Nominal flow rate" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k=heaPumTan.mDH_flow_nominal) + if not have_varFloEva "Nominal flow rate" annotation (Placement(transformation(extent={{0,80},{-20,100}}))); Fluid.Sensors.TemperatureTwoPort senTHotSup( redeclare final package Medium = Medium1, @@ -140,13 +133,17 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add annotation (Placement(transformation(extent={{140,-18},{160,2}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHw(k=datWatHea.THex_nominal) "Set point of water leaving heat pump" + annotation (Placement(transformation(extent={{-200,0},{-180,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") + "Actual heat pump heating heat flow rate added to fluid" annotation ( + Placement(transformation(extent={{200,-120},{240,-80}}), + iconTransformation(extent={{100,-120},{140,-80}}))); equation connect(senTColSou.T,enaHeaPum. u3) annotation (Line(points={{-51,-20},{-150,-20}, {-150,12},{-142,12}}, color={0,0,127})); connect(uEna, booToRea.u) annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); - connect(TSupSet, enaHeaPum.u1) annotation (Line(points={{-220,-20},{-180,-20}, - {-180,28},{-142,28}}, color={0,0,127})); connect(senTHotSup.port_b, port_b1) annotation (Line(points={{40,30},{40,60},{-200,60}}, color={0,127,255})); connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{49,-55},{ @@ -185,6 +182,10 @@ equation {49,-20},{49,-51}}, color={0,0,127})); connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-12},{120,-12},{120, -2},{138,-2}}, color={0,0,127})); + connect(heaPumTan.QCon_flow, QCon_flow) annotation (Line(points={{21,-8},{82,-8}, + {82,-100},{220,-100}}, color={0,0,127})); + connect(TSetHw.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166,10},{ + -166,28},{-142,28}}, color={0,0,127})); annotation ( defaultComponentName="heaPum", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 1944858cbd8..4112b255e1f 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -31,9 +31,9 @@ model BuildingTimeSeriesWithETSDHWTank allowFlowReversalSer=true, filNam= "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", - datWatHea=datWatHea) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); + Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) "Cold water temperature" annotation (Placement(transformation(extent={{60,80},{80,100}}))); @@ -50,12 +50,13 @@ model BuildingTimeSeriesWithETSDHWTank "Heating water supply temperature set point - Minimum value" annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea( - mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal, + mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* + 1.2, QCon_flow_max=1.2*datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, - TTan_nominal=bui.ets.THotWatSup_nominal, - THex_nominal=datWatHea.TTan_nominal + datWatHea.dTCon_nominal, - dTCon_nominal=5) + TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, + THex_nominal=333.15, + dTCon_nominal=datWatHea.THex_nominal - bui.ets.TColWat_nominal) "Performance data" annotation (Placement(transformation(extent={{44,-38},{56,-26}}))); @@ -89,7 +90,7 @@ equation file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSWithDHWTank.mos" "Simulate and plot"), experiment( StopTime=864000, - Interval=600, + Interval=30, Tolerance=1e-06, __Dymola_Algorithm="Dassl"), Documentation(info=" diff --git a/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo index e6af1355347..5df2a0faf15 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo @@ -13,7 +13,7 @@ record GenericHeatPumpWaterHeater parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 333.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = TTan_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo index d0b13de0405..7bdbb2755f0 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo @@ -13,14 +13,11 @@ model DomesticWaterFixture parameter Real uLow = 0.1 "low hysteresis threshold"; parameter Real uHigh = 0.9 "high hysteresis threshold"; - DomesticWaterMixer tmv( + ThermostaticMixingValve tmv( redeclare package Medium = Medium, - TSet=TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, dpValve_nominal=dpValve_nominal, k=kCon, - uLow=uLow, - uHigh=uHigh, Ti=Ti) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" @@ -55,6 +52,8 @@ model DomesticWaterFixture smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" annotation (Placement(transformation(extent={{100,20},{80,40}}))); + Modelica.Blocks.Sources.Constant const(k=TSetTw) + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{14,6},{14,60},{110,60}}, color={0,0,127})); @@ -69,6 +68,8 @@ equation {-46,6},{-40,6}}, color={0,127,255})); connect(schDhw.y[1], loaDHW.schDhw) annotation (Line(points={{79,30},{60,30},{60,3},{41,3}}, color={0,0,127})); + connect(const.y, tmv.TSet) + annotation (Line(points={{-59,10},{-59,8},{-42,8}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water fixture. diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo index 5505c4bee48..b608f507207 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo @@ -24,12 +24,10 @@ model DomesticWaterHeaterAndFixture mHw_flow_nominal=mHw_flow_nominal, mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - DomesticWaterMixer tmv( + ThermostaticMixingValve tmv( redeclare package Medium = Medium, - TSet(displayUnit="degC") = TSetTw, mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) - "Ideal thermostatic mixing valve" + dpValve_nominal=dpValve_nominal) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); @@ -70,6 +68,9 @@ model DomesticWaterHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); + Modelica.Blocks.Sources.Constant conTSetTw(k=TSetTw) + "Temperature setpoint for tempered water supply" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); equation connect(tmv.TTw, TTw) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); @@ -94,6 +95,8 @@ equation annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); connect(genDHW.PHea, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80},{ 110,80}}, color={0,0,127})); + connect(conTSetTw.y, tmv.TSet) + annotation (Line(points={{-79,30},{-2,30},{-2,8}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater and fixture. diff --git a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo index e3b0b84fe17..e85d55ccdde 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo @@ -37,12 +37,6 @@ model HeatPumpWaterHeaterWithTank extent={{-10,-10},{10,10}}, rotation=0, origin={50,6}))); - Modelica.Blocks.Math.Add add - "Gain for control signal controlling source pump" - annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); - Modelica.Blocks.Sources.Constant dTTanHex(k=datWatHea.dTCon_nominal) - "Temperature difference of heat pump condenser leaving water above tank set point" - annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); Fluid.Movers.FlowControlled_m_flow pumHex( inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, @@ -88,6 +82,9 @@ model HeatPumpWaterHeaterWithTank Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") "Electric power required for pumping equipment" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); + Modelica.Blocks.Interfaces.RealOutput QCon_flow + "Actual heat pump heating heat flow rate added to fluid" + annotation (Placement(transformation(extent={{100,10},{120,30}}))); equation connect(heaPum.port_b1, senTemHPOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); @@ -98,12 +95,6 @@ equation {-10,-6}}, color={0,127,255})); connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, {76,0},{110,0}}, color={0,0,127})); - connect(TSetHw, add.u1) annotation (Line(points={{-110,0},{-80,0},{-80,6},{-72, - 6}}, color={0,0,127})); - connect(dTTanHex.y, add.u2) annotation (Line(points={{-79,-30},{-76,-30},{-76, - -6},{-72,-6}}, color={0,0,127})); - connect(heaPum.TSet, add.y) annotation (Line(points={{-12,9},{-20,9},{-20,0},{ - -49,0}}, color={0,0,127})); connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{ 70,40},{70,6},{60,6}}, color={0,127,255})); @@ -127,10 +118,14 @@ equation {-12,90}}, color={0,0,127})); connect(tanTemSen.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, 70},{0,70},{0,78}}, color={0,0,127})); - connect(tanTemSen.port, tanSte.heaPorVol[4]) annotation (Line(points={{-40,72}, - {-46,72},{-46,50},{-50,50}}, color={191,0,0})); connect(pumHex.P, PPum) annotation (Line(points={{39,49},{32,49},{32,-20},{110, -20}}, color={0,0,127})); + connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,9},{20,9},{ + 20,20},{110,20}}, color={0,0,127})); + connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-20,0},{-20,9}, + {-12,9}}, color={0,0,127})); + connect(tanTemSen.port, tanSte.heaPorVol[4]) + annotation (Line(points={{-40,72},{-50,72},{-50,50}}, color={191,0,0})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an diff --git a/Buildings/Experimental/DHC/Loads/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo similarity index 87% rename from Buildings/Experimental/DHC/Loads/DHW/DomesticWaterMixer.mo rename to Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo index 2470d8ebf25..8871166e755 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/DomesticWaterMixer.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo @@ -1,7 +1,7 @@ within Buildings.Experimental.DHC.Loads.DHW; -model DomesticWaterMixer "A model for a domestic water mixer" +model ThermostaticMixingValve + "A model for a thermostatic mixing valve" replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; parameter Real k = 0.1 "Proportional gain of valve controller"; @@ -15,12 +15,9 @@ model DomesticWaterMixer "A model for a domestic water mixer" Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package - Medium = + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" - annotation (Placement(transformation(extent={{80,60},{60,80}}))); Fluid.Actuators.Valves.ThreeWayLinear ValHea( redeclare package Medium = Medium, riseTime=5, @@ -32,18 +29,16 @@ model DomesticWaterMixer "A model for a domestic water mixer" origin={0,0}))); Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = Medium) "Port for hot water supply" - annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); + annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = Medium) "Port for domestic cold water supply" - annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); + annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package - Medium = + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium = Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package - Medium = + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = @@ -51,12 +46,13 @@ model DomesticWaterMixer "A model for a domestic water mixer" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) annotation (Placement(transformation(extent={{56,24},{44,36}}))); + Modelica.Blocks.Interfaces.RealInput TSet + "Temperature setpoint of tempered hot water outlet" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); protected parameter Real uLow = 0.01*mDhw_flow_nominal "Low hysteresis threshold"; parameter Real uHigh = 0.05*mDhw_flow_nominal "High hysteresis threshold"; equation - connect(conTSetCon.y, conPID.u_s) - annotation (Line(points={{59,70},{42,70}}, color={0,0,127})); connect(senTemTw.T, conPID.u_m) annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); connect(ValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, @@ -67,13 +63,13 @@ equation 60},{110,60}}, color={0,0,127})); connect(ValHea.port_1, senTemHw.port_b) annotation (Line(points={{-10, 1.77636e-15},{-10,0},{-20,0}}, color={0,127,255})); - connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-60,0},{ - -60,60},{-100,60}}, - color={0,127,255})); + connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-60,0},{-60, + 40},{-100,40}}, color={0,127,255})); connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); connect(senTemCw.port_a, port_cw) - annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); + annotation (Line(points={{-40,-60},{-70,-60},{-70,-40},{-100,-40}}, + color={0,127,255})); connect(senTemTw.port_b, senFloDhw.port_a) annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); connect(senFloDhw.port_b, port_tw) @@ -83,6 +79,8 @@ equation color={0,0,127})); connect(hysteresis.y, conPID.trigger) annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); + connect(conPID.u_s, TSet) annotation (Line(points={{42,70},{50,70},{50,92},{-94, + 92},{-94,80},{-120,80}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This model is for a domestic water mixer, mixing hot and cold fluid to achieve a specified tempered outlet temperature. @@ -129,14 +127,14 @@ Created valve model. lineColor={0,0,0}, fillPattern=FillPattern.VerticalCylinder, fillColor={192,192,192}, - origin={-78,60}, + origin={-78,40}, rotation=90), Rectangle( extent={{-22,22},{22,-22}}, lineColor={0,0,0}, fillPattern=FillPattern.VerticalCylinder, fillColor={238,46,47}, - origin={-78,60}, + origin={-78,40}, rotation=90), Line( visible=use_inputFilter, @@ -146,14 +144,14 @@ Created valve model. lineColor={0,0,0}, fillPattern=FillPattern.VerticalCylinder, fillColor={192,192,192}, - origin={-78,-60}, + origin={-78,-42}, rotation=90), Rectangle( extent={{-22,22},{22,-22}}, lineColor={0,0,0}, fillPattern=FillPattern.VerticalCylinder, fillColor={28,108,200}, - origin={-78,-60}, + origin={-78,-42}, rotation=90), Rectangle( extent={{-40,22},{40,-22}}, @@ -176,4 +174,4 @@ Created valve model. fillColor={0,127,255}, textString="%name")}), Diagram( coordinateSystem(preserveAspectRatio=false))); -end DomesticWaterMixer; +end ThermostaticMixingValve; diff --git a/Buildings/Experimental/DHC/Loads/DHW/package.order b/Buildings/Experimental/DHC/Loads/DHW/package.order index 76426d661db..ef0b9cb37d8 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/package.order +++ b/Buildings/Experimental/DHC/Loads/DHW/package.order @@ -1,4 +1,4 @@ -DomesticWaterMixer +ThermostaticMixingValve DirectHeatExchangerWaterHeaterWithAuxHeat HeatPumpWaterHeaterWithTank DHWLoad From adf780699a962e2059e17cd4558c414f267b9389 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 5 Sep 2023 15:18:40 -0700 Subject: [PATCH 075/183] Increase nominal hex flow in example with tank --- .../Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 4112b255e1f..55ec3825442 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -51,7 +51,7 @@ model BuildingTimeSeriesWithETSDHWTank annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* - 1.2, + 2, QCon_flow_max=1.2*datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, From 15bd24d9f8c8e7399f4a66b8655f646822fb1614 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 5 Sep 2023 15:20:55 -0700 Subject: [PATCH 076/183] Decrease max heat pump heat flow in example with tank --- .../Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 55ec3825442..47771acb406 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -52,7 +52,7 @@ model BuildingTimeSeriesWithETSDHWTank parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* 2, - QCon_flow_max=1.2*datWatHea.QCon_flow_nominal, + QCon_flow_max=datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, THex_nominal=333.15, From fc104131d3ede3ff423730e3f0a498ee06914bb9 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 6 Sep 2023 07:17:13 -0700 Subject: [PATCH 077/183] Expose hot water and cold water nominal supply temp to tap --- .../Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo | 2 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 3 ++- .../Loads/Combined/BaseClasses/PartialBuildingWithETS.mo | 8 ++++++++ .../Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo | 1 + .../Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo | 2 +- 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index eec23691f15..291c466be12 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -47,7 +47,7 @@ model PartialHeatPumpHeatExchanger final parameter Modelica.Units.SI.Temperature THeaWatRet_nominal= THeaWatSup_nominal - dT_nominal "Heating water return temperature" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature THotWatSup_nominal=49+273.15 + parameter Modelica.Units.SI.Temperature THotWatSup_nominal=336.15 "Hot water supply temperature to fixture" annotation (Dialog(group="Nominal condition", enable=have_hotWat)); parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 7b7b16b8e17..5abfd3ea95f 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -133,7 +133,8 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add annotation (Placement(transformation(extent={{140,-18},{160,2}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHw(k=datWatHea.THex_nominal) "Set point of water leaving heat pump" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHw(k=datWatHea.THex_nominal) + "Set point of water leaving heat pump and in tank" annotation (Placement(transformation(extent={{-200,0},{-180,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") "Actual heat pump heating heat flow rate added to fluid" annotation ( diff --git a/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo index 7ccec02923a..656b400ce4e 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo @@ -13,6 +13,8 @@ model PartialBuildingWithETS final TDisWatMax=datDes.TLooMax, final TChiWatSup_nominal=TChiWatSup_nominal, final THeaWatSup_nominal=THeaWatSup_nominal, + final THotWatSup_nominal=THotWatSup_nominal, + final TColWat_nominal=TColWat_nominal, final dp_nominal=dp_nominal, final COPHeaWat_nominal=COPHeaWat_nominal, final COPHotWat_nominal=COPHotWat_nominal)); @@ -27,6 +29,12 @@ model PartialBuildingWithETS parameter Modelica.Units.SI.Temperature THeaWatSup_nominal=38 + 273.15 "Heating water supply temperature" annotation (Dialog(group="ETS model parameters")); + parameter Modelica.Units.SI.Temperature THotWatSup_nominal=63 + 273.15 + "Hot water supply temperature to fixtures" + annotation (Dialog(group="ETS model parameters", enable=have_hotWat)); + parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 + "Cold water temperature (for hot water production)" + annotation (Dialog(group="ETS model parameters", enable=have_hotWat)); parameter Modelica.Units.SI.Pressure dp_nominal=50000 "Pressure difference at nominal flow rate (for each flow leg)" annotation (Dialog(group="ETS model parameters")); diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo index 16a9419f989..b0e0d6a19fd 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo @@ -29,6 +29,7 @@ model BuildingTimeSeriesWithETS redeclare package MediumBui = Medium, bui(facMul=10), allowFlowReversalSer=true, + THotWatSup_nominal=322.15, filNam="modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos") annotation (Placement(transformation(extent={{40,-20},{60,0}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 47771acb406..659b320b33c 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -29,6 +29,7 @@ model BuildingTimeSeriesWithETSDHWTank redeclare package MediumBui = Medium, bui(facMul=10), allowFlowReversalSer=true, + THotWatSup_nominal=322.15, filNam= "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", datWatHea=datWatHea) @@ -90,7 +91,6 @@ equation file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSWithDHWTank.mos" "Simulate and plot"), experiment( StopTime=864000, - Interval=30, Tolerance=1e-06, __Dymola_Algorithm="Dassl"), Documentation(info=" From 85599ea7ad8e8ca1f431e1ad0e98f582d0c20944 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 6 Sep 2023 07:34:20 -0700 Subject: [PATCH 078/183] Use COP_nominal for DHW heat pump instead of calculating - aligns with direct heat pump implementation --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 2 ++ .../Combined/Subsystems/HeatPumpDHWTank.mo | 11 ++++++++++- .../DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo | 8 +++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 85097919923..0975fd069ec 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -19,6 +19,8 @@ model HeatPumpHeatExchangerDHWTank redeclare final package Medium2 = MediumSer, final have_varFloEva=have_varFloEva, final COP_nominal=COPHotWat_nominal, + TCon_nominal=datWatHea.THex_nominal, + TEva_nominal=TDisWatMin - dT_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, mHw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 5abfd3ea95f..d1471ed79ce 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -19,6 +19,12 @@ model HeatPumpDHWTank parameter Real COP_nominal(final unit="1") "Heat pump COP" annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TCon_nominal + "Condenser outlet temperature used to compute COP_nominal" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TEva_nominal + "Evaporator outlet temperature used to compute COP_nominal" + annotation (Dialog(group="Nominal condition")); parameter Boolean allowFlowReversal1=false "Set to true to allow flow reversal on condenser side" annotation (Dialog(tab="Assumptions"), Evaluate=true); @@ -125,7 +131,10 @@ model HeatPumpDHWTank "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); Loads.DHW.HeatPumpWaterHeaterWithTank heaPumTan(mHw_flow_nominal= - mHw_flow_nominal, datWatHea=datWatHea) + mHw_flow_nominal, datWatHea=datWatHea, + COP_nominal=COP_nominal, + TCon_nominal=TCon_nominal, + TEva_nominal=TEva_nominal) "Heat pump with storage tank for domestic hot water" annotation (Placement(transformation(extent={{0,-20},{20,0}}))); parameter Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea diff --git a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo index e85d55ccdde..e26e6065267 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo @@ -11,6 +11,9 @@ model HeatPumpWaterHeaterWithTank Buildings.Experimental.DHC.Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); + parameter Real COP_nominal(final unit="1") "Heat pump COP at nominal conditions"; + parameter Modelica.Units.SI.Temperature TCon_nominal "Condenser outlet temperature used to compute COP_nominal"; + parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; parameter Real Ti=60 "Integrator time constant of circulation pump controller"; Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package @@ -23,8 +26,11 @@ model HeatPumpWaterHeaterWithTank m2_flow_nominal=mDH_flow_nominal, dTEva_nominal=datWatHea.dTEva_nominal, dTCon_nominal=datWatHea.dTCon_nominal, - use_eta_Carnot_nominal=true, + use_eta_Carnot_nominal=false, etaCarnot_nominal=0.3, + COP_nominal=COP_nominal, + TCon_nominal=TCon_nominal, + TEva_nominal=TEva_nominal, QCon_flow_max = datWatHea.QCon_flow_max, QCon_flow_nominal=datWatHea.QCon_flow_nominal, dp1_nominal=datWatHea.dp1_nominal, From dcdbab773b76953efd120e7c5b75aad03535a219 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 6 Sep 2023 07:41:26 -0700 Subject: [PATCH 079/183] Delete old models --- Buildings/Experimental/DHC/Loads/DHW/DELETE/package.mo | 3 --- Buildings/Experimental/DHC/Loads/DHW/package.order | 1 - 2 files changed, 4 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/DELETE/package.mo diff --git a/Buildings/Experimental/DHC/Loads/DHW/DELETE/package.mo b/Buildings/Experimental/DHC/Loads/DHW/DELETE/package.mo deleted file mode 100644 index d2be3b60979..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/DELETE/package.mo +++ /dev/null @@ -1,3 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -package DELETE "These are DHW models to be deleted" -end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/DHW/package.order b/Buildings/Experimental/DHC/Loads/DHW/package.order index ef0b9cb37d8..41f323805c4 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/package.order +++ b/Buildings/Experimental/DHC/Loads/DHW/package.order @@ -2,7 +2,6 @@ ThermostaticMixingValve DirectHeatExchangerWaterHeaterWithAuxHeat HeatPumpWaterHeaterWithTank DHWLoad -DELETE BaseClasses Examples Data From f2ffb5fe0f750882ae3254541e55440f32053f04 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 6 Sep 2023 07:44:59 -0700 Subject: [PATCH 080/183] Delete old models --- .../BaseClasses/PartialBuildingWFloDis.mo | 490 ------------------ .../DHC/Loads/BaseClasses/package.order | 1 - .../Loads/DHW/BaseClasses/DELETE/package.mo | 4 - .../DHC/Loads/DHW/BaseClasses/package.order | 1 - 4 files changed, 496 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.mo diff --git a/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo b/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo deleted file mode 100644 index e70455e7bd7..00000000000 --- a/Buildings/Experimental/DHC/Loads/BaseClasses/PartialBuildingWFloDis.mo +++ /dev/null @@ -1,490 +0,0 @@ -within Buildings.Experimental.DHC.Loads.BaseClasses; -partial model PartialBuildingWFloDis - "Partial class for building model with flow distribution" - replaceable package Medium=Buildings.Media.Water - constrainedby Modelica.Media.Interfaces.PartialMedium - "Medium in the building distribution system"; - parameter Integer nPorts_aHeaWat=0 - "Number of heating water inlet ports" - annotation (Evaluate=true,Dialog(connectorSizing=true)); - parameter Integer nPorts_bHeaWat=0 - "Number of heating water outlet ports" - annotation (Evaluate=true,Dialog(connectorSizing=true)); - parameter Integer nPorts_aChiWat=0 - "Number of chilled water inlet ports" - annotation (Evaluate=true,Dialog(connectorSizing=true)); - parameter Integer nPorts_bChiWat=0 - "Number of chilled water outlet ports" - annotation (Evaluate=true,Dialog(connectorSizing=true)); - parameter Boolean have_heaWat=false - "Set to true if the building has heating water system" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Boolean have_chiWat=false - "Set to true if the building has chilled water system" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Boolean have_eleHea=false - "Set to true if the building has decentralized electric heating system" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Boolean have_eleCoo=false - "Set to true if the building has decentralized electric cooling system" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Boolean have_fan=false - "Set to true if fan power is computed" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Boolean have_pum=false - "Set to true if pump power is computed" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Boolean have_weaBus=false - "Set to true to use a weather bus" - annotation (Evaluate=true, Dialog(group="Configuration")); - parameter Real facMul(min=Modelica.Constants.eps)=1 - "Multiplier factor" - annotation (Evaluate=true, Dialog(group="Scaling")); - parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; - parameter Boolean allowFlowReversal=false - "= true to allow flow reversal, false restricts to design direction (port_a -> port_b)" - annotation (Dialog(tab="Assumptions"),Evaluate=true); - final parameter Boolean have_heaLoa=have_heaWat or have_eleHea - "Set to true if the building has heating loads" - annotation (Evaluate=true, Dialog(group="Configuration")); - final parameter Boolean have_cooLoa=have_chiWat or have_eleCoo - "Set to true if the building has cooling loads" - annotation (Evaluate=true, Dialog(group="Configuration")); - // IO CONNECTORS - Buildings.BoundaryConditions.WeatherData.Bus weaBus if have_weaBus - "Weather data bus" - annotation (Placement(transformation(extent={{-16,284},{18,316}}), - iconTransformation(extent={{-16,198},{18,230}}))); - Modelica.Fluid.Interfaces.FluidPorts_a ports_aHeaWat[nPorts_aHeaWat]( - redeclare each package Medium=Medium, - each m_flow( - min= - if allowFlowReversal then - -Modelica.Constants.inf - else - 0), - each h_outflow( - start=Medium.h_default, - nominal=Medium.h_default)) if have_heaWat - "Heating water inlet ports" - annotation (Placement(transformation(extent={{-310,-100},{-290,-20}}), - iconTransformation(extent={{-310,-100},{-290,-20}}))); - Modelica.Fluid.Interfaces.FluidPorts_b ports_bHeaWat[nPorts_bHeaWat]( - redeclare each package Medium=Medium, - each m_flow( - max= - if allowFlowReversal then - +Modelica.Constants.inf - else - 0), - each h_outflow( - start=Medium.h_default, - nominal=Medium.h_default)) if have_heaWat - "Heating water outlet ports" - annotation (Placement(transformation(extent={{290,-100},{310,-20}}), - iconTransformation(extent={{290,-100},{310,-20}}))); - Modelica.Fluid.Interfaces.FluidPorts_a ports_aChiWat[nPorts_aChiWat]( - redeclare each package Medium=Medium, - each m_flow( - min= - if allowFlowReversal then - -Modelica.Constants.inf - else - 0), - each h_outflow( - start=Medium.h_default, - nominal=Medium.h_default)) if have_chiWat - "Chilled water inlet ports" - annotation (Placement(transformation(extent={{-310,-300},{-290,-220}}), - iconTransformation(extent={{-310,-220},{-290,-140}}))); - Modelica.Fluid.Interfaces.FluidPorts_b ports_bChiWat[nPorts_bChiWat]( - redeclare each package Medium=Medium, - each m_flow( - max= - if allowFlowReversal then - +Modelica.Constants.inf - else - 0), - each h_outflow( - start=Medium.h_default, - nominal=Medium.h_default)) if have_chiWat - "Chilled water outlet ports" - annotation (Placement(transformation(extent={{290,-300},{310,-220}}), - iconTransformation(extent={{290,-220},{310,-140}}))); - Modelica.Blocks.Interfaces.RealOutput QHea_flow( - final unit="W") if have_heaLoa - "Total heating heat flow rate transferred to the loads (>=0)" - annotation (Placement(transformation(extent={{300,260},{340,300}}), - iconTransformation(extent={{300,240},{340,280}}))); - Modelica.Blocks.Interfaces.RealOutput QCoo_flow( - final unit="W") if have_cooLoa - "Total cooling heat flow rate transferred to the loads (<=0)" - annotation (Placement(transformation(extent={{300,220},{340,260}}), - iconTransformation(extent={{300,200},{340,240}}))); - Modelica.Blocks.Interfaces.RealOutput PHea( - final unit="W") if have_eleHea - "Power drawn by decentralized heating system" - annotation (Placement(transformation(extent={{300,180},{340,220}}), - iconTransformation(extent={{300,160},{340,200}}))); - Modelica.Blocks.Interfaces.RealOutput PCoo( - final unit="W") if have_eleCoo - "Power drawn by decentralized cooling system" - annotation (Placement(transformation(extent={{300,140},{340,180}}), - iconTransformation(extent={{300,120},{340,160}}))); - Modelica.Blocks.Interfaces.RealOutput PFan( - final quantity="Power", - final unit="W") if have_fan - "Power drawn by fan motors" - annotation (Placement(transformation(extent={{300,100},{340,140}}), - iconTransformation(extent={{300,80},{340,120}}))); - Modelica.Blocks.Interfaces.RealOutput PPum( - final quantity="Power", - final unit="W") if have_pum - "Power drawn by pump motors" - annotation (Placement(transformation(extent={{300,60},{340,100}}), - iconTransformation(extent={{300,40},{340,80}}))); - Fluid.BaseClasses.MassFlowRateMultiplier mulHeaWatInl[nPorts_aHeaWat]( - redeclare each final package Medium = Medium, - each final k=1/facMul, - each final allowFlowReversal=allowFlowReversal) if have_heaWat - "Mass flow rate multiplier" - annotation (Placement(transformation(extent={{-280,-70},{-260,-50}}))); - Fluid.BaseClasses.MassFlowRateMultiplier mulChiWatInl[nPorts_aChiWat]( - redeclare each final package Medium = Medium, - each final k=1/facMul, - each final allowFlowReversal=allowFlowReversal) if have_chiWat - "Mass flow rate multiplier" - annotation (Placement(transformation(extent={{-280,-270},{-260,-250}}))); - Fluid.BaseClasses.MassFlowRateMultiplier mulHeaWatOut[nPorts_bHeaWat]( - redeclare each final package Medium = Medium, - each final k=facMul, - each final allowFlowReversal=allowFlowReversal) if have_heaWat - "Mass flow rate multiplier" - annotation (Placement(transformation(extent={{260,-70},{280,-50}}))); - Fluid.BaseClasses.MassFlowRateMultiplier mulChiWatOut[nPorts_bChiWat]( - redeclare each final package Medium = Medium, - each final k=facMul, - each final allowFlowReversal=allowFlowReversal) if have_chiWat - "Mass flow rate multiplier" - annotation (Placement(transformation(extent={{260,-270},{280,-250}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulQHea_flow(u( - final unit="W"), final k=facMul) if have_heaLoa "Scaling" - annotation (Placement(transformation(extent={{270,270},{290,290}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulQCoo_flow(u( - final unit="W"), final k=facMul) if have_cooLoa "Scaling" - annotation (Placement(transformation(extent={{270,230},{290,250}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPHea(u(final - unit="W"), final k=facMul) if have_eleHea "Scaling" - annotation (Placement(transformation(extent={{270,190},{290,210}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPCoo(u(final - unit="W"), final k=facMul) if have_eleCoo "Scaling" - annotation (Placement(transformation(extent={{270,150},{290,170}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPFan(u(final - unit="W"), final k=facMul) if have_fan "Scaling" - annotation (Placement(transformation(extent={{270,110},{290,130}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPPum(u(final - unit="W"), final k=facMul) if have_pum "Scaling" - annotation (Placement(transformation(extent={{270,70},{290,90}}))); - FlowDistribution disFloHea( - redeclare final package Medium = Medium, - final allowFlowReversal=allowFlowReversal, - m_flow_nominal=mHeaWat_flow_nominal, - have_pum=true, - typCtr=Buildings.Experimental.DHC.Loads.BaseClasses.Types.PumpControlType.ConstantHead, - dp_nominal=100000, - nPorts_a1=1, - nPorts_b1=1) if have_heaWat - "Heating water distribution system" - annotation (Placement(transformation(extent={{120,-70},{140,-50}}))); - - FlowDistribution disFloCoo( - redeclare final package Medium = Medium, - final allowFlowReversal=allowFlowReversal, - m_flow_nominal=mChiWat_flow_nominal, - typDis=Buildings.Experimental.DHC.Loads.BaseClasses.Types.DistributionType.ChilledWater, - have_pum=true, - typCtr=Buildings.Experimental.DHC.Loads.BaseClasses.Types.PumpControlType.ConstantHead, - dp_nominal=100000, - nPorts_b1=1, - nPorts_a1=1) if have_chiWat - "Chilled water distribution system" - annotation (Placement(transformation(extent={{120,-270},{140,-250}}))); - - Fluid.FixedResistances.Junction spl( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal*{1,-1,-1}, - dp_nominal=0*{1,1,1}) - annotation (Placement(transformation(extent={{-220,-70},{-200,-50}}))); - Fluid.FixedResistances.Junction mix( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal*{1,-1,1}, - dp_nominal=0*{1,1,1}) - annotation (Placement(transformation(extent={{200,-70},{220,-50}}))); - DHW.BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD genDHW( - TSetHw=TSetHw, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - haveER=true) - annotation (Placement(transformation(extent={{-106,-120},{-86,-100}}))); - Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit="degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-170,-128},{-150,-108}}))); - DHW.BaseClasses.DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit="degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-40,-130},{-20,-110}}))); - Modelica.Blocks.Interfaces.RealOutput PDhw(final unit="W") - if have_eleHea - "Power drawn by decentralized water heating system" annotation (Placement( - transformation(extent={{300,20},{340,60}}), iconTransformation(extent={{ - 300,160},{340,200}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter mulPDhw(u(final - unit="W"), final k=facMul) if have_eleHea "Scaling" - annotation (Placement(transformation(extent={{272,30},{292,50}}))); - Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{40,-130},{20,-110}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{120,-170},{140,-150}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{132,-126},{120,-114}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, offset=1) - annotation (Placement(transformation(extent={{180,-130},{160,-110}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K", displayUnit="degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{300,-120},{340,-80}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{300,-180},{340,-140}}), - iconTransformation(extent={{378,-162},{418,-122}}))); -protected - final parameter Modelica.Units.SI.SpecificHeatCapacity cp_default= - Medium.specificHeatCapacityCp(Medium.setState_pTX( - p=Medium.p_default, - T=Medium.T_default, - X=Medium.X_default)) - "Specific heat capacity of medium at default medium state"; -initial equation - assert( - nPorts_aHeaWat == nPorts_bHeaWat, - "In "+getInstanceName()+": The numbers of heating water inlet ports ("+String( - nPorts_aHeaWat)+") and outlet ports ("+String( - nPorts_bHeaWat)+") must be equal."); - assert( - nPorts_aChiWat == nPorts_bChiWat, - "In "+getInstanceName()+": The numbers of chilled water inlet ports ("+String( - nPorts_aChiWat)+") and outlet ports ("+String( - nPorts_bChiWat)+") must be equal."); -equation - connect(mulQHea_flow.y, QHea_flow) - annotation (Line(points={{292,280},{320,280}}, color={0,0,127})); - connect(mulQCoo_flow.y, QCoo_flow) - annotation (Line(points={{292,240},{320,240}}, color={0,0,127})); - connect(mulPHea.y, PHea) - annotation (Line(points={{292,200},{320,200}}, color={0,0,127})); - connect(mulPCoo.y, PCoo) - annotation (Line(points={{292,160},{320,160}}, color={0,0,127})); - connect(mulPFan.y, PFan) - annotation (Line(points={{292,120},{320,120}}, color={0,0,127})); - connect(mulPPum.y, PPum) - annotation (Line(points={{292,80},{320,80}}, color={0,0,127})); - connect(ports_aChiWat,mulChiWatInl. port_a) - annotation (Line(points={{-300,-260},{-280,-260}}, color={0,127,255})); - connect(ports_aHeaWat,mulHeaWatInl. port_a) - annotation (Line(points={{-300,-60},{-280,-60}}, color={0,127,255})); - connect(mulHeaWatOut.port_b, ports_bHeaWat) - annotation (Line(points={{280,-60},{300,-60}}, color={0,127,255})); - connect(mulChiWatOut.port_b, ports_bChiWat) - annotation (Line(points={{280,-260},{300,-260}}, color={0,127,255})); - connect(mulChiWatOut[1].port_a, disFloCoo.port_b) - annotation (Line(points={{260,-260},{140,-260}}, color={0,127,255})); - connect(mulChiWatInl[1].port_b, disFloCoo.port_a) - annotation (Line(points={{-260,-260},{120,-260}}, color={0,127,255})); - connect(mulHeaWatInl[1].port_b, spl.port_1) - annotation (Line(points={{-260,-60},{-220,-60}}, color={0,127,255})); - connect(mix.port_2, mulHeaWatOut[1].port_a) - annotation (Line(points={{220,-60},{260,-60}}, color={0,127,255})); - connect(disFloHea.port_b, mix.port_1) - annotation (Line(points={{140,-60},{200,-60}}, color={0,127,255})); - connect(disFloHea.port_a, spl.port_2) - annotation (Line(points={{120,-60},{-200,-60}}, color={0,127,255})); - connect(genDHW.port_dhr, mix.port_3) annotation (Line(points={{-104,-100},{-120, - -100},{-120,-140},{210,-140},{210,-70}}, color={0,127,255})); - connect(spl.port_3, genDHW.port_dhs) annotation (Line(points={{-210,-70},{-210, - -80},{-100,-80},{-100,-100}}, color={0,127,255})); - connect(souDcw.ports[1], genDHW.port_cw) annotation (Line(points={{-150,-116}, - {-140,-116},{-140,-110},{-106,-110}}, color={0,127,255})); - connect(tmv.port_cw, souDcw.ports[2]) annotation (Line(points={{-40,-126},{-140, - -126},{-140,-120},{-150,-120}}, color={0,127,255})); - connect(genDHW.port_hw, tmv.port_hw) annotation (Line(points={{-86,-110},{-60, - -110},{-60,-114},{-40,-114}}, color={0,127,255})); - connect(genDHW.PEle, mulPDhw.u) annotation (Line(points={{-85.4,-106},{-60,-106}, - {-60,40},{270,40}}, color={0,0,127})); - connect(mulPDhw.y, PDhw) - annotation (Line(points={{294,40},{320,40}}, color={0,0,127})); - connect(PDhw, PDhw) - annotation (Line(points={{320,40},{320,40}}, color={0,0,127})); - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{-20,-120},{20,-120}}, color={0,127,255})); - connect(gaiDhw.u, sine.y) - annotation (Line(points={{133.2,-120},{159,-120}}, color={0,0,127})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{119.4,-120},{80, - -120},{80,-112},{42,-112}}, color={0,0,127})); - connect(sinDhw.m_flow_in, watCon.u) annotation (Line(points={{42,-112},{80,-112}, - {80,-160},{118,-160}}, color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{141,-160},{320,-160}}, color={0,0,127})); - connect(tmv.TTw, TTw) annotation (Line(points={{-19,-112},{0,-112},{0,-100},{320, - -100}}, color={0,0,127})); - annotation ( - Documentation( - info=" -

-Partial model to be used for modeling the thermal loads on an energy -transfer station or a dedicated plant. -Models extending this class are typically used in conjunction with - -Buildings.Experimental.DHC.Loads.BaseClasses.FlowDistribution -and models extending - -Buildings.Experimental.DHC.Loads.BaseClasses.PartialTerminalUnit -as described in the schematics here under. -The fluid ports represent the connection between the production system and -the building distribution system. -

-

Scaling

-

-Scaling is implemented by means of a multiplier factor facMul. -Each extensive quantity (mass and heat flow rate, electric power) -flowing out through fluid ports, or connected to an -output connector is multiplied by facMul. -Each extensive quantity (mass and heat flow rate, electric power) -flowing in through fluid ports, or connected to an -input connector is multiplied by 1/facMul. -This allows modeling, with a single instance, -multiple identical buildings served by the same energy transfer station. -

-

Examples

-

-See various use cases in - -Buildings.Experimental.DHC.Loads.BaseClasses.Examples. -

-

-
-\"image\" -

-", -revisions=" -
    -
  • -December 21, 2020, by Antoine Gautier:
    -Added multiplier factor.
    -This is for issue 2291. -
  • -
  • -February 21, 2020, by Antoine Gautier:
    -First implementation. -
  • -
-"), - Icon( - coordinateSystem( - extent={{-300,-300},{300,300}}, - preserveAspectRatio=false), - graphics={ - Rectangle( - extent={{-300,-300},{300,300}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{20,-188},{300,-172}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={255,0,0}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-300,-172},{-20,-188}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={0,0,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{18,-38},{46,-10}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-150,-328},{150,-368}}, - textColor={0,0,255}, - textString="%name"), - Rectangle( - extent={{20,-52},{300,-68}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={0,0,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-300,-68},{-20,-52}}, - lineColor={0,0,255}, - pattern=LinePattern.None, - fillColor={255,0,0}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-180,180},{174,-220}}, - lineColor={150,150,150}, - fillPattern=FillPattern.Sphere, - fillColor={255,255,255}), - Rectangle( - extent={{36,42},{108,114}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-124,42},{-52,114}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-126,-122},{-54,-50}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{40,-122},{112,-50}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{0,264},{-218,164},{220,164},{0,264}}, - lineColor={95,95,95}, - smooth=Smooth.None, - fillPattern=FillPattern.Solid, - fillColor={95,95,95})}), - Diagram( - coordinateSystem( - preserveAspectRatio=false, - extent={{-300,-300},{300,300}}))); -end PartialBuildingWFloDis; diff --git a/Buildings/Experimental/DHC/Loads/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/BaseClasses/package.order index c8884970fe6..52d611fc112 100644 --- a/Buildings/Experimental/DHC/Loads/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/BaseClasses/package.order @@ -1,7 +1,6 @@ ConstraintViolation FlowDistribution PartialBuilding -PartialBuildingWFloDis PartialBuildingWithPartialETS PartialTerminalUnit SimpleRoomODE diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.mo deleted file mode 100644 index 1cc1c8b6ec7..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.mo +++ /dev/null @@ -1,4 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.BaseClasses; -package DELETE "These models are outdated" - -end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order index eb2a1333c46..ce75a1a8901 100644 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order @@ -1,2 +1 @@ PartialFourPortDHW -DELETE From 591ba2b6aba5027863951f47f6772fa5dd72f427 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 7 Sep 2023 12:27:31 -0700 Subject: [PATCH 081/183] Initial cleanup hot water package --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 10 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 7 +- .../BuildingTimeSeriesWithETSWithDHWTank.mo | 3 +- .../BuildingTimeSeriesWithETSDHWTank.mo | 2 +- .../Experimental/DHC/Loads/DHW/package.mo | 10 - .../BaseClasses/PartialFourPortDHW.mo | 37 +++ .../DHC/Loads/HotWater/BaseClasses/package.mo | 12 + .../Loads/HotWater/BaseClasses/package.order | 1 + .../Data/GenericHeatPumpWaterHeater.mo | 57 +++++ .../HotWater/Data/HeatPumpWaterHeater.mo | 55 +++++ .../DHC/Loads/HotWater/Data/package.mo | 4 + .../DHC/Loads/HotWater/Data/package.order | 2 + .../DirectHeatExchangerWithAuxHeat.mo | 108 +++++++++ .../HotWater/Examples/BaseClasses/package.mo | 4 + .../Examples/BaseClasses/package.order | 1 + .../BaseClasses/partialHeaterAndFixture.mo | 93 ++++++++ ...ndFixtureDirectHeatExchangerWithAuxHeat.mo | 33 +++ .../HeaterAndFixtureHeatPumpWithTank.mo | 46 ++++ .../DHC/Loads/HotWater/Examples/package.mo | 14 ++ .../DHC/Loads/HotWater/Examples/package.order | 3 + .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 214 ++++++++++++++++++ .../Loads/HotWater/ThermostaticMixingValve.mo | 179 +++++++++++++++ .../DHC/Loads/HotWater/WaterDraw.mo | 73 ++++++ .../DHC/Loads/HotWater/package.mo | 13 ++ .../DHC/Loads/HotWater/package.order | 7 + .../Experimental/DHC/Loads/package.order | 2 +- 26 files changed, 969 insertions(+), 21 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/package.order create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/package.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/package.order diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 0975fd069ec..0a4fa065e8c 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -28,7 +28,7 @@ model HeatPumpHeatExchangerDHWTank datWatHea=datWatHea) if have_hotWat "Subsystem for hot water production" annotation (Placement(transformation(extent={{32,24},{52,44}}))); - parameter Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea + parameter Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{36,48},{48,60}}))); Fluid.Sources.MassFlowSource_T sinDHW( @@ -39,7 +39,7 @@ model HeatPumpHeatExchangerDHWTank Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) if have_hotWat "Convert to sink" annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); - Loads.DHW.ThermostaticMixingValve tmv( + Loads.HotWater.ThermostaticMixingValve tmv( redeclare package Medium = MediumBui, mDhw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), @@ -83,15 +83,15 @@ equation {-76,68},{-70,68}}, color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); - connect(tmv.port_tw, sinDHW.ports[1]) annotation (Line(points={{-40,59},{-45, + connect(tmv.port_tem, sinDHW.ports[1]) annotation (Line(points={{-40,59},{-45, 59},{-45,60},{-48,60}}, color={0,127,255})); connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-40,-10},{ -12,-10},{-12,-6}}, color={0,127,255})); connect(dcwSpl.port_3, proHotWat.port_a1) annotation (Line(points={{-2,4},{0,4},{0,28},{32,28}}, color={0,127,255})); - connect(dcwSpl.port_2, tmv.port_cw) annotation (Line(points={{-12,14},{-12, + connect(dcwSpl.port_2, tmv.port_col) annotation (Line(points={{-12,14},{-12, 54.6},{-20,54.6}}, color={0,127,255})); - connect(proHotWat.port_b1, tmv.port_hw) annotation (Line(points={{32,40},{0, + connect(proHotWat.port_b1, tmv.port_hot) annotation (Line(points={{32,40},{0, 40},{0,63.4},{-20,63.4}}, color={0,127,255})); connect(tmv.TSet, delT.u1) annotation (Line(points={{-18,67.8},{-12,67.8},{ -12,68},{-8,68},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index d1471ed79ce..55641d5f379 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -130,14 +130,15 @@ model HeatPumpDHWTank Buildings.Controls.OBC.CDL.Reals.Multiply floEva "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); - Loads.DHW.HeatPumpWaterHeaterWithTank heaPumTan(mHw_flow_nominal= - mHw_flow_nominal, datWatHea=datWatHea, + Loads.HotWater.HeatPumpWithTank heaPumTan( + mHw_flow_nominal=mHw_flow_nominal, + datWatHea=datWatHea, COP_nominal=COP_nominal, TCon_nominal=TCon_nominal, TEva_nominal=TEva_nominal) "Heat pump with storage tank for domestic hot water" annotation (Placement(transformation(extent={{0,-20},{20,0}}))); - parameter Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea + parameter Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo index a7c66c475f7..f8f989cf390 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -9,6 +9,7 @@ model BuildingTimeSeriesWithETSWithDHWTank QHeaWat_flow_nominal=QHea_flow_nominal, QHotWat_flow_nominal=QHot_flow_nominal, datWatHea=datWatHea)); - parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" + parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea + "Performance data" annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); end BuildingTimeSeriesWithETSWithDHWTank; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 659b320b33c..56db25a1602 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -50,7 +50,7 @@ model BuildingTimeSeriesWithETSDHWTank Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) "Heating water supply temperature set point - Minimum value" annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); - parameter DHW.Data.GenericHeatPumpWaterHeater datWatHea( + parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* 2, QCon_flow_max=datWatHea.QCon_flow_nominal, diff --git a/Buildings/Experimental/DHC/Loads/DHW/package.mo b/Buildings/Experimental/DHC/Loads/DHW/package.mo deleted file mode 100644 index 65a6af8113e..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/package.mo +++ /dev/null @@ -1,10 +0,0 @@ -within Buildings.Experimental.DHC.Loads; -package DHW "Package of models for DHW loads served by district heating" - extends Modelica.Icons.VariantsPackage; - -annotation (preferredView="info", Documentation(info=" -

-This package contains models for building domestic hot water loads served by a district heating network. -

-")); -end DHW; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo new file mode 100644 index 00000000000..b2d97446d96 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -0,0 +1,37 @@ +within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; +partial model PartialFourPortDHW + "A partial model for domestic water heating" + extends Buildings.Fluid.Interfaces.PartialFourPort( + redeclare final package Medium1=Medium, + redeclare final package Medium2=Medium); + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal "Nominal mass flow rate of district heating water"; + Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") + "Electric power required for heating equipment" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Modelica.Blocks.Interfaces.RealInput TSetHw + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" + annotation (Placement(transformation(extent={{60,80},{80,100}}))); +protected + parameter Boolean have_PEle "Flag that specifies whether electric power is required for water heating"; +equation + connect(zero.y,PHea) + annotation (Line(points={{81,90},{82,90},{82,0},{110,0}}, + color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This partial model can be used for different domestic hot water generation methods. +

+", revisions=" +
    +
  • +September 29, 2022 by Dre Helmns:
    +Created partial model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end PartialFourPortDHW; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.mo new file mode 100644 index 00000000000..61962d052f2 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.mo @@ -0,0 +1,12 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +package BaseClasses "Package with base classes that are used by multiple models" + extends Modelica.Icons.BasesPackage; + +annotation (Documentation(info=" +

+This package contains base classes that are used to construct the classes in + +Buildings.Experimental.DHC.Loads.Heating.DHW. +

+")); +end BaseClasses; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order new file mode 100644 index 00000000000..ce75a1a8901 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order @@ -0,0 +1 @@ +PartialFourPortDHW diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo new file mode 100644 index 00000000000..62ccbee0bfc --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo @@ -0,0 +1,57 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Data; +record GenericHeatPumpWaterHeater + "Equipment specifications for a generic heat pump water heater" + parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = TTan_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; + parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; + parameter Modelica.Units.SI.PressureDifference dp2_nominal = 5000 "Pressure drop across evaporator"; + parameter Integer nSeg(min=4) = 5 "Number of volume segments"; + + annotation (preferredView="info",Documentation(info=" +

+This record corresponds to a generic heat pump water heater. +

+", revisions=" +
    +
  • +November 22, 2022 by Dre Helmns:
    +Created record. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + origin={0,-25}, + lineColor={64,64,64}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-100.0,-75.0},{100.0,75.0}}, + radius=25.0), + Line( + origin={0,-25}, + points={{0.0,75.0},{0.0,-75.0}}, + color={64,64,64}), + Line( + points={{-100,0},{100,0}}, + color={64,64,64}), + Line( + origin={0,-50}, + points={{-100.0,0.0},{100.0,0.0}}, + color={64,64,64}), + Text( + lineColor={0,0,255}, + extent={{-150,60},{150,100}}, + textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); +end GenericHeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo new file mode 100644 index 00000000000..ce06822d623 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo @@ -0,0 +1,55 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Data; +record HeatPumpWaterHeater + "Equipment specifications for a typical heat pump water heater" + parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; + parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; + parameter Modelica.Units.SI.Length dIns = 0.508 "Thickness of insulation"; + parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; + parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; + parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; + parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; + parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; + parameter Integer nSeg(min=4) = 5 "Number of volume segments"; + + annotation (preferredView="info",Documentation(info=" +

+This record corresponds to a 50-gallon Rheem or A.O. Smith heat pump water heater that would commonly be used in a single apartment unit of a multifamily residential building. +

+", revisions=" +
    +
  • +November 22, 2022 by Dre Helmns:
    +Created record. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + origin={0,-25}, + lineColor={64,64,64}, + fillColor={255,215,136}, + fillPattern=FillPattern.Solid, + extent={{-100.0,-75.0},{100.0,75.0}}, + radius=25.0), + Line( + origin={0,-25}, + points={{0.0,75.0},{0.0,-75.0}}, + color={64,64,64}), + Line( + points={{-100,0},{100,0}}, + color={64,64,64}), + Line( + origin={0,-50}, + points={{-100.0,0.0},{100.0,0.0}}, + color={64,64,64}), + Text( + lineColor={0,0,255}, + extent={{-150,60},{150,100}}, + textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); +end HeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo new file mode 100644 index 00000000000..6da55e59e1d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo @@ -0,0 +1,4 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +package Data "Package for data related to hot water generation" + +end Data; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order new file mode 100644 index 00000000000..95fdcdc786b --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order @@ -0,0 +1,2 @@ +HeatPumpWaterHeater +GenericHeatPumpWaterHeater diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo new file mode 100644 index 00000000000..be56210deec --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -0,0 +1,108 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +model DirectHeatExchangerWithAuxHeat + "A model for generating hot water using a district heat exchanger and supplemental electric resistance" + extends + Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( + final have_PEle=have_eleHea); + parameter Modelica.Units.SI.Efficiency eps(min=0,max=1) = 0.8 "Heat exchanger effectiveness"; + parameter Boolean have_eleHea = true "True if has auxiliary electric heater"; + parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for electric heater (positive)" + annotation(Dialog(enable=have_eleHea)); + + Buildings.Fluid.HeatExchangers.Heater_T heaEle( + redeclare package Medium = Medium, + m_flow_nominal=mHot_flow_nominal, + dp_nominal=dpEle_nominal, + QMax_flow=QMax_flow) + if have_eleHea == true "Supplemental electric resistance domestic hot water heater" + annotation (Placement(transformation(extent={{10,16},{30,-4}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) + "Temperature sensor for hot water supply" + annotation (Placement(transformation(extent={{60,-4},{80,16}}))); + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mHot_flow_nominal, + m2_flow_nominal=mDis_flow_nominal, + dp1_nominal=dpHot_nominal, + dp2_nominal=dpDis_nominal, + eps=eps) "Domestic hot water heater heat exchanger" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) + "Temperature sensor for hot water leaving heat exchanger" + annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); + parameter Modelica.Units.SI.PressureDifference dpHot_nominal=0 + "Pressure difference in heat exchanger on hot water side"; + parameter Modelica.Units.SI.PressureDifference dpDis_nominal=0 + "Pressure difference in heat exchanger on district water side"; + parameter Modelica.Units.SI.PressureDifference dpEle_nominal=0 + "Pressure difference in electric reheater for hot water"; + Modelica.Blocks.Interfaces.RealOutput THexOut + "Temperature of hot water leaving heat exchanger" + annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); +protected + Fluid.FixedResistances.LosslessPipe pip( + redeclare final package Medium = Medium, + final m_flow_nominal=mHot_flow_nominal, + final show_T=false) if have_eleHea == false "Pipe without electric resistance" + annotation (Placement(transformation(extent={{10,44},{30,24}}))); + +equation + connect(senTemHexOut.port_a, hex.port_b1) + annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); + connect(senTemHexOut.port_b, heaEle.port_a) + annotation (Line(points={{-20,6},{10,6}}, color={0,127,255})); + connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{0, + 6},{0,34},{10,34}}, color={0,127,255})); + connect(heaEle.port_b, senTemHot.port_a) + annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); + connect(pip.port_b, senTemHot.port_a) annotation (Line(points={{30,34},{40,34}, + {40,6},{60,6}}, color={0,127,255})); + connect(senTemHot.port_b, port_b1) annotation (Line(points={{80,6},{90,6},{90, + 60},{100,60}}, color={0,127,255})); + connect(port_a1, hex.port_a1) + annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); + connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-2},{40,-2},{40,-20}, + {90,-20},{90,0},{110,0}}, color={0,0,127})); + connect(TSetHw,heaEle. TSet) annotation (Line(points={{-110,0},{-90,0},{-90, + -20},{0,-20},{0,-2},{8,-2}}, + color={0,0,127})); + connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, + -60}}, color={0,127,255})); + connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, + -6}}, color={0,127,255})); + connect(senTemHexOut.T, THexOut) annotation (Line(points={{-30,17},{-30,18},{ + -12,18},{-12,-22},{96,-22},{96,-20},{110,-20}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This model is an example of a domestic hot water (DHW) substation for a +low-temperature district heating (LTDH) network. It includes preheating by the +district and optional electric resistance to bring the temperature to setpoint. +

+

+For more info, please see Fig. 5 in Evaluations of different domestic hot water +preparing methods with ultra-low-temperature district heating by X. Yang, +H. Li, and S. Svendsen at +doi.org/10.1016/j.energy.2016.04.109. +

+", revisions=" +
    +
  • +June 16, 2022 by Dre Helmns:
    +Created generation model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), Line( + points={{-80,0},{-70,0},{-60,20},{-40,-20},{-20,20},{0,-20},{20,20},{ + 40,-20},{60,20},{70,0},{80,0}}, + color={238,46,47}, + thickness=1)}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end DirectHeatExchangerWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo new file mode 100644 index 00000000000..33a3a55fecc --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo @@ -0,0 +1,4 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Examples; +package BaseClasses "Base classes for example models" + extends Modelica.Icons.BasesPackage; +end BaseClasses; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order new file mode 100644 index 00000000000..ebb8f6f5716 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order @@ -0,0 +1 @@ +partialHeaterAndFixture diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo new file mode 100644 index 00000000000..82a68d0754b --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -0,0 +1,93 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses; +model partialHeaterAndFixture + "Partial base class for heater and fixture examples" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.Temperature TSetHot = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TDis = 273.15+30 "Temperature of water supply from district"; + parameter Modelica.Units.SI.Temperature TSetTem = 273.15+43 "Temperature setpoint of tempered water supply to fixture"; + parameter Modelica.Units.SI.Temperature TCol = 273.15+10 "Temperature of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal = 1 "Nominal mass flow rate of district water"; + parameter Modelica.Units.SI.MassFlowRate mTem_flow_nominal = 1 "Nominal mass flow rate of tempered water to fixture"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; + + Buildings.Fluid.Sources.Boundary_pT souCol( + redeclare package Medium = Medium, + T(displayUnit="degC") = TCol, + nPorts=1) "Source of domestic cold water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={10,-50}))); + ThermostaticMixingValve tmv( + redeclare package Medium = Medium, + mTem_flow_nominal=mTem_flow_nominal, + dpValve_nominal=dpValve_nominal) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Modelica.Blocks.Interfaces.RealOutput TTem(final unit="K", displayUnit="degC") + "Temperature of the outlet tempered water" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Fluid.Sources.MassFlowSource_T souDis( + redeclare package Medium = Medium, + m_flow=mDis_flow_nominal, + T(displayUnit="degC") = TDis) + "Source of district network water" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-30,-50}))); + Modelica.Blocks.Sources.Constant conTSetHot(k=TSetHot) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + WaterDraw loa(redeclare package Medium = Medium, mTem_flow_nominal= + mTem_flow_nominal) "Tempered water draw" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Modelica.Blocks.Sources.CombiTimeTable sch( + tableOnFile=true, + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) + "Domestic hot water fixture draw fraction schedule" + annotation (Placement(transformation(extent={{100,20},{80,40}}))); + + Fluid.Sources.Boundary_pT sinDis(redeclare package Medium = Medium, T( + displayUnit="degC")) "Sink of district network water" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-70,-50}))); + Modelica.Blocks.Interfaces.RealOutput PEle + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); + Modelica.Blocks.Sources.Constant conTSetTem(k=TSetTem) + "Temperature setpoint for tempered water supply" + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); +equation + connect(tmv.TTem, TTem) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, + color={0,0,127})); + connect(souCol.ports[1], tmv.port_col) annotation (Line(points={{10,-40},{10,-20}, + {-10,-20},{-10,-4},{0,-4}}, + color={0,127,255})); + connect(tmv.port_tem, loa.port_tw) + annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); + connect(loa.sch, sch.y[1]) + annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); + connect(conTSetTem.y, tmv.TSet) + annotation (Line(points={{-79,30},{-2,30},{-2,8}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This is an example of a domestic water heater and fixture. +

+", revisions=" +
    +
  • +October 20, 2022 by Dre Helmns:
    +Created example. +
  • +
+"),experiment( + StopTime=864000, + Interval=1, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl")); +end partialHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo new file mode 100644 index 00000000000..006163ef103 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -0,0 +1,33 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Examples; +model HeaterAndFixtureDirectHeatExchangerWithAuxHeat + extends Modelica.Icons.Example; + extends BaseClasses.partialHeaterAndFixture( + souCol(nPorts=2), + souDis(nPorts=1), + sinDis(nPorts=1)); + DirectHeatExchangerWithAuxHeat gen( + redeclare package Medium = Medium, + mHot_flow_nominal=mHot_flow_nominal, + mDis_flow_nominal=mDis_flow_nominal) + "Hot water generated by heat exchanger and auxiliary heat" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); +equation + + connect(gen.port_b1, tmv.port_hot) annotation (Line(points={{-30,6},{-10,6},{ + -10,4},{0,4}}, color={0,127,255})); + connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, + {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); + connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20, + -6},{-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); + connect(gen.port_b2, sinDis.ports[1]) + annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); + connect(conTSetHot.y, gen.TSetHw) + annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); + connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-20,0},{-20,80},{ + 110,80}}, color={0,0,127})); + annotation (experiment( + StopTime=86400, + Interval=1, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl")); +end HeaterAndFixtureDirectHeatExchangerWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo new file mode 100644 index 00000000000..b39acf56ea5 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -0,0 +1,46 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Examples; +model HeaterAndFixtureHeatPumpWithTank + extends Modelica.Icons.Example; + extends Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses.partialHeaterAndFixture( + souCol(nPorts=2), + souDis(nPorts=1), + sinDis(nPorts=1)); + + HeatPumpWithTank gen( + redeclare package Medium = Medium, + mHot_flow_nominal=mHot_flow_nominal, + mDis_flow_nominal=mDis_flow_nominal, + datWatHea=datWatHea, + COP_nominal=2.3, + TCon_nominal=datWatHea.THex_nominal, + TEva_nominal=TDis + 5) "Heat pump water heater with tank" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea( + mHex_flow_nominal=1.5, + QCon_flow_max=60000, + QCon_flow_nominal=50000, + TTan_nominal=(TSetHot + TCol)/2, + THex_nominal=TSetHot + 3, + dTCon_nominal=datWatHea.THex_nominal - datWatHea.TTan_nominal) + "Data for heat pump water heater with tank" + annotation (Placement(transformation(extent={{-46,16},{-36,26}}))); +equation + + connect(gen.port_b1, tmv.port_hot) annotation (Line(points={{-30,6},{-10,6},{-10, + 4},{0,4}}, color={0,127,255})); + connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, + {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); + connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20,-6}, + {-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); + connect(gen.port_b2, sinDis.ports[1]) + annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); + connect(conTSetHot.y, gen.TSetHw) + annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); + connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, + 80}}, color={0,0,127})); + annotation (experiment( + StopTime=86400, + Interval=1, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl")); +end HeaterAndFixtureHeatPumpWithTank; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.mo new file mode 100644 index 00000000000..c48074dd1fb --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.mo @@ -0,0 +1,14 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +package Examples "Example implementations of district-integrated DHW models" + extends Modelica.Icons.ExamplesPackage; + + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains a collection of domestic hot water (DHW) models +to demonstrate how these models might be used in district heating systems. +

+")); +end Examples; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order new file mode 100644 index 00000000000..7d42afb761b --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order @@ -0,0 +1,3 @@ +HeaterAndFixtureDirectHeatExchangerWithAuxHeat +HeaterAndFixtureHeatPumpWithTank +BaseClasses diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo new file mode 100644 index 00000000000..51176d381cd --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -0,0 +1,214 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +model HeatPumpWithTank + "A model for generating hot water using a heat pump water heater and local storage tank" + extends + Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( + final have_PEle=true, mDis_flow_nominal=heaPum.QEva_flow_nominal/ + cp2_default/heaPum.dTEva_nominal); + constant Modelica.Units.SI.SpecificHeatCapacity cp2_default= + Medium.specificHeatCapacityCp(Medium.setState_pTX(p=Medium.p_default, + T=Medium.T_default)) "Specific heat capacity of the fluid"; + parameter + Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater + datWatHea "Performance data" + annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); + parameter Real COP_nominal(final unit="1") "Heat pump COP at nominal conditions"; + parameter Modelica.Units.SI.Temperature TCon_nominal "Condenser outlet temperature used to compute COP_nominal"; + parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; + parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; + parameter Real Ti=60 "Integrator time constant of circulation pump controller"; + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) + "Temperature sensor for hot water supply" + annotation (Placement(transformation(extent={{-20,44},{0,64}}))); + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=datWatHea.mHex_flow_nominal, + m2_flow_nominal=mDis_flow_nominal, + dTEva_nominal=datWatHea.dTEva_nominal, + dTCon_nominal=datWatHea.dTCon_nominal, + use_eta_Carnot_nominal=false, + etaCarnot_nominal=0.3, + COP_nominal=COP_nominal, + TCon_nominal=TCon_nominal, + TEva_nominal=TEva_nominal, + QCon_flow_max = datWatHea.QCon_flow_max, + QCon_flow_nominal=datWatHea.QCon_flow_nominal, + dp1_nominal=datWatHea.dp1_nominal, + dp2_nominal=datWatHea.dp2_nominal) + "Domestic hot water heater" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHeaPumOut(redeclare package Medium = + Medium, m_flow_nominal=datWatHea.mHex_flow_nominal) + "Temperature of water leaving heat pump" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={50,6}))); + Fluid.Movers.FlowControlled_m_flow pumHex( + inputType=Buildings.Fluid.Types.InputType.Continuous, + redeclare package Medium = Medium, + m_flow_nominal=datWatHea.mHex_flow_nominal, + riseTime=10, + massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) + "Pump with m_flow input" + annotation (Placement(transformation(extent={{60,30},{40,50}}))); + Fluid.Storage.StratifiedEnhancedInternalHex + tanSte( + T_start=datWatHea.TTan_nominal, + energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, + redeclare package Medium = Medium, + redeclare package MediumHex = Medium, + hTan=datWatHea.hTan, + dIns=datWatHea.dIns, + VTan=datWatHea.VTan, + nSeg=datWatHea.nSeg, + hHex_a=datWatHea.hHex_a, + hHex_b=datWatHea.hHex_b, + Q_flow_nominal=datWatHea.QTan_flow_nominal, + TTan_nominal=datWatHea.TTan_nominal, + THex_nominal=datWatHea.THex_nominal, + mHex_flow_nominal=datWatHea.mHex_flow_nominal, + show_T=true, + m_flow_nominal=mHot_flow_nominal) + "Tank with steady-state heat exchanger balance" + annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); + Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) + annotation (Placement(transformation(extent={{100,30},{80,50}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemTan + "Temperature of the hot water tank" + annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); + Controls.OBC.CDL.Reals.MultiplyByParameter + dTTanHex2(k=datWatHea.mHex_flow_nominal) + "Temperature setpoint for domestic hot water supply from heater" + annotation (Placement(transformation(extent={{20,80},{40,100}}))); + Controls.OBC.CDL.Reals.PID conPI( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + k=k, + Ti=Ti) + annotation (Placement(transformation(extent={{-10,80},{10,100}}))); + Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") + "Electric power required for pumping equipment" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Modelica.Blocks.Interfaces.RealOutput QCon_flow + "Actual heat pump heating heat flow rate added to fluid" + annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); +equation + connect(heaPum.port_b1, senTemHeaPumOut.port_a) + annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); + connect(senTemHot.port_b, port_b1) annotation (Line(points={{0,54},{20,54},{20, + 60},{100,60}}, color={0,127,255})); + connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-20,-60}, + {-20,-6},{-10,-6}}, color={0,127,255})); + connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{82,-14}, + {82,0},{110,0}}, color={0,0,127})); + connect(pumHex.port_a, senTemHeaPumOut.port_b) annotation (Line(points={{60,40}, + {70,40},{70,6},{60,6}}, color={0,127,255})); + connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{-30, + 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); + connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, + 20},{-10,20},{-10,6}}, color={0,127,255})); + connect(tanSte.port_a, senTemHot.port_a) annotation (Line(points={{-40,50},{-30, + 50},{-30,54},{-20,54}}, color={0,127,255})); + connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, + 60},{-100,60}}, color={0,127,255})); + connect(bou.ports[1], senTemHeaPumOut.port_b) annotation (Line(points={{80,40}, + {70,40},{70,6},{60,6}}, color={0,127,255})); + connect(dTTanHex2.y, pumHex.m_flow_in) + annotation (Line(points={{42,90},{50,90},{50,52}}, color={0,0,127})); + connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-6},{20,-6},{20, + -60},{100,-60}}, color={0,127,255})); + connect(conPI.y, dTTanHex2.u) + annotation (Line(points={{12,90},{18,90}}, color={0,0,127})); + connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,90}, + {-12,90}}, color={0,0,127})); + connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, + 70},{0,70},{0,78}}, color={0,0,127})); + connect(pumHex.P, PPum) annotation (Line(points={{39,49},{30,49},{30,-40},{110, + -40}}, color={0,0,127})); + connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,9},{11,4},{26, + 4},{26,-20},{110,-20}}, + color={0,0,127})); + connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-20,0},{-20,9}, + {-12,9}}, color={0,0,127})); + connect(senTemTan.port, tanSte.heaPorVol[4]) + annotation (Line(points={{-40,72},{-50,72},{-50,50}}, color={191,0,0})); + annotation (preferredView="info",Documentation(info=" +

+This model is an example of a domestic hot water (DHW) substation for an +ultra-low-temperature district heating (ULTDH) network. It includes a micro heat +pump and storage tank with direct thermostatic mixing rather than heat exchange. +

+

+For more info, please see Fig. 3 in Evaluations of different domestic hot water +preparing methods with ultra-low-temperature district heating by X. Yang, +H. Li, and S. Svendsen at +doi.org/10.1016/j.energy.2016.04.109. +

+", revisions=" +
    +
  • +July 7, 2022 by Dre Helmns:
    +Created generation model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-20,-60},{20,-40}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-20,22},{20,-48}}, + lineColor={175,175,175}, + lineThickness=1, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-20,10},{20,30}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-20,50},{20,20}}, + lineColor={0,0,0}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-20,40},{20,60}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line( + points={{-20,50},{-20,-50}}, + color={95,95,95}, + thickness=1), + Line( + points={{20,50},{20,-50}}, + color={95,95,95}, + thickness=1), + Polygon( + points={{-140,86},{-140,86}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.CrossDiag), + Polygon( + points={{20,40},{18,38},{14,36},{8,34},{8,26},{14,28},{18,30},{20,32}, + {20,40}}, + lineColor={95,95,95}, + lineThickness=0.5, + fillColor={0,0,0}, + fillPattern=FillPattern.CrossDiag)}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end HeatPumpWithTank; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo new file mode 100644 index 00000000000..c0920cea534 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -0,0 +1,179 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +model ThermostaticMixingValve + "A model for a thermostatic mixing valve" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.MassFlowRate mTem_flow_nominal "Nominal tempered water flow rate"; + parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; + parameter Real k = 0.1 "Proportional gain of valve controller"; + parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; + Modelica.Fluid.Interfaces.FluidPort_b port_tem(redeclare package Medium = + Medium) "Port for tempered water outlet" + annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + Buildings.Controls.Continuous.LimPID conPID( + controllerType=Modelica.Blocks.Types.SimpleController.PI, + k=k, + Ti=Ti, + reset=Buildings.Types.Reset.Parameter) + annotation (Placement(transformation(extent={{40,60},{20,80}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemTem(redeclare package Medium = + Medium, m_flow_nominal=mTem_flow_nominal) + "Tempered water temperature sensor" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Fluid.Actuators.Valves.ThreeWayLinear ValHea( + redeclare package Medium = Medium, + riseTime=5, + final m_flow_nominal=mTem_flow_nominal, + dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( + transformation( + extent={{10,10},{-10,-10}}, + rotation=180, + origin={0,0}))); + Modelica.Fluid.Interfaces.FluidPort_a port_hot(redeclare package Medium = + Medium) "Port for hot water supply" + annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = + Medium) "Port for domestic cold water supply" + annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); + Modelica.Blocks.Interfaces.RealOutput TTem + "Temperature of the outlet tempered water supply to fixture" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = + Medium, m_flow_nominal=mTem_flow_nominal) + "Hot water temperature sensor" + annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Medium, m_flow_nominal=mTem_flow_nominal) "Cold water temperature sensor" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + Buildings.Fluid.Sensors.MassFlowRate senFloTem(redeclare package Medium = + Medium) "Mass flow rate of tempered water" + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) + annotation (Placement(transformation(extent={{56,24},{44,36}}))); + Modelica.Blocks.Interfaces.RealInput TSet + "Temperature setpoint of tempered hot water outlet" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); +protected + parameter Real uLow = 0.01*mTem_flow_nominal "Low hysteresis threshold"; + parameter Real uHigh = 0.05*mTem_flow_nominal "High hysteresis threshold"; +equation + connect(senTemTem.T, conPID.u_m) + annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); + connect(ValHea.port_2, senTemTem.port_a) annotation (Line(points={{10,-6.66134e-16}, + {20,-6.66134e-16},{20,0}}, color={0,127,255})); + connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ + 9.99201e-16,12}}, color={0,0,127})); + connect(senTemTem.T, TTem) annotation (Line(points={{30,11},{30,40},{90,40},{90, + 60},{110,60}}, color={0,0,127})); + connect(ValHea.port_1, senTemHot.port_b) annotation (Line(points={{-10,1.77636e-15}, + {-10,2},{-20,2}}, color={0,127,255})); + connect(senTemHot.port_a, port_hot) annotation (Line(points={{-40,2},{-60,2},{ + -60,40},{-100,40}}, color={0,127,255})); + connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, + -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); + connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-60},{-70,-60}, + {-70,-40},{-100,-40}}, color={0,127,255})); + connect(senTemTem.port_b, senFloTem.port_a) + annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); + connect(senFloTem.port_b, port_tem) + annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); + connect(hysteresis.u,senFloTem. m_flow) + annotation (Line(points={{57.2,30},{60,30},{60,11}}, + color={0,0,127})); + connect(hysteresis.y, conPID.trigger) + annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); + connect(conPID.u_s, TSet) annotation (Line(points={{42,70},{50,70},{50,92},{-94, + 92},{-94,80},{-120,80}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This model is for a domestic water mixer, mixing hot and cold fluid to achieve a specified tempered outlet temperature. +

+", revisions=" +
    +
  • +June 16, 2022 by Dre Helmns:
    +Created valve model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + visible=use_inputFilter, + extent={{-34,-28},{32,32}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Ellipse( + visible=use_inputFilter, + extent={{-34,32},{32,-28}}, + lineColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid), + Text( + visible=use_inputFilter, + extent={{-22,26},{20,-20}}, + textColor={0,0,0}, + fillColor={135,135,135}, + fillPattern=FillPattern.Solid, + textString="M", + textStyle={TextStyle.Bold}), + Text( + extent={{-42,58},{-162,8}}, + textColor={0,0,0}, + textString=DynamicSelect("", String(y, format=".2f"))), + Rectangle( + extent={{-40,22},{40,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={192,192,192}, + origin={-78,40}, + rotation=90), + Rectangle( + extent={{-22,22},{22,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={238,46,47}, + origin={-78,40}, + rotation=90), + Line( + visible=use_inputFilter, + points={{-32,-28},{28,-28}}), + Rectangle( + extent={{-40,22},{40,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={192,192,192}, + origin={-78,-42}, + rotation=90), + Rectangle( + extent={{-22,22},{22,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={28,108,200}, + origin={-78,-42}, + rotation=90), + Rectangle( + extent={{-40,22},{40,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={192,192,192}, + origin={78,0}, + rotation=90), + Rectangle( + extent={{-22,22},{22,-22}}, + lineColor={0,0,0}, + fillPattern=FillPattern.VerticalCylinder, + fillColor={102,44,145}, + origin={78,0}, + rotation=90), + Text( + extent={{-153,147},{147,107}}, + textColor={0,0,255}, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={0,127,255}, + textString="%name")}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end ThermostaticMixingValve; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo new file mode 100644 index 00000000000..04dfb979d8b --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo @@ -0,0 +1,73 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +model WaterDraw "A model for domestic water draws from fixture(s)" + replaceable package Medium = Buildings.Media.Water "Water media model"; + parameter Modelica.Units.SI.MassFlowRate mTem_flow_nominal "Nominal tempered water flow rate to fixture"; + + Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); + Fluid.Sources.MassFlowSource_T sinTem( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for tempered water supply" + annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); + Modelica.Blocks.Math.Gain gaiDhw(k=-mTem_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{60,10},{40,30}}))); + Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + Modelica.Blocks.Interfaces.RealOutput MTem "Mass of tempered water consumed" + annotation (Placement(transformation(extent={{100,-82},{120,-62}}), + iconTransformation(extent={{100,-82},{120,-62}}))); + Modelica.Blocks.Interfaces.RealInput sch "Tempered water draw fraction" + annotation (Placement(transformation(extent={{120,20},{100,40}}), + iconTransformation(extent={{120,20},{100,40}}))); +equation + connect(gaiDhw.y,sinTem. m_flow_in) annotation (Line(points={{39,20},{-20,20}, + {-20,8},{-44,8}}, color={0,0,127})); + connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, + {39,20}}, color={0,0,127})); + connect(watCon.y,MTem) + annotation (Line(points={{61,-80},{86,-80},{86,-72},{110,-72}}, + color={0,0,127})); + connect(sinTem.ports[1], port_tw) + annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); + connect(sch, gaiDhw.u) annotation (Line(points={{110,30},{86,30},{86,20},{62, + 20}}, color={0,0,127})); + annotation (preferredView="info",Documentation(info=" +

+This model is for connecting domestic hot water load schedules. +

+", revisions=" +
    +
  • +October 20, 2022 by Dre Helmns:
    +Created load model. +
  • +
+"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, + -57.2823},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, + 53.2823},{-7.728,38.2054}}, + lineColor={28,108,200}, + lineThickness=0.5, + smooth=Smooth.Bezier, + fillColor={0,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{-70,70},{70,-70}}, + lineColor={0,0,0}, + pattern=LinePattern.Dash, + lineThickness=1), + Text( + extent={{-147,143},{153,103}}, + textColor={0,0,255}, + fillPattern=FillPattern.HorizontalCylinder, + fillColor={0,127,255}, + textString="%name")}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end WaterDraw; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/package.mo new file mode 100644 index 00000000000..3aeff616b76 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.mo @@ -0,0 +1,13 @@ +within Buildings.Experimental.DHC.Loads; +package HotWater "Package of models for domestic hot water generation and loads served by district networks" + extends Modelica.Icons.VariantsPackage; + +annotation (preferredView="info", Documentation(info=" +

+This package contains models for building hot water loads served by a district heating network. +These loads are typically charactersized as being from fixtures in kitchens, +bathrooms, and laundry, typically require a higher temperature water than +space heating, and are often know as domestic hot water loads. +

+")); +end HotWater; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order new file mode 100644 index 00000000000..ea41ae77b5f --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -0,0 +1,7 @@ +DirectHeatExchangerWithAuxHeat +HeatPumpWithTank +ThermostaticMixingValve +WaterDraw +BaseClasses +Examples +Data diff --git a/Buildings/Experimental/DHC/Loads/package.order b/Buildings/Experimental/DHC/Loads/package.order index 43c3f3e4687..ec09a7dc11a 100644 --- a/Buildings/Experimental/DHC/Loads/package.order +++ b/Buildings/Experimental/DHC/Loads/package.order @@ -1,6 +1,6 @@ Combined Cooling -DHW Heating +HotWater Steam BaseClasses From 4aebbe2084986fda3073921d85981dbf37bec730 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 7 Sep 2023 12:46:10 -0700 Subject: [PATCH 082/183] Update TimeSeries implementation --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 4 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 21 +++---- .../BuildingTimeSeriesWithETSDHWTank.mo | 2 +- .../HotWater/Data/HeatPumpWaterHeater.mo | 55 ------------------- .../DHC/Loads/HotWater/Data/package.order | 1 - 5 files changed, 14 insertions(+), 69 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 0a4fa065e8c..9600f4738e7 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -23,7 +23,7 @@ model HeatPumpHeatExchangerDHWTank TEva_nominal=TDisWatMin - dT_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, - mHw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - + mHot_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), datWatHea=datWatHea) if have_hotWat "Subsystem for hot water production" @@ -41,7 +41,7 @@ model HeatPumpHeatExchangerDHWTank annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); Loads.HotWater.ThermostaticMixingValve tmv( redeclare package Medium = MediumBui, - mDhw_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - + mTem_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), dpValve_nominal=1000) "Thermostatic mixing valve" annotation (Placement(transformation(extent={{-20,48},{-40,70}}))); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 55641d5f379..0d24f62a3e4 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -31,7 +31,7 @@ model HeatPumpDHWTank parameter Boolean allowFlowReversal2=false "Set to true to allow flow reversal on evaporator side" annotation (Dialog(tab="Assumptions"), Evaluate=true); - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal(min=0) "Mass flow rate of domestic hot water leaving tank" + parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal(min=0) "Mass flow rate of hot water leaving tank" annotation (Dialog(group="Nominal condition")); // IO CONNECTORS Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) @@ -88,7 +88,7 @@ model HeatPumpDHWTank // COMPONENTS Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( redeclare final package Medium = Medium2, - final m_flow_nominal=heaPumTan.mDH_flow_nominal, + final m_flow_nominal=heaPumTan.mDis_flow_nominal, final allowFlowReversal=allowFlowReversal2, dp_nominal=datWatHea.dp2_nominal) "Heat pump evaporator water pump" @@ -101,7 +101,7 @@ model HeatPumpDHWTank Fluid.Sensors.TemperatureTwoPort senTHotSup( redeclare final package Medium = Medium1, final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=mHw_flow_nominal) + final m_flow_nominal=mHot_flow_nominal) "Temperature of water leaving the domestic hot water storage tank" annotation (Placement( transformation( @@ -111,7 +111,7 @@ model HeatPumpDHWTank Fluid.Sensors.TemperatureTwoPort senTColSou( redeclare final package Medium = Medium1, final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=mHw_flow_nominal) + final m_flow_nominal=mHot_flow_nominal) "Temperature of water entering domestic hot water tank" annotation (Placement(transformation( extent={{-10,-10},{10,10}}, @@ -123,15 +123,15 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum( y(each start=false), - t=1e-2*heaPumTan.mDH_flow_nominal, - h=0.5e-2*heaPumTan.mDH_flow_nominal) + t=1e-2*heaPumTan.mDis_flow_nominal, + h=0.5e-2*heaPumTan.mDis_flow_nominal) "Pump return status" annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); Buildings.Controls.OBC.CDL.Reals.Multiply floEva "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); Loads.HotWater.HeatPumpWithTank heaPumTan( - mHw_flow_nominal=mHw_flow_nominal, + mHot_flow_nominal=mHot_flow_nominal, datWatHea=datWatHea, COP_nominal=COP_nominal, TCon_nominal=TCon_nominal, @@ -191,10 +191,11 @@ equation color={0,0,127})); connect(add.u2, pumEva.P) annotation (Line(points={{138,-14},{120,-14},{120,-20}, {49,-20},{49,-51}}, color={0,0,127})); - connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-12},{120,-12},{120, + connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-14},{120,-14},{120, -2},{138,-2}}, color={0,0,127})); - connect(heaPumTan.QCon_flow, QCon_flow) annotation (Line(points={{21,-8},{82,-8}, - {82,-100},{220,-100}}, color={0,0,127})); + connect(heaPumTan.QCon_flow, QCon_flow) annotation (Line(points={{21,-12},{82, + -12},{82,-100},{220,-100}}, + color={0,0,127})); connect(TSetHw.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166,10},{ -166,28},{-142,28}}, color={0,0,127})); annotation ( diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 56db25a1602..61ab9dd0968 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -52,7 +52,7 @@ model BuildingTimeSeriesWithETSDHWTank annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* - 2, + 2.2, QCon_flow_max=datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo deleted file mode 100644 index ce06822d623..00000000000 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/HeatPumpWaterHeater.mo +++ /dev/null @@ -1,55 +0,0 @@ -within Buildings.Experimental.DHC.Loads.HotWater.Data; -record HeatPumpWaterHeater - "Equipment specifications for a typical heat pump water heater" - parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.508 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - annotation (preferredView="info",Documentation(info=" -

-This record corresponds to a 50-gallon Rheem or A.O. Smith heat pump water heater that would commonly be used in a single apartment unit of a multifamily residential building. -

-", revisions=" -
    -
  • -November 22, 2022 by Dre Helmns:
    -Created record. -
  • -
-"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order index 95fdcdc786b..b1fd769118b 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order @@ -1,2 +1 @@ -HeatPumpWaterHeater GenericHeatPumpWaterHeater From 1210de89c514b97dab1f71e442b161726b47fb91 Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 8 Sep 2023 13:57:42 -0700 Subject: [PATCH 083/183] ChangeHot to HotSou and Tem to Hot --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 12 ++-- .../Combined/Subsystems/HeatPumpDHWTank.mo | 10 ++-- .../BaseClasses/PartialFourPortDHW.mo | 2 +- .../DirectHeatExchangerWithAuxHeat.mo | 16 ++--- .../BaseClasses/partialHeaterAndFixture.mo | 33 +++++------ ...ndFixtureDirectHeatExchangerWithAuxHeat.mo | 8 +-- .../HeaterAndFixtureHeatPumpWithTank.mo | 12 ++-- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 16 ++--- .../Loads/HotWater/ThermostaticMixingValve.mo | 58 +++++++++---------- .../DHC/Loads/HotWater/WaterDraw.mo | 32 +++++----- 10 files changed, 99 insertions(+), 100 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 9600f4738e7..b034402de33 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -23,8 +23,8 @@ model HeatPumpHeatExchangerDHWTank TEva_nominal=TDisWatMin - dT_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, - mHot_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - - TColWat_nominal), + mHotSou_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal + - TColWat_nominal), datWatHea=datWatHea) if have_hotWat "Subsystem for hot water production" annotation (Placement(transformation(extent={{32,24},{52,44}}))); @@ -41,7 +41,7 @@ model HeatPumpHeatExchangerDHWTank annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); Loads.HotWater.ThermostaticMixingValve tmv( redeclare package Medium = MediumBui, - mTem_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - + mHot_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), dpValve_nominal=1000) "Thermostatic mixing valve" annotation (Placement(transformation(extent={{-20,48},{-40,70}}))); @@ -83,7 +83,7 @@ equation {-76,68},{-70,68}}, color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); - connect(tmv.port_tem, sinDHW.ports[1]) annotation (Line(points={{-40,59},{-45, + connect(tmv.port_hot, sinDHW.ports[1]) annotation (Line(points={{-40,59},{-45, 59},{-45,60},{-48,60}}, color={0,127,255})); connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-40,-10},{ -12,-10},{-12,-6}}, color={0,127,255})); @@ -91,8 +91,8 @@ equation annotation (Line(points={{-2,4},{0,4},{0,28},{32,28}}, color={0,127,255})); connect(dcwSpl.port_2, tmv.port_col) annotation (Line(points={{-12,14},{-12, 54.6},{-20,54.6}}, color={0,127,255})); - connect(proHotWat.port_b1, tmv.port_hot) annotation (Line(points={{32,40},{0, - 40},{0,63.4},{-20,63.4}}, color={0,127,255})); + connect(proHotWat.port_b1, tmv.port_hotsou) annotation (Line(points={{32,40}, + {0,40},{0,63.4},{-20,63.4}}, color={0,127,255})); connect(tmv.TSet, delT.u1) annotation (Line(points={{-18,67.8},{-12,67.8},{ -12,68},{-8,68},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 0d24f62a3e4..ad4bf5a1f38 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -31,7 +31,7 @@ model HeatPumpDHWTank parameter Boolean allowFlowReversal2=false "Set to true to allow flow reversal on evaporator side" annotation (Dialog(tab="Assumptions"), Evaluate=true); - parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal(min=0) "Mass flow rate of hot water leaving tank" + parameter Modelica.Units.SI.MassFlowRate mHotSou_flow_nominal(min=0) "Mass flow rate of hot water leaving tank" annotation (Dialog(group="Nominal condition")); // IO CONNECTORS Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) @@ -95,13 +95,13 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k=heaPumTan.mDH_flow_nominal) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k=heaPumTan.mDis_flow_nominal) if not have_varFloEva "Nominal flow rate" annotation (Placement(transformation(extent={{0,80},{-20,100}}))); Fluid.Sensors.TemperatureTwoPort senTHotSup( redeclare final package Medium = Medium1, final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=mHot_flow_nominal) + final m_flow_nominal=mHotSou_flow_nominal) "Temperature of water leaving the domestic hot water storage tank" annotation (Placement( transformation( @@ -111,7 +111,7 @@ model HeatPumpDHWTank Fluid.Sensors.TemperatureTwoPort senTColSou( redeclare final package Medium = Medium1, final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=mHot_flow_nominal) + final m_flow_nominal=mHotSou_flow_nominal) "Temperature of water entering domestic hot water tank" annotation (Placement(transformation( extent={{-10,-10},{10,10}}, @@ -131,7 +131,7 @@ model HeatPumpDHWTank "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); Loads.HotWater.HeatPumpWithTank heaPumTan( - mHot_flow_nominal=mHot_flow_nominal, + mHotSou_flow_nominal=mHotSou_flow_nominal, datWatHea=datWatHea, COP_nominal=COP_nominal, TCon_nominal=TCon_nominal, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index b2d97446d96..94967eb8c0f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -5,7 +5,7 @@ partial model PartialFourPortDHW redeclare final package Medium1=Medium, redeclare final package Medium2=Medium); replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mHotSou_flow_nominal "Nominal mass flow rate of hot water supply"; parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal "Nominal mass flow rate of district heating water"; Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") "Electric power required for heating equipment" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index be56210deec..be60c54b38f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -11,29 +11,29 @@ model DirectHeatExchangerWithAuxHeat Buildings.Fluid.HeatExchangers.Heater_T heaEle( redeclare package Medium = Medium, - m_flow_nominal=mHot_flow_nominal, + m_flow_nominal=mHotSou_flow_nominal, dp_nominal=dpEle_nominal, QMax_flow=QMax_flow) if have_eleHea == true "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,16},{30,-4}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = + Medium, m_flow_nominal=mHotSou_flow_nominal) "Temperature sensor for hot water supply" annotation (Placement(transformation(extent={{60,-4},{80,16}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, - m1_flow_nominal=mHot_flow_nominal, + m1_flow_nominal=mHotSou_flow_nominal, m2_flow_nominal=mDis_flow_nominal, - dp1_nominal=dpHot_nominal, + dp1_nominal=dpHotSou_nominal, dp2_nominal=dpDis_nominal, eps=eps) "Domestic hot water heater heat exchanger" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) + Medium, m_flow_nominal=mHotSou_flow_nominal) "Temperature sensor for hot water leaving heat exchanger" annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); - parameter Modelica.Units.SI.PressureDifference dpHot_nominal=0 + parameter Modelica.Units.SI.PressureDifference dpHotSou_nominal=0 "Pressure difference in heat exchanger on hot water side"; parameter Modelica.Units.SI.PressureDifference dpDis_nominal=0 "Pressure difference in heat exchanger on district water side"; @@ -45,7 +45,7 @@ model DirectHeatExchangerWithAuxHeat protected Fluid.FixedResistances.LosslessPipe pip( redeclare final package Medium = Medium, - final m_flow_nominal=mHot_flow_nominal, + final m_flow_nominal=mHotSou_flow_nominal, final show_T=false) if have_eleHea == false "Pipe without electric resistance" annotation (Placement(transformation(extent={{10,44},{30,24}}))); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo index 82a68d0754b..67dcd4f94ac 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -2,13 +2,13 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses; model partialHeaterAndFixture "Partial base class for heater and fixture examples" replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHot = 273.15+50 "Temperature setpoint of hot water supply from heater"; + parameter Modelica.Units.SI.Temperature TSetHotSou = 273.15+50 "Temperature setpoint of hot water supply source from heater"; parameter Modelica.Units.SI.Temperature TDis = 273.15+30 "Temperature of water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTem = 273.15+43 "Temperature setpoint of tempered water supply to fixture"; + parameter Modelica.Units.SI.Temperature TSetHot = 273.15+43 "Temperature setpoint of hot water supply to fixture"; parameter Modelica.Units.SI.Temperature TCol = 273.15+10 "Temperature of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; + parameter Modelica.Units.SI.MassFlowRate mHotSou_flow_nominal = 0.1 "Nominal mass flow rate of hot water source supply"; parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal = 1 "Nominal mass flow rate of district water"; - parameter Modelica.Units.SI.MassFlowRate mTem_flow_nominal = 1 "Nominal mass flow rate of tempered water to fixture"; + parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal = 1 "Nominal mass flow rate of hot water supplied to fixture"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; Buildings.Fluid.Sources.Boundary_pT souCol( @@ -20,7 +20,7 @@ model partialHeaterAndFixture origin={10,-50}))); ThermostaticMixingValve tmv( redeclare package Medium = Medium, - mTem_flow_nominal=mTem_flow_nominal, + mHot_flow_nominal=mHot_flow_nominal, dpValve_nominal=dpValve_nominal) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Modelica.Blocks.Interfaces.RealOutput TTem(final unit="K", displayUnit="degC") @@ -35,11 +35,11 @@ model partialHeaterAndFixture extent={{-10,-10},{10,10}}, rotation=90, origin={-30,-50}))); - Modelica.Blocks.Sources.Constant conTSetHot(k=TSetHot) - "Temperature setpoint for domestic hot water supply from heater" + Modelica.Blocks.Sources.Constant conTSetHotSou(k=TSetHotSou) + "Temperature setpoint for domestic hot water source supplied from heater" annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - WaterDraw loa(redeclare package Medium = Medium, mTem_flow_nominal= - mTem_flow_nominal) "Tempered water draw" + WaterDraw loa(redeclare package Medium = Medium, mHot_flow_nominal= + mHot_flow_nominal) "Tempered water draw" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Sources.CombiTimeTable sch( tableOnFile=true, @@ -59,21 +59,20 @@ model partialHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Modelica.Blocks.Sources.Constant conTSetTem(k=TSetTem) - "Temperature setpoint for tempered water supply" + Modelica.Blocks.Sources.Constant conTSetHot(k=TSetHot) + "Temperature setpoint for hot water supply to fixture" annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); equation connect(tmv.TTem, TTem) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, color={0,0,127})); - connect(souCol.ports[1], tmv.port_col) annotation (Line(points={{10,-40},{10,-20}, - {-10,-20},{-10,-4},{0,-4}}, - color={0,127,255})); - connect(tmv.port_tem, loa.port_tw) - annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); connect(loa.sch, sch.y[1]) annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); - connect(conTSetTem.y, tmv.TSet) + connect(conTSetHot.y, tmv.TSet) annotation (Line(points={{-79,30},{-2,30},{-2,8}}, color={0,0,127})); + connect(tmv.port_hot, loa.port_hot) + annotation (Line(points={{20,0},{39.8,0}}, color={0,127,255})); + connect(tmv.port_col, souCol.ports[1]) annotation (Line(points={{0,-4},{-10, + -4},{-10,-26},{10,-26},{10,-40}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

This is an example of a domestic water heater and fixture. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index 006163ef103..037d51f435d 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -7,21 +7,21 @@ model HeaterAndFixtureDirectHeatExchangerWithAuxHeat sinDis(nPorts=1)); DirectHeatExchangerWithAuxHeat gen( redeclare package Medium = Medium, - mHot_flow_nominal=mHot_flow_nominal, + mHotSou_flow_nominal=mHotSou_flow_nominal, mDis_flow_nominal=mDis_flow_nominal) "Hot water generated by heat exchanger and auxiliary heat" annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); equation - connect(gen.port_b1, tmv.port_hot) annotation (Line(points={{-30,6},{-10,6},{ - -10,4},{0,4}}, color={0,127,255})); + connect(gen.port_b1, tmv.port_hotsou) annotation (Line(points={{-30,6},{-10,6}, + {-10,4},{0,4}}, color={0,127,255})); connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20, -6},{-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(conTSetHot.y, gen.TSetHw) + connect(conTSetHotSou.y, gen.TSetHw) annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index b39acf56ea5..da86df69309 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -8,7 +8,7 @@ model HeaterAndFixtureHeatPumpWithTank HeatPumpWithTank gen( redeclare package Medium = Medium, - mHot_flow_nominal=mHot_flow_nominal, + mHotSou_flow_nominal=mHotSou_flow_nominal, mDis_flow_nominal=mDis_flow_nominal, datWatHea=datWatHea, COP_nominal=2.3, @@ -19,22 +19,22 @@ model HeaterAndFixtureHeatPumpWithTank mHex_flow_nominal=1.5, QCon_flow_max=60000, QCon_flow_nominal=50000, - TTan_nominal=(TSetHot + TCol)/2, - THex_nominal=TSetHot + 3, + TTan_nominal=(TSetHotSou + TCol)/2, + THex_nominal=TSetHotSou + 3, dTCon_nominal=datWatHea.THex_nominal - datWatHea.TTan_nominal) "Data for heat pump water heater with tank" annotation (Placement(transformation(extent={{-46,16},{-36,26}}))); equation - connect(gen.port_b1, tmv.port_hot) annotation (Line(points={{-30,6},{-10,6},{-10, - 4},{0,4}}, color={0,127,255})); + connect(gen.port_b1, tmv.port_hotsou) annotation (Line(points={{-30,6},{-10,6}, + {-10,4},{0,4}}, color={0,127,255})); connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20,-6}, {-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(conTSetHot.y, gen.TSetHw) + connect(conTSetHotSou.y, gen.TSetHw) annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, 80}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index 51176d381cd..0138b25ad7a 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -17,9 +17,9 @@ model HeatPumpWithTank parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; parameter Real Ti=60 "Integrator time constant of circulation pump controller"; - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) - "Temperature sensor for hot water supply" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package + Medium = Medium, m_flow_nominal=mHotSou_flow_nominal) + "Temperature sensor for hot water source supply" annotation (Placement(transformation(extent={{-20,44},{0,64}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, @@ -71,7 +71,7 @@ model HeatPumpWithTank THex_nominal=datWatHea.THex_nominal, mHex_flow_nominal=datWatHea.mHex_flow_nominal, show_T=true, - m_flow_nominal=mHot_flow_nominal) + m_flow_nominal=mHotSou_flow_nominal) "Tank with steady-state heat exchanger balance" annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) @@ -97,8 +97,8 @@ model HeatPumpWithTank equation connect(heaPum.port_b1, senTemHeaPumOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(senTemHot.port_b, port_b1) annotation (Line(points={{0,54},{20,54},{20, - 60},{100,60}}, color={0,127,255})); + connect(senTemHotSou.port_b, port_b1) annotation (Line(points={{0,54},{20,54}, + {20,60},{100,60}}, color={0,127,255})); connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-20,-60}, {-20,-6},{-10,-6}}, color={0,127,255})); connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{82,-14}, @@ -109,8 +109,8 @@ equation 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, 20},{-10,20},{-10,6}}, color={0,127,255})); - connect(tanSte.port_a, senTemHot.port_a) annotation (Line(points={{-40,50},{-30, - 50},{-30,54},{-20,54}}, color={0,127,255})); + connect(tanSte.port_a, senTemHotSou.port_a) annotation (Line(points={{-40,50}, + {-30,50},{-30,54},{-20,54}}, color={0,127,255})); connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, 60},{-100,60}}, color={0,127,255})); connect(bou.ports[1], senTemHeaPumOut.port_b) annotation (Line(points={{80,40}, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index c0920cea534..db3e7435568 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -2,12 +2,12 @@ within Buildings.Experimental.DHC.Loads.HotWater; model ThermostaticMixingValve "A model for a thermostatic mixing valve" replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mTem_flow_nominal "Nominal tempered water flow rate"; + parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal hot water flow rate to fixture"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; parameter Real k = 0.1 "Proportional gain of valve controller"; parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; - Modelica.Fluid.Interfaces.FluidPort_b port_tem(redeclare package Medium = - Medium) "Port for tempered water outlet" + Modelica.Fluid.Interfaces.FluidPort_b port_hot(redeclare package Medium = + Medium) "Port for hot water outlet to fixture(s)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Buildings.Controls.Continuous.LimPID conPID( controllerType=Modelica.Blocks.Types.SimpleController.PI, @@ -15,21 +15,21 @@ model ThermostaticMixingValve Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTem(redeclare package Medium = - Medium, m_flow_nominal=mTem_flow_nominal) - "Tempered water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) + "Hot water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Actuators.Valves.ThreeWayLinear ValHea( redeclare package Medium = Medium, riseTime=5, - final m_flow_nominal=mTem_flow_nominal, + final m_flow_nominal=mHot_flow_nominal, dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( transformation( extent={{10,10},{-10,-10}}, rotation=180, origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hot(redeclare package Medium = - Medium) "Port for hot water supply" + Modelica.Fluid.Interfaces.FluidPort_a port_hotsou(redeclare package Medium = + Medium) "Port for hot water supply from source" annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = Medium) "Port for domestic cold water supply" @@ -37,15 +37,15 @@ model ThermostaticMixingValve Modelica.Blocks.Interfaces.RealOutput TTem "Temperature of the outlet tempered water supply to fixture" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = - Medium, m_flow_nominal=mTem_flow_nominal) - "Hot water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package + Medium = Medium, m_flow_nominal=mHot_flow_nominal) + "Source hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = - Medium, m_flow_nominal=mTem_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Fluid.Sensors.MassFlowRate senFloTem(redeclare package Medium = - Medium) "Mass flow rate of tempered water" + Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = + Medium) "Mass flow rate of hot water to fixture" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) annotation (Placement(transformation(extent={{56,24},{44,36}}))); @@ -53,30 +53,30 @@ model ThermostaticMixingValve "Temperature setpoint of tempered hot water outlet" annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); protected - parameter Real uLow = 0.01*mTem_flow_nominal "Low hysteresis threshold"; - parameter Real uHigh = 0.05*mTem_flow_nominal "High hysteresis threshold"; + parameter Real uLow = 0.01*mHot_flow_nominal "Low hysteresis threshold"; + parameter Real uHigh = 0.05*mHot_flow_nominal "High hysteresis threshold"; equation - connect(senTemTem.T, conPID.u_m) + connect(senTemHot.T, conPID.u_m) annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); - connect(ValHea.port_2, senTemTem.port_a) annotation (Line(points={{10,-6.66134e-16}, + connect(ValHea.port_2, senTemHot.port_a) annotation (Line(points={{10,-6.66134e-16}, {20,-6.66134e-16},{20,0}}, color={0,127,255})); connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ 9.99201e-16,12}}, color={0,0,127})); - connect(senTemTem.T, TTem) annotation (Line(points={{30,11},{30,40},{90,40},{90, - 60},{110,60}}, color={0,0,127})); - connect(ValHea.port_1, senTemHot.port_b) annotation (Line(points={{-10,1.77636e-15}, - {-10,2},{-20,2}}, color={0,127,255})); - connect(senTemHot.port_a, port_hot) annotation (Line(points={{-40,2},{-60,2},{ - -60,40},{-100,40}}, color={0,127,255})); + connect(senTemHot.T, TTem) annotation (Line(points={{30,11},{30,40},{90,40},{ + 90,60},{110,60}}, color={0,0,127})); + connect(ValHea.port_1, senTemHotSou.port_b) annotation (Line(points={{-10, + 1.77636e-15},{-10,2},{-20,2}}, color={0,127,255})); + connect(senTemHotSou.port_a, port_hotsou) annotation (Line(points={{-40,2},{-60, + 2},{-60,40},{-100,40}}, color={0,127,255})); connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-60},{-70,-60}, {-70,-40},{-100,-40}}, color={0,127,255})); - connect(senTemTem.port_b, senFloTem.port_a) + connect(senTemHot.port_b, senFloHot.port_a) annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); - connect(senFloTem.port_b, port_tem) + connect(senFloHot.port_b, port_hot) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(hysteresis.u,senFloTem. m_flow) + connect(hysteresis.u,senFloHot. m_flow) annotation (Line(points={{57.2,30},{60,30},{60,11}}, color={0,0,127})); connect(hysteresis.y, conPID.trigger) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo index 04dfb979d8b..e925af99d2c 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo @@ -1,37 +1,37 @@ within Buildings.Experimental.DHC.Loads.HotWater; -model WaterDraw "A model for domestic water draws from fixture(s)" +model WaterDraw "A model for hot water draws from fixture(s)" replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mTem_flow_nominal "Nominal tempered water flow rate to fixture"; + parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal hot water flow rate to fixture"; - Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Fluid.Sources.MassFlowSource_T sinTem( + Modelica.Fluid.Interfaces.FluidPort_a port_hot(redeclare package Medium = + Medium) "Port for hot water supply to fixture" + annotation (Placement(transformation(extent={{-112,-10},{-92,10}}))); + Fluid.Sources.MassFlowSource_T sinHot( redeclare package Medium = Medium, use_m_flow_in=true, - nPorts=1) "Sink for tempered water supply" + nPorts=1) "Sink for hot water supply" annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mTem_flow_nominal) "Gain for multiplying domestic hot water schedule" + Modelica.Blocks.Math.Gain gaiDhw(k=-mHot_flow_nominal) "Gain for multiplying domestic hot water schedule" annotation (Placement(transformation(extent={{60,10},{40,30}}))); Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - Modelica.Blocks.Interfaces.RealOutput MTem "Mass of tempered water consumed" + Modelica.Blocks.Interfaces.RealOutput MHot "Mass of hot water used" annotation (Placement(transformation(extent={{100,-82},{120,-62}}), iconTransformation(extent={{100,-82},{120,-62}}))); - Modelica.Blocks.Interfaces.RealInput sch "Tempered water draw fraction" + Modelica.Blocks.Interfaces.RealInput sch "Hot water to fixture draw fraction" annotation (Placement(transformation(extent={{120,20},{100,40}}), iconTransformation(extent={{120,20},{100,40}}))); equation - connect(gaiDhw.y,sinTem. m_flow_in) annotation (Line(points={{39,20},{-20,20}, - {-20,8},{-44,8}}, color={0,0,127})); connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, {39,20}}, color={0,0,127})); - connect(watCon.y,MTem) - annotation (Line(points={{61,-80},{86,-80},{86,-72},{110,-72}}, - color={0,0,127})); - connect(sinTem.ports[1], port_tw) - annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); connect(sch, gaiDhw.u) annotation (Line(points={{110,30},{86,30},{86,20},{62, 20}}, color={0,0,127})); + connect(port_hot, sinHot.ports[1]) + annotation (Line(points={{-102,0},{-66,0}}, color={0,127,255})); + connect(sinHot.m_flow_in, gaiDhw.y) annotation (Line(points={{-44,8},{-20,8}, + {-20,20},{39,20}}, color={0,0,127})); + connect(watCon.y, MHot) annotation (Line(points={{61,-80},{80,-80},{80,-72},{ + 110,-72}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This model is for connecting domestic hot water load schedules. From e7ef1ef8f55a249573581f1e79a7753e69a4369f Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 8 Sep 2023 14:16:33 -0700 Subject: [PATCH 084/183] Add dT between tank and hx --- .../Combined/Subsystems/HeatPumpDHWTank.mo | 6 +++--- .../Examples/BuildingTimeSeriesWithETSDHWTank.mo | 3 +-- .../Loads/HotWater/BaseClasses/PartialFourPortDHW.mo | 4 ++-- .../HotWater/Data/GenericHeatPumpWaterHeater.mo | 4 +++- .../Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo | 5 ++--- ...HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo | 2 +- .../Examples/HeaterAndFixtureHeatPumpWithTank.mo | 4 ++-- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 12 ++++++++---- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index ad4bf5a1f38..7fd5916d290 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -143,7 +143,7 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add annotation (Placement(transformation(extent={{140,-18},{160,2}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHw(k=datWatHea.THex_nominal) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHw(k=datWatHea.THotSou_nominal) "Set point of water leaving heat pump and in tank" annotation (Placement(transformation(extent={{-200,0},{-180,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") @@ -179,8 +179,8 @@ equation -60},{40,-16},{20,-16}}, color={0,127,255})); connect(heaPumTan.port_b2, port_b2) annotation (Line(points={{0,-16},{-20,-16}, {-20,40},{160,40},{160,60},{200,60}}, color={0,127,255})); - connect(enaHeaPum.y, heaPumTan.TSetHw) annotation (Line(points={{-118,20},{-10, - 20},{-10,-10},{-1,-10}}, color={0,0,127})); + connect(enaHeaPum.y, heaPumTan.TSetHotSou) annotation (Line(points={{-118,20}, + {-10,20},{-10,-10},{-1,-10}}, color={0,0,127})); connect(heaPumTan.PHea, PHea) annotation (Line(points={{21,-10},{80,-10},{80,20}, {180,20},{180,40},{220,40}}, color={0,0,127})); connect(staPum.y, enaHeaPum.u2) annotation (Line(points={{-102,-100},{-160,-100}, diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 61ab9dd0968..17b8e91319c 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -38,7 +38,7 @@ model BuildingTimeSeriesWithETSDHWTank Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) "Cold water temperature" annotation (Placement(transformation(extent={{60,80},{80,100}}))); - Controls.OBC.CDL.Reals.Sources.Constant THotWatSupSet(k=bui.ets.THotWatSup_nominal) + Controls.OBC.CDL.Reals.Sources.Constant THotWatSupSet(k=bui.THotWatSup_nominal) "Hot water supply temperature set point" annotation (Placement(transformation(extent={{20,80},{40,100}}))); Controls.OBC.CDL.Reals.Sources.Constant TChiWatSupSet(k=bui.TChiWatSup_nominal) @@ -56,7 +56,6 @@ model BuildingTimeSeriesWithETSDHWTank QCon_flow_max=datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, - THex_nominal=333.15, dTCon_nominal=datWatHea.THex_nominal - bui.ets.TColWat_nominal) "Performance data" annotation (Placement(transformation(extent={{44,-38},{56,-26}}))); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index 94967eb8c0f..94a2cc0edd8 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -10,8 +10,8 @@ partial model PartialFourPortDHW Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") "Electric power required for heating equipment" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput TSetHw - "Temperature setpoint for domestic hot water supply from heater" + Modelica.Blocks.Interfaces.RealInput TSetHotSou + "Temperature setpoint for domestic hot water source from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" annotation (Placement(transformation(extent={{60,80},{80,100}}))); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo index 62ccbee0bfc..6b217272692 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo @@ -13,7 +13,9 @@ record GenericHeatPumpWaterHeater parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = TTan_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; + parameter Modelica.Units.SI.Temperature THotSou_nominal = 333.15 "Temperature of fluid leaving tank at nominal conditions"; + parameter Modelica.Units.SI.TemperatureDifference dTTanHex = 3 "Temperature difference between heat pump outlet and tank leaving temperature at nominal conditions"; + parameter Modelica.Units.SI.Temperature THex_nominal = THotSou_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index be60c54b38f..fbd923595b5 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -66,9 +66,8 @@ equation annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-2},{40,-2},{40,-20}, {90,-20},{90,0},{110,0}}, color={0,0,127})); - connect(TSetHw,heaEle. TSet) annotation (Line(points={{-110,0},{-90,0},{-90, - -20},{0,-20},{0,-2},{8,-2}}, - color={0,0,127})); + connect(TSetHotSou, heaEle.TSet) annotation (Line(points={{-110,0},{-90,0},{-90, + -20},{0,-20},{0,-2},{8,-2}}, color={0,0,127})); connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, -60}}, color={0,127,255})); connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index 037d51f435d..c97e440ec23 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -21,7 +21,7 @@ equation -6},{-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(conTSetHotSou.y, gen.TSetHw) + connect(conTSetHotSou.y, gen.TSetHotSou) annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index da86df69309..7f9fe178528 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -20,7 +20,7 @@ model HeaterAndFixtureHeatPumpWithTank QCon_flow_max=60000, QCon_flow_nominal=50000, TTan_nominal=(TSetHotSou + TCol)/2, - THex_nominal=TSetHotSou + 3, + THotSou_nominal=TSetHotSou, dTCon_nominal=datWatHea.THex_nominal - datWatHea.TTan_nominal) "Data for heat pump water heater with tank" annotation (Placement(transformation(extent={{-46,16},{-36,26}}))); @@ -34,7 +34,7 @@ equation {-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(conTSetHotSou.y, gen.TSetHw) + connect(conTSetHotSou.y, gen.TSetHotSou) annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, 80}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index 0138b25ad7a..ac16d9d3c31 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -94,6 +94,8 @@ model HeatPumpWithTank Modelica.Blocks.Interfaces.RealOutput QCon_flow "Actual heat pump heating heat flow rate added to fluid" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); + Controls.OBC.CDL.Reals.AddParameter addPar(p=datWatHea.dTTanHex) + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation connect(heaPum.port_b1, senTemHeaPumOut.port_a) annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); @@ -121,8 +123,8 @@ equation -60},{100,-60}}, color={0,127,255})); connect(conPI.y, dTTanHex2.u) annotation (Line(points={{12,90},{18,90}}, color={0,0,127})); - connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,90}, - {-12,90}}, color={0,0,127})); + connect(TSetHotSou, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88, + 90},{-12,90}}, color={0,0,127})); connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, 70},{0,70},{0,78}}, color={0,0,127})); connect(pumHex.P, PPum) annotation (Line(points={{39,49},{30,49},{30,-40},{110, @@ -130,10 +132,12 @@ equation connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,9},{11,4},{26, 4},{26,-20},{110,-20}}, color={0,0,127})); - connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-20,0},{-20,9}, - {-12,9}}, color={0,0,127})); connect(senTemTan.port, tanSte.heaPorVol[4]) annotation (Line(points={{-40,72},{-50,72},{-50,50}}, color={191,0,0})); + connect(addPar.y, heaPum.TSet) annotation (Line(points={{-38,0},{-28,0},{-28, + 9},{-12,9}}, color={0,0,127})); + connect(addPar.u, TSetHotSou) + annotation (Line(points={{-62,0},{-110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

This model is an example of a domestic hot water (DHW) substation for an From aecaa4f3be86f3da7af70af483206d2ffd666ebd Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Sep 2023 16:23:17 -0700 Subject: [PATCH 085/183] Update docs for HotWater package --- .../Data/GenericHeatPumpWaterHeater.mo | 6 +++- .../DirectHeatExchangerWithAuxHeat.mo | 16 ++++++++--- .../BaseClasses/partialHeaterAndFixture.mo | 6 +++- ...ndFixtureDirectHeatExchangerWithAuxHeat.mo | 26 +++++++++++++++++- .../HeaterAndFixtureHeatPumpWithTank.mo | 26 +++++++++++++++++- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 23 ++++++++++++---- .../Loads/HotWater/ThermostaticMixingValve.mo | 18 ++++++++---- .../DHC/Loads/HotWater/WaterDraw.mo | 10 +++++-- .../DirectHeatExchangerWithAuxHeat.png | Bin 0 -> 22484 bytes ...Example_DirectHeatExchangerWithAuxHeat.png | Bin 0 -> 50371 bytes .../HotWater/Example_HeatPumpWithTank.png | Bin 0 -> 65215 bytes .../DHC/Loads/HotWater/HeatPumpWithTank.png | Bin 0 -> 37744 bytes 12 files changed, 109 insertions(+), 22 deletions(-) create mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.png create mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/Example_DirectHeatExchangerWithAuxHeat.png create mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/Example_HeatPumpWithTank.png create mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.png diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo index 6b217272692..be0fb3ebff0 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo @@ -29,8 +29,12 @@ This record corresponds to a generic heat pump water heater. ", revisions="

  • +September 11, 2023 by David Blum:
    +Updated for release. +
  • +
  • November 22, 2022 by Dre Helmns:
    -Created record. +Initial implementation.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index fbd923595b5..b206029199f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -76,12 +76,16 @@ equation -12,18},{-12,-22},{96,-22},{96,-20},{110,-20}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

-This model is an example of a domestic hot water (DHW) substation for a +This model implements a basic domestic hot water (DHW) substation for a low-temperature district heating (LTDH) network. It includes preheating by the -district and optional electric resistance to bring the temperature to setpoint. +district through a heat-exchanger and optional electric resistance to bring +the temperature of produced hot water to setpoint. +

+

+\"image\"

-For more info, please see Fig. 5 in Evaluations of different domestic hot water +It is based on Fig. 5 in Evaluations of different domestic hot water preparing methods with ultra-low-temperature district heating by X. Yang, H. Li, and S. Svendsen at doi.org/10.1016/j.energy.2016.04.109. @@ -89,8 +93,12 @@ doi.org/10.1016/j.energy.2016.04.109. ", revisions="

  • +September 11, 2023 by David Blum:
    +Update model for release. +
  • +
  • June 16, 2022 by Dre Helmns:
    -Created generation model. +Initial Implementation.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo index 67dcd4f94ac..4378cb1115f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -80,8 +80,12 @@ This is an example of a domestic water heater and fixture. ", revisions="
  • +September 11, 2023 by David Blum:
    +Made as base class. +
  • +
  • October 20, 2022 by Dre Helmns:
    -Created example. +Initial implementation.
"),experiment( diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index c97e440ec23..998c1a8380f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -29,5 +29,29 @@ equation StopTime=86400, Interval=1, Tolerance=1e-06, - __Dymola_Algorithm="Dassl")); + __Dymola_Algorithm="Dassl"),preferredView="info",Documentation(info=" +

+This model implements an example hot water system where the hot water is +produced using +The hydronic arrangement modeled in + +Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithAuxHeat, +thermostatically mixed down to a distribution temperature, and supplied to a fixture load +defined by a schedule. +

+

+\"image\" +

+", revisions=" +
    +
  • +September 11, 2023 by David Blum:
    +Extended base class and updated for release. +
  • +
  • +October 20, 2022 by Dre Helmns:
    +Initial implementation. +
  • +
+")); end HeaterAndFixtureDirectHeatExchangerWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index 7f9fe178528..600301e9b04 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -42,5 +42,29 @@ equation StopTime=86400, Interval=1, Tolerance=1e-06, - __Dymola_Algorithm="Dassl")); + __Dymola_Algorithm="Dassl"),preferredView="info",Documentation(info=" +

+This model implements an example hot water system where the hot water is +produced using +The hydronic arrangement modeled in + +Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank, +thermostatically mixed down to a distribution temperature, and supplied to a fixture load +defined by a schedule. +

+

+\"image\" +

+", revisions=" +
    +
  • +September 11, 2023 by David Blum:
    +Extended base class and updated for release. +
  • +
  • +October 20, 2022 by Dre Helmns:
    +Initial implementation. +
  • +
+")); end HeaterAndFixtureHeatPumpWithTank; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index ac16d9d3c31..963070f7f46 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -140,21 +140,32 @@ equation annotation (Line(points={{-62,0},{-110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

-This model is an example of a domestic hot water (DHW) substation for an -ultra-low-temperature district heating (ULTDH) network. It includes a micro heat -pump and storage tank with direct thermostatic mixing rather than heat exchange. +This model implements a domestic hot water (DHW) substation for an +ultra-low-temperature district heating (ULTDH) network. It uses a heat pump, +circulation pump, and heat exchanger to draw heat from the district network +into a hot water storage tank. +

+

+\"image\"

-For more info, please see Fig. 3 in Evaluations of different domestic hot water +It is based on Fig. 3 in Evaluations of different domestic hot water preparing methods with ultra-low-temperature district heating by X. Yang, H. Li, and S. Svendsen at -doi.org/10.1016/j.energy.2016.04.109. +doi.org/10.1016/j.energy.2016.04.109, as well as the +Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy +published by ASHRAE in 2022 at +https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download.

", revisions="
  • +September 11, 2023 by David Blum:
    +Updated for release. +
  • +
  • July 7, 2022 by Dre Helmns:
    -Created generation model. +Initial Implementation.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index db3e7435568..71b657aa211 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -15,8 +15,8 @@ model ThermostaticMixingValve Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) "Hot water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Actuators.Valves.ThreeWayLinear ValHea( @@ -41,8 +41,8 @@ model ThermostaticMixingValve Medium = Medium, m_flow_nominal=mHot_flow_nominal) "Source hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = Medium) "Mass flow rate of hot water to fixture" @@ -85,13 +85,19 @@ equation 92},{-94,80},{-120,80}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

-This model is for a domestic water mixer, mixing hot and cold fluid to achieve a specified tempered outlet temperature. +This model implements a thermostatic mixing valve, which uses +a PI feedback controller to mix hot and cold fluid to achieve a specified +hot water outlet temperature to send to a fixture(s).

", revisions="
  • +September 11, 2023 by David Blum:
    +Updated for release. +
  • +
  • June 16, 2022 by Dre Helmns:
    -Created valve model. +Initial Implementation.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo index e925af99d2c..8abcc890092 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo @@ -34,13 +34,19 @@ equation 110,-72}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

-This model is for connecting domestic hot water load schedules. +This model implements a hot water sink, representing a fixturs(s), +where the flow rate of hot water draw can be specified as an input fraction +of a nominal value.

", revisions="
  • +September 11, 2023 by David Blum:
    +Updated for release. +
  • +
  • October 20, 2022 by Dre Helmns:
    -Created load model. +Initial Implementation.
"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.png b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.png new file mode 100644 index 0000000000000000000000000000000000000000..721740eec03f9952c8dee75b1f4c9f45883ef207 GIT binary patch literal 22484 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 r*fHsP)GUsPnvMUl1AZ3X6I=;(g~qn-Ce literal 0 HcmV?d00001 diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/Example_DirectHeatExchangerWithAuxHeat.png b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/Example_DirectHeatExchangerWithAuxHeat.png new file mode 100644 index 0000000000000000000000000000000000000000..7deee1c4ce382362c84db0697de142e4b6b44d6b GIT binary patch literal 50371 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 CXG2l| literal 0 HcmV?d00001 diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.png b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.png new file mode 100644 index 0000000000000000000000000000000000000000..af6458e69906a3c96e1ec223e8cd25a72915a356 GIT binary patch literal 37744 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≠wKVe`0 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 Date: Mon, 11 Sep 2023 16:26:06 -0700 Subject: [PATCH 086/183] Add ditribution doc reference --- .../HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo | 6 ++++++ .../HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index 998c1a8380f..0f9a8b2f5c1 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -39,6 +39,12 @@ Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithAuxHeat, thermostatically mixed down to a distribution temperature, and supplied to a fixture load defined by a schedule.

+

+Such distribution is based on the +Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy +published by ASHRAE in 2022 at +https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download. +

\"image\"

diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index 600301e9b04..bce323e66bf 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -52,6 +52,12 @@ Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank, thermostatically mixed down to a distribution temperature, and supplied to a fixture load defined by a schedule.

+

+Such distribution is based on the +Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy +published by ASHRAE in 2022 at +https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download. +

\"image\"

From 812b2c5cbc2b8fdddb0a55304670f7c91364c281 Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Sep 2023 16:27:41 -0700 Subject: [PATCH 087/183] Update doc --- .../HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo index 4378cb1115f..f4b2ffb7fb1 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses; model partialHeaterAndFixture - "Partial base class for heater and fixture examples" + "Partial base class for hot water source, thermostatic mixing, and fixture load examples." replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSetHotSou = 273.15+50 "Temperature setpoint of hot water supply source from heater"; parameter Modelica.Units.SI.Temperature TDis = 273.15+30 "Temperature of water supply from district"; @@ -75,7 +75,7 @@ equation -4},{-10,-26},{10,-26},{10,-40}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

-This is an example of a domestic water heater and fixture. +Partial base class for hot water source, thermostatic mixing, and fixture load examples.

", revisions="
    From fa4a1ec8fdc0c76425c18fa3426a0efaa9337443 Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Sep 2023 16:30:25 -0700 Subject: [PATCH 088/183] Update doc --- .../DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo | 2 +- Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index b206029199f..a183abeab82 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -77,7 +77,7 @@ equation annotation (preferredView="info",Documentation(info="

    This model implements a basic domestic hot water (DHW) substation for a -low-temperature district heating (LTDH) network. It includes preheating by the +low-temperature district heating network. It includes preheating by the district through a heat-exchanger and optional electric resistance to bring the temperature of produced hot water to setpoint.

    diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index 963070f7f46..a12ee61b335 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -140,8 +140,8 @@ equation annotation (Line(points={{-62,0},{-110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

    -This model implements a domestic hot water (DHW) substation for an -ultra-low-temperature district heating (ULTDH) network. It uses a heat pump, +This model implements a domestic hot water (DHW) substation for a low-temperature +district heating network. It uses a heat pump, circulation pump, and heat exchanger to draw heat from the district network into a hot water storage tank.

    From 8e0c471aa8d17c96856d02a6e0382a06a06cc23c Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 11 Sep 2023 16:31:33 -0700 Subject: [PATCH 089/183] Update doc --- .../DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo | 2 +- Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index a183abeab82..62fb0b1a606 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -76,7 +76,7 @@ equation -12,18},{-12,-22},{96,-22},{96,-20},{110,-20}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

    -This model implements a basic domestic hot water (DHW) substation for a +This model implements a basic domestic hot water source for a low-temperature district heating network. It includes preheating by the district through a heat-exchanger and optional electric resistance to bring the temperature of produced hot water to setpoint. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index a12ee61b335..4cccbf53de7 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -140,7 +140,7 @@ equation annotation (Line(points={{-62,0},{-110,0}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

    -This model implements a domestic hot water (DHW) substation for a low-temperature +This model implements a domestic hot water source for a low-temperature district heating network. It uses a heat pump, circulation pump, and heat exchanger to draw heat from the district network into a hot water storage tank. From 2d8c465805e31838bad274feee5d9087952a0920 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 09:35:46 -0700 Subject: [PATCH 090/183] Add documentation of system level models --- .../Combined/HeatPumpHeatExchanger.mo | 83 ++++++++++++++++- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 91 ++++++++++++++++++- .../Combined/Subsystems/HeatPumpDHWTank.mo | 31 +++---- .../Combined/BuildingTimeSeriesWithETS.mo | 2 +- .../BuildingTimeSeriesWithETSWithDHWTank.mo | 24 ++++- .../Examples/BuildingTimeSeriesWithETS.mo | 10 +- .../BuildingTimeSeriesWithETSDHWTank.mo | 12 ++- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 8 +- 8 files changed, 228 insertions(+), 33 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 634e94cc8b5..0d82576438b 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.EnergyTransferStations.Combined; model HeatPumpHeatExchanger - "Model of a substation with heat pump and compressor-less cooling" + "Model of a substation with heat pump for heating, heat pump for domestic hot water, and compressor-less cooling" extends Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger( volMix_a(nPorts=4), volMix_b(nPorts=4)); @@ -71,4 +71,85 @@ equation annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); connect(heaFloEvaSHW.u1, div1.u1) annotation (Line(points={{-102,106},{-290, 106},{-290,-34},{-102,-34}}, color={0,0,127})); + annotation ( + Documentation(info=" +

    +This model uses the base energy transfer station defined in + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger. +

    +

    Domestic Hot Water

    +

    +Domestic hot water is produced using a dedicated water-to-water heat pump +on-demand with no storage. +

    +

    +Heating is enabled based on the input signal uSHW +which is held for 15 minutes, meaning that, +when enabled, the mode remains active for at least 15 minutes and, +when disabled, the mode cannot be enabled again for at least 15 minutes. +The enable signal should be computed externally based +on a schedule (to lock out the system during off-hours), ideally in conjunction +with the number of requests or any other signal representative of the load. +

    +

    +When enabled, +

    + +", + revisions=" +
      +
    • +September 13, 2023, by David Blum:
      +Extended from partial base class. +This is for + +issue 3063. +
    • +
    • +May 17, 2023, by David Blum:
      +Assigned dp_nominal to pum1HexChi.
      +Corrected calculation of heat pump evaporator mass flow control.
      +This is for + +issue 3379. +
    • +
    • +February 23, 2021, by Antoine Gautier:
      +Refactored with subsystem models and partial ETS base class.
      +This is for + +issue 1769. +
    • +
    • +December 12, 2017, by Michael Wetter:
      +Removed call to Modelica.Utilities.Files.loadResource.
      +This is for +issue 1097. +
    • +
    +")); end HeatPumpHeatExchanger; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index b034402de33..c67b52abff5 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.EnergyTransferStations.Combined; model HeatPumpHeatExchangerDHWTank - "Model of a substation with heat pump and compressor-less cooling with domestic hot water served by a heat pump with storage tank" + "Model of a substation with heat pump for heating, heat pump with storage tank for domestic hot water, and compressor-less cooling" extends Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger( volMix_b(nPorts=4), @@ -97,4 +97,93 @@ equation -12,68},{-8,68},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, {68,24},{68,120},{-108,120},{-108,106},{-102,106}}, color={0,0,127})); + annotation ( + Documentation(info=" +

    +This model uses the base energy transfer station defined in + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger. +

    +

    Domestic Hot Water

    +

    +Domestic hot water is produced using a dedicated water-to-water heat pump +with storage tank. +

    +

    +Heating is enabled based on the input signal uSHW +which is held for 15 minutes, meaning that, +when enabled, the mode remains active for at least 15 minutes and, +when disabled, the mode cannot be enabled again for at least 15 minutes. +The enable signal should be computed externally based +on a schedule (to lock out the system during off-hours), ideally in conjunction +with the number of requests or any other signal representative of the load. +

    +

    +When enabled, +

    + +", + revisions=" +
      +
    • +September 13, 2023, by David Blum:
      +Extended from partial base class. +This is for + +issue 3063. +
    • +
    • +May 17, 2023, by David Blum:
      +Assigned dp_nominal to pum1HexChi.
      +Corrected calculation of heat pump evaporator mass flow control.
      +This is for + +issue 3379. +
    • +
    • +February 23, 2021, by Antoine Gautier:
      +Refactored with subsystem models and partial ETS base class.
      +This is for + +issue 1769. +
    • +
    • +December 12, 2017, by Michael Wetter:
      +Removed call to Modelica.Utilities.Files.loadResource.
      +This is for +issue 1097. +
    • +
    +")); end HeatPumpHeatExchangerDHWTank; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 7fd5916d290..9102c5a019d 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -1,6 +1,6 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; model HeatPumpDHWTank - "Base subsystem with water-to-water heat pump with storage tank for domestic hot waterr" + "Base subsystem with water-to-water heat pump with storage tank for domestic hot water" replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium "Medium model on condenser side" annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), @@ -219,15 +219,13 @@ equation coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), Documentation(info="

    -This model represents a water-to-water heat pump, an evaporator water pump, -and an optional condenser water pump if have_pumCon is set to -true. -The heat pump model is described in - -Buildings.Fluid.HeatPumps.Carnot_TCon. -By default variable speed pumps are considered. -Constant speed pumps may also be represented by setting have_varFloEva -and have_varFloCon to false. +This model represents a water-to-water heat pump with storage tank and an evaporator water pump. +The heat pump model with storage tank is described in + +Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank. +By default a variable speed evaporator pump is considered. +A constant speed pump may also be represented by setting have_varFloEva +to false.

    Controls

    @@ -237,14 +235,13 @@ When enabled,

    • -the evaporator and optionally the condenser water pumps are commanded on and supply either -the mass flow rate set point provided as an input in the case of variable speed pumps, -or the nominal mass flow rate in the case of constant speed pumps, +the evaporator pump is commanded on and supply either +the mass flow rate set point provided as an input in the case of a variable speed pump, +or the nominal mass flow rate in the case of a constant speed pump,
    • -the heat pump is commanded on when the evaporator and optionally the condenser water pump -are proven on. When enabled, the heat pump controller—idealized in this model—tracks the -supply temperature set point at the condenser outlet. +the heat pump with storage tank system operates to maintain the desired +storage tank temperature.
    ", revisions=" diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo index ad1f1c6c595..60e44e1372d 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo @@ -96,7 +96,7 @@ equation Documentation(info="

    This model is composed of a heat pump based energy transfer station model - + Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchanger connected to a simplified building model where the space heating, cooling and hot water loads are provided as time series. diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo index f8f989cf390..3857167c8da 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -1,5 +1,6 @@ within Buildings.Experimental.DHC.Loads.Combined; model BuildingTimeSeriesWithETSWithDHWTank + "Model of a building with loads provided as time series, connected to an ETS with domestic hot water storage tank" extends BuildingTimeSeriesWithETS( redeclare Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchangerDHWTank @@ -9,7 +10,24 @@ model BuildingTimeSeriesWithETSWithDHWTank QHeaWat_flow_nominal=QHea_flow_nominal, QHotWat_flow_nominal=QHot_flow_nominal, datWatHea=datWatHea)); - parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea - "Performance data" - annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); + parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" + annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); + annotation (Documentation(info=" +

    +This model is the same as + +Buildings.Experimental.DHC.Loads.Combined.BuildingTimeSeriesWithETS +except that it implements an ETS that uses a heat pump with hot water +storage tank for production of domestic hot water. That ETS model is + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchangerDHWTank. +

    +", revisions=" +
      +
    • +September 13, 2022, by David Blum:
      +First implementation. +
    • +
    +")); end BuildingTimeSeriesWithETSWithDHWTank; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo index b0e0d6a19fd..bbe7c5ca3a1 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETS.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.Loads.Combined.Examples; model BuildingTimeSeriesWithETS - "Example model of a building with loads provided as time series for heat pump heating and free cooling in an ambient district network" + "Example model of a building in an ambient district network with loads provided as time series and heat pump heating, free cooling, and heat pump domestic hot water" extends Modelica.Icons.Example; package Medium=Buildings.Media.Water "Medium model"; @@ -84,9 +84,11 @@ equation Tolerance=1e-06), Documentation(info="

    -Example model of a building with loads provided as time series for heat -pump space heating, heat pump domestic hot water heating, -and free cooling in an ambient district network. +Example model of a building in an ambient district network with loads +provided as time series and heat pump heating, free cooling, +and heat pump domestic hot water. It uses + +Buildings.Experimental.DHC.Loads.Combined.BuildingTimeSeriesWithETS

    ", revisions="
      diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 17b8e91319c..2dd3e8513f0 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.Loads.Combined.Examples; model BuildingTimeSeriesWithETSDHWTank - "Example model of a building with loads provided as time series for heating, cooling, and domestic hot water heat pump and tank" + "Example model of a building in an ambient district network with loads provided as time series and heat pump heating, free cooling, and heat pump with storage tank domestic hot water" extends Modelica.Icons.Example; package Medium=Buildings.Media.Water "Medium model"; @@ -94,14 +94,16 @@ equation __Dymola_Algorithm="Dassl"), Documentation(info="

      -This model provides an example for a building with loads provided -as time series and connected to a direct ETS for cooling with the -return chilled water temperature controlled above a minimum threshold. +Example model of a building in an ambient district network with loads +provided as time series and heat pump heating, free cooling, and heat pump +with storage tank domestic hot water + +Buildings.Experimental.DHC.Loads.Combined.BuildingTimeSeriesWithETSWithDHWTank

      ", revisions="
      • -March 20, 2022, by Chengnan Shi:
        +September 13, 2023, by David Blum:
        First implementation.
      diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index 4cccbf53de7..ae11e833a1f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -143,7 +143,13 @@ equation This model implements a domestic hot water source for a low-temperature district heating network. It uses a heat pump, circulation pump, and heat exchanger to draw heat from the district network -into a hot water storage tank. +into a hot water storage tank. +The heat pump model is described in + +Buildings.Fluid.HeatPumps.Carnot_TCon. +The storage tank model is describedd in + +Buildings.Fluid.Storage.StratifiedEnhancedInternalHex.

      \"image\" From 037292b18bde140c1d80d8ce429445daf81e04ff Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 09:42:09 -0700 Subject: [PATCH 091/183] Small doc and naming edits --- .../Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo | 8 ++++---- .../Combined/Subsystems/HeatPumpDHWTank.mo | 8 ++++---- .../Loads/Combined/BaseClasses/PartialBuildingWithETS.mo | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index 291c466be12..38bef9c8009 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -48,7 +48,7 @@ model PartialHeatPumpHeatExchanger THeaWatSup_nominal - dT_nominal "Heating water return temperature" annotation (Dialog(group="Nominal condition")); parameter Modelica.Units.SI.Temperature THotWatSup_nominal=336.15 - "Hot water supply temperature to fixture" + "Domestic hot water supply temperature to fixtures" annotation (Dialog(group="Nominal condition", enable=have_hotWat)); parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 "Cold water temperature (for hot water production)" @@ -128,7 +128,7 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Interfaces.RealInput THotWatSupSet( final unit="K", displayUnit="degC") if have_hotWat - "Domestic hot water temperature set point for supply to fixture(s)" + "Domestic hot water temperature set point for supply to fixtures" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, @@ -362,8 +362,8 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = - MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium + = MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW( diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 9102c5a019d..6038e0bd935 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -143,8 +143,8 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add annotation (Placement(transformation(extent={{140,-18},{160,2}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHw(k=datWatHea.THotSou_nominal) - "Set point of water leaving heat pump and in tank" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHotSou(k=datWatHea.THotSou_nominal) + "Set point of water in hot water tank" annotation (Placement(transformation(extent={{-200,0},{-180,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") "Actual heat pump heating heat flow rate added to fluid" annotation ( @@ -196,8 +196,8 @@ equation connect(heaPumTan.QCon_flow, QCon_flow) annotation (Line(points={{21,-12},{82, -12},{82,-100},{220,-100}}, color={0,0,127})); - connect(TSetHw.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166,10},{ - -166,28},{-142,28}}, color={0,0,127})); + connect(TSetHotSou.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166, + 10},{-166,28},{-142,28}}, color={0,0,127})); annotation ( defaultComponentName="heaPum", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo index 656b400ce4e..5cfcb42a1fd 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BaseClasses/PartialBuildingWithETS.mo @@ -30,7 +30,7 @@ model PartialBuildingWithETS "Heating water supply temperature" annotation (Dialog(group="ETS model parameters")); parameter Modelica.Units.SI.Temperature THotWatSup_nominal=63 + 273.15 - "Hot water supply temperature to fixtures" + "Domestic hot water supply temperature to fixtures" annotation (Dialog(group="ETS model parameters", enable=have_hotWat)); parameter Modelica.Units.SI.Temperature TColWat_nominal=288.15 "Cold water temperature (for hot water production)" From 54dd6d57bf51f498900db0aef5817a21707e5059 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 09:51:29 -0700 Subject: [PATCH 092/183] Small edits --- .../DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo | 4 ++-- .../Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo index be0fb3ebff0..e557694aeb3 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.Loads.HotWater.Data; record GenericHeatPumpWaterHeater - "Equipment specifications for a generic heat pump water heater" + "Equipment specifications for a generic heat pump water heater with storage tank" parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; @@ -12,8 +12,8 @@ record GenericHeatPumpWaterHeater parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; parameter Modelica.Units.SI.Temperature THotSou_nominal = 333.15 "Temperature of fluid leaving tank at nominal conditions"; + parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; parameter Modelica.Units.SI.TemperatureDifference dTTanHex = 3 "Temperature difference between heat pump outlet and tank leaving temperature at nominal conditions"; parameter Modelica.Units.SI.Temperature THex_nominal = THotSou_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index ae11e833a1f..992339b1c55 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -147,9 +147,12 @@ into a hot water storage tank. The heat pump model is described in Buildings.Fluid.HeatPumps.Carnot_TCon. -The storage tank model is describedd in +The storage tank model is described in Buildings.Fluid.Storage.StratifiedEnhancedInternalHex. +The heat pump and storage tank system should be parameterized altogether using + +Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater.

      \"image\" From e4aa94975b45949f26889e7efd3e9dd0d9ad2534 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 15:24:51 -0700 Subject: [PATCH 093/183] Add unit test scripts for dhw package and ETS with dhw tank example --- .../Examples/BuildingTimeSeriesWithETSDHWTank.mo | 7 +++---- .../BaseClasses/partialHeaterAndFixture.mo | 6 +++--- ...aterAndFixtureDirectHeatExchangerWithAuxHeat.mo | 6 +++--- .../Examples/HeaterAndFixtureHeatPumpWithTank.mo | 6 +++--- .../DHC/Loads/HotWater/ThermostaticMixingValve.mo | 14 +++++++------- .../Examples/BuildingTimeSeriesWithETSDHWTank.mos | 14 ++++++++++++++ ...terAndFixtureDirectHeatExchangerWithAuxHeat.mos | 6 ++++++ .../Examples/HeaterAndFixtureHeatPumpWithTank.mos | 6 ++++++ 8 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 2dd3e8513f0..392537f61b9 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -52,7 +52,7 @@ model BuildingTimeSeriesWithETSDHWTank annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* - 2.2, + 4, QCon_flow_max=datWatHea.QCon_flow_nominal, QCon_flow_nominal=bui.QHot_flow_nominal, TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, @@ -87,11 +87,10 @@ equation coordinateSystem( preserveAspectRatio=false)), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSWithDHWTank.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos" "Simulate and plot"), experiment( StopTime=864000, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"), + Tolerance=1e-06), Documentation(info="

      Example model of a building in an ambient district network with loads diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo index f4b2ffb7fb1..6772b420d9d 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -23,8 +23,8 @@ model partialHeaterAndFixture mHot_flow_nominal=mHot_flow_nominal, dpValve_nominal=dpValve_nominal) "Ideal thermostatic mixing valve" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Modelica.Blocks.Interfaces.RealOutput TTem(final unit="K", displayUnit="degC") - "Temperature of the outlet tempered water" + Modelica.Blocks.Interfaces.RealOutput THot(final unit="K", displayUnit="degC") + "Temperature of the outlet hot water" annotation (Placement(transformation(extent={{100,50},{120,70}}))); Fluid.Sources.MassFlowSource_T souDis( redeclare package Medium = Medium, @@ -63,7 +63,7 @@ model partialHeaterAndFixture "Temperature setpoint for hot water supply to fixture" annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); equation - connect(tmv.TTem, TTem) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, + connect(tmv.THot,THot) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, color={0,0,127})); connect(loa.sch, sch.y[1]) annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index 0f9a8b2f5c1..9312a516fc0 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -27,9 +27,9 @@ equation 110,80}}, color={0,0,127})); annotation (experiment( StopTime=86400, - Interval=1, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"),preferredView="info",Documentation(info=" + Tolerance=1e-06), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos" + "Simulate and plot"),Documentation(info="

      This model implements an example hot water system where the hot water is produced using diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index bce323e66bf..f4970e1d87e 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -40,9 +40,9 @@ equation 80}}, color={0,0,127})); annotation (experiment( StopTime=86400, - Interval=1, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"),preferredView="info",Documentation(info=" + Tolerance=1e-06), + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos" + "Simulate and plot"),Documentation(info="

      This model implements an example hot water system where the hot water is produced using diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index 71b657aa211..c0ae9589697 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -15,8 +15,8 @@ model ThermostaticMixingValve Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) "Hot water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Actuators.Valves.ThreeWayLinear ValHea( @@ -34,15 +34,15 @@ model ThermostaticMixingValve Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = Medium) "Port for domestic cold water supply" annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); - Modelica.Blocks.Interfaces.RealOutput TTem - "Temperature of the outlet tempered water supply to fixture" + Modelica.Blocks.Interfaces.RealOutput THot + "Temperature of the outlet hot water supply to fixture" annotation (Placement(transformation(extent={{100,50},{120,70}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package Medium = Medium, m_flow_nominal=mHot_flow_nominal) "Source hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = Medium) "Mass flow rate of hot water to fixture" @@ -62,7 +62,7 @@ equation {20,-6.66134e-16},{20,0}}, color={0,127,255})); connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ 9.99201e-16,12}}, color={0,0,127})); - connect(senTemHot.T, TTem) annotation (Line(points={{30,11},{30,40},{90,40},{ + connect(senTemHot.T,THot) annotation (Line(points={{30,11},{30,40},{90,40},{ 90,60},{110,60}}, color={0,0,127})); connect(ValHea.port_1, senTemHotSou.port_b) annotation (Line(points={{-10, 1.77636e-15},{-10,2},{-20,2}}, color={0,127,255})); diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos new file mode 100644 index 00000000000..40daec9a345 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos @@ -0,0 +1,14 @@ +// Script generated by Dymola Wed May 3 07:50:59 2023 +simulateModel("Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank", tolerance=1e-6, startTime=0, stopTime=864000, method="CVode", resultFile="BuildingTimeSeriesWithETSDHWTank"); +// Plot commands +createPlot(filename="BuildingTimeSeriesWithETSDHWTank.mat", id=1, position={540, 9, 784, 614}, y={"bui.ets.proHeaWat.heaPum.QCon_flow_nominal", "bui.ets.proHeaWat.heaPum.QCon_flow"}, range={0.0, 10.0, -200000.0, 400000.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); +createPlot(id=1, position={540, 9, 784, 614}, y={"bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow_nominal", "bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow"}, range={0.0, 10.0, -2000.0, 4000.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); +createPlot(id=1, position={540, 9, 784, 614}, y={"bui.PHea", "bui.PPum"}, range={0.0, 10.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); +createPlot(id=1, position={540, 9, 784, 614}, y={"bui.QHea_flow", "bui.QCoo_flow"}, range={0.0, 10.0, -200000.0, 400000.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); + +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.loaSHW"}, range={0.0, 900000.0, -2000.0, 4000.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.THotWatSupSet", "bui.ets.tmv.THot"}, range={0.0, 900000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", ""}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.proHotWat.senTHotSup.T", "bui.ets.proHotWat.TSetHotSou.y"}, range={0.0, 900000.0, 250.0, 350.0}, grid=true, subPlot=103, colors={{238,46,47}, {28,108,200}}, timeUnit="s", displayUnits={"K", ""}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.sinDHW.ports[1].m_flow"}, range={0.0, 900000.0, -0.02, 0.039999999999999994}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.proHotWat.PHea"}, range={0.0, 900000.0, -1000.0, 1000.0}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); + diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos new file mode 100644 index 00000000000..dec29ad1a51 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithAuxHeat"); +createPlot(id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); +createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); +createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); + diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos new file mode 100644 index 00000000000..cf047e6b90b --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureHeatPumpWithTank"); +createPlot(id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); +createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); +createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); + From 55a357e31ecf77e16ac9187cf880fabd3dbc2160 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 15:30:44 -0700 Subject: [PATCH 094/183] Remove DHW package files already copied to new package --- ...tHeatExchangerWaterHeaterWithAuxHeatOLD.mo | 64 ----- .../DELETE/HeatPumpWaterHeaterWithTankOLD.mo | 81 ------ .../DHW/BaseClasses/DELETE/IdealValve.mo | 109 -------- .../DELETE/PartialDHWGeneration.mo | 28 -- .../Heating/DHW/BaseClasses/DELETE/package.mo | 6 - .../DHW/BaseClasses/DELETE/package.order | 4 - .../DHW/BaseClasses/PartialFourPortDHW.mo | 37 --- .../Loads/Heating/DHW/BaseClasses/package.mo | 16 -- .../Heating/DHW/BaseClasses/package.order | 2 - .../DHW/DELETE/AnnualScheduleDHWLoad.mo | 90 ------- .../DHC/Loads/Heating/DHW/DELETE/package.mo | 3 - .../Loads/Heating/DHW/DELETE/package.order | 1 - .../DHC/Loads/Heating/DHW/DHWLoad.mo | 74 ----- .../DHW/Data/GenericHeatPumpWaterHeater.mo | 57 ---- .../Heating/DHW/Data/HeatPumpWaterHeater.mo | 55 ---- .../DHC/Loads/Heating/DHW/Data/package.mo | 4 - .../DHC/Loads/Heating/DHW/Data/package.order | 2 - ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 94 ------- .../Loads/Heating/DHW/DomesticWaterMixer.mo | 176 ------------ .../DHC/Loads/Heating/DHW/Examples/DELETE.mo | 252 ------------------ .../DHW/Examples/DomesticWaterFixture.mo | 92 ------- .../DHW/Examples/DomesticWaterHeater.mo | 98 ------- .../Examples/DomesticWaterHeaterAndFixture.mo | 113 -------- .../DHC/Loads/Heating/DHW/Examples/package.mo | 16 -- .../Loads/Heating/DHW/Examples/package.order | 4 - .../DHW/HeatPumpWaterHeaterWithTank.mo | 211 --------------- .../DHC/Loads/Heating/DHW/package.order | 8 - 27 files changed, 1697 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo delete mode 100644 Buildings/Experimental/DHC/Loads/Heating/DHW/package.order diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo deleted file mode 100644 index 68dc226903b..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo +++ /dev/null @@ -1,64 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; -model DirectHeatExchangerWaterHeaterWithAuxHeatOLD - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; - - parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if haveER == true - "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,-10},{30,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dp1_nominal=0, - dp2_nominal=0, - eps=0.85) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); -protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, - final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if haveER == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); - -equation - connect(senTemAuxHeaOut.port_b, port_hw) - annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); - connect(hex.port_a1, port_cw) - annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); - connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, - 12},{-50,12}}, - color={0,127,255})); - connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, - 12},{-80,60},{-80,60},{-80,100}}, - color={0,127,255})); - connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); - connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, - {0,-28},{10,-28}}, color={0,127,255})); - connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, - {40,-28},{40,0},{60,0}}, color={0,127,255})); - connect(conTSetHw.y, heaDhw.TSet) - annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); - connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, - 40},{106,40}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DirectHeatExchangerWaterHeaterWithAuxHeatOLD; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo deleted file mode 100644 index 727f2b6ed2f..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo +++ /dev/null @@ -1,81 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; -model HeatPumpWaterHeaterWithTankOLD - "A model for domestic water heating served by heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE.PartialDHWGeneration; - - parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package - Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - QCon_flow_nominal=QCon_flow_nominal, - dp1_nominal=0, - dp2_nominal=0) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); - Fluid.Storage.StratifiedEnhancedInternalHex tan( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - VTan=VTan, - hTan=hTan, - dIns=dIns, - kIns=kIns, - nSeg=5, - redeclare package MediumHex = Medium, - CHex=40, - Q_flow_nominal=0.278*4200*20, - hHex_a=0.995, - hHex_b=0.1, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, - allowFlowReversalHex=false, - mHex_flow_nominal=mHex_flow_nominal, - TTan_nominal=293.15, - THex_nominal=323.15, - dpHex_nominal=dpHex_nominal) - "Hot water tank with heat exchanger configured as steady state" - annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-28,20}))); -equation - connect(senTemTankOut.port_b, port_hw) - annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); - connect(port_dhs, heaPum.port_a2) - annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); - connect(heaPum.port_b2, port_dhr) - annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); - connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, - 40}}, color={0,0,127})); - connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, - {-80,39},{-72,39}}, color={0,0,127})); - connect(port_cw, tan.port_b) - annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, - -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, - {-28,-3.8},{-28,10}}, color={0,127,255})); - connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeaterWithTankOLD; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo deleted file mode 100644 index 7b1f51acfcc..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/IdealValve.mo +++ /dev/null @@ -1,109 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; -model IdealValve "Ideal three-way valve" - extends Modelica.Blocks.Icons.Block; - replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" - annotation (choicesAllMatching = true); - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Design chilled water supply flow"; - parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; - Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{50,88}, - {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{50,-108}, - {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{90,-10}, - {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( - transformation(extent={{-120,-10},{-100,10}}), - iconTransformation(extent={{-120,-10},{-100,10}}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package - Medium = - Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( - Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={0,-40}))); - Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( - redeclare package Medium = Medium, - control_m_flow=true, - control_dp=false, - m_flow_small=m_flow_nominal*1E-5, - show_V_flow=false, - allowFlowReversal=false) "Prescribed mass flow rate for the bypass" - annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=180, - origin={50,0}))); - Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" - annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); - Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" - annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); - Modelica.Blocks.Math.Feedback feedback - annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); - Modelica.Blocks.Logical.Switch fraSwi - annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); - Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" - annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); - Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) - annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); -equation - connect(feedback.u1, one.y) - annotation (Line(points={{-58,22},{-69,22}}, - color={0,0,127})); - connect(y, feedback.u2) - annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); - connect(preMasFlo.port_a, port_3) - annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, - 0}}, color={0,127,255})); - connect(feedback.y, pro.u1) - annotation (Line(points={{-41,22},{-30,22}}, - color={0,0,127})); - connect(pro.y, preMasFlo.m_flow_in) - annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); - connect(port_1, senMasFlo.port_a) - annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, - -30}}, color={0,127,255})); - connect(senMasFlo.port_b, port_2) - annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, - -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); - connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, - 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, - color={0,127,255})); - connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, - {-60,-12},{-42,-12}}, color={0,0,127})); - connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, - {-42,-28}}, color={0,0,127})); - connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, - {-40,0},{-40,10},{-30,10}}, color={0,0,127})); - connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, - {-42,-20}}, color={255,0,255})); - annotation ( - Icon( - graphics={ - Polygon( - points={{60,0},{68,14},{52,14},{60,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line(points={{60,100},{60,-100}}, color={28,108,200}), - Line(points={{102,0},{62,0}}, color={28,108,200}), - Polygon( - points={{60,0},{68,-14},{52,-14},{60,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line(points={{62,0},{-98,0}}, color={0,0,0}), - Rectangle( - visible=use_inputFilter, - extent={{28,-10},{46,10}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Polygon( - points={{72,-8},{72,8},{60,0},{72,-8}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid)})); -end IdealValve; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo deleted file mode 100644 index 77c044e42be..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo +++ /dev/null @@ -1,28 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.DELETE; -partial model PartialDHWGeneration - "A partial model for domestic water heating" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package - Medium = Medium) "Hot water supply port" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package - Medium = Medium) "Port for domestic cold water inlet" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package - Medium = Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package - Medium = Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); - Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{96,30},{116,50}}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end PartialDHWGeneration; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo deleted file mode 100644 index 13bf1a12237..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.mo +++ /dev/null @@ -1,6 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; -package DELETE "These models are outdated" - - - -end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order deleted file mode 100644 index 688c9bc1853..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/DELETE/package.order +++ /dev/null @@ -1,4 +0,0 @@ -PartialDHWGeneration -DirectHeatExchangerWaterHeaterWithAuxHeatOLD -HeatPumpWaterHeaterWithTankOLD -IdealValve diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo deleted file mode 100644 index 0c43735537a..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/PartialFourPortDHW.mo +++ /dev/null @@ -1,37 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses; -partial model PartialFourPortDHW - "A partial model for domestic water heating" - extends Buildings.Fluid.Interfaces.PartialFourPort( - redeclare final package Medium1=Medium, - redeclare final package Medium2=Medium); - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") - "Electric power required for heating equipment" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput TSetHw - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" - annotation (Placement(transformation(extent={{60,80},{80,100}}))); -protected - parameter Boolean have_PEle "Flag that specifies whether electric power is required for water heating"; -equation - connect(zero.y,PHea) - annotation (Line(points={{81,90},{82,90},{82,0},{110,0}}, - color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This partial model can be used for different domestic hot water generation methods. -

      -", revisions=" -
        -
      • -September 29, 2022 by Dre Helmns:
        -Created partial model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end PartialFourPortDHW; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo deleted file mode 100644 index 9dcbfdc5299..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.mo +++ /dev/null @@ -1,16 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -package BaseClasses "Package with base classes that are used by multiple models" - extends Modelica.Icons.BasesPackage; - - - - - -annotation (Documentation(info=" -

      -This package contains base classes that are used to construct the classes in - -Buildings.Experimental.DHC.Loads.Heating.DHW. -

      -")); -end BaseClasses; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order deleted file mode 100644 index eb2a1333c46..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/BaseClasses/package.order +++ /dev/null @@ -1,2 +0,0 @@ -PartialFourPortDHW -DELETE diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo deleted file mode 100644 index 916857997d6..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/AnnualScheduleDHWLoad.mo +++ /dev/null @@ -1,90 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.DELETE; -model AnnualScheduleDHWLoad - "A model with an annual schedule of domestic water draws" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - - Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{60,10},{40,30}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=true, - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,10},{80,30}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}), - iconTransformation(extent={{100,-60},{120,-40}}))); -equation - connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, - {-20,8},{-44,8}}, color={0,0,127})); - connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, - {39,20}}, color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{61,-80},{110,-80}}, color={0,0,127})); - connect(sinDhw.ports[1], port_tw) - annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); - connect(schDhw.y[1], gaiDhw.u) - annotation (Line(points={{79,20},{62,20}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This model is for connecting domestic hot water load schedules. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created load model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-47.728,58.2054},{-65.772,38.1027},{-65.772,-4.6152},{-40, - -37.2823},{-14.228,-4.6152},{-14.228,38.1027},{-32.272,58.2054},{ - -40,73.2823},{-47.728,58.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, - -57.282},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, - 53.2823},{-7.728,38.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{32.272,18.2054},{14.228,-1.8973},{14.228,-44.615},{40, - -77.282},{65.772,-44.615},{65.772,-1.8973},{47.728,18.2054},{40, - 33.2823},{32.272,18.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-147,139},{153,99}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end AnnualScheduleDHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo deleted file mode 100644 index 3401fe66e14..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.mo +++ /dev/null @@ -1,3 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -package DELETE "These are DHW models to be deleted" -end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order deleted file mode 100644 index 8aacf68236d..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DELETE/package.order +++ /dev/null @@ -1 +0,0 @@ -AnnualScheduleDHWLoad diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo deleted file mode 100644 index c529029027c..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DHWLoad.mo +++ /dev/null @@ -1,74 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -model DHWLoad "A model for domestic water draws" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - - Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{60,10},{40,30}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-82},{120,-62}}), - iconTransformation(extent={{100,-82},{120,-62}}))); - Modelica.Blocks.Interfaces.RealInput schDhw - "Domestic hot water fraction schedule" annotation (Placement(transformation( - extent={{120,20},{100,40}}), iconTransformation(extent={{120,20},{100, - 40}}))); -equation - connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, - {-20,8},{-44,8}}, color={0,0,127})); - connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, - {39,20}}, color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{61,-80},{86,-80},{86,-72},{110,-72}}, - color={0,0,127})); - connect(sinDhw.ports[1], port_tw) - annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); - connect(schDhw, gaiDhw.u) annotation (Line(points={{110,30},{86,30},{86,20},{ - 62,20}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This model is for connecting domestic hot water load schedules. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created load model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, - -57.2823},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, - 53.2823},{-7.728,38.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-70,70},{70,-70}}, - lineColor={0,0,0}, - pattern=LinePattern.Dash, - lineThickness=1), - Text( - extent={{-147,143},{153,103}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo deleted file mode 100644 index e0b0c355910..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/GenericHeatPumpWaterHeater.mo +++ /dev/null @@ -1,57 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; -record GenericHeatPumpWaterHeater - "Equipment specifications for a generic heat pump water heater" - parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 333.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; - parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; - parameter Modelica.Units.SI.PressureDifference dp2_nominal = 5000 "Pressure drop across evaporator"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - annotation (preferredView="info",Documentation(info=" -

      -This record corresponds to a generic heat pump water heater. -

      -", revisions=" -
        -
      • -November 22, 2022 by Dre Helmns:
        -Created record. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end GenericHeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo deleted file mode 100644 index b114d820058..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/HeatPumpWaterHeater.mo +++ /dev/null @@ -1,55 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Data; -record HeatPumpWaterHeater - "Equipment specifications for a typical heat pump water heater" - parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.508 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - annotation (preferredView="info",Documentation(info=" -

      -This record corresponds to a 50-gallon Rheem or A.O. Smith heat pump water heater that would commonly be used in a single apartment unit of a multifamily residential building. -

      -", revisions=" -
        -
      • -November 22, 2022 by Dre Helmns:
        -Created record. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo deleted file mode 100644 index dc5bc14869c..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.mo +++ /dev/null @@ -1,4 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -package Data "Library for DHW load profiles, equipment specifications, etc..." - -end Data; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order deleted file mode 100644 index 95fdcdc786b..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Data/package.order +++ /dev/null @@ -1,2 +0,0 @@ -HeatPumpWaterHeater -GenericHeatPumpWaterHeater diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo deleted file mode 100644 index 40faaac645b..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ /dev/null @@ -1,94 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -model DirectHeatExchangerWaterHeaterWithAuxHeat - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW( - final have_PEle = have_eleHea); - parameter Modelica.Units.SI.Efficiency eps(min=0,max=1) = 0.8 "Heat exchanger effectiveness"; - parameter Boolean have_eleHea = true "True if has auxiliary electric heater"; - parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for electric heater (positive)" - annotation(Dialog(enable=have_eleHea)); - - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - dp_nominal=0, - QMax_flow=QMax_flow) - if have_eleHea == true "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,16},{30,-4}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-4},{80,16}}))); - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dp1_nominal=0, - dp2_nominal=0, - eps=eps) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); -protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, - final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if have_eleHea == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,44},{30,24}}))); - -equation - connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); - connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-20,6},{10,6}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{-4,6}, - {-4,34},{10,34}}, color={0,127,255})); - connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,34},{ - 44,34},{44,6},{60,6}}, color={0,127,255})); - connect(senTemAuxHeaOut.port_b, port_b1) annotation (Line(points={{80,6},{90,6}, - {90,60},{100,60}}, color={0,127,255})); - connect(port_a1, hex.port_a1) - annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); - connect(heaDhw.Q_flow,PHea) annotation (Line(points={{31,-2},{40,-2},{40,-20}, - {94,-20},{94,0},{110,0}}, color={0,0,127})); - connect(TSetHw, heaDhw.TSet) annotation (Line(points={{-110,0},{-90,0},{-90,-20}, - {0,-20},{0,-2},{8,-2}}, color={0,0,127})); - connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, - -60}}, color={0,127,255})); - connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, - -6}}, color={0,127,255})); - annotation (preferredView="info",Documentation(info=" -

      -This model is an example of a domestic hot water (DHW) substation for a -low-temperature district heating (LTDH) network. It includes preheating by the -district and optional electric resistance to bring the temperature to setpoint. -

      -

      -For more info, please see Fig. 5 in Evaluations of different domestic hot water -preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at -doi.org/10.1016/j.energy.2016.04.109. -

      -", revisions=" -
        -
      • -June 16, 2022 by Dre Helmns:
        -Created generation model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), Line( - points={{-80,0},{-70,0},{-60,20},{-40,-20},{-20,20},{0,-20},{20,20},{ - 40,-20},{60,20},{70,0},{80,0}}, - color={238,46,47}, - thickness=1)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DirectHeatExchangerWaterHeaterWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo deleted file mode 100644 index 8355877d7e1..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/DomesticWaterMixer.mo +++ /dev/null @@ -1,176 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -model DomesticWaterMixer "A model for a domestic water mixer" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSet = 273.15+40 "Temperature setpoint of tempered hot water outlet"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; - parameter Real k = 0.1 "Proportional gain of valve controller"; - parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; - Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = - Medium) "Port for tempered water outlet" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Buildings.Controls.Continuous.LimPID conPID( - controllerType=Modelica.Blocks.Types.SimpleController.PI, - k=k, - Ti=Ti, - reset=Buildings.Types.Reset.Parameter) - annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Modelica.Blocks.Sources.Constant conTSetCon(k=TSet) "Temperature setpoint for domestic tempered water supply to consumer" - annotation (Placement(transformation(extent={{80,60},{60,80}}))); - Fluid.Actuators.Valves.ThreeWayLinear ValHea( - redeclare package Medium = Medium, - riseTime=5, - final m_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( - transformation( - extent={{10,10},{-10,-10}}, - rotation=180, - origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = - Medium) "Port for hot water supply" - annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = - Medium) "Port for domestic cold water supply" - annotation (Placement(transformation(extent={{-110,-70},{-90,-50}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" - annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = - Medium) "Mass flow rate of domestic hot water" - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) - annotation (Placement(transformation(extent={{56,24},{44,36}}))); -protected - parameter Real uLow = 0.01*mDhw_flow_nominal "Low hysteresis threshold"; - parameter Real uHigh = 0.05*mDhw_flow_nominal "High hysteresis threshold"; -equation - connect(conTSetCon.y, conPID.u_s) - annotation (Line(points={{59,70},{42,70}}, color={0,0,127})); - connect(senTemTw.T, conPID.u_m) - annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); - connect(ValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, - {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ - 9.99201e-16,12}}, color={0,0,127})); - connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,40},{90,40},{90, - 60},{110,60}}, color={0,0,127})); - connect(ValHea.port_1, senTemHw.port_b) annotation (Line(points={{-10, - 1.77636e-15},{-10,0},{-20,0}}, color={0,127,255})); - connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-60,0},{ - -60,60},{-100,60}}, - color={0,127,255})); - connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, - -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); - connect(senTemCw.port_a, port_cw) - annotation (Line(points={{-40,-60},{-100,-60}}, color={0,127,255})); - connect(senTemTw.port_b, senFloDhw.port_a) - annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); - connect(senFloDhw.port_b, port_tw) - annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(hysteresis.u, senFloDhw.m_flow) - annotation (Line(points={{57.2,30},{60,30},{60,11}}, - color={0,0,127})); - connect(hysteresis.y, conPID.trigger) - annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); - annotation (preferredView="info",Documentation(info=" -

      -This model is for a domestic water mixer, mixing hot and cold fluid to achieve a specified tempered outlet temperature. -

      -", revisions=" -
        -
      • -June 16, 2022 by Dre Helmns:
        -Created valve model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - visible=use_inputFilter, - extent={{-34,-28},{32,32}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Ellipse( - visible=use_inputFilter, - extent={{-34,32},{32,-28}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Text( - visible=use_inputFilter, - extent={{-22,26},{20,-20}}, - textColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid, - textString="M", - textStyle={TextStyle.Bold}), - Text( - extent={{-42,58},{-162,8}}, - textColor={0,0,0}, - textString=DynamicSelect("", String(y, format=".2f"))), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={-78,60}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={238,46,47}, - origin={-78,60}, - rotation=90), - Line( - visible=use_inputFilter, - points={{-32,-28},{28,-28}}), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={-78,-60}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={28,108,200}, - origin={-78,-60}, - rotation=90), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={78,0}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={102,44,145}, - origin={78,0}, - rotation=90), - Text( - extent={{-153,147},{147,107}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DomesticWaterMixer; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo deleted file mode 100644 index eae8c9f41a6..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DELETE.mo +++ /dev/null @@ -1,252 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; -package DELETE "These models are outdated" - - model DistrictETSIntegration - "Example implementation of connecting district ETS to building DHW model" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Pressure difference"; - parameter Real k(min=0) = 2 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti(min=Modelica.Constants.small) = 15 "Time constant of Integrator block" annotation (Dialog(enable= - controllerType == Modelica.Blocks.Types.SimpleController.PI or - controllerType == Modelica.Blocks.Types.SimpleController.PID)); - parameter Boolean haveER = true "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-0.3234) - "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{82,74},{70,86}}))); - BaseClasses.DELETE.DirectHeatExchangerWaterHeaterWithAuxHeatOLD - disHXAuxHea( - redeclare package Medium = Medium, - TSetHw(displayUnit="degC") = TSetHw, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal, - haveER=haveER) - "Direct district heat exchanger with auxiliary electric heating" - annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{48,38},{28,58}}))); - DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit="degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=k, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); - Modelica.Blocks.Sources.Sine sine(f=0.001, - offset=1) - annotation (Placement(transformation(extent={{120,70},{100,90}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) - "Integrated hot water consumption" - annotation (Placement(transformation(extent={{80,38},{100,58}}))); - Modelica.Blocks.Interfaces.RealOutput PEleAuxHea(displayUnit="W") if haveER == - true - "Thermal energy added to water with electric resistance" - annotation (Placement(transformation(extent={{120,110},{140,130}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{120,90},{140,110}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw(displayUnit="kg") "Total hot water consumption" - annotation (Placement(transformation(extent={{120,38},{140,58}}), - iconTransformation(extent={{100,18},{140,58}}))); - Modelica.Blocks.Sources.Constant const(k=1) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=0, - origin={-60,150}))); - EnergyTransferStations.Combined.HeatPumpHeatExchanger_Current ets( - nPorts_aHeaWat=1, - nPorts_aChiWat=1, - nPorts_bChiWat=1, - nPorts_bHeaWat=1) - annotation (Placement(transformation(extent={{-30,-30},{30,30}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatRet(redeclare final - package Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={-106,40}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatRet(redeclare final - package Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water return temperature" annotation (Placement(transformation( - extent={{10,10},{-10,-10}}, - rotation=0, - origin={-108,0}))); - Fluid.Sensors.TemperatureTwoPort senTChiWatSup(redeclare package - Medium = Medium, m_flow_nominal=datChi.mEva_flow_nominal) - "Chilled water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={80,-40}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumHeaWat( - redeclare package Medium = Medium, - final m_flow_nominal=mHeaWat_flow_nominal, - dp_nominal=100E3) "Heating water distribution pump" - annotation (Placement(transformation(extent={{-10,122},{-30,142}}))); - Fluid.Sensors.TemperatureTwoPort senTHeaWatSup(redeclare package - Medium = Medium, m_flow_nominal=datChi.mCon_flow_nominal) - "Heating water supply temperature" annotation (Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={-34,98}))); - Fluid.MixingVolumes.MixingVolume volChiWat( - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - T_start=7 + 273.15, - final prescribedHeatFlowRate=true, - redeclare package Medium = Medium, - V=10, - final mSenFac=1, - final m_flow_nominal=mChiWat_flow_nominal, - nPorts=2) "Volume for chilled water distribution circuit" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={151,-90}))); - EnergyTransferStations.BaseClasses.Pump_m_flow pumChiWat( - redeclare package Medium = Medium, - final m_flow_nominal=mChiWat_flow_nominal, - dp_nominal=100E3) "Chilled water distribution pump" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Modelica.Blocks.Continuous.Integrator EDisHP(y(unit="J")) - "District heat pump electricity use" - annotation (Placement(transformation(extent={{100,-2},{120,18}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uHea(final t= - 0.01, final h=0.005) - "Enable heating" - annotation (Placement(transformation(extent={{-120,-50},{-100,-30}}))); - Controls.OBC.CDL.Continuous.GreaterThreshold uCoo(final t= - 0.01, final h=0.005) - "Enable cooling" - annotation (Placement(transformation(extent={{-120,-80},{-100,-60}}))); - Controls.OBC.CDL.Continuous.Sources.Constant THeaWatSupSet(k=45 + - 273.15, y(final unit="K", displayUnit="degC")) - "Heating water supply temperature set point" - annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); - Controls.OBC.CDL.Continuous.Sources.Constant TChiWatSupSet(k=7 + - 273.15, y(final unit="K", displayUnit="degC")) - "Chilled water supply temperature set point" - annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatSup(redeclare final - package Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water supply temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-60}))); - Fluid.Sensors.TemperatureTwoPort senTDisWatRet(redeclare final package - Medium = Medium, final m_flow_nominal=ets.hex.m1_flow_nominal) - "District water return temperature" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={40,-60}))); - Fluid.Sources.Boundary_pT disWat( - redeclare package Medium = Medium, - use_T_in=true, - nPorts=2) "District water boundary conditions" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={0,-90}))); - Modelica.Blocks.Sources.CombiTimeTable TDisWatSup( - table=[0,11; 1,12; 2,13; 3,14; 4,15; 5,16; 6,17; 7,18; 8,20; 9,18; 10, - 16; 11,13; 12,11], - timeScale=2592000, - tableName="tab1", - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic, - offset={273.15}, - columns={2}, - smoothness=Modelica.Blocks.Types.Smoothness.MonotoneContinuousDerivative1) - "District water supply temperature" - annotation (Placement(transformation(extent={{-120,-120},{-100,-100}}))); - equation - connect(tmv.port_tw, sinDhw.ports[1]) - annotation (Line(points={{20,50},{24,50},{24,48},{28,48}}, - color={0,127,255})); - connect(gaiDhw.y, sinDhw.m_flow_in) annotation (Line(points={{69.4,80}, - {60,80},{60,56},{50,56}}, - color={0,0,127})); - connect(sine.y, gaiDhw.u) - annotation (Line(points={{99,80},{83.2,80}}, - color={0,0,127})); - connect(watCon.u, sinDhw.m_flow_in) annotation (Line(points={{78,48},{ - 60,48},{60,56},{50,56}}, - color={0,0,127})); - connect(disHXAuxHea.port_hw, tmv.port_hw) annotation (Line(points={{-20,60}, - {-10,60},{-10,56},{0,56}}, - color={0,127,255})); - connect(souDcw.ports[1], disHXAuxHea.port_cw) annotation (Line(points={{-60,49}, - {-60,60},{-40,60}}, color={0,127,255})); - connect(souDcw.ports[2], tmv.port_cw) annotation (Line(points={{-60,51}, - {-60,40},{-10,40},{-10,44},{0,44}}, color={0,127,255})); - connect(disHXAuxHea.PEle, PEleAuxHea) annotation (Line(points={{-19.4, - 64},{0,64},{0,120},{130,120}}, - color={0,0,127})); - connect(tmv.TTw, TTw) - annotation (Line(points={{21,56},{28,56},{28,100},{130,100}}, - color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{101,48},{130,48}}, color={0,0,127})); - connect(ets.ports_aHeaWat[1], senTHeaWatRet.port_b) annotation (Line( - points={{-30,26},{-80,26},{-80,40},{-96,40}}, color={0,127,255})); - connect(senTChiWatRet.port_a, ets.ports_aChiWat[1]) annotation (Line( - points={{-98,0},{-80,0},{-80,16},{-30,16}}, color={0,127,255})); - connect(ets.ports_bChiWat[1], senTChiWatSup.port_a) annotation (Line( - points={{30,16},{60,16},{60,-40},{70,-40}}, color={0,127,255})); - connect(ets.ports_bHeaWat[1], pumHeaWat.port_a) annotation (Line(points= - {{30,26},{140,26},{140,132},{-10,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_a, pumHeaWat.port_b) annotation (Line(points= - {{-34,108},{-34,132},{-30,132}}, color={0,127,255})); - connect(senTHeaWatSup.port_b, disHXAuxHea.port_dhs) - annotation (Line(points={{-34,88},{-34,70}}, color={0,127,255})); - connect(const.y, pumHeaWat.m_flow_in) annotation (Line(points={{-49,150}, - {-20,150},{-20,144}}, color={0,0,127})); - connect(senTChiWatSup.port_b, pumChiWat.port_a) - annotation (Line(points={{90,-40},{100,-40}}, color={0,127,255})); - connect(pumChiWat.port_b, volChiWat.ports[1]) annotation (Line(points={{120,-40}, - {140,-40},{140,-89},{141,-89}}, color={0,127,255})); - connect(volChiWat.ports[2], senTChiWatRet.port_b) annotation (Line( - points={{141,-91},{140,-91},{140,-140},{-140,-140},{-140,0},{-118, - 0}}, color={0,127,255})); - connect(disHXAuxHea.port_dhr, senTHeaWatRet.port_a) annotation (Line( - points={{-38,70},{-38,78},{-140,78},{-140,40},{-116,40}}, color={ - 0,127,255})); - connect(ets.PHea, EDisHP.u) - annotation (Line(points={{34,8},{98,8}}, color={0,0,127})); - connect(uHea.y, ets.uHea) annotation (Line(points={{-98,-40},{-74,-40}, - {-74,10},{-34,10}}, color={255,0,255})); - connect(uCoo.y, ets.uCoo) annotation (Line(points={{-98,-70},{-70,-70}, - {-70,6},{-34,6}}, color={255,0,255})); - connect(THeaWatSupSet.y, ets.THeaWatSupSet) annotation (Line(points={{ - -118,140},{-86,140},{-86,-2},{-34,-2}}, color={0,0,127})); - connect(TChiWatSupSet.y, ets.TChiWatSupSet) annotation (Line(points={{ - -118,100},{-90,100},{-90,-6},{-34,-6}}, color={0,0,127})); - connect(senTDisWatSup.port_b, ets.port_aSerAmb) annotation (Line(points= - {{-40,-50},{-40,-20},{-30,-20}}, color={0,127,255})); - connect(senTDisWatRet.port_a, ets.port_bSerAmb) annotation (Line(points= - {{40,-50},{40,-20},{30,-20}}, color={0,127,255})); - connect(disWat.ports[1], senTDisWatRet.port_b) annotation (Line(points={{1,-80}, - {40,-80},{40,-70}}, color={0,127,255})); - connect(disWat.ports[2], senTDisWatSup.port_a) annotation (Line(points={{-1,-80}, - {-40,-80},{-40,-70}}, color={0,127,255})); - connect(TDisWatSup.y[1], disWat.T_in) annotation (Line(points={{-99, - -110},{-4,-110},{-4,-102}}, color={0,0,127})); - connect(PEleAuxHea, PEleAuxHea) - annotation (Line(points={{130,120},{130,120}}, color={0,0,127})); - annotation (experiment(StopTime=3600, Interval=1), - Diagram(coordinateSystem(extent={{-160,-160},{160,160}})), - Icon(coordinateSystem(extent={{-160,-160},{160,160}}))); - end DistrictETSIntegration; -end DELETE; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo deleted file mode 100644 index c4e27e082a5..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mo +++ /dev/null @@ -1,92 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; -model DomesticWaterFixture - "Thermostatic mixing valve and hot water fixture with representative annual load profile" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Medium model for water"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = 0.1 "Design domestic hot water supply flow rate of system"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 85000 "Pressure difference for thermostatic mixing valve with nominal flow of 6.5gpm"; - parameter Real kCon(min=0) = 0.1 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti = 120 "Time constant of Integrator block"; - parameter Real uLow = 0.1 "low hysteresis threshold"; - parameter Real uHigh = 0.9 "high hysteresis threshold"; - - DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet=TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=kCon, - uLow=uLow, - uHigh=uHigh, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}), - iconTransformation(extent={{100,50},{120,70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}), - iconTransformation(extent={{100,-70},{120,-50}}))); - DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= - mDhw_flow_nominal) "load for DHW" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit="degC") = TDcw, - nPorts=1) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-100,-60},{-80,-40}}))); - Fluid.Sources.Boundary_pT souHw( - redeclare package Medium = Medium, - T(displayUnit="degC") = TSetHw, - nPorts=1) "Source of heated domestic water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={-90,50}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=false, - table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5, - 0.3; 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11, - 0.6; 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; - 3600*17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600* - 22,0.5; 3600*23,0.3; 3600*24,0.1], - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,20},{80,40}}))); -equation - connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{14,6},{14,60},{110,60}}, - color={0,0,127})); - connect(tmv.port_tw, loaDHW.port_tw) - annotation (Line(points={{-20,0},{20,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-7.2},{60,-7.2},{60, - -60},{110,-60}}, - color={0,0,127})); - connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-80,-50},{-60, - -50},{-60,-6},{-40,-6}}, color={0,127,255})); - connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,50},{-46,50}, - {-46,6},{-40,6}}, color={0,127,255})); - connect(schDhw.y[1], loaDHW.schDhw) - annotation (Line(points={{79,30},{60,30},{60,3},{41,3}}, color={0,0,127})); -annotation (preferredView="info",Documentation(info=" -

      -This is an example of a domestic water fixture. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created example. -
      • -
      -"), - Diagram(coordinateSystem(extent={{-100,-100},{100,100}})), - Icon(coordinateSystem(extent={{-100,-100},{100,100}})), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos" - "Simulate and plot"),experiment( - StopTime=86400, - Interval=60, - __Dymola_Algorithm="Dassl")); -end DomesticWaterFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo deleted file mode 100644 index 53076ab4583..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mo +++ /dev/null @@ -1,98 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; -model DomesticWaterHeater - "Example implementation of direct district heat exchange and auxiliary line heater for DHW" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=1) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-30,30}))); - DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( - redeclare package Medium = Medium, - mHw_flow_nominal = mHw_flow_nominal, - mDH_flow_nominal = mDH_flow_nominal) - "Generation of DHW" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{10,10},{-10,-10}}, - rotation=90, - origin={30,30}))); - Fluid.Sources.Boundary_pT souDHw( - redeclare package Medium = Medium, - use_T_in=true, - T(displayUnit = "degC") = TDHw, - nPorts=1) "Source of district hot water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={30,-30}))); - Fluid.Sources.MassFlowSource_T sinDHw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for district heating water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=90, - origin={-30,-30}))); - Modelica.Blocks.Sources.Constant const(k=-1) - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={0,-90}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - Modelica.Blocks.Sources.Sine TDis( - amplitude=5, - f=0.001, - offset=TDHw) "Signal to represent fluctuating district water temperature" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={50,-90}))); - Modelica.Blocks.Interfaces.RealOutput PEle - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); -equation - connect(conTSetHw.y, genDHW.TSetHw) - annotation (Line(points={{-79,0},{-11,0}}, color={0,0,127})); - connect(genDHW.port_a2, souDHw.ports[1]) - annotation (Line(points={{10,-6},{30,-6},{30,-20}}, color={0,127,255})); - connect(genDHW.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-10,-6},{-30,-6},{-30,-20}}, color={0,127,255})); - connect(souDcw.ports[1], genDHW.port_a1) - annotation (Line(points={{-30,20},{-30,6},{-10,6}}, color={0,127,255})); - connect(const.y, sinDHw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, - {2.05391e-15,-60},{-60,-60},{-60,-42},{-38,-42}}, color={0,0,127})); - connect(const.y, sinDhw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, - {2.05391e-15,-60},{60,-60},{60,60},{38,60},{38,42}}, color={0,0,127})); - connect(genDHW.port_b1, sinDhw.ports[1]) - annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); - connect(TDis.y, souDHw.T_in) annotation (Line(points={{50,-79},{50,-48},{26,-48}, - {26,-42}}, color={0,0,127})); - connect(genDHW.PHea, PEle) - annotation (Line(points={{11,0},{110,0}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This is an example of a domestic water heater. -

      -", revisions=" -
        -
      • -June 21, 2022 by Dre Helmns:
        -Created example. -
      • -
      -"),__Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos" - "Simulate and plot"),experiment(StopTime=3600, Interval=1)); -end DomesticWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo deleted file mode 100644 index f8cec475906..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ /dev/null @@ -1,113 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW.Examples; -model DomesticWaterHeaterAndFixture - "Example implementation of direct district heat exchange and auxiliary line heater for DHW" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+30 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=90, - origin={-30,-50}))); - HeatPumpWaterHeaterWithTank genDHW( - redeclare package Medium = Medium, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - DomesticWaterMixer tmv( - redeclare package Medium = Medium, - TSet(displayUnit="degC") = TSetTw, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) - "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Fluid.Sources.MassFlowSource_T - souDHw( - redeclare package Medium = Medium, - m_flow=mDH_flow_nominal, - T(displayUnit = "degC") = TDHw, - nPorts=1) "Source of district hot water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={10,-50}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= - mDhw_flow_nominal) "load for DHW" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}), - iconTransformation(extent={{100,-70},{120,-50}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=true, - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,20},{80,40}}))); - - Fluid.Sources.Boundary_pT sinDHw( - redeclare package Medium = Medium, - T(displayUnit="degC"), - nPorts=1) "Sink of district hot water" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-70,-50}))); - Modelica.Blocks.Interfaces.RealOutput PEle - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); -equation - connect(tmv.TTw, TTw) - annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); - connect(conTSetHw.y, genDHW.TSetHw) - annotation (Line(points={{-79,0},{-41,0}}, color={0,0,127})); - connect(genDHW.port_b1, tmv.port_hw) - annotation (Line(points={{-20,6},{0,6}}, color={0,127,255})); - connect(souDHw.ports[1], genDHW.port_a2) annotation (Line(points={{10,-40},{ - 10,-20},{-14,-20},{-14,-6},{-20,-6}}, color={0,127,255})); - connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-29,-40},{-29, - -30},{-6,-30},{-6,-6},{0,-6}}, color={0,127,255})); - connect(souDcw.ports[2], genDHW.port_a1) annotation (Line(points={{-31,-40},{ - -31,-30},{-50,-30},{-50,6},{-40,6}}, color={0,127,255})); - connect(tmv.port_tw, loaDHW.port_tw) - annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-7.2},{80,-7.2},{80, - -60},{110,-60}}, - color={0,0,127})); - connect(loaDHW.schDhw, schDhw.y[1]) - annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); - connect(genDHW.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(genDHW.PHea, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80},{ - 110,80}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This is an example of a domestic water heater and fixture. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created example. -
      • -
      -"),experiment( - StopTime=864000, - Interval=1, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl")); -end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo deleted file mode 100644 index 2b361379f46..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.mo +++ /dev/null @@ -1,16 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -package Examples "Example implementations of district-integrated DHW models" - extends Modelica.Icons.ExamplesPackage; - - - - annotation ( - preferredView="info", - Documentation( - info=" -

      -This package contains a collection of residential domestic hot water models -to demonstrate how these models might be used in district heating systems. -

      -")); -end Examples; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order deleted file mode 100644 index 9622cff465c..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/Examples/package.order +++ /dev/null @@ -1,4 +0,0 @@ -DomesticWaterHeater -DomesticWaterFixture -DomesticWaterHeaterAndFixture -DELETE diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo deleted file mode 100644 index 88ec0950a7c..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/HeatPumpWaterHeaterWithTank.mo +++ /dev/null @@ -1,211 +0,0 @@ -within Buildings.Experimental.DHC.Loads.Heating.DHW; -model HeatPumpWaterHeaterWithTank - "A model for domestic water heating served by heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.Heating.DHW.BaseClasses.PartialFourPortDHW( - final have_PEle = true, - mDH_flow_nominal = heaPum.QEva_flow_nominal/cp2_default/heaPum.dTEva_nominal); - constant Modelica.Units.SI.SpecificHeatCapacity cp2_default= - Medium.specificHeatCapacityCp(Medium.setState_pTX(p=Medium.p_default, - T=Medium.T_default)) "Specific heat capacity of the fluid"; - parameter Buildings.Experimental.DHC.Loads.Heating.DHW.Data.GenericHeatPumpWaterHeater datWatHea - "Performance data" - annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); - parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; - parameter Real Ti=60 "Integrator time constant of circulation pump controller"; - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-20,44},{0,64}}))); - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=datWatHea.mHex_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dTEva_nominal=datWatHea.dTEva_nominal, - dTCon_nominal=datWatHea.dTCon_nominal, - use_eta_Carnot_nominal=true, - etaCarnot_nominal=0.3, - QCon_flow_max = datWatHea.QCon_flow_max, - QCon_flow_nominal=datWatHea.QCon_flow_nominal, - dp1_nominal=datWatHea.dp1_nominal, - dp2_nominal=datWatHea.dp2_nominal) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=datWatHea.mHex_flow_nominal) annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={50,6}))); - Modelica.Blocks.Math.Add add - "Gain for control signal controlling source pump" - annotation (Placement(transformation(extent={{-70,-10},{-50,10}}))); - Modelica.Blocks.Sources.Constant dTTanHex(k=datWatHea.dTCon_nominal) - "Temperature difference of heat pump condenser leaving water above tank set point" - annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); - Fluid.Movers.FlowControlled_m_flow pumHex( - inputType=Buildings.Fluid.Types.InputType.Continuous, - redeclare package Medium = Medium, - m_flow_nominal=datWatHea.mHex_flow_nominal, - riseTime=10, - massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) - "Pump with m_flow input" - annotation (Placement(transformation(extent={{60,30},{40,50}}))); - Fluid.Storage.StratifiedEnhancedInternalHex - tanSte( - T_start=datWatHea.TTan_nominal, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - redeclare package Medium = Medium, - redeclare package MediumHex = Medium, - hTan=datWatHea.hTan, - dIns=datWatHea.dIns, - VTan=datWatHea.VTan, - nSeg=datWatHea.nSeg, - hHex_a=datWatHea.hHex_a, - hHex_b=datWatHea.hHex_b, - Q_flow_nominal=datWatHea.QTan_flow_nominal, - TTan_nominal=datWatHea.TTan_nominal, - THex_nominal=datWatHea.THex_nominal, - mHex_flow_nominal=datWatHea.mHex_flow_nominal, - show_T=true, - m_flow_nominal=mHw_flow_nominal) - "Tank with steady-state heat exchanger balance" - annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); - Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) - annotation (Placement(transformation(extent={{100,30},{80,50}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor tanTemSen - "Temperature of the hot water tank" - annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); - Controls.OBC.CDL.Continuous.MultiplyByParameter - dTTanHex2(k=datWatHea.mHex_flow_nominal) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Controls.OBC.CDL.Continuous.PID conPI( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, - k=k, - Ti=Ti) - annotation (Placement(transformation(extent={{-10,80},{10,100}}))); - Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") - "Electric power required for pumping equipment" - annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); -equation - connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(senTemTankOut.port_b, port_b1) - annotation (Line(points={{0,54},{20,54},{20,60},{100,60}}, - color={0,127,255})); - connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-10,-60}, - {-10,-6}}, color={0,127,255})); - connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, - {76,0},{110,0}}, color={0,0,127})); - connect(TSetHw, add.u1) annotation (Line(points={{-110,0},{-80,0},{-80,6},{-72, - 6}}, color={0,0,127})); - connect(dTTanHex.y, add.u2) annotation (Line(points={{-79,-30},{-76,-30},{-76, - -6},{-72,-6}}, color={0,0,127})); - connect(heaPum.TSet, add.y) annotation (Line(points={{-12,9},{-20,9},{-20,0},{ - -49,0}}, color={0,0,127})); - connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{ - 70,40},{70,6},{60,6}}, - color={0,127,255})); - connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{-30, - 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); - connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, - 20},{-10,20},{-10,6}}, color={0,127,255})); - connect(tanSte.port_a, senTemTankOut.port_a) annotation (Line(points={{-40,50}, - {-30,50},{-30,54},{-20,54}}, color={0,127,255})); - connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, - 60},{-100,60}}, color={0,127,255})); - connect(bou.ports[1], senTemHPOut.port_b) annotation (Line(points={{80,40},{ - 70,40},{70,6},{60,6}}, color={0,127,255})); - connect(dTTanHex2.y, pumHex.m_flow_in) - annotation (Line(points={{42,90},{50,90},{50,52}}, color={0,0,127})); - connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-6},{20,-6},{20, - -60},{100,-60}}, color={0,127,255})); - connect(conPI.y, dTTanHex2.u) - annotation (Line(points={{12,90},{18,90}}, color={0,0,127})); - connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,90}, - {-12,90}}, color={0,0,127})); - connect(tanTemSen.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, - 70},{0,70},{0,78}}, color={0,0,127})); - connect(tanTemSen.port, tanSte.heaPorVol[4]) annotation (Line(points={{-40,72}, - {-46,72},{-46,50},{-50,50}}, color={191,0,0})); - connect(pumHex.P, PPum) annotation (Line(points={{39,49},{32,49},{32,-20},{110, - -20}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This model is an example of a domestic hot water (DHW) substation for an -ultra-low-temperature district heating (ULTDH) network. It includes a micro heat -pump and storage tank with direct thermostatic mixing rather than heat exchange. -

      -

      -For more info, please see Fig. 3 in Evaluations of different domestic hot water -preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at -doi.org/10.1016/j.energy.2016.04.109. -

      -", revisions=" -
        -
      • -July 7, 2022 by Dre Helmns:
        -Created generation model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,-60},{20,-40}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={175,175,175}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-20,22},{20,-48}}, - lineColor={175,175,175}, - lineThickness=1, - fillColor={175,175,175}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,10},{20,30}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-20,50},{20,20}}, - lineColor={0,0,0}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,40},{20,60}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line( - points={{-20,50},{-20,-50}}, - color={95,95,95}, - thickness=1), - Line( - points={{20,50},{20,-50}}, - color={95,95,95}, - thickness=1), - Polygon( - points={{-140,86},{-140,86}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.CrossDiag), - Polygon( - points={{20,40},{18,38},{14,36},{8,34},{8,26},{14,28},{18,30},{20,32}, - {20,40}}, - lineColor={95,95,95}, - lineThickness=0.5, - fillColor={0,0,0}, - fillPattern=FillPattern.CrossDiag)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeaterWithTank; diff --git a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order b/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order deleted file mode 100644 index 76426d661db..00000000000 --- a/Buildings/Experimental/DHC/Loads/Heating/DHW/package.order +++ /dev/null @@ -1,8 +0,0 @@ -DomesticWaterMixer -DirectHeatExchangerWaterHeaterWithAuxHeat -HeatPumpWaterHeaterWithTank -DHWLoad -DELETE -BaseClasses -Examples -Data From 6962827c825175dc76abb70434c255b13b6937e1 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 15:32:43 -0700 Subject: [PATCH 095/183] Remove DHW package files already copied to new package --- .../Loads/Heating/DHW/Examples/DomesticWaterFixture.mos | 8 -------- .../Loads/Heating/DHW/Examples/DomesticWaterHeater.mos | 8 -------- 2 files changed, 16 deletions(-) delete mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos deleted file mode 100644 index 746c9fda536..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos +++ /dev/null @@ -1,8 +0,0 @@ -// Script generated by Dymola Thu Dec 22 16:26:09 2022 -// Simulate and plot commands -simulateModel("Buildings.Experimental.DHC.Loads.Heating.DHW.Examples.DomesticWaterFixture", stopTime=86400, numberOfIntervals=0, outputInterval=60, resultFile="DomesticWaterFixture"); -removePlots(false); -Advanced.SequenceInLegend = false; -createPlot(id=1, position={15, 15, 865, 528}, y={"TSetHw", "TSetTw", "TDcw", "TTw"}, range={0.0, 1.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{238,46,47}, {102,44,145}, {28,108,200}, {217,67,180}}, patterns={LinePattern.Solid, LinePattern.Solid, LinePattern.Solid, LinePattern.Dash}, markers={MarkerStyle.None, MarkerStyle.None, MarkerStyle.None, MarkerStyle.FilledCircle}, timeUnit="h", displayUnits={"degC", "degC", "degC", "degC"}); -createPlot(id=1, position={15, 15, 865, 528}, y={"loaDHW.port_tw.m_flow"}, range={0.0, 1500.0, -0.05, 0.15000000000000002}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="h", displayUnits={"kg/s"}); - diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos deleted file mode 100644 index 1b832620afc..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos +++ /dev/null @@ -1,8 +0,0 @@ -// Script generated by Dymola Wed Dec 21 15:22:38 2022 -// Simulate and plot commands -simulateModel("Buildings.Experimental.DHC.Loads.Heating.DHW.Examples.DomesticWaterHeater", stopTime=3600, numberOfIntervals=0, outputInterval=1, resultFile="DomesticWaterHeater"); -removePlots(false); -Advanced.SequenceInLegend = false; -createPlot(id=1, position={15, 15, 894, 574}, y={"TSetHw", "souDHw.T_in", "genDHW.senTemHXOut.T", "genDHW.senTemAuxHeaOut.T"}, range={0.0, 3600.0, 10.0, 60.0}, grid=true, subPlot=101, colors={{0,140,72}, {102,44,145}, {28,108,200}, {238,46,47}}, patterns={LinePattern.Dot, LinePattern.Solid, LinePattern.Solid, LinePattern.Solid}, thicknesses={1.0, 0.5, 0.5, 0.5}, timeUnit="s", displayUnits={"degC", "degC", "degC", "degC"}); -createPlot(id=1, position={15, 15, 894, 574}, y={"PEle", "genDHW.heaDhw.Q_flow"}, range={0.0, 3600.0, 30000.0, 70000.0}, grid=true, subPlot=102, colors={{0,0,0}, {244,125,35}}, patterns={LinePattern.Solid, LinePattern.Dash}, markers={MarkerStyle.None, MarkerStyle.FilledCircle}, timeUnit="s", displayUnits={"W", "W"}); - From 134752a8797e46ffa21d9db29b7b7c6c99472233 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 13 Sep 2023 16:25:57 -0700 Subject: [PATCH 096/183] Add and update unit test results, fix initial conditions --- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 1 + .../Loads/HotWater/ThermostaticMixingValve.mo | 21 +++++++------- ...ned_Examples_BuildingTimeSeriesWithETS.txt | 10 +++---- ...mples_BuildingTimeSeriesWithETSDHWTank.txt | 29 +++++++++++++++++++ ...dFixtureDirectHeatExchangerWithAuxHeat.txt | 20 +++++++++++++ ...mples_HeaterAndFixtureHeatPumpWithTank.txt | 20 +++++++++++++ ...dFixtureDirectHeatExchangerWithAuxHeat.mos | 2 +- .../HeaterAndFixtureHeatPumpWithTank.mos | 4 +-- ...mples.BuildingTimeSeriesWithETSDHWTank.mos | 18 ++++++++++++ ...dFixtureDirectHeatExchangerWithAuxHeat.mos | 9 ++++++ ...mples.HeaterAndFixtureHeatPumpWithTank.mos | 9 ++++++ 11 files changed, 125 insertions(+), 18 deletions(-) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index 992339b1c55..15e519bdb95 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -47,6 +47,7 @@ model HeatPumpWithTank rotation=0, origin={50,6}))); Fluid.Movers.FlowControlled_m_flow pumHex( + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, m_flow_nominal=datWatHea.mHex_flow_nominal, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index c0ae9589697..c51b286bcac 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -15,12 +15,13 @@ model ThermostaticMixingValve Ti=Ti, reset=Buildings.Types.Reset.Parameter) annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) "Hot water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Fluid.Actuators.Valves.ThreeWayLinear ValHea( + Fluid.Actuators.Valves.ThreeWayLinear val( redeclare package Medium = Medium, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, riseTime=5, final m_flow_nominal=mHot_flow_nominal, dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( @@ -41,8 +42,8 @@ model ThermostaticMixingValve Medium = Medium, m_flow_nominal=mHot_flow_nominal) "Source hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = Medium) "Mass flow rate of hot water to fixture" @@ -58,18 +59,18 @@ protected equation connect(senTemHot.T, conPID.u_m) annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); - connect(ValHea.port_2, senTemHot.port_a) annotation (Line(points={{10,-6.66134e-16}, + connect(val.port_2, senTemHot.port_a) annotation (Line(points={{10,-6.66134e-16}, {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ + connect(conPID.y, val.y) annotation (Line(points={{19,70},{0,70},{0,12},{ 9.99201e-16,12}}, color={0,0,127})); connect(senTemHot.T,THot) annotation (Line(points={{30,11},{30,40},{90,40},{ 90,60},{110,60}}, color={0,0,127})); - connect(ValHea.port_1, senTemHotSou.port_b) annotation (Line(points={{-10, + connect(val.port_1, senTemHotSou.port_b) annotation (Line(points={{-10, 1.77636e-15},{-10,2},{-20,2}}, color={0,127,255})); connect(senTemHotSou.port_a, port_hotsou) annotation (Line(points={{-40,2},{-60, 2},{-60,40},{-100,40}}, color={0,127,255})); - connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, - -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); + connect(val.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15,-10}, + {-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-60},{-70,-60}, {-70,-40},{-100,-40}}, color={0,127,255})); connect(senTemHot.port_b, senFloHot.port_a) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETS.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETS.txt index ed06bd60be7..2213109b723 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETS.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETS.txt @@ -1,4 +1,4 @@ -last-generated=2023-05-17 +last-generated=2023-09-13 statistics-initialization= { "nonlinear": "1, 1, 2, 0, 2, 0, 1, 1, 1, 1", @@ -13,10 +13,10 @@ statistics-simulation= } time=[0e+00, 8.64e+05] bui.ets.proHeaWat.heaPum.QCon_flow_nominal=[2.617e+05, 2.617e+05] -bui.ets.proHeaWat.heaPum.QCon_flow=[0e+00, 0e+00, 0e+00, 6.833196875e+04, 8.76093515625e+04, 4.729089453125e+04, 6.347182421875e+04, 4.093407031249994e+04, 0e+00, 0e+00, 1.99888427734375e+02, 9.6076005859375e+03, 1.864932421875e+04, 9.3644125e+04, 1.188654296874999e+05, 4.6370296875e+04, 6.34527265625e+04, 4.381308203125e+04, 0e+00, 0e+00, 1.07477880859375e+03, 7.683896484375e+03, 1.4723111328125e+04, 8.87205078125e+04, 9.2690765625e+04, 1.28488359375e+04, 7.4430205078125e+03, 1.28838095703124e+04, 0e+00, 0e+00, 0e+00, 2.833953247070312e+02, 6.58342041015625e+03, 9.093128125e+04, 1.209757890625e+05, 4.317228515625e+04, 7.21496796875e+04, 4.46475546875e+04, 0e+00, 3.910686492919922e+01, 1.89289599609375e+03, 1.32105849609375e+04, 2.1070353515625e+04, 9.9006328125e+04, 1.4911021875e+05, 8.71084375e+04, 1.259404765625e+05, 7.05003515625e+04, 5.23160205078125e+03, 1.9429310546875e+04, 2.8971814453125e+04, 3.553089453125e+04, 4.03693671875e+04, 5.6003515625e+04, 5.474492968749999e+04, 5.514851562500001e+04, 5.775040234375002e+04, 5.950134375e+04, 4.480023046875006e+04, 5.054255859375e+04, 5.385629296875e+04, 5.638919140625e+04, 5.780043359375e+04, 7.5189984375e+04, 7.22928828125e+04, 6.85251875e+04, 6.8248375e+04, 7.019684375e+04, 5.365389453125e+04, 5.963437109375e+04, 6.259491796875e+04, 6.7062e+04, 6.91338046875e+04, 1.638675e+05, 2.25433671875e+05, 1.40051515625e+05, 1.6574446875e+05, 9.905446875e+04, 3.2229779296875e+04, 4.624782421875e+04, 5.49150546875e+04, 6.18638046875e+04, 6.612875e+04, 1.62708140625e+05, 2.19996e+05, 1.19087828125e+05, 1.5886146875e+05, 9.59762265625e+04, 3.053955859375e+04, 4.360421875e+04, 5.214097265625e+04, 5.9144921875e+04, 6.438697265625e+04, 1.5836634375e+05, 2.05549125e+05, 9.63910234375e+04, 1.349735625e+05, 8.43977578125e+04, 1.807604296875e+04, 3.1054125e+04, 4.038158203125e+04] +bui.ets.proHeaWat.heaPum.QCon_flow=[0e+00, 0e+00, 0e+00, 6.83295625e+04, 8.76095234375e+04, 4.729144140625e+04, 6.347184765625e+04, 4.093409765624994e+04, 0e+00, 0e+00, 1.998889465332031e+02, 9.6073212890625e+03, 1.8649330078125e+04, 9.3643875e+04, 1.188650937499999e+05, 4.63591875e+04, 6.3453546875e+04, 4.38096953125e+04, 0e+00, 0e+00, 1.074818603515625e+03, 7.68397705078125e+03, 1.47230673828125e+04, 8.8721046875e+04, 9.2690765625e+04, 1.2848662109375e+04, 7.44311767578125e+03, 1.28838798828124e+04, 0e+00, 0e+00, 0e+00, 2.83400146484375e+02, 6.58371044921875e+03, 9.093121875e+04, 1.20976734375e+05, 4.31718515625e+04, 7.21492109375e+04, 4.46419921875e+04, 0e+00, 3.904945373535156e+01, 1.892994018554688e+03, 1.32104453125e+04, 2.1070583984375e+04, 9.90065703125e+04, 1.49110796875e+05, 8.71087734375e+04, 1.259374453125e+05, 7.0500375e+04, 5.23144921875e+03, 1.9429376953125e+04, 2.8971720703125e+04, 3.553096484375e+04, 4.0369453125e+04, 5.600351171875e+04, 5.474494531249999e+04, 5.514832031250001e+04, 5.775033203125002e+04, 5.95013203125e+04, 4.480028515625006e+04, 5.05422578125e+04, 5.385604296875e+04, 5.6388875e+04, 5.78005234375e+04, 7.51907109375e+04, 7.22924453125e+04, 6.8525390625e+04, 6.8248875e+04, 7.0196671875e+04, 5.365473046875e+04, 5.963440234375e+04, 6.259495703125e+04, 6.70619140625e+04, 6.91337734375e+04, 1.63867875e+05, 2.25433671875e+05, 1.40051390625e+05, 1.65744125e+05, 9.9054640625e+04, 3.222974609375e+04, 4.624779296875e+04, 5.4914875e+04, 6.18624296875e+04, 6.6127609375e+04, 1.6270728125e+05, 2.19996359375e+05, 1.1908771875e+05, 1.58861453125e+05, 9.5976359375e+04, 3.0540130859375e+04, 4.36041796875e+04, 5.214102734375e+04, 5.914519921875e+04, 6.438712890625e+04, 1.583660625e+05, 2.0554965625e+05, 9.6389875e+04, 1.349749375e+05, 8.4397640625e+04, 1.807614453125e+04, 3.1054064453125e+04, 4.038174609375e+04] bui.ets.proHotWat.heaPum.QCon_flow_nominal=[3.5e+03, 3.5e+03] bui.ets.proHotWat.heaPum.QCon_flow=[0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070291e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070227e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00] -bui.PHea=[0e+00, 0e+00, 0e+00, 9.4311396484375e+03, 1.35576572265625e+04, 6.133193359375e+03, 9.505533203125e+03, 5.018258300781241e+03, 0e+00, 0e+00, 1.693230438232422e+01, 8.795730590820312e+02, 1.832620361328125e+03, 1.3586630859375e+04, 1.914317382812499e+04, 5.9968798828125e+03, 9.4953525390625e+03, 5.43844921875e+03, 0e+00, 0e+00, 9.198367309570312e+01, 6.925377807617188e+02, 1.40387109375e+03, 1.27493564453125e+04, 1.44341943359375e+04, 1.715015991210938e+03, 1.914611572265625e+03, 1.545742675781237e+03, 0e+00, 0e+00, 0e+00, 2.402123260498047e+01, 5.88782958984375e+02, 1.31221650390625e+04, 1.9541298828125e+04, 5.5194462890625e+03, 1.0957419921875e+04, 5.564498046875e+03, 0e+00, 3.305180788040161e+00, 1.632864227294922e+02, 1.242577270507812e+03, 2.10805078125e+03, 1.45168359375e+04, 2.51080390625e+04, 1.26656767578125e+04, 2.040903125e+04, 9.792197265625e+03, 4.643041687011719e+02, 1.919915405273438e+03, 3.064962646484375e+03, 3.9264326171875e+03, 4.60093359375e+03, 6.998853515625e+03, 6.795531249999999e+03, 6.859571289062503e+03, 7.287258789062504e+03, 7.5819580078125e+03, 5.249156250000009e+03, 6.12364013671875e+03, 6.65011328125e+03, 7.0613271484375e+03, 7.29689306640625e+03, 1.01989267578125e+04, 9.7371875e+03, 9.14442578125e+03, 9.1011552734375e+03, 9.40605078125e+03, 6.61984716796875e+03, 7.60244921875e+03, 8.10904541015625e+03, 8.894275390625e+03, 9.2393671875e+03, 2.7222962890625e+04, 4.268008203125e+04, 2.247462890625e+04, 2.8582732421875e+04, 1.457518359375e+04, 3.48703125e+03, 5.46285205078125e+03, 6.8195263671875e+03, 7.9818740234375e+03, 8.7278203125e+03, 2.696348046875e+04, 4.1339234375e+04, 1.8376458984375e+04, 2.70924609375e+04, 1.403484375e+04, 3.26710888671875e+03, 5.06916162109375e+03, 6.37352001953125e+03, 7.52041748046875e+03, 8.41927734375e+03, 2.6035203125e+04, 3.78100546875e+04, 1.42567451171875e+04, 2.2173537109375e+04, 1.20537587890625e+04, 1.77096826171875e+03, 3.331660400390625e+03, 4.60218994140625e+03] -bui.PPum=[3.285042941570282e-01, 2.389241790771484e+02, 5.276307373046875e+02, 2.530129638671875e+03, 2.96191650390625e+03, 2.20565673828125e+03, 2.492031005859375e+03, 2.106275878906249e+03, 9.508541870117188e+01, 9.306090545654297e+01, 2.98139404296875e+02, 1.517207153320312e+03, 1.683502319335938e+03, 2.985240478515625e+03, 3.513588134765624e+03, 2.204520263671875e+03, 2.474632080078125e+03, 2.159986083984375e+03, 9.508345031738281e+01, 9.307901763916016e+01, 1.096576416015625e+03, 1.482954223632812e+03, 1.6142685546875e+03, 2.90643310546875e+03, 3.096864501953125e+03, 1.622189086914062e+03, 1.501253051757812e+03, 1.600852294921873e+03, 9.506249237060545e+01, 9.315890502929688e+01, 9.240269470214844e+01, 3.07355224609375e+02, 1.471527587890625e+03, 2.93458203125e+03, 3.548975341796875e+03, 2.152136962890625e+03, 2.636432861328125e+03, 2.18253515625e+03, 9.508261108398438e+01, 1.644995727539062e+02, 1.429212768554688e+03, 1.573625366210938e+03, 1.727169067382812e+03, 3.07348046875e+03, 4.070625732421875e+03, 2.97060009765625e+03, 3.6147734375e+03, 2.73143115234375e+03, 1.474091186523438e+03, 1.694590087890625e+03, 1.869672729492188e+03, 1.985189331054688e+03, 2.06853076171875e+03, 2.33641015625e+03, 2.3193056640625e+03, 2.322213623046875e+03, 2.36998583984375e+03, 2.407421630859375e+03, 2.147095947265627e+03, 2.233819091796875e+03, 2.2969970703125e+03, 2.341716796875e+03, 2.37481982421875e+03, 2.71194189453125e+03, 2.660779052734375e+03, 2.58258984375e+03, 2.573625244140625e+03, 2.6107392578125e+03, 2.300740966796875e+03, 2.40439013671875e+03, 2.46305908203125e+03, 2.547201416015625e+03, 2.588546875e+03, 4.32064013671875e+03, 5.9434853515625e+03, 3.94763720703125e+03, 4.45284814453125e+03, 3.2408427734375e+03, 1.933652587890625e+03, 2.159095947265625e+03, 2.3110341796875e+03, 2.445721923828125e+03, 2.529100830078125e+03, 4.2820771484375e+03, 5.8183828125e+03, 3.535588623046875e+03, 4.2862431640625e+03, 3.190560302734375e+03, 1.903679321289062e+03, 2.11773681640625e+03, 2.25727783203125e+03, 2.396067138671875e+03, 2.4925634765625e+03, 4.18796826171875e+03, 5.4511884765625e+03, 3.138988525390625e+03, 3.786046142578125e+03, 2.988481201171875e+03, 1.684767578125e+03, 1.904763305664062e+03, 2.066326904296875e+03] -bui.QHea_flow=[0e+00, 1.493402099609375e+02, 1.9687451171875e+03, 6.7061796875e+04, 8.79494453125e+04, 4.8126859375e+04, 6.336151953125e+04, 4.203754296874994e+04, 7.978300005197525e-02, 2.19537653028965e-02, 4.942186584472656e+02, 8.93216796875e+03, 1.83112734375e+04, 9.14273203125e+04, 1.199913749999999e+05, 4.77537265625e+04, 6.26159375e+04, 4.526991015625e+04, 7.993686944246292e-02, 2.230360172688961e-02, 2.2679169921875e+03, 7.1050888671875e+03, 1.42765654296875e+04, 8.6850390625e+04, 9.5471828125e+04, 1.4347908203125e+04, 7.31595166015625e+03, 1.339683984374991e+04, 7.171820104122123e-02, 2.116961590945727e-02, 1.258937921375036e-02, 5.307984619140625e+02, 6.4659990234375e+03, 8.8604734375e+04, 1.219893984375e+05, 4.451562109375e+04, 7.111525e+04, 4.6513765625e+04, 7.991015166044235e-02, 0e+00, 3.32963134765625e+03, 1.19679189453125e+04, 2.08018203125e+04, 9.66560078125e+04, 1.48739e+05, 8.83803125e+04, 1.259317734375e+05, 7.49642421875e+04, 6.57517529296875e+03, 1.8963857421875e+04, 2.8791236328125e+04, 3.53501328125e+04, 4.025083984375e+04, 5.587087109375e+04, 5.486714453124999e+04, 5.507491015625001e+04, 5.759208203125002e+04, 5.949945703125e+04, 4.493529687500009e+04, 5.044884375e+04, 5.377043359375e+04, 5.613822265625e+04, 5.77997265625e+04, 7.51834375e+04, 7.249346875e+04, 6.86295546875e+04, 6.8233796875e+04, 7.009353125e+04, 5.372946875e+04, 5.940454296875e+04, 6.244833984375e+04, 6.691209375e+04, 6.899834375e+04, 1.6226721875e+05, 2.2490328125e+05, 1.41931390625e+05, 1.6625778125e+05, 1.041998125e+05, 3.2250677734375e+04, 4.597087109375e+04, 5.45824140625e+04, 6.15926796875e+04, 6.5946421875e+04, 1.60565296875e+05, 2.2038553125e+05, 1.20659015625e+05, 1.5891796875e+05, 1.01201375e+05, 3.056637890625e+04, 4.335850390625e+04, 5.17645859375e+04, 5.897669921875e+04, 6.4056203125e+04, 1.56225484375e+05, 2.067574375e+05, 9.79598515625e+04, 1.3483159375e+05, 8.92682109375e+04, 1.82832734375e+04, 3.07897421875e+04, 4.016230859375e+04] +bui.PHea=[0e+00, 0e+00, 0e+00, 9.4108427734375e+03, 1.35028271484375e+04, 6.104552734375e+03, 9.45216796875e+03, 4.998033691406241e+03, 0e+00, 0e+00, 1.693234634399414e+01, 8.795462036132812e+02, 1.832620971679688e+03, 1.35667177734375e+04, 1.908825781249999e+04, 5.966599609375e+03, 9.44211328125e+03, 5.41775537109375e+03, 0e+00, 0e+00, 9.198709869384766e+01, 6.925453491210938e+02, 1.403866577148438e+03, 1.27295712890625e+04, 1.43793681640625e+04, 1.68628076171875e+03, 1.861250854492188e+03, 1.525521850585924e+03, 0e+00, 0e+00, 0e+00, 2.402164268493652e+01, 5.888098754882812e+02, 1.310228125e+04, 1.948662109375e+04, 5.49066943359375e+03, 1.09039033203125e+04, 5.54349951171875e+03, 0e+00, 3.300327301025391e+00, 1.632949676513672e+02, 1.242563232421875e+03, 2.108076416015625e+03, 1.449700390625e+04, 2.5053298828125e+04, 1.2636966796875e+04, 2.035478125e+04, 9.771984375e+03, 4.642901611328125e+02, 1.919922485351562e+03, 3.064951171875e+03, 3.92644189453125e+03, 4.60094482421875e+03, 6.998853515625e+03, 6.795534179687499e+03, 6.859541992187503e+03, 7.287248046875004e+03, 7.58195458984375e+03, 5.249163574218759e+03, 6.12359619140625e+03, 6.65007568359375e+03, 7.06127880859375e+03, 7.29690673828125e+03, 1.01990205078125e+04, 9.7371181640625e+03, 9.1444462890625e+03, 9.101234375e+03, 9.4060234375e+03, 6.61997119140625e+03, 7.6024541015625e+03, 8.10905224609375e+03, 8.89426171875e+03, 9.239361328125e+03, 2.72032265625e+04, 4.2625234375e+04, 2.2445609375e+04, 2.852929296875e+04, 1.45549775390625e+04, 3.48702734375e+03, 5.46284765625e+03, 6.81949951171875e+03, 7.98165625e+03, 8.727634765625e+03, 2.69434375e+04, 4.128446484375e+04, 1.834746484375e+04, 2.7039087890625e+04, 1.40146484375e+04, 3.2671787109375e+03, 5.06915625e+03, 6.3735283203125e+03, 7.5204609375e+03, 8.419302734375e+03, 2.6015279296875e+04, 3.77553203125e+04, 1.42278095703125e+04, 2.2120416015625e+04, 1.20334873046875e+04, 1.77097900390625e+03, 3.33165283203125e+03, 4.6022119140625e+03] +bui.PPum=[3.285042941570282e-01, 2.389241790771484e+02, 5.276307373046875e+02, 2.53018212890625e+03, 2.963212646484375e+03, 2.205779541015625e+03, 2.49316455078125e+03, 2.106321044921874e+03, 9.508738708496094e+01, 9.303549194335938e+01, 2.981468200683594e+02, 1.517205688476562e+03, 1.683501586914062e+03, 2.985285888671875e+03, 3.514895263671874e+03, 2.204634033203125e+03, 2.475771484375e+03, 2.16003076171875e+03, 9.508293914794922e+01, 9.307804870605469e+01, 1.09657080078125e+03, 1.482954223632812e+03, 1.6142724609375e+03, 2.906470947265625e+03, 3.098155029296875e+03, 1.622307739257812e+03, 1.502388427734375e+03, 1.600898803710936e+03, 9.506366729736327e+01, 9.315933227539062e+01, 9.240464019775391e+01, 3.0735595703125e+02, 1.47152978515625e+03, 2.9346220703125e+03, 3.55027734375e+03, 2.152264404296875e+03, 2.637573974609375e+03, 2.1825791015625e+03, 9.507963562011719e+01, 1.645074615478516e+02, 1.429212768554688e+03, 1.573627075195312e+03, 1.727168701171875e+03, 3.073527587890625e+03, 4.07193310546875e+03, 2.97073583984375e+03, 3.616003173828125e+03, 2.731474853515625e+03, 1.474104370117188e+03, 1.694591186523438e+03, 1.869663940429688e+03, 1.985192993164062e+03, 2.068533203125e+03, 2.33640966796875e+03, 2.3193056640625e+03, 2.322208251953125e+03, 2.36998046875e+03, 2.4074228515625e+03, 2.147096191406252e+03, 2.233818603515625e+03, 2.29699462890625e+03, 2.341718994140625e+03, 2.37482177734375e+03, 2.71194384765625e+03, 2.6607783203125e+03, 2.58259375e+03, 2.57362744140625e+03, 2.610738525390625e+03, 2.300763427734375e+03, 2.404389892578125e+03, 2.463059326171875e+03, 2.5472001953125e+03, 2.588546630859375e+03, 4.32067236328125e+03, 5.94482568359375e+03, 3.94787158203125e+03, 4.4540166015625e+03, 3.240896240234375e+03, 1.933651977539062e+03, 2.15909521484375e+03, 2.31103955078125e+03, 2.445717041015625e+03, 2.529115966796875e+03, 4.28213134765625e+03, 5.8197119140625e+03, 3.535795654296875e+03, 4.2874072265625e+03, 3.190618896484375e+03, 1.903690551757812e+03, 2.117737060546875e+03, 2.25727783203125e+03, 2.396066162109375e+03, 2.492562744140625e+03, 4.18801904296875e+03, 5.45252001953125e+03, 3.1391240234375e+03, 3.78720458984375e+03, 2.988534912109375e+03, 1.6847685546875e+03, 1.904763916015625e+03, 2.066332763671875e+03] +bui.QHea_flow=[0e+00, 1.493402099609375e+02, 1.9687451171875e+03, 6.7062328125e+04, 8.7949578125e+04, 4.812779296875e+04, 6.336201953125e+04, 4.203793359374994e+04, 7.981088757514954e-02, 2.15836875140667e-02, 4.942553405761719e+02, 8.93226953125e+03, 1.83119765625e+04, 9.14274765625e+04, 1.199915312499999e+05, 4.775315234375e+04, 6.261620703125e+04, 4.526991015625e+04, 7.991190999746323e-02, 2.22884938120842e-02, 2.26790771484375e+03, 7.10509130859375e+03, 1.4275474609375e+04, 8.68501171875e+04, 9.5471671875e+04, 1.43475166015625e+04, 7.31704931640625e+03, 1.339689550781241e+04, 7.176294922828635e-02, 2.117549441754824e-02, 1.260649506002665e-02, 5.308006591796875e+02, 6.46579736328125e+03, 8.86046015625e+04, 1.219891484375e+05, 4.451569921875e+04, 7.1115859375e+04, 4.651372265625e+04, 7.975231856107712e-02, 0e+00, 3.329623291015625e+03, 1.19676416015625e+04, 2.080181640625e+04, 9.66562109375e+04, 1.4873896875e+05, 8.83807734375e+04, 1.259347578125e+05, 7.49641328125e+04, 6.57079736328125e+03, 1.8963017578125e+04, 2.879130078125e+04, 3.53488046875e+04, 4.02499375e+04, 5.58708359375e+04, 5.486712109374999e+04, 5.507457421875001e+04, 5.759177343750002e+04, 5.949928125e+04, 4.493530468750009e+04, 5.0448828125e+04, 5.377033984375e+04, 5.613822265625e+04, 5.779968359375e+04, 7.518371875e+04, 7.24934609375e+04, 6.8629828125e+04, 6.82338984375e+04, 7.00935234375e+04, 5.37320703125e+04, 5.94061875e+04, 6.24483671875e+04, 6.6912640625e+04, 6.89983359375e+04, 1.6226678125e+05, 2.2490328125e+05, 1.41934828125e+05, 1.66257859375e+05, 1.04199984375e+05, 3.2251130859375e+04, 4.597104296875e+04, 5.458269140625e+04, 6.159391796875e+04, 6.5946796875e+04, 1.6056546875e+05, 2.203854375e+05, 1.20662125e+05, 1.5891796875e+05, 1.012016640625e+05, 3.0566900390625e+04, 4.335859375e+04, 5.176445703125e+04, 5.89764296875e+04, 6.40561875e+04, 1.5622553125e+05, 2.06757359375e+05, 9.79602421875e+04, 1.34831421875e+05, 8.9268453125e+04, 1.8283185546875e+04, 3.0786978515625e+04, 4.01603671875e+04] bui.QCoo_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt new file mode 100644 index 00000000000..c26a41cd86e --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt @@ -0,0 +1,29 @@ +last-generated=2023-09-13 +statistics-initialization= +{ + "nonlinear": "1, 1, 12, 1, 2, 0, 2, 0, 1, 1, 1, 1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0, 0, 0, 0, 0, 2", + "nonlinear": "2, 12, 1, 1, 2, 1, 1, 1, 1", + "number of continuous time states": "40", + "numerical Jacobians": "0" +} +time=[0e+00, 8.64e+05] +bui.ets.proHeaWat.heaPum.QCon_flow_nominal=[2.617e+05, 2.617e+05] +bui.ets.proHeaWat.heaPum.QCon_flow=[0e+00, 0e+00, 0e+00, 6.8332078125e+04, 8.7609640625e+04, 4.72914921875e+04, 6.347187109375e+04, 4.093409765624994e+04, 0e+00, 0e+00, 1.998871917724609e+02, 9.6070888671875e+03, 1.864936328125e+04, 9.3643828125e+04, 1.188654687499999e+05, 4.636187890625e+04, 6.345331640625e+04, 4.381543359375e+04, 0e+00, 0e+00, 1.074956665039062e+03, 7.68366796875e+03, 1.4722931640625e+04, 8.87203671875e+04, 9.269075e+04, 1.28489326171875e+04, 7.443037109375e+03, 1.28835947265624e+04, 0e+00, 0e+00, 0e+00, 2.82854736328125e+02, 6.584140625e+03, 9.09313046875e+04, 1.209758203125e+05, 4.317258203125e+04, 7.2149484375e+04, 4.464141015625e+04, 0e+00, 3.898369216918945e+01, 1.893034790039062e+03, 1.321053515625e+04, 2.10704296875e+04, 9.90063359375e+04, 1.49110171875e+05, 8.7107828125e+04, 1.25938875e+05, 7.05003671875e+04, 5.23193359375e+03, 1.9429689453125e+04, 2.897187109375e+04, 3.5531171875e+04, 4.036931640625e+04, 5.600375390625e+04, 5.474438281249999e+04, 5.514845312500001e+04, 5.775030468750002e+04, 5.9501625e+04, 4.480046484375006e+04, 5.053569921875e+04, 5.385569140625e+04, 5.63890078125e+04, 5.78007734375e+04, 7.5190078125e+04, 7.22923046875e+04, 6.8525078125e+04, 6.824821875e+04, 7.0196765625e+04, 5.36539296875e+04, 5.963400390625e+04, 6.259490234375e+04, 6.7062921875e+04, 6.91338046875e+04, 1.638688125e+05, 2.25433671875e+05, 1.40050671875e+05, 1.65744296875e+05, 9.90543203125e+04, 3.223062890625e+04, 4.62477421875e+04, 5.491522265625e+04, 6.186308984375e+04, 6.61288046875e+04, 1.6270740625e+05, 2.19996359375e+05, 1.190877734375e+05, 1.5886175e+05, 9.5975609375e+04, 3.0540328125e+04, 4.36042265625e+04, 5.21403515625e+04, 5.914487890625e+04, 6.43871484375e+04, 1.58365640625e+05, 2.05549421875e+05, 9.63893203125e+04, 1.3497484375e+05, 8.43976875e+04, 1.8075876953125e+04, 3.105394921875e+04, 4.038166796875e+04] +bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow_nominal=[3.5e+03, 3.5e+03] +bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow=[0e+00, 1.229643310546875e+03, 2.476189422607422e+02, -3.239327812932594e-20, 2.842608642578125e+03, 2.299481689453125e+03, 2.8765107421875e+03, 2.001404296874998e+03, -2.03157816632861e-13, 6.821018970222692e-31, 2.40390761711103e-38, -4.269558170604702e-31, 3.701128787236328e-30, 2.111073760986328e+02, 2.835105957031251e+03, 2.2953447265625e+03, 2.875015869140625e+03, 2.000676879882812e+03, 3.057628003328046e-14, 1.662270533868418e-22, 5.040801154690844e-26, -4.178991261705892e-26, 4.01680846997745e-27, 2.109526824951172e+02, 2.8350400390625e+03, 2.295301025390625e+03, 2.875073486328125e+03, 2.00068737792968e+03, -1.850355219241686e-17, -1.401298464353174e-45, -1.401298464324817e-45, 4.612398068233325e-28, -5.479956322841888e-27, 2.111732025146484e+02, 2.835009765625e+03, 2.2953095703125e+03, 2.875008544921875e+03, 2.000669921875e+03, 8.618032536786367e-15, -1.796191328779636e-29, 4.265002676724644e-28, 4.348725932895068e-27, -6.522621090959111e-28, 2.111585235595703e+02, 2.835083251953125e+03, 2.2953291015625e+03, 2.875030517578125e+03, 2.000654296875e+03, -2.802877424867941e-24, 1.420626170068686e-26, 5.650347505030506e-26, 3.375439950277728e-28, -8.326918043780796e-26, -9.50640946479484e-29, 7.788445287662445e-27, 9.914262724670984e-26, -1.027964024481024e-28, -1.750213964329069e-29, 2.611478851639825e-29, -1.975336364510986e-26, -2.131703609427931e-22, 4.629686602083705e-25, 5.070053704548394e-33, -0e+00, 0e+00, -2.777091768083185e-31, -2.095359209802589e-22, -7.937735981380339e-26, -1.063006500375151e-29, 3.617915974723539e-28, -9.89906112850871e-27, 3.897120783211527e-26, -6.183411383196562e-28, 4.540486450195312e+02, 2.82781689453125e+03, 2.2935166015625e+03, 2.874316162109375e+03, 2.000332397460938e+03, 1.636524934698366e-15, -1.723719433585226e-27, -7.971457165813813e-27, 5.077033289548612e-26, -2.070016775395414e-26, 2.112217102050781e+02, 2.8349453125e+03, 2.295324951171875e+03, 2.875013427734375e+03, 2.00069140625e+03, 2.125326620965907e-14, 4.207143427112176e-26, -1.861469685446177e-26, -1.505075578865342e-26, 8.342236813521254e-28, 2.111849060058594e+02, 2.835008544921875e+03, 2.295303955078125e+03, 2.87497216796875e+03, 2.000671264648438e+03, -1.764813990555771e-17, -1.908775794224656e-25, 2.424432258588584e-26] +bui.PHea=[0e+00, 4.129379577636719e+02, 8.195110321044922e+01, 9.10314453125e+03, 1.32969580078125e+04, 6.47293310546875e+03, 9.3297685546875e+03, 5.414883789062491e+03, -6.56160171227764e-14, 2.203056264076643e-31, 1.693219947814941e+01, 8.795237426757812e+02, 1.83262451171875e+03, 1.3328087890625e+04, 1.887948242187499e+04, 6.33376220703125e+03, 9.3190869140625e+03, 5.83511865234375e+03, 9.875542732477784e-15, 5.368809985002713e-23, 9.199900054931641e+01, 6.925162963867188e+02, 1.403852661132812e+03, 1.24907861328125e+04, 1.41704697265625e+04, 2.053074951171875e+03, 1.738276123046875e+03, 1.942070922851549e+03, -5.976286867876612e-18, -9.239933084568223e-57, -0e+00, 2.397533416748047e+01, 5.888497924804688e+02, 1.2863697265625e+04, 1.92775703125e+04, 5.85753955078125e+03, 1.07806337890625e+04, 5.9599892578125e+03, 2.783456779070748e-15, 3.2947678565979e+00, 1.632985229492188e+02, 1.242572387695312e+03, 2.108059326171875e+03, 1.42583583984375e+04, 2.48443203125e+04, 1.3003712890625e+04, 2.0232048828125e+04, 1.0188537109375e+04, 4.643344421386719e+02, 1.91995654296875e+03, 3.064969482421875e+03, 3.92646826171875e+03, 4.60092626953125e+03, 6.99889013671875e+03, 6.795449707031249e+03, 6.859562011718753e+03, 7.287243652343754e+03, 7.582001953125e+03, 5.249188476562509e+03, 6.1226435546875e+03, 6.65002392578125e+03, 7.061298828125e+03, 7.29694482421875e+03, 1.01989833984375e+04, 9.7370966796875e+03, 9.144416015625e+03, 9.10112890625e+03, 9.4060380859375e+03, 6.61985205078125e+03, 7.60239208984375e+03, 8.10904345703125e+03, 8.8944267578125e+03, 9.2393798828125e+03, 2.70493203125e+04, 4.241352734375e+04, 2.2811587890625e+04, 2.84060625e+04, 1.49713759765625e+04, 3.48713671875e+03, 5.4628408203125e+03, 6.81955224609375e+03, 7.98176123046875e+03, 8.7278291015625e+03, 2.6704880859375e+04, 4.107555078125e+04, 1.8714380859375e+04, 2.6916154296875e+04, 1.443109765625e+04, 3.267202880859375e+03, 5.06916259765625e+03, 6.37342919921875e+03, 7.52041064453125e+03, 8.4193056640625e+03, 2.57766015625e+04, 3.75463828125e+04, 1.4594505859375e+04, 2.1997396484375e+04, 1.2450072265625e+04, 1.770950439453125e+03, 3.331638671875e+03, 4.6022021484375e+03] +bui.PPum=[5.250715836882591e-02, 2.401509552001953e+02, 5.265277709960938e+02, 2.52985693359375e+03, 2.9478330078125e+03, 2.2066201171875e+03, 2.4804013671875e+03, 2.107822509765624e+03, 9.476273345947266e+01, 9.275942993164062e+01, 2.97861083984375e+02, 1.51692822265625e+03, 1.683223266601562e+03, 2.984968994140625e+03, 3.499408203124999e+03, 2.20546484375e+03, 2.46300732421875e+03, 2.161532958984375e+03, 9.482283782958984e+01, 9.277193450927734e+01, 1.096280029296875e+03, 1.482677978515625e+03, 1.613994506835938e+03, 2.906158203125e+03, 3.082752197265625e+03, 1.623158325195312e+03, 1.4896220703125e+03, 1.602397460937498e+03, 9.482556152343749e+01, 9.289024353027344e+01, 9.205660247802734e+01, 3.061598815917969e+02, 1.471255004882812e+03, 2.934306396484375e+03, 3.5347880859375e+03, 2.15309814453125e+03, 2.62481982421875e+03, 2.184080078125e+03, 9.474106597900391e+01, 1.641004638671875e+02, 1.428936889648438e+03, 1.57335009765625e+03, 1.7268935546875e+03, 3.073208740234375e+03, 4.056368896484375e+03, 2.971629638671875e+03, 3.603107666015625e+03, 2.73299609375e+03, 1.473828002929688e+03, 1.694313720703125e+03, 1.869394287109375e+03, 1.984923706054688e+03, 2.0682548828125e+03, 2.336109375e+03, 2.31902880859375e+03, 2.321938232421875e+03, 2.369696044921875e+03, 2.407151123046875e+03, 2.146822998046877e+03, 2.233543701171875e+03, 2.29672705078125e+03, 2.34144384765625e+03, 2.37454541015625e+03, 2.71165576171875e+03, 2.660501708984375e+03, 2.582310302734375e+03, 2.57335009765625e+03, 2.610464111328125e+03, 2.3004619140625e+03, 2.404121337890625e+03, 2.462782958984375e+03, 2.546915283203125e+03, 2.58826953125e+03, 4.3203759765625e+03, 5.9290263671875e+03, 3.948947265625e+03, 4.441044921875e+03, 3.242529541015625e+03, 1.933377563476562e+03, 2.158819091796875e+03, 2.31076513671875e+03, 2.44544287109375e+03, 2.528826171875e+03, 4.28180419921875e+03, 5.803943359375e+03, 3.536772705078125e+03, 4.2744521484375e+03, 3.192241943359375e+03, 1.903412963867188e+03, 2.11746044921875e+03, 2.25700048828125e+03, 2.395784912109375e+03, 2.492286376953125e+03, 4.18769482421875e+03, 5.43679296875e+03, 3.14006494140625e+03, 3.77429638671875e+03, 2.990113037109375e+03, 1.684476318359375e+03, 1.9044873046875e+03, 2.066050048828125e+03] +bui.QHea_flow=[0e+00, 1.505360412597656e+02, 1.964997924804688e+03, 6.70619453125e+04, 8.79494375e+04, 4.812790234375e+04, 6.33616796875e+04, 4.203753515624994e+04, 7.762696593999863e-02, 2.158230170607567e-02, 4.942075500488281e+02, 8.9323134765625e+03, 1.8312642578125e+04, 9.14274921875e+04, 1.199913593749999e+05, 4.77527578125e+04, 6.261430078125e+04, 4.52699765625e+04, 8.062047511339188e-02, 2.184238284826279e-02, 2.267813720703125e+03, 7.10513134765625e+03, 1.427617578125e+04, 8.68503359375e+04, 9.5471828125e+04, 1.4348443359375e+04, 7.31560302734375e+03, 1.339676074218741e+04, 7.334928214549978e-02, 2.127661369740969e-02, 1.198167353868484e-02, 5.27404541015625e+02, 6.46557861328125e+03, 8.8604671875e+04, 1.219892421875e+05, 4.451583984375e+04, 7.11182890625e+04, 4.651373046875e+04, 7.690268009901047e-02, 0e+00, 3.3293017578125e+03, 1.1968232421875e+04, 2.0800884765625e+04, 9.665615625e+04, 1.4873903125e+05, 8.83800234375e+04, 1.259342109375e+05, 7.49642421875e+04, 6.57086669921875e+03, 1.896386328125e+04, 2.8791064453125e+04, 3.53470390625e+04, 4.02508125e+04, 5.586967578125e+04, 5.486709374999999e+04, 5.507494921875001e+04, 5.759128515625002e+04, 5.949966796875e+04, 4.493543750000009e+04, 5.044885546875e+04, 5.377062890625e+04, 5.613824609375e+04, 5.7799734375e+04, 7.51829609375e+04, 7.24934296875e+04, 6.8629359375e+04, 6.8233859375e+04, 7.00935546875e+04, 5.372775390625e+04, 5.94065546875e+04, 6.244809375e+04, 6.6911484375e+04, 6.89982421875e+04, 1.62266578125e+05, 2.2490328125e+05, 1.4193475e+05, 1.6625778125e+05, 1.041996640625e+05, 3.2251556640625e+04, 4.5971e+04, 5.4582828125e+04, 6.159358984375e+04, 6.59460703125e+04, 1.605654375e+05, 2.203854375e+05, 1.206605234375e+05, 1.589179375e+05, 1.012015234375e+05, 3.0566935546875e+04, 4.3357421875e+04, 5.176448828125e+04, 5.8977375e+04, 6.405625e+04, 1.56225609375e+05, 2.06757421875e+05, 9.7960484375e+04, 1.34831421875e+05, 8.92684375e+04, 1.828333984375e+04, 3.0786908203125e+04, 4.016228515625e+04] +bui.QCoo_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +bui.ets.loaSHW=[0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070291e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070227e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00] +bui.ets.THotWatSupSet=[3.221499938964844e+02, 3.221499938964844e+02] +bui.ets.tmv.THot=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.221499938964844e+02, 3.221495666503906e+02, 3.221498413085938e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221499938964844e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.221499938964844e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221512145996094e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.221499938964844e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498107910156e+02, 3.221508178710938e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.221500244140625e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.2215087890625e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221502685546875e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221506958007812e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221500244140625e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221500244140625e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.220966186523438e+02, 3.220966186523438e+02, 3.220966186523438e+02] +bui.ets.proHotWat.senTHotSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.335948791503906e+02, 3.338206787109375e+02, 3.319593200683594e+02, 3.32568359375e+02, 3.321694030761719e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.337945251464844e+02, 3.339643859863281e+02, 3.320223999023438e+02, 3.325864562988281e+02, 3.321753234863281e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.338075866699219e+02, 3.339660949707031e+02, 3.320228576660156e+02, 3.325857238769531e+02, 3.321753234863281e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.337971496582031e+02, 3.339664916992188e+02, 3.320231018066406e+02, 3.325865173339844e+02, 3.321754150390625e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.337957763671875e+02, 3.339654541015625e+02, 3.320229797363281e+02, 3.325875244140625e+02, 3.321754760742188e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.337682495117188e+02, 3.339943237304688e+02, 3.320491638183594e+02, 3.325955810546875e+02, 3.321780090332031e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.337967834472656e+02, 3.339671630859375e+02, 3.320231323242188e+02, 3.32587158203125e+02, 3.321753540039062e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.33795654296875e+02, 3.339662170410156e+02, 3.320230102539062e+02, 3.325879211425781e+02, 3.321752319335938e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02] +bui.ets.proHotWat.TSetHotSou.y=[3.331499938964844e+02, 3.331499938964844e+02] +bui.ets.sinDHW.ports[1].m_flow=[0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856732e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856687e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00] +bui.ets.proHotWat.PHea=[0e+00, 4.129379577636719e+02, 8.195110321044922e+01, -1.045940723225537e-20, 1.055141357421875e+03, 8.443702392578125e+02, 1.068448852539062e+03, 7.305020751953117e+02, -6.56160171227764e-14, 2.203056264076643e-31, 7.764153381807549e-39, -1.378984060343699e-31, 1.195392460916171e-30, 6.988472747802734e+01, 1.0522109375e+03, 8.427813720703125e+02, 1.067862060546875e+03, 7.302257080078125e+02, 9.875542732477784e-15, 5.368809985002713e-23, 1.628080564404674e-26, -1.349732688815791e-26, 1.297350899520957e-27, 6.983228302001953e+01, 1.052185180664062e+03, 8.427645874023438e+02, 1.067884765625e+03, 7.30229736328122e+02, -5.976286867876612e-18, -9.239933084568223e-57, -0e+00, 1.489714636073926e-28, -1.769919026277176e-27, 6.990704345703125e+01, 1.05217333984375e+03, 8.427678833007812e+02, 1.067859252929688e+03, 7.3022314453125e+02, 2.783456779070748e-15, -5.801348244584955e-30, 1.377512726038221e-28, 1.404553649125892e-27, -2.10667943263295e-28, 6.990206909179688e+01, 1.0522021484375e+03, 8.42775390625e+02, 1.067867919921875e+03, 7.302171630859375e+02, -9.052747853339001e-25, 4.58834589952985e-27, 1.824952204807849e-26, 1.090201413598939e-28, -2.689432361142094e-26, -3.070385225816739e-29, 2.515516226413468e-27, 3.202113679742693e-26, -3.320123570970746e-29, -5.652850018075843e-30, 8.434567309409735e-30, -6.37995147475981e-27, -6.88498739197429e-23, 1.495298541576621e-25, 1.637528466555734e-33, -0e+00, 0e+00, -8.969465645891489e-32, -6.767601733833782e-23, -2.563734001094135e-26, -3.433303778186785e-30, 1.168516345521908e-28, -3.197203945054185e-27, 1.258694057381805e-26, -1.997121463299024e-28, 1.544177703857422e+02, 1.04935498046875e+03, 8.420792236328125e+02, 1.067587524414062e+03, 7.300949096679688e+02, 5.285656585643061e-16, -5.567277505037919e-28, -2.574625520115633e-27, 1.639782822895562e-26, -6.685751016515604e-27, 6.992348480224609e+01, 1.05214794921875e+03, 8.427738037109375e+02, 1.067861206054688e+03, 7.302312622070312e+02, 6.864390579932635e-15, 1.358825389269232e-26, -6.012184366671378e-27, -4.861100720485837e-27, 2.694379844057632e-28, 6.99110107421875e+01, 1.052172729492188e+03, 8.427657470703125e+02, 1.067844970703125e+03, 7.302236328125e+02, -5.700005234561551e-18, -6.16497385880066e-26, 7.83044365677369e-27] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt new file mode 100644 index 00000000000..b2578a4ce18 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt @@ -0,0 +1,20 @@ +last-generated=2023-09-13 +statistics-initialization= +{ + "nonlinear": "1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": " ", + "nonlinear": "1", + "number of continuous time states": "10", + "numerical Jacobians": "0" +} +time=[0e+00, 8.64e+04] +TSetHot=[3.161499938964844e+02, 3.161499938964844e+02] +THot=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.107437438964844e+02, 3.107437438964844e+02, 3.127442321777344e+02, 3.109439697265625e+02, 3.109439697265625e+02, 3.095417175292969e+02, 3.080151672363281e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.118523254394531e+02, 3.118523254394531e+02, 3.118523254394531e+02, 3.159422302246094e+02, 3.172503662109375e+02, 3.157680969238281e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.122249755859375e+02, 3.122249755859375e+02, 3.122249755859375e+02, 3.122450866699219e+02, 3.153526611328125e+02, 3.153526611328125e+02, 3.153526611328125e+02, 3.111761779785156e+02, 3.111761779785156e+02, 3.111761779785156e+02, 3.099002990722656e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.110359497070312e+02, 3.110359497070312e+02, 3.110359497070312e+02, 3.119671325683594e+02, 3.119671325683594e+02, 3.119671325683594e+02, 3.119671325683594e+02, 3.092549743652344e+02, 3.1422119140625e+02, 3.1422119140625e+02, 3.1422119140625e+02, 3.1196826171875e+02, 3.1196826171875e+02, 3.1196826171875e+02, 3.161902770996094e+02, 3.161902770996094e+02, 3.161902770996094e+02, 3.161902770996094e+02, 3.16188232421875e+02, 3.16188232421875e+02] +gen.TSetHotSou=[3.231499938964844e+02, 3.231499938964844e+02] +gen.senTemHot.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02] +PEle=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.704695703125e+04, 3.704695703125e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.17057431640625e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.197339199483395e-09, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +loa.port_hot.m_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt new file mode 100644 index 00000000000..c2d1446d9f6 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt @@ -0,0 +1,20 @@ +last-generated=2023-09-13 +statistics-initialization= +{ + "nonlinear": "1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "12, 1, 1", + "number of continuous time states": "19", + "numerical Jacobians": "0" +} +time=[0e+00, 8.64e+04] +TSetHot=[3.161499938964844e+02, 3.161499938964844e+02] +THot=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.16143310546875e+02, 3.16143310546875e+02, 3.161377563476562e+02, 3.161424255371094e+02, 3.161435852050781e+02, 3.109173583984375e+02, 3.109173583984375e+02, 3.133266906738281e+02, 3.11013671875e+02, 3.11013671875e+02, 3.097061462402344e+02, 3.082455749511719e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.12044677734375e+02, 3.12044677734375e+02, 3.12044677734375e+02, 3.160348510742188e+02, 3.175538940429688e+02, 3.154889526367188e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.12392333984375e+02, 3.12392333984375e+02, 3.12392333984375e+02, 3.124154357910156e+02, 3.164227905273438e+02, 3.164227905273438e+02, 3.164227905273438e+02, 3.116412963867188e+02, 3.116412963867188e+02, 3.116412963867188e+02, 3.1035791015625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.113890075683594e+02, 3.113890075683594e+02, 3.113890075683594e+02, 3.127131042480469e+02, 3.127131042480469e+02, 3.127131042480469e+02, 3.127131042480469e+02, 3.098422546386719e+02, 3.130548706054688e+02, 3.130548706054688e+02, 3.130548706054688e+02, 3.113191833496094e+02, 3.113191833496094e+02, 3.113191833496094e+02, 3.161195068359375e+02, 3.161195068359375e+02, 3.161195068359375e+02, 3.161195068359375e+02, 3.161198120117188e+02, 3.161198120117188e+02] +gen.TSetHotSou=[3.231499938964844e+02, 3.231499938964844e+02] +gen.senTemHotSou.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246146545410156e+02, 3.246146545410156e+02, 3.248005676269531e+02, 3.211996154785156e+02, 3.209341125488281e+02, 3.246581726074219e+02, 3.246581726074219e+02, 3.246655883789062e+02, 3.246721496582031e+02, 3.246721496582031e+02, 3.252598571777344e+02, 3.252611389160156e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252671508789062e+02, 3.252671508789062e+02, 3.252671508789062e+02, 3.252676391601562e+02, 3.25468505859375e+02, 3.255260314941406e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256194458007812e+02, 3.256194458007812e+02, 3.256194458007812e+02, 3.256190795898438e+02, 3.256181945800781e+02, 3.256181945800781e+02, 3.256181945800781e+02, 3.256387939453125e+02, 3.256387939453125e+02, 3.256387939453125e+02, 3.256375732421875e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.2563525390625e+02, 3.2563525390625e+02, 3.2563525390625e+02, 3.256336975097656e+02, 3.256336975097656e+02, 3.256336975097656e+02, 3.256336975097656e+02, 3.256320190429688e+02, 3.256338500976562e+02, 3.256338500976562e+02, 3.256338500976562e+02, 3.256575622558594e+02, 3.256575622558594e+02, 3.256575622558594e+02, 3.256576232910156e+02, 3.256576232910156e+02, 3.256576232910156e+02, 3.256576232910156e+02, 3.256588134765625e+02, 3.256588134765625e+02] +PEle=[0e+00, 3.103523681640625e+03, -1.465154525481793e-10, 1.550883178710938e+03, 6.258164125805266e-11, 1.709812067591469e-14, 1.438067920953322e-16, 7.15553622864761e-19, 1.24297266117045e-21, 2.225782482564211e-24, 1.211465919491939e-24, 1.98803684019577e-25, 1.047240777665087e-27, 3.905370889314299e-28, 8.470158081008237e-31, 4.219804666909538e-31, 4.607917871819403e-32, 9.254665143232935e-30, 2.408780593060944e-29, 4.453178851762469e-29, 7.057294030630628e-29, 9.507273124004276e-29, 9.00265179333187e-29, 7.702401719243253e-29, 5.608455452066998e-29, 2.722738921747491e-29, 3.32363673802343e-30, -1.64012438566842e-30, -2.550352543544029e-30, 1.7966552734375e+04, -1.564641194384819e-09, 3.29233125e+04, 3.79801875e+04, 7.712996826171875e+02, -1.302936011677039e-32, -7.534133882265353e-37, -0e+00, 4.58720361328125e+03, -1.321613818383582e-09, -3.810719091128461e-30, 4.452065351006376e-41, -5.003991191188106e-06, 5.362566293798388e-11, -4.578739595589507e-14, -9.461363314786455e-17, -1.595937975429318e-19, -3.096022649216903e-20, -1.497460072718962e-22, -7.388110255549767e-23, -1.147643719600712e-25, 1.434373951049787e-25, 4.011957483855846e-25, 1.933747679217493e-25, -4.264338429038617e-07, -3.085943393182911e-12, 6.778040229641616e-15, 1.953139648437409e+03, 4.494578124999919e+03, 1.570675415039062e+03, 4.90271484375e+03, -5.464413921352218e-10, -3.556326323994239e-27, -5.069022575597532e-32, 9.465850094278863e-34, -0e+00, -0e+00, -0e+00, 0e+00, 8.666137084960573e+02, 4.038910345676715e-18, 4.66766993281477e-21, 0e+00, 0e+00, 0e+00, 0e+00, 3.063947509765625e+03, 1.645690181351078e-11, -9.732230554684089e-17, -1.202516271191407e-19, -2.995820835265069e-22, -2.855609423723119e-25, -0e+00, -0e+00, -0e+00, 2.240308349609375e+03, 7.704126225860364e-09, -1.755631001972122e-15, -5.119266955496753e-18, -0e+00, 2.895234130859375e+03, -1.25267209938329e-08, 1.460518446634584e-12, -2.388231183865067e-31, -7.191169446237453e-40, -4.203895392974451e-45, -9.88722135275566e-08, -2.039525016473298e-30, 9.684194320745377e-39, 3.254936072933685e-41, 0e+00, 0e+00] +loa.port_hot.m_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos index dec29ad1a51..9a51efe5c2a 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithAuxHeat"); -createPlot(id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); +createPlot(filename="HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mat", id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos index cf047e6b90b..c78deacaa4d 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos @@ -1,6 +1,6 @@ simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureHeatPumpWithTank"); -createPlot(id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); -createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); +createPlot(filename="HeaterAndFixtureHeatPumpWithTank.mat", id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); +createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHotSou.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos new file mode 100644 index 00000000000..b0b8bde6124 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos @@ -0,0 +1,18 @@ +compareVars := + { + "bui.ets.proHeaWat.heaPum.QCon_flow_nominal", + "bui.ets.proHeaWat.heaPum.QCon_flow", + "bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow_nominal", + "bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow", + "bui.PHea", + "bui.PPum", + "bui.QHea_flow", + "bui.QCoo_flow", + "bui.ets.loaSHW", + "bui.ets.THotWatSupSet", + "bui.ets.tmv.THot", + "bui.ets.proHotWat.senTHotSup.T", + "bui.ets.proHotWat.TSetHotSou.y", + "bui.ets.sinDHW.ports[1].m_flow", + "bui.ets.proHotWat.PHea" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos new file mode 100644 index 00000000000..609c9c1f768 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos @@ -0,0 +1,9 @@ +compareVars := + { + "TSetHot", + "THot", + "gen.TSetHotSou", + "gen.senTemHot.T", + "PEle", + "loa.port_hot.m_flow" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos new file mode 100644 index 00000000000..9d8b36fefd3 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos @@ -0,0 +1,9 @@ +compareVars := + { + "TSetHot", + "THot", + "gen.TSetHotSou", + "gen.senTemHotSou.T", + "PEle", + "loa.port_hot.m_flow" + }; From 1f5841e6c468c7ab835a513e5df63477ecf41215 Mon Sep 17 00:00:00 2001 From: David Blum Date: Sat, 16 Sep 2023 09:26:58 -0700 Subject: [PATCH 097/183] Remove BOM --- .../DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo | 2 +- .../DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo | 2 +- Buildings/Experimental/DHC/Loads/BaseClasses/SimpleRoomODE.mo | 2 +- .../DHC/Loads/Steam/BaseClasses/ControlVolumeCondensation.mo | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo index f5a88969f52..9493aa684d3 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls; +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls; block SwitchBox "Controller for flow switch box" extends Modelica.Blocks.Icons.Block; parameter Real trueHoldDuration( diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo index 58879844588..d1b307c7872 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; model HeatPump "Base subsystem with water-to-water heat pump" replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium "Medium model on condenser side" diff --git a/Buildings/Experimental/DHC/Loads/BaseClasses/SimpleRoomODE.mo b/Buildings/Experimental/DHC/Loads/BaseClasses/SimpleRoomODE.mo index 2185e081bb9..9eb42ef71f9 100644 --- a/Buildings/Experimental/DHC/Loads/BaseClasses/SimpleRoomODE.mo +++ b/Buildings/Experimental/DHC/Loads/BaseClasses/SimpleRoomODE.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.BaseClasses; +within Buildings.Experimental.DHC.Loads.BaseClasses; model SimpleRoomODE "Simplified model for assessing room air temperature variations around a set point" extends Modelica.Blocks.Icons.Block; diff --git a/Buildings/Experimental/DHC/Loads/Steam/BaseClasses/ControlVolumeCondensation.mo b/Buildings/Experimental/DHC/Loads/Steam/BaseClasses/ControlVolumeCondensation.mo index 67b15da023e..12b83381eaf 100644 --- a/Buildings/Experimental/DHC/Loads/Steam/BaseClasses/ControlVolumeCondensation.mo +++ b/Buildings/Experimental/DHC/Loads/Steam/BaseClasses/ControlVolumeCondensation.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.Loads.Steam.BaseClasses; +within Buildings.Experimental.DHC.Loads.Steam.BaseClasses; model ControlVolumeCondensation "Control volume model exhibiting the condensation process of water" extends From c7b67dda296fb7dc51d84d98bd2fcf66aaa1be25 Mon Sep 17 00:00:00 2001 From: David Blum Date: Sat, 16 Sep 2023 10:19:39 -0700 Subject: [PATCH 098/183] Fix html and remove old DHW pacakge --- ...tHeatExchangerWaterHeaterWithAuxHeatOLD.mo | 64 ------ .../DELETE/HeatPumpWaterHeaterWithTankOLD.mo | 80 ------- .../DHW/BaseClasses/DELETE/IdealValve.mo | 108 --------- .../DELETE/PartialDHWGeneration.mo | 24 -- .../DHW/BaseClasses/DELETE/package.order | 4 - .../DHW/BaseClasses/PartialFourPortDHW.mo | 37 --- .../DHC/Loads/DHW/BaseClasses/package.mo | 12 - .../DHC/Loads/DHW/BaseClasses/package.order | 1 - .../Loads/DHW/DELETE/AnnualScheduleDHWLoad.mo | 90 -------- .../DHC/Loads/DHW/DELETE/package.order | 1 - .../Experimental/DHC/Loads/DHW/DHWLoad.mo | 74 ------ .../DHW/Data/GenericHeatPumpWaterHeater.mo | 57 ----- .../DHC/Loads/DHW/Data/HeatPumpWaterHeater.mo | 55 ----- .../DHC/Loads/DHW/Data/package.mo | 4 - .../DHC/Loads/DHW/Data/package.order | 2 - ...rectHeatExchangerWaterHeaterWithAuxHeat.mo | 94 -------- .../DHW/Examples/DomesticWaterFixture.mo | 93 -------- .../Loads/DHW/Examples/DomesticWaterHeater.mo | 98 -------- .../Examples/DomesticWaterHeaterAndFixture.mo | 116 ---------- .../DHC/Loads/DHW/Examples/package.mo | 14 -- .../DHC/Loads/DHW/Examples/package.order | 3 - .../Loads/DHW/HeatPumpWaterHeaterWithTank.mo | 212 ------------------ .../DHC/Loads/DHW/ThermostaticMixingValve.mo | 177 --------------- .../Experimental/DHC/Loads/DHW/package.order | 7 - .../DirectHeatExchangerWithAuxHeat.mo | 2 +- ...ndFixtureDirectHeatExchangerWithAuxHeat.mo | 2 +- .../HeaterAndFixtureHeatPumpWithTank.mo | 2 +- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 4 +- 28 files changed, 5 insertions(+), 1432 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/IdealValve.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/PartialFourPortDHW.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/DELETE/AnnualScheduleDHWLoad.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/DELETE/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/DHWLoad.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Data/HeatPumpWaterHeater.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Data/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Data/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeater.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Examples/package.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/Examples/package.order delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo delete mode 100644 Buildings/Experimental/DHC/Loads/DHW/package.order diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo deleted file mode 100644 index e689132f1e5..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/DirectHeatExchangerWaterHeaterWithAuxHeatOLD.mo +++ /dev/null @@ -1,64 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.BaseClasses.DELETE; -model DirectHeatExchangerWaterHeaterWithAuxHeatOLD - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends - Buildings.Experimental.DHC.Loads.DHW.BaseClasses.DELETE.PartialDHWGeneration; - - parameter Boolean haveER "Flag that specifies whether electric resistance booster is present"; - - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - dp_nominal=0) if haveER == true - "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,-10},{30,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dp1_nominal=0, - dp2_nominal=0, - eps=0.85) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,16},{-50,-4}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-30,-10},{-10,10}}))); -protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, - final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if haveER == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,-38},{30,-18}}))); - -equation - connect(senTemAuxHeaOut.port_b, port_hw) - annotation (Line(points={{80,0},{100,0}}, color={0,127,255})); - connect(hex.port_a1, port_cw) - annotation (Line(points={{-70,0},{-100,0}}, color={0,127,255})); - connect(port_dhs, hex.port_a2) annotation (Line(points={{-40,100},{-40, - 12},{-50,12}}, - color={0,127,255})); - connect(hex.port_b2, port_dhr) annotation (Line(points={{-70,12},{-80, - 12},{-80,60},{-80,60},{-80,100}}, - color={0,127,255})); - connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-30,0},{-50,0}}, color={0,127,255})); - connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-10,0},{10,0}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-10,0},{0,0}, - {0,-28},{10,-28}}, color={0,127,255})); - connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,0},{60,0}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,-28}, - {40,-28},{40,0},{60,0}}, color={0,127,255})); - connect(conTSetHw.y, heaDhw.TSet) - annotation (Line(points={{-83.2,32},{0,32},{0,8},{8,8}}, color={0,0,127})); - connect(heaDhw.Q_flow, PEle) annotation (Line(points={{31,8},{40,8},{40, - 40},{106,40}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DirectHeatExchangerWaterHeaterWithAuxHeatOLD; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo deleted file mode 100644 index cb4f55563f0..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/HeatPumpWaterHeaterWithTankOLD.mo +++ /dev/null @@ -1,80 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.BaseClasses.DELETE; -model HeatPumpWaterHeaterWithTankOLD - "A model for domestic water heating served by heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.DHW.BaseClasses.DELETE.PartialDHWGeneration; - - parameter Modelica.Units.SI.Volume VTan = 0.151416 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.746 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.0762 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns=0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal=2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal=0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - QCon_flow_nominal=QCon_flow_nominal, - dp1_nominal=0, - dp2_nominal=0) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-70,58},{-50,38}}))); - Fluid.Storage.StratifiedEnhancedInternalHex tan( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - VTan=VTan, - hTan=hTan, - dIns=dIns, - kIns=kIns, - nSeg=5, - redeclare package MediumHex = Medium, - CHex=40, - Q_flow_nominal=0.278*4200*20, - hHex_a=0.995, - hHex_b=0.1, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - allowFlowReversal=false, - allowFlowReversalHex=false, - mHex_flow_nominal=mHex_flow_nominal, - TTan_nominal=293.15, - THex_nominal=323.15, - dpHex_nominal=dpHex_nominal) - "Hot water tank with heat exchanger configured as steady state" - annotation (Placement(transformation(extent={{-50,-10},{-70,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-28,20}))); -equation - connect(senTemTankOut.port_b, port_hw) - annotation (Line(points={{20,0},{100,0}}, color={0,127,255})); - connect(port_dhs, heaPum.port_a2) - annotation (Line(points={{-40,100},{-40,54},{-50,54}}, color={0,127,255})); - connect(heaPum.port_b2, port_dhr) - annotation (Line(points={{-70,54},{-80,54},{-80,100}}, color={0,127,255})); - connect(tan.port_a, senTemTankOut.port_a) - annotation (Line(points={{-50,0},{0,0}}, color={0,127,255})); - connect(heaPum.P, PEle) annotation (Line(points={{-49,48},{0,48},{0,40},{106, - 40}}, color={0,0,127})); - connect(conTSetHw.y, heaPum.TSet) annotation (Line(points={{-83.2,32},{-80,32}, - {-80,39},{-72,39}}, color={0,0,127})); - connect(port_cw, tan.port_b) - annotation (Line(points={{-100,0},{-70,0}}, color={0,127,255})); - connect(tan.portHex_b, heaPum.port_a1) annotation (Line(points={{-50,-8},{-40, - -8},{-40,-20},{-76,-20},{-76,42},{-70,42}}, color={0,127,255})); - connect(tan.portHex_a, senTemHPOut.port_b) annotation (Line(points={{-50,-3.8}, - {-28,-3.8},{-28,10}}, color={0,127,255})); - connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{-50,42},{-28,42},{-28,30}}, color={0,127,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeaterWithTankOLD; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/IdealValve.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/IdealValve.mo deleted file mode 100644 index 807117f1f73..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/IdealValve.mo +++ /dev/null @@ -1,108 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.BaseClasses.DELETE; -model IdealValve "Ideal three-way valve" - extends Modelica.Blocks.Icons.Block; - replaceable package Medium = Modelica.Media.Interfaces.PartialMedium "Medium in the component" - annotation (choicesAllMatching = true); - parameter Modelica.Units.SI.MassFlowRate m_flow_nominal - "Design chilled water supply flow"; - parameter Boolean port_3_fraction = true "True for fraction of port 2 flow, False for fraction of m_flow_nominal"; - Modelica.Fluid.Interfaces.FluidPort_a port_1(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{50,88}, - {70,108}}), iconTransformation(extent={{50,88},{70,108}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_2(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{50,-108}, - {70,-88}}), iconTransformation(extent={{50,-108},{70,-88}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_3(redeclare package Medium = - Medium) annotation (Placement(transformation(extent={{90,-10}, - {110,10}}), iconTransformation(extent={{90,-10},{110,10}}))); - Modelica.Blocks.Interfaces.RealInput y(min=0, max=1) annotation (Placement( - transformation(extent={{-120,-10},{-100,10}}), - iconTransformation(extent={{-120,-10},{-100,10}}))); - Buildings.Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = - Medium, allowFlowReversal=false) "Mass flow rate sensor" annotation ( - Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=90, - origin={0,-40}))); - Buildings.Fluid.Movers.BaseClasses.IdealSource preMasFlo( - redeclare package Medium = Medium, - control_m_flow=true, - control_dp=false, - m_flow_small=m_flow_nominal*1E-5, - show_V_flow=false, - allowFlowReversal=false) "Prescribed mass flow rate for the bypass" - annotation (Placement(transformation( - extent={{-10,10},{10,-10}}, - rotation=180, - origin={50,0}))); - Modelica.Blocks.Math.Product pro "Product for mass flow rate computation" - annotation (Placement(transformation(extent={{-28,6},{-8,26}}))); - Modelica.Blocks.Sources.Constant one(final k=1) "Outputs one" - annotation (Placement(transformation(extent={{-90,12},{-70,32}}))); - Modelica.Blocks.Math.Feedback feedback - annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); - Modelica.Blocks.Logical.Switch fraSwi - annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); - Modelica.Blocks.Sources.Constant con(final k=m_flow_nominal) "Constant" - annotation (Placement(transformation(extent={{-100,-70},{-80,-50}}))); - Modelica.Blocks.Sources.BooleanConstant fra(k=port_3_fraction) - annotation (Placement(transformation(extent={{-100,-40},{-80,-20}}))); -equation - connect(feedback.u1, one.y) - annotation (Line(points={{-58,22},{-69,22}}, - color={0,0,127})); - connect(y, feedback.u2) - annotation (Line(points={{-110,0},{-50,0},{-50,14}},color={0,0,127})); - connect(preMasFlo.port_a, port_3) - annotation (Line(points={{60,-1.33227e-15},{80,-1.33227e-15},{80,0},{100, - 0}}, color={0,127,255})); - connect(feedback.y, pro.u1) - annotation (Line(points={{-41,22},{-30,22}}, - color={0,0,127})); - connect(pro.y, preMasFlo.m_flow_in) - annotation (Line(points={{-7,16},{56,16},{56,8}}, color={0,0,127})); - connect(port_1, senMasFlo.port_a) - annotation (Line(points={{60,98},{60,60},{4.44089e-16,60},{4.44089e-16, - -30}}, color={0,127,255})); - connect(senMasFlo.port_b, port_2) - annotation (Line(points={{-4.44089e-16,-50},{0,-50},{0,-72},{60,-72},{60, - -92},{60,-92},{60,-98},{60,-98}}, color={0,127,255})); - connect(preMasFlo.port_b, senMasFlo.port_a) annotation (Line(points={{40, - 1.33227e-15},{4.44089e-16,1.33227e-15},{4.44089e-16,-30}}, - color={0,127,255})); - connect(senMasFlo.m_flow, fraSwi.u1) annotation (Line(points={{-11,-40},{-60,-40}, - {-60,-12},{-42,-12}}, color={0,0,127})); - connect(con.y, fraSwi.u3) annotation (Line(points={{-79,-60},{-62,-60},{-62,-28}, - {-42,-28}}, color={0,0,127})); - connect(fraSwi.y, pro.u2) annotation (Line(points={{-19,-20},{-10,-20},{-10,0}, - {-40,0},{-40,10},{-30,10}}, color={0,0,127})); - connect(fra.y, fraSwi.u2) annotation (Line(points={{-79,-30},{-70,-30},{-70,-20}, - {-42,-20}}, color={255,0,255})); - annotation ( - Icon( - graphics={ - Polygon( - points={{60,0},{68,14},{52,14},{60,0}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line(points={{60,100},{60,-100}}, color={28,108,200}), - Line(points={{102,0},{62,0}}, color={28,108,200}), - Polygon( - points={{60,0},{68,-14},{52,-14},{60,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line(points={{62,0},{-98,0}}, color={0,0,0}), - Rectangle( - visible=use_inputFilter, - extent={{28,-10},{46,10}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Polygon( - points={{72,-8},{72,8},{60,0},{72,-8}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid)})); -end IdealValve; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo deleted file mode 100644 index ca13aea73fd..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/PartialDHWGeneration.mo +++ /dev/null @@ -1,24 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.BaseClasses.DELETE; -partial model PartialDHWGeneration - "A partial model for domestic water heating" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - - Modelica.Fluid.Interfaces.FluidPort_b port_hw(redeclare package Medium = Medium) "Hot water supply port" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = Medium) "Port for domestic cold water inlet" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_dhs(redeclare package Medium = Medium) "Port for district heating supply" - annotation (Placement(transformation(extent={{-50,90},{-30,110}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_dhr(redeclare package Medium = Medium) "Port for district heating return" - annotation (Placement(transformation(extent={{-90,90},{-70,110}}))); - Modelica.Blocks.Interfaces.RealOutput PEle "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{96,30},{116,50}}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,24},{-84,40}}))); - annotation (Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end PartialDHWGeneration; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.order b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.order deleted file mode 100644 index 688c9bc1853..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/DELETE/package.order +++ /dev/null @@ -1,4 +0,0 @@ -PartialDHWGeneration -DirectHeatExchangerWaterHeaterWithAuxHeatOLD -HeatPumpWaterHeaterWithTankOLD -IdealValve diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/PartialFourPortDHW.mo deleted file mode 100644 index a37566cfcb8..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/PartialFourPortDHW.mo +++ /dev/null @@ -1,37 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.BaseClasses; -partial model PartialFourPortDHW - "A partial model for domestic water heating" - extends Buildings.Fluid.Interfaces.PartialFourPort( - redeclare final package Medium1=Medium, - redeclare final package Medium2=Medium); - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal "Nominal mass flow rate of district heating water"; - Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") - "Electric power required for heating equipment" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput TSetHw - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" - annotation (Placement(transformation(extent={{60,80},{80,100}}))); -protected - parameter Boolean have_PEle "Flag that specifies whether electric power is required for water heating"; -equation - connect(zero.y,PHea) - annotation (Line(points={{81,90},{82,90},{82,0},{110,0}}, - color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This partial model can be used for different domestic hot water generation methods. -

      -", revisions=" -
        -
      • -September 29, 2022 by Dre Helmns:
        -Created partial model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end PartialFourPortDHW; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.mo b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.mo deleted file mode 100644 index 943669d9e06..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.mo +++ /dev/null @@ -1,12 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -package BaseClasses "Package with base classes that are used by multiple models" - extends Modelica.Icons.BasesPackage; - -annotation (Documentation(info=" -

      -This package contains base classes that are used to construct the classes in - -Buildings.Experimental.DHC.Loads.Heating.DHW. -

      -")); -end BaseClasses; diff --git a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order deleted file mode 100644 index ce75a1a8901..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/BaseClasses/package.order +++ /dev/null @@ -1 +0,0 @@ -PartialFourPortDHW diff --git a/Buildings/Experimental/DHC/Loads/DHW/DELETE/AnnualScheduleDHWLoad.mo b/Buildings/Experimental/DHC/Loads/DHW/DELETE/AnnualScheduleDHWLoad.mo deleted file mode 100644 index 7f11466c79f..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/DELETE/AnnualScheduleDHWLoad.mo +++ /dev/null @@ -1,90 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.DELETE; -model AnnualScheduleDHWLoad - "A model with an annual schedule of domestic water draws" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - - Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{60,10},{40,30}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=true, - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,10},{80,30}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}), - iconTransformation(extent={{100,-60},{120,-40}}))); -equation - connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, - {-20,8},{-44,8}}, color={0,0,127})); - connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, - {39,20}}, color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{61,-80},{110,-80}}, color={0,0,127})); - connect(sinDhw.ports[1], port_tw) - annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); - connect(schDhw.y[1], gaiDhw.u) - annotation (Line(points={{79,20},{62,20}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This model is for connecting domestic hot water load schedules. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created load model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-47.728,58.2054},{-65.772,38.1027},{-65.772,-4.6152},{-40, - -37.2823},{-14.228,-4.6152},{-14.228,38.1027},{-32.272,58.2054},{ - -40,73.2823},{-47.728,58.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, - -57.282},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, - 53.2823},{-7.728,38.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{32.272,18.2054},{14.228,-1.8973},{14.228,-44.615},{40, - -77.282},{65.772,-44.615},{65.772,-1.8973},{47.728,18.2054},{40, - 33.2823},{32.272,18.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-147,139},{153,99}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end AnnualScheduleDHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/DHW/DELETE/package.order b/Buildings/Experimental/DHC/Loads/DHW/DELETE/package.order deleted file mode 100644 index 8aacf68236d..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/DELETE/package.order +++ /dev/null @@ -1 +0,0 @@ -AnnualScheduleDHWLoad diff --git a/Buildings/Experimental/DHC/Loads/DHW/DHWLoad.mo b/Buildings/Experimental/DHC/Loads/DHW/DHWLoad.mo deleted file mode 100644 index 51e7f7766e3..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/DHWLoad.mo +++ /dev/null @@ -1,74 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -model DHWLoad "A model for domestic water draws" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - - Modelica.Fluid.Interfaces.FluidPort_a port_tw(redeclare package Medium = Medium) "Port for tempered water supply" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}))); - Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mDhw_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{60,10},{40,30}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-82},{120,-62}}), - iconTransformation(extent={{100,-82},{120,-62}}))); - Modelica.Blocks.Interfaces.RealInput schDhw - "Domestic hot water fraction schedule" annotation (Placement(transformation( - extent={{120,20},{100,40}}), iconTransformation(extent={{120,20},{100, - 40}}))); -equation - connect(gaiDhw.y,sinDhw. m_flow_in) annotation (Line(points={{39,20},{-20,20}, - {-20,8},{-44,8}}, color={0,0,127})); - connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, - {39,20}}, color={0,0,127})); - connect(watCon.y, mDhw) - annotation (Line(points={{61,-80},{86,-80},{86,-72},{110,-72}}, - color={0,0,127})); - connect(sinDhw.ports[1], port_tw) - annotation (Line(points={{-66,0},{-100,0}}, color={0,127,255})); - connect(schDhw, gaiDhw.u) annotation (Line(points={{110,30},{86,30},{86,20},{ - 62,20}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This model is for connecting domestic hot water load schedules. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created load model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, - -57.2823},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, - 53.2823},{-7.728,38.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-70,70},{70,-70}}, - lineColor={0,0,0}, - pattern=LinePattern.Dash, - lineThickness=1), - Text( - extent={{-147,143},{153,103}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DHWLoad; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo deleted file mode 100644 index 5df2a0faf15..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Data/GenericHeatPumpWaterHeater.mo +++ /dev/null @@ -1,57 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.Data; -record GenericHeatPumpWaterHeater - "Equipment specifications for a generic heat pump water heater" - parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = TTan_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; - parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; - parameter Modelica.Units.SI.PressureDifference dp2_nominal = 5000 "Pressure drop across evaporator"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - annotation (preferredView="info",Documentation(info=" -

      -This record corresponds to a generic heat pump water heater. -

      -", revisions=" -
        -
      • -November 22, 2022 by Dre Helmns:
        -Created record. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end GenericHeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Data/HeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/DHW/Data/HeatPumpWaterHeater.mo deleted file mode 100644 index dd07d9fb3c7..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Data/HeatPumpWaterHeater.mo +++ /dev/null @@ -1,55 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.Data; -record HeatPumpWaterHeater - "Equipment specifications for a typical heat pump water heater" - parameter Modelica.Units.SI.Volume VTan = 0.1703 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 1.009 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.508 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 0.995 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.1 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 293.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = 323.15 "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - annotation (preferredView="info",Documentation(info=" -

      -This record corresponds to a 50-gallon Rheem or A.O. Smith heat pump water heater that would commonly be used in a single apartment unit of a multifamily residential building. -

      -", revisions=" -
        -
      • -November 22, 2022 by Dre Helmns:
        -Created record. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Data/package.mo b/Buildings/Experimental/DHC/Loads/DHW/Data/package.mo deleted file mode 100644 index 56f62714a9e..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Data/package.mo +++ /dev/null @@ -1,4 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -package Data "Library for DHW load profiles, equipment specifications, etc..." - -end Data; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Data/package.order b/Buildings/Experimental/DHC/Loads/DHW/Data/package.order deleted file mode 100644 index 95fdcdc786b..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Data/package.order +++ /dev/null @@ -1,2 +0,0 @@ -HeatPumpWaterHeater -GenericHeatPumpWaterHeater diff --git a/Buildings/Experimental/DHC/Loads/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo deleted file mode 100644 index a24a334556b..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/DirectHeatExchangerWaterHeaterWithAuxHeat.mo +++ /dev/null @@ -1,94 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -model DirectHeatExchangerWaterHeaterWithAuxHeat - "A model for domestic water heating served by district heat exchanger and supplemental electric resistance" - extends Buildings.Experimental.DHC.Loads.DHW.BaseClasses.PartialFourPortDHW( - final have_PEle=have_eleHea); - parameter Modelica.Units.SI.Efficiency eps(min=0,max=1) = 0.8 "Heat exchanger effectiveness"; - parameter Boolean have_eleHea = true "True if has auxiliary electric heater"; - parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for electric heater (positive)" - annotation(Dialog(enable=have_eleHea)); - - Buildings.Fluid.HeatExchangers.Heater_T heaDhw( - redeclare package Medium = Medium, - m_flow_nominal=mHw_flow_nominal, - dp_nominal=0, - QMax_flow=QMax_flow) - if have_eleHea == true "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,16},{30,-4}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemAuxHeaOut(redeclare package - Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{60,-4},{80,16}}))); - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mHw_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dp1_nominal=0, - dp2_nominal=0, - eps=eps) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHXOut(redeclare package Medium = - Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); -protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, - final m_flow_nominal=mHw_flow_nominal, - final show_T=false) if have_eleHea == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,44},{30,24}}))); - -equation - connect(senTemHXOut.port_a, hex.port_b1) - annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); - connect(senTemHXOut.port_b, heaDhw.port_a) - annotation (Line(points={{-20,6},{10,6}},color={0,127,255})); - connect(senTemHXOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{-4,6}, - {-4,34},{10,34}}, color={0,127,255})); - connect(heaDhw.port_b, senTemAuxHeaOut.port_a) - annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); - connect(pip.port_b, senTemAuxHeaOut.port_a) annotation (Line(points={{30,34},{ - 44,34},{44,6},{60,6}}, color={0,127,255})); - connect(senTemAuxHeaOut.port_b, port_b1) annotation (Line(points={{80,6},{90,6}, - {90,60},{100,60}}, color={0,127,255})); - connect(port_a1, hex.port_a1) - annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); - connect(heaDhw.Q_flow,PHea) annotation (Line(points={{31,-2},{40,-2},{40,-20}, - {94,-20},{94,0},{110,0}}, color={0,0,127})); - connect(TSetHw, heaDhw.TSet) annotation (Line(points={{-110,0},{-90,0},{-90,-20}, - {0,-20},{0,-2},{8,-2}}, color={0,0,127})); - connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, - -60}}, color={0,127,255})); - connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, - -6}}, color={0,127,255})); - annotation (preferredView="info",Documentation(info=" -

      -This model is an example of a domestic hot water (DHW) substation for a -low-temperature district heating (LTDH) network. It includes preheating by the -district and optional electric resistance to bring the temperature to setpoint. -

      -

      -For more info, please see Fig. 5 in Evaluations of different domestic hot water -preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at -doi.org/10.1016/j.energy.2016.04.109. -

      -", revisions=" -
        -
      • -June 16, 2022 by Dre Helmns:
        -Created generation model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), Line( - points={{-80,0},{-70,0},{-60,20},{-40,-20},{-20,20},{0,-20},{20,20},{ - 40,-20},{60,20},{70,0},{80,0}}, - color={238,46,47}, - thickness=1)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end DirectHeatExchangerWaterHeaterWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo deleted file mode 100644 index 7bdbb2755f0..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterFixture.mo +++ /dev/null @@ -1,93 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.Examples; -model DomesticWaterFixture - "Thermostatic mixing valve and hot water fixture with representative annual load profile" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Medium model for water"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = 0.1 "Design domestic hot water supply flow rate of system"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 85000 "Pressure difference for thermostatic mixing valve with nominal flow of 6.5gpm"; - parameter Real kCon(min=0) = 0.1 "Gain of controller"; - parameter Modelica.Units.SI.Time Ti = 120 "Time constant of Integrator block"; - parameter Real uLow = 0.1 "low hysteresis threshold"; - parameter Real uHigh = 0.9 "high hysteresis threshold"; - - ThermostaticMixingValve tmv( - redeclare package Medium = Medium, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal, - k=kCon, - Ti=Ti) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}), - iconTransformation(extent={{100,50},{120,70}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}), - iconTransformation(extent={{100,-70},{120,-50}}))); - DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= - mDhw_flow_nominal) "load for DHW" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit="degC") = TDcw, - nPorts=1) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-100,-60},{-80,-40}}))); - Fluid.Sources.Boundary_pT souHw( - redeclare package Medium = Medium, - T(displayUnit="degC") = TSetHw, - nPorts=1) "Source of heated domestic water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={-90,50}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=false, - table=[0,0.1; 3600*1,1e-5; 3600*2,1e-5; 3600*3,1e-5; 3600*4,1e-5; 3600*5, - 0.3; 3600*6,0.9; 3600*7,1; 3600*8,1; 3600*9,0.8; 3600*10,0.8; 3600*11, - 0.6; 3600*12,0.5; 3600*13,0.5; 3600*14,0.4; 3600*15,0.5; 3600*16,0.6; - 3600*17,0.7; 3600*18,0.9; 3600*19,0.8; 3600*20,0.8; 3600*21,0.6; 3600* - 22,0.5; 3600*23,0.3; 3600*24,0.1], - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,20},{80,40}}))); - Modelica.Blocks.Sources.Constant const(k=TSetTw) - annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); -equation - connect(tmv.TTw, TTw) annotation (Line(points={{-19,6},{14,6},{14,60},{110,60}}, - color={0,0,127})); - connect(tmv.port_tw, loaDHW.port_tw) - annotation (Line(points={{-20,0},{20,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{41,-7.2},{60,-7.2},{60, - -60},{110,-60}}, - color={0,0,127})); - connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-80,-50},{-60, - -50},{-60,-6},{-40,-6}}, color={0,127,255})); - connect(souHw.ports[1], tmv.port_hw) annotation (Line(points={{-80,50},{-46,50}, - {-46,6},{-40,6}}, color={0,127,255})); - connect(schDhw.y[1], loaDHW.schDhw) - annotation (Line(points={{79,30},{60,30},{60,3},{41,3}}, color={0,0,127})); - connect(const.y, tmv.TSet) - annotation (Line(points={{-59,10},{-59,8},{-42,8}}, color={0,0,127})); -annotation (preferredView="info",Documentation(info=" -

      -This is an example of a domestic water fixture. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created example. -
      • -
      -"), - Diagram(coordinateSystem(extent={{-100,-100},{100,100}})), - Icon(coordinateSystem(extent={{-100,-100},{100,100}})), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterFixture.mos" - "Simulate and plot"),experiment( - StopTime=86400, - Interval=60, - __Dymola_Algorithm="Dassl")); -end DomesticWaterFixture; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeater.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeater.mo deleted file mode 100644 index 63f74affb40..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeater.mo +++ /dev/null @@ -1,98 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.Examples; -model DomesticWaterHeater - "Example implementation of direct district heat exchange and auxiliary line heater for DHW" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+45 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=1) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=-90, - origin={-30,30}))); - DirectHeatExchangerWaterHeaterWithAuxHeat genDHW( - redeclare package Medium = Medium, - mHw_flow_nominal = mHw_flow_nominal, - mDH_flow_nominal = mDH_flow_nominal) - "Generation of DHW" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Fluid.Sources.MassFlowSource_T sinDhw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for domestic hot water supply" - annotation (Placement(transformation(extent={{10,10},{-10,-10}}, - rotation=90, - origin={30,30}))); - Fluid.Sources.Boundary_pT souDHw( - redeclare package Medium = Medium, - use_T_in=true, - T(displayUnit = "degC") = TDHw, - nPorts=1) "Source of district hot water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={30,-30}))); - Fluid.Sources.MassFlowSource_T sinDHw( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for district heating water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=90, - origin={-30,-30}))); - Modelica.Blocks.Sources.Constant const(k=-1) - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={0,-90}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - Modelica.Blocks.Sources.Sine TDis( - amplitude=5, - f=0.001, - offset=TDHw) "Signal to represent fluctuating district water temperature" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={50,-90}))); - Modelica.Blocks.Interfaces.RealOutput PEle - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); -equation - connect(conTSetHw.y, genDHW.TSetHw) - annotation (Line(points={{-79,0},{-11,0}}, color={0,0,127})); - connect(genDHW.port_a2, souDHw.ports[1]) - annotation (Line(points={{10,-6},{30,-6},{30,-20}}, color={0,127,255})); - connect(genDHW.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-10,-6},{-30,-6},{-30,-20}}, color={0,127,255})); - connect(souDcw.ports[1], genDHW.port_a1) - annotation (Line(points={{-30,20},{-30,6},{-10,6}}, color={0,127,255})); - connect(const.y, sinDHw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, - {2.05391e-15,-60},{-60,-60},{-60,-42},{-38,-42}}, color={0,0,127})); - connect(const.y, sinDhw.m_flow_in) annotation (Line(points={{2.05391e-15,-79}, - {2.05391e-15,-60},{60,-60},{60,60},{38,60},{38,42}}, color={0,0,127})); - connect(genDHW.port_b1, sinDhw.ports[1]) - annotation (Line(points={{10,6},{30,6},{30,20}}, color={0,127,255})); - connect(TDis.y, souDHw.T_in) annotation (Line(points={{50,-79},{50,-48},{26,-48}, - {26,-42}}, color={0,0,127})); - connect(genDHW.PHea, PEle) - annotation (Line(points={{11,0},{110,0}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This is an example of a domestic water heater. -

      -", revisions=" -
        -
      • -June 21, 2022 by Dre Helmns:
        -Created example. -
      • -
      -"),__Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Heating/DHW/Examples/DomesticWaterHeater.mos" - "Simulate and plot"),experiment(StopTime=3600, Interval=1)); -end DomesticWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo deleted file mode 100644 index b608f507207..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/DomesticWaterHeaterAndFixture.mo +++ /dev/null @@ -1,116 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW.Examples; -model DomesticWaterHeaterAndFixture - "Example implementation of direct district heat exchange and auxiliary line heater for DHW" - extends Modelica.Icons.Example; - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHw = 273.15+50 "Temperature setpoint of hot water supply from heater"; - parameter Modelica.Units.SI.Temperature TDHw = 273.15+30 "Temperature setpoint of hot water supply from district"; - parameter Modelica.Units.SI.Temperature TSetTw = 273.15+43 "Temperature setpoint of tempered water supply at fixture"; - parameter Modelica.Units.SI.Temperature TDcw = 273.15+10 "Temperature setpoint of domestic cold water supply"; - parameter Modelica.Units.SI.MassFlowRate mHw_flow_nominal = 0.1 "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDH_flow_nominal = 1 "Nominal mass flow rate of district heating water"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal = mHw_flow_nominal "Nominal mass flow rate of tempered water"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; - - Buildings.Fluid.Sources.Boundary_pT souDcw( - redeclare package Medium = Medium, - T(displayUnit = "degC") = TDcw, - nPorts=2) "Source of domestic cold water" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - rotation=90, - origin={-30,-50}))); - HeatPumpWaterHeaterWithTank genDHW( - redeclare package Medium = Medium, - mHw_flow_nominal=mHw_flow_nominal, - mDH_flow_nominal=mDH_flow_nominal) "Generation of DHW" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - ThermostaticMixingValve tmv( - redeclare package Medium = Medium, - mDhw_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Modelica.Blocks.Interfaces.RealOutput TTw(final unit="K",displayUnit = "degC") "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Fluid.Sources.MassFlowSource_T - souDHw( - redeclare package Medium = Medium, - m_flow=mDH_flow_nominal, - T(displayUnit = "degC") = TDHw, - nPorts=1) "Source of district hot water" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={10,-50}))); - Modelica.Blocks.Sources.Constant conTSetHw(k=TSetHw) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - DHWLoad loaDHW(redeclare package Medium = Medium, mDhw_flow_nominal= - mDhw_flow_nominal) "load for DHW" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - Modelica.Blocks.Interfaces.RealOutput mDhw "Total hot water consumption" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}), - iconTransformation(extent={{100,-70},{120,-50}}))); - Modelica.Blocks.Sources.CombiTimeTable schDhw( - tableOnFile=true, - tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, - extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fraction schedule" - annotation (Placement(transformation(extent={{100,20},{80,40}}))); - - Fluid.Sources.Boundary_pT sinDHw( - redeclare package Medium = Medium, - T(displayUnit="degC"), - nPorts=1) "Sink of district hot water" annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-70,-50}))); - Modelica.Blocks.Interfaces.RealOutput PEle - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Modelica.Blocks.Sources.Constant conTSetTw(k=TSetTw) - "Temperature setpoint for tempered water supply" - annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); -equation - connect(tmv.TTw, TTw) - annotation (Line(points={{21,6},{30,6},{30,60},{110,60}},color={0,0,127})); - connect(conTSetHw.y, genDHW.TSetHw) - annotation (Line(points={{-79,0},{-41,0}}, color={0,0,127})); - connect(genDHW.port_b1, tmv.port_hw) - annotation (Line(points={{-20,6},{0,6}}, color={0,127,255})); - connect(souDHw.ports[1], genDHW.port_a2) annotation (Line(points={{10,-40},{ - 10,-20},{-14,-20},{-14,-6},{-20,-6}}, color={0,127,255})); - connect(souDcw.ports[1], tmv.port_cw) annotation (Line(points={{-29,-40},{-29, - -30},{-6,-30},{-6,-6},{0,-6}}, color={0,127,255})); - connect(souDcw.ports[2], genDHW.port_a1) annotation (Line(points={{-31,-40},{ - -31,-30},{-50,-30},{-50,6},{-40,6}}, color={0,127,255})); - connect(tmv.port_tw, loaDHW.port_tw) - annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); - connect(loaDHW.mDhw, mDhw) annotation (Line(points={{61,-7.2},{80,-7.2},{80, - -60},{110,-60}}, - color={0,0,127})); - connect(loaDHW.schDhw, schDhw.y[1]) - annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); - connect(genDHW.port_b2, sinDHw.ports[1]) - annotation (Line(points={{-40,-6},{-70,-6},{-70,-40}}, color={0,127,255})); - connect(genDHW.PHea, PEle) annotation (Line(points={{-19,0},{-10,0},{-10,80},{ - 110,80}}, color={0,0,127})); - connect(conTSetTw.y, tmv.TSet) - annotation (Line(points={{-79,30},{-2,30},{-2,8}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This is an example of a domestic water heater and fixture. -

      -", revisions=" -
        -
      • -October 20, 2022 by Dre Helmns:
        -Created example. -
      • -
      -"),experiment( - StopTime=864000, - Interval=1, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl")); -end DomesticWaterHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/package.mo b/Buildings/Experimental/DHC/Loads/DHW/Examples/package.mo deleted file mode 100644 index 6925fb2ee6f..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/package.mo +++ /dev/null @@ -1,14 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -package Examples "Example implementations of district-integrated DHW models" - extends Modelica.Icons.ExamplesPackage; - - annotation ( - preferredView="info", - Documentation( - info=" -

      -This package contains a collection of residential domestic hot water models -to demonstrate how these models might be used in district heating systems. -

      -")); -end Examples; diff --git a/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order b/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order deleted file mode 100644 index 31961120d41..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/Examples/package.order +++ /dev/null @@ -1,3 +0,0 @@ -DomesticWaterHeater -DomesticWaterFixture -DomesticWaterHeaterAndFixture diff --git a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo b/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo deleted file mode 100644 index e26e6065267..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/HeatPumpWaterHeaterWithTank.mo +++ /dev/null @@ -1,212 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -model HeatPumpWaterHeaterWithTank - "A model for domestic water heating served by heat pump water heater and local storage tank" - extends Buildings.Experimental.DHC.Loads.DHW.BaseClasses.PartialFourPortDHW( - final have_PEle=true, mDH_flow_nominal=heaPum.QEva_flow_nominal/ - cp2_default/heaPum.dTEva_nominal); - constant Modelica.Units.SI.SpecificHeatCapacity cp2_default= - Medium.specificHeatCapacityCp(Medium.setState_pTX(p=Medium.p_default, - T=Medium.T_default)) "Specific heat capacity of the fluid"; - parameter - Buildings.Experimental.DHC.Loads.DHW.Data.GenericHeatPumpWaterHeater datWatHea - "Performance data" - annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); - parameter Real COP_nominal(final unit="1") "Heat pump COP at nominal conditions"; - parameter Modelica.Units.SI.Temperature TCon_nominal "Condenser outlet temperature used to compute COP_nominal"; - parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; - parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; - parameter Real Ti=60 "Integrator time constant of circulation pump controller"; - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTankOut(redeclare package - Medium = Medium, m_flow_nominal=mHw_flow_nominal) - annotation (Placement(transformation(extent={{-20,44},{0,64}}))); - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=datWatHea.mHex_flow_nominal, - m2_flow_nominal=mDH_flow_nominal, - dTEva_nominal=datWatHea.dTEva_nominal, - dTCon_nominal=datWatHea.dTCon_nominal, - use_eta_Carnot_nominal=false, - etaCarnot_nominal=0.3, - COP_nominal=COP_nominal, - TCon_nominal=TCon_nominal, - TEva_nominal=TEva_nominal, - QCon_flow_max = datWatHea.QCon_flow_max, - QCon_flow_nominal=datWatHea.QCon_flow_nominal, - dp1_nominal=datWatHea.dp1_nominal, - dp2_nominal=datWatHea.dp2_nominal) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHPOut(redeclare package Medium = - Medium, m_flow_nominal=datWatHea.mHex_flow_nominal) annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={50,6}))); - Fluid.Movers.FlowControlled_m_flow pumHex( - inputType=Buildings.Fluid.Types.InputType.Continuous, - redeclare package Medium = Medium, - m_flow_nominal=datWatHea.mHex_flow_nominal, - riseTime=10, - massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) - "Pump with m_flow input" - annotation (Placement(transformation(extent={{60,30},{40,50}}))); - Fluid.Storage.StratifiedEnhancedInternalHex - tanSte( - T_start=datWatHea.TTan_nominal, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, - redeclare package Medium = Medium, - redeclare package MediumHex = Medium, - hTan=datWatHea.hTan, - dIns=datWatHea.dIns, - VTan=datWatHea.VTan, - nSeg=datWatHea.nSeg, - hHex_a=datWatHea.hHex_a, - hHex_b=datWatHea.hHex_b, - Q_flow_nominal=datWatHea.QTan_flow_nominal, - TTan_nominal=datWatHea.TTan_nominal, - THex_nominal=datWatHea.THex_nominal, - mHex_flow_nominal=datWatHea.mHex_flow_nominal, - show_T=true, - m_flow_nominal=mHw_flow_nominal) - "Tank with steady-state heat exchanger balance" - annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); - Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) - annotation (Placement(transformation(extent={{100,30},{80,50}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor tanTemSen - "Temperature of the hot water tank" - annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); - Controls.OBC.CDL.Reals.MultiplyByParameter - dTTanHex2(k=datWatHea.mHex_flow_nominal) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{20,80},{40,100}}))); - Controls.OBC.CDL.Reals.PID conPI( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, - k=k, - Ti=Ti) - annotation (Placement(transformation(extent={{-10,80},{10,100}}))); - Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") - "Electric power required for pumping equipment" - annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); - Modelica.Blocks.Interfaces.RealOutput QCon_flow - "Actual heat pump heating heat flow rate added to fluid" - annotation (Placement(transformation(extent={{100,10},{120,30}}))); -equation - connect(heaPum.port_b1, senTemHPOut.port_a) - annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(senTemTankOut.port_b, port_b1) - annotation (Line(points={{0,54},{20,54},{20,60},{100,60}}, - color={0,127,255})); - connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-10,-60}, - {-10,-6}}, color={0,127,255})); - connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{76,-14}, - {76,0},{110,0}}, color={0,0,127})); - connect(pumHex.port_a, senTemHPOut.port_b) annotation (Line(points={{60,40},{ - 70,40},{70,6},{60,6}}, - color={0,127,255})); - connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{-30, - 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); - connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, - 20},{-10,20},{-10,6}}, color={0,127,255})); - connect(tanSte.port_a, senTemTankOut.port_a) annotation (Line(points={{-40,50}, - {-30,50},{-30,54},{-20,54}}, color={0,127,255})); - connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, - 60},{-100,60}}, color={0,127,255})); - connect(bou.ports[1], senTemHPOut.port_b) annotation (Line(points={{80,40},{ - 70,40},{70,6},{60,6}}, color={0,127,255})); - connect(dTTanHex2.y, pumHex.m_flow_in) - annotation (Line(points={{42,90},{50,90},{50,52}}, color={0,0,127})); - connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-6},{20,-6},{20, - -60},{100,-60}}, color={0,127,255})); - connect(conPI.y, dTTanHex2.u) - annotation (Line(points={{12,90},{18,90}}, color={0,0,127})); - connect(TSetHw, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,90}, - {-12,90}}, color={0,0,127})); - connect(tanTemSen.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, - 70},{0,70},{0,78}}, color={0,0,127})); - connect(pumHex.P, PPum) annotation (Line(points={{39,49},{32,49},{32,-20},{110, - -20}}, color={0,0,127})); - connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,9},{20,9},{ - 20,20},{110,20}}, color={0,0,127})); - connect(TSetHw, heaPum.TSet) annotation (Line(points={{-110,0},{-20,0},{-20,9}, - {-12,9}}, color={0,0,127})); - connect(tanTemSen.port, tanSte.heaPorVol[4]) - annotation (Line(points={{-40,72},{-50,72},{-50,50}}, color={191,0,0})); - annotation (preferredView="info",Documentation(info=" -

      -This model is an example of a domestic hot water (DHW) substation for an -ultra-low-temperature district heating (ULTDH) network. It includes a micro heat -pump and storage tank with direct thermostatic mixing rather than heat exchange. -

      -

      -For more info, please see Fig. 3 in Evaluations of different domestic hot water -preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at -doi.org/10.1016/j.energy.2016.04.109. -

      -", revisions=" -
        -
      • -July 7, 2022 by Dre Helmns:
        -Created generation model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,-60},{20,-40}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={175,175,175}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-20,22},{20,-48}}, - lineColor={175,175,175}, - lineThickness=1, - fillColor={175,175,175}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,10},{20,30}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-20,50},{20,20}}, - lineColor={0,0,0}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,40},{20,60}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line( - points={{-20,50},{-20,-50}}, - color={95,95,95}, - thickness=1), - Line( - points={{20,50},{20,-50}}, - color={95,95,95}, - thickness=1), - Polygon( - points={{-140,86},{-140,86}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.CrossDiag), - Polygon( - points={{20,40},{18,38},{14,36},{8,34},{8,26},{14,28},{18,30},{20,32}, - {20,40}}, - lineColor={95,95,95}, - lineThickness=0.5, - fillColor={0,0,0}, - fillPattern=FillPattern.CrossDiag)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end HeatPumpWaterHeaterWithTank; diff --git a/Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo deleted file mode 100644 index 8871166e755..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/ThermostaticMixingValve.mo +++ /dev/null @@ -1,177 +0,0 @@ -within Buildings.Experimental.DHC.Loads.DHW; -model ThermostaticMixingValve - "A model for a thermostatic mixing valve" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mDhw_flow_nominal "Nominal doemstic hot water flow rate"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; - parameter Real k = 0.1 "Proportional gain of valve controller"; - parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; - Modelica.Fluid.Interfaces.FluidPort_b port_tw(redeclare package Medium = - Medium) "Port for tempered water outlet" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Buildings.Controls.Continuous.LimPID conPID( - controllerType=Modelica.Blocks.Types.SimpleController.PI, - k=k, - Ti=Ti, - reset=Buildings.Types.Reset.Parameter) - annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemTw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Tempered water temperature sensor" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Fluid.Actuators.Valves.ThreeWayLinear ValHea( - redeclare package Medium = Medium, - riseTime=5, - final m_flow_nominal=mDhw_flow_nominal, - dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( - transformation( - extent={{10,10},{-10,-10}}, - rotation=180, - origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hw(redeclare package Medium = - Medium) "Port for hot water supply" - annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_cw(redeclare package Medium = - Medium) "Port for domestic cold water supply" - annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); - Modelica.Blocks.Interfaces.RealOutput TTw "Temperature of the outlet tempered water" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Hot water temperature sensor" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = - Medium, m_flow_nominal=mDhw_flow_nominal) "Cold water temperature sensor" - annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Fluid.Sensors.MassFlowRate senFloDhw(redeclare package Medium = - Medium) "Mass flow rate of domestic hot water" - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) - annotation (Placement(transformation(extent={{56,24},{44,36}}))); - Modelica.Blocks.Interfaces.RealInput TSet - "Temperature setpoint of tempered hot water outlet" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); -protected - parameter Real uLow = 0.01*mDhw_flow_nominal "Low hysteresis threshold"; - parameter Real uHigh = 0.05*mDhw_flow_nominal "High hysteresis threshold"; -equation - connect(senTemTw.T, conPID.u_m) - annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); - connect(ValHea.port_2, senTemTw.port_a) annotation (Line(points={{10,-6.66134e-16}, - {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, ValHea.y) annotation (Line(points={{19,70},{0,70},{0,12},{ - 9.99201e-16,12}}, color={0,0,127})); - connect(senTemTw.T, TTw) annotation (Line(points={{30,11},{30,40},{90,40},{90, - 60},{110,60}}, color={0,0,127})); - connect(ValHea.port_1, senTemHw.port_b) annotation (Line(points={{-10, - 1.77636e-15},{-10,0},{-20,0}}, color={0,127,255})); - connect(senTemHw.port_a, port_hw) annotation (Line(points={{-40,0},{-60,0},{-60, - 40},{-100,40}}, color={0,127,255})); - connect(ValHea.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15, - -10},{-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); - connect(senTemCw.port_a, port_cw) - annotation (Line(points={{-40,-60},{-70,-60},{-70,-40},{-100,-40}}, - color={0,127,255})); - connect(senTemTw.port_b, senFloDhw.port_a) - annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); - connect(senFloDhw.port_b, port_tw) - annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(hysteresis.u, senFloDhw.m_flow) - annotation (Line(points={{57.2,30},{60,30},{60,11}}, - color={0,0,127})); - connect(hysteresis.y, conPID.trigger) - annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); - connect(conPID.u_s, TSet) annotation (Line(points={{42,70},{50,70},{50,92},{-94, - 92},{-94,80},{-120,80}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" -

      -This model is for a domestic water mixer, mixing hot and cold fluid to achieve a specified tempered outlet temperature. -

      -", revisions=" -
        -
      • -June 16, 2022 by Dre Helmns:
        -Created valve model. -
      • -
      -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - visible=use_inputFilter, - extent={{-34,-28},{32,32}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Ellipse( - visible=use_inputFilter, - extent={{-34,32},{32,-28}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Text( - visible=use_inputFilter, - extent={{-22,26},{20,-20}}, - textColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid, - textString="M", - textStyle={TextStyle.Bold}), - Text( - extent={{-42,58},{-162,8}}, - textColor={0,0,0}, - textString=DynamicSelect("", String(y, format=".2f"))), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={-78,40}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={238,46,47}, - origin={-78,40}, - rotation=90), - Line( - visible=use_inputFilter, - points={{-32,-28},{28,-28}}), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={-78,-42}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={28,108,200}, - origin={-78,-42}, - rotation=90), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={78,0}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={102,44,145}, - origin={78,0}, - rotation=90), - Text( - extent={{-153,147},{147,107}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end ThermostaticMixingValve; diff --git a/Buildings/Experimental/DHC/Loads/DHW/package.order b/Buildings/Experimental/DHC/Loads/DHW/package.order deleted file mode 100644 index 41f323805c4..00000000000 --- a/Buildings/Experimental/DHC/Loads/DHW/package.order +++ /dev/null @@ -1,7 +0,0 @@ -ThermostaticMixingValve -DirectHeatExchangerWaterHeaterWithAuxHeat -HeatPumpWaterHeaterWithTank -DHWLoad -BaseClasses -Examples -Data diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index 62fb0b1a606..792b365318e 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -87,7 +87,7 @@ the temperature of produced hot water to setpoint.

      It is based on Fig. 5 in Evaluations of different domestic hot water preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at +H. Li, and S. Svendsen at doi.org/10.1016/j.energy.2016.04.109.

      ", revisions=" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index 9312a516fc0..a45660e96f6 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -42,7 +42,7 @@ defined by a schedule.

      Such distribution is based on the Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy -published by ASHRAE in 2022 at +published by ASHRAE in 2022 at https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download.

      diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index f4970e1d87e..a780f989708 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -55,7 +55,7 @@ defined by a schedule.

      Such distribution is based on the Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy -published by ASHRAE in 2022 at +published by ASHRAE in 2022 at https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download.

      diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index 15e519bdb95..cf458a2ec7a 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -161,10 +161,10 @@ Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater.

      It is based on Fig. 3 in Evaluations of different domestic hot water preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at +H. Li, and S. Svendsen at doi.org/10.1016/j.energy.2016.04.109, as well as the Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy -published by ASHRAE in 2022 at +published by ASHRAE in 2022 at https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download.

      ", revisions=" From d6184361cdf537644c14c0ebaedc252a339d4460 Mon Sep 17 00:00:00 2001 From: David Blum Date: Sat, 16 Sep 2023 10:33:01 -0700 Subject: [PATCH 099/183] Fix package order --- .../EnergyTransferStations/Combined/BaseClasses/package.order | 2 +- Buildings/Experimental/DHC/Loads/HotWater/package.order | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/package.order index 9269bd8502b..559a232983f 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/package.order @@ -1,2 +1,2 @@ -PartialParallel PartialHeatPumpHeatExchanger +PartialParallel diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order index ea41ae77b5f..006e675d11b 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -2,6 +2,6 @@ DirectHeatExchangerWithAuxHeat HeatPumpWithTank ThermostaticMixingValve WaterDraw -BaseClasses -Examples Data +Examples +BaseClasses From b935088175c0c7cd0f523dd5bbd1434ffc0b76b0 Mon Sep 17 00:00:00 2001 From: David Blum Date: Sat, 16 Sep 2023 10:43:50 -0700 Subject: [PATCH 100/183] Fix strings --- Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo | 5 +++++ .../HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo index 6da55e59e1d..30e281aa337 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo @@ -1,4 +1,9 @@ within Buildings.Experimental.DHC.Loads.HotWater; package Data "Package for data related to hot water generation" +annotation (preferredView="info", Documentation(info=" +

      +Package for data related to hot water generation. +

      +")); end Data; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo index 6772b420d9d..193ff157c6c 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -91,6 +91,5 @@ Initial implementation. "),experiment( StopTime=864000, Interval=1, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl")); + Tolerance=1e-06)); end partialHeaterAndFixture; From c3fd45a88565067ef7ba83644e0e5194e1861695 Mon Sep 17 00:00:00 2001 From: David Blum Date: Sat, 16 Sep 2023 10:48:10 -0700 Subject: [PATCH 101/183] Extend record icon --- .../Data/GenericHeatPumpWaterHeater.mo | 25 ++----------------- 1 file changed, 2 insertions(+), 23 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo index e557694aeb3..9401f422c54 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo @@ -1,6 +1,7 @@ within Buildings.Experimental.DHC.Loads.HotWater.Data; record GenericHeatPumpWaterHeater "Equipment specifications for a generic heat pump water heater with storage tank" + extends Modelica.Icons.Record; parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; @@ -37,27 +38,5 @@ November 22, 2022 by Dre Helmns:
      Initial implementation.
    -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - origin={0,-25}, - lineColor={64,64,64}, - fillColor={255,215,136}, - fillPattern=FillPattern.Solid, - extent={{-100.0,-75.0},{100.0,75.0}}, - radius=25.0), - Line( - origin={0,-25}, - points={{0.0,75.0},{0.0,-75.0}}, - color={64,64,64}), - Line( - points={{-100,0},{100,0}}, - color={64,64,64}), - Line( - origin={0,-50}, - points={{-100.0,0.0},{100.0,0.0}}, - color={64,64,64}), - Text( - lineColor={0,0,255}, - extent={{-150,60},{150,100}}, - textString="%name")}), Diagram(coordinateSystem(preserveAspectRatio=false))); +")); end GenericHeatPumpWaterHeater; From 40f942517fb58f2f77eb92836f6da42e60496cd6 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 20 Sep 2023 06:01:35 -0700 Subject: [PATCH 102/183] Update reference result for SeriesConstantFlow example --- ...C_Examples_Combined_SeriesConstantFlow.txt | 74 +++++++++---------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Examples_Combined_SeriesConstantFlow.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Examples_Combined_SeriesConstantFlow.txt index 9765a502bac..20cf0840fa6 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Examples_Combined_SeriesConstantFlow.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Examples_Combined_SeriesConstantFlow.txt @@ -1,4 +1,4 @@ -last-generated=2023-05-17 +last-generated=2023-09-20 statistics-initialization= { "nonlinear": "1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 1, 1, 2, 0, 1, 1, 1, 1, 3, 1, 0, 3, 3, 1, 1, 1, 1, 1, 1", @@ -12,17 +12,17 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 6.048e+05] -borFie.TBorAve=[2.853500061035156e+02, 2.85669677734375e+02, 2.856614379882812e+02, 2.855974731445312e+02, 2.855157165527344e+02, 2.853828125e+02, 2.853310241699219e+02, 2.853105163574219e+02, 2.852652893066406e+02, 2.852421569824219e+02, 2.852569885253906e+02, 2.852238464355469e+02, 2.851852111816406e+02, 2.851539611816406e+02, 2.851774597167969e+02, 2.852159729003906e+02, 2.85231201171875e+02, 2.852297973632812e+02, 2.852115173339844e+02, 2.85105224609375e+02, 2.850630493164062e+02, 2.850578308105469e+02, 2.850516052246094e+02, 2.850439453125e+02, 2.85082275390625e+02, 2.850802917480469e+02, 2.850469360351562e+02, 2.850268249511719e+02, 2.850396728515625e+02, 2.850896606445312e+02, 2.851184997558594e+02, 2.8512841796875e+02, 2.851263427734375e+02, 2.850409545898438e+02, 2.849794311523438e+02, 2.849840698242188e+02, 2.850084838867188e+02, 2.850100708007812e+02, 2.850632629394531e+02, 2.851040344238281e+02, 2.850791015625e+02, 2.850637817382812e+02, 2.850547485351562e+02, 2.851022644042969e+02, 2.851383666992188e+02, 2.851489562988281e+02, 2.851443481445312e+02, 2.850787963867188e+02, 2.84987060546875e+02, 2.849584350585938e+02, 2.849403076171875e+02, 2.848800354003906e+02, 2.848762512207031e+02, 2.84888427734375e+02, 2.848325805664062e+02, 2.8479833984375e+02, 2.847712097167969e+02, 2.848207397460938e+02, 2.848575439453125e+02, 2.848725280761719e+02, 2.848780212402344e+02, 2.848531188964844e+02, 2.847472229003906e+02, 2.847266845703125e+02, 2.847117004394531e+02, 2.846546020507812e+02, 2.846246643066406e+02, 2.8464111328125e+02, 2.846004333496094e+02, 2.845599060058594e+02, 2.845364379882812e+02, 2.845796813964844e+02, 2.8463037109375e+02, 2.84658447265625e+02, 2.84671630859375e+02, 2.846690979003906e+02, 2.845673217773438e+02, 2.8453662109375e+02, 2.845413513183594e+02, 2.845165710449219e+02, 2.844654235839844e+02, 2.844956665039062e+02, 2.844795837402344e+02, 2.844221496582031e+02, 2.843897094726562e+02, 2.844037170410156e+02, 2.844624328613281e+02, 2.844981384277344e+02, 2.84515869140625e+02, 2.845244750976562e+02, 2.844523010253906e+02, 2.843996276855469e+02, 2.84410888671875e+02, 2.844078674316406e+02, 2.843443603515625e+02, 2.843854370117188e+02, 2.844155883789062e+02, 2.843626098632812e+02, 2.843370361328125e+02, 2.843279113769531e+02, 2.844005737304688e+02] +borFie.TBorAve=[2.853500061035156e+02, 2.85669677734375e+02, 2.856614379882812e+02, 2.855974731445312e+02, 2.855157165527344e+02, 2.853828125e+02, 2.853310241699219e+02, 2.853105163574219e+02, 2.852652893066406e+02, 2.852421569824219e+02, 2.852569885253906e+02, 2.852238464355469e+02, 2.851852111816406e+02, 2.851539611816406e+02, 2.85177490234375e+02, 2.852159729003906e+02, 2.85231201171875e+02, 2.852297973632812e+02, 2.852115173339844e+02, 2.85105224609375e+02, 2.850630493164062e+02, 2.850578308105469e+02, 2.850516052246094e+02, 2.850439453125e+02, 2.85082275390625e+02, 2.850802917480469e+02, 2.850469360351562e+02, 2.850268249511719e+02, 2.850396728515625e+02, 2.850896606445312e+02, 2.851184997558594e+02, 2.851284484863281e+02, 2.851263427734375e+02, 2.850409545898438e+02, 2.849794311523438e+02, 2.849840698242188e+02, 2.850084838867188e+02, 2.850100708007812e+02, 2.850632629394531e+02, 2.851040344238281e+02, 2.850791015625e+02, 2.850637817382812e+02, 2.850547485351562e+02, 2.851022644042969e+02, 2.851383666992188e+02, 2.851489562988281e+02, 2.851443481445312e+02, 2.850787963867188e+02, 2.84987060546875e+02, 2.849584350585938e+02, 2.849402770996094e+02, 2.848800354003906e+02, 2.848762512207031e+02, 2.848883972167969e+02, 2.848325805664062e+02, 2.8479833984375e+02, 2.847712097167969e+02, 2.848207397460938e+02, 2.848575439453125e+02, 2.848725280761719e+02, 2.848780212402344e+02, 2.848531188964844e+02, 2.847472229003906e+02, 2.847266845703125e+02, 2.847117004394531e+02, 2.846546020507812e+02, 2.846246337890625e+02, 2.8464111328125e+02, 2.846004333496094e+02, 2.845599060058594e+02, 2.845364379882812e+02, 2.845796813964844e+02, 2.846303405761719e+02, 2.84658447265625e+02, 2.84671630859375e+02, 2.846690979003906e+02, 2.845673217773438e+02, 2.8453662109375e+02, 2.845413513183594e+02, 2.845165710449219e+02, 2.844654235839844e+02, 2.844956665039062e+02, 2.844795837402344e+02, 2.844221496582031e+02, 2.843897094726562e+02, 2.844037475585938e+02, 2.844624328613281e+02, 2.844981384277344e+02, 2.845158996582031e+02, 2.845244750976562e+02, 2.844523010253906e+02, 2.843996276855469e+02, 2.84410888671875e+02, 2.844078674316406e+02, 2.843443603515625e+02, 2.843854370117188e+02, 2.844155883789062e+02, 2.843626098632812e+02, 2.843370361328125e+02, 2.843279113769531e+02, 2.844005737304688e+02] bui[1].ets.volMix_a.T=[2.931499938964844e+02, 2.930157775878906e+02, 2.874358825683594e+02, 2.859823913574219e+02, 2.857718811035156e+02, 2.857095947265625e+02, 2.856110534667969e+02, 2.855346069335938e+02, 2.854934692382812e+02, 2.85464599609375e+02, 2.854275512695312e+02, 2.854184875488281e+02, 2.854185180664062e+02, 2.854180297851562e+02, 2.853948364257812e+02, 2.853470153808594e+02, 2.853592529296875e+02, 2.85381591796875e+02, 2.853939514160156e+02, 2.854040222167969e+02, 2.853563537597656e+02, 2.852976684570312e+02, 2.852687377929688e+02, 2.852611999511719e+02, 2.85244873046875e+02, 2.852523803710938e+02, 2.852528381347656e+02, 2.852531127929688e+02, 2.852441711425781e+02, 2.852268371582031e+02, 2.852438354492188e+02, 2.852747497558594e+02, 2.852969970703125e+02, 2.853158264160156e+02, 2.852932434082031e+02, 2.852332458496094e+02, 2.851982116699219e+02, 2.851998901367188e+02, 2.852017822265625e+02, 2.852161560058594e+02, 2.852265930175781e+02, 2.852276000976562e+02, 2.852283935546875e+02, 2.852287902832031e+02, 2.852421264648438e+02, 2.852827758789062e+02, 2.853096008300781e+02, 2.8532470703125e+02, 2.853191833496094e+02, 2.852480163574219e+02, 2.852035522460938e+02, 2.85180908203125e+02, 2.851469421386719e+02, 2.8511376953125e+02, 2.85111572265625e+02, 2.851114807128906e+02, 2.850865783691406e+02, 2.850372924804688e+02, 2.850294189453125e+02, 2.850557250976562e+02, 2.85080322265625e+02, 2.850951843261719e+02, 2.851097717285156e+02, 2.850480346679688e+02, 2.850017395019531e+02, 2.849856262207031e+02, 2.849573974609375e+02, 2.84912353515625e+02, 2.849084167480469e+02, 2.849046020507812e+02, 2.848746032714844e+02, 2.848403015136719e+02, 2.848287048339844e+02, 2.848566589355469e+02, 2.848902587890625e+02, 2.849136657714844e+02, 2.849360046386719e+02, 2.849081726074219e+02, 2.848515930175781e+02, 2.848292846679688e+02, 2.848277282714844e+02, 2.847900085449219e+02, 2.847766418457031e+02, 2.847874755859375e+02, 2.847635498046875e+02, 2.847274780273438e+02, 2.846967468261719e+02, 2.847153015136719e+02, 2.847503356933594e+02, 2.84777587890625e+02, 2.848015747070312e+02, 2.847960815429688e+02, 2.847403564453125e+02, 2.84715087890625e+02, 2.847197875976562e+02, 2.846895751953125e+02, 2.846717224121094e+02, 2.846989135742188e+02, 2.846988830566406e+02, 2.8467529296875e+02, 2.846436767578125e+02] -bui[1].ets.volMix_b.T=[2.931499938964844e+02, 2.931488647460938e+02, 2.9001416015625e+02, 2.868185424804688e+02, 2.842826538085938e+02, 2.82075927734375e+02, 2.816794738769531e+02, 2.819617919921875e+02, 2.825137939453125e+02, 2.818990478515625e+02, 2.824046630859375e+02, 2.839807434082031e+02, 2.840083312988281e+02, 2.840353698730469e+02, 2.844737243652344e+02, 2.85192626953125e+02, 2.848866271972656e+02, 2.84479736328125e+02, 2.837225036621094e+02, 2.816017150878906e+02, 2.813801574707031e+02, 2.813729858398438e+02, 2.823311462402344e+02, 2.81858642578125e+02, 2.817323608398438e+02, 2.837155456542969e+02, 2.837450256347656e+02, 2.837739562988281e+02, 2.847330932617188e+02, 2.850948486328125e+02, 2.849543762207031e+02, 2.846051940917969e+02, 2.842452697753906e+02, 2.818677062988281e+02, 2.813291931152344e+02, 2.814967041015625e+02, 2.837120666503906e+02, 2.846671447753906e+02, 2.842787475585938e+02, 2.844922180175781e+02, 2.847715454101562e+02, 2.847803039550781e+02, 2.847888793945312e+02, 2.847973022460938e+02, 2.84968017578125e+02, 2.851762084960938e+02, 2.849369506835938e+02, 2.825852355957031e+02, 2.813678894042969e+02, 2.812893371582031e+02, 2.818466796875e+02, 2.823055114746094e+02, 2.813099365234375e+02, 2.819533081054688e+02, 2.835583801269531e+02, 2.835881652832031e+02, 2.843360595703125e+02, 2.849087829589844e+02, 2.847259216308594e+02, 2.843128662109375e+02, 2.839830932617188e+02, 2.828433227539062e+02, 2.81194091796875e+02, 2.810583190917969e+02, 2.810626525878906e+02, 2.809878540039062e+02, 2.809632263183594e+02, 2.809719543457031e+02, 2.828879699707031e+02, 2.842164306640625e+02, 2.839287719726562e+02, 2.834637145996094e+02, 2.831322021484375e+02, 2.828700256347656e+02, 2.826696166992188e+02, 2.822237854003906e+02, 2.817875061035156e+02, 2.817318725585938e+02, 2.817280578613281e+02, 2.816649169921875e+02, 2.815726013183594e+02, 2.814386596679688e+02, 2.813984680175781e+02, 2.819447937011719e+02, 2.819392395019531e+02, 2.817919921875e+02, 2.816387939453125e+02, 2.815582580566406e+02, 2.81458251953125e+02, 2.813454895019531e+02, 2.808899230957031e+02, 2.808498840332031e+02, 2.808082580566406e+02, 2.808057250976562e+02, 2.808357238769531e+02, 2.808140563964844e+02, 2.807319030761719e+02, 2.811485595703125e+02, 2.814035339355469e+02, 2.812828063964844e+02, 2.81143310546875e+02] -bui[2].ets.volMix_a.T=[2.931499938964844e+02, 2.860820007324219e+02, 2.8577880859375e+02, 2.858100891113281e+02, 2.857190856933594e+02, 2.855907592773438e+02, 2.85437255859375e+02, 2.853782653808594e+02, 2.853722839355469e+02, 2.853344421386719e+02, 2.852992248535156e+02, 2.853805236816406e+02, 2.854154052734375e+02, 2.853901977539062e+02, 2.853478393554688e+02, 2.853288879394531e+02, 2.853477783203125e+02, 2.8535546875e+02, 2.853469848632812e+02, 2.852397155761719e+02, 2.851193542480469e+02, 2.850985412597656e+02, 2.851420593261719e+02, 2.8514111328125e+02, 2.851092224121094e+02, 2.851634521484375e+02, 2.852747192382812e+02, 2.852639465332031e+02, 2.85221923828125e+02, 2.852166442871094e+02, 2.852363586425781e+02, 2.852568359375e+02, 2.852678833007812e+02, 2.851950073242188e+02, 2.850953369140625e+02, 2.850636596679688e+02, 2.851055908203125e+02, 2.851680908203125e+02, 2.851747741699219e+02, 2.85182861328125e+02, 2.852590942382812e+02, 2.852767639160156e+02, 2.852688903808594e+02, 2.852479248046875e+02, 2.852494812011719e+02, 2.852805786132812e+02, 2.853034973144531e+02, 2.852565307617188e+02, 2.8512646484375e+02, 2.850107421875e+02, 2.850486145019531e+02, 2.850722045898438e+02, 2.850056457519531e+02, 2.849755249023438e+02, 2.851019592285156e+02, 2.850979919433594e+02, 2.850477294921875e+02, 2.850228576660156e+02, 2.850205993652344e+02, 2.850359802246094e+02, 2.850468444824219e+02, 2.850341796875e+02, 2.849153137207031e+02, 2.847589721679688e+02, 2.847474365234375e+02, 2.847871398925781e+02, 2.847046203613281e+02, 2.846983642578125e+02, 2.848058776855469e+02, 2.848719482421875e+02, 2.848363037109375e+02, 2.847917785644531e+02, 2.847677917480469e+02, 2.847895812988281e+02, 2.848146667480469e+02, 2.848258972167969e+02, 2.848266906738281e+02, 2.847847290039062e+02, 2.847264099121094e+02, 2.84707763671875e+02, 2.847080078125e+02, 2.846610107421875e+02, 2.846492004394531e+02, 2.846774291992188e+02, 2.846508178710938e+02, 2.846157531738281e+02, 2.845794982910156e+02, 2.846012573242188e+02, 2.846340026855469e+02, 2.846579284667969e+02, 2.846526489257812e+02, 2.846387023925781e+02, 2.845808715820312e+02, 2.845638122558594e+02, 2.845759887695312e+02, 2.845421142578125e+02, 2.845224609375e+02, 2.845653381347656e+02, 2.845731506347656e+02, 2.845481262207031e+02, 2.845104370117188e+02] -bui[2].ets.volMix_b.T=[2.931499938964844e+02, 2.865400390625e+02, 2.839467163085938e+02, 2.836128845214844e+02, 2.817754821777344e+02, 2.829466857910156e+02, 2.832295532226562e+02, 2.822109985351562e+02, 2.815614318847656e+02, 2.839972229003906e+02, 2.822894897460938e+02, 2.813838500976562e+02, 2.814032897949219e+02, 2.822608642578125e+02, 2.834562683105469e+02, 2.829920349121094e+02, 2.825762023925781e+02, 2.822579040527344e+02, 2.814261474609375e+02, 2.816143493652344e+02, 2.82019287109375e+02, 2.824903869628906e+02, 2.81184326171875e+02, 2.8366259765625e+02, 2.832638854980469e+02, 2.811968383789062e+02, 2.812562255859375e+02, 2.813013305664062e+02, 2.83227783203125e+02, 2.828057250976562e+02, 2.824222412109375e+02, 2.82136474609375e+02, 2.813311767578125e+02, 2.812948913574219e+02, 2.820419311523438e+02, 2.828374633789062e+02, 2.812593994140625e+02, 2.835622863769531e+02, 2.844231567382812e+02, 2.814579162597656e+02, 2.81263427734375e+02, 2.812630920410156e+02, 2.836643981933594e+02, 2.834266052246094e+02, 2.828575744628906e+02, 2.823534240722656e+02, 2.818784484863281e+02, 2.812807006835938e+02, 2.816945190429688e+02, 2.814530334472656e+02, 2.810033264160156e+02, 2.812547607421875e+02, 2.819129638671875e+02, 2.809671325683594e+02, 2.810900573730469e+02, 2.8109521484375e+02, 2.81612060546875e+02, 2.813031005859375e+02, 2.811673583984375e+02, 2.811735229492188e+02, 2.811829528808594e+02, 2.810264282226562e+02, 2.811570739746094e+02, 2.809432067871094e+02, 2.807191772460938e+02, 2.808212585449219e+02, 2.809210510253906e+02, 2.806796569824219e+02, 2.807968444824219e+02, 2.808641662597656e+02, 2.809452209472656e+02, 2.809395751953125e+02, 2.809038391113281e+02, 2.809042358398438e+02, 2.809254150390625e+02, 2.807500915527344e+02, 2.809739074707031e+02, 2.8091943359375e+02, 2.808603820800781e+02, 2.807145080566406e+02, 2.808949890136719e+02, 2.807938232421875e+02, 2.806502380371094e+02, 2.806739196777344e+02, 2.806591186523438e+02, 2.807589416503906e+02, 2.807051696777344e+02, 2.8070654296875e+02, 2.807359924316406e+02, 2.806133117675781e+02, 2.806768188476562e+02, 2.8076416015625e+02, 2.807030639648438e+02, 2.805387268066406e+02, 2.808008728027344e+02, 2.806955871582031e+02, 2.80495361328125e+02, 2.805726318359375e+02, 2.805717468261719e+02, 2.807527465820312e+02, 2.806473999023438e+02] -bui[3].ets.volMix_a.T=[2.931499938964844e+02, 2.871160583496094e+02, 2.855316467285156e+02, 2.853119812011719e+02, 2.841650085449219e+02, 2.847310791015625e+02, 2.848641967773438e+02, 2.848038330078125e+02, 2.841844482421875e+02, 2.848694763183594e+02, 2.848375549316406e+02, 2.840689697265625e+02, 2.841347351074219e+02, 2.842338562011719e+02, 2.848382263183594e+02, 2.84795654296875e+02, 2.847061157226562e+02, 2.846224365234375e+02, 2.838219909667969e+02, 2.839707946777344e+02, 2.843305053710938e+02, 2.844200744628906e+02, 2.838054504394531e+02, 2.845011596679688e+02, 2.847223510742188e+02, 2.838422546386719e+02, 2.839562072753906e+02, 2.838506469726562e+02, 2.845849914550781e+02, 2.846541137695312e+02, 2.84580322265625e+02, 2.845151977539062e+02, 2.841824340820312e+02, 2.834307250976562e+02, 2.842991333007812e+02, 2.844163208007812e+02, 2.840664672851562e+02, 2.843716125488281e+02, 2.849613952636719e+02, 2.843282470703125e+02, 2.841460571289062e+02, 2.840389709472656e+02, 2.844659423828125e+02, 2.848146057128906e+02, 2.847197265625e+02, 2.846080322265625e+02, 2.845261535644531e+02, 2.833432006835938e+02, 2.842290344238281e+02, 2.841253662109375e+02, 2.835740661621094e+02, 2.836195983886719e+02, 2.842528076171875e+02, 2.835028076171875e+02, 2.831919555664062e+02, 2.832668151855469e+02, 2.836947937011719e+02, 2.841211547851562e+02, 2.840037231445312e+02, 2.839623718261719e+02, 2.839491577148438e+02, 2.827830810546875e+02, 2.837046813964844e+02, 2.836549072265625e+02, 2.834641723632812e+02, 2.826089782714844e+02, 2.837307739257812e+02, 2.834009094238281e+02, 2.825072937011719e+02, 2.827526550292969e+02, 2.828301391601562e+02, 2.836480712890625e+02, 2.836116943359375e+02, 2.835772094726562e+02, 2.835339050292969e+02, 2.826209716796875e+02, 2.827563171386719e+02, 2.834735412597656e+02, 2.834318542480469e+02, 2.82213134765625e+02, 2.835355529785156e+02, 2.834386291503906e+02, 2.821898498535156e+02, 2.824094848632812e+02, 2.823036804199219e+02, 2.833404541015625e+02, 2.833262634277344e+02, 2.832858276367188e+02, 2.832497253417969e+02, 2.830959777832031e+02, 2.820510559082031e+02, 2.832996215820312e+02, 2.831804809570312e+02, 2.820130920410156e+02, 2.829502258300781e+02, 2.834532165527344e+02, 2.823521118164062e+02, 2.823630981445312e+02, 2.823828430175781e+02, 2.831741333007812e+02, 2.83362060546875e+02] -bui[3].ets.volMix_b.T=[2.931499938964844e+02, 2.884422607421875e+02, 2.84761474609375e+02, 2.838321228027344e+02, 2.804904174804688e+02, 2.805576477050781e+02, 2.808843994140625e+02, 2.810694885253906e+02, 2.809519958496094e+02, 2.814814758300781e+02, 2.814303283691406e+02, 2.813258056640625e+02, 2.815944213867188e+02, 2.821942443847656e+02, 2.838297424316406e+02, 2.833143615722656e+02, 2.826636352539062e+02, 2.821571044921875e+02, 2.803588256835938e+02, 2.7972998046875e+02, 2.803562316894531e+02, 2.804425659179688e+02, 2.810308837890625e+02, 2.814793395996094e+02, 2.813485107421875e+02, 2.80904052734375e+02, 2.816155395507812e+02, 2.81171142578125e+02, 2.838155822753906e+02, 2.834799194335938e+02, 2.828116149902344e+02, 2.822672424316406e+02, 2.808140258789062e+02, 2.793700256347656e+02, 2.802749633789062e+02, 2.806602478027344e+02, 2.820849304199219e+02, 2.8288427734375e+02, 2.831304321289062e+02, 2.821980895996094e+02, 2.827495422363281e+02, 2.821360778808594e+02, 2.835892028808594e+02, 2.844647216796875e+02, 2.835814819335938e+02, 2.827127685546875e+02, 2.819263610839844e+02, 2.794148559570312e+02, 2.801291809082031e+02, 2.801521606445312e+02, 2.799024658203125e+02, 2.793983459472656e+02, 2.802214050292969e+02, 2.798520812988281e+02, 2.791918334960938e+02, 2.792772216796875e+02, 2.804437561035156e+02, 2.8124755859375e+02, 2.807373962402344e+02, 2.804537048339844e+02, 2.802764892578125e+02, 2.789562683105469e+02, 2.794233093261719e+02, 2.796857299804688e+02, 2.795831909179688e+02, 2.785693969726562e+02, 2.796845397949219e+02, 2.795483703613281e+02, 2.785578002929688e+02, 2.787227172851562e+02, 2.787856750488281e+02, 2.799391479492188e+02, 2.798402404785156e+02, 2.797791137695312e+02, 2.797234497070312e+02, 2.789493103027344e+02, 2.785137939453125e+02, 2.794952087402344e+02, 2.794452514648438e+02, 2.783184814453125e+02, 2.792882385253906e+02, 2.794620971679688e+02, 2.783299560546875e+02, 2.783647155761719e+02, 2.783332824707031e+02, 2.793021545410156e+02, 2.795076904296875e+02, 2.794674682617188e+02, 2.794230346679688e+02, 2.792097473144531e+02, 2.780207214355469e+02, 2.792719421386719e+02, 2.791962890625e+02, 2.783446960449219e+02, 2.785535278320312e+02, 2.794524536132812e+02, 2.786931457519531e+02, 2.783241577148438e+02, 2.783978576660156e+02, 2.792947387695312e+02, 2.795585632324219e+02] -ETot.y=[0e+00, 3.5743552e+08, 7.81818816e+08, 1.248036224e+09, 2.527317504e+09, 3.683337216e+09, 4.533505024e+09, 5.373073920000002e+09, 6.562696192e+09, 7.174724608e+09, 7.916566016e+09, 9.118931968e+09, 1.0217240576e+10, 1.123429376e+10, 1.1615515648e+10, 1.2095102976e+10, 1.265411584e+10, 1.3282235392e+10, 1.4334819328e+10, 1.5931189248e+10, 1.7026881536e+10, 1.7920131072e+10, 1.9155679232e+10, 1.9854329856e+10, 2.049989632e+10, 2.1718204416e+10, 2.285024256e+10, 2.405823488e+10, 2.4509929472e+10, 2.4988669952e+10, 2.5541265408e+10, 2.6160625664e+10, 2.7025465344e+10, 2.8828655616e+10, 2.9933273088e+10, 3.0764898304e+10, 3.171595264e+10, 3.2413652992e+10, 3.283427328e+10, 3.3703886848e+10, 3.47126784e+10, 3.576650547199999e+10, 3.6362932224e+10, 3.6742406144e+10, 3.7214298112e+10, 3.7781942272e+10, 3.8440681472e+10, 4.0147427328e+10, 4.1507180544e+10, 4.2729119744e+10, 4.4056588288e+10, 4.5603057664e+10, 4.6572650496e+10, 4.7849209856e+10, 4.9518997504e+10, 5.1089334272e+10, 5.237239398400001e+10, 5.307792998399999e+10, 5.38947584e+10, 5.4760583168e+10, 5.5650975744e+10, 5.733040128e+10, 5.9182964736e+10, 6.0657369088e+10, 6.215225344e+10, 6.432096256e+10, 6.5709133824e+10, 6.7103342592e+10, 6.917461606400002e+10, 7.102868684799998e+10, 7.2835956736e+10, 7.3711108096e+10, 7.4665689088e+10, 7.565668352e+10, 7.670853632e+10, 7.825022976e+10, 8.0574767104e+10, 8.2066612224e+10, 8.353099776e+10, 8.5700083712e+10, 8.7345381376e+10, 8.868707532800002e+10, 9.080260198399998e+10, 9.2925534208e+10, 9.5065669632e+10, 9.6244793344e+10, 9.7310236672e+10, 9.8416672768e+10, 9.9580731392e+10, 1.00868562944e+11, 1.03438352384e+11, 1.05075908608e+11, 1.06609893376e+11, 1.08647718912e+11, 1.10590025728e+11, 1.11761440768e+11, 1.13457061888e+11, 1.15547848704e+11, 1.1753603072e+11, 1.18974783488e+11, 1.19953997824e+11] -EHeaPum.y=[0e+00, 1.27460736e+08, 3.21555808e+08, 5.57328576e+08, 1.588782464e+09, 2.498981888e+09, 3.112683776e+09, 3.718167552000001e+09, 4.666501632e+09, 5.046557184e+09, 5.555584512e+09, 6.515556864e+09, 7.375280128e+09, 8.154131968e+09, 8.305354752000001e+09, 8.554497536e+09, 8.883058688e+09, 9.280344064000002e+09, 1.0089260032e+10, 1.1421852672e+10, 1.227374592e+10, 1.2930552832e+10, 1.3923848192e+10, 1.4389341184e+10, 1.4802963456e+10, 1.5778653184e+10, 1.6670528512e+10, 1.7636227072e+10, 1.785728e+10, 1.8105575424e+10, 1.8427705344e+10, 1.881619456e+10, 1.9445501952e+10, 2.0978581504e+10, 2.1839026176e+10, 2.2435467264e+10, 2.3150266368e+10, 2.361393152e+10, 2.380289024e+10, 2.4436824064e+10, 2.5208727552e+10, 2.6025064448e+10, 2.6389200896e+10, 2.6538784768e+10, 2.6780645376e+10, 2.711774208e+10, 2.7545178112e+10, 2.8987246592e+10, 3.00928512e+10, 3.1067246592e+10, 3.2146552832e+10, 3.3434742784e+10, 3.41662208e+10, 3.5196018688e+10, 3.6602155008e+10, 3.7915164672e+10, 3.8947893248e+10, 3.942138265599999e+10, 4.0003928064e+10, 4.0634105856e+10, 4.128825344e+10, 4.2700763136e+10, 4.4275306496e+10, 4.5491212288e+10, 4.6728544256e+10, 4.8609447936e+10, 4.9743376384e+10, 5.088579584e+10, 5.267183616000002e+10, 5.425229823999998e+10, 5.578786816e+10, 5.6427044864e+10, 5.7143672832e+10, 5.7895612416e+10, 5.870608384e+10, 5.9986509824e+10, 6.200571904e+10, 6.3237259264e+10, 6.4443826176e+10, 6.632300544e+10, 6.7700047872e+10, 6.879114035200002e+10, 7.061867724799998e+10, 7.2454078464e+10, 7.4307264512e+10, 7.5239251968e+10, 7.6063694848e+10, 7.6927451136e+10, 7.7846347776e+10, 7.8884634624e+10, 8.1138843648e+10, 8.2508947456e+10, 8.3783360512e+10, 8.5538226176e+10, 8.7197057024e+10, 8.812621824e+10, 8.955703296e+10, 9.1363418112e+10, 9.3074489344e+10, 9.4256398336e+10, 9.4998315008e+10] -EPum.y=[0e+00, 2.299748e+08, 4.6026304e+08, 6.90707584e+08, 9.38535104e+08, 1.1843552e+09, 1.42082112e+09, 1.65490624e+09, 1.896194304e+09, 2.128167424e+09, 2.360981248e+09, 2.603375104e+09, 2.841960192e+09, 3.080162048e+09, 3.310161152e+09, 3.540605696e+09, 3.771057152e+09, 4.001891584e+09, 4.245559296e+09, 4.509337088e+09, 4.753135616e+09, 4.989579264e+09, 5.23183104e+09, 5.46498816e+09, 5.696933888e+09, 5.93955072e+09, 6.179713024e+09, 6.422007296e+09, 6.652649472000001e+09, 6.883094016e+09, 7.113559552e+09, 7.344431616e+09, 7.579963392e+09, 7.850074624e+09, 8.094247424000001e+09, 8.329432064e+09, 8.565684736e+09, 8.799721472e+09, 9.031382016e+09, 9.267062784e+09, 9.503952896e+09, 9.741439999999998e+09, 9.97372928e+09, 1.02036224e+10, 1.0433654784e+10, 1.0664201216e+10, 1.0895504384e+10, 1.1160178688e+10, 1.1414330368e+10, 1.16618752e+10, 1.1910035456e+10, 1.216831488e+10, 1.240643072e+10, 1.2653193216e+10, 1.2916842496e+10, 1.31741696e+10, 1.3424500736e+10, 1.3656547328e+10, 1.3890833408e+10, 1.4126477312e+10, 1.4362722304e+10, 1.4629638144e+10, 1.4907660288e+10, 1.51661568e+10, 1.5423706112e+10, 1.5711514624e+10, 1.5965754368e+10, 1.6217547776e+10, 1.6502777856e+10, 1.6776383488e+10, 1.7048088576e+10, 1.7284059136e+10, 1.7522016256e+10, 1.7761073152e+10, 1.8002448384e+10, 1.8263719936e+10, 1.8569046016e+10, 1.882935296e+10, 1.9087169536e+10, 1.9377078272e+10, 1.9645335552e+10, 1.9895937024e+10, 2.0183924736e+10, 2.047145984e+10, 2.0758413312e+10, 2.1005541376e+10, 2.1246539776e+10, 2.148922368e+10, 2.1734385664e+10, 2.1983926272e+10, 2.2299510784e+10, 2.2566967296e+10, 2.2826530816e+10, 2.3109494784e+10, 2.3392968704e+10, 2.3635226624e+10, 2.3900030976e+10, 2.4184428544e+10, 2.446153728e+10, 2.4718379008e+10, 2.4955686912e+10] -EPumETS.y=[0e+00, 5.370005e+06, 1.1053451e+07, 1.6893206e+07, 4.0115916e+07, 6.1331252e+07, 7.3192416e+07, 8.267268000000003e+07, 9.9356016e+07, 1.06724256e+08, 1.14933328e+08, 1.32722416e+08, 1.46702576e+08, 1.60299616e+08, 1.65693984e+08, 1.71533728e+08, 1.77380448e+08, 1.83610048e+08, 2.02672944e+08, 2.41845984e+08, 2.6103984e+08, 2.72878592e+08, 2.90525792e+08, 2.99077888e+08, 3.06418752e+08, 3.24430912e+08, 3.39988544e+08, 3.57677792e+08, 3.63715296e+08, 3.6955504e+08, 3.75415552e+08, 3.81683264e+08, 3.92609824e+08, 4.38116608e+08, 4.576846720000001e+08, 4.68264288e+08, 4.79912256e+08, 4.89344256e+08, 4.9639968e+08, 5.07475616e+08, 5.19761344e+08, 5.326434239999999e+08, 5.40327808e+08, 5.45616576e+08, 5.5104384e+08, 5.56985984e+08, 5.63683904e+08, 6.03753408e+08, 6.33300032e+08, 6.56240256e+08, 6.79795712e+08, 7.1347008e+08, 7.26981184e+08, 7.49139136e+08, 7.88184128e+08, 8.20905728e+08, 8.466319360000001e+08, 8.540739199999999e+08, 8.63755776e+08, 8.7479424e+08, 8.86434752e+08, 9.2874624e+08, 9.8216352e+08, 1.016054656e+09, 1.048999808e+09, 1.112203264e+09, 1.141838208e+09, 1.169027072e+09, 1.229652352e+09, 1.278653184e+09, 1.325752832e+09, 1.33711936e+09, 1.350471808e+09, 1.36492224e+09, 1.381693952e+09, 1.418361088e+09, 1.499081344e+09, 1.534784768e+09, 1.56799616e+09, 1.633300224e+09, 1.676952704e+09, 1.702948864e+09, 1.766332671999999e+09, 1.82926144e+09, 1.891609984e+09, 1.914134656e+09, 1.930526976e+09, 1.948606592e+09, 1.969163904e+09, 1.994099584e+09, 2.085079808e+09, 2.127930496e+09, 2.16288896e+09, 2.221249792e+09, 2.280118272e+09, 2.29777152e+09, 2.3379712e+09, 2.39776384e+09, 2.450267136e+09, 2.482503936e+09, 2.495207936e+09] +bui[1].ets.volMix_b.T=[2.931499938964844e+02, 2.931488647460938e+02, 2.9001416015625e+02, 2.868185424804688e+02, 2.842826538085938e+02, 2.82075927734375e+02, 2.816794738769531e+02, 2.819617614746094e+02, 2.825137939453125e+02, 2.818990478515625e+02, 2.824046630859375e+02, 2.839807434082031e+02, 2.840083312988281e+02, 2.840353698730469e+02, 2.844737243652344e+02, 2.85192626953125e+02, 2.848866577148438e+02, 2.84479736328125e+02, 2.837225036621094e+02, 2.816018371582031e+02, 2.813801574707031e+02, 2.813729858398438e+02, 2.823311462402344e+02, 2.81858642578125e+02, 2.817323608398438e+02, 2.837155456542969e+02, 2.837450256347656e+02, 2.837739562988281e+02, 2.847330932617188e+02, 2.850948486328125e+02, 2.849543762207031e+02, 2.846051635742188e+02, 2.842452697753906e+02, 2.818676452636719e+02, 2.813291931152344e+02, 2.814966735839844e+02, 2.837120666503906e+02, 2.846671447753906e+02, 2.842787475585938e+02, 2.844922180175781e+02, 2.847715454101562e+02, 2.847803039550781e+02, 2.847888793945312e+02, 2.847973022460938e+02, 2.84968017578125e+02, 2.851762084960938e+02, 2.849369506835938e+02, 2.825851440429688e+02, 2.813678894042969e+02, 2.812893371582031e+02, 2.818466491699219e+02, 2.823055114746094e+02, 2.813099365234375e+02, 2.819532775878906e+02, 2.835583801269531e+02, 2.835881652832031e+02, 2.843360595703125e+02, 2.849087829589844e+02, 2.847259216308594e+02, 2.843128662109375e+02, 2.839830932617188e+02, 2.828433227539062e+02, 2.81194091796875e+02, 2.810583190917969e+02, 2.810626525878906e+02, 2.809878540039062e+02, 2.809632263183594e+02, 2.809719543457031e+02, 2.828880310058594e+02, 2.842164001464844e+02, 2.839287719726562e+02, 2.834637145996094e+02, 2.831322021484375e+02, 2.828700256347656e+02, 2.826696166992188e+02, 2.822237854003906e+02, 2.817875366210938e+02, 2.817318725585938e+02, 2.817280578613281e+02, 2.816649169921875e+02, 2.815726013183594e+02, 2.814386596679688e+02, 2.813984680175781e+02, 2.819447937011719e+02, 2.819392395019531e+02, 2.817919921875e+02, 2.816387939453125e+02, 2.815582580566406e+02, 2.81458251953125e+02, 2.813455200195312e+02, 2.808899230957031e+02, 2.808498840332031e+02, 2.808082580566406e+02, 2.808057250976562e+02, 2.808357238769531e+02, 2.808140563964844e+02, 2.807319030761719e+02, 2.811485595703125e+02, 2.814035034179688e+02, 2.812828063964844e+02, 2.81143310546875e+02] +bui[2].ets.volMix_a.T=[2.931499938964844e+02, 2.860820007324219e+02, 2.8577880859375e+02, 2.858100891113281e+02, 2.857190856933594e+02, 2.855907592773438e+02, 2.85437255859375e+02, 2.853782653808594e+02, 2.853722839355469e+02, 2.853344421386719e+02, 2.852992248535156e+02, 2.853805236816406e+02, 2.854154052734375e+02, 2.853901977539062e+02, 2.853478393554688e+02, 2.853288879394531e+02, 2.853477783203125e+02, 2.8535546875e+02, 2.853469848632812e+02, 2.852397155761719e+02, 2.85119384765625e+02, 2.850985412597656e+02, 2.851420593261719e+02, 2.8514111328125e+02, 2.851092224121094e+02, 2.851634521484375e+02, 2.852747192382812e+02, 2.852639465332031e+02, 2.85221923828125e+02, 2.852166442871094e+02, 2.852363586425781e+02, 2.852568359375e+02, 2.852678833007812e+02, 2.851950073242188e+02, 2.850953369140625e+02, 2.850636596679688e+02, 2.851055908203125e+02, 2.851680908203125e+02, 2.851747741699219e+02, 2.85182861328125e+02, 2.852590942382812e+02, 2.852767639160156e+02, 2.852688903808594e+02, 2.852479248046875e+02, 2.852494812011719e+02, 2.852805786132812e+02, 2.853034973144531e+02, 2.852565307617188e+02, 2.8512646484375e+02, 2.850107116699219e+02, 2.850486145019531e+02, 2.850721740722656e+02, 2.850056457519531e+02, 2.849755249023438e+02, 2.851019592285156e+02, 2.850979919433594e+02, 2.850477294921875e+02, 2.850228576660156e+02, 2.850205993652344e+02, 2.850359802246094e+02, 2.850468444824219e+02, 2.850341796875e+02, 2.849153137207031e+02, 2.847589721679688e+02, 2.847474365234375e+02, 2.847871398925781e+02, 2.847046203613281e+02, 2.846983642578125e+02, 2.848058776855469e+02, 2.848719482421875e+02, 2.848363037109375e+02, 2.847917785644531e+02, 2.847677917480469e+02, 2.847895812988281e+02, 2.848146667480469e+02, 2.848258972167969e+02, 2.848266906738281e+02, 2.847847290039062e+02, 2.847264099121094e+02, 2.84707763671875e+02, 2.847080078125e+02, 2.846610107421875e+02, 2.846492004394531e+02, 2.846774291992188e+02, 2.846508178710938e+02, 2.846157531738281e+02, 2.845794982910156e+02, 2.846012573242188e+02, 2.846340026855469e+02, 2.846579284667969e+02, 2.846526489257812e+02, 2.846387023925781e+02, 2.845808715820312e+02, 2.845638122558594e+02, 2.845759887695312e+02, 2.845421447753906e+02, 2.845224609375e+02, 2.845653381347656e+02, 2.845731506347656e+02, 2.845481262207031e+02, 2.845104370117188e+02] +bui[2].ets.volMix_b.T=[2.931499938964844e+02, 2.865400390625e+02, 2.839467163085938e+02, 2.836128845214844e+02, 2.817754821777344e+02, 2.829466857910156e+02, 2.832295532226562e+02, 2.822108764648438e+02, 2.815613708496094e+02, 2.839972229003906e+02, 2.822894287109375e+02, 2.813838500976562e+02, 2.814032897949219e+02, 2.822608642578125e+02, 2.834562683105469e+02, 2.829920349121094e+02, 2.825762023925781e+02, 2.822579040527344e+02, 2.814261474609375e+02, 2.816143493652344e+02, 2.82019287109375e+02, 2.824903869628906e+02, 2.811843566894531e+02, 2.836626281738281e+02, 2.832638854980469e+02, 2.811968078613281e+02, 2.812562255859375e+02, 2.813013305664062e+02, 2.83227783203125e+02, 2.828057250976562e+02, 2.824222412109375e+02, 2.821364440917969e+02, 2.813312072753906e+02, 2.81294921875e+02, 2.820419311523438e+02, 2.828374633789062e+02, 2.812594909667969e+02, 2.835623168945312e+02, 2.844231567382812e+02, 2.814578857421875e+02, 2.81263427734375e+02, 2.812630920410156e+02, 2.836643981933594e+02, 2.834266052246094e+02, 2.828575744628906e+02, 2.823534240722656e+02, 2.8187841796875e+02, 2.812807006835938e+02, 2.816944885253906e+02, 2.814530029296875e+02, 2.810033569335938e+02, 2.812546997070312e+02, 2.819129638671875e+02, 2.809670715332031e+02, 2.810900573730469e+02, 2.8109521484375e+02, 2.81612060546875e+02, 2.813031005859375e+02, 2.811673583984375e+02, 2.811735229492188e+02, 2.811829528808594e+02, 2.810264282226562e+02, 2.811570739746094e+02, 2.809432067871094e+02, 2.807191772460938e+02, 2.808212585449219e+02, 2.809210510253906e+02, 2.806796569824219e+02, 2.807968444824219e+02, 2.808641662597656e+02, 2.809452209472656e+02, 2.809395141601562e+02, 2.809038391113281e+02, 2.809042358398438e+02, 2.809254150390625e+02, 2.807501220703125e+02, 2.809739074707031e+02, 2.8091943359375e+02, 2.808603820800781e+02, 2.807145080566406e+02, 2.808949890136719e+02, 2.807937927246094e+02, 2.806502380371094e+02, 2.806739196777344e+02, 2.806591186523438e+02, 2.807589416503906e+02, 2.807051696777344e+02, 2.8070654296875e+02, 2.807359924316406e+02, 2.806132507324219e+02, 2.806768188476562e+02, 2.8076416015625e+02, 2.807030639648438e+02, 2.805387268066406e+02, 2.808008422851562e+02, 2.806955871582031e+02, 2.80495361328125e+02, 2.805726318359375e+02, 2.805717468261719e+02, 2.807527770996094e+02, 2.806473999023438e+02] +bui[3].ets.volMix_a.T=[2.931499938964844e+02, 2.871160583496094e+02, 2.855316467285156e+02, 2.853119812011719e+02, 2.841650085449219e+02, 2.847310791015625e+02, 2.848641967773438e+02, 2.848038940429688e+02, 2.841844482421875e+02, 2.848694763183594e+02, 2.848375549316406e+02, 2.840690002441406e+02, 2.841347351074219e+02, 2.842338562011719e+02, 2.848382263183594e+02, 2.84795654296875e+02, 2.847061157226562e+02, 2.846224365234375e+02, 2.838219909667969e+02, 2.839707946777344e+02, 2.843305053710938e+02, 2.844200744628906e+02, 2.838054504394531e+02, 2.845011596679688e+02, 2.847223510742188e+02, 2.838422546386719e+02, 2.839562072753906e+02, 2.838506469726562e+02, 2.845849914550781e+02, 2.846541137695312e+02, 2.84580322265625e+02, 2.845151977539062e+02, 2.841824035644531e+02, 2.834307250976562e+02, 2.842991333007812e+02, 2.844163208007812e+02, 2.840664672851562e+02, 2.843716125488281e+02, 2.849613952636719e+02, 2.843282470703125e+02, 2.841460571289062e+02, 2.840389709472656e+02, 2.844659423828125e+02, 2.848146057128906e+02, 2.847197265625e+02, 2.846080322265625e+02, 2.845261535644531e+02, 2.833432312011719e+02, 2.8422900390625e+02, 2.841253662109375e+02, 2.835740661621094e+02, 2.8361962890625e+02, 2.842528076171875e+02, 2.835028076171875e+02, 2.831919250488281e+02, 2.832668151855469e+02, 2.836947937011719e+02, 2.841211547851562e+02, 2.840037231445312e+02, 2.839623718261719e+02, 2.839491577148438e+02, 2.827830810546875e+02, 2.837046813964844e+02, 2.836548767089844e+02, 2.834641723632812e+02, 2.826089782714844e+02, 2.837307739257812e+02, 2.834009094238281e+02, 2.825072937011719e+02, 2.82752685546875e+02, 2.828301696777344e+02, 2.836480712890625e+02, 2.836116943359375e+02, 2.835772094726562e+02, 2.835339050292969e+02, 2.826209411621094e+02, 2.827563171386719e+02, 2.834735412597656e+02, 2.834318542480469e+02, 2.82213134765625e+02, 2.835355529785156e+02, 2.834386596679688e+02, 2.821898498535156e+02, 2.824094848632812e+02, 2.823037109375e+02, 2.833404541015625e+02, 2.833262634277344e+02, 2.832858276367188e+02, 2.83249755859375e+02, 2.830959777832031e+02, 2.820510559082031e+02, 2.832996215820312e+02, 2.831804809570312e+02, 2.820130920410156e+02, 2.829502258300781e+02, 2.834532470703125e+02, 2.823521118164062e+02, 2.823630981445312e+02, 2.823828430175781e+02, 2.831741333007812e+02, 2.83362060546875e+02] +bui[3].ets.volMix_b.T=[2.931499938964844e+02, 2.884422607421875e+02, 2.84761474609375e+02, 2.838321228027344e+02, 2.804904174804688e+02, 2.805576477050781e+02, 2.808843994140625e+02, 2.810694580078125e+02, 2.809519958496094e+02, 2.814814758300781e+02, 2.814303283691406e+02, 2.813258056640625e+02, 2.815944213867188e+02, 2.821942443847656e+02, 2.838297424316406e+02, 2.833143615722656e+02, 2.826636352539062e+02, 2.821571044921875e+02, 2.803588562011719e+02, 2.7972998046875e+02, 2.803562316894531e+02, 2.804425964355469e+02, 2.810308227539062e+02, 2.814793395996094e+02, 2.813485107421875e+02, 2.80904052734375e+02, 2.816155395507812e+02, 2.81171142578125e+02, 2.838155517578125e+02, 2.834799194335938e+02, 2.828116149902344e+02, 2.822672424316406e+02, 2.808140563964844e+02, 2.793700256347656e+02, 2.802749938964844e+02, 2.806603088378906e+02, 2.820848999023438e+02, 2.828843078613281e+02, 2.831304626464844e+02, 2.821980895996094e+02, 2.827495422363281e+02, 2.821360778808594e+02, 2.835892028808594e+02, 2.844647216796875e+02, 2.835814819335938e+02, 2.827127685546875e+02, 2.819263610839844e+02, 2.794149169921875e+02, 2.801291809082031e+02, 2.801521606445312e+02, 2.799024658203125e+02, 2.793983764648438e+02, 2.802214050292969e+02, 2.7985205078125e+02, 2.791918334960938e+02, 2.792772216796875e+02, 2.804437866210938e+02, 2.8124755859375e+02, 2.807373962402344e+02, 2.804536743164062e+02, 2.802764892578125e+02, 2.789562683105469e+02, 2.794233093261719e+02, 2.796857299804688e+02, 2.795832214355469e+02, 2.785693969726562e+02, 2.796845397949219e+02, 2.795483703613281e+02, 2.785578002929688e+02, 2.787227172851562e+02, 2.787858581542969e+02, 2.799391479492188e+02, 2.798402099609375e+02, 2.797791137695312e+02, 2.797234497070312e+02, 2.789493103027344e+02, 2.785137939453125e+02, 2.794952087402344e+02, 2.794452514648438e+02, 2.783184814453125e+02, 2.792882385253906e+02, 2.794620971679688e+02, 2.783299560546875e+02, 2.783647155761719e+02, 2.783332824707031e+02, 2.793021545410156e+02, 2.795076904296875e+02, 2.794674682617188e+02, 2.794230346679688e+02, 2.792097778320312e+02, 2.780207214355469e+02, 2.792719421386719e+02, 2.791962585449219e+02, 2.783446960449219e+02, 2.785535278320312e+02, 2.794525146484375e+02, 2.786931457519531e+02, 2.783241577148438e+02, 2.783978576660156e+02, 2.79294677734375e+02, 2.7955859375e+02] +ETot.y=[0e+00, 3.5743552e+08, 7.81818816e+08, 1.248036224e+09, 2.527317504e+09, 3.683337216e+09, 4.533504512e+09, 5.373068800000002e+09, 6.56269312e+09, 7.174720512e+09, 7.916561408e+09, 9.118927872e+09, 1.0217235456e+10, 1.1234289664e+10, 1.1615511552e+10, 1.2095097856e+10, 1.2654108672e+10, 1.32822272e+10, 1.4334802944e+10, 1.593117184e+10, 1.7026865152e+10, 1.7920114688e+10, 1.9155673088e+10, 1.9854327808e+10, 2.049989632e+10, 2.1718204416e+10, 2.285024256e+10, 2.405823488e+10, 2.450993152e+10, 2.4988669952e+10, 2.5541265408e+10, 2.6160623616e+10, 2.702546944e+10, 2.8828667904e+10, 2.9933283328e+10, 3.0764910592e+10, 3.1715956736e+10, 3.2413652992e+10, 3.283427328e+10, 3.3703886848e+10, 3.47126784e+10, 3.576650547199999e+10, 3.6362932224e+10, 3.6742406144e+10, 3.7214298112e+10, 3.7781942272e+10, 3.8440685568e+10, 4.0147443712e+10, 4.150720512e+10, 4.2729140224e+10, 4.4056608768e+10, 4.5603078144e+10, 4.6572670976e+10, 4.7849234432e+10, 4.951902208e+10, 5.1089354752e+10, 5.237242265600001e+10, 5.307795865599999e+10, 5.3894791168e+10, 5.476061184e+10, 5.5651004416e+10, 5.7330429952e+10, 5.9182993408e+10, 6.0657389568e+10, 6.215227392e+10, 6.4320987136e+10, 6.5709162496e+10, 6.7103367168e+10, 6.917463244800002e+10, 7.102870323199998e+10, 7.2835981312e+10, 7.3711132672e+10, 7.4665713664e+10, 7.5656708096e+10, 7.6708560896e+10, 7.8250237952e+10, 8.0574783488e+10, 8.2066628608e+10, 8.3531014144e+10, 8.570011648e+10, 8.7345405952e+10, 8.868710809600002e+10, 9.080263475199998e+10, 9.2925558784e+10, 9.5065694208e+10, 9.6244809728e+10, 9.7310253056e+10, 9.8416689152e+10, 9.9580747776e+10, 1.00868579328e+11, 1.03438360576e+11, 1.050759168e+11, 1.06609893376e+11, 1.08647718912e+11, 1.10590017536e+11, 1.11761432576e+11, 1.13457053696e+11, 1.1554783232e+11, 1.17536038912e+11, 1.18974799872e+11, 1.199540224e+11] +EHeaPum.y=[0e+00, 1.27460736e+08, 3.21555808e+08, 5.57328576e+08, 1.588782464e+09, 2.498981888e+09, 3.112683008e+09, 3.718162944000001e+09, 4.666499072e+09, 5.0465536e+09, 5.555580416e+09, 6.515552768e+09, 7.375276032e+09, 8.15412736e+09, 8.305350144000001e+09, 8.554492416e+09, 8.88305152e+09, 9.280335872000002e+09, 1.0089244672e+10, 1.1421835264e+10, 1.227373056e+10, 1.2930537472e+10, 1.3923842048e+10, 1.438934016e+10, 1.4802962432e+10, 1.5778654208e+10, 1.667053056e+10, 1.763622912e+10, 1.7857282048e+10, 1.8105577472e+10, 1.8427707392e+10, 1.8816192512e+10, 1.9445508096e+10, 2.0978591744e+10, 2.1839036416e+10, 2.2435477504e+10, 2.3150270464e+10, 2.3613929472e+10, 2.380289024e+10, 2.4436824064e+10, 2.5208725504e+10, 2.60250624e+10, 2.6389200896e+10, 2.6538784768e+10, 2.6780643328e+10, 2.7117740032e+10, 2.754518016e+10, 2.8987265024e+10, 3.0092873728e+10, 3.1067265024e+10, 3.2146571264e+10, 3.3434761216e+10, 3.4166237184e+10, 3.5196039168e+10, 3.6602175488e+10, 3.7915185152e+10, 3.894792192e+10, 3.942140723199999e+10, 4.000395264e+10, 4.0634134528e+10, 4.1288282112e+10, 4.2700791808e+10, 4.4275331072e+10, 4.5491232768e+10, 4.6728568832e+10, 4.8609472512e+10, 4.9743405056e+10, 5.088581632e+10, 5.267185664000002e+10, 5.425231871999998e+10, 5.578788864e+10, 5.642706944e+10, 5.7143693312e+10, 5.7895636992e+10, 5.8706112512e+10, 5.9986518016e+10, 6.2005731328e+10, 6.3237271552e+10, 6.4443838464e+10, 6.6323034112e+10, 6.7700068352e+10, 6.879116492800002e+10, 7.061870182399998e+10, 7.2454094848e+10, 7.4307272704e+10, 7.523926016e+10, 7.6063711232e+10, 7.6927459328e+10, 7.7846355968e+10, 7.8884651008e+10, 8.1138843648e+10, 8.2508939264e+10, 8.3783360512e+10, 8.5538217984e+10, 8.7197048832e+10, 8.8126201856e+10, 8.9557016576e+10, 9.136340992e+10, 9.3074497536e+10, 9.425641472e+10, 9.4998331392e+10] +EPum.y=[0e+00, 2.299748e+08, 4.6026304e+08, 6.90707584e+08, 9.38535104e+08, 1.1843552e+09, 1.42082112e+09, 1.654905856e+09, 1.896194048e+09, 2.128167168e+09, 2.360980992e+09, 2.603374848e+09, 2.841959936e+09, 3.080161792e+09, 3.310160896e+09, 3.54060544e+09, 3.771056896e+09, 4.001891328e+09, 4.245558528e+09, 4.509336576e+09, 4.753135104e+09, 4.989578752e+09, 5.23183104e+09, 5.464987648e+09, 5.696933376e+09, 5.939550208e+09, 6.179712512e+09, 6.422006784e+09, 6.652648960000001e+09, 6.883093504e+09, 7.113558528e+09, 7.344431104e+09, 7.57996288e+09, 7.850075136e+09, 8.094247936000001e+09, 8.329432064e+09, 8.56568576e+09, 8.799722496e+09, 9.031382016e+09, 9.267062784e+09, 9.50395392e+09, 9.741439999999998e+09, 9.97372928e+09, 1.0203623424e+10, 1.0433654784e+10, 1.066420224e+10, 1.0895505408e+10, 1.1160179712e+10, 1.1414331392e+10, 1.1661876224e+10, 1.191003648e+10, 1.2168315904e+10, 1.2406431744e+10, 1.265319424e+10, 1.2916844544e+10, 1.3174170624e+10, 1.342450176e+10, 1.3656548352e+10, 1.3890835456e+10, 1.4126478336e+10, 1.4362724352e+10, 1.4629640192e+10, 1.4907662336e+10, 1.5166157824e+10, 1.5423707136e+10, 1.5711516672e+10, 1.5965756416e+10, 1.6217549824e+10, 1.6502780928e+10, 1.677638656e+10, 1.7048090624e+10, 1.7284061184e+10, 1.7522018304e+10, 1.77610752e+10, 1.8002450432e+10, 1.8263724032e+10, 1.8569050112e+10, 1.8829357056e+10, 1.9087173632e+10, 1.9377084416e+10, 1.9645339648e+10, 1.989594112e+10, 2.018393088e+10, 2.0471463936e+10, 2.0758417408e+10, 2.100554752e+10, 2.1246543872e+10, 2.1489227776e+10, 2.1734391808e+10, 2.1983930368e+10, 2.2299516928e+10, 2.2566971392e+10, 2.2826534912e+10, 2.3109496832e+10, 2.3392970752e+10, 2.3635226624e+10, 2.3900033024e+10, 2.4184428544e+10, 2.4461539328e+10, 2.4718381056e+10, 2.495568896e+10] +EPumETS.y=[0e+00, 5.370005e+06, 1.1053451e+07, 1.6893206e+07, 4.0115916e+07, 6.1331252e+07, 7.3192376e+07, 8.267232000000003e+07, 9.9355712e+07, 1.06724056e+08, 1.14933016e+08, 1.32722216e+08, 1.46702384e+08, 1.60299424e+08, 1.65693776e+08, 1.71533536e+08, 1.77380256e+08, 1.8360984e+08, 2.02672128e+08, 2.41845296e+08, 2.61039184e+08, 2.72877888e+08, 2.90525344e+08, 2.99077664e+08, 3.0641856e+08, 3.24430304e+08, 3.39987936e+08, 3.57677184e+08, 3.63714656e+08, 3.695544e+08, 3.75414912e+08, 3.81682592e+08, 3.92609408e+08, 4.38116736e+08, 4.576847360000001e+08, 4.68264416e+08, 4.79913088e+08, 4.89344832e+08, 4.96400224e+08, 5.07476128e+08, 5.19761856e+08, 5.326439359999999e+08, 5.4032832e+08, 5.45617088e+08, 5.51044352e+08, 5.56986496e+08, 5.63684416e+08, 6.0375488e+08, 6.33301696e+08, 6.56241664e+08, 6.79797248e+08, 7.13471424e+08, 7.26982592e+08, 7.49140224e+08, 7.8818528e+08, 8.2090688e+08, 8.466335360000001e+08, 8.540755199999999e+08, 8.63757376e+08, 8.7479584e+08, 8.86436352e+08, 9.2874784e+08, 9.821648e+08, 1.016055808e+09, 1.049000896e+09, 1.112204672e+09, 1.141839872e+09, 1.16902848e+09, 1.229654656e+09, 1.278655616e+09, 1.325755392e+09, 1.337121792e+09, 1.350474112e+09, 1.364924672e+09, 1.381696384e+09, 1.418364544e+09, 1.4990848e+09, 1.534788224e+09, 1.567999744e+09, 1.633305472e+09, 1.676957184e+09, 1.702953344e+09, 1.766338303999999e+09, 1.829266944e+09, 1.891614976e+09, 1.914139648e+09, 1.930532096e+09, 1.948611328e+09, 1.969169024e+09, 1.994104704e+09, 2.085085312e+09, 2.127935872e+09, 2.162894336e+09, 2.221251584e+09, 2.280119552e+09, 2.297772288e+09, 2.337971968e+09, 2.397764608e+09, 2.450269184e+09, 2.48250624e+09, 2.495210496e+09] EPumPla.y=[0e+00, 1.4195229e+07, 2.8390458e+07, 4.2585688e+07, 5.6780916e+07, 7.0976144e+07, 8.5171376e+07, 9.936660800000001e+07, 1.13561832e+08, 1.27757064e+08, 1.41952288e+08, 1.5614752e+08, 1.70342752e+08, 1.84537984e+08, 1.98733216e+08, 2.12928432e+08, 2.27123664e+08, 2.41318896e+08, 2.55514128e+08, 2.69709344e+08, 2.83904576e+08, 2.98099808e+08, 3.1229504e+08, 3.26490272e+08, 3.40685504e+08, 3.54880736e+08, 3.69075968e+08, 3.832712e+08, 3.974664320000001e+08, 4.11661632e+08, 4.25856864e+08, 4.40052096e+08, 4.54247328e+08, 4.6844256e+08, 4.826377920000001e+08, 4.96833024e+08, 5.11028256e+08, 5.25223488e+08, 5.39418688e+08, 5.53613952e+08, 5.67809152e+08, 5.820044159999999e+08, 5.96199616e+08, 6.1039488e+08, 6.2459008e+08, 6.38785344e+08, 6.52980544e+08, 6.67175744e+08, 6.81371008e+08, 6.95566208e+08, 7.09761472e+08, 7.23956672e+08, 7.38151936e+08, 7.52347136e+08, 7.665424e+08, 7.807376e+08, 7.949328640000001e+08, 8.091280639999999e+08, 8.23323264e+08, 8.37518528e+08, 8.51713728e+08, 8.65908992e+08, 8.80104192e+08, 8.94299456e+08, 9.08494656e+08, 9.2268992e+08, 9.3688512e+08, 9.51080384e+08, 9.652755840000001e+08, 9.794707839999999e+08, 9.93666048e+08, 1.007861248e+09, 1.022056512e+09, 1.036251712e+09, 1.050446976e+09, 1.064642176e+09, 1.078837376e+09, 1.093032704e+09, 1.107227904e+09, 1.121423104e+09, 1.135618304e+09, 1.149813504e+09, 1.164008832e+09, 1.178204032e+09, 1.192399232e+09, 1.206594432e+09, 1.22078976e+09, 1.23498496e+09, 1.24918016e+09, 1.26337536e+09, 1.277570688e+09, 1.291765888e+09, 1.305961088e+09, 1.320156288e+09, 1.334351488e+09, 1.348546816e+09, 1.362742016e+09, 1.376937216e+09, 1.391132416e+09, 1.405327744e+09, 1.419522944e+09] EPumDis.y=[0e+00, 1.7666552e+08, 3.5333104e+08, 5.29996544e+08, 7.0666208e+08, 8.83327552e+08, 1.059993088e+09, 1.23665856e+09, 1.41332416e+09, 1.589989632e+09, 1.766655104e+09, 1.943320704e+09, 2.119986176e+09, 2.296651776e+09, 2.47331712e+09, 2.64998272e+09, 2.82664832e+09, 3.003313664e+09, 3.179979264e+09, 3.356644864e+09, 3.533310208e+09, 3.709975808e+09, 3.886641408e+09, 4.063306752e+09, 4.239972352e+09, 4.416637952e+09, 4.593303552e+09, 4.769969152e+09, 4.946634240000001e+09, 5.12329984e+09, 5.29996544e+09, 5.47663104e+09, 5.65329664e+09, 5.82996224e+09, 6.006627328000001e+09, 6.183292928e+09, 6.359958528e+09, 6.536624128e+09, 6.713289728e+09, 6.889955328e+09, 7.066620416e+09, 7.243286015999999e+09, 7.419951616e+09, 7.596617216e+09, 7.773282816e+09, 7.949948416e+09, 8.126613504e+09, 8.303279104e+09, 8.479944704e+09, 8.656610304e+09, 8.833275904e+09, 9.009941504e+09, 9.186607104e+09, 9.363272704e+09, 9.539938304e+09, 9.71660288e+09, 9.893268480000002e+09, 1.006993408e+10, 1.024659968e+10, 1.042326528e+10, 1.059993088e+10, 1.077659648e+10, 1.095326208e+10, 1.112992768e+10, 1.130659328e+10, 1.148325888e+10, 1.165992448e+10, 1.1836589056e+10, 1.2013254656e+10, 1.2189920256e+10, 1.2366585856e+10, 1.2543251456e+10, 1.2719917056e+10, 1.2896582656e+10, 1.3073248256e+10, 1.3249913856e+10, 1.3426579456e+10, 1.3603245056e+10, 1.3779910656e+10, 1.3956576256e+10, 1.4133240832e+10, 1.4309906432e+10, 1.4486572032e+10, 1.4663237632e+10, 1.4839903232e+10, 1.5016568832e+10, 1.5193234432e+10, 1.5369900032e+10, 1.5546565632e+10, 1.5723231232e+10, 1.5899896832e+10, 1.6076562432e+10, 1.6253227008e+10, 1.6429892608e+10, 1.6606558208e+10, 1.6783223808e+10, 1.6959889408e+10, 1.7136555008e+10, 1.7313220608e+10, 1.7489885184e+10, 1.7666551808e+10] EPumSto.y=[0e+00, 3.3744048e+07, 6.7488096e+07, 1.01232144e+08, 1.34976192e+08, 1.6872024e+08, 2.02464288e+08, 2.36208336e+08, 2.69952384e+08, 3.03696448e+08, 3.3744048e+08, 3.71184544e+08, 4.04928576e+08, 4.3867264e+08, 4.724166720000001e+08, 5.06160736e+08, 5.39904768e+08, 5.736488320000001e+08, 6.07392896e+08, 6.41136896e+08, 6.7488096e+08, 7.08625024e+08, 7.42369088e+08, 7.76113088e+08, 8.09857152e+08, 8.43601216e+08, 8.7734528e+08, 9.1108928e+08, 9.448333440000001e+08, 9.78577408e+08, 1.012321472e+09, 1.046065472e+09, 1.079809536e+09, 1.113553536e+09, 1.147297664e+09, 1.181041664e+09, 1.214785792e+09, 1.248529792e+09, 1.282273792e+09, 1.31601792e+09, 1.34976192e+09, 1.38350592e+09, 1.417250048e+09, 1.450994048e+09, 1.484738176e+09, 1.518482176e+09, 1.552226176e+09, 1.585970304e+09, 1.619714304e+09, 1.653458304e+09, 1.687202432e+09, 1.720946432e+09, 1.75469056e+09, 1.78843456e+09, 1.82217856e+09, 1.855922688e+09, 1.889666688e+09, 1.923410688e+09, 1.957154816e+09, 1.990898816e+09, 2.024642944e+09, 2.058386944e+09, 2.092130944e+09, 2.125875072e+09, 2.159619072e+09, 2.1933632e+09, 2.227107072e+09, 2.2608512e+09, 2.294595328e+09, 2.328339456e+09, 2.362083328e+09, 2.395827456e+09, 2.429571584e+09, 2.463315456e+09, 2.497059584e+09, 2.530803712e+09, 2.564547584e+09, 2.598291712e+09, 2.63203584e+09, 2.665779712e+09, 2.69952384e+09, 2.733267968e+09, 2.76701184e+09, 2.800755968e+09, 2.834500096e+09, 2.868244224e+09, 2.901988096e+09, 2.935732224e+09, 2.969476352e+09, 3.003220224e+09, 3.036964352e+09, 3.07070848e+09, 3.104452352e+09, 3.13819648e+09, 3.171940608e+09, 3.20568448e+09, 3.239428608e+09, 3.273172736e+09, 3.306916608e+09, 3.340660736e+09, 3.374404864e+09] @@ -36,35 +36,35 @@ bui[3].ets.proHeaWat.heaPum.m2_flow_nominal=[2.721976661682129e+01, 2.7219766616 bui[1].ets.proHotWat.heaPum.m2_flow_nominal=[1.182039231061935e-01, 1.182039231061935e-01] bui[2].ets.proHotWat.heaPum.m2_flow_nominal=[3.171242475509644e+00, 3.171242475509644e+00] bui[3].ets.proHotWat.heaPum.m2_flow_nominal=[1.465728640556335e+00, 1.465728640556335e+00] -bui[1].ets.proHeaWat.heaPum.COP=[8.832118034362793e+00, 8.76674747467041e+00, 7.040595054626465e+00, 7.464546680450439e+00, 7.000575542449951e+00, 6.547202587127686e+00, 6.448561191558838e+00, 7.312077522277833e+00, 7.10061502456665e+00, 6.812836170196533e+00, 7.595059394836426e+00, 9.781041145324707e+00, 9.781057357788086e+00, 9.780757904052734e+00, 9.755895614624023e+00, 9.595998764038086e+00, 8.971930503845215e+00, 8.661943435668945e+00, 7.382121562957764e+00, 6.180070400238037e+00, 5.964054107666016e+00, 6.585165977478027e+00, 7.373138904571533e+00, 6.713627338409424e+00, 7.017662048339844e+00, 9.678966522216797e+00, 9.679255485534668e+00, 9.679429054260254e+00, 9.632809638977051e+00, 9.508039474487305e+00, 9.180935859680176e+00, 8.860329627990723e+00, 8.184884071350098e+00, 6.298337936401367e+00, 6.118203163146974e+00, 7.082377910614014e+00, 9.197408676147461e+00, 9.243408203125e+00, 8.469350814819336e+00, 9.439813613891602e+00, 9.663834571838379e+00, 9.664435386657715e+00, 9.664928436279297e+00, 9.665168762207031e+00, 9.66368579864502e+00, 9.552104949951172e+00, 8.938042640686035e+00, 6.341039657592773e+00, 5.933581352233887e+00, 6.079968452453613e+00, 7.419887065887451e+00, 6.782447814941406e+00, 6.49927282333374e+00, 7.626735210418701e+00, 9.593839645385742e+00, 9.59377384185791e+00, 9.570229530334473e+00, 9.424419403076174e+00, 8.997143745422363e+00, 8.647753715515137e+00, 8.352483749389648e+00, 6.546666622161865e+00, 5.946849346160889e+00, 5.58008861541748e+00, 6.117436408996582e+00, 6.104595184326172e+00, 5.808216571807861e+00, 6.313800811767578e+00, 8.838784217834482e+00, 8.75679588317872e+00, 8.344904899597168e+00, 7.955085754394531e+00, 7.776832580566406e+00, 7.585167407989502e+00, 7.460202693939209e+00, 6.924164772033691e+00, 6.876448631286621e+00, 6.913320064544678e+00, 6.91071605682373e+00, 6.863385200500488e+00, 6.803446292877197e+00, 6.736451148986816e+00, 6.772709846496581e+00, 7.187574863433838e+00, 7.038544654846191e+00, 6.936095237731934e+00, 6.880379676818848e+00, 6.833362102508545e+00, 6.77839183807373e+00, 6.499405384063721e+00, 6.367313861846924e+00, 6.387119770050049e+00, 6.411219120025635e+00, 6.45396900177002e+00, 6.461417675018311e+00, 6.435062885284424e+00, 6.402061939239502e+00, 6.918465614318848e+00, 6.761410713195801e+00, 6.669435024261475e+00, 6.603628635406494e+00] -bui[1].ets.proHotWat.heaPum.COP=[3.456180810928345e+00, 3.445426225662231e+00, 3.050774097442627e+00, 2.962384700775146e+00, 2.817957639694214e+00, 2.584792375564575e+00, 2.547687768936157e+00, 2.637871742248535e+00, 2.574909210205078e+00, 2.577672243118286e+00, 2.668136835098267e+00, 2.929457426071167e+00, 2.929458856582642e+00, 2.929430961608887e+00, 2.92809271812439e+00, 2.925336122512817e+00, 2.926040887832642e+00, 2.927326917648315e+00, 2.908646583557129e+00, 2.610657691955566e+00, 2.536600828170776e+00, 2.585804224014282e+00, 2.600783348083496e+00, 2.550495862960815e+00, 2.618217468261719e+00, 2.919895648956299e+00, 2.919922828674316e+00, 2.919939279556274e+00, 2.919425010681152e+00, 2.918431520462036e+00, 2.919405937194824e+00, 2.921180009841919e+00, 2.922457456588745e+00, 2.643633127212524e+00, 2.533949613571167e+00, 2.554775714874268e+00, 2.619666337966919e+00, 2.531534671783447e+00, 2.589223146438599e+00, 2.850780487060547e+00, 2.918418169021606e+00, 2.918474912643433e+00, 2.918521404266357e+00, 2.918544054031372e+00, 2.919309139251709e+00, 2.92164158821106e+00, 2.92318320274353e+00, 2.732053756713867e+00, 2.548689603805542e+00, 2.536794185638428e+00, 2.630861759185791e+00, 2.541706800460815e+00, 2.571035623550415e+00, 2.721861600875854e+00, 2.911841630935669e+00, 2.911835432052612e+00, 2.910416126251221e+00, 2.907609939575195e+00, 2.907161951065063e+00, 2.908658742904663e+00, 2.910059690475464e+00, 2.844256162643433e+00, 2.579586982727051e+00, 2.523704051971436e+00, 2.594544649124146e+00, 2.573625564575195e+00, 2.547605991363525e+00, 2.622440338134766e+00, 2.900295495986938e+00, 2.900079965591431e+00, 2.898383378982544e+00, 2.896445512771606e+00, 2.89579176902771e+00, 2.897369146347046e+00, 2.899268388748169e+00, 2.900594234466553e+00, 2.901859045028687e+00, 2.900282382965088e+00, 2.89708399772644e+00, 2.895824670791626e+00, 2.895736217498779e+00, 2.893609762191772e+00, 2.89285683631897e+00, 2.893466472625732e+00, 2.892119169235229e+00, 2.890091180801392e+00, 2.888365268707275e+00, 2.889407157897949e+00, 2.891375780105591e+00, 2.892910003662109e+00, 2.894262075424194e+00, 2.893952369689941e+00, 2.890814781188965e+00, 2.889394044876099e+00, 2.889658689498901e+00, 2.887962818145752e+00, 2.886960744857788e+00, 2.888486862182617e+00, 2.888485431671143e+00, 2.887161493301392e+00, 2.885389566421509e+00] -bui[2].ets.proHeaWat.heaPum.COP=[8.832118034362793e+00, 8.352932929992676e+00, 7.931460857391357e+00, 7.745893955230713e+00, 6.030369281768799e+00, 7.729483127593994e+00, 7.7616286277771e+00, 6.229340553283691e+00, 7.149023532867432e+00, 8.357994079589844e+00, 6.162909507751465e+00, 6.397039890289307e+00, 6.333166599273682e+00, 8.284637451171875e+00, 7.769601345062255e+00, 7.42664098739624e+00, 7.159437656402588e+00, 6.98619556427002e+00, 5.758172035217285e+00, 7.079738140106201e+00, 7.035810947418213e+00, 6.981324672698975e+00, 6.283962726593018e+00, 8.415785789489746e+00, 7.082262516021729e+00, 6.191007137298584e+00, 6.282510757446289e+00, 6.543202877044678e+00, 7.658510684967039e+00, 7.348577499389648e+00, 7.102583408355713e+00, 6.937386989593506e+00, 5.742112159729004e+00, 6.203950881958008e+00, 7.020952224731448e+00, 7.816408157348633e+00, 6.281557083129883e+00, 9.405544281005859e+00, 8.666437149047852e+00, 6.301247119903564e+00, 6.534596920013428e+00, 6.353021144866943e+00, 8.436670303344727e+00, 7.756557941436768e+00, 7.327233791351318e+00, 7.027620792388916e+00, 6.413167953491211e+00, 5.735677242279053e+00, 6.676135063171387e+00, 6.666428565979004e+00, 5.673625946044922e+00, 6.835153579711914e+00, 6.827003955841064e+00, 5.623367786407471e+00, 5.859909534454346e+00, 5.758384227752686e+00, 7.073206424713124e+00, 6.480620384216309e+00, 6.387866973876953e+00, 6.373198509216309e+00, 6.349366188049316e+00, 5.390682697296143e+00, 6.408416748046875e+00, 6.260519027709961e+00, 5.657243728637695e+00, 5.603066444396973e+00, 6.318450927734375e+00, 5.590405464172363e+00, 5.443761348724369e+00, 5.51183032989502e+00, 6.161799430847168e+00, 6.229061126708984e+00, 6.222014427185059e+00, 6.156234264373779e+00, 6.109560489654541e+00, 5.121250152587891e+00, 5.990953922271729e+00, 6.07214879989624e+00, 6.076642513275146e+00, 5.24122142791748e+00, 6.253526210784912e+00, 6.07652473449705e+00, 5.224894523620604e+00, 5.376286029815674e+00, 5.351830959320068e+00, 6.125544548034668e+00, 6.069769382476807e+00, 6.019536972045898e+00, 5.979677677154541e+00, 5.372053146362305e+00, 5.242528438568115e+00, 5.973432540893555e+00, 5.946326732635498e+00, 5.058616161346436e+00, 6.381335735321045e+00, 6.206512451171875e+00, 5.246174812316895e+00, 5.473048686981201e+00, 5.3895583152771e+00, 6.328520774841309e+00, 6.135730743408203e+00] -bui[2].ets.proHotWat.heaPum.COP=[3.456180810928345e+00, 2.968277931213379e+00, 2.950411558151245e+00, 2.949023962020874e+00, 2.640910387039185e+00, 2.939437627792358e+00, 2.930541276931763e+00, 2.589545488357544e+00, 2.74204158782959e+00, 2.924612283706665e+00, 2.651893138885498e+00, 2.570192575454712e+00, 2.569429874420166e+00, 2.853349685668945e+00, 2.925382375717163e+00, 2.924292802810669e+00, 2.925378799438477e+00, 2.925823211669922e+00, 2.862005710601807e+00, 2.911052227020264e+00, 2.912285566329956e+00, 2.754588842391968e+00, 2.625022888183594e+00, 2.913526773452759e+00, 2.837908267974854e+00, 2.560801982879639e+00, 2.565606594085693e+00, 2.580998182296753e+00, 2.918151140213013e+00, 2.917847394943237e+00, 2.918977499008179e+00, 2.920152187347412e+00, 2.614006042480469e+00, 2.716600179672241e+00, 2.910914182662964e+00, 2.909110546112061e+00, 2.581522464752197e+00, 2.915068387985229e+00, 2.915451526641846e+00, 2.584925651550293e+00, 2.56493067741394e+00, 2.534525156021119e+00, 2.920844078063965e+00, 2.919641256332397e+00, 2.919729948043823e+00, 2.921515226364136e+00, 2.80191969871521e+00, 2.631318330764771e+00, 2.912691116333008e+00, 2.90609884262085e+00, 2.555862903594971e+00, 2.835928916931152e+00, 2.905810117721558e+00, 2.617418527603149e+00, 2.558154344558716e+00, 2.546513557434082e+00, 2.908202886581421e+00, 2.906789064407349e+00, 2.906659126281738e+00, 2.907533884048462e+00, 2.90815258026123e+00, 2.599112033843994e+00, 2.900686502456665e+00, 2.891861438751221e+00, 2.605886697769165e+00, 2.62809681892395e+00, 2.888807058334351e+00, 2.709462404251099e+00, 2.545483350753784e+00, 2.548300266265869e+00, 2.622494697570801e+00, 2.893709897994995e+00, 2.892358541488647e+00, 2.893586158752441e+00, 2.895000457763672e+00, 2.579383611679077e+00, 2.813444375991821e+00, 2.893312692642212e+00, 2.885958909988403e+00, 2.585094451904297e+00, 2.888998031616211e+00, 2.88101458549499e+00, 2.545360803604127e+00, 2.540024995803833e+00, 2.513464689254761e+00, 2.883826017379761e+00, 2.881797790527344e+00, 2.883014917373657e+00, 2.884846687316895e+00, 2.620365381240845e+00, 2.618896245956421e+00, 2.885109424591064e+00, 2.881875514984131e+00, 2.541725873947144e+00, 2.876278162002563e+00, 2.879711389541626e+00, 2.576918601989746e+00, 2.535281181335449e+00, 2.513287544250488e+00, 2.880046129226685e+00, 2.877944946289062e+00] -bui[3].ets.proHeaWat.heaPum.COP=[8.832118034362793e+00, 9.666862487792969e+00, 8.407212257385254e+00, 7.999817848205566e+00, 5.745312213897705e+00, 5.963682651519775e+00, 6.302765369415283e+00, 6.687531471252441e+00, 6.785740852355957e+00, 6.976062297821045e+00, 6.713521480560303e+00, 7.249570369720459e+00, 7.10476541519165e+00, 8.662630081176758e+00, 8.36098003387451e+00, 7.787084102630615e+00, 7.3623046875e+00, 7.089220523834228e+00, 5.589621543884277e+00, 5.466765880584717e+00, 5.87092113494873e+00, 6.443123340606689e+00, 7.037110805511475e+00, 7.113394737243652e+00, 6.699421882629395e+00, 6.980461597442627e+00, 7.263001441955566e+00, 7.325182437896729e+00, 8.663205146789547e+00, 7.989333629608154e+00, 7.500102043151855e+00, 7.181739330291748e+00, 5.80177116394043e+00, 5.371971130371094e+00, 5.8444356918335e+00, 6.78003454208374e+00, 7.863120555877686e+00, 8.523835182189941e+00, 7.963715076446533e+00, 7.527327060699463e+00, 8.37403392791748e+00, 7.478240966796878e+00, 9.205986976623535e+00, 8.851269721984863e+00, 7.946970462799072e+00, 7.388733386993408e+00, 6.542227268218994e+00, 5.307616710662842e+00, 5.473750591278076e+00, 5.5859694480896e+00, 5.68707799911499e+00, 5.693495273590088e+00, 5.82100248336792e+00, 5.648433208465576e+00, 5.970679759979248e+00, 5.895128726959229e+00, 7.164267063140866e+00, 6.709675312042239e+00, 6.417976856231689e+00, 6.338340759277344e+00, 6.243109703063965e+00, 5.083828449249268e+00, 5.193541526794434e+00, 5.20549488067627e+00, 5.31281042098999e+00, 5.219901561737061e+00, 5.407982349395752e+00, 5.389590263366699e+00, 5.564560890197757e+00, 5.663209915161134e+00, 6.064538955688477e+00, 6.166967391967773e+00, 6.12842321395874e+00, 6.043267250061035e+00, 5.983547210693359e+00, 5.039492130279541e+00, 4.985101222991943e+00, 5.116890907287598e+00, 5.259130001068115e+00, 5.145893573760986e+00, 5.363546848297119e+00, 5.351325511932372e+00, 5.255040645599362e+00, 5.489293575286865e+00, 5.434624671936035e+00, 6.006162643432617e+00, 5.94814920425415e+00, 5.886094570159912e+00, 5.845180511474609e+00, 5.330554962158203e+00, 4.901080131530762e+00, 5.183897495269775e+00, 5.216627597808838e+00, 5.059323310852051e+00, 5.523326873779297e+00, 5.629565715789795e+00, 5.328101634979248e+00, 5.569131374359131e+00, 5.489059448242188e+00, 6.268740177154541e+00, 6.008131980895996e+00] -bui[3].ets.proHotWat.heaPum.COP=[3.456180810928345e+00, 3.030876159667969e+00, 2.936005115509033e+00, 2.918151378631592e+00, 2.488980293273926e+00, 2.510942220687866e+00, 2.516079664230347e+00, 2.514577388763428e+00, 2.488616943359375e+00, 2.516695976257324e+00, 2.516294002532959e+00, 2.485352039337158e+00, 2.488009691238403e+00, 2.792933464050293e+00, 2.896329164505005e+00, 2.893927812576294e+00, 2.888891696929932e+00, 2.884199857711792e+00, 2.70121431350708e+00, 2.480401515960693e+00, 2.49419116973877e+00, 2.498394966125488e+00, 2.473738193511963e+00, 2.501344919204712e+00, 2.511149168014526e+00, 2.476231575012207e+00, 2.480807065963745e+00, 2.521692752838135e+00, 2.882105350494385e+00, 2.885973453521729e+00, 2.881844043731689e+00, 2.878208875656128e+00, 2.512202501296997e+00, 2.459237575531006e+00, 2.492915868759155e+00, 2.497941255569458e+00, 2.484442710876465e+00, 2.495879411697388e+00, 2.520755290985107e+00, 2.495754718780518e+00, 2.488467693328857e+00, 2.484140396118164e+00, 2.875467300415039e+00, 2.894996404647827e+00, 2.889655113220215e+00, 2.883393526077271e+00, 2.694224834442139e+00, 2.456067562103271e+00, 2.490221738815308e+00, 2.485932350158691e+00, 2.464843511581421e+00, 2.465757608413696e+00, 2.491504669189453e+00, 2.462376594543457e+00, 2.450438261032104e+00, 2.453380584716797e+00, 2.833194732666016e+00, 2.856411695480347e+00, 2.849978446960449e+00, 2.847720146179199e+00, 2.846999168395996e+00, 2.434305906295776e+00, 2.469571590423584e+00, 2.467026472091675e+00, 2.460221529006958e+00, 2.426655054092407e+00, 2.470346212387085e+00, 2.458034515380859e+00, 2.423858165740967e+00, 2.4333176612854e+00, 2.53438663482666e+00, 2.830672979354858e+00, 2.828712224960327e+00, 2.826857089996338e+00, 2.824531078338623e+00, 2.428230762481689e+00, 2.433458566665649e+00, 2.461541175842285e+00, 2.459890604019165e+00, 2.412613868713379e+00, 2.463998794555664e+00, 2.460159540176392e+00, 2.411728143692017e+00, 2.420107841491699e+00, 2.421641111373901e+00, 2.814183473587036e+00, 2.813428163528442e+00, 2.811276197433472e+00, 2.8093581199646e+00, 2.517412662506104e+00, 2.406463146209717e+00, 2.454671621322632e+00, 2.449988126754761e+00, 2.40502667427063e+00, 2.440987110137939e+00, 2.460736274719238e+00, 2.41791296005249e+00, 2.418332815170288e+00, 2.41908860206604e+00, 2.805348873138428e+00, 2.815335988998413e+00] -TDisWatSup.T=[2.931499938964844e+02, 2.852945861816406e+02, 2.856815795898438e+02, 2.857510681152344e+02, 2.857267456054688e+02, 2.856718139648438e+02, 2.855671691894531e+02, 2.855025329589844e+02, 2.854809875488281e+02, 2.854429626464844e+02, 2.854137878417969e+02, 2.854244384765625e+02, 2.854071960449219e+02, 2.853782653808594e+02, 2.853413696289062e+02, 2.8534423828125e+02, 2.853720703125e+02, 2.853915710449219e+02, 2.853984069824219e+02, 2.854017333984375e+02, 2.853314819335938e+02, 2.852769775390625e+02, 2.852627868652344e+02, 2.852532958984375e+02, 2.852403564453125e+02, 2.852674865722656e+02, 2.852770385742188e+02, 2.852573852539062e+02, 2.852309265136719e+02, 2.852272033691406e+02, 2.852603149414062e+02, 2.85290283203125e+02, 2.853053588867188e+02, 2.853229370117188e+02, 2.852682189941406e+02, 2.852067565917969e+02, 2.851899719238281e+02, 2.852041015625e+02, 2.852021789550781e+02, 2.852345886230469e+02, 2.852779235839844e+02, 2.852750244140625e+02, 2.852602844238281e+02, 2.852430725097656e+02, 2.852681579589844e+02, 2.853015747070312e+02, 2.853194580078125e+02, 2.853342895507812e+02, 2.852999877929688e+02, 2.852250366210938e+02, 2.851845092773438e+02, 2.851712951660156e+02, 2.851232604980469e+02, 2.851054077148438e+02, 2.851183166503906e+02, 2.850870971679688e+02, 2.850547180175781e+02, 2.850188903808594e+02, 2.850391540527344e+02, 2.850718078613281e+02, 2.850904846191406e+02, 2.851051330566406e+02, 2.85102294921875e+02, 2.850287780761719e+02, 2.849909973144531e+02, 2.849830932617188e+02, 2.849387512207031e+02, 2.849022827148438e+02, 2.849138488769531e+02, 2.848914489746094e+02, 2.848577880859375e+02, 2.848209533691406e+02, 2.848373718261719e+02, 2.848760681152344e+02, 2.849063415527344e+02, 2.849239501953125e+02, 2.849418029785156e+02, 2.848733825683594e+02, 2.848297729492188e+02, 2.848292236328125e+02, 2.848153076171875e+02, 2.847711181640625e+02, 2.847835388183594e+02, 2.847831726074219e+02, 2.847451782226562e+02, 2.847025756835938e+02, 2.846958312988281e+02, 2.847337341308594e+02, 2.847684326171875e+02, 2.847888793945312e+02, 2.848150024414062e+02, 2.847699279785156e+02, 2.847167053222656e+02, 2.847120361328125e+02, 2.847170715332031e+02, 2.846675109863281e+02, 2.8467822265625e+02, 2.847114562988281e+02, 2.846882019042969e+02, 2.846586608886719e+02, 2.846360778808594e+02] -TDisWatRet.T=[2.931499938964844e+02, 2.8595166015625e+02, 2.853379211425781e+02, 2.851414794921875e+02, 2.834973754882812e+02, 2.842228088378906e+02, 2.843896789550781e+02, 2.842533874511719e+02, 2.839751586914062e+02, 2.846266479492188e+02, 2.842833251953125e+02, 2.838039855957031e+02, 2.838408813476562e+02, 2.842601318359375e+02, 2.847837219238281e+02, 2.846384582519531e+02, 2.844966125488281e+02, 2.843782958984375e+02, 2.830713500976562e+02, 2.833893737792969e+02, 2.837337036132812e+02, 2.840534973144531e+02, 2.835159301757812e+02, 2.843897705078125e+02, 2.843610229492188e+02, 2.834487609863281e+02, 2.83717529296875e+02, 2.836341552734375e+02, 2.846417846679688e+02, 2.845315551757812e+02, 2.844002990722656e+02, 2.842959289550781e+02, 2.834055480957031e+02, 2.827950439453125e+02, 2.837015380859375e+02, 2.8408544921875e+02, 2.836649475097656e+02, 2.844537048339844e+02, 2.8480908203125e+02, 2.838344116210938e+02, 2.840350952148438e+02, 2.837999267578125e+02, 2.846925964355469e+02, 2.847799682617188e+02, 2.845803527832031e+02, 2.8441064453125e+02, 2.842685241699219e+02, 2.826054382324219e+02, 2.834759521484375e+02, 2.834297485351562e+02, 2.827201538085938e+02, 2.832548522949219e+02, 2.836388244628906e+02, 2.826444091796875e+02, 2.828368225097656e+02, 2.827662963867188e+02, 2.837658996582031e+02, 2.838477172851562e+02, 2.836802062988281e+02, 2.836430969238281e+02, 2.8361279296875e+02, 2.819618225097656e+02, 2.829362182617188e+02, 2.828160095214844e+02, 2.825915832519531e+02, 2.819405517578125e+02, 2.829676208496094e+02, 2.825419921875e+02, 2.819969787597656e+02, 2.822255249023438e+02, 2.827288513183594e+02, 2.8329833984375e+02, 2.832662353515625e+02, 2.831910400390625e+02, 2.831319885253906e+02, 2.816205139160156e+02, 2.820285034179688e+02, 2.826028747558594e+02, 2.826480712890625e+02, 2.815154113769531e+02, 2.828281860351562e+02, 2.82692626953125e+02, 2.815237121582031e+02, 2.8185400390625e+02, 2.816968688964844e+02, 2.830579223632812e+02, 2.829237670898438e+02, 2.8286669921875e+02, 2.82822021484375e+02, 2.823018493652344e+02, 2.812353515625e+02, 2.824648132324219e+02, 2.823963928222656e+02, 2.811759338378906e+02, 2.826371154785156e+02, 2.828327331542969e+02, 2.815883483886719e+02, 2.818941345214844e+02, 2.817969665527344e+02, 2.831976928710938e+02, 2.829739685058594e+02] -TDisWatBorLvg.T=[2.931499938964844e+02, 2.847266235351562e+02, 2.851277160644531e+02, 2.8519189453125e+02, 2.851634216308594e+02, 2.850949096679688e+02, 2.849781799316406e+02, 2.849088439941406e+02, 2.848865966796875e+02, 2.848414306640625e+02, 2.848116455078125e+02, 2.848249206542969e+02, 2.848023376464844e+02, 2.847698364257812e+02, 2.847286376953125e+02, 2.8473583984375e+02, 2.847673034667969e+02, 2.847881469726562e+02, 2.847959594726562e+02, 2.847958984375e+02, 2.847136535644531e+02, 2.846553039550781e+02, 2.846426391601562e+02, 2.846294250488281e+02, 2.846174926757812e+02, 2.846504211425781e+02, 2.8465673828125e+02, 2.846346130371094e+02, 2.846038513183594e+02, 2.846037902832031e+02, 2.846421203613281e+02, 2.846748352050781e+02, 2.846908264160156e+02, 2.847093811035156e+02, 2.84641845703125e+02, 2.845758972167969e+02, 2.845609130859375e+02, 2.845760498046875e+02, 2.845745849609375e+02, 2.846146850585938e+02, 2.846600952148438e+02, 2.846552124023438e+02, 2.84636962890625e+02, 2.846205139160156e+02, 2.846509704589844e+02, 2.846879272460938e+02, 2.847066650390625e+02, 2.847238464355469e+02, 2.84677490234375e+02, 2.8459521484375e+02, 2.845519409179688e+02, 2.845367126464844e+02, 2.844814758300781e+02, 2.8446533203125e+02, 2.844784545898438e+02, 2.844412536621094e+02, 2.844043579101562e+02, 2.843667297363281e+02, 2.843928527832031e+02, 2.844289245605469e+02, 2.844488525390625e+02, 2.844668884277344e+02, 2.844564819335938e+02, 2.843739013671875e+02, 2.843338623046875e+02, 2.84325927734375e+02, 2.842718200683594e+02, 2.84235107421875e+02, 2.84249267578125e+02, 2.842204895019531e+02, 2.841834411621094e+02, 2.841428833007812e+02, 2.841655578613281e+02, 2.842091369628906e+02, 2.842421875e+02, 2.842619934082031e+02, 2.842784423828125e+02, 2.84197509765625e+02, 2.841525573730469e+02, 2.841549682617188e+02, 2.841332702636719e+02, 2.840869750976562e+02, 2.841044921875e+02, 2.840988464355469e+02, 2.840559997558594e+02, 2.840068054199219e+02, 2.840054321289062e+02, 2.840490417480469e+02, 2.840871276855469e+02, 2.841091613769531e+02, 2.841380004882812e+02, 2.840802001953125e+02, 2.840249328613281e+02, 2.840228576660156e+02, 2.84024169921875e+02, 2.839693298339844e+02, 2.839868774414062e+02, 2.840205078125e+02, 2.839923095703125e+02, 2.839576110839844e+02, 2.839373168945312e+02] -pla.dH_flow=[-1.34378578125e+05, 2.4399815625e+05, 2.25257640625e+05, 2.22073609375e+05, 2.23327734375e+05, 2.2624853125e+05, 2.3150684375e+05, 2.34690875e+05, 2.35730234375e+05, 2.37703546875e+05, 2.39108125e+05, 2.38537984375e+05, 2.394813125e+05, 2.4093884375e+05, 2.4279521875e+05, 2.425603125e+05, 2.41152e+05, 2.40192453125e+05, 2.3984690625e+05, 2.39759578125e+05, 2.43380515625e+05, 2.46062109375e+05, 2.4670321875e+05, 2.4723828125e+05, 2.4783328125e+05, 2.464085625e+05, 2.4602678125e+05, 2.47019e+05, 2.48377046875e+05, 2.48471984375e+05, 2.46776390625e+05, 2.45286953125e+05, 2.44549671875e+05, 2.4368665625e+05, 2.4658415625e+05, 2.4961321875e+05, 2.50373140625e+05, 2.4967440625e+05, 2.4975775e+05, 2.48041046875e+05, 2.459274375e+05, 2.46112625e+05, 2.46892484375e+05, 2.47696875e+05, 2.4638071875e+05, 2.44708265625e+05, 2.43837515625e+05, 2.43076640625e+05, 2.4498253125e+05, 2.48719375e+05, 2.5071178125e+05, 2.51383078125e+05, 2.53835671875e+05, 2.5464828125e+05, 2.540249375e+05, 2.55648640625e+05, 2.57290234375e+05, 2.59041125e+05, 2.5794115625e+05, 2.56308953125e+05, 2.5539146875e+05, 2.54619046875e+05, 2.54919640625e+05, 2.5863065625e+05, 2.60479921875e+05, 2.60853546875e+05, 2.6318821875e+05, 2.6493103125e+05, 2.64317875e+05, 2.655305e+05, 2.6720996875e+05, 2.6905075e+05, 2.6812615625e+05, 2.6617240625e+05, 2.646675625e+05, 2.63782375e+05, 2.6295828125e+05, 2.665031875e+05, 2.6861009375e+05, 2.685675e+05, 2.694045e+05, 2.7156e+05, 2.708505e+05, 2.7098746875e+05, 2.7290640625e+05, 2.750856875e+05, 2.7528496875e+05, 2.73350625e+05, 2.7162115625e+05, 2.706124375e+05, 2.6930465625e+05, 2.7174121875e+05, 2.743223125e+05, 2.7448640625e+05, 2.743255625e+05, 2.7681034375e+05, 2.7614521875e+05, 2.74549625e+05, 2.757713125e+05, 2.772921875e+05, 2.7832090625e+05] -borFie.Q_flow=[0e+00, 7.044341875e+05, 3.8555971875e+05, 2.18003171875e+05, -6.46861171875e+04, -2.15784890625e+05, -1.903005625e+05, -1.657235625000001e+05, -2.7921746875e+05, -1.943405625e+05, -1.4155028125e+05, -2.7510596875e+05, -2.8770921875e+05, -3.030176875e+05, -1.461336249999999e+05, -9.9091109375e+04, -1.0175490625e+05, -1.240317109375001e+05, -2.38970875e+05, -4.446658125e+05, -3.955198125e+05, -3.3242e+05, -3.766905625e+05, -2.9136415625e+05, -1.9594865625e+05, -3.0357090625e+05, -3.27812e+05, -3.591194375e+05, -2.207396874999992e+05, -1.35268890625e+05, -1.22996296875e+05, -1.37685984375e+05, -1.7634740625e+05, -4.67205875e+05, -4.141927812499997e+05, -3.303184375e+05, -2.9101246875e+05, -2.5273571875e+05, -1.072491875e+05, -1.31735765625e+05, -2.0907371875e+05, -2.428157968749998e+05, -1.87727671875e+05, -7.56395078125e+04, -5.7394890625e+04, -8.13355e+04, -1.16305875e+05, -3.7859046875e+05, -4.3598096875e+05, -4.2391096875e+05, -4.380753125e+05, -5.4417925e+05, -4.243410625e+05, -4.36725375e+05, -5.613926875e+05, -5.694601875e+05, -5.267736249999977e+05, -3.657239687500007e+05, -3.3107865625e+05, -3.3050390625e+05, -3.3281928125e+05, -5.19136625e+05, -6.375409375e+05, -5.89839625e+05, -5.82888875e+05, -7.50257e+05, -6.4193e+05, -5.904501875e+05, -7.427511875000003e+05, -7.387461875000001e+05, -7.41390125e+05, -5.25806375e+05, -4.6930953125e+05, -4.45496125e+05, -4.4870396875e+05, -5.37279625e+05, -7.850300625e+05, -6.74604375e+05, -6.378171875e+05, -7.72907e+05, -7.250160625e+05, -6.326513124999995e+05, -7.668046249999983e+05, -8.166379375e+05, -8.40645375e+05, -6.4923275e+05, -5.59533125e+05, -5.306185e+05, -5.269006875e+05, -5.333348125e+05, -8.181768125e+05, -7.37032375e+05, -6.865188125e+05, -7.663094375e+05, -8.05805625e+05, -6.210684375e+05, -6.731166875e+05, -7.766804375e+05, -7.927518125e+05, -6.785003125e+05, -5.478143125e+05] -bui[1].ets.PHea=[0e+00, 0e+00, 0e+00, 0e+00, 9.0123701171875e+03, 1.3294740234375e+04, 1.4545767578125e+04, 7.258874023437497e+03, 8.8623076171875e+03, 1.03382197265625e+04, 5.7400791015625e+03, 0e+00, 0e+00, 0e+00, 1.437733459472662e+01, 1.609463195800781e+02, 1.380778564453125e+03, 2.060590820312502e+03, 6.2963583984375e+03, 1.7276076171875e+04, 2.13100859375e+04, 1.1388806640625e+04, 6.9282880859375e+03, 1.086126171875e+04, 8.435615234375e+03, 0e+00, 0e+00, 0e+00, 3.99460411071782e+01, 1.975246887207031e+02, 8.369253540039062e+02, 1.52367626953125e+03, 3.244197509765625e+03, 1.4889537109375e+04, 1.848122656249996e+04, 8.543193359375e+03, 1.335480590820312e+03, 2.015841918945312e+03, 3.24748828125e+03, 3.870671081542969e+02, 0e+00, 0e+00, 0e+00, 0e+00, 1.528795433044434e+01, 1.8264013671875e+02, 1.422114501953125e+03, 1.41377958984375e+04, 2.180342578125e+04, 1.8835578125e+04, 6.3506181640625e+03, 1.0484611328125e+04, 1.21008994140625e+04, 5.13039111328125e+03, 0e+00, 0e+00, 1.325312614440962e+01, 1.520077514648414e+02, 9.860206909179688e+02, 1.769104614257812e+03, 2.52267578125e+03, 1.08143994140625e+04, 2.0509892578125e+04, 2.8169474609375e+04, 1.6796607421875e+04, 1.7334943359375e+04, 2.270893359375e+04, 1.33402978515625e+04, 1.138503417968732e+03, 1.365604736328105e+03, 2.3282939453125e+03, 3.434191650390625e+03, 4.01851513671875e+03, 4.76199755859375e+03, 5.30436767578125e+03, 7.94702197265625e+03, 8.209021484375e+03, 7.95745361328125e+03, 7.9008544921875e+03, 8.14154931640625e+03, 8.4883212890625e+03, 8.8358037109375e+03, 8.589450195312507e+03, 6.38860400390625e+03, 7.10121240234375e+03, 7.603947265625e+03, 7.8670048828125e+03, 8.16276318359375e+03, 8.52872265625e+03, 1.04478212890625e+04, 1.18089375e+04, 1.151938671875e+04, 1.10230009765625e+04, 1.05990048828125e+04, 1.05548818359375e+04, 1.07042333984375e+04, 1.09353427734375e+04, 7.61457373046875e+03, 8.56384765625e+03, 9.0986533203125e+03, 9.478869140625e+03] -bui[2].ets.PHea=[0e+00, 2.30289453125e+04, 2.9297412109375e+04, 3.38355625e+04, 1.4487840625e+05, 3.240940625e+04, 3.0576982421875e+04, 1.265566562500001e+05, 5.156863671875e+04, 1.7830369140625e+04, 1.17923421875e+05, 1.135355859375e+05, 1.207737890625e+05, 2.15340078125e+04, 2.980906054687502e+04, 3.834051171875e+04, 4.646114453125e+04, 5.225839843750001e+04, 1.5536646875e+05, 4.695566796875e+04, 4.837405859375e+04, 5.554373828125e+04, 1.04619421875e+05, 1.53227412109375e+04, 4.930505078125e+04, 1.286422265625e+05, 1.223061953125e+05, 9.50731484375e+04, 3.157865039062504e+04, 3.964806640625e+04, 4.737420703125e+04, 5.316573046875e+04, 1.75747875e+05, 1.037854140625e+05, 4.880629687499989e+04, 2.65014921875e+04, 1.133532734375e+05, 1.782354614257812e+03, 1.1817060546875e+04, 1.13073296875e+05, 9.97180078125e+04, 1.231759218749999e+05, 1.57872783203125e+04, 2.9359326171875e+04, 4.053923046875e+04, 5.026036328125e+04, 8.599753125e+04, 1.68678109375e+05, 6.221325e+04, 6.1297796875e+04, 1.88412296875e+05, 5.56396171875e+04, 5.509896484375e+04, 1.78999015625e+05, 1.6393278125e+05, 1.80109515625e+05, 4.60791835937504e+04, 7.030823437499993e+04, 7.8208296875e+04, 7.9797640625e+04, 8.21508515625e+04, 2.20380796875e+05, 7.43000625e+04, 8.4556734375e+04, 1.73259625e+05, 1.7045303125e+05, 7.81825390625e+04, 1.73009171875e+05, 2.157805781249995e+05, 2.074514687499999e+05, 1.06311453125e+05, 8.8228390625e+04, 8.841328125e+04, 9.5394546875e+04, 1.00663671875e+05, 2.6891965625e+05, 1.134421015625e+05, 1.039216953125e+05, 1.024421015625e+05, 2.3812875e+05, 8.428309375e+04, 1.014047734375029e+05, 2.48693921875e+05, 2.24862625e+05, 2.32776375e+05, 9.510575e+04, 9.99308828125e+04, 1.0581796875e+05, 1.10875421875e+05, 2.128348125e+05, 2.2577296875e+05, 1.118320859375e+05, 1.1350321875e+05, 2.7952334375e+05, 6.9994203125e+04, 8.533821875e+04, 2.3338675e+05, 2.06035984375e+05, 2.25613890625e+05, 7.41041875e+04, 9.17060703125e+04] -bui[3].ets.PHea=[0e+00, 4.11923388671875e+03, 6.63724169921875e+03, 8.92133984375e+03, 6.4058140625e+04, 5.870479296875e+04, 4.716819921875e+04, 3.832661718749999e+04, 3.529450390625e+04, 3.477305078125e+04, 3.812138671875e+04, 2.9295712890625e+04, 3.1089353515625e+04, 3.088461669921875e+03, 5.244229980468759e+03, 9.1700830078125e+03, 1.27615322265625e+04, 1.546493457031251e+04, 5.42441953125e+04, 7.6627125e+04, 5.95250078125e+04, 4.09354921875e+04, 3.1039015625e+04, 3.2154833984375e+04, 3.807360546875e+04, 3.1659369140625e+04, 2.8902193359375e+04, 2.268253125e+04, 2.831420898437526e+03, 7.24746728515625e+03, 1.107349609375e+04, 1.41056572265625e+04, 5.9624953125e+04, 7.75540078125e+04, 6.041247265624987e+04, 3.58596015625e+04, 2.3934830078125e+04, 2.043926953125e+04, 2.540875390625e+04, 2.730310546875e+04, 2.0566341796875e+04, 2.705315039062498e+04, 5.119800186157227e+01, 2.417337890625e+03, 7.74541943359375e+03, 1.2222630859375e+04, 2.5999236328125e+04, 8.07835703125e+04, 7.84893046875e+04, 7.14678046875e+04, 6.203148828125e+04, 6.231843359375e+04, 6.127965625e+04, 6.333972265625e+04, 4.68809375e+04, 5.049421875e+04, 1.173610156250007e+04, 1.881136718749996e+04, 2.2861904296875e+04, 2.4055544921875e+04, 2.5719302734375e+04, 9.10393984375e+04, 9.1296875e+04, 8.99754765625e+04, 8.13364140625e+04, 8.00321015625e+04, 7.806884375e+04, 7.63145703125e+04, 5.933286328124985e+04, 5.669086328124996e+04, 3.061401953125e+04, 2.6095912109375e+04, 2.673598828125e+04, 2.9590984375e+04, 3.1539126953125e+04, 9.29857421875e+04, 9.7576890625e+04, 9.42591328125e+04, 8.43395078125e+04, 8.1140546875e+04, 7.88719453125e+04, 7.882733593750003e+04, 7.370958593750023e+04, 6.257826953125e+04, 6.368294140625e+04, 2.9204126953125e+04, 3.1324732421875e+04, 3.3520046875e+04, 3.493001171875e+04, 7.01522421875e+04, 9.76139296875e+04, 8.81856796875e+04, 8.49663203125e+04, 8.514715625e+04, 6.509225390625e+04, 6.38906640625e+04, 7.0963109375e+04, 5.80293046875e+04, 6.235814453125e+04, 2.260976953125e+04, 2.9276298828125e+04] -bui[1].ets.PPum=[3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.728787231445312e+01, 2.092093811035156e+02, 2.74734130859375e+02, 9.714006042480464e+01, 1.058222579956055e+02, 1.364306945800781e+02, 9.143026733398438e+01, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 3.878650512695312e+02, 6.090439453125e+02, 1.805793914794922e+02, 9.467092132568359e+01, 1.413827667236328e+02, 1.097680511474609e+02, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 2.863000183105469e+02, 4.440596618652331e+02, 1.194975891113281e+02, 9.288758087158203e+01, 1.063668823242188e+02, 9.558541107177734e+01, 9.143026733398438e+01, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 2.351678009033203e+02, 5.875748291015625e+02, 4.905909729003906e+02, 9.227451324462891e+01, 1.227775802612305e+02, 1.761298675537109e+02, 9.143026733398438e+01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 1.21243537902832e+02, 5.19663330078125e+02, 1.002508117675781e+03, 4.159072875976562e+02, 3.650818481445312e+02, 6.671394653320312e+02, 2.582721557617188e+02, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.958684539794922e+01, 1.069664993286133e+02, 1.03819580078125e+02, 1.022472763061523e+02, 1.053435440063477e+02, 1.105790710449219e+02, 1.16408576965332e+02, 1.134165039062501e+02, 9.143026733398438e+01, 9.143026733398438e+01, 9.657913970947266e+01, 1.007248153686523e+02, 1.048678741455078e+02, 1.11204231262207e+02, 1.343541412353516e+02, 1.849652709960938e+02, 1.762959594726562e+02, 1.587984466552734e+02, 1.476333160400391e+02, 1.4643359375e+02, 1.485550994873047e+02, 1.541088256835938e+02, 1.012890319824219e+02, 1.110910263061523e+02, 1.196061706542969e+02, 1.258064880371094e+02] -bui[2].ets.PPum=[6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 4.067316162109375e+03, 6.401235961914062e+02, 6.401235961914062e+02, 2.059164062500006e+03, 8.493031005859375e+02, 6.401235961914062e+02, 2.107569580078125e+03, 1.9765576171875e+03, 2.177377197265625e+03, 6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 6.5526708984375e+02, 7.461662597656252e+02, 5.33621875e+03, 8.284879760742188e+02, 7.044580078125e+02, 6.496921997070312e+02, 2.030552734375e+03, 6.401235961914062e+02, 6.401235961914062e+02, 2.60207275390625e+03, 2.211394775390625e+03, 1.57149462890625e+03, 6.401235961914062e+02, 6.401235961914062e+02, 6.655308227539062e+02, 7.555764770507812e+02, 4.80070263671875e+03, 2.841981689453125e+03, 6.989922485351551e+02, 6.401235961914062e+02, 2.026065795898438e+03, 6.401235961914062e+02, 6.401235961914062e+02, 2.006059448242188e+03, 1.33351513671875e+03, 2.141064941406246e+03, 6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 7.066066284179688e+02, 1.233491821289062e+03, 5.57290234375e+03, 8.92854736328125e+02, 8.992904663085938e+02, 5.609109375e+03, 1.036970825195312e+03, 7.745242919921875e+02, 5.7771767578125e+03, 4.56632568359375e+03, 5.28758056640625e+03, 7.096356811523461e+02, 1.067122070312497e+03, 1.357087646484375e+03, 1.4301865234375e+03, 1.523066772460938e+03, 8.7163271484375e+03, 1.275422241210938e+03, 1.586726440429688e+03, 4.49979150390625e+03, 6.26478759765625e+03, 1.289459838867188e+03, 4.92755712890625e+03, 7.897011718749967e+03, 7.155912109374991e+03, 2.728614013671875e+03, 1.733697265625e+03, 1.743640380859375e+03, 2.031393676757812e+03, 2.2882548828125e+03, 1.174275390625e+04, 3.68912353515625e+03, 2.45900048828125e+03, 2.34305810546875e+03, 1.0065173828125e+04, 1.5569072265625e+03, 2.189056396484484e+03, 1.024417968750001e+04, 8.297287109375e+03, 8.9075009765625e+03, 1.933334350585938e+03, 2.208295654296875e+03, 2.4789736328125e+03, 2.75084228515625e+03, 7.1114990234375e+03, 1.022980859375e+04, 2.77181689453125e+03, 2.878487548828125e+03, 1.248976171875e+04, 1.351487182617188e+03, 1.5729716796875e+03, 9.3316943359375e+03, 7.026923828125e+03, 8.03120654296875e+03, 1.161707763671875e+03, 1.819177001953125e+03] -bui[3].ets.PPum=[2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 1.446453857421875e+03, 1.307060668945312e+03, 7.794595336914062e+02, 5.044862060546873e+02, 4.362171630859375e+02, 4.397270812988281e+02, 4.864619750976562e+02, 4.171558227539062e+02, 4.175430603027344e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 1.409900024414062e+03, 2.237783935546875e+03, 1.346221069335938e+03, 5.567463989257812e+02, 4.191458435058594e+02, 4.25181396484375e+02, 4.78508056640625e+02, 4.158246459960938e+02, 4.164928894042969e+02, 3.007606506347656e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 1.098011108398438e+03, 2.19503759765625e+03, 1.394840576171868e+03, 4.723863220214844e+02, 4.199340209960938e+02, 4.250220947265625e+02, 4.264425964355469e+02, 4.190625915527344e+02, 4.176097717285156e+02, 4.169791870117188e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.766411743164062e+02, 2.337805419921875e+03, 2.392246826171875e+03, 1.96722802734375e+03, 1.34898095703125e+03, 1.32635400390625e+03, 1.360800048828125e+03, 1.386274169921875e+03, 6.59494140625e+02, 7.621546630859375e+02, 2.340141906738281e+02, 2.523113861083979e+02, 3.159679870605469e+02, 3.38392822265625e+02, 3.670321655273438e+02, 2.818780517578125e+03, 3.15936669921875e+03, 3.089925537109375e+03, 2.4816884765625e+03, 2.20508642578125e+03, 2.28599755859375e+03, 2.11779345703125e+03, 1.141702026367181e+03, 9.827116088867173e+02, 4.070482177734375e+02, 3.679445495605469e+02, 3.82640869140625e+02, 4.731519165039062e+02, 5.4504296875e+02, 2.849068115234375e+03, 3.410319580078125e+03, 3.35993505859375e+03, 2.670035888671875e+03, 2.24187353515625e+03, 2.30639990234375e+03, 2.277629150390626e+03, 1.859415161132825e+03, 1.22208837890625e+03, 1.322555297851562e+03, 4.337216186523438e+02, 5.269237060546875e+02, 6.05640380859375e+02, 6.652223510742188e+02, 1.695311401367188e+03, 3.25445556640625e+03, 2.88301708984375e+03, 2.646083251953125e+03, 2.48198681640625e+03, 1.442477783203125e+03, 1.395849853515625e+03, 1.658580688476562e+03, 1.043388305664062e+03, 1.20632421875e+03, 3.011616821289062e+02, 4.508015441894531e+02] -dis.mCon_flow[1]=[3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 4.101572036743164e+00, 4.427675247192383e+00, 3.576277256011963e+00, 3.620766878128052e+00, 3.617748975753784e+00, 3.553774833679199e+00, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 5.15570592880249e+00, 6.06018590927124e+00, 3.664623260498047e+00, 3.594159841537476e+00, 3.631283760070801e+00, 3.580672264099121e+00, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 4.584897994995117e+00, 5.36101818084716e+00, 3.627122402191162e+00, 3.578057050704956e+00, 3.643641948699951e+00, 3.600403785705566e+00, 3.553774833679199e+00, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 4.359717845916748e+00, 6.104840278625488e+00, 5.49290657043457e+00, 3.570169448852539e+00, 3.635257720947266e+00, 3.752918481826782e+00, 3.553774833679199e+00, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 5.81394100189209e+00, 7.451635837554932e+00, 5.074141502380371e+00, 5.043736457824707e+00, 6.305309772491455e+00, 4.207999706268311e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.822436571121216e+00, 3.746993064880371e+00, 3.602979183197021e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.566339015960693e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00] -dis.mCon_flow[2]=[2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.019427871704102e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.277935409545901e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.267717742919922e+01, 3.013236045837402e+01, 3.171646118164062e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.45205078125e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.012661170959473e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.370282363891602e+01, 3.196107292175293e+01, 2.642714691162109e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.483815765380859e+01, 3.246229553222656e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.066592979431152e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.065280532836914e+01, 2.600101470947266e+01, 3.095833206176756e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.656584358215332e+01, 4.513458251953125e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.670785522460938e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.65058708190918e+01, 4.200460815429688e+01, 4.496108627319336e+01, 2.349573707580566e+01, 2.392053031921385e+01, 2.609298515319824e+01, 2.655998802185059e+01, 2.719434928894043e+01, 5.461568450927734e+01, 2.506702423095703e+01, 2.753532981872559e+01, 4.36427001953125e+01, 4.586046600341797e+01, 2.564225769042969e+01, 4.484005737304688e+01, 5.239989089965811e+01, 5.064007186889646e+01, 3.170774459838867e+01, 2.850797271728516e+01, 2.853764343261719e+01, 3.029688262939453e+01, 3.166159820556641e+01, 6.248114013671875e+01, 3.564185333251953e+01, 3.24600944519043e+01, 3.196579933166504e+01, 5.750895690917969e+01, 2.729492378234863e+01, 3.145763206481989e+01, 5.843675613403323e+01, 5.370716857910156e+01, 5.485036849975586e+01, 2.985244178771973e+01, 3.120017242431641e+01, 3.264155197143555e+01, 3.392525482177734e+01, 5.174563980102539e+01, 5.641958618164062e+01, 3.406616973876953e+01, 3.449123001098633e+01, 6.369601821899414e+01, 2.438246726989746e+01, 2.74691104888916e+01, 5.615262985229492e+01, 4.996278762817383e+01, 5.308313369750977e+01, 2.445267295837402e+01, 2.904074096679688e+01] -dis.mCon_flow[3]=[8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.472659873962402e+01, 1.390811634063721e+01, 1.111549091339111e+01, 9.717907905578613e+00, 9.713555335998535e+00, 9.72472095489502e+00, 9.715381622314453e+00, 9.697888374328613e+00, 9.698989868164062e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.445946502685547e+01, 1.736879539489746e+01, 1.394029998779297e+01, 9.715542793273926e+00, 9.703534126281738e+00, 9.720417022705078e+00, 9.717157363891602e+00, 9.694089889526367e+00, 9.695999145507812e+00, 9.255684852600098e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.375299453735352e+01, 1.722621917724609e+01, 1.413513660430905e+01, 9.718402862548828e+00, 9.705759048461914e+00, 9.719975471496582e+00, 9.72390079498291e+00, 9.703298568725586e+00, 9.699179649353027e+00, 9.697385787963867e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.77711238861084e+01, 1.788053131103516e+01, 1.641106224060059e+01, 1.404497814178467e+01, 1.405329132080078e+01, 1.419673728942871e+01, 1.426902008056641e+01, 1.030874729156494e+01, 1.114575672149658e+01, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.928056907653809e+01, 2.001873970031738e+01, 1.976952934265137e+01, 1.802138519287109e+01, 1.719420051574707e+01, 1.749942588806152e+01, 1.694989585876465e+01, 1.296092700958249e+01, 1.237324237823485e+01, 8.712203025817871e+00, 8.605648040771484e+00, 8.627485275268555e+00, 9.339115142822266e+00, 9.82170581817627e+00, 1.946228408813477e+01, 2.056347846984863e+01, 2.045797729492188e+01, 1.858537673950195e+01, 1.722822952270508e+01, 1.755887985229492e+01, 1.747881507873536e+01, 1.584212970733647e+01, 1.351181983947754e+01, 1.38713846206665e+01, 9.097410202026367e+00, 9.691325187683105e+00, 1.020957946777344e+01, 1.054925441741943e+01, 1.605637550354004e+01, 2.011758232116699e+01, 1.92101001739502e+01, 1.853179740905762e+01, 1.790215110778809e+01, 1.439811134338379e+01, 1.434436130523682e+01, 1.528196430206299e+01, 1.255632305145264e+01, 1.345501804351807e+01, 8.605648040771484e+00, 9.176644325256348e+00] +bui[1].ets.proHeaWat.heaPum.COP=[8.832118034362793e+00, 8.76674747467041e+00, 7.040595054626465e+00, 7.464546680450439e+00, 7.000575542449951e+00, 6.547202587127686e+00, 6.448574542999268e+00, 7.312077999114991e+00, 7.100598335266113e+00, 6.812841415405273e+00, 7.595059394836426e+00, 9.781047821044922e+00, 9.781064033508301e+00, 9.780763626098633e+00, 9.755895614624023e+00, 9.595996856689453e+00, 8.971941947937012e+00, 8.661943435668945e+00, 7.382122993469238e+00, 6.180070400238037e+00, 5.964054107666016e+00, 6.585165500640869e+00, 7.373140335083008e+00, 6.713627815246582e+00, 7.017662525177002e+00, 9.67896556854248e+00, 9.679254531860352e+00, 9.679428100585938e+00, 9.632810592651367e+00, 9.508039474487305e+00, 9.180935859680176e+00, 8.860331535339355e+00, 8.184884071350098e+00, 6.298338413238525e+00, 6.118203639984133e+00, 7.082376956939697e+00, 9.197408676147461e+00, 9.243411064147949e+00, 8.46934986114502e+00, 9.439827919006348e+00, 9.663820266723633e+00, 9.664420127868652e+00, 9.664913177490234e+00, 9.665153503417969e+00, 9.66368579864502e+00, 9.552105903625488e+00, 8.938046455383301e+00, 6.34101390838623e+00, 5.93358039855957e+00, 6.079972267150879e+00, 7.419883728027344e+00, 6.782445907592773e+00, 6.49927282333374e+00, 7.62672758102417e+00, 9.593844413757324e+00, 9.593778610229492e+00, 9.570229530334473e+00, 9.42442035675049e+00, 8.99714469909668e+00, 8.647753715515137e+00, 8.352483749389648e+00, 6.546675682067871e+00, 5.946853637695312e+00, 5.58008861541748e+00, 6.117436408996582e+00, 6.104587554931641e+00, 5.808216094970703e+00, 6.313800811767578e+00, 8.838792800903329e+00, 8.756804466247567e+00, 8.344906806945801e+00, 7.955085754394531e+00, 7.776830673217773e+00, 7.585167407989502e+00, 7.460200309753418e+00, 6.924137592315674e+00, 6.876448631286621e+00, 6.913320541381836e+00, 6.91071605682373e+00, 6.863385677337646e+00, 6.803446769714355e+00, 6.736450672149658e+00, 6.772709846496581e+00, 7.187572956085205e+00, 7.038544654846191e+00, 6.936095237731934e+00, 6.880380630493164e+00, 6.833362102508545e+00, 6.77839469909668e+00, 6.499405384063721e+00, 6.367313861846924e+00, 6.387119770050049e+00, 6.411218643188477e+00, 6.45396900177002e+00, 6.461417675018311e+00, 6.43506383895874e+00, 6.402061939239502e+00, 6.918438911437988e+00, 6.76140832901001e+00, 6.669435501098633e+00, 6.603628158569336e+00] +bui[1].ets.proHotWat.heaPum.COP=[3.456180810928345e+00, 3.445426225662231e+00, 3.050774097442627e+00, 2.962384700775146e+00, 2.817957639694214e+00, 2.584792375564575e+00, 2.547687768936157e+00, 2.637871742248535e+00, 2.574909210205078e+00, 2.577672243118286e+00, 2.668136835098267e+00, 2.929457426071167e+00, 2.929458856582642e+00, 2.929430961608887e+00, 2.92809271812439e+00, 2.925336122512817e+00, 2.926040887832642e+00, 2.927327156066895e+00, 2.908646583557129e+00, 2.610657691955566e+00, 2.536600828170776e+00, 2.585804224014282e+00, 2.600783348083496e+00, 2.550495862960815e+00, 2.618217468261719e+00, 2.919895648956299e+00, 2.919922828674316e+00, 2.919939279556274e+00, 2.919425010681152e+00, 2.918431520462036e+00, 2.919405937194824e+00, 2.921180248260498e+00, 2.922457456588745e+00, 2.643633127212524e+00, 2.533949613571167e+00, 2.554775714874268e+00, 2.619666337966919e+00, 2.531534671783447e+00, 2.589223146438599e+00, 2.850780487060547e+00, 2.918418169021606e+00, 2.918474912643433e+00, 2.918521404266357e+00, 2.918544054031372e+00, 2.919309139251709e+00, 2.92164158821106e+00, 2.92318320274353e+00, 2.732053995132446e+00, 2.548689603805542e+00, 2.536794185638428e+00, 2.630861759185791e+00, 2.541706800460815e+00, 2.571035623550415e+00, 2.721861600875854e+00, 2.911841630935669e+00, 2.911835432052612e+00, 2.910416126251221e+00, 2.907609939575195e+00, 2.907161951065063e+00, 2.908658742904663e+00, 2.910059690475464e+00, 2.844255924224854e+00, 2.579586982727051e+00, 2.523704051971436e+00, 2.594544649124146e+00, 2.573625564575195e+00, 2.547605991363525e+00, 2.622440338134766e+00, 2.900295495986938e+00, 2.900079965591431e+00, 2.898383617401123e+00, 2.896445512771606e+00, 2.895791530609131e+00, 2.897369146347046e+00, 2.899268388748169e+00, 2.900594234466553e+00, 2.901859045028687e+00, 2.900282382965088e+00, 2.89708399772644e+00, 2.895824670791626e+00, 2.895736217498779e+00, 2.893609762191772e+00, 2.89285683631897e+00, 2.893466472625732e+00, 2.892119169235229e+00, 2.890091180801392e+00, 2.888365268707275e+00, 2.889407157897949e+00, 2.89137601852417e+00, 2.892910003662109e+00, 2.894262075424194e+00, 2.893952369689941e+00, 2.890814542770386e+00, 2.889394044876099e+00, 2.889658689498901e+00, 2.887962818145752e+00, 2.886960983276367e+00, 2.888486862182617e+00, 2.888485431671143e+00, 2.887161493301392e+00, 2.885389566421509e+00] +bui[2].ets.proHeaWat.heaPum.COP=[8.832118034362793e+00, 8.352932929992676e+00, 7.931460857391357e+00, 7.745893955230713e+00, 6.030369281768799e+00, 7.729483127593994e+00, 7.761614322662354e+00, 6.229252338409423e+00, 7.149024963378906e+00, 8.357999801635742e+00, 6.1631178855896e+00, 6.397039890289307e+00, 6.333166599273682e+00, 8.284637451171875e+00, 7.769601821899413e+00, 7.42664098739624e+00, 7.159445762634277e+00, 6.98619556427002e+00, 5.758172035217285e+00, 7.079741477966309e+00, 7.035812377929688e+00, 6.981259822845459e+00, 6.283961772918701e+00, 8.415788650512695e+00, 7.082263946533203e+00, 6.191007137298584e+00, 6.282510757446289e+00, 6.543202877044678e+00, 7.658510684967039e+00, 7.348577499389648e+00, 7.102583408355713e+00, 6.937386989593506e+00, 5.742146015167236e+00, 6.20395040512085e+00, 7.020952224731448e+00, 7.816408157348633e+00, 6.281557083129883e+00, 9.405508041381836e+00, 8.666439056396484e+00, 6.301251888275146e+00, 6.534596920013428e+00, 6.353021144866943e+00, 8.436670303344727e+00, 7.756557941436768e+00, 7.327233791351318e+00, 7.027620792388916e+00, 6.413168907165527e+00, 5.735672473907471e+00, 6.676146030426025e+00, 6.66642951965332e+00, 5.673469543457031e+00, 6.835154056549072e+00, 6.827012538909912e+00, 5.623372077941895e+00, 5.859909534454346e+00, 5.758384227752686e+00, 7.073206424713124e+00, 6.480620384216309e+00, 6.387866973876953e+00, 6.37319803237915e+00, 6.349366188049316e+00, 5.390682697296143e+00, 6.408399105072021e+00, 6.260518550872803e+00, 5.657243728637695e+00, 5.603081226348877e+00, 6.318450927734375e+00, 5.590450763702393e+00, 5.443761825561527e+00, 5.51183032989502e+00, 6.16179895401001e+00, 6.229061603546143e+00, 6.222015380859375e+00, 6.156234264373779e+00, 6.109562397003174e+00, 5.121059894561768e+00, 5.990953922271729e+00, 6.072149276733398e+00, 6.076614856719971e+00, 5.241221904754639e+00, 6.253513813018799e+00, 6.076526165008524e+00, 5.224894523620604e+00, 5.376286029815674e+00, 5.351824760437012e+00, 6.125544548034668e+00, 6.069770812988281e+00, 6.01953649520874e+00, 5.979678153991699e+00, 5.372052669525146e+00, 5.242528915405273e+00, 5.973432540893555e+00, 5.946325778961182e+00, 5.058618068695068e+00, 6.381366729736328e+00, 6.206525325775146e+00, 5.246174812316895e+00, 5.473075389862061e+00, 5.389558792114258e+00, 6.32852029800415e+00, 6.135725498199463e+00] +bui[2].ets.proHotWat.heaPum.COP=[3.456180810928345e+00, 2.968277931213379e+00, 2.950411558151245e+00, 2.949023962020874e+00, 2.640910387039185e+00, 2.939437627792358e+00, 2.930541276931763e+00, 2.589545488357544e+00, 2.74204158782959e+00, 2.924612283706665e+00, 2.651893138885498e+00, 2.570192575454712e+00, 2.569429874420166e+00, 2.853349685668945e+00, 2.925382375717163e+00, 2.924292802810669e+00, 2.925378799438477e+00, 2.925823211669922e+00, 2.862005710601807e+00, 2.911052703857422e+00, 2.912285804748535e+00, 2.754588842391968e+00, 2.625022888183594e+00, 2.913526773452759e+00, 2.837908267974854e+00, 2.560801982879639e+00, 2.565606594085693e+00, 2.580998182296753e+00, 2.918151140213013e+00, 2.917847394943237e+00, 2.918977499008179e+00, 2.920152187347412e+00, 2.614006042480469e+00, 2.716600179672241e+00, 2.910914182662964e+00, 2.909110546112061e+00, 2.581522464752197e+00, 2.915068387985229e+00, 2.915451526641846e+00, 2.584925651550293e+00, 2.56493067741394e+00, 2.534525156021119e+00, 2.920844078063965e+00, 2.919641256332397e+00, 2.919729948043823e+00, 2.921515226364136e+00, 2.80191969871521e+00, 2.631317377090454e+00, 2.912690877914429e+00, 2.906098604202271e+00, 2.555862903594971e+00, 2.835928916931152e+00, 2.905810117721558e+00, 2.617418527603149e+00, 2.558154344558716e+00, 2.546513557434082e+00, 2.908202886581421e+00, 2.906789064407349e+00, 2.906659126281738e+00, 2.907533884048462e+00, 2.90815258026123e+00, 2.599111795425415e+00, 2.900686502456665e+00, 2.891861438751221e+00, 2.605886697769165e+00, 2.62809681892395e+00, 2.888807058334351e+00, 2.709462404251099e+00, 2.545483589172363e+00, 2.548300266265869e+00, 2.622494697570801e+00, 2.893709897994995e+00, 2.892358303070068e+00, 2.893586158752441e+00, 2.895000457763672e+00, 2.579383611679077e+00, 2.813444375991821e+00, 2.893312931060791e+00, 2.885959148406982e+00, 2.585094451904297e+00, 2.888998031616211e+00, 2.88101458549499e+00, 2.545360803604127e+00, 2.540024995803833e+00, 2.513464689254761e+00, 2.883826017379761e+00, 2.881798028945923e+00, 2.883014917373657e+00, 2.884846925735474e+00, 2.620365142822266e+00, 2.618896245956421e+00, 2.885109424591064e+00, 2.881875514984131e+00, 2.541725873947144e+00, 2.876278162002563e+00, 2.879711389541626e+00, 2.576918601989746e+00, 2.535281419754028e+00, 2.513287544250488e+00, 2.880046129226685e+00, 2.877944946289062e+00] +bui[3].ets.proHeaWat.heaPum.COP=[8.832118034362793e+00, 9.666862487792969e+00, 8.407212257385254e+00, 7.999817848205566e+00, 5.745312213897705e+00, 5.963682651519775e+00, 6.302771091461182e+00, 6.687545299530029e+00, 6.785742282867432e+00, 6.976062297821045e+00, 6.713524341583252e+00, 7.249571323394775e+00, 7.10476541519165e+00, 8.662631034851074e+00, 8.36098003387451e+00, 7.787084579467773e+00, 7.362305164337158e+00, 7.089220523834228e+00, 5.589624881744385e+00, 5.466765880584717e+00, 5.87092113494873e+00, 6.443122386932373e+00, 7.037093162536621e+00, 7.113399505615234e+00, 6.699421882629395e+00, 6.980453491210938e+00, 7.263000965118408e+00, 7.325182437896729e+00, 8.663204193115231e+00, 7.989333629608154e+00, 7.500102043151855e+00, 7.181735515594482e+00, 5.801801681518555e+00, 5.371970653533936e+00, 5.844434261322025e+00, 6.780035495758057e+00, 7.863124847412109e+00, 8.523839950561523e+00, 7.963706493377686e+00, 7.527322292327881e+00, 8.37403392791748e+00, 7.478240966796878e+00, 9.205986976623535e+00, 8.85126781463623e+00, 7.946970462799072e+00, 7.388733386993408e+00, 6.542260646820068e+00, 5.307626247406006e+00, 5.47374963760376e+00, 5.5859694480896e+00, 5.68707799911499e+00, 5.693498611450195e+00, 5.821003913879395e+00, 5.6484375e+00, 5.970679759979248e+00, 5.895128726959229e+00, 7.164264202117916e+00, 6.709675312042239e+00, 6.417976379394531e+00, 6.338340282440186e+00, 6.243109703063965e+00, 5.083828449249268e+00, 5.193542957305908e+00, 5.205493927001953e+00, 5.312810897827148e+00, 5.219900131225586e+00, 5.407984256744385e+00, 5.389590740203857e+00, 5.564558982849125e+00, 5.663209915161134e+00, 6.064542770385742e+00, 6.166965484619141e+00, 6.128423690795898e+00, 6.043267250061035e+00, 5.983549118041992e+00, 5.03937292098999e+00, 4.985101222991943e+00, 5.116892337799072e+00, 5.259133338928223e+00, 5.145895481109619e+00, 5.363548755645752e+00, 5.35132598876953e+00, 5.255040645599362e+00, 5.489293575286865e+00, 5.434624195098877e+00, 6.006162166595459e+00, 5.948151588439941e+00, 5.886094570159912e+00, 5.845181465148926e+00, 5.330554485321045e+00, 4.901078224182129e+00, 5.183898448944092e+00, 5.216626167297363e+00, 5.059321403503418e+00, 5.523330211639404e+00, 5.629565238952637e+00, 5.328101634979248e+00, 5.569172859191895e+00, 5.489058971405029e+00, 6.268736839294434e+00, 6.008127689361572e+00] +bui[3].ets.proHotWat.heaPum.COP=[3.456180810928345e+00, 3.030876159667969e+00, 2.936005115509033e+00, 2.918151378631592e+00, 2.488980293273926e+00, 2.510942220687866e+00, 2.516079664230347e+00, 2.51457953453064e+00, 2.488617181777954e+00, 2.516695976257324e+00, 2.516294479370117e+00, 2.485352039337158e+00, 2.488009691238403e+00, 2.792933464050293e+00, 2.896329164505005e+00, 2.893928050994873e+00, 2.888891696929932e+00, 2.884199857711792e+00, 2.701215028762817e+00, 2.480401515960693e+00, 2.49419116973877e+00, 2.498394727706909e+00, 2.473737955093384e+00, 2.50134539604187e+00, 2.511149406433105e+00, 2.476231098175049e+00, 2.480807065963745e+00, 2.521692991256714e+00, 2.882105350494385e+00, 2.885973453521729e+00, 2.881844043731689e+00, 2.878208637237549e+00, 2.512201547622681e+00, 2.459237575531006e+00, 2.492915868759155e+00, 2.497941493988037e+00, 2.484443187713623e+00, 2.495879650115967e+00, 2.520755052566528e+00, 2.495754718780518e+00, 2.488467454910278e+00, 2.484140396118164e+00, 2.875467300415039e+00, 2.894996404647827e+00, 2.889655113220215e+00, 2.883393526077271e+00, 2.694224834442139e+00, 2.456068992614746e+00, 2.490221738815308e+00, 2.485932111740112e+00, 2.464843511581421e+00, 2.465758085250854e+00, 2.491504907608032e+00, 2.462377309799194e+00, 2.450438261032104e+00, 2.453380584716797e+00, 2.833194255828858e+00, 2.856411695480347e+00, 2.849978446960449e+00, 2.847720146179199e+00, 2.846999168395996e+00, 2.434305906295776e+00, 2.469571828842163e+00, 2.467026233673096e+00, 2.460221529006958e+00, 2.426654815673828e+00, 2.470346689224243e+00, 2.458034753799438e+00, 2.423857927322388e+00, 2.4333176612854e+00, 2.534387350082397e+00, 2.8306725025177e+00, 2.828711986541748e+00, 2.826857089996338e+00, 2.824531078338623e+00, 2.42823052406311e+00, 2.433458566665649e+00, 2.461541414260864e+00, 2.459890604019165e+00, 2.412614345550537e+00, 2.463999271392822e+00, 2.460159540176392e+00, 2.411728143692017e+00, 2.420107841491699e+00, 2.421641826629639e+00, 2.814183473587036e+00, 2.813428640365601e+00, 2.811276197433472e+00, 2.809358358383179e+00, 2.517412662506104e+00, 2.406462669372559e+00, 2.454671859741211e+00, 2.449988126754761e+00, 2.405026435852051e+00, 2.440987825393677e+00, 2.460737466812134e+00, 2.41791296005249e+00, 2.418332576751709e+00, 2.41908860206604e+00, 2.80534839630127e+00, 2.815336227416992e+00] +TDisWatSup.T=[2.931499938964844e+02, 2.852945861816406e+02, 2.856815795898438e+02, 2.857510681152344e+02, 2.857267456054688e+02, 2.856718139648438e+02, 2.855671691894531e+02, 2.855025329589844e+02, 2.854809875488281e+02, 2.854429626464844e+02, 2.854137878417969e+02, 2.854244689941406e+02, 2.854071960449219e+02, 2.853782653808594e+02, 2.853413696289062e+02, 2.8534423828125e+02, 2.853720703125e+02, 2.853915710449219e+02, 2.853984069824219e+02, 2.854017333984375e+02, 2.853314819335938e+02, 2.852769775390625e+02, 2.852627868652344e+02, 2.852532958984375e+02, 2.852403564453125e+02, 2.852674865722656e+02, 2.852770385742188e+02, 2.852573852539062e+02, 2.852309265136719e+02, 2.852272033691406e+02, 2.852603149414062e+02, 2.85290283203125e+02, 2.853053588867188e+02, 2.853229370117188e+02, 2.852682189941406e+02, 2.852067565917969e+02, 2.851899719238281e+02, 2.852041015625e+02, 2.852021789550781e+02, 2.852345886230469e+02, 2.852779235839844e+02, 2.852750244140625e+02, 2.852602844238281e+02, 2.852430725097656e+02, 2.852681579589844e+02, 2.853015747070312e+02, 2.853194580078125e+02, 2.853342895507812e+02, 2.852999877929688e+02, 2.852250366210938e+02, 2.851845092773438e+02, 2.851712951660156e+02, 2.851232604980469e+02, 2.851054077148438e+02, 2.851183166503906e+02, 2.850870971679688e+02, 2.850547180175781e+02, 2.850188903808594e+02, 2.850391540527344e+02, 2.850718078613281e+02, 2.850904846191406e+02, 2.851051330566406e+02, 2.85102294921875e+02, 2.850287780761719e+02, 2.849909973144531e+02, 2.849830932617188e+02, 2.849387512207031e+02, 2.849022827148438e+02, 2.849138488769531e+02, 2.848914489746094e+02, 2.848577880859375e+02, 2.848209533691406e+02, 2.848373718261719e+02, 2.848760681152344e+02, 2.849063415527344e+02, 2.849239501953125e+02, 2.849418029785156e+02, 2.848733825683594e+02, 2.848297729492188e+02, 2.848292236328125e+02, 2.848153076171875e+02, 2.847711181640625e+02, 2.847835388183594e+02, 2.847831726074219e+02, 2.847451782226562e+02, 2.847025756835938e+02, 2.846958312988281e+02, 2.847337341308594e+02, 2.847684326171875e+02, 2.847888793945312e+02, 2.848150024414062e+02, 2.847699279785156e+02, 2.847167053222656e+02, 2.847120361328125e+02, 2.847170715332031e+02, 2.846675109863281e+02, 2.8467822265625e+02, 2.847114562988281e+02, 2.846882019042969e+02, 2.846586608886719e+02, 2.846360778808594e+02] +TDisWatRet.T=[2.931499938964844e+02, 2.8595166015625e+02, 2.853379211425781e+02, 2.851414794921875e+02, 2.834973754882812e+02, 2.842228088378906e+02, 2.843896789550781e+02, 2.842535095214844e+02, 2.839751892089844e+02, 2.846266479492188e+02, 2.842833557128906e+02, 2.838039855957031e+02, 2.838408813476562e+02, 2.842601318359375e+02, 2.847837219238281e+02, 2.846384582519531e+02, 2.844966125488281e+02, 2.843782958984375e+02, 2.830713500976562e+02, 2.833893737792969e+02, 2.837337036132812e+02, 2.84053466796875e+02, 2.835159606933594e+02, 2.843898010253906e+02, 2.843610229492188e+02, 2.834487609863281e+02, 2.83717529296875e+02, 2.836341552734375e+02, 2.846417541503906e+02, 2.845315551757812e+02, 2.844002990722656e+02, 2.842959289550781e+02, 2.834055786132812e+02, 2.827950439453125e+02, 2.837015380859375e+02, 2.8408544921875e+02, 2.836650085449219e+02, 2.844537048339844e+02, 2.8480908203125e+02, 2.838343811035156e+02, 2.840350952148438e+02, 2.837999267578125e+02, 2.846925964355469e+02, 2.847799682617188e+02, 2.845803527832031e+02, 2.8441064453125e+02, 2.842685241699219e+02, 2.826054382324219e+02, 2.834759521484375e+02, 2.834297485351562e+02, 2.827201843261719e+02, 2.832548522949219e+02, 2.836388244628906e+02, 2.826444396972656e+02, 2.828368225097656e+02, 2.827662963867188e+02, 2.837658996582031e+02, 2.838477172851562e+02, 2.836802062988281e+02, 2.836430969238281e+02, 2.8361279296875e+02, 2.819618225097656e+02, 2.829362182617188e+02, 2.828160095214844e+02, 2.825915832519531e+02, 2.819405212402344e+02, 2.829676208496094e+02, 2.825419921875e+02, 2.819969787597656e+02, 2.822255249023438e+02, 2.827287902832031e+02, 2.8329833984375e+02, 2.832662048339844e+02, 2.831910400390625e+02, 2.831319885253906e+02, 2.816205749511719e+02, 2.820285034179688e+02, 2.826028747558594e+02, 2.826480712890625e+02, 2.815154418945312e+02, 2.828282165527344e+02, 2.82692626953125e+02, 2.815237426757812e+02, 2.818540344238281e+02, 2.816968994140625e+02, 2.830579223632812e+02, 2.829237670898438e+02, 2.8286669921875e+02, 2.82822021484375e+02, 2.823018798828125e+02, 2.812353515625e+02, 2.824648132324219e+02, 2.823963928222656e+02, 2.811759338378906e+02, 2.826371154785156e+02, 2.828327331542969e+02, 2.815883483886719e+02, 2.818941040039062e+02, 2.817969970703125e+02, 2.831976928710938e+02, 2.829739685058594e+02] +TDisWatBorLvg.T=[2.931499938964844e+02, 2.847266235351562e+02, 2.851277160644531e+02, 2.8519189453125e+02, 2.851634216308594e+02, 2.850949096679688e+02, 2.849782104492188e+02, 2.849088439941406e+02, 2.848865966796875e+02, 2.848414306640625e+02, 2.848116455078125e+02, 2.848249206542969e+02, 2.848023376464844e+02, 2.847698364257812e+02, 2.847286376953125e+02, 2.8473583984375e+02, 2.847673034667969e+02, 2.847881469726562e+02, 2.847959594726562e+02, 2.847958984375e+02, 2.847136535644531e+02, 2.846553039550781e+02, 2.846426391601562e+02, 2.846294250488281e+02, 2.846174926757812e+02, 2.846504211425781e+02, 2.8465673828125e+02, 2.846346130371094e+02, 2.846038513183594e+02, 2.846037902832031e+02, 2.846421203613281e+02, 2.846748352050781e+02, 2.846908264160156e+02, 2.847093811035156e+02, 2.84641845703125e+02, 2.845758972167969e+02, 2.845609130859375e+02, 2.845760498046875e+02, 2.845745849609375e+02, 2.846146850585938e+02, 2.846600952148438e+02, 2.846552124023438e+02, 2.84636962890625e+02, 2.846205139160156e+02, 2.846509704589844e+02, 2.846879272460938e+02, 2.847066650390625e+02, 2.847238464355469e+02, 2.84677490234375e+02, 2.8459521484375e+02, 2.845519409179688e+02, 2.845367126464844e+02, 2.844815063476562e+02, 2.8446533203125e+02, 2.844784545898438e+02, 2.844412536621094e+02, 2.844043579101562e+02, 2.843667297363281e+02, 2.843928527832031e+02, 2.844289245605469e+02, 2.844488525390625e+02, 2.844668884277344e+02, 2.844564819335938e+02, 2.843739013671875e+02, 2.843338623046875e+02, 2.84325927734375e+02, 2.842718200683594e+02, 2.84235107421875e+02, 2.84249267578125e+02, 2.842204895019531e+02, 2.841834411621094e+02, 2.841428833007812e+02, 2.841655578613281e+02, 2.842091369628906e+02, 2.842421875e+02, 2.842619934082031e+02, 2.842784423828125e+02, 2.84197509765625e+02, 2.841525573730469e+02, 2.841549682617188e+02, 2.841332702636719e+02, 2.840869750976562e+02, 2.841044921875e+02, 2.840988464355469e+02, 2.840559997558594e+02, 2.840068054199219e+02, 2.840054321289062e+02, 2.840490417480469e+02, 2.840871276855469e+02, 2.841091613769531e+02, 2.841379699707031e+02, 2.840802001953125e+02, 2.840249328613281e+02, 2.840228576660156e+02, 2.84024169921875e+02, 2.839693298339844e+02, 2.839869079589844e+02, 2.840205078125e+02, 2.839923095703125e+02, 2.839576110839844e+02, 2.839373168945312e+02] +pla.dH_flow=[-1.34378578125e+05, 2.4399815625e+05, 2.25257640625e+05, 2.22073609375e+05, 2.23327734375e+05, 2.2624853125e+05, 2.31506796875e+05, 2.3469090625e+05, 2.35730203125e+05, 2.3770353125e+05, 2.39108078125e+05, 2.38537953125e+05, 2.3948128125e+05, 2.409388125e+05, 2.42795203125e+05, 2.42560328125e+05, 2.41151984375e+05, 2.4019240625e+05, 2.39846875e+05, 2.3975953125e+05, 2.4338046875e+05, 2.460620625e+05, 2.46703125e+05, 2.4723825e+05, 2.478333125e+05, 2.464085625e+05, 2.46026765625e+05, 2.47019e+05, 2.4837703125e+05, 2.4847196875e+05, 2.46776390625e+05, 2.45286890625e+05, 2.44549609375e+05, 2.4368665625e+05, 2.465841875e+05, 2.49613265625e+05, 2.50373140625e+05, 2.4967446875e+05, 2.4975775e+05, 2.4804103125e+05, 2.45927421875e+05, 2.46112625e+05, 2.46892484375e+05, 2.47696875e+05, 2.4638071875e+05, 2.44708265625e+05, 2.4383753125e+05, 2.430765625e+05, 2.44982578125e+05, 2.48719421875e+05, 2.50711859375e+05, 2.51383109375e+05, 2.53835625e+05, 2.54648265625e+05, 2.540249375e+05, 2.55648671875e+05, 2.5729025e+05, 2.5904115625e+05, 2.579411875e+05, 2.56308984375e+05, 2.55391484375e+05, 2.54619078125e+05, 2.54919640625e+05, 2.58630625e+05, 2.60479921875e+05, 2.60853578125e+05, 2.631881875e+05, 2.6493103125e+05, 2.643179375e+05, 2.655305e+05, 2.6720996875e+05, 2.6905075e+05, 2.6812615625e+05, 2.6617240625e+05, 2.64667625e+05, 2.63782375e+05, 2.6295825e+05, 2.6650315625e+05, 2.6861e+05, 2.685674375e+05, 2.694045e+05, 2.7156e+05, 2.7085046875e+05, 2.7098746875e+05, 2.72906375e+05, 2.7508565625e+05, 2.7528490625e+05, 2.7335059375e+05, 2.7162115625e+05, 2.7061246875e+05, 2.6930465625e+05, 2.717411875e+05, 2.74322375e+05, 2.7448640625e+05, 2.743254375e+05, 2.768103125e+05, 2.7614521875e+05, 2.7454959375e+05, 2.7577121875e+05, 2.7729215625e+05, 2.7832096875e+05] +borFie.Q_flow=[0e+00, 7.044341875e+05, 3.8555971875e+05, 2.18003171875e+05, -6.46861171875e+04, -2.15784890625e+05, -1.9029934375e+05, -1.657203281250001e+05, -2.792164375e+05, -1.94339296875e+05, -1.4154909375e+05, -2.75105125e+05, -2.8770875e+05, -3.03017375e+05, -1.461334531249999e+05, -9.90876640625e+04, -1.0175440625e+05, -1.240310156250001e+05, -2.38968359375e+05, -4.446651875e+05, -3.9551940625e+05, -3.324205625e+05, -3.7669565625e+05, -2.913638125e+05, -1.95949e+05, -3.0357178125e+05, -3.2781228125e+05, -3.591195e+05, -2.207400624999992e+05, -1.35269015625e+05, -1.229963671875e+05, -1.37685734375e+05, -1.76351375e+05, -4.672069375e+05, -4.141924687499997e+05, -3.303184375e+05, -2.9101534375e+05, -2.5273421875e+05, -1.072488515625e+05, -1.3173446875e+05, -2.09074171875e+05, -2.428159999999998e+05, -1.8772775e+05, -7.5639546875e+04, -5.7394953125e+04, -8.13355390625e+04, -1.163058203125e+05, -3.78588625e+05, -4.3598153125e+05, -4.2391040625e+05, -4.380753125e+05, -5.441783125e+05, -4.2434309375e+05, -4.3672746875e+05, -5.613933125e+05, -5.694605e+05, -5.267757499999977e+05, -3.657245625000007e+05, -3.31079e+05, -3.30504125e+05, -3.328194375e+05, -5.1913678125e+05, -6.375420625e+05, -5.898378125e+05, -5.82888125e+05, -7.502534375e+05, -6.419305e+05, -5.90446875e+05, -7.427491875000003e+05, -7.387461875000001e+05, -7.413906875e+05, -5.258068125e+05, -4.6928328125e+05, -4.4549509375e+05, -4.487065e+05, -5.37278875e+05, -7.850283125e+05, -6.74604e+05, -6.378210625e+05, -7.729095e+05, -7.25016625e+05, -6.326512499999995e+05, -7.668039999999983e+05, -8.16638e+05, -8.406445e+05, -6.492333125e+05, -5.5953175e+05, -5.30605625e+05, -5.269026875e+05, -5.333365625e+05, -8.181768125e+05, -7.370323125e+05, -6.865185e+05, -7.663083125e+05, -8.0580375e+05, -6.210574375e+05, -6.73115375e+05, -7.766791875e+05, -7.927569375e+05, -6.78503875e+05, -5.478158125e+05] +bui[1].ets.PHea=[0e+00, 0e+00, 0e+00, 0e+00, 9.0123701171875e+03, 1.32947392578125e+04, 1.45455673828125e+04, 7.258874023437497e+03, 8.8624267578125e+03, 1.033817578125e+04, 5.7400791015625e+03, 0e+00, 0e+00, 0e+00, 1.437751197814947e+01, 1.609494171142578e+02, 1.380742797851562e+03, 2.060588867187502e+03, 6.29635302734375e+03, 1.7276076171875e+04, 2.1310083984375e+04, 1.1388810546875e+04, 6.92827978515625e+03, 1.0861259765625e+04, 8.4356123046875e+03, 0e+00, 0e+00, 0e+00, 3.9945808410645e+01, 1.975240631103516e+02, 8.369246826171875e+02, 1.523671630859375e+03, 3.244199462890625e+03, 1.4889533203125e+04, 1.848121484374996e+04, 8.54319921875e+03, 1.33548046875e+03, 2.015832153320312e+03, 3.24748974609375e+03, 3.870343322753906e+02, 0e+00, 0e+00, 0e+00, 0e+00, 1.52878303527832e+01, 1.826393585205078e+02, 1.42210400390625e+03, 1.41373193359375e+04, 2.1803453125e+04, 1.8835501953125e+04, 6.35063427734375e+03, 1.0484625e+04, 1.21008984375e+04, 5.1304345703125e+03, 0e+00, 0e+00, 1.325276851654097e+01, 1.520050811767554e+02, 9.860155029296875e+02, 1.769104125976562e+03, 2.52267578125e+03, 1.08143125e+04, 2.050980078125e+04, 2.81694765625e+04, 1.6796609375e+04, 1.733509375e+04, 2.270893359375e+04, 1.33402998046875e+04, 1.138478027343732e+03, 1.36557666015623e+03, 2.32828955078125e+03, 3.434191650390625e+03, 4.018520263671875e+03, 4.76199755859375e+03, 5.30438134765625e+03, 7.94723046875e+03, 8.209021484375e+03, 7.95745361328125e+03, 7.90085546875e+03, 8.141548828125e+03, 8.4883203125e+03, 8.83580859375e+03, 8.589450195312507e+03, 6.38861328125e+03, 7.10121240234375e+03, 7.603947265625e+03, 7.86700390625e+03, 8.16276171875e+03, 8.5287021484375e+03, 1.04478203125e+04, 1.18089365234375e+04, 1.151938671875e+04, 1.10230009765625e+04, 1.05990048828125e+04, 1.05548818359375e+04, 1.07042265625e+04, 1.09353427734375e+04, 7.61477783203125e+03, 8.563869140625e+03, 9.0986533203125e+03, 9.4788701171875e+03] +bui[2].ets.PHea=[0e+00, 2.30289453125e+04, 2.9297412109375e+04, 3.38355625e+04, 1.4487840625e+05, 3.240940625e+04, 3.057745703125e+04, 1.265584843750001e+05, 5.1568578125e+04, 1.783022265625e+04, 1.179195078125e+05, 1.135355859375e+05, 1.2077378125e+05, 2.15340234375e+04, 2.980906054687502e+04, 3.834051171875e+04, 4.64608125e+04, 5.225840234375001e+04, 1.5536646875e+05, 4.69556015625e+04, 4.83740390625e+04, 5.554684375e+04, 1.046194921875e+05, 1.5322673828125e+04, 4.930498828125e+04, 1.28642234375e+05, 1.223061953125e+05, 9.5073140625e+04, 3.157864843750004e+04, 3.964806640625e+04, 4.737420703125e+04, 5.31657421875e+04, 1.75747125e+05, 1.037853984375e+05, 4.880628124999989e+04, 2.6501498046875e+04, 1.133532734375e+05, 1.782916381835938e+03, 1.18170146484375e+04, 1.130727890625e+05, 9.97180078125e+04, 1.231759218749999e+05, 1.57872783203125e+04, 2.9359326171875e+04, 4.053923046875e+04, 5.026036328125e+04, 8.59974453125e+04, 1.68678328125e+05, 6.221260546875e+04, 6.129773046875e+04, 1.88416984375e+05, 5.563957421875e+04, 5.50985546875e+04, 1.78998015625e+05, 1.6393278125e+05, 1.80109515625e+05, 4.60791835937504e+04, 7.030823437499993e+04, 7.8208296875e+04, 7.97976484375e+04, 8.2150859375e+04, 2.20380796875e+05, 7.4301546875e+04, 8.455675e+04, 1.73259625e+05, 1.70450171875e+05, 7.8182546875e+04, 1.73006828125e+05, 2.157806093749995e+05, 2.074514687499999e+05, 1.063115078125e+05, 8.82283203125e+04, 8.84132890625e+04, 9.539453125e+04, 1.0066359375e+05, 2.6893284375e+05, 1.134421328125e+05, 1.039216953125e+05, 1.024447421875e+05, 2.38128625e+05, 8.428434375e+04, 1.014043750000029e+05, 2.4869390625e+05, 2.2486259375e+05, 2.3277809375e+05, 9.51057578125e+04, 9.99308515625e+04, 1.058180078125e+05, 1.10875390625e+05, 2.128349375e+05, 2.25772859375e+05, 1.11832078125e+05, 1.13503296875e+05, 2.795226875e+05, 6.9990078125e+04, 8.53378984375e+04, 2.3338675e+05, 2.06034515625e+05, 2.25613890625e+05, 7.41042265625e+04, 9.17061015625e+04] +bui[3].ets.PHea=[0e+00, 4.11923388671875e+03, 6.63724169921875e+03, 8.92133984375e+03, 6.4058140625e+04, 5.870479296875e+04, 4.716800390625e+04, 3.832655859374999e+04, 3.52945e+04, 3.477306640625e+04, 3.812137109375e+04, 2.92957109375e+04, 3.1089353515625e+04, 3.08846142578125e+03, 5.244232910156259e+03, 9.1700810546875e+03, 1.27615322265625e+04, 1.546493652343751e+04, 5.424416796875e+04, 7.6627125e+04, 5.95250078125e+04, 4.09355e+04, 3.1039271484375e+04, 3.21548203125e+04, 3.8073609375e+04, 3.1659466796875e+04, 2.8902193359375e+04, 2.268253125e+04, 2.831422119140651e+03, 7.2474677734375e+03, 1.107349609375e+04, 1.41057177734375e+04, 5.96247734375e+04, 7.7554015625e+04, 6.041249999999987e+04, 3.58596015625e+04, 2.393482421875e+04, 2.04392578125e+04, 2.540883203125e+04, 2.7303150390625e+04, 2.056634375e+04, 2.705315039062498e+04, 5.11976432800293e+01, 2.417353515625e+03, 7.745419921875e+03, 1.2222630859375e+04, 2.5998525390625e+04, 8.07831796875e+04, 7.84893125e+04, 7.14677578125e+04, 6.203148828125e+04, 6.231840625e+04, 6.127964453125e+04, 6.3339640625e+04, 4.688094140625e+04, 5.049421875e+04, 1.173610546875007e+04, 1.881136914062496e+04, 2.2861904296875e+04, 2.4055546875e+04, 2.5719302734375e+04, 9.103940625e+04, 9.1296828125e+04, 8.99754921875e+04, 8.13364140625e+04, 8.00321484375e+04, 7.80688203125e+04, 7.63145703125e+04, 5.933291406249985e+04, 5.669085937499996e+04, 3.0614009765625e+04, 2.60958984375e+04, 2.6736e+04, 2.959098046875e+04, 3.1539125e+04, 9.29878515625e+04, 9.7576890625e+04, 9.42591015625e+04, 8.4339203125e+04, 8.11405234375e+04, 7.8871921875e+04, 7.882732812500003e+04, 7.370957812500023e+04, 6.2578265625e+04, 6.36832109375e+04, 2.92041328125e+04, 3.132471875e+04, 3.35200390625e+04, 3.49299921875e+04, 7.01522890625e+04, 9.7613953125e+04, 8.81856640625e+04, 8.49664375e+04, 8.5147234375e+04, 6.509222265625e+04, 6.389065234375e+04, 7.0963109375e+04, 5.80291640625e+04, 6.235818359375e+04, 2.2609791015625e+04, 2.9276294921875e+04] +bui[1].ets.PPum=[3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.728787231445312e+01, 2.092093811035156e+02, 2.747355651855469e+02, 9.714002227783199e+01, 1.058222503662109e+02, 1.364316864013672e+02, 9.143026733398438e+01, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 3.878650817871094e+02, 6.090436401367188e+02, 1.805794830322266e+02, 9.467092132568359e+01, 1.413827819824219e+02, 1.097680587768555e+02, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 2.86300048828125e+02, 4.440598144531237e+02, 1.19497673034668e+02, 9.288758087158203e+01, 1.063668823242188e+02, 9.558541107177734e+01, 9.143026733398438e+01, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 2.351585540771484e+02, 5.875753173828125e+02, 4.905919189453125e+02, 9.227451324462891e+01, 1.227776031494141e+02, 1.761296539306641e+02, 9.143026733398438e+01, 3.285102248191833e-01, 3.285102248191833e-01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 1.212425308227539e+02, 5.19663818359375e+02, 1.002508361816406e+03, 4.159071044921875e+02, 3.650808715820312e+02, 6.671394653320312e+02, 2.582719116210938e+02, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.143026733398438e+01, 9.958531188964844e+01, 1.069664993286133e+02, 1.03819580078125e+02, 1.022473297119141e+02, 1.053435516357422e+02, 1.105790710449219e+02, 1.164085235595703e+02, 1.134165039062501e+02, 9.143026733398438e+01, 9.143026733398438e+01, 9.657913970947266e+01, 1.007248382568359e+02, 1.048673553466797e+02, 1.112042083740234e+02, 1.343541259765625e+02, 1.849652709960938e+02, 1.762959594726562e+02, 1.587984466552734e+02, 1.4763330078125e+02, 1.4643359375e+02, 1.485551147460938e+02, 1.541088256835938e+02, 1.012934417724609e+02, 1.110910568237305e+02, 1.196061706542969e+02, 1.258064880371094e+02] +bui[2].ets.PPum=[6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 4.067316162109375e+03, 6.401235961914062e+02, 6.401235961914062e+02, 2.058985351562506e+03, 8.493020629882812e+02, 6.401235961914062e+02, 2.108043212890625e+03, 1.976557495117188e+03, 2.177377197265625e+03, 6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 6.5526708984375e+02, 7.461662597656252e+02, 5.33621826171875e+03, 8.284871215820312e+02, 7.044581298828125e+02, 6.496930541992188e+02, 2.0305537109375e+03, 6.401235961914062e+02, 6.401235961914062e+02, 2.60207275390625e+03, 2.211394775390625e+03, 1.57149462890625e+03, 6.401235961914062e+02, 6.401235961914062e+02, 6.655308227539062e+02, 7.55581787109375e+02, 4.8009296875e+03, 2.841981689453125e+03, 6.989923706054676e+02, 6.401235961914062e+02, 2.026065673828125e+03, 6.401235961914062e+02, 6.401235961914062e+02, 2.006057250976562e+03, 1.33351513671875e+03, 2.141064941406246e+03, 6.401235961914062e+02, 6.401235961914062e+02, 6.401235961914062e+02, 7.066066284179688e+02, 1.233492431640625e+03, 5.5728955078125e+03, 8.928571166992188e+02, 8.992908935546875e+02, 5.6079873046875e+03, 1.03696923828125e+03, 7.745231323242188e+02, 5.77719482421875e+03, 4.56632568359375e+03, 5.28758056640625e+03, 7.096358642578149e+02, 1.067122070312497e+03, 1.357087646484375e+03, 1.430186401367188e+03, 1.523066772460938e+03, 8.716326171875e+03, 1.275398559570312e+03, 1.586726196289062e+03, 4.49979150390625e+03, 6.26479248046875e+03, 1.2894599609375e+03, 4.927826171875e+03, 7.897012695312467e+03, 7.155912109374991e+03, 2.7286162109375e+03, 1.733697387695312e+03, 1.743647827148438e+03, 2.031393676757812e+03, 2.288267333984375e+03, 1.1738462890625e+04, 3.689126708984375e+03, 2.45900048828125e+03, 2.343238037109375e+03, 1.0065171875e+04, 1.556903442382812e+03, 2.189091308593859e+03, 1.024417871093751e+04, 8.2972880859375e+03, 8.9075009765625e+03, 1.933334838867188e+03, 2.20829541015625e+03, 2.478968017578125e+03, 2.750841796875e+03, 7.1115048828125e+03, 1.0229810546875e+04, 2.77181640625e+03, 2.878487060546875e+03, 1.24897578125e+04, 1.351393676757812e+03, 1.572983032226562e+03, 9.331693359375e+03, 7.0272119140625e+03, 8.03120849609375e+03, 1.161708129882812e+03, 1.8191611328125e+03] +bui[3].ets.PPum=[2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 1.446453857421875e+03, 1.307060668945312e+03, 7.794613037109375e+02, 5.044864807128905e+02, 4.362171936035156e+02, 4.397265014648438e+02, 4.864620666503906e+02, 4.171558227539062e+02, 4.175430603027344e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 1.409900146484375e+03, 2.237783935546875e+03, 1.346221313476562e+03, 5.567463989257812e+02, 4.191457824707031e+02, 4.251814880371094e+02, 4.785080261230469e+02, 4.158245849609375e+02, 4.164928894042969e+02, 3.007606506347656e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 1.0980556640625e+03, 2.19503759765625e+03, 1.394840820312493e+03, 4.723863830566406e+02, 4.199341125488281e+02, 4.250221252441406e+02, 4.264425659179688e+02, 4.190625915527344e+02, 4.176097717285156e+02, 4.169791870117188e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.340141906738281e+02, 2.766412658691406e+02, 2.3378076171875e+03, 2.39224658203125e+03, 1.967227416992188e+03, 1.34897998046875e+03, 1.326354125976562e+03, 1.360800170898438e+03, 1.386275146484375e+03, 6.594940795898438e+02, 7.621546630859375e+02, 2.340141906738281e+02, 2.523113861083979e+02, 3.159679870605469e+02, 3.38392822265625e+02, 3.670321655273438e+02, 2.818780517578125e+03, 3.159366943359375e+03, 3.089924560546875e+03, 2.4816884765625e+03, 2.205086181640625e+03, 2.285997802734375e+03, 2.117793212890625e+03, 1.141700683593743e+03, 9.827114868164048e+02, 4.070483093261719e+02, 3.679446716308594e+02, 3.826421508789062e+02, 4.731519165039062e+02, 5.450469360351562e+02, 2.84844091796875e+03, 3.410319580078125e+03, 3.359935302734375e+03, 2.67003759765625e+03, 2.241873779296875e+03, 2.306400146484375e+03, 2.277629394531251e+03, 1.859415039062513e+03, 1.222088623046875e+03, 1.322552978515625e+03, 4.337217407226562e+02, 5.26923828125e+02, 6.05638427734375e+02, 6.65221923828125e+02, 1.695312255859375e+03, 3.25445556640625e+03, 2.883017333984375e+03, 2.646083984375e+03, 2.481986328125e+03, 1.442477783203125e+03, 1.395841918945312e+03, 1.658580688476562e+03, 1.043460083007812e+03, 1.206324829101562e+03, 3.011617126464844e+02, 4.507977905273438e+02] +dis.mCon_flow[1]=[3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 4.101572036743164e+00, 4.427656173706055e+00, 3.576277256011963e+00, 3.620766878128052e+00, 3.617748975753784e+00, 3.553774833679199e+00, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 5.155706405639648e+00, 6.060186386108398e+00, 3.664623737335205e+00, 3.594159841537476e+00, 3.631283760070801e+00, 3.580672264099121e+00, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 4.584897518157959e+00, 5.361016750335685e+00, 3.627122402191162e+00, 3.578057050704956e+00, 3.643641948699951e+00, 3.600403785705566e+00, 3.553774833679199e+00, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 4.359384536743164e+00, 6.104843616485596e+00, 5.492900848388672e+00, 3.570169448852539e+00, 3.635257720947266e+00, 3.752918481826782e+00, 3.553774833679199e+00, 3.54611761868e-02, 3.54611761868e-02, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 5.813933372497559e+00, 7.451635837554932e+00, 5.074141502380371e+00, 5.043749332427979e+00, 6.305309772491455e+00, 4.207999706268311e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.822436571121216e+00, 3.746993064880371e+00, 3.602979183197021e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.566339015960693e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00, 3.553774833679199e+00] +dis.mCon_flow[2]=[2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.019427871704102e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.277679824829104e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.268376541137695e+01, 3.013236236572266e+01, 3.171646118164062e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.452051162719727e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.012661552429199e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.370282363891602e+01, 3.196107292175293e+01, 2.642714691162109e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.483998870849609e+01, 3.246229553222656e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.066592979431152e+01, 2.349573707580566e+01, 2.349573707580566e+01, 3.065275382995605e+01, 2.600101470947266e+01, 3.095833206176756e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.349573707580566e+01, 2.656584167480469e+01, 4.513458633422852e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.669937133789062e+01, 2.349573707580566e+01, 2.349573707580566e+01, 4.65057487487793e+01, 4.200460815429688e+01, 4.496108627319336e+01, 2.349573707580566e+01, 2.392053031921385e+01, 2.609298515319824e+01, 2.655998802185059e+01, 2.719434928894043e+01, 5.461568450927734e+01, 2.50671558380127e+01, 2.753533172607422e+01, 4.36427001953125e+01, 4.586026763916016e+01, 2.564225959777832e+01, 4.484213256835938e+01, 5.239989471435538e+01, 5.064007186889646e+01, 3.170775413513184e+01, 2.850796508789062e+01, 2.853771781921387e+01, 3.02968807220459e+01, 3.166164779663086e+01, 6.246483993530273e+01, 3.56418571472168e+01, 3.24600944519043e+01, 3.196574592590332e+01, 5.750894927978516e+01, 2.729502868652344e+01, 3.145752143859919e+01, 5.843675613403323e+01, 5.37071647644043e+01, 5.485055541992188e+01, 2.985244369506836e+01, 3.120017242431641e+01, 3.264153289794922e+01, 3.392525100708008e+01, 5.174567413330078e+01, 5.641957855224609e+01, 3.406616592407227e+01, 3.449123764038086e+01, 6.369598007202148e+01, 2.43815860748291e+01, 2.746939468383789e+01, 5.615262985229492e+01, 4.996424102783203e+01, 5.308313369750977e+01, 2.445267868041992e+01, 2.904056739807129e+01] +dis.mCon_flow[3]=[8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.472659873962402e+01, 1.390811634063721e+01, 1.111547088623047e+01, 9.71790885925293e+00, 9.713555335998535e+00, 9.72472095489502e+00, 9.715381622314453e+00, 9.697888374328613e+00, 9.698989868164062e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.44594669342041e+01, 1.736879539489746e+01, 1.394029998779297e+01, 9.715542793273926e+00, 9.703534126281738e+00, 9.720417022705078e+00, 9.717157363891602e+00, 9.694089889526367e+00, 9.695999145507812e+00, 9.255684852600098e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.37535285949707e+01, 1.722621917724609e+01, 1.413513755798337e+01, 9.718402862548828e+00, 9.705759048461914e+00, 9.719975471496582e+00, 9.72390079498291e+00, 9.703298568725586e+00, 9.699179649353027e+00, 9.697385787963867e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.77711009979248e+01, 1.788053131103516e+01, 1.641105842590332e+01, 1.404496765136719e+01, 1.405329322814941e+01, 1.419673824310303e+01, 1.426901626586914e+01, 1.030874729156494e+01, 1.114575576782227e+01, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 8.605648040771484e+00, 1.928056907653809e+01, 2.001873779296875e+01, 1.976952743530273e+01, 1.802138710021973e+01, 1.719420051574707e+01, 1.749942779541016e+01, 1.694989585876465e+01, 1.296092891693112e+01, 1.237324237823485e+01, 8.712203025817871e+00, 8.605648040771484e+00, 8.627501487731934e+00, 9.339114189147949e+00, 9.821727752685547e+00, 1.945900344848633e+01, 2.056348037719727e+01, 2.045797729492188e+01, 1.85853443145752e+01, 1.722823143005371e+01, 1.755888175964355e+01, 1.747881507873536e+01, 1.584212875366216e+01, 1.351181888580322e+01, 1.387141704559326e+01, 9.097411155700684e+00, 9.691326141357422e+00, 1.020956993103027e+01, 1.05492525100708e+01, 1.605638313293457e+01, 2.011758041381836e+01, 1.92101001739502e+01, 1.853181266784668e+01, 1.790215301513672e+01, 1.439811325073242e+01, 1.434426116943359e+01, 1.528196430206299e+01, 1.255698680877686e+01, 1.345502281188965e+01, 8.605648040771484e+00, 9.176593780517578e+00] bui[1].ets.THeaWatSupSet=[3.011499938964844e+02, 3.011499938964844e+02, 3.011818542480469e+02, 3.012418518066406e+02, 3.033169555664062e+02, 3.041416320800781e+02, 3.044120483398438e+02, 3.030785827636719e+02, 3.032156066894531e+02, 3.035683288574219e+02, 3.027239074707031e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011561889648438e+02, 3.012687683105469e+02, 3.015848388671875e+02, 3.018233032226562e+02, 3.029001159667969e+02, 3.050103454589844e+02, 3.057236633300781e+02, 3.038907470703125e+02, 3.028811340332031e+02, 3.03606201171875e+02, 3.032756652832031e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011899719238281e+02, 3.012715148925781e+02, 3.014285888671875e+02, 3.016359558105469e+02, 3.021471557617188e+02, 3.045862426757812e+02, 3.051562805175781e+02, 3.032362060546875e+02, 3.014360961914062e+02, 3.014007263183594e+02, 3.018779602050781e+02, 3.012979736328125e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011532592773438e+02, 3.012625122070312e+02, 3.015754699707031e+02, 3.043725891113281e+02, 3.057138977050781e+02, 3.052976379394531e+02, 3.028313293457031e+02, 3.034349060058594e+02, 3.039214782714844e+02, 3.0258935546875e+02, 3.011499938964844e+02, 3.011499938964844e+02, 3.011549072265625e+02, 3.012594604492188e+02, 3.014695739746094e+02, 3.017150573730469e+02, 3.019510803222656e+02, 3.0364501953125e+02, 3.055112609863281e+02, 3.068552856445312e+02, 3.050308837890625e+02, 3.049100036621094e+02, 3.059415893554688e+02, 3.04355712890625e+02, 3.015714721679688e+02, 3.015879211425781e+02, 3.018827514648438e+02, 3.021878051757812e+02, 3.023419189453125e+02, 3.025277099609375e+02, 3.026602478027344e+02, 3.032210693359375e+02, 3.033043518066406e+02, 3.032552490234375e+02, 3.032364196777344e+02, 3.032822570800781e+02, 3.033528442382812e+02, 3.03423583984375e+02, 3.033790893554688e+02, 3.0290576171875e+02, 3.030587768554688e+02, 3.0315966796875e+02, 3.032167053222656e+02, 3.032773742675781e+02, 3.033581237792969e+02, 3.03684326171875e+02, 3.040229187011719e+02, 3.039660339355469e+02, 3.038548889160156e+02, 3.037657470703125e+02, 3.037560424804688e+02, 3.0377978515625e+02, 3.038266296386719e+02, 3.031968383789062e+02, 3.03359130859375e+02, 3.0346533203125e+02, 3.035382385253906e+02] -bui[1].ets.senTHeaWatSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 3.099530029296875e+02, 3.072186889648438e+02, 3.033151550292969e+02, 3.041410217285156e+02, 3.044122314453125e+02, 3.030792541503906e+02, 3.0321484375e+02, 3.035684204101562e+02, 3.027247619628906e+02, 2.998219604492188e+02, 2.992101745605469e+02, 2.991942138671875e+02, 3.002641296386719e+02, 3.012637939453125e+02, 3.015841064453125e+02, 3.01822998046875e+02, 3.028978271484375e+02, 3.050100708007812e+02, 3.057238464355469e+02, 3.038919067382812e+02, 3.028811340332031e+02, 3.036060791015625e+02, 3.032762756347656e+02, 3.010987243652344e+02, 2.992609558105469e+02, 2.992163696289062e+02, 3.011661682128906e+02, 3.012700500488281e+02, 3.014274597167969e+02, 3.016355590820312e+02, 3.021455993652344e+02, 3.045860595703125e+02, 3.051564636230469e+02, 3.032373657226562e+02, 3.014386596679688e+02, 3.013994445800781e+02, 3.018772888183594e+02, 3.013061828613281e+02, 2.987678833007812e+02, 2.986094665527344e+02, 2.986051635742188e+02, 2.986050415039062e+02, 3.002052307128906e+02, 3.012598876953125e+02, 3.01572509765625e+02, 3.043718872070312e+02, 3.0571337890625e+02, 3.052982482910156e+02, 3.028315124511719e+02, 3.034338073730469e+02, 3.039216613769531e+02, 3.025909118652344e+02, 2.995880737304688e+02, 2.992259216308594e+02, 3.007208557128906e+02, 3.012567443847656e+02, 3.014684448242188e+02, 3.017145385742188e+02, 3.019507751464844e+02, 3.036405944824219e+02, 3.055105590820312e+02, 3.068552551269531e+02, 3.050317687988281e+02, 3.049093322753906e+02, 3.059416198730469e+02, 3.043566284179688e+02, 3.015732116699219e+02, 3.015869140625e+02, 3.018822937011719e+02, 3.021876525878906e+02, 3.02341796875e+02, 3.02527587890625e+02, 3.0266015625e+02, 3.032210693359375e+02, 3.033043212890625e+02, 3.032552795410156e+02, 3.032364196777344e+02, 3.032822265625e+02, 3.033528137207031e+02, 3.03423583984375e+02, 3.03379150390625e+02, 3.029055786132812e+02, 3.030587463378906e+02, 3.031596069335938e+02, 3.032166748046875e+02, 3.032773132324219e+02, 3.033581237792969e+02, 3.036836242675781e+02, 3.0402294921875e+02, 3.039660949707031e+02, 3.038549194335938e+02, 3.037657775878906e+02, 3.037560424804688e+02, 3.037797546386719e+02, 3.0382666015625e+02, 3.031968078613281e+02, 3.033591003417969e+02, 3.034653015136719e+02, 3.035381774902344e+02] +bui[1].ets.senTHeaWatSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 3.099530029296875e+02, 3.072186889648438e+02, 3.033151550292969e+02, 3.041410217285156e+02, 3.044122314453125e+02, 3.030792541503906e+02, 3.0321484375e+02, 3.035684204101562e+02, 3.027247619628906e+02, 2.998259582519531e+02, 2.992102661132812e+02, 2.991942138671875e+02, 3.002640686035156e+02, 3.012637939453125e+02, 3.015841369628906e+02, 3.018229675292969e+02, 3.028978271484375e+02, 3.050100708007812e+02, 3.057238464355469e+02, 3.038919067382812e+02, 3.028811340332031e+02, 3.036060791015625e+02, 3.032762756347656e+02, 3.010982666015625e+02, 2.992608947753906e+02, 2.992163696289062e+02, 3.011661682128906e+02, 3.012700500488281e+02, 3.014274597167969e+02, 3.016355590820312e+02, 3.021455993652344e+02, 3.045860595703125e+02, 3.051564636230469e+02, 3.032373657226562e+02, 3.014386596679688e+02, 3.013994445800781e+02, 3.018773803710938e+02, 3.013061828613281e+02, 2.98767822265625e+02, 2.986094665527344e+02, 2.986051940917969e+02, 2.986050720214844e+02, 3.002052307128906e+02, 3.012598876953125e+02, 3.01572509765625e+02, 3.043717956542969e+02, 3.0571337890625e+02, 3.052982482910156e+02, 3.028315124511719e+02, 3.034338073730469e+02, 3.039216613769531e+02, 3.025909118652344e+02, 2.995867919921875e+02, 2.992259216308594e+02, 3.007208862304688e+02, 3.012567443847656e+02, 3.014684448242188e+02, 3.017145385742188e+02, 3.019507751464844e+02, 3.036429748535156e+02, 3.055105590820312e+02, 3.068552551269531e+02, 3.050317687988281e+02, 3.049093322753906e+02, 3.059416198730469e+02, 3.043566284179688e+02, 3.015732116699219e+02, 3.015854187011719e+02, 3.018822937011719e+02, 3.021876525878906e+02, 3.02341796875e+02, 3.02527587890625e+02, 3.026601867675781e+02, 3.032209777832031e+02, 3.033043212890625e+02, 3.032552795410156e+02, 3.032364196777344e+02, 3.032822265625e+02, 3.033528137207031e+02, 3.03423583984375e+02, 3.03379150390625e+02, 3.029055786132812e+02, 3.030587463378906e+02, 3.031596069335938e+02, 3.032166748046875e+02, 3.032773132324219e+02, 3.033581237792969e+02, 3.036836242675781e+02, 3.0402294921875e+02, 3.039660949707031e+02, 3.038549194335938e+02, 3.037657775878906e+02, 3.037560424804688e+02, 3.037797546386719e+02, 3.0382666015625e+02, 3.031969299316406e+02, 3.033591003417969e+02, 3.034653015136719e+02, 3.035381774902344e+02] bui[2].ets.THeaWatSupSet=[3.022371215820312e+02, 3.022929992675781e+02, 3.025325317382812e+02, 3.027109375e+02, 3.0576953125e+02, 3.026592102050781e+02, 3.025699462890625e+02, 3.046447448730469e+02, 3.032872619628906e+02, 3.0203173828125e+02, 3.047882385253906e+02, 3.044075622558594e+02, 3.045711669921875e+02, 3.021329040527344e+02, 3.025238037109375e+02, 3.028435974121094e+02, 3.031228942871094e+02, 3.033214416503906e+02, 3.064082336425781e+02, 3.032993774414062e+02, 3.032015380859375e+02, 3.032325134277344e+02, 3.045858154296875e+02, 3.019427795410156e+02, 3.031217956542969e+02, 3.048508911132812e+02, 3.0460595703125e+02, 3.040630798339844e+02, 3.025755310058594e+02, 3.028836364746094e+02, 3.031466064453125e+02, 3.033418884277344e+02, 3.06205078125e+02, 3.050321960449219e+02, 3.031983947753906e+02, 3.023972473144531e+02, 3.045396118164062e+02, 3.013359985351562e+02, 3.017449645996094e+02, 3.045319519042969e+02, 3.038887023925781e+02, 3.04413330078125e+02, 3.019764099121094e+02, 3.025020751953125e+02, 3.029153747558594e+02, 3.032434997558594e+02, 3.040957641601562e+02, 3.064471130371094e+02, 3.035986938476562e+02, 3.035945129394531e+02, 3.064448852539062e+02, 3.035657958984375e+02, 3.033815307617188e+02, 3.066045227050781e+02, 3.058945007324219e+02, 3.06213134765625e+02, 3.031752624511719e+02, 3.03856201171875e+02, 3.041219177246094e+02, 3.041805419921875e+02, 3.042574462890625e+02, 3.076214294433594e+02, 3.040094604492188e+02, 3.043080139160156e+02, 3.060822143554688e+02, 3.067025756835938e+02, 3.040648498535156e+02, 3.062969970703125e+02, 3.072484436035156e+02, 3.069846801757812e+02, 3.049280395507812e+02, 3.044254150390625e+02, 3.044303588867188e+02, 3.046428527832031e+02, 3.048128356933594e+02, 3.086090087890625e+02, 3.054629821777344e+02, 3.049158935546875e+02, 3.048506774902344e+02, 3.080462646484375e+02, 3.042694091796875e+02, 3.047711791992188e+02, 3.080608520507812e+02, 3.073917236328125e+02, 3.075439147949219e+02, 3.045775451660156e+02, 3.047623901367188e+02, 3.049385375976562e+02, 3.051003112792969e+02, 3.071455078125e+02, 3.081002807617188e+02, 3.051087951660156e+02, 3.051735534667969e+02, 3.087722473144531e+02, 3.039963989257812e+02, 3.0430224609375e+02, 3.078565063476562e+02, 3.069277648925781e+02, 3.072600402832031e+02, 3.039281311035156e+02, 3.04494873046875e+02] -bui[2].ets.senTHeaWatSup.T=[2.931499938964844e+02, 3.022926635742188e+02, 3.025323791503906e+02, 3.027099609375e+02, 3.057696838378906e+02, 3.026589660644531e+02, 3.025701599121094e+02, 3.046430358886719e+02, 3.032903442382812e+02, 3.020314331054688e+02, 3.047867736816406e+02, 3.044078979492188e+02, 3.04571044921875e+02, 3.021362915039062e+02, 3.025235595703125e+02, 3.028433837890625e+02, 3.031227722167969e+02, 3.033213806152344e+02, 3.06408203125e+02, 3.033004760742188e+02, 3.032018737792969e+02, 3.032297668457031e+02, 3.0458642578125e+02, 3.019417114257812e+02, 3.031179504394531e+02, 3.048511047363281e+02, 3.04605712890625e+02, 3.040654296875e+02, 3.025751953125e+02, 3.028834533691406e+02, 3.03146484375e+02, 3.03341796875e+02, 3.062037048339844e+02, 3.05034423828125e+02, 3.031985778808594e+02, 3.023976135253906e+02, 3.045400695800781e+02, 3.013344421386719e+02, 3.017437744140625e+02, 3.045323181152344e+02, 3.038885192871094e+02, 3.044132995605469e+02, 3.0197509765625e+02, 3.025017395019531e+02, 3.029151306152344e+02, 3.032433471679688e+02, 3.040931091308594e+02, 3.064472961425781e+02, 3.035983581542969e+02, 3.035946044921875e+02, 3.064452819824219e+02, 3.035682983398438e+02, 3.033814392089844e+02, 3.066045532226562e+02, 3.058947143554688e+02, 3.062130126953125e+02, 3.031750793457031e+02, 3.038560791015625e+02, 3.041218566894531e+02, 3.041805114746094e+02, 3.042574157714844e+02, 3.076214904785156e+02, 3.0400927734375e+02, 3.043080139160156e+02, 3.060799865722656e+02, 3.067039489746094e+02, 3.040646057128906e+02, 3.062946472167969e+02, 3.072487182617188e+02, 3.06984619140625e+02, 3.049303894042969e+02, 3.044254150390625e+02, 3.044303588867188e+02, 3.046427917480469e+02, 3.048128356933594e+02, 3.086099548339844e+02, 3.054650268554688e+02, 3.049158935546875e+02, 3.048502502441406e+02, 3.080465393066406e+02, 3.042690734863281e+02, 3.047702331542969e+02, 3.080610046386719e+02, 3.073916320800781e+02, 3.07544677734375e+02, 3.045772094726562e+02, 3.047623291015625e+02, 3.049384765625e+02, 3.051002807617188e+02, 3.071433410644531e+02, 3.081015625e+02, 3.051086730957031e+02, 3.051735534667969e+02, 3.087724304199219e+02, 3.03997314453125e+02, 3.043021850585938e+02, 3.078565979003906e+02, 3.069277038574219e+02, 3.07260009765625e+02, 3.039277038574219e+02, 3.044946899414062e+02] +bui[2].ets.senTHeaWatSup.T=[2.931499938964844e+02, 3.022926635742188e+02, 3.025323791503906e+02, 3.027099609375e+02, 3.057696838378906e+02, 3.026589660644531e+02, 3.025701599121094e+02, 3.046428833007812e+02, 3.032903442382812e+02, 3.020314331054688e+02, 3.047872924804688e+02, 3.044078979492188e+02, 3.04571044921875e+02, 3.021362915039062e+02, 3.025235595703125e+02, 3.028433837890625e+02, 3.031227722167969e+02, 3.033213806152344e+02, 3.06408203125e+02, 3.033004760742188e+02, 3.032018737792969e+02, 3.032297668457031e+02, 3.0458642578125e+02, 3.019417114257812e+02, 3.031179504394531e+02, 3.048511047363281e+02, 3.04605712890625e+02, 3.040654296875e+02, 3.025751953125e+02, 3.028834533691406e+02, 3.03146484375e+02, 3.03341796875e+02, 3.062038269042969e+02, 3.05034423828125e+02, 3.031985778808594e+02, 3.023976135253906e+02, 3.045400695800781e+02, 3.013344116210938e+02, 3.017437744140625e+02, 3.045323181152344e+02, 3.038885192871094e+02, 3.044132995605469e+02, 3.0197509765625e+02, 3.025017395019531e+02, 3.029151306152344e+02, 3.032433471679688e+02, 3.040931091308594e+02, 3.064472961425781e+02, 3.035983581542969e+02, 3.035946044921875e+02, 3.064447937011719e+02, 3.035682983398438e+02, 3.033814392089844e+02, 3.066045532226562e+02, 3.058947143554688e+02, 3.062130126953125e+02, 3.031750793457031e+02, 3.038560791015625e+02, 3.041218566894531e+02, 3.041805114746094e+02, 3.042574157714844e+02, 3.076214904785156e+02, 3.0400927734375e+02, 3.043080139160156e+02, 3.060799865722656e+02, 3.067039489746094e+02, 3.040646057128906e+02, 3.062947998046875e+02, 3.072487182617188e+02, 3.06984619140625e+02, 3.049303894042969e+02, 3.044254150390625e+02, 3.044303588867188e+02, 3.046427917480469e+02, 3.048128356933594e+02, 3.086090698242188e+02, 3.054650268554688e+02, 3.049158935546875e+02, 3.048502807617188e+02, 3.080465393066406e+02, 3.042690734863281e+02, 3.047702331542969e+02, 3.080610046386719e+02, 3.073916320800781e+02, 3.07544677734375e+02, 3.045772094726562e+02, 3.047623291015625e+02, 3.049384765625e+02, 3.051002807617188e+02, 3.071433410644531e+02, 3.081015625e+02, 3.051086730957031e+02, 3.051735534667969e+02, 3.087724304199219e+02, 3.03997314453125e+02, 3.043021850585938e+02, 3.078565979003906e+02, 3.069277954101562e+02, 3.07260009765625e+02, 3.039277038574219e+02, 3.044946899414062e+02] bui[3].ets.THeaWatSupSet=[3.015830078125e+02, 3.017384643554688e+02, 3.020616760253906e+02, 3.023164672851562e+02, 3.055315856933594e+02, 3.052533569335938e+02, 3.042955322265625e+02, 3.035074462890625e+02, 3.031561584472656e+02, 3.031649475097656e+02, 3.034611206054688e+02, 3.025969543457031e+02, 3.027619323730469e+02, 3.014335632324219e+02, 3.018492736816406e+02, 3.02317138671875e+02, 3.026919250488281e+02, 3.029523315429688e+02, 3.057950744628906e+02, 3.064950866699219e+02, 3.05296630859375e+02, 3.037142028808594e+02, 3.027350769042969e+02, 3.028833312988281e+02, 3.034297485351562e+02, 3.028161315917969e+02, 3.025333557128906e+02, 3.024278259277344e+02, 3.015642700195312e+02, 3.020900573730469e+02, 3.025110168457031e+02, 3.028137512207031e+02, 3.051663818359375e+02, 3.064702453613281e+02, 3.053681945800781e+02, 3.032876586914062e+02, 3.020130615234375e+02, 3.015963745117188e+02, 3.022110900878906e+02, 3.024018859863281e+02, 3.016385192871094e+02, 3.02337890625e+02, 3.011651916503906e+02, 3.015142211914062e+02, 3.021448974609375e+02, 3.026300354003906e+02, 3.034896850585938e+02, 3.06657958984375e+02, 3.066563415527344e+02, 3.0615478515625e+02, 3.053432922363281e+02, 3.0532421875e+02, 3.053579711914062e+02, 3.0541748046875e+02, 3.04074462890625e+02, 3.043381958007812e+02, 3.0258203125e+02, 3.032113647460938e+02, 3.035560913085938e+02, 3.036563110351562e+02, 3.037868041992188e+02, 3.07205322265625e+02, 3.074538269042969e+02, 3.073782653808594e+02, 3.067622375488281e+02, 3.064886169433594e+02, 3.065491638183594e+02, 3.063687438964844e+02, 3.050221862792969e+02, 3.047802734375e+02, 3.037688293457031e+02, 3.037930603027344e+02, 3.038448181152344e+02, 3.040843200683594e+02, 3.042516174316406e+02, 3.072645874023438e+02, 3.0772265625e+02, 3.076467895507812e+02, 3.069666137695312e+02, 3.065372009277344e+02, 3.065844116210938e+02, 3.065560913085938e+02, 3.06064208984375e+02, 3.051891174316406e+02, 3.053666076660156e+02, 3.039945678710938e+02, 3.042120666503906e+02, 3.043890380859375e+02, 3.04509765625e+02, 3.061576843261719e+02, 3.076034545898438e+02, 3.071937866210938e+02, 3.069554748535156e+02, 3.068090515136719e+02, 3.05495361328125e+02, 3.054386291503906e+02, 3.058284912109375e+02, 3.048736267089844e+02, 3.051721496582031e+02, 3.034703979492188e+02, 3.040327758789062e+02] -bui[3].ets.senTHeaWatSup.T=[2.931499938964844e+02, 3.017375793457031e+02, 3.020613708496094e+02, 3.023153381347656e+02, 3.055313720703125e+02, 3.052536010742188e+02, 3.042958679199219e+02, 3.035077209472656e+02, 3.031562194824219e+02, 3.031648864746094e+02, 3.034610290527344e+02, 3.025975952148438e+02, 3.027616271972656e+02, 3.014402160644531e+02, 3.018485107421875e+02, 3.023167419433594e+02, 3.026917114257812e+02, 3.029522094726562e+02, 3.057943115234375e+02, 3.064951782226562e+02, 3.05297119140625e+02, 3.037147827148438e+02, 3.027351379394531e+02, 3.028830871582031e+02, 3.034294738769531e+02, 3.028167419433594e+02, 3.025327758789062e+02, 3.024306945800781e+02, 3.01562744140625e+02, 3.020895385742188e+02, 3.025107421875e+02, 3.028135986328125e+02, 3.051648559570312e+02, 3.064703063964844e+02, 3.053687133789062e+02, 3.032884826660156e+02, 3.020141906738281e+02, 3.015960388183594e+02, 3.022101745605469e+02, 3.024030456542969e+02, 3.016374816894531e+02, 3.023372192382812e+02, 3.009281005859375e+02, 3.015122375488281e+02, 3.021442565917969e+02, 3.026297302246094e+02, 3.034871520996094e+02, 3.066578979492188e+02, 3.066563720703125e+02, 3.061549987792969e+02, 3.053433837890625e+02, 3.053240966796875e+02, 3.053579711914062e+02, 3.054175720214844e+02, 3.0407470703125e+02, 3.043380737304688e+02, 3.025818481445312e+02, 3.032111511230469e+02, 3.035559997558594e+02, 3.036562805175781e+02, 3.037867126464844e+02, 3.072049560546875e+02, 3.074537963867188e+02, 3.073783874511719e+02, 3.067623901367188e+02, 3.064885559082031e+02, 3.065491943359375e+02, 3.063687744140625e+02, 3.050225524902344e+02, 3.047802124023438e+02, 3.037704467773438e+02, 3.037930297851562e+02, 3.038447875976562e+02, 3.040842590332031e+02, 3.042515869140625e+02, 3.072648315429688e+02, 3.077226867675781e+02, 3.076469116210938e+02, 3.069667053222656e+02, 3.065372924804688e+02, 3.065844421386719e+02, 3.065560607910156e+02, 3.060646362304688e+02, 3.051889953613281e+02, 3.053671569824219e+02, 3.039942321777344e+02, 3.042120361328125e+02, 3.043889465332031e+02, 3.045097351074219e+02, 3.061557006835938e+02, 3.076035461425781e+02, 3.0719384765625e+02, 3.069555053710938e+02, 3.068093872070312e+02, 3.054954833984375e+02, 3.054385375976562e+02, 3.058285827636719e+02, 3.048735656738281e+02, 3.051720886230469e+02, 3.034700012207031e+02, 3.040325927734375e+02] -bui[1].ets.senMasFloHeaWat.m_flow=[0e+00, 0e+00, 1.898260600864887e-02, 5.558320507407188e-02, 4.893864154815674e+00, 6.819127559661865e+00, 7.489790439605713e+00, 4.845127582550046e+00, 4.905826091766357e+00, 5.776716232299805e+00, 3.999471187591553e+00, 9.632790461182594e-03, 9.317685849964619e-03, 9.218775667250156e-03, 1.527554821223025e-02, 1.418779045343399e-01, 9.878342747688293e-01, 1.632190346717836e+00, 4.025968551635742e+00, 8.456682205200195e+00, 9.770571708679199e+00, 6.683019638061523e+00, 4.263322830200195e+00, 5.811371326446533e+00, 5.228538990020752e+00, 1.169855333864689e-02, 9.362855926156044e-03, 9.240400977432728e-03, 4.13688309490685e-02, 1.511057317256927e-01, 5.182194113731384e-01, 1.143105149269104e+00, 2.356300592422485e+00, 7.677027702331543e+00, 8.800955772399895e+00, 5.275593757629395e+00, 6.522547602653503e-01, 4.389696717262268e-01, 1.749025702476501e+00, 2.53650575876236e-01, 9.43621713668108e-03, 9.280153550207615e-03, 9.204484522342682e-03, 9.154953993856907e-03, 1.3495366089046e-02, 1.353315711021423e-01, 8.974179625511169e-01, 7.115048885345459e+00, 9.57325267791748e+00, 9.168635368347168e+00, 4.250844478607178e+00, 5.301825523376465e+00, 6.5230712890625e+00, 3.752466678619385e+00, 9.535087272524834e-03, 9.298264048993587e-03, 1.43201770260933e-02, 1.305898874998075e-01, 6.392407417297363e-01, 1.347905158996582e+00, 1.955610275268555e+00, 5.586593151092529e+00, 9.247532844543457e+00, 1.139803791046143e+01, 8.817961692810059e+00, 8.274239540100098e+00, 1.008009815216064e+01, 7.570955753326416e+00, 1.071910142898541e+00, 9.855867028236256e-01, 1.774942517280579e+00, 2.554805278778076e+00, 2.941301584243774e+00, 3.394830226898193e+00, 3.71849250793457e+00, 4.969037532806396e+00, 5.196169853210449e+00, 5.101781368255615e+00, 5.053284168243408e+00, 5.147923469543457e+00, 5.300461292266846e+00, 5.460578918457031e+00, 5.379587650299075e+00, 4.293516635894775e+00, 4.646565914154053e+00, 4.870217800140381e+00, 5.005420207977295e+00, 5.133610248565674e+00, 5.318098068237305e+00, 5.90245246887207e+00, 6.703339099884033e+00, 6.603340625762939e+00, 6.379133701324463e+00, 6.191201686859131e+00, 6.166211128234863e+00, 6.21026611328125e+00, 6.313513278961182e+00, 5.02326488494873e+00, 5.314912796020508e+00, 5.544558525085449e+00, 5.700516700744629e+00] -bui[2].ets.senMasFloHeaWat.m_flow=[1.08927321434021e+00, 1.795907402038574e+01, 2.179934310913086e+01, 2.434852027893066e+01, 6.271903610229492e+01, 2.408325386047363e+01, 2.269758796691895e+01, 4.783348464965825e+01, 3.625378799438477e+01, 1.384268856048584e+01, 4.934255981445312e+01, 4.822918701171875e+01, 4.952244186401367e+01, 1.843646430969238e+01, 2.16013584136963e+01, 2.645392417907715e+01, 3.059671020507812e+01, 3.348567962646485e+01, 6.825566864013672e+01, 3.572914123535156e+01, 3.22242546081543e+01, 3.040102195739746e+01, 5.060853576660156e+01, 1.224377346038818e+01, 2.791901969909668e+01, 5.321562957763672e+01, 4.98851432800293e+01, 4.591455459594727e+01, 2.231888008117679e+01, 2.707754707336426e+01, 3.095057487487793e+01, 3.375748443603516e+01, 6.423001861572266e+01, 5.782443237304688e+01, 3.205146789550777e+01, 2.020034027099609e+01, 4.943830108642578e+01, 1.857396721839905e+00, 8.969095230102539e+00, 4.917766571044922e+01, 4.121397018432617e+01, 4.76821594238281e+01, 1.270298862457275e+01, 2.12097053527832e+01, 2.746699905395508e+01, 3.229167556762695e+01, 4.150680541992188e+01, 6.952056884765625e+01, 3.7304931640625e+01, 3.745531845092773e+01, 6.802170562744141e+01, 4.041897964477539e+01, 3.42918701171875e+01, 6.963567352294922e+01, 6.457178497314453e+01, 6.710450744628906e+01, 3.238624191284187e+01, 4.066764831542965e+01, 4.412922668457031e+01, 4.494718170166016e+01, 4.589476013183594e+01, 7.9205810546875e+01, 4.357149124145508e+01, 4.658697509765625e+01, 6.29844856262207e+01, 7.318768310546875e+01, 4.334850692749023e+01, 6.493496704101562e+01, 7.685191345214834e+01, 7.426619720458982e+01, 5.728082275390625e+01, 4.793734359741211e+01, 4.805390548706055e+01, 5.047342300415039e+01, 5.250392150878906e+01, 8.565066528320312e+01, 6.310829162597656e+01, 5.38145637512207e+01, 5.289518737792969e+01, 8.303933715820312e+01, 4.633202362060547e+01, 5.147747039794978e+01, 8.302938079833987e+01, 7.779791259765625e+01, 7.957136535644531e+01, 4.956394577026367e+01, 5.192876052856445e+01, 5.388868713378906e+01, 5.576936340332031e+01, 7.275269317626953e+01, 8.452581787109375e+01, 5.587111663818359e+01, 5.661601638793945e+01, 8.767770385742188e+01, 4.533433532714844e+01, 4.643357467651367e+01, 8.081691741943359e+01, 7.413673400878906e+01, 7.661738586425781e+01, 4.203642272949219e+01, 4.869411087036133e+01] -bui[3].ets.senMasFloHeaWat.m_flow=[1.571464985609055e-01, 3.228268623352051e+00, 5.180605411529541e+00, 6.588604927062988e+00, 2.159749221801758e+01, 2.093972206115723e+01, 1.70149097442627e+01, 1.32411241531372e+01, 1.13555154800415e+01, 1.133831119537354e+01, 1.280898475646973e+01, 8.520345687866211e+00, 9.112197875976562e+00, 1.969306468963623e+00, 3.88222527503968e+00, 6.621611595153809e+00, 8.75394344329834e+00, 1.019044780731202e+01, 2.226832389831543e+01, 2.534822845458984e+01, 2.129783821105957e+01, 1.442903423309326e+01, 9.16075325012207e+00, 9.797467231750488e+00, 1.258059406280518e+01, 9.774674415588379e+00, 7.811793327331543e+00, 7.978377342224121e+00, 2.096417665481585e+00, 5.303206920623779e+00, 7.739288330078125e+00, 9.431750297546387e+00, 1.947212791442871e+01, 2.521017074584961e+01, 2.159100914001461e+01, 1.240018844604492e+01, 5.178074836730957e+00, 2.426526069641113e+00, 5.909488201141357e+00, 7.453341484069824e+00, 2.653945684432983e+00, 6.749518871307358e+00, 4.423816874623299e-02, 1.73407781124115e+00, 5.591653347015381e+00, 8.389596939086914e+00, 1.22506103515625e+01, 2.566482925415039e+01, 2.58751163482666e+01, 2.430535316467285e+01, 2.129661560058594e+01, 2.104817390441895e+01, 2.123485374450684e+01, 2.146800422668457e+01, 1.600892066955566e+01, 1.692952537536621e+01, 8.381622314453148e+00, 1.151257133483885e+01, 1.328360176086426e+01, 1.380711078643799e+01, 1.44228048324585e+01, 2.719780540466309e+01, 2.83508243560791e+01, 2.821074676513672e+01, 2.633650398254395e+01, 2.531932067871094e+01, 2.554865264892578e+01, 2.493159294128418e+01, 2.019123649597163e+01, 1.887505340576171e+01, 1.510770893096924e+01, 1.444156932830811e+01, 1.47196044921875e+01, 1.580342578887939e+01, 1.658483123779297e+01, 2.72007999420166e+01, 2.915568161010742e+01, 2.899045562744141e+01, 2.69730224609375e+01, 2.555946350097656e+01, 2.565438079833984e+01, 2.554097175598145e+01, 2.40920906066895e+01, 2.057294654846191e+01, 2.139528656005859e+01, 1.53040657043457e+01, 1.64052677154541e+01, 1.718058776855469e+01, 1.774246215820312e+01, 2.319929504394531e+01, 2.879435157775879e+01, 2.762334060668945e+01, 2.688577461242676e+01, 2.648945426940918e+01, 2.190062522888184e+01, 2.150214958190918e+01, 2.300973892211914e+01, 1.945287322998047e+01, 2.046139335632324e+01, 1.291395568847656e+01, 1.554636001586914e+01] +bui[3].ets.senTHeaWatSup.T=[2.931499938964844e+02, 3.017375793457031e+02, 3.020613708496094e+02, 3.023153381347656e+02, 3.055313720703125e+02, 3.052536010742188e+02, 3.042958679199219e+02, 3.035077209472656e+02, 3.031562194824219e+02, 3.031648559570312e+02, 3.034610290527344e+02, 3.025975952148438e+02, 3.027616271972656e+02, 3.014402465820312e+02, 3.018485107421875e+02, 3.023167419433594e+02, 3.026917114257812e+02, 3.029522094726562e+02, 3.057943115234375e+02, 3.064951782226562e+02, 3.05297119140625e+02, 3.037147827148438e+02, 3.027351379394531e+02, 3.028830871582031e+02, 3.034294738769531e+02, 3.028167419433594e+02, 3.025327758789062e+02, 3.024306945800781e+02, 3.01562744140625e+02, 3.020895385742188e+02, 3.025107421875e+02, 3.028135986328125e+02, 3.051649780273438e+02, 3.064703063964844e+02, 3.053687133789062e+02, 3.032884826660156e+02, 3.020141906738281e+02, 3.015960388183594e+02, 3.022101745605469e+02, 3.024030456542969e+02, 3.016374816894531e+02, 3.023372192382812e+02, 3.009281921386719e+02, 3.015122375488281e+02, 3.021442565917969e+02, 3.026297302246094e+02, 3.034871520996094e+02, 3.066578979492188e+02, 3.066563720703125e+02, 3.061549987792969e+02, 3.053433837890625e+02, 3.053240966796875e+02, 3.053579711914062e+02, 3.054175720214844e+02, 3.0407470703125e+02, 3.043380737304688e+02, 3.025818481445312e+02, 3.032111511230469e+02, 3.035559997558594e+02, 3.036562805175781e+02, 3.037867126464844e+02, 3.072049560546875e+02, 3.074537963867188e+02, 3.073783874511719e+02, 3.067623901367188e+02, 3.064885559082031e+02, 3.065491943359375e+02, 3.063687744140625e+02, 3.050225524902344e+02, 3.047802124023438e+02, 3.037704467773438e+02, 3.037930297851562e+02, 3.038448181152344e+02, 3.040842590332031e+02, 3.042515869140625e+02, 3.072642822265625e+02, 3.077226867675781e+02, 3.076469116210938e+02, 3.069667053222656e+02, 3.065372924804688e+02, 3.065844421386719e+02, 3.065560607910156e+02, 3.060646362304688e+02, 3.051889953613281e+02, 3.053671569824219e+02, 3.039942321777344e+02, 3.042120361328125e+02, 3.043889465332031e+02, 3.045097351074219e+02, 3.061557006835938e+02, 3.076035461425781e+02, 3.0719384765625e+02, 3.069555053710938e+02, 3.068093872070312e+02, 3.054954833984375e+02, 3.054385070800781e+02, 3.058285827636719e+02, 3.048737182617188e+02, 3.051720886230469e+02, 3.034700012207031e+02, 3.040325927734375e+02] +bui[1].ets.senMasFloHeaWat.m_flow=[0e+00, 0e+00, 1.898260600864887e-02, 5.558320507407188e-02, 4.893864154815674e+00, 6.819127559661865e+00, 7.489825248718262e+00, 4.845126152038572e+00, 4.905826091766357e+00, 5.776740074157715e+00, 3.999470949172974e+00, 9.63236577808857e-03, 9.317588992416859e-03, 9.218724444508553e-03, 1.527559012174611e-02, 1.418777406215668e-01, 9.878134727478027e-01, 1.632190346717836e+00, 4.0259690284729e+00, 8.456682205200195e+00, 9.77056884765625e+00, 6.683021068572998e+00, 4.263325214385986e+00, 5.811371326446533e+00, 5.228538990020752e+00, 1.180198322981596e-02, 9.363085962831974e-03, 9.240505285561085e-03, 4.136881604790731e-02, 1.511057317256927e-01, 5.182194113731384e-01, 1.143132448196411e+00, 2.356300830841064e+00, 7.677028179168701e+00, 8.800958633422844e+00, 5.275596141815186e+00, 6.522547602653503e-01, 4.389633238315582e-01, 1.74902081489563e+00, 2.536163926124573e-01, 9.436291642487049e-03, 9.280182421207428e-03, 9.2045022174716e-03, 9.154965169727802e-03, 1.349536702036858e-02, 1.353315860033035e-01, 8.974181413650513e-01, 7.115182399749756e+00, 9.573254585266113e+00, 9.168648719787598e+00, 4.250843048095703e+00, 5.301826477050781e+00, 6.523066997528076e+00, 3.752474546432495e+00, 9.535261429846287e-03, 9.298313409090042e-03, 1.43201695755127e-02, 1.305898874998075e-01, 6.392407417297363e-01, 1.347905158996582e+00, 1.955610275268555e+00, 5.586567878723145e+00, 9.247544288635254e+00, 1.139803886413574e+01, 8.817959785461426e+00, 8.274218559265137e+00, 1.008009815216064e+01, 7.57095193862915e+00, 1.07190239429472e+00, 9.856010675430165e-01, 1.774942517280579e+00, 2.554805278778076e+00, 2.941302061080933e+00, 3.394830226898193e+00, 3.718507528305054e+00, 4.968987941741943e+00, 5.196169853210449e+00, 5.101781368255615e+00, 5.053286075592041e+00, 5.147923469543457e+00, 5.300461769104004e+00, 5.460577964782715e+00, 5.379587650299075e+00, 4.293517589569092e+00, 4.646565437316895e+00, 4.870217800140381e+00, 5.005421161651611e+00, 5.133594512939453e+00, 5.318097114562988e+00, 5.902451992034912e+00, 6.703339099884033e+00, 6.603340625762939e+00, 6.379134178161621e+00, 6.191201686859131e+00, 6.166211128234863e+00, 6.210267066955566e+00, 6.313513278961182e+00, 5.023404121398926e+00, 5.314913749694824e+00, 5.544558525085449e+00, 5.700516700744629e+00] +bui[2].ets.senMasFloHeaWat.m_flow=[1.08927321434021e+00, 1.795907402038574e+01, 2.179934310913086e+01, 2.434852027893066e+01, 6.271903610229492e+01, 2.408325386047363e+01, 2.269788551330566e+01, 4.783348083496099e+01, 3.625376129150391e+01, 1.384261798858643e+01, 4.934238433837891e+01, 4.822918319702148e+01, 4.952244186401367e+01, 1.843646430969238e+01, 2.16013584136963e+01, 2.645392799377441e+01, 3.059670829772949e+01, 3.348567962646485e+01, 6.825566864013672e+01, 3.572911834716797e+01, 3.222425842285156e+01, 3.040105247497559e+01, 5.060854339599609e+01, 1.224376773834229e+01, 2.791898536682129e+01, 5.321562957763672e+01, 4.98851432800293e+01, 4.591455459594727e+01, 2.231888198852542e+01, 2.707754707336426e+01, 3.095057487487793e+01, 3.375763702392578e+01, 6.422992706298828e+01, 5.782443618774414e+01, 3.205147171020504e+01, 2.020034217834473e+01, 4.943830108642578e+01, 1.859569787979126e+00, 8.969082832336426e+00, 4.917767715454102e+01, 4.121397018432617e+01, 4.76821594238281e+01, 1.270298862457275e+01, 2.12097053527832e+01, 2.746699905395508e+01, 3.229167556762695e+01, 4.150681686401367e+01, 6.952052307128906e+01, 3.730498504638672e+01, 3.745532608032227e+01, 6.802191925048828e+01, 4.04189453125e+01, 3.429183959960938e+01, 6.963591003417969e+01, 6.457178497314453e+01, 6.710450744628906e+01, 3.23862495422364e+01, 4.066764831542965e+01, 4.412922668457031e+01, 4.494718170166016e+01, 4.589476013183594e+01, 7.9205810546875e+01, 4.357098007202148e+01, 4.658696746826172e+01, 6.298448181152344e+01, 7.318788146972656e+01, 4.334850692749023e+01, 6.493489837646484e+01, 7.685191345214834e+01, 7.426619720458982e+01, 5.728083801269531e+01, 4.793735122680664e+01, 4.805395126342773e+01, 5.047342300415039e+01, 5.250402450561523e+01, 8.564922332763672e+01, 6.310831451416016e+01, 5.38145637512207e+01, 5.289733123779297e+01, 8.303933715820312e+01, 4.633187866210938e+01, 5.147799301147517e+01, 8.302938079833987e+01, 7.779791259765625e+01, 7.957118988037109e+01, 4.956394958496094e+01, 5.192875671386719e+01, 5.388863754272461e+01, 5.576935577392578e+01, 7.275269317626953e+01, 8.452584075927734e+01, 5.587111282348633e+01, 5.661600494384766e+01, 8.767772674560547e+01, 4.533346176147461e+01, 4.643351364135742e+01, 8.081691741943359e+01, 7.413710784912109e+01, 7.661739349365234e+01, 4.203642272949219e+01, 4.869403076171875e+01] +bui[3].ets.senMasFloHeaWat.m_flow=[1.571464985609055e-01, 3.228268623352051e+00, 5.180605411529541e+00, 6.588604927062988e+00, 2.159749221801758e+01, 2.093972206115723e+01, 1.701495170593262e+01, 1.32411241531372e+01, 1.13555154800415e+01, 1.133829212188721e+01, 1.280898475646973e+01, 8.520345687866211e+00, 9.112197875976562e+00, 1.969306230545044e+00, 3.88222527503968e+00, 6.621613502502441e+00, 8.75394344329834e+00, 1.019044780731202e+01, 2.22683219909668e+01, 2.534822845458984e+01, 2.12978401184082e+01, 1.442903423309326e+01, 9.160751342773438e+00, 9.797467231750488e+00, 1.258059310913086e+01, 9.774672508239746e+00, 7.811793327331543e+00, 7.978377342224121e+00, 2.096417665481585e+00, 5.303206920623779e+00, 7.739288330078125e+00, 9.431820869445801e+00, 1.947210121154785e+01, 2.521017265319824e+01, 2.159101104736324e+01, 1.240018939971924e+01, 5.178074836730957e+00, 2.426523447036743e+00, 5.909489154815674e+00, 7.453340530395508e+00, 2.653945684432983e+00, 6.749518871307358e+00, 4.423795267939568e-02, 1.73407781124115e+00, 5.591653347015381e+00, 8.389596939086914e+00, 1.225061321258545e+01, 2.566486358642578e+01, 2.58751163482666e+01, 2.430535125732422e+01, 2.12966136932373e+01, 2.104817390441895e+01, 2.123485374450684e+01, 2.146801567077637e+01, 1.600892066955566e+01, 1.692952537536621e+01, 8.381623268127464e+00, 1.151257133483885e+01, 1.328360176086426e+01, 1.380711078643799e+01, 1.44228048324585e+01, 2.719780540466309e+01, 2.835082626342773e+01, 2.821074295043945e+01, 2.633650398254395e+01, 2.53193187713623e+01, 2.554865264892578e+01, 2.493159103393555e+01, 2.019122123718257e+01, 1.887505149841308e+01, 1.510771083831787e+01, 1.444157218933105e+01, 1.47196159362793e+01, 1.580342674255371e+01, 1.658487319946289e+01, 2.720040321350098e+01, 2.915568161010742e+01, 2.899045562744141e+01, 2.697306251525879e+01, 2.55594654083252e+01, 2.565437889099121e+01, 2.554097366333008e+01, 2.40920906066895e+01, 2.057294845581055e+01, 2.139523696899414e+01, 1.530406761169434e+01, 1.64052677154541e+01, 1.718056678771973e+01, 1.774245834350586e+01, 2.319929504394531e+01, 2.879435348510742e+01, 2.762334060668945e+01, 2.688576507568359e+01, 2.648945045471191e+01, 2.19006233215332e+01, 2.150216102600098e+01, 2.300973892211914e+01, 1.945314788818359e+01, 2.046139526367188e+01, 1.291395664215088e+01, 1.554633522033691e+01] bui[1].ets.TChiWatSupSet=[2.911499938964844e+02, 2.911499938964844e+02] bui[1].ets.senTChiWatSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02] bui[2].ets.TChiWatSupSet=[2.911499938964844e+02, 2.911499938964844e+02] From c61a062f27c37e1b8a821d249253717da4b9c195 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 11:41:53 -0700 Subject: [PATCH 103/183] changed port name, revised model --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 16 ++--- .../Loads/HotWater/ThermostaticMixingValve.mo | 62 ++++++++++--------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index c67b52abff5..bd5a43c0086 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -44,7 +44,7 @@ model HeatPumpHeatExchangerDHWTank mHot_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), dpValve_nominal=1000) "Thermostatic mixing valve" - annotation (Placement(transformation(extent={{-20,48},{-40,70}}))); + annotation (Placement(transformation(extent={{-20,50},{-40,72}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction dcwSpl( redeclare final package Medium = MediumBui, final m_flow_nominal= proHeaWat.m1_flow_nominal*{1,-1,-1}) "Splitter for domestic cold water" @@ -83,18 +83,18 @@ equation {-76,68},{-70,68}}, color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); - connect(tmv.port_hot, sinDHW.ports[1]) annotation (Line(points={{-40,59},{-45, - 59},{-45,60},{-48,60}}, color={0,127,255})); + connect(tmv.port_hot, sinDHW.ports[1]) annotation (Line(points={{-40,61},{-45, + 61},{-45,60},{-48,60}}, color={0,127,255})); connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-40,-10},{ -12,-10},{-12,-6}}, color={0,127,255})); connect(dcwSpl.port_3, proHotWat.port_a1) annotation (Line(points={{-2,4},{0,4},{0,28},{32,28}}, color={0,127,255})); connect(dcwSpl.port_2, tmv.port_col) annotation (Line(points={{-12,14},{-12, - 54.6},{-20,54.6}}, color={0,127,255})); - connect(proHotWat.port_b1, tmv.port_hotsou) annotation (Line(points={{32,40}, - {0,40},{0,63.4},{-20,63.4}}, color={0,127,255})); - connect(tmv.TSet, delT.u1) annotation (Line(points={{-18,67.8},{-12,67.8},{ - -12,68},{-8,68},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); + 56.6},{-20,56.6}}, color={0,127,255})); + connect(proHotWat.port_b1,tmv.port_hotSou) annotation (Line(points={{32,40}, + {0,40},{0,65.4},{-20,65.4}}, color={0,127,255})); + connect(tmv.TSet, delT.u1) annotation (Line(points={{-18,69.8},{-12,69.8},{ + -12,70},{-8,70},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, {68,24},{68,120},{-108,120},{-108,106},{-102,106}}, color={0,0,127})); annotation ( diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index c51b286bcac..a5138ad95a3 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -14,9 +14,9 @@ model ThermostaticMixingValve k=k, Ti=Ti, reset=Buildings.Types.Reset.Parameter) - annotation (Placement(transformation(extent={{40,60},{20,80}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) "Hot water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Actuators.Valves.ThreeWayLinear val( @@ -29,7 +29,7 @@ model ThermostaticMixingValve extent={{10,10},{-10,-10}}, rotation=180, origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hotsou(redeclare package Medium = + Modelica.Fluid.Interfaces.FluidPort_a port_hotSou(redeclare package Medium = Medium) "Port for hot water supply from source" annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = @@ -41,15 +41,16 @@ model ThermostaticMixingValve Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package Medium = Medium, m_flow_nominal=mHot_flow_nominal) "Source hot water temperature sensor" - annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" - annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium + = Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = Medium) "Mass flow rate of hot water to fixture" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Blocks.Logical.Hysteresis hysteresis(uLow=uLow, uHigh=uHigh) - annotation (Placement(transformation(extent={{56,24},{44,36}}))); + Modelica.Blocks.Logical.Hysteresis hys(uLow=uLow, uHigh=uHigh) + "Hysteresis to reset controller if flow starts" + annotation (Placement(transformation(extent={{-10,30},{-30,50}}))); Modelica.Blocks.Interfaces.RealInput TSet "Temperature setpoint of tempered hot water outlet" annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); @@ -58,32 +59,33 @@ protected parameter Real uHigh = 0.05*mHot_flow_nominal "High hysteresis threshold"; equation connect(senTemHot.T, conPID.u_m) - annotation (Line(points={{30,11},{30,58}}, color={0,0,127})); + annotation (Line(points={{30,11},{30,60},{-30,60},{-30,68}}, + color={0,0,127})); connect(val.port_2, senTemHot.port_a) annotation (Line(points={{10,-6.66134e-16}, {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, val.y) annotation (Line(points={{19,70},{0,70},{0,12},{ - 9.99201e-16,12}}, color={0,0,127})); - connect(senTemHot.T,THot) annotation (Line(points={{30,11},{30,40},{90,40},{ - 90,60},{110,60}}, color={0,0,127})); - connect(val.port_1, senTemHotSou.port_b) annotation (Line(points={{-10, - 1.77636e-15},{-10,2},{-20,2}}, color={0,127,255})); - connect(senTemHotSou.port_a, port_hotsou) annotation (Line(points={{-40,2},{-60, - 2},{-60,40},{-100,40}}, color={0,127,255})); - connect(val.port_3, senTemCw.port_b) annotation (Line(points={{-1.77636e-15,-10}, - {-1.77636e-15,-60},{-20,-60}}, color={0,127,255})); - connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-60},{-70,-60}, - {-70,-40},{-100,-40}}, color={0,127,255})); + connect(conPID.y, val.y) annotation (Line(points={{-19,80},{0,80},{0,12}}, + color={0,0,127})); + connect(senTemHot.T,THot) annotation (Line(points={{30,11},{30,60},{110,60}}, + color={0,0,127})); + connect(val.port_1, senTemHotSou.port_b) annotation (Line(points={{-10,0},{ + -20,0}}, color={0,127,255})); + connect(senTemHotSou.port_a,port_hotSou) annotation (Line(points={{-40,0},{ + -60,0},{-60,40},{-100,40}}, + color={0,127,255})); + connect(val.port_3, senTemCw.port_b) annotation (Line(points={{0,-10},{0,-40}, + {-20,-40}}, color={0,127,255})); + connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-40},{-100, + -40}}, color={0,127,255})); connect(senTemHot.port_b, senFloHot.port_a) annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); connect(senFloHot.port_b, port_hot) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(hysteresis.u,senFloHot. m_flow) - annotation (Line(points={{57.2,30},{60,30},{60,11}}, - color={0,0,127})); - connect(hysteresis.y, conPID.trigger) - annotation (Line(points={{43.4,30},{38,30},{38,58}}, color={255,0,255})); - connect(conPID.u_s, TSet) annotation (Line(points={{42,70},{50,70},{50,92},{-94, - 92},{-94,80},{-120,80}}, color={0,0,127})); + connect(hys.u, senFloHot.m_flow) + annotation (Line(points={{-8,40},{60,40},{60,11}}, color={0,0,127})); + connect(hys.y, conPID.trigger) + annotation (Line(points={{-31,40},{-38,40},{-38,68}}, color={255,0,255})); + connect(conPID.u_s, TSet) annotation (Line(points={{-42,80},{-120,80}}, + color={0,0,127})); annotation (preferredView="info",Documentation(info="

    This model implements a thermostatic mixing valve, which uses From 37b7ae39972091b70ecb2449fadbfe6463b103d1 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 11:51:00 -0700 Subject: [PATCH 104/183] Revised model, corrected icon syntax --- .../Loads/HotWater/ThermostaticMixingValve.mo | 60 +++++++++---------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index a5138ad95a3..7650946aec6 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -6,17 +6,30 @@ model ThermostaticMixingValve parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; parameter Real k = 0.1 "Proportional gain of valve controller"; parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; - Modelica.Fluid.Interfaces.FluidPort_b port_hot(redeclare package Medium = - Medium) "Port for hot water outlet to fixture(s)" + Modelica.Fluid.Interfaces.FluidPort_b port_hot( + redeclare package Medium = Medium) "Port for hot water outlet to fixture(s)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); + + Modelica.Fluid.Interfaces.FluidPort_a port_hotSou(redeclare package Medium = + Medium) "Port for hot water supply from source" + annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = + Medium) "Port for domestic cold water supply" + annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); + Modelica.Blocks.Interfaces.RealOutput THot + "Temperature of the outlet hot water supply to fixture" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Controls.Continuous.LimPID conPID( controllerType=Modelica.Blocks.Types.SimpleController.PI, k=k, Ti=Ti, reset=Buildings.Types.Reset.Parameter) + "Controller for thermostatic valve" annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot( + redeclare final package Medium = Medium, + final m_flow_nominal=mHot_flow_nominal) "Hot water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Actuators.Valves.ThreeWayLinear val( @@ -29,21 +42,13 @@ model ThermostaticMixingValve extent={{10,10},{-10,-10}}, rotation=180, origin={0,0}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hotSou(redeclare package Medium = - Medium) "Port for hot water supply from source" - annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = - Medium) "Port for domestic cold water supply" - annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); - Modelica.Blocks.Interfaces.RealOutput THot - "Temperature of the outlet hot water supply to fixture" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package Medium = Medium, m_flow_nominal=mHot_flow_nominal) "Source hot water temperature sensor" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium - = Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" + Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = + Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = Medium) "Mass flow rate of hot water to fixture" @@ -67,15 +72,14 @@ equation color={0,0,127})); connect(senTemHot.T,THot) annotation (Line(points={{30,11},{30,60},{110,60}}, color={0,0,127})); - connect(val.port_1, senTemHotSou.port_b) annotation (Line(points={{-10,0},{ - -20,0}}, color={0,127,255})); - connect(senTemHotSou.port_a,port_hotSou) annotation (Line(points={{-40,0},{ - -60,0},{-60,40},{-100,40}}, - color={0,127,255})); + connect(val.port_1, senTemHotSou.port_b) annotation (Line(points={{-10,0},{-20, + 0}}, color={0,127,255})); + connect(senTemHotSou.port_a,port_hotSou) annotation (Line(points={{-40,0},{-60, + 0},{-60,40},{-100,40}}, color={0,127,255})); connect(val.port_3, senTemCw.port_b) annotation (Line(points={{0,-10},{0,-40}, {-20,-40}}, color={0,127,255})); - connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-40},{-100, - -40}}, color={0,127,255})); + connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-40},{-100,-40}}, + color={0,127,255})); connect(senTemHot.port_b, senFloHot.port_a) annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); connect(senFloHot.port_b, port_hot) @@ -86,7 +90,9 @@ equation annotation (Line(points={{-31,40},{-38,40},{-38,68}}, color={255,0,255})); connect(conPID.u_s, TSet) annotation (Line(points={{-42,80},{-120,80}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" + annotation ( + defaultComponentName="theMixVal", + preferredView="info",Documentation(info="

    This model implements a thermostatic mixing valve, which uses a PI feedback controller to mix hot and cold fluid to achieve a specified @@ -110,29 +116,22 @@ Initial Implementation. fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - visible=use_inputFilter, extent={{-34,-28},{32,32}}, lineColor={0,0,0}, fillColor={135,135,135}, fillPattern=FillPattern.Solid), Ellipse( - visible=use_inputFilter, extent={{-34,32},{32,-28}}, lineColor={0,0,0}, fillColor={135,135,135}, fillPattern=FillPattern.Solid), Text( - visible=use_inputFilter, extent={{-22,26},{20,-20}}, textColor={0,0,0}, fillColor={135,135,135}, fillPattern=FillPattern.Solid, textString="M", textStyle={TextStyle.Bold}), - Text( - extent={{-42,58},{-162,8}}, - textColor={0,0,0}, - textString=DynamicSelect("", String(y, format=".2f"))), Rectangle( extent={{-40,22},{40,-22}}, lineColor={0,0,0}, @@ -148,7 +147,6 @@ Initial Implementation. origin={-78,40}, rotation=90), Line( - visible=use_inputFilter, points={{-32,-28},{28,-28}}), Rectangle( extent={{-40,22},{40,-22}}, From 3fb5d35c1c5234f2750960b83dfa934c8120387f Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 11:57:19 -0700 Subject: [PATCH 105/183] Simplified by changing Add to Subtract --- .../PartialHeatPumpHeatExchanger.mo | 12 +++---- .../Combined/HeatPumpHeatExchanger.mo | 4 +-- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 36 ++++++++++--------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index 38bef9c8009..cf37de3b337 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -362,8 +362,8 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat "Compute DeltaT needed on condenser side" annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium - = MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = + MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW( @@ -382,7 +382,8 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(nin=2) "Total power used for heating and hot water production" annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaSHW if have_hotWat and have_varFloEva + Buildings.Controls.OBC.CDL.Reals.Subtract + heaFloEvaSHW if have_hotWat and have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW @@ -422,9 +423,6 @@ model PartialHeatPumpHeatExchanger if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub(final k=-1) - if have_hotWat and have_varFloEva "Convert to subtraction" - annotation (Placement(transformation(extent={{-80,70},{-100,90}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub1(final k=-1) if have_varFloEva "Convert to subtraction" annotation (Placement(transformation(extent={{-80,216},{-100,236}}))); @@ -585,8 +583,6 @@ equation annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, 280},{-110,246},{-102,246}}, color={0,0,127})); - connect(toSub.y, heaFloEvaSHW.u2) annotation (Line(points={{-102,80},{-108,80}, - {-108,94},{-102,94}}, color={0,0,127})); connect(proHeaWat.PHea, toSub1.u) annotation (Line(points={{12,217},{20,217}, {20,226},{-78,226}}, color={0,0,127})); connect(toSub1.y, heaFloEvaHHW.u2) annotation (Line(points={{-102,226},{-110, diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 0d82576438b..e8f54e8d24d 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -48,8 +48,6 @@ equation color={0,0,127})); connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, {-114,43},{-12,43}}, color={255,0,255})); - connect(proHotWat.PHea, toSub.u) annotation (Line(points={{12,37},{18,37},{18, - 80},{-78,80}}, color={0,0,127})); connect(proHotWat.PPum, PPumHeaTot.u[2]) annotation (Line(points={{12,34},{176, 34},{176,420},{188,420},{188,420.5}}, color={0,0,127})); @@ -71,6 +69,8 @@ equation annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); connect(heaFloEvaSHW.u1, div1.u1) annotation (Line(points={{-102,106},{-290, 106},{-290,-34},{-102,-34}}, color={0,0,127})); + connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{12,37},{14, + 37},{14,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); annotation ( Documentation(info="

    diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index bd5a43c0086..bc54d1af6df 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -13,7 +13,7 @@ model HeatPumpHeatExchangerDHWTank transformation( extent={{10,-10},{-10,10}}, rotation=180, - origin={-50,-10}))); + origin={-52,-56}))); Subsystems.HeatPumpDHWTank proHotWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, @@ -39,7 +39,7 @@ model HeatPumpHeatExchangerDHWTank Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) if have_hotWat "Convert to sink" annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); - Loads.HotWater.ThermostaticMixingValve tmv( + Loads.HotWater.ThermostaticMixingValve theMixVal( redeclare package Medium = MediumBui, mHot_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), @@ -59,14 +59,12 @@ equation color={0,0,127})); connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38,100}, {28,100},{28,31},{30,31}}, color={0,0,127})); - connect(souDCW.T_in, delT.u2) annotation (Line(points={{-62,-14},{-64,-14},{ - -64,-60},{-156,-60},{-156,-6},{-152,-6}}, color={0,0,127})); + connect(souDCW.T_in, delT.u2) annotation (Line(points={{-64,-60},{-156,-60},{ + -156,-6},{-152,-6}}, color={0,0,127})); connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, {-114,43},{30,43}}, color={255,0,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) annotation (Line(points={{52,40},{260,40},{260,-360}}, color={0,127,255})); - connect(proHotWat.PHea, toSub.u) annotation (Line(points={{54,37},{56,37},{56, - 80},{-78,80}}, color={0,0,127})); connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{54,37},{66,37}, {66,38},{268,38},{268,80.5}}, color={0,0,127})); @@ -83,20 +81,24 @@ equation {-76,68},{-70,68}}, color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); - connect(tmv.port_hot, sinDHW.ports[1]) annotation (Line(points={{-40,61},{-45, - 61},{-45,60},{-48,60}}, color={0,127,255})); - connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-40,-10},{ - -12,-10},{-12,-6}}, color={0,127,255})); + connect(theMixVal.port_hot, sinDHW.ports[1]) annotation (Line(points={{-40,61}, + {-45,61},{-45,60},{-48,60}}, color={0,127,255})); + connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-42,-56},{ + -12,-56},{-12,-6}}, color={0,127,255})); connect(dcwSpl.port_3, proHotWat.port_a1) - annotation (Line(points={{-2,4},{0,4},{0,28},{32,28}}, color={0,127,255})); - connect(dcwSpl.port_2, tmv.port_col) annotation (Line(points={{-12,14},{-12, - 56.6},{-20,56.6}}, color={0,127,255})); - connect(proHotWat.port_b1,tmv.port_hotSou) annotation (Line(points={{32,40}, - {0,40},{0,65.4},{-20,65.4}}, color={0,127,255})); - connect(tmv.TSet, delT.u1) annotation (Line(points={{-18,69.8},{-12,69.8},{ - -12,70},{-8,70},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0,0,127})); + annotation (Line(points={{-2,4},{12,4},{12,28},{32,28}}, + color={0,127,255})); + connect(dcwSpl.port_2, theMixVal.port_col) annotation (Line(points={{-12,14}, + {-12,56.6},{-20,56.6}}, color={0,127,255})); + connect(proHotWat.port_b1, theMixVal.port_hotSou) annotation (Line(points={{ + 32,40},{0,40},{0,65.4},{-20,65.4}}, color={0,127,255})); + connect(theMixVal.TSet, delT.u1) annotation (Line(points={{-18,69.8},{-12, + 69.8},{-12,70},{-8,70},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0, + 0,127})); connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, {68,24},{68,120},{-108,120},{-108,106},{-102,106}}, color={0,0,127})); + connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{54,37},{60, + 37},{60,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); annotation ( Documentation(info="

    From 30fa9b4c81d8cb563177cd50af14541574f01120 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 12:11:49 -0700 Subject: [PATCH 106/183] Revised implementation --- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 106 ++++++++---------- 1 file changed, 49 insertions(+), 57 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index cf458a2ec7a..a5f50b0ea77 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -11,16 +11,12 @@ model HeatPumpWithTank parameter Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" - annotation (Placement(transformation(extent={{-96,-96},{-84,-84}}))); + annotation (Placement(transformation(extent={{-90,-88},{-70,-68}}))); parameter Real COP_nominal(final unit="1") "Heat pump COP at nominal conditions"; parameter Modelica.Units.SI.Temperature TCon_nominal "Condenser outlet temperature used to compute COP_nominal"; parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; parameter Real Ti=60 "Integrator time constant of circulation pump controller"; - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package - Medium = Medium, m_flow_nominal=mHotSou_flow_nominal) - "Temperature sensor for hot water source supply" - annotation (Placement(transformation(extent={{-20,44},{0,64}}))); Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -38,14 +34,7 @@ model HeatPumpWithTank dp1_nominal=datWatHea.dp1_nominal, dp2_nominal=datWatHea.dp2_nominal) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Fluid.Sensors.TemperatureTwoPort senTemHeaPumOut(redeclare package Medium = - Medium, m_flow_nominal=datWatHea.mHex_flow_nominal) - "Temperature of water leaving heat pump" annotation (Placement( - transformation( - extent={{-10,-10},{10,10}}, - rotation=0, - origin={50,6}))); + annotation (Placement(transformation(extent={{-10,-60},{10,-40}}))); Fluid.Movers.FlowControlled_m_flow pumHex( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, inputType=Buildings.Fluid.Types.InputType.Continuous, @@ -54,7 +43,7 @@ model HeatPumpWithTank riseTime=10, massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) "Pump with m_flow input" - annotation (Placement(transformation(extent={{60,30},{40,50}}))); + annotation (Placement(transformation(extent={{60,6},{40,26}}))); Fluid.Storage.StratifiedEnhancedInternalHex tanSte( T_start=datWatHea.TTan_nominal, @@ -74,71 +63,74 @@ model HeatPumpWithTank show_T=true, m_flow_nominal=mHotSou_flow_nominal) "Tank with steady-state heat exchanger balance" - annotation (Placement(transformation(extent={{-40,40},{-60,60}}))); + annotation (Placement(transformation(extent={{-40,0},{-60,20}}))); Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) - annotation (Placement(transformation(extent={{100,30},{80,50}}))); + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemTan "Temperature of the hot water tank" - annotation (Placement(transformation(extent={{-40,62},{-20,82}}))); + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); Controls.OBC.CDL.Reals.MultiplyByParameter dTTanHex2(k=datWatHea.mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{20,80},{40,100}}))); + annotation (Placement(transformation(extent={{20,70},{40,90}}))); Controls.OBC.CDL.Reals.PID conPI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, k=k, Ti=Ti) - annotation (Placement(transformation(extent={{-10,80},{10,100}}))); + annotation (Placement(transformation(extent={{-10,70},{10,90}}))); Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") "Electric power required for pumping equipment" annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); Modelica.Blocks.Interfaces.RealOutput QCon_flow "Actual heat pump heating heat flow rate added to fluid" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); - Controls.OBC.CDL.Reals.AddParameter addPar(p=datWatHea.dTTanHex) - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Controls.OBC.CDL.Reals.AddParameter TConSet(p=datWatHea.dTTanHex) + "Set point temperature for condenser" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); equation - connect(heaPum.port_b1, senTemHeaPumOut.port_a) - annotation (Line(points={{10,6},{40,6}}, color={0,127,255})); - connect(senTemHotSou.port_b, port_b1) annotation (Line(points={{0,54},{20,54}, - {20,60},{100,60}}, color={0,127,255})); - connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-20,-60}, - {-20,-6},{-10,-6}}, color={0,127,255})); - connect(heaPum.P,PHea) annotation (Line(points={{11,0},{24,0},{24,-14},{82,-14}, - {82,0},{110,0}}, color={0,0,127})); - connect(pumHex.port_a, senTemHeaPumOut.port_b) annotation (Line(points={{60,40}, - {70,40},{70,6},{60,6}}, color={0,127,255})); - connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,40},{-30, - 40},{-30,46.2},{-40,46.2}}, color={0,127,255})); - connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,42},{-40, - 20},{-10,20},{-10,6}}, color={0,127,255})); - connect(tanSte.port_a, senTemHotSou.port_a) annotation (Line(points={{-40,50}, - {-30,50},{-30,54},{-20,54}}, color={0,127,255})); - connect(tanSte.port_b, port_a1) annotation (Line(points={{-60,50},{-80,50},{-80, - 60},{-100,60}}, color={0,127,255})); - connect(bou.ports[1], senTemHeaPumOut.port_b) annotation (Line(points={{80,40}, - {70,40},{70,6},{60,6}}, color={0,127,255})); + connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-56,-60}, + {-56,-56},{-10,-56}}, color={0,127,255})); + connect(heaPum.P,PHea) annotation (Line(points={{11,-50},{82,-50},{82,0},{ + 110,0}}, color={0,0,127})); + connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,16},{ + -20,16},{-20,6},{-30,6},{-30,6.2},{-40,6.2}}, + color={0,127,255})); + connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,2},{ + -20,2},{-20,-44},{-10,-44}}, + color={0,127,255})); + connect(tanSte.port_b, port_a1) annotation (Line(points={{-50,0},{-50,-8},{ + -80,-8},{-80,60},{-100,60}}, + color={0,127,255})); connect(dTTanHex2.y, pumHex.m_flow_in) - annotation (Line(points={{42,90},{50,90},{50,52}}, color={0,0,127})); - connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-6},{20,-6},{20, - -60},{100,-60}}, color={0,127,255})); + annotation (Line(points={{42,80},{50,80},{50,28}}, color={0,0,127})); + connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-56},{56,-56},{ + 56,-60},{100,-60}}, + color={0,127,255})); connect(conPI.y, dTTanHex2.u) - annotation (Line(points={{12,90},{18,90}}, color={0,0,127})); + annotation (Line(points={{12,80},{18,80}}, color={0,0,127})); connect(TSetHotSou, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88, - 90},{-12,90}}, color={0,0,127})); - connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-19,72},{-8,72},{-8, - 70},{0,70},{0,78}}, color={0,0,127})); - connect(pumHex.P, PPum) annotation (Line(points={{39,49},{30,49},{30,-40},{110, - -40}}, color={0,0,127})); - connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,9},{11,4},{26, - 4},{26,-20},{110,-20}}, + 80},{-12,80}}, color={0,0,127})); + connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-19,30},{0,30},{0, + 68}}, color={0,0,127})); + connect(pumHex.P, PPum) annotation (Line(points={{39,25},{30,25},{30,-40},{ + 110,-40}}, + color={0,0,127})); + connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,-41},{11, + -42},{80,-42},{80,-20},{110,-20}}, color={0,0,127})); connect(senTemTan.port, tanSte.heaPorVol[4]) - annotation (Line(points={{-40,72},{-50,72},{-50,50}}, color={191,0,0})); - connect(addPar.y, heaPum.TSet) annotation (Line(points={{-38,0},{-28,0},{-28, - 9},{-12,9}}, color={0,0,127})); - connect(addPar.u, TSetHotSou) - annotation (Line(points={{-62,0},{-110,0}}, color={0,0,127})); + annotation (Line(points={{-40,30},{-44,30},{-44,10},{-50,10}}, + color={191,0,0})); + connect(TConSet.y, heaPum.TSet) annotation (Line(points={{-38,-40},{-28,-40}, + {-28,-41},{-12,-41}}, color={0,0,127})); + connect(TConSet.u, TSetHotSou) annotation (Line(points={{-62,-40},{-88,-40},{ + -88,0},{-110,0}}, color={0,0,127})); + connect(heaPum.port_b1, pumHex.port_a) annotation (Line(points={{10,-44},{70, + -44},{70,16},{60,16}}, color={0,127,255})); + connect(pumHex.port_a, bou.ports[1]) annotation (Line(points={{60,16},{70,16}, + {70,-20},{60,-20}}, color={0,127,255})); + connect(tanSte.port_a, port_b1) annotation (Line(points={{-50,20},{-50,52},{ + 26,52},{26,60},{100,60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

    This model implements a domestic hot water source for a low-temperature From 5d2d4e38aba549ab9ce6e091bdd648f46d988c46 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 12:56:29 -0700 Subject: [PATCH 107/183] Revised models --- .../DirectHeatExchangerWithAuxHeat.mo | 147 ++++++++++++++---- .../BaseClasses/partialHeaterAndFixture.mo | 38 +++-- ...ndFixtureDirectHeatExchangerWithAuxHeat.mo | 8 +- .../DHC/Loads/HotWater/WaterDraw.mo | 54 ++++--- 4 files changed, 171 insertions(+), 76 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo index 792b365318e..620cb58831c 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo @@ -15,11 +15,11 @@ model DirectHeatExchangerWithAuxHeat dp_nominal=dpEle_nominal, QMax_flow=QMax_flow) if have_eleHea == true "Supplemental electric resistance domestic hot water heater" - annotation (Placement(transformation(extent={{10,16},{30,-4}}))); + annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = Medium, m_flow_nominal=mHotSou_flow_nominal) "Temperature sensor for hot water supply" - annotation (Placement(transformation(extent={{60,-4},{80,16}}))); + annotation (Placement(transformation(extent={{58,50},{78,70}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -28,11 +28,11 @@ model DirectHeatExchangerWithAuxHeat dp1_nominal=dpHotSou_nominal, dp2_nominal=dpDis_nominal, eps=eps) "Domestic hot water heater heat exchanger" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + annotation (Placement(transformation(extent={{-80,-64},{-60,-44}}))); Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = Medium, m_flow_nominal=mHotSou_flow_nominal) "Temperature sensor for hot water leaving heat exchanger" - annotation (Placement(transformation(extent={{-40,-4},{-20,16}}))); + annotation (Placement(transformation(extent={{-38,-50},{-18,-30}}))); parameter Modelica.Units.SI.PressureDifference dpHotSou_nominal=0 "Pressure difference in heat exchanger on hot water side"; parameter Modelica.Units.SI.PressureDifference dpDis_nominal=0 @@ -47,33 +47,37 @@ protected redeclare final package Medium = Medium, final m_flow_nominal=mHotSou_flow_nominal, final show_T=false) if have_eleHea == false "Pipe without electric resistance" - annotation (Placement(transformation(extent={{10,44},{30,24}}))); + annotation (Placement(transformation(extent={{10,10},{30,-10}}))); equation connect(senTemHexOut.port_a, hex.port_b1) - annotation (Line(points={{-40,6},{-60,6}}, color={0,127,255})); + annotation (Line(points={{-38,-40},{-50,-40},{-50,-48},{-60,-48}}, + color={0,127,255})); connect(senTemHexOut.port_b, heaEle.port_a) - annotation (Line(points={{-20,6},{10,6}}, color={0,127,255})); - connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-20,6},{0, - 6},{0,34},{10,34}}, color={0,127,255})); + annotation (Line(points={{-18,-40},{10,-40}}, + color={0,127,255})); + connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-18,-40},{0, + -40},{0,0},{10,0}}, color={0,127,255})); connect(heaEle.port_b, senTemHot.port_a) - annotation (Line(points={{30,6},{60,6}}, color={0,127,255})); - connect(pip.port_b, senTemHot.port_a) annotation (Line(points={{30,34},{40,34}, - {40,6},{60,6}}, color={0,127,255})); - connect(senTemHot.port_b, port_b1) annotation (Line(points={{80,6},{90,6},{90, - 60},{100,60}}, color={0,127,255})); + annotation (Line(points={{30,-40},{40,-40},{40,60},{58,60}}, + color={0,127,255})); + connect(pip.port_b, senTemHot.port_a) annotation (Line(points={{30,0},{40,0},{ + 40,60},{58,60}},color={0,127,255})); + connect(senTemHot.port_b, port_b1) annotation (Line(points={{78,60},{100,60}}, + color={0,127,255})); connect(port_a1, hex.port_a1) - annotation (Line(points={{-100,60},{-80,60},{-80,6}}, color={0,127,255})); - connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-2},{40,-2},{40,-20}, - {90,-20},{90,0},{110,0}}, color={0,0,127})); - connect(TSetHotSou, heaEle.TSet) annotation (Line(points={{-110,0},{-90,0},{-90, - -20},{0,-20},{0,-2},{8,-2}}, color={0,0,127})); - connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-6},{-80,-60},{-100, - -60}}, color={0,127,255})); - connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60},{-60, - -6}}, color={0,127,255})); - connect(senTemHexOut.T, THexOut) annotation (Line(points={{-30,17},{-30,18},{ - -12,18},{-12,-22},{96,-22},{96,-20},{110,-20}}, color={0,0,127})); + annotation (Line(points={{-100,60},{-86,60},{-86,-48},{-80,-48}}, + color={0,127,255})); + connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-32},{82,-32},{82,0}, + {110,0}}, color={0,0,127})); + connect(TSetHotSou, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, + -32},{8,-32}}, color={0,0,127})); + connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-60},{-100,-60}}, + color={0,127,255})); + connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60}}, + color={0,127,255})); + connect(senTemHexOut.T, THexOut) annotation (Line(points={{-28,-29},{-28,-20}, + {110,-20}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

    This model implements a basic domestic hot water source for a @@ -106,10 +110,93 @@ Initial Implementation. extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255}, - fillPattern=FillPattern.Solid), Line( - points={{-80,0},{-70,0},{-60,20},{-40,-20},{-20,20},{0,-20},{20,20},{ - 40,-20},{60,20},{70,0},{80,0}}, - color={238,46,47}, - thickness=1)}), Diagram( + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-102,62},{-72,58}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-72,30},{-68,62}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-72,34},{-20,30}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{28,62},{100,58}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{28,30},{32,62}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-104,-58},{-74,-62}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-74,-62},{-70,-30}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{26,-62},{30,-30}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{26,-58},{98,-62}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-20,34},{28,30}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-20,-30},{28,-34}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-72,-30},{-20,-34}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={0,0,127}, + fillPattern=FillPattern.Solid),Rectangle( + extent={{-60,40},{20,-40}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid),Rectangle( + extent={{40,80},{80,40}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid, + visible=have_eleHea), Text( + extent={{-58,-8},{18,-36}}, + textColor={255,255,255}, + textString="eps=%eps")}), + Diagram( coordinateSystem(preserveAspectRatio=false))); end DirectHeatExchangerWithAuxHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo index 193ff157c6c..75df79b2bd0 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo @@ -29,17 +29,17 @@ model partialHeaterAndFixture Fluid.Sources.MassFlowSource_T souDis( redeclare package Medium = Medium, m_flow=mDis_flow_nominal, - T(displayUnit="degC") = TDis) - "Source of district network water" annotation ( + T(displayUnit="degC") = TDis) "Source of district network water" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=90, origin={-30,-50}))); Modelica.Blocks.Sources.Constant conTSetHotSou(k=TSetHotSou) "Temperature setpoint for domestic hot water source supplied from heater" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); - WaterDraw loa(redeclare package Medium = Medium, mHot_flow_nominal= - mHot_flow_nominal) "Tempered water draw" + annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + WaterDraw loa( + redeclare package Medium = Medium, + mHot_flow_nominal=mHot_flow_nominal) "Tempered water draw" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Sources.CombiTimeTable sch( tableOnFile=true, @@ -48,31 +48,35 @@ model partialHeaterAndFixture smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fixture draw fraction schedule" - annotation (Placement(transformation(extent={{100,20},{80,40}}))); + annotation (Placement(transformation(extent={{40,20},{60,40}}))); - Fluid.Sources.Boundary_pT sinDis(redeclare package Medium = Medium, T( - displayUnit="degC")) "Sink of district network water" annotation ( + Fluid.Sources.Boundary_pT sinDis( + redeclare package Medium = Medium, + T(final unit="K", + displayUnit="degC")) "Sink of district network water" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=90, - origin={-70,-50}))); - Modelica.Blocks.Interfaces.RealOutput PEle + origin={-60,-50}))); + Modelica.Blocks.Interfaces.RealOutput PEle(final unit="W") "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Modelica.Blocks.Sources.Constant conTSetHot(k=TSetHot) + Modelica.Blocks.Sources.Constant conTSetHot(k(final unit="K")=TSetHot) "Temperature setpoint for hot water supply to fixture" - annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); + annotation (Placement(transformation(extent={{-90,20},{-70,40}}))); equation connect(tmv.THot,THot) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, color={0,0,127})); connect(loa.sch, sch.y[1]) - annotation (Line(points={{61,3},{74,3},{74,30},{79,30}}, color={0,0,127})); + annotation (Line(points={{39,6},{34,6},{34,16},{70,16},{70,30},{61,30}}, + color={0,0,127})); connect(conTSetHot.y, tmv.TSet) - annotation (Line(points={{-79,30},{-2,30},{-2,8}}, color={0,0,127})); + annotation (Line(points={{-69,30},{-10,30},{-10,8},{-2,8}}, + color={0,0,127})); connect(tmv.port_hot, loa.port_hot) - annotation (Line(points={{20,0},{39.8,0}}, color={0,127,255})); - connect(tmv.port_col, souCol.ports[1]) annotation (Line(points={{0,-4},{-10, - -4},{-10,-26},{10,-26},{10,-40}}, color={0,127,255})); + annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); + connect(tmv.port_col, souCol.ports[1]) annotation (Line(points={{0,-4},{-10,-4}, + {-10,-26},{10,-26},{10,-40}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

    Partial base class for hot water source, thermostatic mixing, and fixture load examples. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index a45660e96f6..8762327880d 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -15,14 +15,14 @@ equation connect(gen.port_b1, tmv.port_hotsou) annotation (Line(points={{-30,6},{-10,6}, {-10,4},{0,4}}, color={0,127,255})); - connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, - {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); + connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-54,6}, + {-54,-20},{10,-20},{10,-40}}, color={0,127,255})); connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20, -6},{-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) - annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); + annotation (Line(points={{-50,-6},{-60,-6},{-60,-40}}, color={0,127,255})); connect(conTSetHotSou.y, gen.TSetHotSou) - annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); + annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); annotation (experiment( diff --git a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo index 8abcc890092..185f2f7c922 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo @@ -3,39 +3,43 @@ model WaterDraw "A model for hot water draws from fixture(s)" replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal hot water flow rate to fixture"; - Modelica.Fluid.Interfaces.FluidPort_a port_hot(redeclare package Medium = - Medium) "Port for hot water supply to fixture" - annotation (Placement(transformation(extent={{-112,-10},{-92,10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_hot( + redeclare package Medium = Medium) "Port for hot water supply to fixture" + annotation (Placement(transformation(extent={{-110,-10},{-90,10}}), + iconTransformation(extent={{-110,-10},{-90,10}}))); Fluid.Sources.MassFlowSource_T sinHot( redeclare package Medium = Medium, use_m_flow_in=true, nPorts=1) "Sink for hot water supply" annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(k=-mHot_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{60,10},{40,30}}))); - Modelica.Blocks.Continuous.Integrator watCon(k=-1) "Integrated hot water consumption" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); - Modelica.Blocks.Interfaces.RealOutput MHot "Mass of hot water used" - annotation (Placement(transformation(extent={{100,-82},{120,-62}}), - iconTransformation(extent={{100,-82},{120,-62}}))); - Modelica.Blocks.Interfaces.RealInput sch "Hot water to fixture draw fraction" - annotation (Placement(transformation(extent={{120,20},{100,40}}), - iconTransformation(extent={{120,20},{100,40}}))); + Modelica.Blocks.Math.Gain gaiDhw(final k=-mHot_flow_nominal) "Gain for multiplying domestic hot water schedule" + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=180, + origin={-70,60}))); + Modelica.Blocks.Interfaces.RealInput sch( + final min=0, + final unit="1") "Hot water to fixture draw fraction" + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=180, + origin={-110,60}), + iconTransformation(extent={{10,-10},{-10,10}}, + rotation=180, + origin={-110,60}))); equation - connect(watCon.u,gaiDhw. y) annotation (Line(points={{38,-80},{20,-80},{20,20}, - {39,20}}, color={0,0,127})); - connect(sch, gaiDhw.u) annotation (Line(points={{110,30},{86,30},{86,20},{62, - 20}}, color={0,0,127})); + connect(sch, gaiDhw.u) annotation (Line(points={{-110,60},{-82,60}}, + color={0,0,127})); connect(port_hot, sinHot.ports[1]) - annotation (Line(points={{-102,0},{-66,0}}, color={0,127,255})); - connect(sinHot.m_flow_in, gaiDhw.y) annotation (Line(points={{-44,8},{-20,8}, - {-20,20},{39,20}}, color={0,0,127})); - connect(watCon.y, MHot) annotation (Line(points={{61,-80},{80,-80},{80,-72},{ - 110,-72}}, color={0,0,127})); - annotation (preferredView="info",Documentation(info=" + annotation (Line(points={{-100,0},{-66,0}}, color={0,127,255})); + connect(sinHot.m_flow_in, gaiDhw.y) annotation (Line(points={{-44,8},{-20,8},{ + -20,60},{-59,60}}, color={0,0,127})); + annotation ( + defaultComponentName="watDra", + Documentation(info="

    -This model implements a hot water sink, representing a fixturs(s), -where the flow rate of hot water draw can be specified as an input fraction +This model implements a hot water sink, representing one or several fixtures. +

    +

    +Input to the model is the flow rate of hot water draw, specified as an input fraction of a nominal value.

    ", revisions=" From ed89b88bd3dd63ecaac112ce985374234b7621d2 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 13:01:49 -0700 Subject: [PATCH 108/183] Renamed models --- ...lHeaterAndFixture.mo => PartialHeaterAndFixture.mo} | 7 +++---- .../Loads/HotWater/Examples/BaseClasses/package.order | 2 +- .../HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo | 6 +++--- .../Examples/HeaterAndFixtureHeatPumpWithTank.mo | 10 +++++----- 4 files changed, 12 insertions(+), 13 deletions(-) rename Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/{partialHeaterAndFixture.mo => PartialHeaterAndFixture.mo} (97%) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo similarity index 97% rename from Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo rename to Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo index 75df79b2bd0..e9159f9a31e 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/partialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo @@ -1,5 +1,5 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses; -model partialHeaterAndFixture +model PartialHeaterAndFixture "Partial base class for hot water source, thermostatic mixing, and fixture load examples." replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.Temperature TSetHotSou = 273.15+50 "Temperature setpoint of hot water supply source from heater"; @@ -52,8 +52,7 @@ model partialHeaterAndFixture Fluid.Sources.Boundary_pT sinDis( redeclare package Medium = Medium, - T(final unit="K", - displayUnit="degC")) "Sink of district network water" annotation ( + T(displayUnit="degC")) "Sink of district network water" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=90, @@ -96,4 +95,4 @@ Initial implementation. StopTime=864000, Interval=1, Tolerance=1e-06)); -end partialHeaterAndFixture; +end PartialHeaterAndFixture; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order index ebb8f6f5716..8093fd47ab7 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.order @@ -1 +1 @@ -partialHeaterAndFixture +PartialHeaterAndFixture diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo index 8762327880d..757bb6d6a3b 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo @@ -1,7 +1,7 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; model HeaterAndFixtureDirectHeatExchangerWithAuxHeat extends Modelica.Icons.Example; - extends BaseClasses.partialHeaterAndFixture( + extends BaseClasses.PartialHeaterAndFixture( souCol(nPorts=2), souDis(nPorts=1), sinDis(nPorts=1)); @@ -13,8 +13,6 @@ model HeaterAndFixtureDirectHeatExchangerWithAuxHeat annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); equation - connect(gen.port_b1, tmv.port_hotsou) annotation (Line(points={{-30,6},{-10,6}, - {-10,4},{0,4}}, color={0,127,255})); connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-54,6}, {-54,-20},{10,-20},{10,-40}}, color={0,127,255})); connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20, @@ -25,6 +23,8 @@ equation annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); + connect(tmv.port_hotSou, gen.port_b1) annotation (Line(points={{0,4},{-14,4}, + {-14,6},{-30,6}}, color={0,127,255})); annotation (experiment( StopTime=86400, Tolerance=1e-06), diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index a780f989708..c4f98b1d3cd 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -1,7 +1,7 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; model HeaterAndFixtureHeatPumpWithTank extends Modelica.Icons.Example; - extends Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses.partialHeaterAndFixture( + extends Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses.PartialHeaterAndFixture( souCol(nPorts=2), souDis(nPorts=1), sinDis(nPorts=1)); @@ -26,18 +26,18 @@ model HeaterAndFixtureHeatPumpWithTank annotation (Placement(transformation(extent={{-46,16},{-36,26}}))); equation - connect(gen.port_b1, tmv.port_hotsou) annotation (Line(points={{-30,6},{-10,6}, - {-10,4},{0,4}}, color={0,127,255})); connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20,-6}, {-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) - annotation (Line(points={{-50,-6},{-70,-6},{-70,-40}}, color={0,127,255})); + annotation (Line(points={{-50,-6},{-60,-6},{-60,-40}}, color={0,127,255})); connect(conTSetHotSou.y, gen.TSetHotSou) - annotation (Line(points={{-79,0},{-51,0}}, color={0,0,127})); + annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, 80}}, color={0,0,127})); + connect(tmv.port_hotSou, gen.port_b1) annotation (Line(points={{0,4},{-20,4}, + {-20,6},{-30,6}}, color={0,127,255})); annotation (experiment( StopTime=86400, Tolerance=1e-06), From 26162ea94437d82d1d0bc2c0f6373170fbc6c1c9 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 13:04:26 -0700 Subject: [PATCH 109/183] Renamed models --- ...eat.mo => DirectHeatExchangerWithElectricHeat.mo} | 6 +++--- ...AndFixtureDirectHeatExchangerWithElectricHeat.mo} | 12 ++++++------ .../DHC/Loads/HotWater/Examples/package.order | 2 +- .../Experimental/DHC/Loads/HotWater/package.order | 2 +- ...ndFixtureDirectHeatExchangerWithElectricHeat.txt} | 0 ...ndFixtureDirectHeatExchangerWithElectricHeat.mos} | 4 ++-- ...ndFixtureDirectHeatExchangerWithElectricHeat.mos} | 0 7 files changed, 13 insertions(+), 13 deletions(-) rename Buildings/Experimental/DHC/Loads/HotWater/{DirectHeatExchangerWithAuxHeat.mo => DirectHeatExchangerWithElectricHeat.mo} (98%) rename Buildings/Experimental/DHC/Loads/HotWater/Examples/{HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo => HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo} (90%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt => Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt} (100%) rename Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/{HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos => HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos} (59%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos => Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos} (100%) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo similarity index 98% rename from Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo rename to Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index 620cb58831c..b2c79409bbc 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -1,5 +1,5 @@ within Buildings.Experimental.DHC.Loads.HotWater; -model DirectHeatExchangerWithAuxHeat +model DirectHeatExchangerWithElectricHeat "A model for generating hot water using a district heat exchanger and supplemental electric resistance" extends Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( @@ -86,7 +86,7 @@ district through a heat-exchanger and optional electric resistance to bring the temperature of produced hot water to setpoint.

    -\"image\" +\"image\"

    It is based on Fig. 5 in Evaluations of different domestic hot water @@ -199,4 +199,4 @@ Initial Implementation. textString="eps=%eps")}), Diagram( coordinateSystem(preserveAspectRatio=false))); -end DirectHeatExchangerWithAuxHeat; +end DirectHeatExchangerWithElectricHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo similarity index 90% rename from Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo rename to Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index 757bb6d6a3b..565677af4f3 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -1,11 +1,11 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; -model HeaterAndFixtureDirectHeatExchangerWithAuxHeat +model HeaterAndFixtureDirectHeatExchangerWithElectricHeat extends Modelica.Icons.Example; extends BaseClasses.PartialHeaterAndFixture( souCol(nPorts=2), souDis(nPorts=1), sinDis(nPorts=1)); - DirectHeatExchangerWithAuxHeat gen( + DirectHeatExchangerWithElectricHeat gen( redeclare package Medium = Medium, mHotSou_flow_nominal=mHotSou_flow_nominal, mDis_flow_nominal=mDis_flow_nominal) @@ -28,14 +28,14 @@ equation annotation (experiment( StopTime=86400, Tolerance=1e-06), - __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos" + __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos" "Simulate and plot"),Documentation(info="

    This model implements an example hot water system where the hot water is produced using The hydronic arrangement modeled in - -Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithAuxHeat, + +Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithElectricHeat, thermostatically mixed down to a distribution temperature, and supplied to a fixture load defined by a schedule.

    @@ -60,4 +60,4 @@ Initial implementation.
")); -end HeaterAndFixtureDirectHeatExchangerWithAuxHeat; +end HeaterAndFixtureDirectHeatExchangerWithElectricHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order index 7d42afb761b..0d94166c8e6 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order @@ -1,3 +1,3 @@ -HeaterAndFixtureDirectHeatExchangerWithAuxHeat +HeaterAndFixtureDirectHeatExchangerWithElectricHeat HeaterAndFixtureHeatPumpWithTank BaseClasses diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order index 006e675d11b..c18f1a3af9c 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -1,4 +1,4 @@ -DirectHeatExchangerWithAuxHeat +DirectHeatExchangerWithElectricHeat HeatPumpWithTank ThermostaticMixingValve WaterDraw diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithAuxHeat.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos similarity index 59% rename from Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos rename to Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos index 9a51efe5c2a..33d74141292 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos @@ -1,5 +1,5 @@ -simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithAuxHeat"); -createPlot(filename="HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mat", id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithElectricHeat"); +createPlot(filename="HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mat", id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithAuxHeat.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos From 5f092083d05f7a9e26e9af4b9e6eeef76f77e073 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Fri, 29 Sep 2023 13:05:41 -0700 Subject: [PATCH 110/183] Added icon --- Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo index 30e281aa337..b2475fe7f87 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.mo @@ -1,6 +1,6 @@ within Buildings.Experimental.DHC.Loads.HotWater; package Data "Package for data related to hot water generation" - + extends Modelica.Icons.MaterialPropertiesPackage; annotation (preferredView="info", Documentation(info="

Package for data related to hot water generation. From 7b9ae70fb480c891642b7c8d066bc0d6a17c9f9c Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 2 Oct 2023 08:32:26 -0700 Subject: [PATCH 111/183] Corrected figure name --- ...AndFixtureDirectHeatExchangerWithElectricHeat.mo | 2 +- ....png => DirectHeatExchangerWithElectricHeat.png} | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/{DirectHeatExchangerWithAuxHeat.png => DirectHeatExchangerWithElectricHeat.png} (100%) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index 565677af4f3..84c9f82ca11 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -46,7 +46,7 @@ published by ASHRAE in 2022 at .

-\"image\" +\"image\"

", revisions="
    diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.png b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.png similarity index 100% rename from Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithAuxHeat.png rename to Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.png From c87a6ccc05e6166d40b94865587a1e93f8ae7993 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 2 Oct 2023 08:54:09 -0700 Subject: [PATCH 112/183] Changed icon and connector names --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 10 +- .../BuildingTimeSeriesWithETSDHWTank.mo | 32 +-- .../BaseClasses/PartialHeaterAndFixture.mo | 5 +- .../Loads/HotWater/ThermostaticMixingValve.mo | 202 +++++++++--------- .../DHC/Loads/HotWater/WaterDraw.mo | 15 +- 5 files changed, 137 insertions(+), 127 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index bc54d1af6df..1900a4be2ea 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -41,7 +41,7 @@ model HeatPumpHeatExchangerDHWTank annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); Loads.HotWater.ThermostaticMixingValve theMixVal( redeclare package Medium = MediumBui, - mHot_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - + mMix_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal), dpValve_nominal=1000) "Thermostatic mixing valve" annotation (Placement(transformation(extent={{-20,50},{-40,72}}))); @@ -81,7 +81,7 @@ equation {-76,68},{-70,68}}, color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); - connect(theMixVal.port_hot, sinDHW.ports[1]) annotation (Line(points={{-40,61}, + connect(theMixVal.port_mix, sinDHW.ports[1]) annotation (Line(points={{-40,61}, {-45,61},{-45,60},{-48,60}}, color={0,127,255})); connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-42,-56},{ -12,-56},{-12,-6}}, color={0,127,255})); @@ -90,9 +90,9 @@ equation color={0,127,255})); connect(dcwSpl.port_2, theMixVal.port_col) annotation (Line(points={{-12,14}, {-12,56.6},{-20,56.6}}, color={0,127,255})); - connect(proHotWat.port_b1, theMixVal.port_hotSou) annotation (Line(points={{ - 32,40},{0,40},{0,65.4},{-20,65.4}}, color={0,127,255})); - connect(theMixVal.TSet, delT.u1) annotation (Line(points={{-18,69.8},{-12, + connect(proHotWat.port_b1, theMixVal.port_hotSou) annotation (Line(points={{32,40}, + {0,40},{0,65.4},{-20,65.4}}, color={0,127,255})); + connect(theMixVal.TMixSet, delT.u1) annotation (Line(points={{-18,69.8},{-12, 69.8},{-12,70},{-8,70},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0, 0,127})); connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 392537f61b9..d85204dbc95 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -37,19 +37,19 @@ model BuildingTimeSeriesWithETSDHWTank Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) "Cold water temperature" - annotation (Placement(transformation(extent={{60,80},{80,100}}))); + annotation (Placement(transformation(extent={{70,70},{90,90}}))); Controls.OBC.CDL.Reals.Sources.Constant THotWatSupSet(k=bui.THotWatSup_nominal) "Hot water supply temperature set point" - annotation (Placement(transformation(extent={{20,80},{40,100}}))); + annotation (Placement(transformation(extent={{30,70},{50,90}}))); Controls.OBC.CDL.Reals.Sources.Constant TChiWatSupSet(k=bui.TChiWatSup_nominal) "Chilled water supply temperature set point" - annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + annotation (Placement(transformation(extent={{-10,70},{10,90}}))); Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMaxSet(k=bui.THeaWatSup_nominal) "Heating water supply temperature set point - Maximum value" - annotation (Placement(transformation(extent={{-60,80},{-40,100}}))); + annotation (Placement(transformation(extent={{-50,70},{-30,90}}))); Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) "Heating water supply temperature set point - Minimum value" - annotation (Placement(transformation(extent={{-100,80},{-80,100}}))); + annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* 4, @@ -69,16 +69,18 @@ equation 10},{20,-10},{40,-10}}, color={0,127,255})); connect(sinAmbWat.ports[1], bui.port_bSerAmb) annotation (Line(points={{-40,-50}, {80,-50},{80,-10},{60,-10}}, color={0,127,255})); - connect(THeaWatSupMinSet.y, bui.THeaWatSupMinSet) annotation (Line(points={{-78, - 90},{-70,90},{-70,60},{34,60},{34,-1},{38,-1}}, color={0,0,127})); - connect(THeaWatSupMaxSet.y, bui.THeaWatSupMaxSet) annotation (Line(points={{-38, - 90},{-30,90},{-30,58},{32,58},{32,-3},{38,-3}}, color={0,0,127})); - connect(TChiWatSupSet.y, bui.TChiWatSupSet) annotation (Line(points={{2,90},{10, - 90},{10,56},{30,56},{30,-5},{38,-5}}, color={0,0,127})); - connect(THotWatSupSet.y, bui.THotWatSupSet) annotation (Line(points={{42,90},{ - 50,90},{50,40},{28,40},{28,-7},{38,-7}}, color={0,0,127})); - connect(TColWat.y, bui.TColWat) annotation (Line(points={{82,90},{88,90},{88,38}, - {26,38},{26,-26},{42,-26},{42,-22}}, color={0,0,127})); + connect(THeaWatSupMinSet.y, bui.THeaWatSupMinSet) annotation (Line(points={{-68,80}, + {-60,80},{-60,60},{34,60},{34,-1},{38,-1}}, color={0,0,127})); + connect(THeaWatSupMaxSet.y, bui.THeaWatSupMaxSet) annotation (Line(points={{-28,80}, + {-20,80},{-20,58},{32,58},{32,-3},{38,-3}}, color={0,0,127})); + connect(TChiWatSupSet.y, bui.TChiWatSupSet) annotation (Line(points={{12,80}, + {20,80},{20,56},{30,56},{30,-5},{38,-5}}, + color={0,0,127})); + connect(THotWatSupSet.y, bui.THotWatSupSet) annotation (Line(points={{52,80}, + {60,80},{60,40},{28,40},{28,-7},{38,-7}},color={0,0,127})); + connect(TColWat.y, bui.TColWat) annotation (Line(points={{92,80},{96,80},{96, + 38},{26,38},{26,-26},{42,-26},{42,-22}}, + color={0,0,127})); annotation ( Icon( coordinateSystem( diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo index e9159f9a31e..8f4c5de81c8 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo @@ -66,9 +66,6 @@ model PartialHeaterAndFixture equation connect(tmv.THot,THot) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, color={0,0,127})); - connect(loa.sch, sch.y[1]) - annotation (Line(points={{39,6},{34,6},{34,16},{70,16},{70,30},{61,30}}, - color={0,0,127})); connect(conTSetHot.y, tmv.TSet) annotation (Line(points={{-69,30},{-10,30},{-10,8},{-2,8}}, color={0,0,127})); @@ -76,6 +73,8 @@ equation annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); connect(tmv.port_col, souCol.ports[1]) annotation (Line(points={{0,-4},{-10,-4}, {-10,-26},{10,-26},{10,-40}}, color={0,127,255})); + connect(sch.y[1], loa.yHotWat) annotation (Line(points={{61,30},{72,30},{72, + 16},{36,16},{36,6},{39,6}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

    Partial base class for hot water source, thermostatic mixing, and fixture load examples. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index 7650946aec6..c61586bba26 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -2,12 +2,14 @@ within Buildings.Experimental.DHC.Loads.HotWater; model ThermostaticMixingValve "A model for a thermostatic mixing valve" replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal hot water flow rate to fixture"; + parameter Modelica.Units.SI.MassFlowRate mMix_flow_nominal + "Nominal mixed water flow rate to fixture"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; parameter Real k = 0.1 "Proportional gain of valve controller"; parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; - Modelica.Fluid.Interfaces.FluidPort_b port_hot( - redeclare package Medium = Medium) "Port for hot water outlet to fixture(s)" + Modelica.Fluid.Interfaces.FluidPort_b port_mix( + redeclare package Medium = Medium) + "Port for mixed water outlet to fixture(s)" annotation (Placement(transformation(extent={{90,-10},{110,10}}))); Modelica.Fluid.Interfaces.FluidPort_a port_hotSou(redeclare package Medium = @@ -16,7 +18,14 @@ model ThermostaticMixingValve Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = Medium) "Port for domestic cold water supply" annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); - Modelica.Blocks.Interfaces.RealOutput THot + Modelica.Blocks.Interfaces.RealInput TMixSet( + final unit="K", + displayUnit="degC") + "Temperature setpoint of mixed water outlet" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + Modelica.Blocks.Interfaces.RealOutput TMix( + final unit="K", + displayUnit="degC") "Temperature of the outlet hot water supply to fixture" annotation (Placement(transformation(extent={{100,50},{120,70}}))); @@ -27,69 +36,76 @@ model ThermostaticMixingValve reset=Buildings.Types.Reset.Parameter) "Controller for thermostatic valve" annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot( + Buildings.Fluid.Sensors.TemperatureTwoPort senTemMix( redeclare final package Medium = Medium, - final m_flow_nominal=mHot_flow_nominal) - "Hot water to fixture temperature sensor" + allowFlowReversal=false, + final m_flow_nominal=mMix_flow_nominal, + tau=0) "Mixed water to fixture temperature sensor" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Fluid.Actuators.Valves.ThreeWayLinear val( redeclare package Medium = Medium, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + portFlowDirection_1=Modelica.Fluid.Types.PortFlowDirection.Entering, + portFlowDirection_2=Modelica.Fluid.Types.PortFlowDirection.Leaving, + portFlowDirection_3=Modelica.Fluid.Types.PortFlowDirection.Entering, riseTime=5, - final m_flow_nominal=mHot_flow_nominal, + final m_flow_nominal=mMix_flow_nominal, dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( transformation( extent={{10,10},{-10,-10}}, rotation=180, origin={0,0}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHotSou(redeclare package - Medium = Medium, m_flow_nominal=mHot_flow_nominal) - "Source hot water temperature sensor" - annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemCw(redeclare package Medium = - Medium, m_flow_nominal=mHot_flow_nominal) "Cold water temperature sensor" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); - Buildings.Fluid.Sensors.MassFlowRate senFloHot(redeclare package Medium = - Medium) "Mass flow rate of hot water to fixture" + Buildings.Fluid.Sensors.MassFlowRate senFloMix(redeclare package Medium = + Medium) "Mass flow rate of mixed water to fixture" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Modelica.Blocks.Logical.Hysteresis hys(uLow=uLow, uHigh=uHigh) "Hysteresis to reset controller if flow starts" annotation (Placement(transformation(extent={{-10,30},{-30,50}}))); - Modelica.Blocks.Interfaces.RealInput TSet - "Temperature setpoint of tempered hot water outlet" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); + + Fluid.Sensors.TemperatureTwoPort senTemHot( + redeclare final package Medium = Medium, + allowFlowReversal=false, + final m_flow_nominal=mMix_flow_nominal, + tau=0) "Hot water temperature" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemCol( + redeclare final package Medium = Medium, + allowFlowReversal=false, + final m_flow_nominal=mMix_flow_nominal, + tau=0) "Cold water temperature" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); protected - parameter Real uLow = 0.01*mHot_flow_nominal "Low hysteresis threshold"; - parameter Real uHigh = 0.05*mHot_flow_nominal "High hysteresis threshold"; + parameter Real uLow = 0.01*mMix_flow_nominal "Low hysteresis threshold"; + parameter Real uHigh = 0.05*mMix_flow_nominal "High hysteresis threshold"; equation - connect(senTemHot.T, conPID.u_m) + connect(senTemMix.T, conPID.u_m) annotation (Line(points={{30,11},{30,60},{-30,60},{-30,68}}, color={0,0,127})); - connect(val.port_2, senTemHot.port_a) annotation (Line(points={{10,-6.66134e-16}, + connect(val.port_2,senTemMix. port_a) annotation (Line(points={{10,-6.66134e-16}, {20,-6.66134e-16},{20,0}}, color={0,127,255})); connect(conPID.y, val.y) annotation (Line(points={{-19,80},{0,80},{0,12}}, color={0,0,127})); - connect(senTemHot.T,THot) annotation (Line(points={{30,11},{30,60},{110,60}}, + connect(senTemMix.T,TMix) annotation (Line(points={{30,11},{30,60},{110,60}}, color={0,0,127})); - connect(val.port_1, senTemHotSou.port_b) annotation (Line(points={{-10,0},{-20, - 0}}, color={0,127,255})); - connect(senTemHotSou.port_a,port_hotSou) annotation (Line(points={{-40,0},{-60, - 0},{-60,40},{-100,40}}, color={0,127,255})); - connect(val.port_3, senTemCw.port_b) annotation (Line(points={{0,-10},{0,-40}, - {-20,-40}}, color={0,127,255})); - connect(senTemCw.port_a, port_col) annotation (Line(points={{-40,-40},{-100,-40}}, - color={0,127,255})); - connect(senTemHot.port_b, senFloHot.port_a) + connect(senTemMix.port_b,senFloMix. port_a) annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); - connect(senFloHot.port_b, port_hot) + connect(senFloMix.port_b,port_mix) annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(hys.u, senFloHot.m_flow) + connect(hys.u,senFloMix. m_flow) annotation (Line(points={{-8,40},{60,40},{60,11}}, color={0,0,127})); connect(hys.y, conPID.trigger) annotation (Line(points={{-31,40},{-38,40},{-38,68}}, color={255,0,255})); - connect(conPID.u_s, TSet) annotation (Line(points={{-42,80},{-120,80}}, - color={0,0,127})); + connect(conPID.u_s, TMixSet) + annotation (Line(points={{-42,80},{-120,80}}, color={0,0,127})); + connect(val.port_1, senTemHot.port_b) + annotation (Line(points={{-10,0},{-40,0}}, color={0,127,255})); + connect(senTemHot.port_a, port_hotSou) annotation (Line(points={{-60,0},{-80,0}, + {-80,40},{-100,40}}, color={0,127,255})); + connect(port_col, senTemCol.port_a) + annotation (Line(points={{-100,-40},{-60,-40}}, color={0,127,255})); + connect(senTemCol.port_b, val.port_3) + annotation (Line(points={{-40,-40},{0,-40},{0,-10}}, color={0,127,255})); annotation ( defaultComponentName="theMixVal", preferredView="info",Documentation(info=" @@ -115,72 +131,66 @@ Initial Implementation. lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), - Rectangle( - extent={{-34,-28},{32,32}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-34,32},{32,-28}}, - lineColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid), - Text( - extent={{-22,26},{20,-20}}, - textColor={0,0,0}, - fillColor={135,135,135}, - fillPattern=FillPattern.Solid, - textString="M", - textStyle={TextStyle.Bold}), Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={-78,40}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, + extent={{-4,50},{4,-50}}, + fillPattern=FillPattern.Solid, fillColor={238,46,47}, - origin={-78,40}, - rotation=90), - Line( - points={{-32,-28},{28,-28}}), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={-78,-42}, - rotation=90), + origin={-54,40}, + rotation=90, + pattern=LinePattern.None), Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, + extent={{-4,50},{4,-50}}, + fillPattern=FillPattern.Solid, fillColor={28,108,200}, - origin={-78,-42}, - rotation=90), - Rectangle( - extent={{-40,22},{40,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}, - origin={78,0}, - rotation=90), - Rectangle( - extent={{-22,22},{22,-22}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={102,44,145}, - origin={78,0}, - rotation=90), + origin={-50,-40}, + rotation=90, + pattern=LinePattern.None), Text( extent={{-153,147},{147,107}}, textColor={0,0,255}, fillPattern=FillPattern.HorizontalCylinder, fillColor={0,127,255}, - textString="%name")}), Diagram( + textString="%name"), + Polygon(points={{-10,30},{-10,30}}, lineColor={28,108,200}), + Polygon( + points={{-20,30},{20,30},{-20,-30},{20,-30},{-20,30}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Polygon( + points={{0,0},{30,20},{30,-14},{0,0}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-4,37},{4,-37}}, + fillPattern=FillPattern.Solid, + fillColor={102,44,145}, + origin={67,-1.77636e-15}, + rotation=90, + pattern=LinePattern.None), + Rectangle( + extent={{-4,7},{4,-7}}, + fillPattern=FillPattern.Solid, + fillColor={28,108,200}, + origin={-4.44089e-16,-37}, + rotation=180, + pattern=LinePattern.None), + Rectangle( + extent={{-4,7},{4,-7}}, + fillPattern=FillPattern.Solid, + fillColor={238,46,47}, + origin={8.88178e-16,37}, + rotation=180, + pattern=LinePattern.None), + Line( + points={{66,4},{64,42}}, + color={0,0,0}, + pattern=LinePattern.None), + Line(points={{100,60},{98,60},{64,60},{64,4}}, color={0,0,0}), + Text( + extent={{-96,98},{-54,66}}, + textColor={0,0,0}, + textString="TSet")}), Diagram( coordinateSystem(preserveAspectRatio=false))); end ThermostaticMixingValve; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo index 185f2f7c922..40112284df6 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo @@ -16,18 +16,17 @@ model WaterDraw "A model for hot water draws from fixture(s)" annotation (Placement(transformation(extent={{10,-10},{-10,10}}, rotation=180, origin={-70,60}))); - Modelica.Blocks.Interfaces.RealInput sch( - final min=0, - final unit="1") "Hot water to fixture draw fraction" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + Modelica.Blocks.Interfaces.RealInput yHotWat(final min=0, final unit="1") + "Hot water to fixture draw fraction" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, rotation=180, - origin={-110,60}), - iconTransformation(extent={{10,-10},{-10,10}}, + origin={-110,60}), iconTransformation( + extent={{10,-10},{-10,10}}, rotation=180, origin={-110,60}))); equation - connect(sch, gaiDhw.u) annotation (Line(points={{-110,60},{-82,60}}, - color={0,0,127})); + connect(yHotWat, gaiDhw.u) + annotation (Line(points={{-110,60},{-82,60}}, color={0,0,127})); connect(port_hot, sinHot.ports[1]) annotation (Line(points={{-100,0},{-66,0}}, color={0,127,255})); connect(sinHot.m_flow_in, gaiDhw.y) annotation (Line(points={{-44,8},{-20,8},{ From c7256a6d9a1db8367ffbe205759c7fda8abdc370 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 2 Oct 2023 13:04:48 -0700 Subject: [PATCH 113/183] Refactored domestic hot water load --- .../BaseClasses/PartialDirect.mo | 4 +- .../BaseClasses/PartialIndirect.mo | 4 +- .../PartialHeatPumpHeatExchanger.mo | 20 -- .../Combined/HeatPumpHeatExchanger.mo | 29 +- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 40 +-- .../Combined/Subsystems/HeatPumpDHWTank.mo | 6 +- .../Cooling/Examples/Direct.mo | 2 +- .../Cooling/Examples/Indirect.mo | 2 +- .../Heating/Examples/Direct.mo | 2 +- .../Heating/Examples/Indirect.mo | 2 +- .../Cooling/ElectricChillersDirectETS.mo | 2 +- .../BaseClasses/PartialBuildingWithETS.mo | 4 +- .../Examples/BuildingTimeSeriesWithETS.mo | 2 +- .../BaseClasses/PartialBuildingWithETS.mo | 4 +- .../Examples/BuildingTimeSeriesWithETS.mo | 2 +- .../BaseClasses/PartialFourPortDHW.mo | 4 +- .../DirectHeatExchangerWithElectricHeat.mo | 2 +- .../BaseClasses/PartialHeaterAndFixture.mo | 49 ++- ...tureDirectHeatExchangerWithElectricHeat.mo | 31 +- .../HeaterAndFixtureHeatPumpWithTank.mo | 27 +- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 14 +- .../Loads/HotWater/ThermostaticMixingValve.mo | 300 +++++++++++------- .../DHC/Loads/HotWater/WaterDraw.mo | 82 ----- .../DHC/Loads/HotWater/package.mo | 6 +- .../DHC/Loads/HotWater/package.order | 1 - .../Combined/Examples/AllElectricCWStorage.mo | 4 +- ...mples_BuildingTimeSeriesWithETSDHWTank.txt | 26 +- ...ureDirectHeatExchangerWithElectricHeat.txt | 21 +- ...mples_HeaterAndFixtureHeatPumpWithTank.txt | 23 +- .../BuildingTimeSeriesWithETSDHWTank.mos | 6 +- ...ureDirectHeatExchangerWithElectricHeat.mos | 10 +- .../HeaterAndFixtureHeatPumpWithTank.mos | 11 +- ...mples.BuildingTimeSeriesWithETSDHWTank.mos | 6 +- ...ureDirectHeatExchangerWithElectricHeat.mos | 8 +- ...mples.HeaterAndFixtureHeatPumpWithTank.mos | 10 +- 35 files changed, 374 insertions(+), 392 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialDirect.mo b/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialDirect.mo index 1b1d0f068cf..9f98cabae15 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialDirect.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialDirect.mo @@ -57,7 +57,7 @@ model PartialDirect "Bandwidth around reference signal for on/off controller" annotation (Dialog(tab="Advanced")); - Modelica.Blocks.Interfaces.RealInput TSetDisRet( + Modelica.Blocks.Interfaces.RealInput TDisRetSet( final unit="K", displayUnit="degC") "Setpoint for the district return temperature (min for cooling, max for heating)" @@ -197,7 +197,7 @@ equation connect(senTDisSup.T,dTDis. u2) annotation (Line(points={{-170,-269},{-172,-269},{-172,-184},{60,-184},{60,-110}, {78,-110}}, color={0,0,127})); - connect(TSetDisRet, con.u_s) + connect(TDisRetSet, con.u_s) annotation (Line(points={{-318,0},{-272,0},{-272,250},{-222,250}}, color={0,0,127})); connect(senTBuiRet.T, con.u_m) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialIndirect.mo b/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialIndirect.mo index 806d5d666da..63659aee641 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialIndirect.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/BaseClasses/PartialIndirect.mo @@ -84,7 +84,7 @@ model PartialIndirect parameter Real yMin=0.01 "Lower limit of output" annotation (Dialog(group="PID controller")); - Modelica.Blocks.Interfaces.RealInput TSetBuiSup + Modelica.Blocks.Interfaces.RealInput TBuiSupSet "Setpoint temperature for building supply" annotation (Placement(transformation(extent={{-340,-20},{-300,20}}))); Modelica.Blocks.Interfaces.RealOutput Q_flow( @@ -201,7 +201,7 @@ equation annotation (Line(points={{-26,-193},{-26,-180},{-140,-180},{-140,-240},{-120, -240},{-120,-232}}, color={0,0,127})); - connect(TSetBuiSup, con.u_s) + connect(TBuiSupSet, con.u_s) annotation (Line(points={{-320,0},{-240,0},{-240,-220},{-132,-220}}, color={0,0,127})); connect(con.y, conVal.y) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index cf37de3b337..eb34b5789c3 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -331,12 +331,6 @@ model PartialHeatPumpHeatExchanger final dp1_nominal=dp_nominal, final dp2_nominal=dp_nominal) "Subsystem for heating water production" annotation (Placement(transformation(extent={{-10,204},{10,224}}))); - Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat - "Compute mass flow rate from load" - annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= - cpBui_default) if have_hotWat "Times Cp" - annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); Buildings.Controls.OBC.CDL.Reals.MultiSum masFloHeaTot(nin=2) "Compute district water mass flow rate used for heating service" annotation (Placement(transformation(extent={{270,-150},{290,-130}}))); @@ -359,9 +353,6 @@ model PartialHeatPumpHeatExchanger extent={{-10,-10},{10,10}}, rotation=0, origin={40,-120}))); - Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat - "Compute DeltaT needed on condenser side" - annotation (Placement(transformation(extent={{-150,-10},{-130,10}}))); Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" @@ -487,10 +478,6 @@ equation connect(proHeaWat.PPum, PPumHeaTot.u[1]) annotation (Line(points={{12,214},{172, 214},{172,419.5},{188,419.5}}, color={0,0,127})); - connect(gai.y, div1.u2) annotation (Line(points={{-98,0},{-80,0},{-80,-20},{-120, - -20},{-120,-46},{-102,-46}}, color={0,0,127})); - connect(loaSHW, div1.u1) annotation (Line(points={{-320,-120},{-290,-120},{-290, - -34},{-102,-34}}, color={0,0,127})); connect(masFloHeaTot.y, mHea_flow) annotation (Line(points={{292,-140},{320,-140}}, color={0,0,127})); connect(zer.y, masFloHeaTot.u[2]) annotation (Line(points={{161,360},{216,360}, @@ -508,13 +495,6 @@ equation {120,300},{120,240},{110,240}}, color={0,127,255})); connect(senMasFloChiWat.port_b, senTChiWatRet.port_a) annotation (Line(points={{-230,-120},{30,-120}}, color={0,127,255})); - connect(delT.y, gai.u) - annotation (Line(points={{-128,0},{-122,0}}, color={0,0,127})); - connect(TColWat, delT.u2) annotation (Line(points={{-320,-80},{-156,-80},{-156, - -6},{-152,-6}}, color={0,0,127})); - connect(THotWatSupSet, delT.u1) annotation (Line(points={{-320,-40},{-160,-40}, - {-160,6},{-152,6}}, - color={0,0,127})); connect(proHeaWat.port_b1, senMasFloHeaWatPri.port_a) annotation (Line(points= {{-10,220},{-20,220},{-20,260},{30,260}}, color={0,127,255})); connect(senMasFloHeaWatPri.port_b, bypHeaWatSup.port_1) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index e8f54e8d24d..e407f2d7927 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -36,6 +36,15 @@ model HeatPumpHeatExchanger extent={{10,-10},{-10,10}}, rotation=180, origin={-60,60}))); + Buildings.Controls.OBC.CDL.Reals.Divide div1 if have_hotWat + "Compute mass flow rate from load" + annotation (Placement(transformation(extent={{-100,-60},{-80,-40}}))); + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(final k= + cpBui_default) if have_hotWat "Times Cp" + annotation (Placement(transformation(extent={{-120,-20},{-100,0}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract delT if have_hotWat + "Compute DeltaT needed on condenser side" + annotation (Placement(transformation(extent={{-150,-20},{-130,0}}))); equation connect(souColWat.ports[1], proHotWat.port_a1) annotation (Line(points={{-28,-40}, {-20,-40},{-20,28},{-10,28}}, color={0,127,255})); @@ -61,16 +70,30 @@ equation color={0,0,127})); connect(TColWat, souColWat.T_in) annotation (Line(points={{-320,-80},{-60,-80}, {-60,-36},{-50,-36}}, color={0,0,127})); - connect(div1.y, souColWat.m_flow_in) annotation (Line(points={{-78,-40},{-68,-40}, - {-68,-32},{-50,-32}}, color={0,0,127})); + connect(div1.y, souColWat.m_flow_in) annotation (Line(points={{-78,-50},{-70, + -50},{-70,-32},{-50,-32}}, + color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{10,28}, {14,28},{14,20},{-260,20},{-260,-360}}, color={0,127,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); connect(heaFloEvaSHW.u1, div1.u1) annotation (Line(points={{-102,106},{-290, - 106},{-290,-34},{-102,-34}}, color={0,0,127})); + 106},{-290,-44},{-102,-44}}, color={0,0,127})); connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{12,37},{14, 37},{14,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); + connect(gai.y,div1. u2) annotation (Line(points={{-98,-10},{-80,-10},{-80,-30}, + {-120,-30},{-120,-56},{-102,-56}}, color={0,0,127})); + connect(loaSHW,div1. u1) annotation (Line(points={{-320,-120},{-290,-120},{ + -290,-44},{-102,-44}}, + color={0,0,127})); + connect(delT.y,gai. u) + annotation (Line(points={{-128,-10},{-122,-10}}, color={0,0,127})); + connect(TColWat,delT. u2) annotation (Line(points={{-320,-80},{-156,-80},{ + -156,-16},{-152,-16}}, + color={0,0,127})); + connect(THotWatSupSet,delT. u1) annotation (Line(points={{-320,-40},{-160,-40}, + {-160,-4},{-152,-4}}, + color={0,0,127})); annotation ( Documentation(info="

    diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 1900a4be2ea..dc30a6ebeaa 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -31,19 +31,10 @@ model HeatPumpHeatExchangerDHWTank parameter Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" annotation (Placement(transformation(extent={{36,48},{48,60}}))); - Fluid.Sources.MassFlowSource_T sinDHW( - redeclare final package Medium = MediumBui, - use_m_flow_in=true, - nPorts=1) if have_hotWat "Sink for domestic hot water" - annotation (Placement(transformation(extent={{-68,50},{-48,70}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSin(final k=-1) - if have_hotWat "Convert to sink" - annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); Loads.HotWater.ThermostaticMixingValve theMixVal( redeclare package Medium = MediumBui, mMix_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - - TColWat_nominal), - dpValve_nominal=1000) "Thermostatic mixing valve" + TColWat_nominal)) "Thermostatic mixing valve" annotation (Placement(transformation(extent={{-20,50},{-40,72}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction dcwSpl( redeclare final package Medium = MediumBui, final m_flow_nominal= @@ -52,15 +43,13 @@ model HeatPumpHeatExchangerDHWTank extent={{-10,-10},{10,10}}, rotation=90, origin={-12,4}))); + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=1/ + QHotWat_flow_nominal) + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); equation - connect(toSin.u, div1.y) annotation (Line(points={{-102,60},{-108,60},{-108, - 32},{-70,32},{-70,-40},{-78,-40}}, - color={0,0,127})); connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38,100}, {28,100},{28,31},{30,31}}, color={0,0,127})); - connect(souDCW.T_in, delT.u2) annotation (Line(points={{-64,-60},{-156,-60},{ - -156,-6},{-152,-6}}, color={0,0,127})); connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, {-114,43},{30,43}}, color={255,0,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) @@ -77,28 +66,29 @@ equation connect(proHotWat.mEva_flow, masFloHea.u2) annotation (Line(points={{54,31},{ 58,31},{58,-242},{-6,-242},{-6,-252}}, color={0,0,127})); - connect(toSin.y, sinDHW.m_flow_in) annotation (Line(points={{-78,60},{-76,60}, - {-76,68},{-70,68}}, color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{52,28}, {56,28},{56,20},{-260,20},{-260,-360}}, color={0,127,255})); - connect(theMixVal.port_mix, sinDHW.ports[1]) annotation (Line(points={{-40,61}, - {-45,61},{-45,60},{-48,60}}, color={0,127,255})); connect(souDCW.ports[1], dcwSpl.port_1) annotation (Line(points={{-42,-56},{ -12,-56},{-12,-6}}, color={0,127,255})); connect(dcwSpl.port_3, proHotWat.port_a1) annotation (Line(points={{-2,4},{12,4},{12,28},{32,28}}, color={0,127,255})); connect(dcwSpl.port_2, theMixVal.port_col) annotation (Line(points={{-12,14}, - {-12,56.6},{-20,56.6}}, color={0,127,255})); - connect(proHotWat.port_b1, theMixVal.port_hotSou) annotation (Line(points={{32,40}, - {0,40},{0,65.4},{-20,65.4}}, color={0,127,255})); - connect(theMixVal.TMixSet, delT.u1) annotation (Line(points={{-18,69.8},{-12, - 69.8},{-12,70},{-8,70},{-8,26},{-160,26},{-160,6},{-152,6}}, color={0, - 0,127})); + {-12,52.2},{-20,52.2}}, color={0,127,255})); + connect(proHotWat.port_b1, theMixVal.port_hot) annotation (Line(points={{32,40}, + {0,40},{0,56.6},{-20,56.6}}, color={0,127,255})); connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, {68,24},{68,120},{-108,120},{-108,106},{-102,106}}, color={0,0,127})); connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{54,37},{60, 37},{60,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); + connect(souDCW.T_in, TColWat) annotation (Line(points={{-64,-60},{-156,-60},{ + -156,-80},{-320,-80}}, color={0,0,127})); + connect(THotWatSupSet, theMixVal.TMixSet) annotation (Line(points={{-320,-40}, + {-32,-40},{-32,32},{-8,32},{-8,63.2},{-19,63.2}}, color={0,0,127})); + connect(loaSHW, gai.u) annotation (Line(points={{-320,-120},{-288,-120},{-288, + 60},{-82,60}}, color={0,0,127})); + connect(gai.y, theMixVal.yMixSet) annotation (Line(points={{-58,60},{-48,60}, + {-48,78},{-8,78},{-8,69.8},{-19,69.8}}, color={0,0,127})); annotation ( Documentation(info="

    diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 6038e0bd935..fadad07a36c 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -143,7 +143,7 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add annotation (Placement(transformation(extent={{140,-18},{160,2}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant TSetHotSou(k=datWatHea.THotSou_nominal) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant THotSouSet(k=datWatHea.THotSou_nominal) "Set point of water in hot water tank" annotation (Placement(transformation(extent={{-200,0},{-180,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") @@ -179,7 +179,7 @@ equation -60},{40,-16},{20,-16}}, color={0,127,255})); connect(heaPumTan.port_b2, port_b2) annotation (Line(points={{0,-16},{-20,-16}, {-20,40},{160,40},{160,60},{200,60}}, color={0,127,255})); - connect(enaHeaPum.y, heaPumTan.TSetHotSou) annotation (Line(points={{-118,20}, + connect(enaHeaPum.y,heaPumTan.THotSouSet) annotation (Line(points={{-118,20}, {-10,20},{-10,-10},{-1,-10}}, color={0,0,127})); connect(heaPumTan.PHea, PHea) annotation (Line(points={{21,-10},{80,-10},{80,20}, {180,20},{180,40},{220,40}}, color={0,0,127})); @@ -196,7 +196,7 @@ equation connect(heaPumTan.QCon_flow, QCon_flow) annotation (Line(points={{21,-12},{82, -12},{82,-100},{220,-100}}, color={0,0,127})); - connect(TSetHotSou.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166, + connect(THotSouSet.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166, 10},{-166,28},{-142,28}}, color={0,0,127})); annotation ( defaultComponentName="heaPum", diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Direct.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Direct.mo index 4ae9169763a..fc9797bf6dc 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Direct.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Direct.mo @@ -91,7 +91,7 @@ model Direct "Example model for direct cooling energy transfer station "Multiplier gain for calculating m_flow" annotation (Placement(transformation(extent={{0,80},{20,100}}))); equation - connect(TSetDisRet_min.y, cooETS.TSetDisRet) + connect(TSetDisRet_min.y,cooETS.TDisRetSet) annotation (Line(points={{-99,-10},{-0.6,-10}}, color={0,0,127})); connect(TDisSupNoi.y, souDis.T_in) annotation (Line(points={{-99,-66},{-62,-66}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Indirect.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Indirect.mo index 31101466b89..55a28209d87 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Indirect.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Cooling/Examples/Indirect.mo @@ -127,7 +127,7 @@ equation connect(cooETS.port_bSerCoo, sinDis.ports[1]) annotation (Line(points={{40, -39.3333},{60,-39.3333},{60,-70},{80,-70}}, color={0,127,255})); - connect(TSetCHWS.y, cooETS.TSetBuiSup) + connect(TSetCHWS.y,cooETS.TBuiSupSet) annotation (Line(points={{-59,-30},{19.3333,-30}}, color={0,0,127})); connect(pumBui.port_a, souBui.ports[1]) annotation (Line(points={{80,50},{94,50}, {94,74},{108,74}}, color={0,127,255})); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Direct.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Direct.mo index 1f588711f0a..22ef8b0d0a1 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Direct.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Direct.mo @@ -84,7 +84,7 @@ model Direct "Example model for direct heating energy transfer station "Multiplier gain for calculating m_flow" annotation (Placement(transformation(extent={{0,80},{20,100}}))); equation - connect(TSetDisRet_max.y,heaETS. TSetDisRet) + connect(TSetDisRet_max.y,heaETS.TDisRetSet) annotation (Line(points={{-99,-10},{-0.6,-10}}, color={0,0,127})); connect(TDisSupNoi.y, souDis.T_in) annotation (Line(points={{-99,-66},{-62,-66}}, color={0,0,127})); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Indirect.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Indirect.mo index 86baa8fbe1e..d473607a0d5 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Indirect.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Heating/Examples/Indirect.mo @@ -109,7 +109,7 @@ equation color={0,0,127})); connect(pumBui.port_a, souBui.ports[1]) annotation (Line(points={{80,50},{94,50}, {94,74},{108,74}}, color={0,127,255})); - connect(TSetHWS.y, heaETS.TSetBuiSup) + connect(TSetHWS.y,heaETS.TBuiSupSet) annotation (Line(points={{-59,-30},{19.3333,-30}}, color={0,0,127})); connect(souDis.ports[1], heaETS.port_aSerHea) annotation (Line(points={{-20,-70}, {14,-70},{14,-38},{20,-38}}, color={0,127,255})); diff --git a/Buildings/Experimental/DHC/Examples/Cooling/ElectricChillersDirectETS.mo b/Buildings/Experimental/DHC/Examples/Cooling/ElectricChillersDirectETS.mo index 1c268d5527c..ad94b35d374 100644 --- a/Buildings/Experimental/DHC/Examples/Cooling/ElectricChillersDirectETS.mo +++ b/Buildings/Experimental/DHC/Examples/Cooling/ElectricChillersDirectETS.mo @@ -156,7 +156,7 @@ equation {160,42},{160,0},{132,0}}, color={0,127,255})); for i in 1:nLoa loop - connect(TDisRetSet.y, buiETS[i].TSetDisRet) + connect(TDisRetSet.y,buiETS[i].TDisRetSet) annotation (Line(points={{91,70},{100,70},{100,57},{119,57}}, color={0,0,127})); end for; diff --git a/Buildings/Experimental/DHC/Loads/Cooling/BaseClasses/PartialBuildingWithETS.mo b/Buildings/Experimental/DHC/Loads/Cooling/BaseClasses/PartialBuildingWithETS.mo index 6f7823b6b4d..f4280807a0a 100644 --- a/Buildings/Experimental/DHC/Loads/Cooling/BaseClasses/PartialBuildingWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Cooling/BaseClasses/PartialBuildingWithETS.mo @@ -50,14 +50,14 @@ model PartialBuildingWithETS parameter Real yMin=0 "Lower limit of output" annotation (Dialog(group="PID controller")); - Modelica.Blocks.Interfaces.RealInput TSetDisRet( + Modelica.Blocks.Interfaces.RealInput TDisRetSet( final unit="K", displayUnit="degC") "Setpoint for the minimum district return temperature" annotation (Placement(transformation(extent={{-340,20},{-300,-20}}), iconTransformation(extent={{-120,60},{-100,80}}))); equation - connect(TSetDisRet, ets.TSetDisRet) annotation (Line(points={{-320,0},{-64,0}, + connect(TDisRetSet,ets.TDisRetSet) annotation (Line(points={{-320,0},{-64,0}, {-64,-56},{-31.8,-56}}, color={0,0,127})); annotation (Documentation(info="

    diff --git a/Buildings/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mo index 26cfdd28656..eef7c037788 100644 --- a/Buildings/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Cooling/Examples/BuildingTimeSeriesWithETS.mo @@ -44,7 +44,7 @@ equation {60,-18},{80,-18},{80,-50},{-40,-50}}, color={0,127,255})); connect(TDisSup.y, supChiWat.T_in) annotation (Line(points={{-69,14},{-62,14}}, color={0,0,127})); - connect(TDisRetSet.y, buiWitETS.TSetDisRet) annotation (Line(points={{21,50}, + connect(TDisRetSet.y,buiWitETS.TDisRetSet) annotation (Line(points={{21,50}, {30,50},{30,-3},{39,-3}}, color={0,0,127})); annotation ( Icon( diff --git a/Buildings/Experimental/DHC/Loads/Heating/BaseClasses/PartialBuildingWithETS.mo b/Buildings/Experimental/DHC/Loads/Heating/BaseClasses/PartialBuildingWithETS.mo index 517da0ebffc..61834ec600c 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/BaseClasses/PartialBuildingWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/BaseClasses/PartialBuildingWithETS.mo @@ -50,14 +50,14 @@ model PartialBuildingWithETS parameter Real yMin=0 "Lower limit of output" annotation (Dialog(group="PID controller")); - Modelica.Blocks.Interfaces.RealInput TSetDisRet( + Modelica.Blocks.Interfaces.RealInput TDisRetSet( final unit="K", displayUnit="degC") "Setpoint for the maximum district return temperature" annotation (Placement(transformation(extent={{-340,20},{-300,-20}}), iconTransformation(extent={{-120,60},{-100,80}}))); equation - connect(TSetDisRet, ets.TSetDisRet) annotation (Line(points={{-320,0},{-64,0}, + connect(TDisRetSet,ets.TDisRetSet) annotation (Line(points={{-320,0},{-64,0}, {-64,-56},{-31.8,-56}}, color={0,0,127})); annotation (Documentation(info="

    diff --git a/Buildings/Experimental/DHC/Loads/Heating/Examples/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Heating/Examples/BuildingTimeSeriesWithETS.mo index 04224c7b43e..4074479adb9 100644 --- a/Buildings/Experimental/DHC/Loads/Heating/Examples/BuildingTimeSeriesWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Heating/Examples/BuildingTimeSeriesWithETS.mo @@ -35,7 +35,7 @@ equation annotation (Line(points={{-40,10},{-20,10}}, color={0,127,255})); connect(TDisSup.y,supHeaWat. T_in) annotation (Line(points={{-69,14},{-62,14}}, color={0,0,127})); - connect(TDisRetSet.y, buiWitETS.TSetDisRet) annotation (Line(points={{21,50}, + connect(TDisRetSet.y,buiWitETS.TDisRetSet) annotation (Line(points={{21,50}, {30,50},{30,-3},{39,-3}}, color={0,0,127})); connect(senMasFlo.port_b, buiWitETS.port_aSerHea) annotation (Line(points={{0, 10},{20,10},{20,-14},{40,-14}}, color={0,127,255})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index 94a2cc0edd8..9acf757b77e 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -10,7 +10,9 @@ partial model PartialFourPortDHW Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") "Electric power required for heating equipment" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput TSetHotSou + Modelica.Blocks.Interfaces.RealInput THotSouSet( + final unit="K", + displayUnit="degC") "Temperature setpoint for domestic hot water source from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index b2c79409bbc..6c2f8b0db47 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -70,7 +70,7 @@ equation color={0,127,255})); connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-32},{82,-32},{82,0}, {110,0}}, color={0,0,127})); - connect(TSetHotSou, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, + connect(THotSouSet, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, -32},{8,-32}}, color={0,0,127})); connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-60},{-100,-60}}, color={0,127,255})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo index 8f4c5de81c8..09c1fcbd522 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/PartialHeaterAndFixture.mo @@ -1,14 +1,17 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses; -model PartialHeaterAndFixture +partial model PartialHeaterAndFixture "Partial base class for hot water source, thermostatic mixing, and fixture load examples." replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.Temperature TSetHotSou = 273.15+50 "Temperature setpoint of hot water supply source from heater"; + parameter Modelica.Units.SI.Temperature THotSouSet=273.15 + 50 + "Temperature setpoint of hot water supply source from heater"; parameter Modelica.Units.SI.Temperature TDis = 273.15+30 "Temperature of water supply from district"; - parameter Modelica.Units.SI.Temperature TSetHot = 273.15+43 "Temperature setpoint of hot water supply to fixture"; + parameter Modelica.Units.SI.Temperature TMixSet=273.15 + 43 + "Temperature setpoint of hot water supply to fixture"; parameter Modelica.Units.SI.Temperature TCol = 273.15+10 "Temperature of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mHotSou_flow_nominal = 0.1 "Nominal mass flow rate of hot water source supply"; parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal = 1 "Nominal mass flow rate of district water"; - parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal = 1 "Nominal mass flow rate of hot water supplied to fixture"; + parameter Modelica.Units.SI.MassFlowRate mMix_flow_nominal=1 + "Nominal mass flow rate of hot water supplied to fixture"; parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") = 1000 "Pressure difference"; Buildings.Fluid.Sources.Boundary_pT souCol( @@ -18,14 +21,9 @@ model PartialHeaterAndFixture annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=90, origin={10,-50}))); - ThermostaticMixingValve tmv( - redeclare package Medium = Medium, - mHot_flow_nominal=mHot_flow_nominal, - dpValve_nominal=dpValve_nominal) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Modelica.Blocks.Interfaces.RealOutput THot(final unit="K", displayUnit="degC") - "Temperature of the outlet hot water" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); + ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, + mMix_flow_nominal=mMix_flow_nominal) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{0,-12},{20,8}}))); Fluid.Sources.MassFlowSource_T souDis( redeclare package Medium = Medium, m_flow=mDis_flow_nominal, @@ -34,13 +32,9 @@ model PartialHeaterAndFixture extent={{-10,-10},{10,10}}, rotation=90, origin={-30,-50}))); - Modelica.Blocks.Sources.Constant conTSetHotSou(k=TSetHotSou) + Modelica.Blocks.Sources.Constant conTHotSouSet(k=THotSouSet) "Temperature setpoint for domestic hot water source supplied from heater" annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); - WaterDraw loa( - redeclare package Medium = Medium, - mHot_flow_nominal=mHot_flow_nominal) "Tempered water draw" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Modelica.Blocks.Sources.CombiTimeTable sch( tableOnFile=true, tableName="tab1", @@ -48,7 +42,7 @@ model PartialHeaterAndFixture smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fixture draw fraction schedule" - annotation (Placement(transformation(extent={{40,20},{60,40}}))); + annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); Fluid.Sources.Boundary_pT sinDis( redeclare package Medium = Medium, @@ -60,21 +54,16 @@ model PartialHeaterAndFixture Modelica.Blocks.Interfaces.RealOutput PEle(final unit="W") "Electric power required for generation equipment" annotation (Placement(transformation(extent={{100,70},{120,90}}))); - Modelica.Blocks.Sources.Constant conTSetHot(k(final unit="K")=TSetHot) + Modelica.Blocks.Sources.Constant conTSetHot(k(final unit="K")=TMixSet) "Temperature setpoint for hot water supply to fixture" annotation (Placement(transformation(extent={{-90,20},{-70,40}}))); equation - connect(tmv.THot,THot) annotation (Line(points={{21,6},{30,6},{30,60},{110,60}}, - color={0,0,127})); - connect(conTSetHot.y, tmv.TSet) - annotation (Line(points={{-69,30},{-10,30},{-10,8},{-2,8}}, - color={0,0,127})); - connect(tmv.port_hot, loa.port_hot) - annotation (Line(points={{20,0},{40,0}}, color={0,127,255})); - connect(tmv.port_col, souCol.ports[1]) annotation (Line(points={{0,-4},{-10,-4}, - {-10,-26},{10,-26},{10,-40}}, color={0,127,255})); - connect(sch.y[1], loa.yHotWat) annotation (Line(points={{61,30},{72,30},{72, - 16},{36,16},{36,6},{39,6}}, color={0,0,127})); + connect(conTSetHot.y, theMixVal.TMixSet) annotation (Line(points={{-69,30},{-10, + 30},{-10,0},{-1,0}}, color={0,0,127})); + connect(theMixVal.port_col, souCol.ports[1]) annotation (Line(points={{0,-10}, + {-10,-10},{-10,-30},{10,-30},{10,-40}}, color={0,127,255})); + connect(theMixVal.yMixSet, sch.y[1]) annotation (Line(points={{-1,6},{-4,6},{ + -4,60},{-69,60}}, color={0,0,127})); annotation (preferredView="info",Documentation(info="

    Partial base class for hot water source, thermostatic mixing, and fixture load examples. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index 84c9f82ca11..1fcda6cf3f8 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -10,32 +10,31 @@ model HeaterAndFixtureDirectHeatExchangerWithElectricHeat mHotSou_flow_nominal=mHotSou_flow_nominal, mDis_flow_nominal=mDis_flow_nominal) "Hot water generated by heat exchanger and auxiliary heat" - annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + annotation (Placement(transformation(extent={{-52,-10},{-32,10}}))); equation - - connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-54,6}, - {-54,-20},{10,-20},{10,-40}}, color={0,127,255})); - connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20, - -6},{-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); + connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-52,6},{-56,6}, + {-56,-30},{10,-30},{10,-40}}, color={0,127,255})); + connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-32,-6},{-20, + -6},{-20,-20},{-30,-20},{-30,-40}}, color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) - annotation (Line(points={{-50,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(conTSetHotSou.y, gen.TSetHotSou) - annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); - connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-20,0},{-20,80},{ + annotation (Line(points={{-52,-6},{-60,-6},{-60,-40}}, color={0,127,255})); + connect(conTHotSouSet.y,gen.THotSouSet) + annotation (Line(points={{-69,0},{-53,0}}, color={0,0,127})); + connect(gen.PHea, PEle) annotation (Line(points={{-31,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); - connect(tmv.port_hotSou, gen.port_b1) annotation (Line(points={{0,4},{-14,4}, - {-14,6},{-30,6}}, color={0,127,255})); + connect(theMixVal.port_hot, gen.port_b1) annotation (Line(points={{0,-6},{-14, + -6},{-14,6},{-32,6}}, color={0,127,255})); annotation (experiment( StopTime=86400, Tolerance=1e-06), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos" "Simulate and plot"),Documentation(info="

    -This model implements an example hot water system where the hot water is -produced using -The hydronic arrangement modeled in +This model implements an example hot water system where the hot water is +produced using +the hydronic arrangement modeled in -Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithElectricHeat, +Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithElectricHeat, thermostatically mixed down to a distribution temperature, and supplied to a fixture load defined by a schedule.

    diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index c4f98b1d3cd..e590e11e5c1 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -19,36 +19,37 @@ model HeaterAndFixtureHeatPumpWithTank mHex_flow_nominal=1.5, QCon_flow_max=60000, QCon_flow_nominal=50000, - TTan_nominal=(TSetHotSou + TCol)/2, - THotSou_nominal=TSetHotSou, + TTan_nominal=(THotSouSet + TCol)/2, + THotSou_nominal=THotSouSet, dTCon_nominal=datWatHea.THex_nominal - datWatHea.TTan_nominal) "Data for heat pump water heater with tank" - annotation (Placement(transformation(extent={{-46,16},{-36,26}}))); + annotation (Placement(transformation(extent={{60,40},{80,60}}))); equation - connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-60,6}, - {-60,-20},{10,-20},{10,-40}}, color={0,127,255})); - connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-20,-6}, - {-20,-32},{-30,-32},{-30,-40}}, color={0,127,255})); + connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-56,6}, + {-56,-30},{10,-30},{10,-40}}, color={0,127,255})); + connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-24, + -6},{-24,-20},{-30,-20},{-30,-40}}, + color={0,127,255})); connect(gen.port_b2, sinDis.ports[1]) annotation (Line(points={{-50,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(conTSetHotSou.y, gen.TSetHotSou) + connect(conTHotSouSet.y,gen.THotSouSet) annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, 80}}, color={0,0,127})); - connect(tmv.port_hotSou, gen.port_b1) annotation (Line(points={{0,4},{-20,4}, - {-20,6},{-30,6}}, color={0,127,255})); + connect(theMixVal.port_hot, gen.port_b1) annotation (Line(points={{0,-6},{-20, + -6},{-20,6},{-30,6}}, color={0,127,255})); annotation (experiment( StopTime=86400, Tolerance=1e-06), __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos" "Simulate and plot"),Documentation(info="

    -This model implements an example hot water system where the hot water is -produced using +This model implements an example hot water system where the hot water is +produced using The hydronic arrangement modeled in -Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank, +Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank, thermostatically mixed down to a distribution temperature, and supplied to a fixture load defined by a schedule.

    diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index a5f50b0ea77..b8aa1bae15c 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -87,6 +87,10 @@ model HeatPumpWithTank Controls.OBC.CDL.Reals.AddParameter TConSet(p=datWatHea.dTTanHex) "Set point temperature for condenser" annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium + = Medium, m_flow_nominal=mHotSou_flow_nominal) + "Temperature sensor for hot water supply" + annotation (Placement(transformation(extent={{20,38},{40,58}}))); equation connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-56,-60}, {-56,-56},{-10,-56}}, color={0,127,255})); @@ -108,7 +112,7 @@ equation color={0,127,255})); connect(conPI.y, dTTanHex2.u) annotation (Line(points={{12,80},{18,80}}, color={0,0,127})); - connect(TSetHotSou, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88, + connect(THotSouSet, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88, 80},{-12,80}}, color={0,0,127})); connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-19,30},{0,30},{0, 68}}, color={0,0,127})); @@ -123,14 +127,16 @@ equation color={191,0,0})); connect(TConSet.y, heaPum.TSet) annotation (Line(points={{-38,-40},{-28,-40}, {-28,-41},{-12,-41}}, color={0,0,127})); - connect(TConSet.u, TSetHotSou) annotation (Line(points={{-62,-40},{-88,-40},{ + connect(TConSet.u,THotSouSet) annotation (Line(points={{-62,-40},{-88,-40},{ -88,0},{-110,0}}, color={0,0,127})); connect(heaPum.port_b1, pumHex.port_a) annotation (Line(points={{10,-44},{70, -44},{70,16},{60,16}}, color={0,127,255})); connect(pumHex.port_a, bou.ports[1]) annotation (Line(points={{60,16},{70,16}, {70,-20},{60,-20}}, color={0,127,255})); - connect(tanSte.port_a, port_b1) annotation (Line(points={{-50,20},{-50,52},{ - 26,52},{26,60},{100,60}}, color={0,127,255})); + connect(tanSte.port_a, senTemHot.port_a) + annotation (Line(points={{-50,20},{-50,48},{20,48}}, color={0,127,255})); + connect(senTemHot.port_b, port_b1) annotation (Line(points={{40,48},{90,48},{ + 90,60},{100,60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

    This model implements a domestic hot water source for a low-temperature diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index c61586bba26..5744c351016 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -4,108 +4,155 @@ model ThermostaticMixingValve replaceable package Medium = Buildings.Media.Water "Water media model"; parameter Modelica.Units.SI.MassFlowRate mMix_flow_nominal "Nominal mixed water flow rate to fixture"; - parameter Modelica.Units.SI.PressureDifference dpValve_nominal(min=0, displayUnit="Pa") "Nominal pressure drop of valve"; - parameter Real k = 0.1 "Proportional gain of valve controller"; - parameter Modelica.Units.SI.Time Ti = 15 "Integrator time constant of valve controller"; - Modelica.Fluid.Interfaces.FluidPort_b port_mix( - redeclare package Medium = Medium) - "Port for mixed water outlet to fixture(s)" - annotation (Placement(transformation(extent={{90,-10},{110,10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_hotSou(redeclare package Medium = - Medium) "Port for hot water supply from source" - annotation (Placement(transformation(extent={{-110,30},{-90,50}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_hot(redeclare package Medium = + Medium) "Port for hot water supply" + annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); Modelica.Fluid.Interfaces.FluidPort_a port_col(redeclare package Medium = Medium) "Port for domestic cold water supply" - annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); + annotation (Placement(transformation(extent={{-110,-90},{-90,-70}}))); Modelica.Blocks.Interfaces.RealInput TMixSet( final unit="K", displayUnit="degC") "Temperature setpoint of mixed water outlet" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}))); - Modelica.Blocks.Interfaces.RealOutput TMix( - final unit="K", - displayUnit="degC") - "Temperature of the outlet hot water supply to fixture" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); + annotation (Placement(transformation(extent={{-120,10},{-100,30}}), + iconTransformation(extent={{-120,10},{-100,30}}))); - Buildings.Controls.Continuous.LimPID conPID( - controllerType=Modelica.Blocks.Types.SimpleController.PI, - k=k, - Ti=Ti, - reset=Buildings.Types.Reset.Parameter) - "Controller for thermostatic valve" - annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemMix( - redeclare final package Medium = Medium, - allowFlowReversal=false, - final m_flow_nominal=mMix_flow_nominal, - tau=0) "Mixed water to fixture temperature sensor" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Fluid.Actuators.Valves.ThreeWayLinear val( - redeclare package Medium = Medium, - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - portFlowDirection_1=Modelica.Fluid.Types.PortFlowDirection.Entering, - portFlowDirection_2=Modelica.Fluid.Types.PortFlowDirection.Leaving, - portFlowDirection_3=Modelica.Fluid.Types.PortFlowDirection.Entering, - riseTime=5, - final m_flow_nominal=mMix_flow_nominal, - dpValve_nominal=dpValve_nominal) "Valve" annotation (Placement( - transformation( - extent={{10,10},{-10,-10}}, + Modelica.Blocks.Interfaces.RealInput yMixSet(final min=0, final unit="1") + "Mixed water fractional flow rate at TMixSet, as fraction of mMix_flow_nominal" + annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, rotation=180, - origin={0,0}))); - - Buildings.Fluid.Sensors.MassFlowRate senFloMix(redeclare package Medium = - Medium) "Mass flow rate of mixed water to fixture" - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); - Modelica.Blocks.Logical.Hysteresis hys(uLow=uLow, uHigh=uHigh) - "Hysteresis to reset controller if flow starts" - annotation (Placement(transformation(extent={{-10,30},{-30,50}}))); + origin={-110,80}), iconTransformation( + extent={{10,-10},{-10,10}}, + rotation=180, + origin={-110,80}))); Fluid.Sensors.TemperatureTwoPort senTemHot( redeclare final package Medium = Medium, allowFlowReversal=false, final m_flow_nominal=mMix_flow_nominal, tau=0) "Hot water temperature" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); Fluid.Sensors.TemperatureTwoPort senTemCol( redeclare final package Medium = Medium, allowFlowReversal=false, final m_flow_nominal=mMix_flow_nominal, tau=0) "Cold water temperature" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + + Modelica.Units.SI.MassFlowRate mMix_flow = gaiMMix_flow.y + "Mass flow rate of mixed water"; + Controls.OBC.CDL.Utilities.Assert assTHotTooLow(message="Hot water temperature is insufficient to meet mixed water set point") + "Assertion that triggers a warning whenever the hot water temperature becomes too low" + annotation (Placement(transformation(extent={{60,70},{80,90}}))); protected - parameter Real uLow = 0.01*mMix_flow_nominal "Low hysteresis threshold"; - parameter Real uHigh = 0.05*mMix_flow_nominal "High hysteresis threshold"; + Controls.OBC.CDL.Reals.Subtract dTMix + "Temperature difference mixed minus cold" + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + Controls.OBC.CDL.Reals.Subtract dTHot "Temperature difference hot minus cold" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + Utilities.Math.SmoothMax dTHot_nonZero(deltaX=dTSmall/4) + "Temperature difference bounded away from zero" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + Controls.OBC.CDL.Reals.Sources.Constant dTSmaDiv( + final k(final unit="K")=dTSmall) + "Small temperature difference to avoid division by zero" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + Controls.OBC.CDL.Reals.Divide temRat + "Ratio of temperatures (T_mix-T_col)/(T_hot-T_col)" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + Modelica.Blocks.Math.Gain gaiMMix_flow(final k=mMix_flow_nominal) + "Gain for multiplying domestic hot water schedule" annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=180, + origin={-30,-20}))); + Controls.OBC.CDL.Reals.Multiply mHot_flow( + u1(final unit="1"), + u2(final unit="kg/s"), + y(final unit="kg/s")) + "Hot water flow rate" + annotation (Placement(transformation(extent={{20,-20},{40,0}}))); + Controls.OBC.CDL.Reals.Subtract mCol_flow "Cold water flow rate" + annotation (Placement(transformation(extent={{60,-20},{80,0}}))); + + Fluid.Sources.MassFlowSource_T sinHot( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for hot water supply" + annotation (Placement(transformation(extent={{10,-50},{-10,-30}}))); + Fluid.Sources.MassFlowSource_T sinCol( + redeclare package Medium = Medium, + use_m_flow_in=true, + nPorts=1) "Sink for cold water supply" + annotation (Placement(transformation(extent={{8,-90},{-12,-70}}))); + Modelica.Blocks.Math.Gain sigHot(final k=-1) + "Sign change to extract mass flow rate" annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={50,-40}))); + Modelica.Blocks.Math.Gain sigCol(final k=-1) + "Sign change to extract mass flow rate" annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={50,-80}))); + Controls.OBC.CDL.Reals.Greater dTMon(h=dTSmall/4) + "Inequality to monitor whether temperatures are sufficient to meet set point" + annotation (Placement(transformation(extent={{20,70},{40,90}}))); + + parameter Modelica.Units.SI.Temperature dTSmall = 0.01 "Small temperature used to avoid division by zero"; equation - connect(senTemMix.T, conPID.u_m) - annotation (Line(points={{30,11},{30,60},{-30,60},{-30,68}}, - color={0,0,127})); - connect(val.port_2,senTemMix. port_a) annotation (Line(points={{10,-6.66134e-16}, - {20,-6.66134e-16},{20,0}}, color={0,127,255})); - connect(conPID.y, val.y) annotation (Line(points={{-19,80},{0,80},{0,12}}, - color={0,0,127})); - connect(senTemMix.T,TMix) annotation (Line(points={{30,11},{30,60},{110,60}}, - color={0,0,127})); - connect(senTemMix.port_b,senFloMix. port_a) - annotation (Line(points={{40,0},{50,0}}, color={0,127,255})); - connect(senFloMix.port_b,port_mix) - annotation (Line(points={{70,0},{100,0}}, color={0,127,255})); - connect(hys.u,senFloMix. m_flow) - annotation (Line(points={{-8,40},{60,40},{60,11}}, color={0,0,127})); - connect(hys.y, conPID.trigger) - annotation (Line(points={{-31,40},{-38,40},{-38,68}}, color={255,0,255})); - connect(conPID.u_s, TMixSet) - annotation (Line(points={{-42,80},{-120,80}}, color={0,0,127})); - connect(val.port_1, senTemHot.port_b) - annotation (Line(points={{-10,0},{-40,0}}, color={0,127,255})); - connect(senTemHot.port_a, port_hotSou) annotation (Line(points={{-60,0},{-80,0}, - {-80,40},{-100,40}}, color={0,127,255})); + connect(senTemHot.port_a, port_hot) annotation (Line(points={{-80,-40},{-100,-40}}, + color={0,127,255})); connect(port_col, senTemCol.port_a) - annotation (Line(points={{-100,-40},{-60,-40}}, color={0,127,255})); - connect(senTemCol.port_b, val.port_3) - annotation (Line(points={{-40,-40},{0,-40},{0,-10}}, color={0,127,255})); + annotation (Line(points={{-100,-80},{-80,-80}}, color={0,127,255})); + connect(dTMix.u1, TMixSet) annotation (Line(points={{-42,76},{-74,76},{-74,20}, + {-110,20}}, color={0,0,127})); + connect(senTemCol.T, dTMix.u2) annotation (Line(points={{-70,-69},{-70,-60},{-52, + -60},{-52,64},{-42,64}}, color={0,0,127})); + connect(dTHot.u1, senTemHot.T) + annotation (Line(points={{-42,46},{-70,46},{-70,-29}}, color={0,0,127})); + connect(dTHot.u2, senTemCol.T) annotation (Line(points={{-42,34},{-46,34},{-46, + -60},{-70,-60},{-70,-69}}, color={0,0,127})); + connect(dTHot_nonZero.u1, dTHot.y) annotation (Line(points={{-2,36},{-10,36},{ + -10,40},{-18,40}}, color={0,0,127})); + connect(dTHot_nonZero.u2, dTSmaDiv.y) annotation (Line(points={{-2,24},{-8,24}, + {-8,10},{-18,10}}, color={0,0,127})); + connect(dTHot_nonZero.y, temRat.u2) annotation (Line(points={{21,30},{30,30},{ + 30,44},{38,44}}, color={0,0,127})); + connect(temRat.u1, dTMix.y) annotation (Line(points={{38,56},{-10,56},{-10,70}, + {-18,70}},color={0,0,127})); + connect(yMixSet, gaiMMix_flow.u) annotation (Line(points={{-110,80},{-80,80},{ + -80,-20},{-42,-20}}, color={0,0,127})); + connect(mHot_flow.u1, temRat.y) annotation (Line(points={{18,-4},{10,-4},{10,10}, + {70,10},{70,50},{62,50}}, color={0,0,127})); + connect(gaiMMix_flow.y, mHot_flow.u2) annotation (Line(points={{-19,-20},{0,-20}, + {0,-16},{18,-16}}, color={0,0,127})); + connect(gaiMMix_flow.y, mCol_flow.u1) annotation (Line(points={{-19,-20},{0,-20}, + {0,14},{50,14},{50,-4},{58,-4}}, color={0,0,127})); + connect(mHot_flow.y, mCol_flow.u2) annotation (Line(points={{42,-10},{52,-10}, + {52,-16},{58,-16}}, color={0,0,127})); + connect(sigCol.y, sinCol.m_flow_in) annotation (Line(points={{39,-80},{26,-80}, + {26,-72},{10,-72}}, color={0,0,127})); + connect(sigHot.y, sinHot.m_flow_in) annotation (Line(points={{39,-40},{26,-40}, + {26,-32},{12,-32}}, color={0,0,127})); + connect(sigHot.u, mHot_flow.y) annotation (Line(points={{62,-40},{72,-40},{72, + -24},{52,-24},{52,-10},{42,-10}}, color={0,0,127})); + connect(mCol_flow.y, sigCol.u) annotation (Line(points={{82,-10},{90,-10},{90, + -80},{62,-80}}, color={0,0,127})); + connect(sinCol.ports[1], senTemCol.port_b) + annotation (Line(points={{-12,-80},{-60,-80}}, color={0,127,255})); + connect(sinHot.ports[1], senTemHot.port_b) + annotation (Line(points={{-10,-40},{-60,-40}}, color={0,127,255})); + connect(dTMon.y, assTHotTooLow.u) + annotation (Line(points={{42,80},{58,80}}, color={255,0,255})); + connect(dTMon.u1, dTHot.y) annotation (Line(points={{18,80},{-14,80},{-14,40}, + {-18,40}}, color={0,0,127})); + connect(dTSmaDiv.y, dTMon.u2) annotation (Line(points={{-18,10},{-8,10},{-8,72}, + {18,72}}, color={0,0,127})); annotation ( defaultComponentName="theMixVal", preferredView="info",Documentation(info=" @@ -132,17 +179,10 @@ Initial Implementation. fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{-4,50},{4,-50}}, - fillPattern=FillPattern.Solid, - fillColor={238,46,47}, - origin={-54,40}, - rotation=90, - pattern=LinePattern.None), - Rectangle( - extent={{-4,50},{4,-50}}, + extent={{-3,32},{3,-32}}, fillPattern=FillPattern.Solid, fillColor={28,108,200}, - origin={-50,-40}, + origin={-70,-81}, rotation=90, pattern=LinePattern.None), Text( @@ -153,44 +193,88 @@ Initial Implementation. textString="%name"), Polygon(points={{-10,30},{-10,30}}, lineColor={28,108,200}), Polygon( - points={{-20,30},{20,30},{-20,-30},{20,-30},{-20,30}}, + points={{-15,-3},{15,17},{15,-23},{-15,-3}}, lineColor={0,0,0}, fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Polygon( - points={{0,0},{30,20},{30,-14},{0,0}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), + fillPattern=FillPattern.Solid, + origin={-37,-55}, + rotation=270), Rectangle( - extent={{-4,37},{4,-37}}, + extent={{-4,4},{4,-4}}, fillPattern=FillPattern.Solid, fillColor={102,44,145}, - origin={67,-1.77636e-15}, + origin={82,-40}, rotation=90, pattern=LinePattern.None), Rectangle( - extent={{-4,7},{4,-7}}, + extent={{-3,7},{3,-7}}, fillPattern=FillPattern.Solid, fillColor={28,108,200}, - origin={-4.44089e-16,-37}, + origin={-41,-77}, rotation=180, pattern=LinePattern.None), + Line( + points={{66,4},{64,42}}, + color={0,0,0}, + pattern=LinePattern.None), + Text( + extent={{-96,46},{-54,14}}, + textColor={0,0,0}, + textString="TMixSet"), Rectangle( - extent={{-4,7},{4,-7}}, + extent={{-4,16},{4,-16}}, fillPattern=FillPattern.Solid, fillColor={238,46,47}, - origin={8.88178e-16,37}, - rotation=180, + origin={-86,-40}, + rotation=90, pattern=LinePattern.None), - Line( - points={{66,4},{64,42}}, - color={0,0,0}, + Rectangle( + extent={{-4,22},{4,-22}}, + fillPattern=FillPattern.Solid, + fillColor={102,44,145}, + origin={88,-58}, + rotation=180, pattern=LinePattern.None), - Line(points={{100,60},{98,60},{64,60},{64,4}}, color={0,0,0}), + Polygon( + points={{-15,-3},{15,17},{15,-23},{-15,-3}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-55,-43}, + rotation=180), + Polygon( + points={{-15,-3},{15,17},{15,-23},{-15,-3}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + origin={-25,-37}, + rotation=360), Text( - extent={{-96,98},{-54,66}}, + extent={{-96,108},{-54,76}}, textColor={0,0,0}, - textString="TSet")}), Diagram( + textString="yMixSet"), + Line(points={{-100,20},{-40,20},{-40,-40}}, color={0,0,0}), + Line(points={{-100,80},{48,80},{48,-40}}, color={0,0,0}), + Polygon( + points={{-15,-3},{15,17},{15,-23},{-15,-3}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + origin={63,-37}, + rotation=360), + Polygon( + points={{-15,-3},{15,17},{15,-23},{-15,-3}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={33,-43}, + rotation=180), + Rectangle( + extent={{-4,14},{4,-14}}, + fillPattern=FillPattern.Solid, + fillColor={102,44,145}, + origin={4,-40}, + rotation=90, + pattern=LinePattern.None)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end ThermostaticMixingValve; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo b/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo deleted file mode 100644 index 40112284df6..00000000000 --- a/Buildings/Experimental/DHC/Loads/HotWater/WaterDraw.mo +++ /dev/null @@ -1,82 +0,0 @@ -within Buildings.Experimental.DHC.Loads.HotWater; -model WaterDraw "A model for hot water draws from fixture(s)" - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHot_flow_nominal "Nominal hot water flow rate to fixture"; - - Modelica.Fluid.Interfaces.FluidPort_a port_hot( - redeclare package Medium = Medium) "Port for hot water supply to fixture" - annotation (Placement(transformation(extent={{-110,-10},{-90,10}}), - iconTransformation(extent={{-110,-10},{-90,10}}))); - Fluid.Sources.MassFlowSource_T sinHot( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for hot water supply" - annotation (Placement(transformation(extent={{-46,-10},{-66,10}}))); - Modelica.Blocks.Math.Gain gaiDhw(final k=-mHot_flow_nominal) "Gain for multiplying domestic hot water schedule" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=180, - origin={-70,60}))); - Modelica.Blocks.Interfaces.RealInput yHotWat(final min=0, final unit="1") - "Hot water to fixture draw fraction" annotation (Placement(transformation( - extent={{10,-10},{-10,10}}, - rotation=180, - origin={-110,60}), iconTransformation( - extent={{10,-10},{-10,10}}, - rotation=180, - origin={-110,60}))); -equation - connect(yHotWat, gaiDhw.u) - annotation (Line(points={{-110,60},{-82,60}}, color={0,0,127})); - connect(port_hot, sinHot.ports[1]) - annotation (Line(points={{-100,0},{-66,0}}, color={0,127,255})); - connect(sinHot.m_flow_in, gaiDhw.y) annotation (Line(points={{-44,8},{-20,8},{ - -20,60},{-59,60}}, color={0,0,127})); - annotation ( - defaultComponentName="watDra", - Documentation(info=" -

    -This model implements a hot water sink, representing one or several fixtures. -

    -

    -Input to the model is the flow rate of hot water draw, specified as an input fraction -of a nominal value. -

    -", revisions=" -
      -
    • -September 11, 2023 by David Blum:
      -Updated for release. -
    • -
    • -October 20, 2022 by Dre Helmns:
      -Initial Implementation. -
    • -
    -"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Polygon( - points={{-7.728,38.2054},{-25.772,18.1027},{-25.772,-24.6152},{0, - -57.2823},{25.772,-24.6152},{25.772,18.1027},{7.728,38.2054},{0, - 53.2823},{-7.728,38.2054}}, - lineColor={28,108,200}, - lineThickness=0.5, - smooth=Smooth.Bezier, - fillColor={0,255,255}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-70,70},{70,-70}}, - lineColor={0,0,0}, - pattern=LinePattern.Dash, - lineThickness=1), - Text( - extent={{-147,143},{153,103}}, - textColor={0,0,255}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={0,127,255}, - textString="%name")}), Diagram( - coordinateSystem(preserveAspectRatio=false))); -end WaterDraw; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/package.mo index 3aeff616b76..2f0a3fd5173 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.mo @@ -4,10 +4,10 @@ package HotWater "Package of models for domestic hot water generation and loads annotation (preferredView="info", Documentation(info="

    -This package contains models for building hot water loads served by a district heating network. +This package contains models for building domestic hot water loads served by a district heating network. These loads are typically charactersized as being from fixtures in kitchens, -bathrooms, and laundry, typically require a higher temperature water than -space heating, and are often know as domestic hot water loads. +bathrooms, and laundry, and typically require a higher temperature water than +space heating.

    ")); end HotWater; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order index c18f1a3af9c..c4cc50d8865 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -1,7 +1,6 @@ DirectHeatExchangerWithElectricHeat HeatPumpWithTank ThermostaticMixingValve -WaterDraw Data Examples BaseClasses diff --git a/Buildings/Experimental/DHC/Plants/Combined/Examples/AllElectricCWStorage.mo b/Buildings/Experimental/DHC/Plants/Combined/Examples/AllElectricCWStorage.mo index b69b583cc96..d9d4f8c8556 100644 --- a/Buildings/Experimental/DHC/Plants/Combined/Examples/AllElectricCWStorage.mo +++ b/Buildings/Experimental/DHC/Plants/Combined/Examples/AllElectricCWStorage.mo @@ -250,9 +250,9 @@ equation -140},{-160,-180},{-148,-180}}, color={0,0,127})); connect(loaHea.QHea_flow, QTotHea_flow.u) annotation (Line(points={{-5,98},{-4, 98},{-4,94},{-50,94},{-50,130},{-58,130}}, color={0,0,127})); - connect(TChiWatRet.y, loaCoo.TSetDisRet) annotation (Line(points={{-168,-100}, + connect(TChiWatRet.y,loaCoo.TDisRetSet) annotation (Line(points={{-168,-100}, {20,-100},{20,-113},{11,-113}}, color={0,0,127})); - connect(THeaWatRet.y, loaHea.TSetDisRet) annotation (Line(points={{-168,50},{-44, + connect(THeaWatRet.y,loaHea.TDisRetSet) annotation (Line(points={{-168,50},{-44, 50},{-44,126},{20,126},{20,117},{11,117}}, color={0,0,127})); annotation ( __Dymola_Commands( diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt index c26a41cd86e..0b3d258ccdb 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt @@ -1,29 +1,29 @@ -last-generated=2023-09-13 +last-generated=2023-10-02 statistics-initialization= { - "nonlinear": "1, 1, 12, 1, 2, 0, 2, 0, 1, 1, 1, 1", + "nonlinear": "1, 1, 12, 1, 2, 0, 2, 0, 1, 1, 1", "numerical Jacobians": "0" } statistics-simulation= { "linear": "0, 0, 0, 0, 0, 2", "nonlinear": "2, 12, 1, 1, 2, 1, 1, 1, 1", - "number of continuous time states": "40", + "number of continuous time states": "32", "numerical Jacobians": "0" } time=[0e+00, 8.64e+05] bui.ets.proHeaWat.heaPum.QCon_flow_nominal=[2.617e+05, 2.617e+05] -bui.ets.proHeaWat.heaPum.QCon_flow=[0e+00, 0e+00, 0e+00, 6.8332078125e+04, 8.7609640625e+04, 4.72914921875e+04, 6.347187109375e+04, 4.093409765624994e+04, 0e+00, 0e+00, 1.998871917724609e+02, 9.6070888671875e+03, 1.864936328125e+04, 9.3643828125e+04, 1.188654687499999e+05, 4.636187890625e+04, 6.345331640625e+04, 4.381543359375e+04, 0e+00, 0e+00, 1.074956665039062e+03, 7.68366796875e+03, 1.4722931640625e+04, 8.87203671875e+04, 9.269075e+04, 1.28489326171875e+04, 7.443037109375e+03, 1.28835947265624e+04, 0e+00, 0e+00, 0e+00, 2.82854736328125e+02, 6.584140625e+03, 9.09313046875e+04, 1.209758203125e+05, 4.317258203125e+04, 7.2149484375e+04, 4.464141015625e+04, 0e+00, 3.898369216918945e+01, 1.893034790039062e+03, 1.321053515625e+04, 2.10704296875e+04, 9.90063359375e+04, 1.49110171875e+05, 8.7107828125e+04, 1.25938875e+05, 7.05003671875e+04, 5.23193359375e+03, 1.9429689453125e+04, 2.897187109375e+04, 3.5531171875e+04, 4.036931640625e+04, 5.600375390625e+04, 5.474438281249999e+04, 5.514845312500001e+04, 5.775030468750002e+04, 5.9501625e+04, 4.480046484375006e+04, 5.053569921875e+04, 5.385569140625e+04, 5.63890078125e+04, 5.78007734375e+04, 7.5190078125e+04, 7.22923046875e+04, 6.8525078125e+04, 6.824821875e+04, 7.0196765625e+04, 5.36539296875e+04, 5.963400390625e+04, 6.259490234375e+04, 6.7062921875e+04, 6.91338046875e+04, 1.638688125e+05, 2.25433671875e+05, 1.40050671875e+05, 1.65744296875e+05, 9.90543203125e+04, 3.223062890625e+04, 4.62477421875e+04, 5.491522265625e+04, 6.186308984375e+04, 6.61288046875e+04, 1.6270740625e+05, 2.19996359375e+05, 1.190877734375e+05, 1.5886175e+05, 9.5975609375e+04, 3.0540328125e+04, 4.36042265625e+04, 5.21403515625e+04, 5.914487890625e+04, 6.43871484375e+04, 1.58365640625e+05, 2.05549421875e+05, 9.63893203125e+04, 1.3497484375e+05, 8.43976875e+04, 1.8075876953125e+04, 3.105394921875e+04, 4.038166796875e+04] +bui.ets.proHeaWat.heaPum.QCon_flow=[0e+00, 0e+00, 0e+00, 6.83320703125e+04, 8.76097890625e+04, 4.729258984375e+04, 6.347230078125e+04, 4.093411718749994e+04, 0e+00, 0e+00, 1.999011993408203e+02, 9.60718359375e+03, 1.8649224609375e+04, 9.36438125e+04, 1.188654921874999e+05, 4.636153515625e+04, 6.345333984375e+04, 4.3813984375e+04, 0e+00, 0e+00, 1.075181274414062e+03, 7.683984375e+03, 1.4723455078125e+04, 8.87204609375e+04, 9.26895546875e+04, 1.28490283203125e+04, 7.4429501953125e+03, 1.28835566406249e+04, 0e+00, 0e+00, 0e+00, 2.830715026855469e+02, 6.58333984375e+03, 9.093134375e+04, 1.2097609375e+05, 4.317233203125e+04, 7.21495234375e+04, 4.46431015625e+04, 0e+00, 3.887013244628906e+01, 1.892901123046875e+03, 1.32104033203125e+04, 2.107053515625e+04, 9.900578125e+04, 1.49110203125e+05, 8.71090234375e+04, 1.259405546875e+05, 7.05003203125e+04, 5.23149267578125e+03, 1.9429412109375e+04, 2.8971833984375e+04, 3.55310390625e+04, 4.036935546875e+04, 5.600348828125e+04, 5.474476953124999e+04, 5.514838671875001e+04, 5.775047656250002e+04, 5.950133984375e+04, 4.479950781250006e+04, 5.054137890625e+04, 5.38565390625e+04, 5.638929296875e+04, 5.780082421875e+04, 7.519109375e+04, 7.22924765625e+04, 6.85246484375e+04, 6.8248375e+04, 7.0196625e+04, 5.3653875e+04, 5.96338828125e+04, 6.259481640625e+04, 6.70628984375e+04, 6.91337734375e+04, 1.6386896875e+05, 2.2543365625e+05, 1.4005165625e+05, 1.6574453125e+05, 9.9054078125e+04, 3.222966015625e+04, 4.624773046875e+04, 5.49149921875e+04, 6.18619609375e+04, 6.61287890625e+04, 1.62707171875e+05, 2.19996328125e+05, 1.1908775e+05, 1.588614375e+05, 9.597621875e+04, 3.054047265625e+04, 4.3604265625e+04, 5.214035546875e+04, 5.914511328125e+04, 6.43871484375e+04, 1.583646875e+05, 2.055495625e+05, 9.63899921875e+04, 1.349755625e+05, 8.43974921875e+04, 1.8075916015625e+04, 3.105395703125e+04, 4.038175e+04] bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow_nominal=[3.5e+03, 3.5e+03] -bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow=[0e+00, 1.229643310546875e+03, 2.476189422607422e+02, -3.239327812932594e-20, 2.842608642578125e+03, 2.299481689453125e+03, 2.8765107421875e+03, 2.001404296874998e+03, -2.03157816632861e-13, 6.821018970222692e-31, 2.40390761711103e-38, -4.269558170604702e-31, 3.701128787236328e-30, 2.111073760986328e+02, 2.835105957031251e+03, 2.2953447265625e+03, 2.875015869140625e+03, 2.000676879882812e+03, 3.057628003328046e-14, 1.662270533868418e-22, 5.040801154690844e-26, -4.178991261705892e-26, 4.01680846997745e-27, 2.109526824951172e+02, 2.8350400390625e+03, 2.295301025390625e+03, 2.875073486328125e+03, 2.00068737792968e+03, -1.850355219241686e-17, -1.401298464353174e-45, -1.401298464324817e-45, 4.612398068233325e-28, -5.479956322841888e-27, 2.111732025146484e+02, 2.835009765625e+03, 2.2953095703125e+03, 2.875008544921875e+03, 2.000669921875e+03, 8.618032536786367e-15, -1.796191328779636e-29, 4.265002676724644e-28, 4.348725932895068e-27, -6.522621090959111e-28, 2.111585235595703e+02, 2.835083251953125e+03, 2.2953291015625e+03, 2.875030517578125e+03, 2.000654296875e+03, -2.802877424867941e-24, 1.420626170068686e-26, 5.650347505030506e-26, 3.375439950277728e-28, -8.326918043780796e-26, -9.50640946479484e-29, 7.788445287662445e-27, 9.914262724670984e-26, -1.027964024481024e-28, -1.750213964329069e-29, 2.611478851639825e-29, -1.975336364510986e-26, -2.131703609427931e-22, 4.629686602083705e-25, 5.070053704548394e-33, -0e+00, 0e+00, -2.777091768083185e-31, -2.095359209802589e-22, -7.937735981380339e-26, -1.063006500375151e-29, 3.617915974723539e-28, -9.89906112850871e-27, 3.897120783211527e-26, -6.183411383196562e-28, 4.540486450195312e+02, 2.82781689453125e+03, 2.2935166015625e+03, 2.874316162109375e+03, 2.000332397460938e+03, 1.636524934698366e-15, -1.723719433585226e-27, -7.971457165813813e-27, 5.077033289548612e-26, -2.070016775395414e-26, 2.112217102050781e+02, 2.8349453125e+03, 2.295324951171875e+03, 2.875013427734375e+03, 2.00069140625e+03, 2.125326620965907e-14, 4.207143427112176e-26, -1.861469685446177e-26, -1.505075578865342e-26, 8.342236813521254e-28, 2.111849060058594e+02, 2.835008544921875e+03, 2.295303955078125e+03, 2.87497216796875e+03, 2.000671264648438e+03, -1.764813990555771e-17, -1.908775794224656e-25, 2.424432258588584e-26] -bui.PHea=[0e+00, 4.129379577636719e+02, 8.195110321044922e+01, 9.10314453125e+03, 1.32969580078125e+04, 6.47293310546875e+03, 9.3297685546875e+03, 5.414883789062491e+03, -6.56160171227764e-14, 2.203056264076643e-31, 1.693219947814941e+01, 8.795237426757812e+02, 1.83262451171875e+03, 1.3328087890625e+04, 1.887948242187499e+04, 6.33376220703125e+03, 9.3190869140625e+03, 5.83511865234375e+03, 9.875542732477784e-15, 5.368809985002713e-23, 9.199900054931641e+01, 6.925162963867188e+02, 1.403852661132812e+03, 1.24907861328125e+04, 1.41704697265625e+04, 2.053074951171875e+03, 1.738276123046875e+03, 1.942070922851549e+03, -5.976286867876612e-18, -9.239933084568223e-57, -0e+00, 2.397533416748047e+01, 5.888497924804688e+02, 1.2863697265625e+04, 1.92775703125e+04, 5.85753955078125e+03, 1.07806337890625e+04, 5.9599892578125e+03, 2.783456779070748e-15, 3.2947678565979e+00, 1.632985229492188e+02, 1.242572387695312e+03, 2.108059326171875e+03, 1.42583583984375e+04, 2.48443203125e+04, 1.3003712890625e+04, 2.0232048828125e+04, 1.0188537109375e+04, 4.643344421386719e+02, 1.91995654296875e+03, 3.064969482421875e+03, 3.92646826171875e+03, 4.60092626953125e+03, 6.99889013671875e+03, 6.795449707031249e+03, 6.859562011718753e+03, 7.287243652343754e+03, 7.582001953125e+03, 5.249188476562509e+03, 6.1226435546875e+03, 6.65002392578125e+03, 7.061298828125e+03, 7.29694482421875e+03, 1.01989833984375e+04, 9.7370966796875e+03, 9.144416015625e+03, 9.10112890625e+03, 9.4060380859375e+03, 6.61985205078125e+03, 7.60239208984375e+03, 8.10904345703125e+03, 8.8944267578125e+03, 9.2393798828125e+03, 2.70493203125e+04, 4.241352734375e+04, 2.2811587890625e+04, 2.84060625e+04, 1.49713759765625e+04, 3.48713671875e+03, 5.4628408203125e+03, 6.81955224609375e+03, 7.98176123046875e+03, 8.7278291015625e+03, 2.6704880859375e+04, 4.107555078125e+04, 1.8714380859375e+04, 2.6916154296875e+04, 1.443109765625e+04, 3.267202880859375e+03, 5.06916259765625e+03, 6.37342919921875e+03, 7.52041064453125e+03, 8.4193056640625e+03, 2.57766015625e+04, 3.75463828125e+04, 1.4594505859375e+04, 2.1997396484375e+04, 1.2450072265625e+04, 1.770950439453125e+03, 3.331638671875e+03, 4.6022021484375e+03] -bui.PPum=[5.250715836882591e-02, 2.401509552001953e+02, 5.265277709960938e+02, 2.52985693359375e+03, 2.9478330078125e+03, 2.2066201171875e+03, 2.4804013671875e+03, 2.107822509765624e+03, 9.476273345947266e+01, 9.275942993164062e+01, 2.97861083984375e+02, 1.51692822265625e+03, 1.683223266601562e+03, 2.984968994140625e+03, 3.499408203124999e+03, 2.20546484375e+03, 2.46300732421875e+03, 2.161532958984375e+03, 9.482283782958984e+01, 9.277193450927734e+01, 1.096280029296875e+03, 1.482677978515625e+03, 1.613994506835938e+03, 2.906158203125e+03, 3.082752197265625e+03, 1.623158325195312e+03, 1.4896220703125e+03, 1.602397460937498e+03, 9.482556152343749e+01, 9.289024353027344e+01, 9.205660247802734e+01, 3.061598815917969e+02, 1.471255004882812e+03, 2.934306396484375e+03, 3.5347880859375e+03, 2.15309814453125e+03, 2.62481982421875e+03, 2.184080078125e+03, 9.474106597900391e+01, 1.641004638671875e+02, 1.428936889648438e+03, 1.57335009765625e+03, 1.7268935546875e+03, 3.073208740234375e+03, 4.056368896484375e+03, 2.971629638671875e+03, 3.603107666015625e+03, 2.73299609375e+03, 1.473828002929688e+03, 1.694313720703125e+03, 1.869394287109375e+03, 1.984923706054688e+03, 2.0682548828125e+03, 2.336109375e+03, 2.31902880859375e+03, 2.321938232421875e+03, 2.369696044921875e+03, 2.407151123046875e+03, 2.146822998046877e+03, 2.233543701171875e+03, 2.29672705078125e+03, 2.34144384765625e+03, 2.37454541015625e+03, 2.71165576171875e+03, 2.660501708984375e+03, 2.582310302734375e+03, 2.57335009765625e+03, 2.610464111328125e+03, 2.3004619140625e+03, 2.404121337890625e+03, 2.462782958984375e+03, 2.546915283203125e+03, 2.58826953125e+03, 4.3203759765625e+03, 5.9290263671875e+03, 3.948947265625e+03, 4.441044921875e+03, 3.242529541015625e+03, 1.933377563476562e+03, 2.158819091796875e+03, 2.31076513671875e+03, 2.44544287109375e+03, 2.528826171875e+03, 4.28180419921875e+03, 5.803943359375e+03, 3.536772705078125e+03, 4.2744521484375e+03, 3.192241943359375e+03, 1.903412963867188e+03, 2.11746044921875e+03, 2.25700048828125e+03, 2.395784912109375e+03, 2.492286376953125e+03, 4.18769482421875e+03, 5.43679296875e+03, 3.14006494140625e+03, 3.77429638671875e+03, 2.990113037109375e+03, 1.684476318359375e+03, 1.9044873046875e+03, 2.066050048828125e+03] -bui.QHea_flow=[0e+00, 1.505360412597656e+02, 1.964997924804688e+03, 6.70619453125e+04, 8.79494375e+04, 4.812790234375e+04, 6.33616796875e+04, 4.203753515624994e+04, 7.762696593999863e-02, 2.158230170607567e-02, 4.942075500488281e+02, 8.9323134765625e+03, 1.8312642578125e+04, 9.14274921875e+04, 1.199913593749999e+05, 4.77527578125e+04, 6.261430078125e+04, 4.52699765625e+04, 8.062047511339188e-02, 2.184238284826279e-02, 2.267813720703125e+03, 7.10513134765625e+03, 1.427617578125e+04, 8.68503359375e+04, 9.5471828125e+04, 1.4348443359375e+04, 7.31560302734375e+03, 1.339676074218741e+04, 7.334928214549978e-02, 2.127661369740969e-02, 1.198167353868484e-02, 5.27404541015625e+02, 6.46557861328125e+03, 8.8604671875e+04, 1.219892421875e+05, 4.451583984375e+04, 7.11182890625e+04, 4.651373046875e+04, 7.690268009901047e-02, 0e+00, 3.3293017578125e+03, 1.1968232421875e+04, 2.0800884765625e+04, 9.665615625e+04, 1.4873903125e+05, 8.83800234375e+04, 1.259342109375e+05, 7.49642421875e+04, 6.57086669921875e+03, 1.896386328125e+04, 2.8791064453125e+04, 3.53470390625e+04, 4.02508125e+04, 5.586967578125e+04, 5.486709374999999e+04, 5.507494921875001e+04, 5.759128515625002e+04, 5.949966796875e+04, 4.493543750000009e+04, 5.044885546875e+04, 5.377062890625e+04, 5.613824609375e+04, 5.7799734375e+04, 7.51829609375e+04, 7.24934296875e+04, 6.8629359375e+04, 6.8233859375e+04, 7.00935546875e+04, 5.372775390625e+04, 5.94065546875e+04, 6.244809375e+04, 6.6911484375e+04, 6.89982421875e+04, 1.62266578125e+05, 2.2490328125e+05, 1.4193475e+05, 1.6625778125e+05, 1.041996640625e+05, 3.2251556640625e+04, 4.5971e+04, 5.4582828125e+04, 6.159358984375e+04, 6.59460703125e+04, 1.605654375e+05, 2.203854375e+05, 1.206605234375e+05, 1.589179375e+05, 1.012015234375e+05, 3.0566935546875e+04, 4.3357421875e+04, 5.176448828125e+04, 5.8977375e+04, 6.405625e+04, 1.56225609375e+05, 2.06757421875e+05, 9.7960484375e+04, 1.34831421875e+05, 8.92684375e+04, 1.828333984375e+04, 3.0786908203125e+04, 4.016228515625e+04] +bui.ets.proHotWat.heaPumTan.heaPum.QCon_flow=[0e+00, 1.229611572265625e+03, 2.475562744140625e+02, -1.661701289819727e-19, 2.84265185546875e+03, 2.2995341796875e+03, 2.876562744140625e+03, 2.00139562988281e+03, -7.122630935572916e-13, 1.394884498580797e-26, 3.710108530608724e-37, -4.383062798613164e-26, -4.6471096428814e-26, 2.126043090820312e+02, 2.835126464843751e+03, 2.295426025390625e+03, 2.875023193359375e+03, 2.000692993164062e+03, 9.853538341167423e-14, 7.383709042787358e-23, -1.195984391722996e-26, 3.586978317579388e-28, -3.088770359352216e-23, 2.12801513671875e+02, 2.835072021484375e+03, 2.295314453125e+03, 2.8749921875e+03, 2.000686645507805e+03, -2.413898768371906e-11, -3.13547678143686e-21, 8.00123464267718e-34, -3.582942333780513e-24, -5.052851698352875e-27, 2.127040710449219e+02, 2.835034912109375e+03, 2.295363037109375e+03, 2.875007080078125e+03, 2.000661376953125e+03, 1.181115760751084e-09, -1.03462558986196e-24, -2.61315201531615e-27, -7.887746235595033e-27, 2.844037504467147e-27, 2.127831573486328e+02, 2.83498388671875e+03, 2.2953232421875e+03, 2.875078125e+03, 2.0006484375e+03, 6.712766811934668e-16, -6.114660063746631e-25, 4.707617970613774e-27, -9.846951795708283e-29, 2.446941372220615e-27, -6.245946039601323e-27, -4.220106168232883e-27, 8.072428532969463e-30, 2.132217745177947e-28, -2.379993928830696e-28, -1.929491759226295e-27, -2.531444013720934e-26, -6.160989075849356e-24, 6.940207191883979e-26, 3.804576382709821e-28, -9.22163953577435e-35, 0e+00, 0e+00, 0e+00, -0e+00, 3.167114446016525e-31, 7.927794504341107e-28, 1.706629477556587e-28, -5.497897053608635e-26, 1.934383422673604e-29, 4.553955383300781e+02, 2.827814453125e+03, 2.293478515625e+03, 2.8742685546875e+03, 2.000401245117188e+03, -3.130669771952152e-15, 1.628636002600636e-25, 9.039127183734229e-24, -1.414021709473635e-25, 6.173006065189523e-27, 2.127204284667969e+02, 2.834981201171875e+03, 2.295308837890625e+03, 2.875006103515625e+03, 2.000650268554688e+03, -6.397808275040324e-24, 3.763911142306062e-27, 2.208107185003143e-27, -1.224952612165316e-26, 4.519254703518914e-27, 2.127527618408203e+02, 2.8350576171875e+03, 2.295350830078125e+03, 2.874998779296875e+03, 2.000709350585938e+03, 8.180271352920924e-19, 3.495622552891109e-27, 7.895649352363422e-33] +bui.PHea=[0e+00, 4.129269714355469e+02, 8.192984771728516e+01, 9.10314453125e+03, 1.3296998046875e+04, 6.4731083984375e+03, 9.329857421875e+03, 5.414882812499991e+03, -2.300471011601468e-13, 4.505205429760598e-27, 1.693338775634766e+01, 8.79532958984375e+02, 1.832609741210938e+03, 1.33285927734375e+04, 1.887949414062499e+04, 6.33374462890625e+03, 9.31909375e+03, 5.83492578125e+03, 3.182500988544064e-14, 2.384794200748787e-23, 9.201834869384766e+01, 6.925460815429688e+02, 1.403906372070312e+03, 1.2491427734375e+04, 1.4170283203125e+04, 2.05308984375e+03, 1.738236083984375e+03, 1.942066772460924e+03, -7.796422361871927e-12, -1.01269787729024e-21, 2.584243055868699e-34, 2.399373817443848e+01, 5.887754516601562e+02, 1.286422265625e+04, 1.927762890625e+04, 5.85752587890625e+03, 1.078094921875e+04, 5.960220703125e+03, 3.814773774646341e-10, 3.285168170928955e+00, 1.63286865234375e+02, 1.24255908203125e+03, 2.108071044921875e+03, 1.42588154296875e+04, 2.48442890625e+04, 1.3003791015625e+04, 2.023237109375e+04, 1.018852734375e+04, 4.642941284179688e+02, 1.919926513671875e+03, 3.064965087890625e+03, 3.926451416015625e+03, 4.60093212890625e+03, 6.998849609375e+03, 6.795507324218749e+03, 6.859551269531253e+03, 7.287270019531254e+03, 7.58195751953125e+03, 5.249055664062509e+03, 6.12346875e+03, 6.6501494140625e+03, 7.0613427734375e+03, 7.29695263671875e+03, 1.01990859375e+04, 9.737123046875e+03, 9.1443876953125e+03, 9.1011533203125e+03, 9.406017578125e+03, 6.61984423828125e+03, 7.60237353515625e+03, 8.10902978515625e+03, 8.8944228515625e+03, 9.2393779296875e+03, 2.7049833984375e+04, 4.241351953125e+04, 2.2811748046875e+04, 2.8406091796875e+04, 1.49713603515625e+04, 3.4870166015625e+03, 5.4628388671875e+03, 6.819517578125e+03, 7.98158251953125e+03, 8.727826171875e+03, 2.670534375e+04, 4.107555859375e+04, 1.8714623046875e+04, 2.691608984375e+04, 1.44311787109375e+04, 3.267220458984375e+03, 5.06916845703125e+03, 6.37342919921875e+03, 7.52044677734375e+03, 8.4193056640625e+03, 2.5776947265625e+04, 3.75464296875e+04, 1.45946015625e+04, 2.19975390625e+04, 1.2450052734375e+04, 1.77095458984375e+03, 3.3316396484375e+03, 4.60221240234375e+03] +bui.PPum=[5.250715836882591e-02, 2.398956451416016e+02, 5.265986328125e+02, 2.5298583984375e+03, 2.947833740234375e+03, 2.206622314453125e+03, 2.480401123046875e+03, 2.107822753906249e+03, 9.477518463134766e+01, 9.27625732421875e+01, 2.979886474609375e+02, 1.51693017578125e+03, 1.683224487304688e+03, 2.98496875e+03, 3.499408935546874e+03, 2.205470947265625e+03, 2.463007080078125e+03, 2.16153271484375e+03, 9.476506042480469e+01, 9.275562286376953e+01, 1.096261962890625e+03, 1.482679809570312e+03, 1.61401318359375e+03, 2.906157958984375e+03, 3.082759033203125e+03, 1.623158325195312e+03, 1.48962109375e+03, 1.602397705078123e+03, 9.477777862548827e+01, 9.287525939941406e+01, 9.206014251708984e+01, 3.061961975097656e+02, 1.47125390625e+03, 2.934305908203125e+03, 3.534788330078125e+03, 2.153093017578125e+03, 2.62479833984375e+03, 2.184079833984375e+03, 9.477332305908203e+01, 1.6419287109375e+02, 1.428935546875e+03, 1.573349487304688e+03, 1.726895263671875e+03, 3.0732099609375e+03, 4.05636669921875e+03, 2.971639892578125e+03, 3.603106201171875e+03, 2.732995849609375e+03, 1.47383154296875e+03, 1.694314208984375e+03, 1.869390380859375e+03, 1.984915283203125e+03, 2.068254638671875e+03, 2.3361416015625e+03, 2.319030029296875e+03, 2.321929931640625e+03, 2.369701904296875e+03, 2.40714501953125e+03, 2.146822998046877e+03, 2.233544189453125e+03, 2.296720458984375e+03, 2.341439697265625e+03, 2.374544189453125e+03, 2.71166552734375e+03, 2.660502197265625e+03, 2.58228857421875e+03, 2.573349609375e+03, 2.610462158203125e+03, 2.300459228515625e+03, 2.4041142578125e+03, 2.4627802734375e+03, 2.546924072265625e+03, 2.58826806640625e+03, 4.320375e+03, 5.92902978515625e+03, 3.948944091796875e+03, 4.4410439453125e+03, 3.24253076171875e+03, 1.93337548828125e+03, 2.158819091796875e+03, 2.310767822265625e+03, 2.445441162109375e+03, 2.528824951171875e+03, 4.2818046875e+03, 5.803943359375e+03, 3.536703125e+03, 4.274451171875e+03, 3.19223974609375e+03, 1.903408081054688e+03, 2.117461669921875e+03, 2.25700048828125e+03, 2.395788330078125e+03, 2.492287109375e+03, 4.18769580078125e+03, 5.43679345703125e+03, 3.14006591796875e+03, 3.774295654296875e+03, 2.99011328125e+03, 1.684476684570312e+03, 1.904487670898438e+03, 2.0660546875e+03] +bui.QHea_flow=[0e+00, 1.493409118652344e+02, 1.96499462890625e+03, 6.7062e+04, 8.794946875e+04, 4.81281640625e+04, 6.336166796875e+04, 4.203754296874994e+04, 7.818440347909927e-02, 2.162826806306839e-02, 4.948764038085938e+02, 8.9321689453125e+03, 1.8312390625e+04, 9.14274921875e+04, 1.199913671874999e+05, 4.775331640625e+04, 6.2614796875e+04, 4.526994140625e+04, 7.798042893409729e-02, 2.16028057038784e-02, 2.267438720703125e+03, 7.1049501953125e+03, 1.4277197265625e+04, 8.6850328125e+04, 9.54722890625e+04, 1.43484423828125e+04, 7.3159599609375e+03, 1.339677148437491e+04, 7.135672867298089e-02, 2.106104418635374e-02, 1.201198808848858e-02, 5.277313232421875e+02, 6.4657158203125e+03, 8.86046328125e+04, 1.219892265625e+05, 4.45152578125e+04, 7.11158515625e+04, 4.651371484375e+04, 7.835377007722855e-02, 0e+00, 3.32916064453125e+03, 1.1968400390625e+04, 2.08016328125e+04, 9.665625e+04, 1.487390625e+05, 8.83808828125e+04, 1.25934e+05, 7.496425e+04, 6.57106640625e+03, 1.8963818359375e+04, 2.8790822265625e+04, 3.5349765625e+04, 4.025085546875e+04, 5.587071875e+04, 5.486714062499999e+04, 5.507441015625001e+04, 5.759196484375002e+04, 5.949939453125e+04, 4.493506640625009e+04, 5.044890625e+04, 5.3770390625e+04, 5.613808203125e+04, 5.779956640625e+04, 7.51835234375e+04, 7.24934453125e+04, 6.86282578125e+04, 6.823384375e+04, 7.0093515625e+04, 5.37290078125e+04, 5.940627734375e+04, 6.24497734375e+04, 6.69123046875e+04, 6.899815625e+04, 1.62266546875e+05, 2.249033125e+05, 1.419346875e+05, 1.66257734375e+05, 1.041997265625e+05, 3.2251439453125e+04, 4.59709921875e+04, 5.458297265625e+04, 6.159392578125e+04, 6.59460234375e+04, 1.6056546875e+05, 2.203854375e+05, 1.2065740625e+05, 1.5891796875e+05, 1.012013984375e+05, 3.05666796875e+04, 4.335852734375e+04, 5.17644765625e+04, 5.897602734375e+04, 6.40561875e+04, 1.56225765625e+05, 2.06757390625e+05, 9.79604921875e+04, 1.3483134375e+05, 8.92684609375e+04, 1.8283357421875e+04, 3.078685546875e+04, 4.016099609375e+04] bui.QCoo_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] bui.ets.loaSHW=[0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070291e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070227e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00] bui.ets.THotWatSupSet=[3.221499938964844e+02, 3.221499938964844e+02] -bui.ets.tmv.THot=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.221499938964844e+02, 3.221495666503906e+02, 3.221498413085938e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221248779296875e+02, 3.221499938964844e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.2212255859375e+02, 3.221499938964844e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221512145996094e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.220972900390625e+02, 3.221499938964844e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498107910156e+02, 3.221508178710938e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.220797729492188e+02, 3.221500244140625e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.2215087890625e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221321105957031e+02, 3.221502685546875e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221506958007812e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221446228027344e+02, 3.221500244140625e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221136169433594e+02, 3.221500244140625e+02, 3.221495361328125e+02, 3.221498107910156e+02, 3.221498413085938e+02, 3.221508178710938e+02, 3.220966186523438e+02, 3.220966186523438e+02, 3.220966186523438e+02] -bui.ets.proHotWat.senTHotSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.335948791503906e+02, 3.338206787109375e+02, 3.319593200683594e+02, 3.32568359375e+02, 3.321694030761719e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.332164611816406e+02, 3.337945251464844e+02, 3.339643859863281e+02, 3.320223999023438e+02, 3.325864562988281e+02, 3.321753234863281e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.332218017578125e+02, 3.338075866699219e+02, 3.339660949707031e+02, 3.320228576660156e+02, 3.325857238769531e+02, 3.321753234863281e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.337971496582031e+02, 3.339664916992188e+02, 3.320231018066406e+02, 3.325865173339844e+02, 3.321754150390625e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.332201843261719e+02, 3.337957763671875e+02, 3.339654541015625e+02, 3.320229797363281e+02, 3.325875244140625e+02, 3.321754760742188e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.332206115722656e+02, 3.337682495117188e+02, 3.339943237304688e+02, 3.320491638183594e+02, 3.325955810546875e+02, 3.321780090332031e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.332220458984375e+02, 3.337967834472656e+02, 3.339671630859375e+02, 3.320231323242188e+02, 3.32587158203125e+02, 3.321753540039062e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.332206420898438e+02, 3.33795654296875e+02, 3.339662170410156e+02, 3.320230102539062e+02, 3.325879211425781e+02, 3.321752319335938e+02, 3.332214050292969e+02, 3.332214050292969e+02, 3.332214050292969e+02] -bui.ets.proHotWat.TSetHotSou.y=[3.331499938964844e+02, 3.331499938964844e+02] -bui.ets.sinDHW.ports[1].m_flow=[0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856732e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856687e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00] -bui.ets.proHotWat.PHea=[0e+00, 4.129379577636719e+02, 8.195110321044922e+01, -1.045940723225537e-20, 1.055141357421875e+03, 8.443702392578125e+02, 1.068448852539062e+03, 7.305020751953117e+02, -6.56160171227764e-14, 2.203056264076643e-31, 7.764153381807549e-39, -1.378984060343699e-31, 1.195392460916171e-30, 6.988472747802734e+01, 1.0522109375e+03, 8.427813720703125e+02, 1.067862060546875e+03, 7.302257080078125e+02, 9.875542732477784e-15, 5.368809985002713e-23, 1.628080564404674e-26, -1.349732688815791e-26, 1.297350899520957e-27, 6.983228302001953e+01, 1.052185180664062e+03, 8.427645874023438e+02, 1.067884765625e+03, 7.30229736328122e+02, -5.976286867876612e-18, -9.239933084568223e-57, -0e+00, 1.489714636073926e-28, -1.769919026277176e-27, 6.990704345703125e+01, 1.05217333984375e+03, 8.427678833007812e+02, 1.067859252929688e+03, 7.3022314453125e+02, 2.783456779070748e-15, -5.801348244584955e-30, 1.377512726038221e-28, 1.404553649125892e-27, -2.10667943263295e-28, 6.990206909179688e+01, 1.0522021484375e+03, 8.42775390625e+02, 1.067867919921875e+03, 7.302171630859375e+02, -9.052747853339001e-25, 4.58834589952985e-27, 1.824952204807849e-26, 1.090201413598939e-28, -2.689432361142094e-26, -3.070385225816739e-29, 2.515516226413468e-27, 3.202113679742693e-26, -3.320123570970746e-29, -5.652850018075843e-30, 8.434567309409735e-30, -6.37995147475981e-27, -6.88498739197429e-23, 1.495298541576621e-25, 1.637528466555734e-33, -0e+00, 0e+00, -8.969465645891489e-32, -6.767601733833782e-23, -2.563734001094135e-26, -3.433303778186785e-30, 1.168516345521908e-28, -3.197203945054185e-27, 1.258694057381805e-26, -1.997121463299024e-28, 1.544177703857422e+02, 1.04935498046875e+03, 8.420792236328125e+02, 1.067587524414062e+03, 7.300949096679688e+02, 5.285656585643061e-16, -5.567277505037919e-28, -2.574625520115633e-27, 1.639782822895562e-26, -6.685751016515604e-27, 6.992348480224609e+01, 1.05214794921875e+03, 8.427738037109375e+02, 1.067861206054688e+03, 7.302312622070312e+02, 6.864390579932635e-15, 1.358825389269232e-26, -6.012184366671378e-27, -4.861100720485837e-27, 2.694379844057632e-28, 6.99110107421875e+01, 1.052172729492188e+03, 8.427657470703125e+02, 1.067844970703125e+03, 7.302236328125e+02, -5.700005234561551e-18, -6.16497385880066e-26, 7.83044365677369e-27] +bui.ets.theMixVal.TMixSet=[3.221499938964844e+02, 3.221499938964844e+02] +bui.ets.proHotWat.senTHotSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.335948791503906e+02, 3.338192749023438e+02, 3.319585571289062e+02, 3.325673217773438e+02, 3.32170654296875e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.338019409179688e+02, 3.339641723632812e+02, 3.320222473144531e+02, 3.325843811035156e+02, 3.321752014160156e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.33798095703125e+02, 3.339659423828125e+02, 3.320230102539062e+02, 3.325867309570312e+02, 3.321752624511719e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.3379833984375e+02, 3.339649353027344e+02, 3.320228881835938e+02, 3.325872802734375e+02, 3.321751403808594e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.337955627441406e+02, 3.339668273925781e+02, 3.320229187011719e+02, 3.325876770019531e+02, 3.321755676269531e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.337685241699219e+02, 3.339941101074219e+02, 3.320491943359375e+02, 3.325955810546875e+02, 3.321776428222656e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.337964782714844e+02, 3.339668579101562e+02, 3.320232849121094e+02, 3.32585693359375e+02, 3.321753845214844e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.337954406738281e+02, 3.339659118652344e+02, 3.320231018066406e+02, 3.32586669921875e+02, 3.321752014160156e+02, 3.332171325683594e+02, 3.332171325683594e+02, 3.332171325683594e+02] +bui.ets.proHotWat.THotSouSet.y=[3.331499938964844e+02, 3.331499938964844e+02] +bui.ets.theMixVal.mMix_flow=[0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856732e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856687e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.469088606536388e-03, 2.460353076457977e-02, 9.841412305831909e-03, 2.334383130073547e-02, 6.574063561856747e-03, 0e+00, 0e+00, 0e+00] +bui.ets.proHotWat.PHea=[0e+00, 4.129269714355469e+02, 8.192984771728516e+01, -5.365437573078457e-20, 1.055158325195312e+03, 8.44390380859375e+02, 1.06846923828125e+03, 7.304987792968742e+02, -2.300471011601468e-13, 4.505205429760598e-27, 1.198292804213589e-37, -1.415643866339754e-26, -1.500925739095571e-26, 7.039228057861328e+01, 1.052218994140625e+03, 8.428126831054688e+02, 1.067864990234375e+03, 7.302318725585938e+02, 3.182500988544064e-14, 2.384794200748787e-23, -3.862796474556669e-27, 1.158524139487941e-28, -9.976126700624884e-24, 7.045915222167969e+01, 1.052197631835938e+03, 8.42769775390625e+02, 1.067852905273438e+03, 7.30229492187497e+02, -7.796422361871927e-12, -1.01269787729024e-21, 2.584243055868699e-34, -1.157220589597708e-24, -1.631972753266484e-27, 7.042610931396484e+01, 1.052183227539062e+03, 8.427885131835938e+02, 1.067858642578125e+03, 7.302198486328125e+02, 3.814773774646341e-10, -3.341639199900461e-25, -8.439971980409073e-28, -2.547588352591353e-27, 9.18568724005095e-28, 7.045292663574219e+01, 1.0521630859375e+03, 8.427731323242188e+02, 1.067886596679688e+03, 7.302149658203125e+02, 2.168092795665097e-16, -1.974916111189681e-25, 1.520468824316749e-27, -3.180373580307925e-29, 7.903144045500409e-28, -2.01731878692231e-27, -1.363012110597378e-27, 2.607237066168047e-30, 6.886648211614207e-29, -7.686916640637015e-29, -6.231882225071637e-28, -8.176071044593424e-27, -1.98987934809943e-24, 2.241551805896603e-26, 1.228803971312305e-28, -2.978409959339673e-35, 0e+00, 0e+00, 0e+00, -0e+00, 1.02291624203047e-31, 2.560523138839101e-28, 5.512080713943645e-29, -1.775713725775249e-26, 6.24768138072212e-30, 1.548983917236328e+02, 1.04935400390625e+03, 8.420645751953125e+02, 1.06756884765625e+03, 7.301210327148438e+02, -1.011145369026584e-15, 5.260176901308194e-26, 2.919461797543971e-24, -4.567014684651806e-26, 1.993760619249571e-27, 7.043165588378906e+01, 1.052162109375e+03, 8.427676391601562e+02, 1.067858276367188e+03, 7.302156372070312e+02, -2.066367301469659e-24, 1.215669995760059e-27, 7.131755658217364e-28, -3.956358151255001e-27, 1.459631201082484e-27, 7.044261932373047e+01, 1.052192016601562e+03, 8.427837524414062e+02, 1.06785546875e+03, 7.302380981445312e+02, 2.642068384740245e-19, 1.129017977923205e-27, 2.550140770889895e-33] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt index b2578a4ce18..a895a3a0216 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt @@ -1,20 +1,15 @@ -last-generated=2023-09-13 -statistics-initialization= -{ - "nonlinear": "1", - "numerical Jacobians": "0" -} +last-generated=2023-10-02 statistics-simulation= { "linear": " ", - "nonlinear": "1", - "number of continuous time states": "10", + "nonlinear": "2", + "number of continuous time states": "2", "numerical Jacobians": "0" } time=[0e+00, 8.64e+04] -TSetHot=[3.161499938964844e+02, 3.161499938964844e+02] -THot=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.14019775390625e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.161499938964844e+02, 3.107437438964844e+02, 3.107437438964844e+02, 3.127442321777344e+02, 3.109439697265625e+02, 3.109439697265625e+02, 3.095417175292969e+02, 3.080151672363281e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.155872497558594e+02, 3.118523254394531e+02, 3.118523254394531e+02, 3.118523254394531e+02, 3.159422302246094e+02, 3.172503662109375e+02, 3.157680969238281e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.161759338378906e+02, 3.122249755859375e+02, 3.122249755859375e+02, 3.122249755859375e+02, 3.122450866699219e+02, 3.153526611328125e+02, 3.153526611328125e+02, 3.153526611328125e+02, 3.111761779785156e+02, 3.111761779785156e+02, 3.111761779785156e+02, 3.099002990722656e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.141211242675781e+02, 3.110359497070312e+02, 3.110359497070312e+02, 3.110359497070312e+02, 3.119671325683594e+02, 3.119671325683594e+02, 3.119671325683594e+02, 3.119671325683594e+02, 3.092549743652344e+02, 3.1422119140625e+02, 3.1422119140625e+02, 3.1422119140625e+02, 3.1196826171875e+02, 3.1196826171875e+02, 3.1196826171875e+02, 3.161902770996094e+02, 3.161902770996094e+02, 3.161902770996094e+02, 3.161902770996094e+02, 3.16188232421875e+02, 3.16188232421875e+02] -gen.TSetHotSou=[3.231499938964844e+02, 3.231499938964844e+02] +theMixVal.TMixSet=[3.161499938964844e+02, 3.161499938964844e+02] +theMixVal.senTemHot.T=[3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02] +gen.THotSouSet=[3.231499938964844e+02, 3.231499938964844e+02] gen.senTemHot.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02] -PEle=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.704695703125e+04, 3.704695703125e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.17057431640625e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.197339199483395e-09, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -loa.port_hot.m_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PEle=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.704695703125e+04, 3.704695703125e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.2648140625e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.130036591552198e-09, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +theMixVal.yMixSet=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt index c2d1446d9f6..5ba3b6882e3 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureHeatPumpWithTank.txt @@ -1,20 +1,15 @@ -last-generated=2023-09-13 -statistics-initialization= -{ - "nonlinear": "1", - "numerical Jacobians": "0" -} +last-generated=2023-10-02 statistics-simulation= { "linear": "0", - "nonlinear": "12, 1, 1", - "number of continuous time states": "19", + "nonlinear": "12, 1", + "number of continuous time states": "10", "numerical Jacobians": "0" } time=[0e+00, 8.64e+04] -TSetHot=[3.161499938964844e+02, 3.161499938964844e+02] -THot=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.1445556640625e+02, 3.16143310546875e+02, 3.16143310546875e+02, 3.161377563476562e+02, 3.161424255371094e+02, 3.161435852050781e+02, 3.109173583984375e+02, 3.109173583984375e+02, 3.133266906738281e+02, 3.11013671875e+02, 3.11013671875e+02, 3.097061462402344e+02, 3.082455749511719e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.159685363769531e+02, 3.12044677734375e+02, 3.12044677734375e+02, 3.12044677734375e+02, 3.160348510742188e+02, 3.175538940429688e+02, 3.154889526367188e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.161001281738281e+02, 3.12392333984375e+02, 3.12392333984375e+02, 3.12392333984375e+02, 3.124154357910156e+02, 3.164227905273438e+02, 3.164227905273438e+02, 3.164227905273438e+02, 3.116412963867188e+02, 3.116412963867188e+02, 3.116412963867188e+02, 3.1035791015625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.148902587890625e+02, 3.113890075683594e+02, 3.113890075683594e+02, 3.113890075683594e+02, 3.127131042480469e+02, 3.127131042480469e+02, 3.127131042480469e+02, 3.127131042480469e+02, 3.098422546386719e+02, 3.130548706054688e+02, 3.130548706054688e+02, 3.130548706054688e+02, 3.113191833496094e+02, 3.113191833496094e+02, 3.113191833496094e+02, 3.161195068359375e+02, 3.161195068359375e+02, 3.161195068359375e+02, 3.161195068359375e+02, 3.161198120117188e+02, 3.161198120117188e+02] -gen.TSetHotSou=[3.231499938964844e+02, 3.231499938964844e+02] -gen.senTemHotSou.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246980285644531e+02, 3.246146545410156e+02, 3.246146545410156e+02, 3.248005676269531e+02, 3.211996154785156e+02, 3.209341125488281e+02, 3.246581726074219e+02, 3.246581726074219e+02, 3.246655883789062e+02, 3.246721496582031e+02, 3.246721496582031e+02, 3.252598571777344e+02, 3.252611389160156e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252633972167969e+02, 3.252671508789062e+02, 3.252671508789062e+02, 3.252671508789062e+02, 3.252676391601562e+02, 3.25468505859375e+02, 3.255260314941406e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256079406738281e+02, 3.256194458007812e+02, 3.256194458007812e+02, 3.256194458007812e+02, 3.256190795898438e+02, 3.256181945800781e+02, 3.256181945800781e+02, 3.256181945800781e+02, 3.256387939453125e+02, 3.256387939453125e+02, 3.256387939453125e+02, 3.256375732421875e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.256385803222656e+02, 3.2563525390625e+02, 3.2563525390625e+02, 3.2563525390625e+02, 3.256336975097656e+02, 3.256336975097656e+02, 3.256336975097656e+02, 3.256336975097656e+02, 3.256320190429688e+02, 3.256338500976562e+02, 3.256338500976562e+02, 3.256338500976562e+02, 3.256575622558594e+02, 3.256575622558594e+02, 3.256575622558594e+02, 3.256576232910156e+02, 3.256576232910156e+02, 3.256576232910156e+02, 3.256576232910156e+02, 3.256588134765625e+02, 3.256588134765625e+02] -PEle=[0e+00, 3.103523681640625e+03, -1.465154525481793e-10, 1.550883178710938e+03, 6.258164125805266e-11, 1.709812067591469e-14, 1.438067920953322e-16, 7.15553622864761e-19, 1.24297266117045e-21, 2.225782482564211e-24, 1.211465919491939e-24, 1.98803684019577e-25, 1.047240777665087e-27, 3.905370889314299e-28, 8.470158081008237e-31, 4.219804666909538e-31, 4.607917871819403e-32, 9.254665143232935e-30, 2.408780593060944e-29, 4.453178851762469e-29, 7.057294030630628e-29, 9.507273124004276e-29, 9.00265179333187e-29, 7.702401719243253e-29, 5.608455452066998e-29, 2.722738921747491e-29, 3.32363673802343e-30, -1.64012438566842e-30, -2.550352543544029e-30, 1.7966552734375e+04, -1.564641194384819e-09, 3.29233125e+04, 3.79801875e+04, 7.712996826171875e+02, -1.302936011677039e-32, -7.534133882265353e-37, -0e+00, 4.58720361328125e+03, -1.321613818383582e-09, -3.810719091128461e-30, 4.452065351006376e-41, -5.003991191188106e-06, 5.362566293798388e-11, -4.578739595589507e-14, -9.461363314786455e-17, -1.595937975429318e-19, -3.096022649216903e-20, -1.497460072718962e-22, -7.388110255549767e-23, -1.147643719600712e-25, 1.434373951049787e-25, 4.011957483855846e-25, 1.933747679217493e-25, -4.264338429038617e-07, -3.085943393182911e-12, 6.778040229641616e-15, 1.953139648437409e+03, 4.494578124999919e+03, 1.570675415039062e+03, 4.90271484375e+03, -5.464413921352218e-10, -3.556326323994239e-27, -5.069022575597532e-32, 9.465850094278863e-34, -0e+00, -0e+00, -0e+00, 0e+00, 8.666137084960573e+02, 4.038910345676715e-18, 4.66766993281477e-21, 0e+00, 0e+00, 0e+00, 0e+00, 3.063947509765625e+03, 1.645690181351078e-11, -9.732230554684089e-17, -1.202516271191407e-19, -2.995820835265069e-22, -2.855609423723119e-25, -0e+00, -0e+00, -0e+00, 2.240308349609375e+03, 7.704126225860364e-09, -1.755631001972122e-15, -5.119266955496753e-18, -0e+00, 2.895234130859375e+03, -1.25267209938329e-08, 1.460518446634584e-12, -2.388231183865067e-31, -7.191169446237453e-40, -4.203895392974451e-45, -9.88722135275566e-08, -2.039525016473298e-30, 9.684194320745377e-39, 3.254936072933685e-41, 0e+00, 0e+00] -loa.port_hot.m_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +theMixVal.TMixSet=[3.161499938964844e+02, 3.161499938964844e+02] +theMixVal.senTemHot.T=[3.031499938964844e+02, 3.236727905273438e+02, 3.246880798339844e+02, 3.247964172363281e+02, 3.248548889160156e+02, 3.248545837402344e+02, 3.248540344238281e+02, 3.248533630371094e+02, 3.248526000976562e+02, 3.24851806640625e+02, 3.248509521484375e+02, 3.248500671386719e+02, 3.248492736816406e+02, 3.248485107421875e+02, 3.248478088378906e+02, 3.248472900390625e+02, 3.248471374511719e+02, 3.248458251953125e+02, 3.248456726074219e+02, 3.248455200195312e+02, 3.248446044921875e+02, 3.248438110351562e+02, 3.248430480957031e+02, 3.2484228515625e+02, 3.248414916992188e+02, 3.248407287597656e+02, 3.248399658203125e+02, 3.248392028808594e+02, 3.248384094238281e+02, 3.245873107910156e+02, 3.251229858398438e+02, 3.247785949707031e+02, 3.211871337890625e+02, 3.245481567382812e+02, 3.246640625e+02, 3.246646423339844e+02, 3.246671142578125e+02, 3.249011840820312e+02, 3.252456665039062e+02, 3.252465209960938e+02, 3.252465209960938e+02, 3.252787170410156e+02, 3.252789306640625e+02, 3.252781066894531e+02, 3.252774047851562e+02, 3.252765502929688e+02, 3.252753601074219e+02, 3.252742614746094e+02, 3.252737121582031e+02, 3.252734985351562e+02, 3.252732543945312e+02, 3.252725524902344e+02, 3.252713317871094e+02, 3.252803649902344e+02, 3.252812805175781e+02, 3.252803344726562e+02, 3.254154663085938e+02, 3.254839477539062e+02, 3.255443725585938e+02, 3.256122741699219e+02, 3.256281127929688e+02, 3.256282348632812e+02, 3.256278076171875e+02, 3.25626953125e+02, 3.256283874511719e+02, 3.256276550292969e+02, 3.256275634765625e+02, 3.256256408691406e+02, 3.256336669921875e+02, 3.256452331542969e+02, 3.256450500488281e+02, 3.256456298828125e+02, 3.256458129882812e+02, 3.256448364257812e+02, 3.256440734863281e+02, 3.256449584960938e+02, 3.256458435058594e+02, 3.256450805664062e+02, 3.256442565917969e+02, 3.256433715820312e+02, 3.256425170898438e+02, 3.2564404296875e+02, 3.256431579589844e+02, 3.256421508789062e+02, 3.256418762207031e+02, 3.256454772949219e+02, 3.256451416015625e+02, 3.256444091796875e+02, 3.25645751953125e+02, 3.256473999023438e+02, 3.256669006347656e+02, 3.256665649414062e+02, 3.256666870117188e+02, 3.256661987304688e+02, 3.2566552734375e+02, 3.256730651855469e+02, 3.256736755371094e+02, 3.256734924316406e+02, 3.256729736328125e+02, 3.2567236328125e+02, 3.256716918945312e+02] +gen.THotSouSet=[3.231499938964844e+02, 3.231499938964844e+02] +gen.senTemHot.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.246973876953125e+02, 3.245881652832031e+02, 3.245881652832031e+02, 3.247797546386719e+02, 3.211875915527344e+02, 3.209213256835938e+02, 3.246578369140625e+02, 3.246578369140625e+02, 3.24665771484375e+02, 3.246604309082031e+02, 3.246604309082031e+02, 3.25246337890625e+02, 3.252465209960938e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252489013671875e+02, 3.252708435058594e+02, 3.252708435058594e+02, 3.252708435058594e+02, 3.252839050292969e+02, 3.254830322265625e+02, 3.255290222167969e+02, 3.256122741699219e+02, 3.256122741699219e+02, 3.256122741699219e+02, 3.256122741699219e+02, 3.256122741699219e+02, 3.256272583007812e+02, 3.256272583007812e+02, 3.256272583007812e+02, 3.256269836425781e+02, 3.256269836425781e+02, 3.256269836425781e+02, 3.256269836425781e+02, 3.256455383300781e+02, 3.256455383300781e+02, 3.256455383300781e+02, 3.256441650390625e+02, 3.256446228027344e+02, 3.256446228027344e+02, 3.256446228027344e+02, 3.256446228027344e+02, 3.256446228027344e+02, 3.256446228027344e+02, 3.25642822265625e+02, 3.25642822265625e+02, 3.25642822265625e+02, 3.256416625976562e+02, 3.256416625976562e+02, 3.256416625976562e+02, 3.256416625976562e+02, 3.256444396972656e+02, 3.256471862792969e+02, 3.256471862792969e+02, 3.256471862792969e+02, 3.256664733886719e+02, 3.256664733886719e+02, 3.256664733886719e+02, 3.256662902832031e+02, 3.256662902832031e+02, 3.256662902832031e+02, 3.256662902832031e+02, 3.256675415039062e+02, 3.256675415039062e+02] +PEle=[0e+00, 3.103510009765625e+03, -2.474682014863561e-09, 1.552031982421875e+03, 1.944002250842125e-11, 6.525877674210716e-15, 4.398963868349865e-18, 5.822399013897955e-18, 1.166643210953663e-17, 7.535764272868342e-18, 3.048205225010985e-17, 1.280367124174266e-18, 4.876936454115463e-17, 7.778041503818183e-17, 5.493829887856266e-17, 1.441374314890109e-18, 2.941320164506453e-21, -2.069310344290054e-25, 3.47378591483109e-23, -5.862849588571114e-23, -1.516877599911051e-23, -4.444972355935876e-25, 2.119356173157099e-25, 4.651089384518482e-25, 5.798669995246776e-26, 2.773663292445859e-26, 1.419189364700414e-25, 2.303862881094121e-26, 1.79945101263654e-25, 1.799028515625e+04, 4.903311037196545e-07, 3.300085546875e+04, 3.797031640625e+04, 7.786015014648438e+02, 2.24342949822921e-24, 4.540659103734817e-27, 1.446257088426935e-14, 4.91940087890625e+03, 2.388467201797084e-09, -1.048304924969661e-19, 4.003404801832859e-24, -6.344259784185624e-09, -8.486267938367931e-11, -3.732601033812344e-12, 7.824397393559925e-15, -4.323622081019163e-15, -7.394011158475742e-18, -4.151236406382457e-19, -3.576587313999392e-19, 1.310295590678498e-21, -4.412296195018552e-22, 9.065118178408998e-25, -5.504339088975896e-25, -1.394590753989178e-07, 7.333907786621907e-12, 3.619727876268521e-14, 1.865833007812413e+03, 3.951241943359298e+03, 1.760168579101562e+03, 5.50609423828125e+03, 2.844893487452538e-10, -1.324992887082694e-15, -1.041487889142246e-16, -1.106379401695934e-19, -1.35629961648066e-33, 1.694392741749711e-35, -1.517650938284789e-38, -4.203895392974451e-45, 4.925972290038855e+02, 3.461111619529183e-09, -4.751995780381609e-13, 1.992293638410931e-26, -1.216045574198428e-37, 5.061490053141239e-42, -0e+00, 2.47825390625e+03, 4.413731460317649e-07, -1.580408894030771e-11, -9.32403026315809e-13, -4.702950810904494e-13, -4.892904454539306e-15, -6.294080521911383e-03, -6.341734914983022e-10, -1.09823597698594e-12, 3.0890517578125e+03, -1.563396301307307e-09, 3.042076356443713e-12, -3.598889679920069e-15, 2.57208663970232e-03, 3.070844482421875e+03, -1.19578036361645e-08, 8.093549268284317e-12, 1.515148180148535e-24, 1.933614212272346e-27, 7.909292576847865e-28, 4.711140366708833e-10, 1.873377321326419e-11, -8.758369463707227e-14, -4.846384134526678e-15, -5.924123254978888e-23, 6.194876293692222e-30] +theMixVal.yMixSet=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos index 40daec9a345..3ad8d6a19b8 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos @@ -7,8 +7,8 @@ createPlot(id=1, position={540, 9, 784, 614}, y={"bui.PHea", "bui.PPum"}, range= createPlot(id=1, position={540, 9, 784, 614}, y={"bui.QHea_flow", "bui.QCoo_flow"}, range={0.0, 10.0, -200000.0, 400000.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.loaSHW"}, range={0.0, 900000.0, -2000.0, 4000.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); -createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.THotWatSupSet", "bui.ets.tmv.THot"}, range={0.0, 900000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", ""}); -createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.proHotWat.senTHotSup.T", "bui.ets.proHotWat.TSetHotSou.y"}, range={0.0, 900000.0, 250.0, 350.0}, grid=true, subPlot=103, colors={{238,46,47}, {28,108,200}}, timeUnit="s", displayUnits={"K", ""}); -createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.sinDHW.ports[1].m_flow"}, range={0.0, 900000.0, -0.02, 0.039999999999999994}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.THotWatSupSet", "bui.ets.theMixVal.TMixSet"}, range={0.0, 900000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", ""}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.proHotWat.senTHotSup.T", "bui.ets.proHotWat.THotSouSet.y"}, range={0.0, 900000.0, 250.0, 350.0}, grid=true, subPlot=103, colors={{238,46,47}, {28,108,200}}, timeUnit="s", displayUnits={"K", ""}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.theMixVal.mMix_flow"}, range={0.0, 900000.0, -0.02, 0.039999999999999994}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.proHotWat.PHea"}, range={0.0, 900000.0, -1000.0, 1000.0}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos index 33d74141292..1c8204a1679 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos @@ -1,6 +1,6 @@ -simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithElectricHeat"); -createPlot(filename="HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mat", id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); -createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); -createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat", method="CVode", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithElectricHeat"); +createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.TMixSet", "theMixVal.senTemHot.T"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={677, 15, 592, 649}, y={"gen.THotSouSet", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.yMixSet"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos index c78deacaa4d..b4a12d01f11 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos @@ -1,6 +1,7 @@ -simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank", method="Dassl", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureHeatPumpWithTank"); -createPlot(filename="HeaterAndFixtureHeatPumpWithTank.mat", id=1, position={677, 15, 592, 649}, y={"TSetHot", "THot"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", "K"}); -createPlot(id=1, position={677, 15, 592, 649}, y={"gen.TSetHotSou", "gen.senTemHotSou.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); -createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={677, 15, 592, 649}, y={"loa.port_hot.m_flow"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank", method="CVode", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureHeatPumpWithTank"); +createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.TMixSet", "theMixVal.senTemHot.T"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={677, 15, 592, 649}, y={"gen.THotSouSet", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.yMixSet"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos index b0b8bde6124..c7784bdf347 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos @@ -10,9 +10,9 @@ compareVars := "bui.QCoo_flow", "bui.ets.loaSHW", "bui.ets.THotWatSupSet", - "bui.ets.tmv.THot", + "bui.ets.theMixVal.TMixSet", "bui.ets.proHotWat.senTHotSup.T", - "bui.ets.proHotWat.TSetHotSou.y", - "bui.ets.sinDHW.ports[1].m_flow", + "bui.ets.proHotWat.THotSouSet.y", + "bui.ets.theMixVal.mMix_flow", "bui.ets.proHotWat.PHea" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos index 609c9c1f768..81790d833b5 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos @@ -1,9 +1,9 @@ compareVars := { - "TSetHot", - "THot", - "gen.TSetHotSou", + "theMixVal.TMixSet", + "theMixVal.senTemHot.T", + "gen.THotSouSet", "gen.senTemHot.T", "PEle", - "loa.port_hot.m_flow" + "theMixVal.yMixSet" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos index 9d8b36fefd3..81790d833b5 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank.mos @@ -1,9 +1,9 @@ compareVars := { - "TSetHot", - "THot", - "gen.TSetHotSou", - "gen.senTemHotSou.T", + "theMixVal.TMixSet", + "theMixVal.senTemHot.T", + "gen.THotSouSet", + "gen.senTemHot.T", "PEle", - "loa.port_hot.m_flow" + "theMixVal.yMixSet" }; From ce2bb617e16a2cb17c1ae62cbc5f1841a9ba9de4 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 2 Oct 2023 13:16:25 -0700 Subject: [PATCH 114/183] Renamed connector --- .../BaseClasses/PartialHeatPumpHeatExchanger.mo | 6 +++++- .../Combined/HeatPumpHeatExchanger.mo | 17 +++++++++-------- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 16 ++++++++-------- .../Loads/Combined/BuildingTimeSeriesWithETS.mo | 2 +- ...xamples_BuildingTimeSeriesWithETSDHWTank.txt | 2 +- .../ConvertBuildings_from_10_to_11.0.0.mos | 4 ++++ .../BuildingTimeSeriesWithETSDHWTank.mos | 2 +- ...xamples.BuildingTimeSeriesWithETSDHWTank.mos | 2 +- 8 files changed, 30 insertions(+), 21 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index eb34b5789c3..af275eba533 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -147,7 +147,7 @@ model PartialHeatPumpHeatExchanger extent={{-40,-40},{40,40}}, rotation=0, origin={-340,-140}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput loaSHW( + Buildings.Controls.OBC.CDL.Interfaces.RealInput QReqHotWat_flow( final unit="W") if have_hotWat "Service hot water load" annotation ( Placement(transformation( @@ -657,6 +657,10 @@ Energy, Volume 199, 15 May 2020, 117418. revisions="
    • +October 2, 2023, by Michael Wetter:
      +Renamed input loaSHW to QReqHotWat_flow. +
    • +
    • May 17, 2023, by David Blum:
      Assigned dp_nominal to pum1HexChi.
      Corrected calculation of heat pump evaporator mass flow control.
      diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index e407f2d7927..6052151e263 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -3,7 +3,8 @@ model HeatPumpHeatExchanger "Model of a substation with heat pump for heating, heat pump for domestic hot water, and compressor-less cooling" extends Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger( - volMix_a(nPorts=4), volMix_b(nPorts=4)); + volMix_a(nPorts=4), + volMix_b(nPorts=4)); Subsystems.HeatPump proHotWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, @@ -83,7 +84,7 @@ equation 37},{14,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); connect(gai.y,div1. u2) annotation (Line(points={{-98,-10},{-80,-10},{-80,-30}, {-120,-30},{-120,-56},{-102,-56}}, color={0,0,127})); - connect(loaSHW,div1. u1) annotation (Line(points={{-320,-120},{-290,-120},{ + connect(QReqHotWat_flow,div1. u1) annotation (Line(points={{-320,-120},{-290,-120},{ -290,-44},{-102,-44}}, color={0,0,127})); connect(delT.y,gai. u) @@ -97,17 +98,17 @@ equation annotation ( Documentation(info="

      -This model uses the base energy transfer station defined in +This model uses the base energy transfer station defined in Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger.

      Domestic Hot Water

      -Domestic hot water is produced using a dedicated water-to-water heat pump +Domestic hot water is produced using a dedicated water-to-water heat pump on-demand with no storage.

      -Heating is enabled based on the input signal uSHW +Heating is enabled based on the input signal uSHW which is held for 15 minutes, meaning that, when enabled, the mode remains active for at least 15 minutes and, when disabled, the mode cannot be enabled again for at least 15 minutes. @@ -127,12 +128,12 @@ Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump

    • The condensor water mass flow rate is computed based on the domestic hot water -heating load (input loaSHW) where the temperature of water is boosted from the +heating load (input QReqHotWat_flow) where the temperature of water is boosted from the domestic cold water temperature (input TColWat) to the desired domestic hot water distribution temperature (parameter THotWatSup_nominal), according to the following equation:

      -loaSHW = ṁ cp (THotWatSup_nominal - TColWat) +QReqHotWat_flow = ṁ cp (THotWatSup_nominal - TColWat)

    • @@ -151,7 +152,7 @@ Extended from partial base class. This is for issue 3063. -
    • +
    • May 17, 2023, by David Blum:
      Assigned dp_nominal to pum1HexChi.
      diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index dc30a6ebeaa..2a0b57309b6 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -85,24 +85,24 @@ equation -156,-80},{-320,-80}}, color={0,0,127})); connect(THotWatSupSet, theMixVal.TMixSet) annotation (Line(points={{-320,-40}, {-32,-40},{-32,32},{-8,32},{-8,63.2},{-19,63.2}}, color={0,0,127})); - connect(loaSHW, gai.u) annotation (Line(points={{-320,-120},{-288,-120},{-288, + connect(QReqHotWat_flow, gai.u) annotation (Line(points={{-320,-120},{-288,-120},{-288, 60},{-82,60}}, color={0,0,127})); connect(gai.y, theMixVal.yMixSet) annotation (Line(points={{-58,60},{-48,60}, {-48,78},{-8,78},{-8,69.8},{-19,69.8}}, color={0,0,127})); annotation ( Documentation(info="

      -This model uses the base energy transfer station defined in +This model uses the base energy transfer station defined in Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger.

      Domestic Hot Water

      -Domestic hot water is produced using a dedicated water-to-water heat pump +Domestic hot water is produced using a dedicated water-to-water heat pump with storage tank.

      -Heating is enabled based on the input signal uSHW +Heating is enabled based on the input signal uSHW which is held for 15 minutes, meaning that, when enabled, the mode remains active for at least 15 minutes and, when disabled, the mode cannot be enabled again for at least 15 minutes. @@ -122,20 +122,20 @@ Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPumpDH

    • The heat pump condensor water mass flow rate is controlled for the charging of the storage tank -as described in +as described in Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank.
    • The mass flow rate of water leaving the storage tank is computed based on the domestic hot water -heating load (input loaSHW) combined with the operation of a thermostatic +heating load (input QReqHotWat_flow) combined with the operation of a thermostatic mixing valve used to mix down the temperature of hot water leaving the tank to the temperature distributed to fixtures (parameter THotWatSup_nominal) using domestic cold water at the cold water temperature (input TColWat). The desired water flow rate leaving the thermostatic mixing valve is determined according to the following equation:

      -loaSHW = ṁ cp (THotWatSup_nominal - TColWat) +QReqHotWat_flow = ṁ cp (THotWatSup_nominal - TColWat)

    • @@ -154,7 +154,7 @@ Extended from partial base class. This is for issue 3063. -
    • +
    • May 17, 2023, by David Blum:
      Assigned dp_nominal to pum1HexChi.
      diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo index 60e44e1372d..fff47dab83c 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETS.mo @@ -70,7 +70,7 @@ model BuildingTimeSeriesWithETS QCoo_flow_nominal) "Normalized cooling load" annotation (Placement(transformation(extent={{-200,-150},{-180,-130}}))); equation - connect(bui.QReqHotWat_flow, ets.loaSHW) annotation (Line(points={{28,4},{28, + connect(bui.QReqHotWat_flow, ets.QReqHotWat_flow) annotation (Line(points={{28,4},{28, -10},{-64,-10},{-64,-74},{-34,-74}}, color={0,0,127})); connect(THotWatSupSet, ets.THotWatSupSet) annotation (Line(points={{-320,40}, {-136,40},{-136,-66},{-34,-66}}, color={0,0,127})); diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt index 0b3d258ccdb..8763618e6ff 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_Combined_Examples_BuildingTimeSeriesWithETSDHWTank.txt @@ -20,7 +20,7 @@ bui.PHea=[0e+00, 4.129269714355469e+02, 8.192984771728516e+01, 9.10314453125e+03 bui.PPum=[5.250715836882591e-02, 2.398956451416016e+02, 5.265986328125e+02, 2.5298583984375e+03, 2.947833740234375e+03, 2.206622314453125e+03, 2.480401123046875e+03, 2.107822753906249e+03, 9.477518463134766e+01, 9.27625732421875e+01, 2.979886474609375e+02, 1.51693017578125e+03, 1.683224487304688e+03, 2.98496875e+03, 3.499408935546874e+03, 2.205470947265625e+03, 2.463007080078125e+03, 2.16153271484375e+03, 9.476506042480469e+01, 9.275562286376953e+01, 1.096261962890625e+03, 1.482679809570312e+03, 1.61401318359375e+03, 2.906157958984375e+03, 3.082759033203125e+03, 1.623158325195312e+03, 1.48962109375e+03, 1.602397705078123e+03, 9.477777862548827e+01, 9.287525939941406e+01, 9.206014251708984e+01, 3.061961975097656e+02, 1.47125390625e+03, 2.934305908203125e+03, 3.534788330078125e+03, 2.153093017578125e+03, 2.62479833984375e+03, 2.184079833984375e+03, 9.477332305908203e+01, 1.6419287109375e+02, 1.428935546875e+03, 1.573349487304688e+03, 1.726895263671875e+03, 3.0732099609375e+03, 4.05636669921875e+03, 2.971639892578125e+03, 3.603106201171875e+03, 2.732995849609375e+03, 1.47383154296875e+03, 1.694314208984375e+03, 1.869390380859375e+03, 1.984915283203125e+03, 2.068254638671875e+03, 2.3361416015625e+03, 2.319030029296875e+03, 2.321929931640625e+03, 2.369701904296875e+03, 2.40714501953125e+03, 2.146822998046877e+03, 2.233544189453125e+03, 2.296720458984375e+03, 2.341439697265625e+03, 2.374544189453125e+03, 2.71166552734375e+03, 2.660502197265625e+03, 2.58228857421875e+03, 2.573349609375e+03, 2.610462158203125e+03, 2.300459228515625e+03, 2.4041142578125e+03, 2.4627802734375e+03, 2.546924072265625e+03, 2.58826806640625e+03, 4.320375e+03, 5.92902978515625e+03, 3.948944091796875e+03, 4.4410439453125e+03, 3.24253076171875e+03, 1.93337548828125e+03, 2.158819091796875e+03, 2.310767822265625e+03, 2.445441162109375e+03, 2.528824951171875e+03, 4.2818046875e+03, 5.803943359375e+03, 3.536703125e+03, 4.274451171875e+03, 3.19223974609375e+03, 1.903408081054688e+03, 2.117461669921875e+03, 2.25700048828125e+03, 2.395788330078125e+03, 2.492287109375e+03, 4.18769580078125e+03, 5.43679345703125e+03, 3.14006591796875e+03, 3.774295654296875e+03, 2.99011328125e+03, 1.684476684570312e+03, 1.904487670898438e+03, 2.0660546875e+03] bui.QHea_flow=[0e+00, 1.493409118652344e+02, 1.96499462890625e+03, 6.7062e+04, 8.794946875e+04, 4.81281640625e+04, 6.336166796875e+04, 4.203754296874994e+04, 7.818440347909927e-02, 2.162826806306839e-02, 4.948764038085938e+02, 8.9321689453125e+03, 1.8312390625e+04, 9.14274921875e+04, 1.199913671874999e+05, 4.775331640625e+04, 6.2614796875e+04, 4.526994140625e+04, 7.798042893409729e-02, 2.16028057038784e-02, 2.267438720703125e+03, 7.1049501953125e+03, 1.4277197265625e+04, 8.6850328125e+04, 9.54722890625e+04, 1.43484423828125e+04, 7.3159599609375e+03, 1.339677148437491e+04, 7.135672867298089e-02, 2.106104418635374e-02, 1.201198808848858e-02, 5.277313232421875e+02, 6.4657158203125e+03, 8.86046328125e+04, 1.219892265625e+05, 4.45152578125e+04, 7.11158515625e+04, 4.651371484375e+04, 7.835377007722855e-02, 0e+00, 3.32916064453125e+03, 1.1968400390625e+04, 2.08016328125e+04, 9.665625e+04, 1.487390625e+05, 8.83808828125e+04, 1.25934e+05, 7.496425e+04, 6.57106640625e+03, 1.8963818359375e+04, 2.8790822265625e+04, 3.5349765625e+04, 4.025085546875e+04, 5.587071875e+04, 5.486714062499999e+04, 5.507441015625001e+04, 5.759196484375002e+04, 5.949939453125e+04, 4.493506640625009e+04, 5.044890625e+04, 5.3770390625e+04, 5.613808203125e+04, 5.779956640625e+04, 7.51835234375e+04, 7.24934453125e+04, 6.86282578125e+04, 6.823384375e+04, 7.0093515625e+04, 5.37290078125e+04, 5.940627734375e+04, 6.24497734375e+04, 6.69123046875e+04, 6.899815625e+04, 1.62266546875e+05, 2.249033125e+05, 1.419346875e+05, 1.66257734375e+05, 1.041997265625e+05, 3.2251439453125e+04, 4.59709921875e+04, 5.458297265625e+04, 6.159392578125e+04, 6.59460234375e+04, 1.6056546875e+05, 2.203854375e+05, 1.2065740625e+05, 1.5891796875e+05, 1.012013984375e+05, 3.05666796875e+04, 4.335852734375e+04, 5.17644765625e+04, 5.897602734375e+04, 6.40561875e+04, 1.56225765625e+05, 2.06757390625e+05, 9.79604921875e+04, 1.3483134375e+05, 8.92684609375e+04, 1.8283357421875e+04, 3.078685546875e+04, 4.016099609375e+04] bui.QCoo_flow=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -bui.ets.loaSHW=[0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070291e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070227e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00] +bui.ets.QReqHotWat_flow=[0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070291e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070227e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 9.202666625976562e+02, 3.5e+03, 1.4e+03, 3.320800048828125e+03, 9.352000122070312e+02, 0e+00, 0e+00, 0e+00] bui.ets.THotWatSupSet=[3.221499938964844e+02, 3.221499938964844e+02] bui.ets.theMixVal.TMixSet=[3.221499938964844e+02, 3.221499938964844e+02] bui.ets.proHotWat.senTHotSup.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.335948791503906e+02, 3.338192749023438e+02, 3.319585571289062e+02, 3.325673217773438e+02, 3.32170654296875e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.332152404785156e+02, 3.338019409179688e+02, 3.339641723632812e+02, 3.320222473144531e+02, 3.325843811035156e+02, 3.321752014160156e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.332200317382812e+02, 3.33798095703125e+02, 3.339659423828125e+02, 3.320230102539062e+02, 3.325867309570312e+02, 3.321752624511719e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.332187194824219e+02, 3.3379833984375e+02, 3.339649353027344e+02, 3.320228881835938e+02, 3.325872802734375e+02, 3.321751403808594e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.332189331054688e+02, 3.337955627441406e+02, 3.339668273925781e+02, 3.320229187011719e+02, 3.325876770019531e+02, 3.321755676269531e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.333215942382812e+02, 3.337685241699219e+02, 3.339941101074219e+02, 3.320491943359375e+02, 3.325955810546875e+02, 3.321776428222656e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.332142028808594e+02, 3.337964782714844e+02, 3.339668579101562e+02, 3.320232849121094e+02, 3.32585693359375e+02, 3.321753845214844e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.332146911621094e+02, 3.337954406738281e+02, 3.339659118652344e+02, 3.320231018066406e+02, 3.32586669921875e+02, 3.321752014160156e+02, 3.332171325683594e+02, 3.332171325683594e+02, 3.332171325683594e+02] diff --git a/Buildings/Resources/Scripts/Conversion/ConvertBuildings_from_10_to_11.0.0.mos b/Buildings/Resources/Scripts/Conversion/ConvertBuildings_from_10_to_11.0.0.mos index ea938858c1a..005999c477a 100644 --- a/Buildings/Resources/Scripts/Conversion/ConvertBuildings_from_10_to_11.0.0.mos +++ b/Buildings/Resources/Scripts/Conversion/ConvertBuildings_from_10_to_11.0.0.mos @@ -5,6 +5,10 @@ clear convertClear(); +// Conversion of hot water load +convertElement("Buildings.Experimental.DHC.EnergyTransferStations.Combined.HeatPumpHeatExchanger", + "loaSHW", "QReqHotWat_flow"); + // Conversion for https://github.com/lbl-srg/modelica-buildings/issues/3517 convertClass("Buildings.Controls.OBC.CDL.Discrete.Examples", "Buildings.Controls.OBC.CDL.Discrete.Validation"); diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos index 3ad8d6a19b8..37c4dfbceaf 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mos @@ -6,7 +6,7 @@ createPlot(id=1, position={540, 9, 784, 614}, y={"bui.ets.proHotWat.heaPumTan.he createPlot(id=1, position={540, 9, 784, 614}, y={"bui.PHea", "bui.PPum"}, range={0.0, 10.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); createPlot(id=1, position={540, 9, 784, 614}, y={"bui.QHea_flow", "bui.QCoo_flow"}, range={0.0, 10.0, -200000.0, 400000.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}, timeUnit="d", displayUnits={"W", "W"}); -createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.loaSHW"}, range={0.0, 900000.0, -2000.0, 4000.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); +createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.QReqHotWat_flow"}, range={0.0, 900000.0, -2000.0, 4000.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.THotWatSupSet", "bui.ets.theMixVal.TMixSet"}, range={0.0, 900000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"K", ""}); createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.proHotWat.senTHotSup.T", "bui.ets.proHotWat.THotSouSet.y"}, range={0.0, 900000.0, 250.0, 350.0}, grid=true, subPlot=103, colors={{238,46,47}, {28,108,200}}, timeUnit="s", displayUnits={"K", ""}); createPlot(id=2, position={590, -8, 592, 663}, y={"bui.ets.theMixVal.mMix_flow"}, range={0.0, 900000.0, -0.02, 0.039999999999999994}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"kg/s"}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos index c7784bdf347..bb3e98796c4 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.Combined.Examples.BuildingTimeSeriesWithETSDHWTank.mos @@ -8,7 +8,7 @@ compareVars := "bui.PPum", "bui.QHea_flow", "bui.QCoo_flow", - "bui.ets.loaSHW", + "bui.ets.QReqHotWat_flow", "bui.ets.THotWatSupSet", "bui.ets.theMixVal.TMixSet", "bui.ets.proHotWat.senTHotSup.T", From 6c173450b73e9314447a4653314e5698516791db Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 2 Oct 2023 13:25:33 -0700 Subject: [PATCH 115/183] Added fixme --- .../Combined/Subsystems/HeatPumpDHWTank.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index fadad07a36c..50a78af266a 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -14,7 +14,7 @@ model HeatPumpDHWTank Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) "Propylene glycol water, 40% mass fraction"))); parameter Boolean have_varFloEva = true - "Set to true for a variable evaporator flow" + "Set to true for a variable evaporator flow. Fixme: false does not make sense here." annotation(Evaluate=true); parameter Real COP_nominal(final unit="1") "Heat pump COP" From 77a05dca7f840ba44e92cd116b67c34384d292ef Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Thu, 5 Oct 2023 15:57:49 -0700 Subject: [PATCH 116/183] Worked on refactoring domestic hot water --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 4 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 40 +-- .../BuildingTimeSeriesWithETSWithDHWTank.mo | 5 +- .../BuildingTimeSeriesWithETSDHWTank.mo | 2 +- .../HeatExchangerPumpController.mo | 136 ++++++++ .../BaseClasses/PartialFourPortDHW.mo | 86 +++-- .../BaseClasses/TankChargingController.mo | 78 +++++ .../Loads/HotWater/BaseClasses/package.order | 2 + ...enericDomesticHotWaterWithHeatExchanger.mo | 69 ++++ .../Data/GenericHeatPumpWaterHeater.mo | 42 --- .../DHC/Loads/HotWater/Data/package.order | 2 +- .../DirectHeatExchangerWithElectricHeat.mo | 42 +-- ...tureDirectHeatExchangerWithElectricHeat.mo | 20 +- .../HeaterAndFixtureHeatPumpWithTank.mo | 24 +- .../StorageTankWithExternalHeatExchanger.mo | 106 ++++++ .../DHC/Loads/HotWater/Examples/package.order | 1 + .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 171 ++++++---- .../StorageTankWithExternalHeatExchanger.mo | 299 +++++++++++++++++ .../Loads/HotWater/ThermostaticMixingValve.mo | 2 +- .../DHC/Loads/HotWater/package.order | 1 + .../DHC/Loads/HotWater/HeatPumpWithTank.png | Bin 37744 -> 0 bytes .../StorageTankWithExternalHeatExchanger.png | Bin 0 -> 8884 bytes .../StorageTankWithExternalHeatExchanger.svg | 312 ++++++++++++++++++ 23 files changed, 1230 insertions(+), 214 deletions(-) create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo delete mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo delete mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.png create mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.png create mode 100644 Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 2a0b57309b6..ee79fc7d0cd 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -28,8 +28,8 @@ model HeatPumpHeatExchangerDHWTank datWatHea=datWatHea) if have_hotWat "Subsystem for hot water production" annotation (Placement(transformation(extent={{32,24},{52,44}}))); - parameter Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea - "Performance data" + parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea "Performance data" annotation (Placement(transformation(extent={{36,48},{48,60}}))); Loads.HotWater.ThermostaticMixingValve theMixVal( redeclare package Medium = MediumBui, diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index 50a78af266a..aca527c117a 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -88,14 +88,14 @@ model HeatPumpDHWTank // COMPONENTS Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( redeclare final package Medium = Medium2, - final m_flow_nominal=heaPumTan.mDis_flow_nominal, + final m_flow_nominal=heaPumTan.mHea_flow_nominal, final allowFlowReversal=allowFlowReversal2, dp_nominal=datWatHea.dp2_nominal) "Heat pump evaporator water pump" annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k=heaPumTan.mDis_flow_nominal) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k=heaPumTan.mHea_flow_nominal) if not have_varFloEva "Nominal flow rate" annotation (Placement(transformation(extent={{0,80},{-20,100}}))); Fluid.Sensors.TemperatureTwoPort senTHotSup( @@ -123,23 +123,19 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum( y(each start=false), - t=1e-2*heaPumTan.mDis_flow_nominal, - h=0.5e-2*heaPumTan.mDis_flow_nominal) + t=1e-2*heaPumTan.mHea_flow_nominal, + h=0.5e-2*heaPumTan.mHea_flow_nominal) "Pump return status" annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); Buildings.Controls.OBC.CDL.Reals.Multiply floEva "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); - Loads.HotWater.HeatPumpWithTank heaPumTan( - mHotSou_flow_nominal=mHotSou_flow_nominal, - datWatHea=datWatHea, - COP_nominal=COP_nominal, - TCon_nominal=TCon_nominal, - TEva_nominal=TEva_nominal) + Loads.HotWater.StorageTankWithExternalHeatExchanger heaPumTan( + mDom_flow_nominal=mHotSou_flow_nominal) "Heat pump with storage tank for domestic hot water" annotation (Placement(transformation(extent={{0,-20},{20,0}}))); - parameter Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea - "Performance data" + parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea "Performance data" annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); Modelica.Blocks.Math.Add add annotation (Placement(transformation(extent={{140,-18},{160,2}}))); @@ -171,16 +167,8 @@ equation annotation (Line(points={{2,120},{60,120},{60,-48}}, color={0,0,127})); connect(port_a1,senTColSou. port_a) annotation (Line(points={{-200,-60},{-40,-60}, {-40,-30}}, color={0,127,255})); - connect(heaPumTan.port_a1,senTColSou. port_b) - annotation (Line(points={{0,-4},{-40,-4},{-40,-10}}, color={0,127,255})); - connect(heaPumTan.port_b1,senTHotSup. port_a) - annotation (Line(points={{20,-4},{40,-4},{40,10}}, color={0,127,255})); - connect(pumEva.port_b, heaPumTan.port_a2) annotation (Line(points={{50,-60},{40, - -60},{40,-16},{20,-16}}, color={0,127,255})); - connect(heaPumTan.port_b2, port_b2) annotation (Line(points={{0,-16},{-20,-16}, - {-20,40},{160,40},{160,60},{200,60}}, color={0,127,255})); - connect(enaHeaPum.y,heaPumTan.THotSouSet) annotation (Line(points={{-118,20}, - {-10,20},{-10,-10},{-1,-10}}, color={0,0,127})); + connect(enaHeaPum.y, heaPumTan.TDomSet) annotation (Line(points={{-118,20},{-10, + 20},{-10,-10},{-1,-10}}, color={0,0,127})); connect(heaPumTan.PHea, PHea) annotation (Line(points={{21,-10},{80,-10},{80,20}, {180,20},{180,40},{220,40}}, color={0,0,127})); connect(staPum.y, enaHeaPum.u2) annotation (Line(points={{-102,-100},{-160,-100}, @@ -191,11 +179,9 @@ equation color={0,0,127})); connect(add.u2, pumEva.P) annotation (Line(points={{138,-14},{120,-14},{120,-20}, {49,-20},{49,-51}}, color={0,0,127})); - connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-14},{120,-14},{120, - -2},{138,-2}}, color={0,0,127})); - connect(heaPumTan.QCon_flow, QCon_flow) annotation (Line(points={{21,-12},{82, - -12},{82,-100},{220,-100}}, - color={0,0,127})); + connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-10},{120,-10},{ + 120,-2},{138,-2}}, + color={0,0,127})); connect(THotSouSet.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166, 10},{-166,28},{-142,28}}, color={0,0,127})); annotation ( diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo index 3857167c8da..7989b1a1551 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -10,8 +10,9 @@ model BuildingTimeSeriesWithETSWithDHWTank QHeaWat_flow_nominal=QHea_flow_nominal, QHotWat_flow_nominal=QHot_flow_nominal, datWatHea=datWatHea)); - parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea "Performance data" - annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); + parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea + "Performance data" + annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); annotation (Documentation(info="

      This model is the same as diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index d85204dbc95..10550fb5056 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -50,7 +50,7 @@ model BuildingTimeSeriesWithETSDHWTank Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) "Heating water supply temperature set point - Minimum value" annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); - parameter HotWater.Data.GenericHeatPumpWaterHeater datWatHea( + parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea( mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* 4, QCon_flow_max=datWatHea.QCon_flow_nominal, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo new file mode 100644 index 00000000000..44fb44937b3 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo @@ -0,0 +1,136 @@ +within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; +block HeatExchangerPumpController + "Controller for pump of storage tank with external heat exchanger" + parameter Modelica.Units.SI.MassFlowRate mDom_flow_nominal + "Domestic hot water design flow rate (used for scaling)"; + parameter Modelica.Units.SI.PressureDifference dpPum_nominal( + displayUnit="Pa", + min=0) + "Heating water flow rate at full speed through heat exchanger"; + + parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; + parameter Real Ti=60 "Integrator time constant of circulation pump controller"; + parameter Real yMin(min=0) = 0.3 "Minimum controller output when pump is on"; + + Controls.OBC.CDL.Interfaces.RealInput mDom_flow( + final unit="kg/s") + "Domestic hot water mass flow rate" annotation (Placement(transformation( + extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100, + 80}}))); + Modelica.Blocks.Interfaces.RealInput TDomSet( + final unit="K", + displayUnit="degC") + "Temperature setpoint for domestic hot water source from heater" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-120,-10},{-100,10}}))); + Modelica.Blocks.Interfaces.RealInput TDom( + final unit="K", + displayUnit="degC") + "Measured hot water temperature" annotation (Placement(transformation( + extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-120,-70}, + {-100,-50}}))); + Controls.OBC.CDL.Interfaces.RealOutput dpPumHex( + final unit="Pa", + displayUnit="Pa") + "Set point for pump head on heating water side" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + Controls.OBC.CDL.Reals.Hysteresis hysMasFlo( + uLow=mDom_flow_nominal/1E6, + uHigh=mDom_flow_nominal/1E5) + "Hysteresis used to switch secondary pump on and off" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + + Controls.OBC.CDL.Reals.PIDWithReset conPI( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + k=k, + Ti=Ti, + y_reset=0) + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + + Controls.OBC.CDL.Reals.Switch swi "Switch for pump control" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + +protected + Controls.OBC.CDL.Reals.MultiplyByParameter pumHea(final k=dpPum_nominal) + "Gain for hex pump head" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + + Controls.OBC.CDL.Reals.Sources.Constant con(final k=0) "Outputs zero" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); +equation + connect(conPI.y, pumHea.u) + annotation (Line(points={{-18,0},{-2,0}}, color={0,0,127})); + connect(hysMasFlo.y,conPI. trigger) annotation (Line(points={{-58,60},{-50,60}, + {-50,-26},{-36,-26},{-36,-12}}, + color={255,0,255})); + connect(hysMasFlo.u, mDom_flow) annotation (Line(points={{-82,60},{-102,60},{-102, + 60},{-120,60}}, color={0,0,127})); + connect(pumHea.y, swi.u1) + annotation (Line(points={{22,0},{40,0},{40,8},{58,8}}, color={0,0,127})); + connect(con.y, swi.u3) annotation (Line(points={{42,-30},{50,-30},{50,-8},{58, + -8}}, color={0,0,127})); + connect(hysMasFlo.y, swi.u2) annotation (Line(points={{-58,60},{50,60},{50,0}, + {58,0}}, color={255,0,255})); + connect(swi.y, dpPumHex) + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(TDomSet, conPI.u_s) + annotation (Line(points={{-120,0},{-42,0}}, color={0,0,127})); + connect(TDom, conPI.u_m) annotation (Line(points={{-120,-60},{-30,-60},{-30,-12}}, + color={0,0,127})); + annotation ( + defaultComponentName="conPum", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-94,78},{-44,42}}, + textColor={0,0,127}, + textString="mDom_flow"), + Text( + extent={{-94,20},{-44,-16}}, + textColor={0,0,127}, + textString="TDomSet"), + Text( + extent={{-94,-42},{-44,-78}}, + textColor={0,0,127}, + textString="TDom"), + Text( + extent={{40,20},{90,-16}}, + textColor={0,0,127}, + textString="mHexSet_flow")}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

      +Controller for heat exchanger mass flow rate. +

      +

      +This controller outputs the set point for the head of the heat exchanger pump +on the heating side. The set point is calculated using a PI controller that tracks +the set point for the leaving domestic hot water temperature, +with a minimum controller output equal to yMin. +By default, yMin=0.3, which corresponds to a mass flow rate +of 10% of the design flow rate. +

      +

      +If the measured domestic hot water flow rate is close to zero, then the +set point for the pump is also set to zero in order to stop the pump if there is no +domestic hot water flow rate. +

      +", revisions=" +
        +
      • +October 4, 2023, by Michael Wetter:
        +First implementation. +
      • +
      +")); +end HeatExchangerPumpController; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index 9acf757b77e..33dad672d92 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -1,39 +1,73 @@ within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; partial model PartialFourPortDHW "A partial model for domestic water heating" - extends Buildings.Fluid.Interfaces.PartialFourPort( - redeclare final package Medium1=Medium, - redeclare final package Medium2=Medium); - replaceable package Medium = Buildings.Media.Water "Water media model"; - parameter Modelica.Units.SI.MassFlowRate mHotSou_flow_nominal "Nominal mass flow rate of hot water supply"; - parameter Modelica.Units.SI.MassFlowRate mDis_flow_nominal "Nominal mass flow rate of district heating water"; - Modelica.Blocks.Interfaces.RealOutput PHea(unit="W") - "Electric power required for heating equipment" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Blocks.Interfaces.RealInput THotSouSet( - final unit="K", - displayUnit="degC") - "Temperature setpoint for domestic hot water source from heater" + replaceable package MediumDom = + Modelica.Media.Interfaces.PartialMedium "Medium 1 in the component" + annotation (choices( + choice(redeclare package Medium = Buildings.Media.Air "Moist air"), + choice(redeclare package Medium = Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater ( + property_T=293.15, + X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + replaceable package MediumHea = + Modelica.Media.Interfaces.PartialMedium "Medium 2 in the component" + annotation (choices( + choice(redeclare package Medium = Buildings.Media.Air "Moist air"), + choice(redeclare package Medium = Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater ( + property_T=293.15, + X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + + parameter Boolean allowFlowReversalDom=true + "= false to simplify equations, assuming, but not enforcing, no flow reversal for domestic water" + annotation(Dialog(tab="Assumptions"), Evaluate=true); + parameter Boolean allowFlowReversalHea=true + "= false to simplify equations, assuming, but not enforcing, no flow reversal for heating water" + annotation(Dialog(tab="Assumptions"), Evaluate=true); + + Modelica.Fluid.Interfaces.FluidPort_a port_aDom( + redeclare final package Medium = MediumDom, + m_flow(min=if allowFlowReversalDom then -Modelica.Constants.inf else 0), + h_outflow(start=MediumDom.h_default, nominal=MediumDom.h_default)) + "Fluid connector for cold water (or recirculation water)" + annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bDom( + redeclare final package Medium = MediumDom, + m_flow(max=if allowFlowReversalDom then +Modelica.Constants.inf else 0), + h_outflow(start=MediumDom.h_default, nominal=MediumDom.h_default)) + "Fluid connector for heated domestic hot water" + annotation (Placement(transformation(extent={{110,50},{90,70}}))); + + Modelica.Fluid.Interfaces.FluidPort_a port_aHea( + redeclare final package Medium = MediumHea, + m_flow(min=if allowFlowReversalHea then -Modelica.Constants.inf else 0), + h_outflow(start=MediumHea.h_default, nominal=MediumHea.h_default)) + "Fluid connector for heating water (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{90,-70},{110,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bHea( + redeclare final package Medium = MediumHea, + m_flow(max=if allowFlowReversalHea then +Modelica.Constants.inf else 0), + h_outflow(start=MediumHea.h_default, nominal=MediumHea.h_default)) + "Fluid connector b for heating water (positive design flow direction is from port_a to port_b)" + annotation (Placement(transformation(extent={{-90,-70},{-110,-50}}))); + + Modelica.Blocks.Interfaces.RealInput TDomSet(final unit="K", displayUnit="degC") + "Temperature setpoint for domestic water source from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Modelica.Blocks.Sources.Constant zero(k=0) if have_PEle == false "Zero output" - annotation (Placement(transformation(extent={{60,80},{80,100}}))); -protected - parameter Boolean have_PEle "Flag that specifies whether electric power is required for water heating"; -equation - connect(zero.y,PHea) - annotation (Line(points={{81,90},{82,90},{82,0},{110,0}}, - color={0,0,127})); - annotation (preferredView="info",Documentation(info=" + annotation (Documentation(info="

      This partial model can be used for different domestic hot water generation methods.

      ", revisions="
      • -September 29, 2022 by Dre Helmns:
        -Created partial model. +October 4, 2023, by Michael Wetter:
        +First implementation.
      -"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false))); +")); end PartialFourPortDHW; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo new file mode 100644 index 00000000000..0da98782322 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo @@ -0,0 +1,78 @@ +within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; +block TankChargingController + "Controller to enable or disable storage tank charging" + + Controls.OBC.CDL.Interfaces.RealInput TTanTop + "Measured temperature at top of tank" annotation (Placement(transformation( + extent={{-140,-60},{-100,-20}}), iconTransformation(extent={{-140,-80}, + {-100,-40}}))); + Modelica.Blocks.Interfaces.RealInput TTanTopSet(final unit="K", displayUnit="degC") + "Temperature setpoint for top section of hot water tank" annotation ( + Placement(transformation(extent={{-140,20},{-100,60}}), + iconTransformation(extent={{-120,50},{-100,70}}))); + Controls.OBC.CDL.Interfaces.BooleanOutput charge + "Outputs true if tank should be charged" annotation (Placement( + transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20}, + {140,20}}))); +protected + Controls.OBC.CDL.Reals.Hysteresis cha( + uLow=0, + uHigh=5) + "Outputs true if tank should be charged" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Controls.OBC.CDL.Reals.Subtract sub + annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + +equation + connect(sub.u2, TTanTop) annotation (Line(points={{-42,-6},{-60,-6},{-60,-40}, + {-120,-40}}, color={0,0,127})); + connect(sub.u1, TTanTopSet) annotation (Line(points={{-42,6},{-68,6},{-68,40}, + {-120,40}}, color={0,0,127})); + connect(sub.y, cha.u) + annotation (Line(points={{-18,0},{18,0}}, color={0,0,127})); + connect(cha.y, charge) + annotation (Line(points={{42,0},{120,0}}, color={255,0,255})); + annotation ( + defaultComponentName="tanCha", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-94,78},{-44,42}}, + textColor={0,0,127}, + textString="TTanTopSet"), + Text( + extent={{-94,-42},{-44,-78}}, + textColor={0,0,127}, + textString="TTanTop"), + Text( + extent={{36,20},{86,-16}}, + textColor={0,0,127}, + textString="charge")}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
        +
      • +October 4, 2023, by Michael Wetter:
        +First implementation. +
      • +
      +", info=" +

      +Controller that outputs charge=true if the domestic hot +water tank needs to be charged, and false otherwise. +

      +

      +Whether the tank needs to be charged depends on the difference between the +measured tank temperature and its set point. +The charge signal has a hysteresis of 5 Kelvin. +

      +")); +end TankChargingController; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order index ce75a1a8901..3f458a0cf62 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order @@ -1 +1,3 @@ PartialFourPortDHW +HeatExchangerPumpController +TankChargingController diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo new file mode 100644 index 00000000000..7094e9ab328 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo @@ -0,0 +1,69 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Data; +record GenericDomesticHotWaterWithHeatExchanger + "Equipment specifications for a heating water tank with external heat exchanger to heat domestic hot water" + extends Modelica.Icons.Record; + parameter Modelica.Units.SI.Volume VTan "Tank volume" + annotation (Dialog(group="Tank")); + parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)" + annotation (Dialog(group="Tank", tab="Advanced")); + parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation" + annotation (Dialog(group="Tank", tab="Advanced")); + parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 + "Specific heat conductivity of insulation" + annotation (Dialog(group="Tank", tab="Advanced")); + parameter Modelica.Units.SI.TemperatureDifference dTTan_nominal(min=2) = 5 + "Maximum temperature difference of tank above the temperature required to heat the domestic hot water" + annotation (Dialog(group="Tank", tab="Advanced")); + + parameter Modelica.Units.SI.PressureDifference dpHexHea_nominal(displayUnit="Pa")=5000 + "Pressure drop across the heat exchanger at nominal conditions on heating water side" + annotation (Dialog(group="Heat exchanger", tab="Advanced")); + + parameter Modelica.Units.SI.PressureDifference dpHexDom_nominal(displayUnit="Pa")= + dpHexHea_nominal*(mDom_flow_nominal/mHex_flow_nominal)^2 + "Pressure drop across the heat exchanger at nominal conditions on domestic hot water side" + annotation (Dialog(group="Heat exchanger", tab="Advanced")); + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = QHex_flow_nominal/dTHexHea/4200 + "Mass flow rate of heat exchanger on heating side" + annotation (Dialog(group="Heat exchanger", tab="Advanced")); + parameter Modelica.Units.SI.MassFlowRate mDom_flow_nominal + "Design mass flow rate of domestic hot water" + annotation (Dialog(group="Heat exchanger")); + + parameter Modelica.Units.SI.HeatFlowRate QHex_flow_nominal(min=0) = mDom_flow_nominal*4200*(TMix_nominal-TCol_nominal) + "Nominal heating flow rate at heat exchanger" + annotation (Dialog(group="Heat exchanger")); +// parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) +// "Nominal heating flow rate"; +// parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; +// parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; + parameter Modelica.Units.SI.Temperature TMix_nominal = 318.15 + "Temperature of fluid leaving tank at nominal conditions" + annotation (Dialog(group="Domestic hot water")); + parameter Modelica.Units.SI.Temperature TCol_nominal = 288.15 + "Temperature of cold water" + annotation (Dialog(group="Domestic hot water", tab="Advanced")); + parameter Integer nSeg(min=4) = 5 "Number of volume segments used to discretize tank" + annotation (Dialog(group="Tank", tab="Advanced")); + parameter Modelica.Units.SI.TemperatureDifference dTHexHea(min=2) = 5 + "Temperature difference between across heat exchanger on heating water side (inlet-outlet)" + annotation (Dialog(group="Heat exchanger", tab="Advanced")); + + annotation (preferredView="info",Documentation(info=" +

      +This record corresponds to a hot water tank that is filled with heating water, and that has +an external heat exchanger to heat domestic hot water. +

      +", revisions=" +
        +
      • +September 11, 2023 by David Blum:
        +Updated for release. +
      • +
      • +November 22, 2022 by Dre Helmns:
        +Initial implementation. +
      • +
      +")); +end GenericDomesticHotWaterWithHeatExchanger; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo deleted file mode 100644 index 9401f422c54..00000000000 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericHeatPumpWaterHeater.mo +++ /dev/null @@ -1,42 +0,0 @@ -within Buildings.Experimental.DHC.Loads.HotWater.Data; -record GenericHeatPumpWaterHeater - "Equipment specifications for a generic heat pump water heater with storage tank" - extends Modelica.Icons.Record; - parameter Modelica.Units.SI.Volume VTan = 0.3 "Tank volume"; - parameter Modelica.Units.SI.Length hTan = 2 "Height of tank (without insulation)"; - parameter Modelica.Units.SI.Length dIns = 0.3 "Thickness of insulation"; - parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation"; - parameter Modelica.Units.SI.PressureDifference dpHex_nominal = 2500 "Pressure drop across the heat exchanger at nominal conditions"; - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = 0.278 "Mass flow rate of heat exchanger"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_max(min=0) = 1500 "Maximum heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QCon_flow_nominal(min=0) = 1230.9 "Nominal heating flow rate"; - parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) "Nominal heating flow rate"; - parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature THotSou_nominal = 333.15 "Temperature of fluid leaving tank at nominal conditions"; - parameter Modelica.Units.SI.Temperature TTan_nominal = 313.15 "Temperature of fluid inside the tank at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTTanHex = 3 "Temperature difference between heat pump outlet and tank leaving temperature at nominal conditions"; - parameter Modelica.Units.SI.Temperature THex_nominal = THotSou_nominal+dTTanHex "Temperature of fluid inside the heat exchanger at nominal heat transfer conditions"; - parameter Modelica.Units.SI.TemperatureDifference dTEva_nominal = -5 "Temperature difference evaporator inlet-outlet"; - parameter Modelica.Units.SI.TemperatureDifference dTCon_nominal = 10 "Temperature difference condenser outlet-inlet"; - parameter Modelica.Units.SI.PressureDifference dp1_nominal = 5000 "Pressure drop across condenser"; - parameter Modelica.Units.SI.PressureDifference dp2_nominal = 5000 "Pressure drop across evaporator"; - parameter Integer nSeg(min=4) = 5 "Number of volume segments"; - - annotation (preferredView="info",Documentation(info=" -

      -This record corresponds to a generic heat pump water heater. -

      -", revisions=" -
        -
      • -September 11, 2023 by David Blum:
        -Updated for release. -
      • -
      • -November 22, 2022 by Dre Helmns:
        -Initial implementation. -
      • -
      -")); -end GenericHeatPumpWaterHeater; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order index b1fd769118b..326c9166dfd 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/package.order @@ -1 +1 @@ -GenericHeatPumpWaterHeater +GenericDomesticHotWaterWithHeatExchanger diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index 6c2f8b0db47..3b95614d2a0 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -11,26 +11,26 @@ model DirectHeatExchangerWithElectricHeat Buildings.Fluid.HeatExchangers.Heater_T heaEle( redeclare package Medium = Medium, - m_flow_nominal=mHotSou_flow_nominal, + m_flow_nominal=mDom_flow_nominal, dp_nominal=dpEle_nominal, - QMax_flow=QMax_flow) - if have_eleHea == true "Supplemental electric resistance domestic hot water heater" + QMax_flow=QMax_flow) if have_eleHea == true + "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = - Medium, m_flow_nominal=mHotSou_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium + = Medium, m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water supply" annotation (Placement(transformation(extent={{58,50},{78,70}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, - m1_flow_nominal=mHotSou_flow_nominal, - m2_flow_nominal=mDis_flow_nominal, + m1_flow_nominal=mDom_flow_nominal, + m2_flow_nominal=mHea_flow_nominal, dp1_nominal=dpHotSou_nominal, dp2_nominal=dpDis_nominal, eps=eps) "Domestic hot water heater heat exchanger" annotation (Placement(transformation(extent={{-80,-64},{-60,-44}}))); Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = - Medium, m_flow_nominal=mHotSou_flow_nominal) + Medium, m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water leaving heat exchanger" annotation (Placement(transformation(extent={{-38,-50},{-18,-30}}))); parameter Modelica.Units.SI.PressureDifference dpHotSou_nominal=0 @@ -45,8 +45,9 @@ model DirectHeatExchangerWithElectricHeat protected Fluid.FixedResistances.LosslessPipe pip( redeclare final package Medium = Medium, - final m_flow_nominal=mHotSou_flow_nominal, - final show_T=false) if have_eleHea == false "Pipe without electric resistance" + final m_flow_nominal=mDom_flow_nominal, + final show_T=false) if have_eleHea == false + "Pipe without electric resistance" annotation (Placement(transformation(extent={{10,10},{30,-10}}))); equation @@ -63,19 +64,18 @@ equation color={0,127,255})); connect(pip.port_b, senTemHot.port_a) annotation (Line(points={{30,0},{40,0},{ 40,60},{58,60}},color={0,127,255})); - connect(senTemHot.port_b, port_b1) annotation (Line(points={{78,60},{100,60}}, - color={0,127,255})); - connect(port_a1, hex.port_a1) - annotation (Line(points={{-100,60},{-86,60},{-86,-48},{-80,-48}}, - color={0,127,255})); + connect(senTemHot.port_b, port_bDomWat) + annotation (Line(points={{78,60},{100,60}}, color={0,127,255})); + connect(port_aDomWat, hex.port_a1) annotation (Line(points={{-100,60},{-86,60}, + {-86,-48},{-80,-48}}, color={0,127,255})); connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-32},{82,-32},{82,0}, {110,0}}, color={0,0,127})); - connect(THotSouSet, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, - -32},{8,-32}}, color={0,0,127})); - connect(hex.port_b2, port_b2) annotation (Line(points={{-80,-60},{-100,-60}}, - color={0,127,255})); - connect(port_a2, hex.port_a2) annotation (Line(points={{100,-60},{-60,-60}}, - color={0,127,255})); + connect(TDomSet, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, + -32},{8,-32}}, color={0,0,127})); + connect(hex.port_b2, port_bHeaWat) + annotation (Line(points={{-80,-60},{-100,-60}}, color={0,127,255})); + connect(port_aHeaWat, hex.port_a2) + annotation (Line(points={{100,-60},{-60,-60}}, color={0,127,255})); connect(senTemHexOut.T, THexOut) annotation (Line(points={{-28,-29},{-28,-20}, {110,-20}}, color={0,0,127})); annotation (preferredView="info",Documentation(info=" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index 1fcda6cf3f8..d06d8ddf851 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -7,23 +7,23 @@ model HeaterAndFixtureDirectHeatExchangerWithElectricHeat sinDis(nPorts=1)); DirectHeatExchangerWithElectricHeat gen( redeclare package Medium = Medium, - mHotSou_flow_nominal=mHotSou_flow_nominal, - mDis_flow_nominal=mDis_flow_nominal) + mDom_flow_nominal=mHotSou_flow_nominal, + mHea_flow_nominal=mDis_flow_nominal) "Hot water generated by heat exchanger and auxiliary heat" annotation (Placement(transformation(extent={{-52,-10},{-32,10}}))); equation - connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-52,6},{-56,6}, - {-56,-30},{10,-30},{10,-40}}, color={0,127,255})); - connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-32,-6},{-20, - -6},{-20,-20},{-30,-20},{-30,-40}}, color={0,127,255})); - connect(gen.port_b2, sinDis.ports[1]) + connect(gen.port_aDomWat, souCol.ports[2]) annotation (Line(points={{-52,6},{ + -56,6},{-56,-30},{10,-30},{10,-40}}, color={0,127,255})); + connect(gen.port_aHeaWat, souDis.ports[1]) annotation (Line(points={{-32,-6}, + {-20,-6},{-20,-20},{-30,-20},{-30,-40}}, color={0,127,255})); + connect(gen.port_bHeaWat, sinDis.ports[1]) annotation (Line(points={{-52,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(conTHotSouSet.y,gen.THotSouSet) + connect(conTHotSouSet.y, gen.TDomSet) annotation (Line(points={{-69,0},{-53,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-31,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); - connect(theMixVal.port_hot, gen.port_b1) annotation (Line(points={{0,-6},{-14, - -6},{-14,6},{-32,6}}, color={0,127,255})); + connect(theMixVal.port_hot, gen.port_bDomWat) annotation (Line(points={{0,-6}, + {-14,-6},{-14,6},{-32,6}}, color={0,127,255})); annotation (experiment( StopTime=86400, Tolerance=1e-06), diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo index e590e11e5c1..0d1ed88bd34 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo @@ -8,14 +8,15 @@ model HeaterAndFixtureHeatPumpWithTank HeatPumpWithTank gen( redeclare package Medium = Medium, - mHotSou_flow_nominal=mHotSou_flow_nominal, - mDis_flow_nominal=mDis_flow_nominal, + mDom_flow_nominal=mHotSou_flow_nominal, + mHea_flow_nominal=mDis_flow_nominal, datWatHea=datWatHea, COP_nominal=2.3, TCon_nominal=datWatHea.THex_nominal, TEva_nominal=TDis + 5) "Heat pump water heater with tank" annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); - Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater datWatHea( + Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea( mHex_flow_nominal=1.5, QCon_flow_max=60000, QCon_flow_nominal=50000, @@ -26,19 +27,18 @@ model HeaterAndFixtureHeatPumpWithTank annotation (Placement(transformation(extent={{60,40},{80,60}}))); equation - connect(gen.port_a1, souCol.ports[2]) annotation (Line(points={{-50,6},{-56,6}, - {-56,-30},{10,-30},{10,-40}}, color={0,127,255})); - connect(gen.port_a2, souDis.ports[1]) annotation (Line(points={{-30,-6},{-24, - -6},{-24,-20},{-30,-20},{-30,-40}}, - color={0,127,255})); - connect(gen.port_b2, sinDis.ports[1]) + connect(gen.port_aDomWat, souCol.ports[2]) annotation (Line(points={{-50,6},{ + -56,6},{-56,-30},{10,-30},{10,-40}}, color={0,127,255})); + connect(gen.port_aHeaWat, souDis.ports[1]) annotation (Line(points={{-30,-6}, + {-24,-6},{-24,-20},{-30,-20},{-30,-40}}, color={0,127,255})); + connect(gen.port_bHeaWat, sinDis.ports[1]) annotation (Line(points={{-50,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(conTHotSouSet.y,gen.THotSouSet) + connect(conTHotSouSet.y, gen.TDomSet) annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, 80}}, color={0,0,127})); - connect(theMixVal.port_hot, gen.port_b1) annotation (Line(points={{0,-6},{-20, - -6},{-20,6},{-30,6}}, color={0,127,255})); + connect(theMixVal.port_hot, gen.port_bDomWat) annotation (Line(points={{0,-6}, + {-20,-6},{-20,6},{-30,6}}, color={0,127,255})); annotation (experiment( StopTime=86400, Tolerance=1e-06), diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo new file mode 100644 index 00000000000..f302f0de56d --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -0,0 +1,106 @@ +within Buildings.Experimental.DHC.Loads.HotWater.Examples; +model StorageTankWithExternalHeatExchanger + "Example model for storage tank with external heat exchanger" + extends Modelica.Icons.Example; + package Medium = Buildings.Media.Water "Medium model"; + + + Modelica.Blocks.Sources.CombiTimeTable sch( + tableOnFile=true, + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) + "Domestic hot water fixture draw fraction schedule" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + + Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea( + VTan=0.3, mDom_flow_nominal=0.333) + "Data for heat pump water heater with tank" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + Fluid.Sources.Boundary_pT sinDis( + nPorts=1, + redeclare package Medium = Medium, + T(displayUnit="degC")) "Sink for heating water" + annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-4,-50}))); + Fluid.Sources.Boundary_pT souCol( + nPorts=2, + redeclare package Medium = Medium, + T(displayUnit="degC") = 283.15) + "Source of domestic cold water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={-32,-50}))); + Fluid.Sources.MassFlowSource_T souHea( + use_m_flow_in=true, + nPorts=1, + redeclare package Medium = Medium, + T(displayUnit="degC") = datWatHea.TMix_nominal + datWatHea.dTTan_nominal) + "Source for heating water" + annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={68,24}))); + Modelica.Blocks.Sources.Constant conTSetHot(k( + final unit="K", + displayUnit="degC") = 308.15) + "Temperature setpoint for hot water supply to fixture" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Experimental.DHC.Loads.HotWater.StorageTankWithExternalHeatExchanger + domHotWatTan(redeclare package MediumDom = Medium, redeclare package + MediumHea = Medium, + dat=datWatHea) "Storage tank with external heat exchanger" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, + mMix_flow_nominal=datWatHea.mDom_flow_nominal) + annotation (Placement(transformation(extent={{40,60},{60,80}}))); + Controls.OBC.CDL.Conversions.BooleanToReal booToRea( + realTrue=0.2*datWatHea.QHex_flow_nominal*4200*(55 - 50)) + annotation (Placement(transformation(extent={{40,-20},{60,0}}))); +equation + connect(theMixVal.yMixSet, sch.y[1]) annotation (Line(points={{39,78},{-50,78}, + {-50,70},{-59,70}}, color={0,0,127})); + connect(conTSetHot.y, domHotWatTan.TDomSet) annotation (Line(points={{-59,30}, + {-1,30}}, color={0,0,127})); + connect(conTSetHot.y, theMixVal.TMixSet) annotation (Line(points={{-59,30},{ + -10,30},{-10,72},{39,72}}, + color={0,0,127})); + connect(domHotWatTan.port_bDom, theMixVal.port_hot) annotation (Line(points={{ + 20,36},{32,36},{32,66},{40,66}}, color={0,127,255})); + connect(souCol.ports[1], domHotWatTan.port_aDom) + annotation (Line(points={{-31,-40},{-31,36},{0,36}}, color={0,127,255})); + connect(souCol.ports[2], theMixVal.port_col) + annotation (Line(points={{-33,-40},{-33,62},{40,62}}, color={0,127,255})); + connect(booToRea.u, domHotWatTan.charge) annotation (Line(points={{38,-10},{32, + -10},{32,21},{22,21}}, color={255,0,255})); + connect(booToRea.y, souHea.m_flow_in) annotation (Line(points={{62,-10},{88,-10}, + {88,16},{80,16}}, color={0,0,127})); + connect(sinDis.ports[1], domHotWatTan.port_bHea) + annotation (Line(points={{-4,-40},{-4,24},{0,24}}, color={0,127,255})); + connect(souHea.ports[1], domHotWatTan.port_aHea) + annotation (Line(points={{58,24},{20,24}}, color={0,127,255})); + annotation (Diagram(graphics={ + Text( + extent={{-140,160},{160,120}}, + textString="%name", + textColor={0,0,255})}), + Documentation(info=" +

      +fixme: add +

      +", revisions=" +
        +
      • +October 5, 2023, by Michael Wetter:
        +First implementation. +
      • +
      +"), + experiment(StopTime=86400, __Dymola_Algorithm="Radau")); +end StorageTankWithExternalHeatExchanger; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order index 0d94166c8e6..c11db6e484d 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order @@ -1,3 +1,4 @@ HeaterAndFixtureDirectHeatExchangerWithElectricHeat HeaterAndFixtureHeatPumpWithTank BaseClasses +StorageTankWithExternalHeatExchanger diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index b8aa1bae15c..d8169609d34 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -3,15 +3,15 @@ model HeatPumpWithTank "A model for generating hot water using a heat pump water heater and local storage tank" extends Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( - final have_PEle=true, mDis_flow_nominal=heaPum.QEva_flow_nominal/ - cp2_default/heaPum.dTEva_nominal); + final have_PEle=true, + mHea_flow_nominal=heaPum.QEva_flow_nominal/cp2_default/heaPum.dTEva_nominal); constant Modelica.Units.SI.SpecificHeatCapacity cp2_default= Medium.specificHeatCapacityCp(Medium.setState_pTX(p=Medium.p_default, T=Medium.T_default)) "Specific heat capacity of the fluid"; parameter - Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater + Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea "Performance data" - annotation (Placement(transformation(extent={{-90,-88},{-70,-68}}))); + annotation (Placement(transformation(extent={{-90,-96},{-70,-76}}))); parameter Real COP_nominal(final unit="1") "Heat pump COP at nominal conditions"; parameter Modelica.Units.SI.Temperature TCon_nominal "Condenser outlet temperature used to compute COP_nominal"; parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; @@ -20,8 +20,8 @@ model HeatPumpWithTank Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, - m1_flow_nominal=datWatHea.mHex_flow_nominal, - m2_flow_nominal=mDis_flow_nominal, + m1_flow_nominal=datWatHea.mCon_flow_nominal, + m2_flow_nominal=mHea_flow_nominal, dTEva_nominal=datWatHea.dTEva_nominal, dTCon_nominal=datWatHea.dTCon_nominal, use_eta_Carnot_nominal=false, @@ -34,41 +34,31 @@ model HeatPumpWithTank dp1_nominal=datWatHea.dp1_nominal, dp2_nominal=datWatHea.dp2_nominal) "Domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-60},{10,-40}}))); - Fluid.Movers.FlowControlled_m_flow pumHex( + annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + Fluid.Movers.Preconfigured.FlowControlled_m_flow + pumHex( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - inputType=Buildings.Fluid.Types.InputType.Continuous, redeclare package Medium = Medium, m_flow_nominal=datWatHea.mHex_flow_nominal, - riseTime=10, - massFlowRates={0,0.5,1}*datWatHea.mHex_flow_nominal) + riseTime=10) "Pump with m_flow input" - annotation (Placement(transformation(extent={{60,6},{40,26}}))); - Fluid.Storage.StratifiedEnhancedInternalHex - tanSte( + annotation (Placement(transformation(extent={{-70,-30},{-50,-10}}))); + Fluid.Storage.StratifiedEnhanced tanSte( T_start=datWatHea.TTan_nominal, - energyDynamicsHex=Modelica.Fluid.Types.Dynamics.SteadyState, redeclare package Medium = Medium, - redeclare package MediumHex = Medium, hTan=datWatHea.hTan, dIns=datWatHea.dIns, VTan=datWatHea.VTan, nSeg=datWatHea.nSeg, - hHex_a=datWatHea.hHex_a, - hHex_b=datWatHea.hHex_b, - Q_flow_nominal=datWatHea.QTan_flow_nominal, - TTan_nominal=datWatHea.TTan_nominal, - THex_nominal=datWatHea.THex_nominal, - mHex_flow_nominal=datWatHea.mHex_flow_nominal, show_T=true, - m_flow_nominal=mHotSou_flow_nominal) + m_flow_nominal=mDom_flow_nominal) "Tank with steady-state heat exchanger balance" - annotation (Placement(transformation(extent={{-40,0},{-60,20}}))); + annotation (Placement(transformation(extent={{-20,0},{-40,20}}))); Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) - annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + annotation (Placement(transformation(extent={{16,16},{-4,36}}))); Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemTan "Temperature of the hot water tank" - annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + annotation (Placement(transformation(extent={{-42,54},{-22,74}}))); Controls.OBC.CDL.Reals.MultiplyByParameter dTTanHex2(k=datWatHea.mHex_flow_nominal) "Temperature setpoint for domestic hot water supply from heater" @@ -86,57 +76,100 @@ model HeatPumpWithTank annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); Controls.OBC.CDL.Reals.AddParameter TConSet(p=datWatHea.dTTanHex) "Set point temperature for condenser" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = Medium, m_flow_nominal=mHotSou_flow_nominal) + annotation (Placement(transformation(extent={{-48,-80},{-28,-60}}))); + Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = Medium, + m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water supply" annotation (Placement(transformation(extent={{20,38},{40,58}}))); + Fluid.HydronicConfigurations.PassiveNetworks.SingleMixing con( + redeclare package Medium = Medium1, + use_siz=true, + m2_flow_nominal=datWatHea.mCon_flow_nominal, + dp1_nominal=datWatHea.dp1_nominal, + dp2_nominal=6000, + typCha=Buildings.Fluid.HydronicConfigurations.Types.ValveCharacteristic.EqualPercentage, + typPum=Buildings.Fluid.HydronicConfigurations.Types.Pump.NoVariableInput, + typPumMod=Buildings.Fluid.HydronicConfigurations.Types.PumpModel.Head, + typCtl=Buildings.Fluid.HydronicConfigurations.Types.Control.Heating) + annotation (Placement(transformation(extent={{-10,-20},{10,-40}}))); + + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + m1_flow_nominal=mDom_flow_nominal, + dp1_nominal=6000, + dp2_nominal=6000) + annotation (Placement(transformation(extent={{-70,32},{-50,52}}))); + Fluid.FixedResistances.Junction junTop( + redeclare package Medium = Medium, + m_flow_nominal=mCon_flow_nominal*{1,1,1}, + dp_nominal=zeros(3)) "Flow junction at top of tank" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + Fluid.FixedResistances.Junction junBot( + redeclare package Medium = Medium, + m_flow_nominal=mCon_flow_nominal*{1,1,1}, + dp_nominal=zeros(3)) "Flow junction at bottom of tank" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={-30,-20}))); + Controls.OBC.CDL.Reals.Add PPumTot "Total pump electricity" + annotation (Placement(transformation(extent={{52,-12},{72,8}}))); equation - connect(port_b2, heaPum.port_b2) annotation (Line(points={{-100,-60},{-56,-60}, - {-56,-56},{-10,-56}}, color={0,127,255})); - connect(heaPum.P,PHea) annotation (Line(points={{11,-50},{82,-50},{82,0},{ + connect(port_bHeaWat, heaPum.port_b2) annotation (Line(points={{-100,-60},{-56, + -60},{-56,-86},{-10,-86}}, color={0,127,255})); + connect(heaPum.P,PHea) annotation (Line(points={{11,-80},{82,-80},{82,0},{ 110,0}}, color={0,0,127})); - connect(pumHex.port_b, tanSte.portHex_a) annotation (Line(points={{40,16},{ - -20,16},{-20,6},{-30,6},{-30,6.2},{-40,6.2}}, - color={0,127,255})); - connect(tanSte.portHex_b, heaPum.port_a1) annotation (Line(points={{-40,2},{ - -20,2},{-20,-44},{-10,-44}}, - color={0,127,255})); - connect(tanSte.port_b, port_a1) annotation (Line(points={{-50,0},{-50,-8},{ - -80,-8},{-80,60},{-100,60}}, - color={0,127,255})); connect(dTTanHex2.y, pumHex.m_flow_in) - annotation (Line(points={{42,80},{50,80},{50,28}}, color={0,0,127})); - connect(heaPum.port_a2, port_a2) annotation (Line(points={{10,-56},{56,-56},{ - 56,-60},{100,-60}}, - color={0,127,255})); + annotation (Line(points={{42,80},{42,-8},{-60,-8}},color={0,0,127})); + connect(heaPum.port_a2, port_aHeaWat) annotation (Line(points={{10,-86},{56,-86}, + {56,-60},{100,-60}}, color={0,127,255})); connect(conPI.y, dTTanHex2.u) annotation (Line(points={{12,80},{18,80}}, color={0,0,127})); - connect(THotSouSet, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88, - 80},{-12,80}}, color={0,0,127})); - connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-19,30},{0,30},{0, + connect(TDomSet, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,80}, + {-12,80}}, color={0,0,127})); + connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-21,64},{0,64},{0, 68}}, color={0,0,127})); - connect(pumHex.P, PPum) annotation (Line(points={{39,25},{30,25},{30,-40},{ - 110,-40}}, - color={0,0,127})); - connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,-41},{11, - -42},{80,-42},{80,-20},{110,-20}}, + connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,-71},{12, + -71},{12,-70},{80,-70},{80,-20},{110,-20}}, color={0,0,127})); - connect(senTemTan.port, tanSte.heaPorVol[4]) - annotation (Line(points={{-40,30},{-44,30},{-44,10},{-50,10}}, - color={191,0,0})); - connect(TConSet.y, heaPum.TSet) annotation (Line(points={{-38,-40},{-28,-40}, - {-28,-41},{-12,-41}}, color={0,0,127})); - connect(TConSet.u,THotSouSet) annotation (Line(points={{-62,-40},{-88,-40},{ - -88,0},{-110,0}}, color={0,0,127})); - connect(heaPum.port_b1, pumHex.port_a) annotation (Line(points={{10,-44},{70, - -44},{70,16},{60,16}}, color={0,127,255})); - connect(pumHex.port_a, bou.ports[1]) annotation (Line(points={{60,16},{70,16}, - {70,-20},{60,-20}}, color={0,127,255})); - connect(tanSte.port_a, senTemHot.port_a) - annotation (Line(points={{-50,20},{-50,48},{20,48}}, color={0,127,255})); - connect(senTemHot.port_b, port_b1) annotation (Line(points={{40,48},{90,48},{ - 90,60},{100,60}}, color={0,127,255})); + connect(TConSet.y, heaPum.TSet) annotation (Line(points={{-26,-70},{-28,-70}, + {-28,-71},{-12,-71}}, color={0,0,127})); + connect(TConSet.u, TDomSet) annotation (Line(points={{-50,-70},{-88,-70},{-88, + 0},{-110,0}}, color={0,0,127})); + connect(senTemHot.port_b, port_bDomWat) annotation (Line(points={{40,48},{90, + 48},{90,60},{100,60}}, color={0,127,255})); + connect(con.port_b2, heaPum.port_a1) annotation (Line(points={{-6,-40},{-6, + -48},{-20,-48},{-20,-74},{-10,-74}}, color={0,127,255})); + connect(heaPum.port_b1, con.port_a2) annotation (Line(points={{10,-74},{20, + -74},{20,-48},{6,-48},{6,-40}}, color={0,127,255})); + connect(port_aDomWat, hex.port_a1) annotation (Line(points={{-100,60},{-80,60}, + {-80,48},{-70,48}}, color={0,127,255})); + connect(hex.port_b1, senTemHot.port_a) + annotation (Line(points={{-50,48},{20,48}}, color={0,127,255})); + connect(tanSte.port_a, junTop.port_3) annotation (Line(points={{-30,20},{-30, + 30}}, color={0,127,255})); + connect(junTop.port_1, hex.port_b2) annotation (Line(points={{-40,40},{-46,40}, + {-46,60},{-76,60},{-76,36},{-70,36}}, + color={0,127,255})); + connect(pumHex.port_b, junBot.port_2) + annotation (Line(points={{-50,-20},{-40,-20}}, color={0,127,255})); + connect(pumHex.port_a, hex.port_a2) annotation (Line(points={{-70,-20},{-80, + -20},{-80,-2},{-46,-2},{-46,36},{-50,36}}, color={0,127,255})); + connect(junBot.port_3, tanSte.port_b) + annotation (Line(points={{-30,-10},{-30,0}}, color={0,127,255})); + connect(pumHex.P, PPumTot.u1) annotation (Line(points={{-49,-11},{-42,-11},{ + -42,-4},{30,-4},{30,4},{50,4}}, color={0,0,127})); + connect(con.PPum, PPumTot.u2) annotation (Line(points={{12,-38},{40,-38},{40, + -8},{50,-8}}, color={0,0,127})); + connect(PPumTot.y, PPum) annotation (Line(points={{74,-2},{76,-2},{76,-40},{ + 110,-40}}, color={0,0,127})); + connect(junBot.port_1, con.port_a1) annotation (Line(points={{-20,-20},{-14, + -20},{-14,2},{-6,2},{-6,-20}}, color={0,127,255})); + connect(con.port_b1, junTop.port_2) annotation (Line(points={{6,-20},{6,10},{ + -16,10},{-16,40},{-20,40}}, color={0,127,255})); + connect(bou.ports[1], junTop.port_2) annotation (Line(points={{-4,26},{-12,26}, + {-12,40},{-20,40}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

      This model implements a domestic hot water source for a low-temperature @@ -150,7 +183,7 @@ The storage tank model is described in Buildings.Fluid.Storage.StratifiedEnhancedInternalHex. The heat pump and storage tank system should be parameterized altogether using - + Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater.

      diff --git a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo new file mode 100644 index 00000000000..33bc0e41ed5 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo @@ -0,0 +1,299 @@ +within Buildings.Experimental.DHC.Loads.HotWater; +model StorageTankWithExternalHeatExchanger + "A model of a storage tank with external heat exchanger to produce hot water" + extends Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( + final allowFlowReversalHea=false); + + parameter Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger + dat "Performance data" + annotation (Placement(transformation(extent={{-90,-96},{-70,-76}}))); + + parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; + parameter Real Ti=60 "Integrator time constant of circulation pump controller"; + + Fluid.Movers.Preconfigured.FlowControlled_dp pumHex( + redeclare package Medium = MediumHea, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + use_inputFilter=false, + riseTime=10, + m_flow_nominal=dat.mHex_flow_nominal, + dp_nominal=dat.dpHexHea_nominal) "Pump with head as input" annotation ( + Placement(transformation( + extent={{-10,10},{10,-10}}, + rotation=270, + origin={-40,0}))); + + Fluid.Storage.StratifiedEnhanced tan( + redeclare package Medium = MediumHea, + kIns=dat.kIns, + final T_start=TTan_start, + hTan=dat.hTan, + dIns=dat.dIns, + VTan=dat.VTan, + nSeg=dat.nSeg, + m_flow_nominal=dat.mHex_flow_nominal) + "Tank with steady-state heat exchanger balance" + annotation (Placement(transformation(extent={{10,-20},{-10,0}}))); + Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") + "Electric power required for pumping equipment" + annotation (Placement(transformation(extent={{100,-10},{120,10}}), + iconTransformation(extent={{100,-10},{120,10}}))); + Fluid.Sensors.TemperatureTwoPort senTemHot( + redeclare package Medium = MediumDom, + final allowFlowReversal=allowFlowReversalDom, + m_flow_nominal=dat.mDom_flow_nominal) + "Temperature sensor for hot water supply" + annotation (Placement(transformation(extent={{20,50},{40,70}}))); + + Fluid.HeatExchangers.ConstantEffectiveness hex( + redeclare package Medium1 = MediumDom, + redeclare package Medium2 = MediumHea, + final allowFlowReversal1=allowFlowReversalDom, + m1_flow_nominal=dat.mDom_flow_nominal, + m2_flow_nominal=dat.mHex_flow_nominal, + dp1_nominal=dat.dpHexHea_nominal, + from_dp2=true, + dp2_nominal=dat.dpHexDom_nominal) + annotation (Placement(transformation(extent={{-70,44},{-50,64}}))); + Fluid.FixedResistances.Junction junTop( + redeclare package Medium = MediumHea, + m_flow_nominal=dat.mHex_flow_nominal*{1,1,1}, + dp_nominal=zeros(3)) "Flow junction at top of tank" + annotation (Placement(transformation(extent={{-10,10},{10,30}}))); + Fluid.FixedResistances.Junction junBot( + redeclare package Medium = MediumHea, + m_flow_nominal=dat.mHex_flow_nominal*{1,1,1}, + dp_nominal=zeros(3)) "Flow junction at bottom of tank" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=180, + origin={0,-60}))); + Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = MediumDom) + "Mass flow rate of domestic hot water" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TTanTop + "Fluid temperature at the top of the tank" + annotation (Placement(transformation(extent={{20,-20},{40,0}}))); + Controls.OBC.CDL.Interfaces.BooleanOutput charge + "Output true if tank needs to be charged, false if it is sufficiently charged" + annotation (Placement(transformation(extent={{100,-100},{140,-60}}), + iconTransformation(extent={{100,-110},{140,-70}}))); + BaseClasses.HeatExchangerPumpController conPum(final mDom_flow_nominal=dat.mDom_flow_nominal, + final dpPum_nominal=dat.dpHexHea_nominal) + "Controller for pump of heat exchanger" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + BaseClasses.TankChargingController conCha "Controller for tank charge signal" + annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); + parameter Modelica.Media.Interfaces.Types.Temperature TTan_start=323.15 + "Start value of tank temperature"; +equation + connect(tan.port_a, junTop.port_3) + annotation (Line(points={{0,0},{0,10}}, color={0,127,255})); + connect(junTop.port_1, hex.port_b2) annotation (Line(points={{-10,20},{-76,20}, + {-76,48},{-70,48}}, color={0,127,255})); + connect(pumHex.port_b, junBot.port_2) + annotation (Line(points={{-40,-10},{-40,-60},{-10,-60}}, + color={0,127,255})); + connect(pumHex.port_a, hex.port_a2) annotation (Line(points={{-40,10},{-40,48}, + {-50,48}}, color={0,127,255})); + connect(junBot.port_3, tan.port_b) annotation (Line(points={{1.77636e-15,-50}, + {1.77636e-15,-40},{0,-40},{0,-20}}, color={0,127,255})); + connect(pumHex.P, PPum) annotation (Line(points={{-49,-11},{-48,-11},{-48,-70}, + {88,-70},{88,0},{110,0}}, color={0,0,127})); + connect(junTop.port_2, port_aHea) annotation (Line(points={{10,20},{84,20}, + {84,-60},{100,-60}}, color={0,127,255})); + connect(junBot.port_1, port_bHea) annotation (Line(points={{10,-60},{20, + -60},{20,-80},{-62,-80},{-62,-60},{-100,-60}}, + color={0,127,255})); + connect(hex.port_b1, senMasFlo.port_a) + annotation (Line(points={{-50,60},{-20,60}}, color={0,127,255})); + connect(senMasFlo.port_b, senTemHot.port_a) + annotation (Line(points={{0,60},{20,60}}, color={0,127,255})); + connect(TTanTop.port, tan.heaPorVol[1]) + annotation (Line(points={{20,-10},{0,-10}}, color={191,0,0})); + connect(senMasFlo.m_flow, conPum.mDom_flow) annotation (Line(points={{-10,71}, + {-10,74},{-86,74},{-86,6},{-82,6}}, color={0,0,127})); + connect(senTemHot.T, conPum.TDom) annotation (Line(points={{30,71},{30,80},{-88, + 80},{-88,-6},{-81,-6}}, color={0,0,127})); + connect(conPum.TDomSet, TDomSet) annotation (Line(points={{-81,0},{-92,0},{-92, + 0},{-110,0}}, color={0,0,127})); + connect(conCha.TTanTopSet, TDomSet) annotation (Line(points={{59,-34},{-92,-34}, + {-92,0},{-110,0}}, color={0,0,127})); + connect(conCha.TTanTop, TTanTop.T) annotation (Line(points={{58,-46},{46,-46}, + {46,-10},{41,-10}}, color={0,0,127})); + connect(conCha.charge, charge) annotation (Line(points={{82,-40},{86,-40},{86, + -80},{120,-80}}, color={255,0,255})); + connect(senTemHot.port_b, port_bDom) + annotation (Line(points={{40,60},{100,60}}, color={0,127,255})); + connect(conPum.dpPumHex, pumHex.dp_in) + annotation (Line(points={{-58,0},{-52,0}}, color={0,0,127})); + + connect(port_aDom, hex.port_a1) + annotation (Line(points={{-100,60},{-70,60}}, color={0,127,255})); + annotation ( + defaultComponentName="domHotWatTan", + Documentation(info=" +

      +This model implements a heating hot water tank with external heat exchanger that heats domestic hot water. +

      +

      +The storage tank model is described in + +Buildings.Fluid.Storage.StratifiedEnhancedInternalHex. +The heat pump and storage tank system should be parameterized altogether using + +Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger. +

      +

      +\"image\" +

      +

      +It is based on Fig. 3 in Evaluations of different domestic hot water +preparing methods with ultra-low-temperature district heating by X. Yang, +H. Li, and S. Svendsen at +doi.org/10.1016/j.energy.2016.04.109, as well as the +Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy +published by ASHRAE in 2022 at +https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download. +

      +", revisions=" +
        +
      • +October 5, 2023, by Michael Wetter:
        +First implementation. +
      • +
      +"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-140,86},{-140,86}}, + lineColor={95,95,95}, + lineThickness=1, + fillColor={0,0,0}, + fillPattern=FillPattern.CrossDiag), + Rectangle( + extent={{60,40},{0,-60}}, + lineColor={0,0,0}, + lineThickness=0.5), + Rectangle( + extent={{-20,20},{-40,-20}}, + lineColor={0,0,0}, + lineThickness=0.5), + Rectangle( + extent={{-100,64},{-60,58}}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Rectangle( + extent={{-34,64},{100,58}}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Rectangle( + extent={{-60,-26},{-36,-32}}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Rectangle( + extent={{-48,2},{48,-2}}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-60,16}, + rotation=90), + Rectangle( + extent={{-6,2},{6,-2}}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-36,-26}, + rotation=90), + Rectangle( + extent={{76,-58},{98,-62}}, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), + Rectangle( + extent={{-53,2},{53,-2}}, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={27,50}, + rotation=180), + Rectangle( + extent={{-56.5,2.5},{56.5,-2.5}}, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={77.5,-4.5}, + rotation=270), + Rectangle( + extent={{-46,2},{46,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-14,-72}, + rotation=180), + Rectangle( + extent={{-6,2},{6,-2}}, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={32,46}, + rotation=270), + Rectangle( + extent={{-16,2},{16,-2}}, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-24,36}, + rotation=270), + Rectangle( + extent={{-20,2},{20,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-80,-60}, + rotation=180), + Rectangle( + extent={{-7,2},{7,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={32,-67}, + rotation=270), + Rectangle( + extent={{-8,2},{8,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-60,-66}, + rotation=270), + Rectangle( + extent={{-25,2},{25,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-24,-45}, + rotation=270), + Rectangle( + extent={{-22,2},{22,-2}}, + fillColor={0,140,72}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-36,42}, + rotation=90), + Text( + extent={{-116,36},{-66,0}}, + textColor={0,0,127}, + textString="TDomSet"), + Text( + extent={{-100,140},{100,100}}, + textString="%name", + textColor={0,0,255})}), Diagram( + coordinateSystem(preserveAspectRatio=false))); +end StorageTankWithExternalHeatExchanger; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index 5744c351016..7af2cbba665 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -103,7 +103,7 @@ protected "Inequality to monitor whether temperatures are sufficient to meet set point" annotation (Placement(transformation(extent={{20,70},{40,90}}))); - parameter Modelica.Units.SI.Temperature dTSmall = 0.01 "Small temperature used to avoid division by zero"; + parameter Modelica.Units.SI.Temperature dTSmall = 0.1 "Small temperature used to avoid division by zero"; equation connect(senTemHot.port_a, port_hot) annotation (Line(points={{-80,-40},{-100,-40}}, color={0,127,255})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order index c4cc50d8865..224b4920855 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -4,3 +4,4 @@ ThermostaticMixingValve Data Examples BaseClasses +StorageTankWithExternalHeatExchanger diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.png b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.png deleted file mode 100644 index af6458e69906a3c96e1ec223e8cd25a72915a356..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37744 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≠wKVe`0 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 literal 0 HcmV?d00001 diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg new file mode 100644 index 00000000000..229ad1c0dc8 --- /dev/null +++ b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg @@ -0,0 +1,312 @@ + + + +image/svg+xml \ No newline at end of file From ba8bc252933850b93d6791ba2d2ba7047a2f2b02 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Tue, 17 Oct 2023 18:31:35 -0700 Subject: [PATCH 117/183] Revised hot water load models [ci skip] --- .../HeatExchangerPumpController.mo | 7 +- .../BaseClasses/PartialFourPortDHW.mo | 12 +- .../BaseClasses/TankChargingController.mo | 19 +- .../BaseClasses/TankValveController.mo | 75 ++++ .../Loads/HotWater/BaseClasses/package.order | 3 +- ...enericDomesticHotWaterWithHeatExchanger.mo | 8 +- .../DirectHeatExchangerWithElectricHeat.mo | 3 +- .../StorageTankWithExternalHeatExchanger.mo | 43 ++- .../DHC/Loads/HotWater/Examples/package.order | 2 +- .../StorageTankWithExternalHeatExchanger.mo | 286 ++++++++++----- .../Loads/HotWater/ThermostaticMixingValve.mo | 300 ++++++++++------ .../DHC/Loads/HotWater/package.order | 2 +- .../StorageTankWithExternalHeatExchanger.png | Bin 8884 -> 6164 bytes .../StorageTankWithExternalHeatExchanger.svg | 331 +++++++++--------- 14 files changed, 710 insertions(+), 381 deletions(-) create mode 100644 Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankValveController.mo diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo index 44fb44937b3..dd9ed475771 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo @@ -36,8 +36,9 @@ block HeatExchangerPumpController annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Controls.OBC.CDL.Reals.Hysteresis hysMasFlo( - uLow=mDom_flow_nominal/1E6, - uHigh=mDom_flow_nominal/1E5) + uLow=mDom_flow_nominal/1E4, + uHigh=2*mDom_flow_nominal/1E4, + y(start=false)) "Hysteresis used to switch secondary pump on and off" annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); @@ -45,7 +46,9 @@ block HeatExchangerPumpController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, k=k, Ti=Ti, + yMin=0.03, y_reset=0) + "PI controller for pump" annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); Controls.OBC.CDL.Reals.Switch swi "Switch for pump control" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index 33dad672d92..7c4bb1963c7 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -35,6 +35,7 @@ partial model PartialFourPortDHW h_outflow(start=MediumDom.h_default, nominal=MediumDom.h_default)) "Fluid connector for cold water (or recirculation water)" annotation (Placement(transformation(extent={{-110,50},{-90,70}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bDom( redeclare final package Medium = MediumDom, m_flow(max=if allowFlowReversalDom then +Modelica.Constants.inf else 0), @@ -48,6 +49,7 @@ partial model PartialFourPortDHW h_outflow(start=MediumHea.h_default, nominal=MediumHea.h_default)) "Fluid connector for heating water (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{90,-70},{110,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_bHea( redeclare final package Medium = MediumHea, m_flow(max=if allowFlowReversalHea then +Modelica.Constants.inf else 0), @@ -55,9 +57,17 @@ partial model PartialFourPortDHW "Fluid connector b for heating water (positive design flow direction is from port_a to port_b)" annotation (Placement(transformation(extent={{-90,-70},{-110,-50}}))); - Modelica.Blocks.Interfaces.RealInput TDomSet(final unit="K", displayUnit="degC") + Controls.OBC.CDL.Interfaces.RealInput TDomSet( + final unit="K", + displayUnit="degC") "Temperature setpoint for domestic water source from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); + + Controls.OBC.CDL.Interfaces.BooleanOutput charge + "Output true if tank needs to be charged, false if it is sufficiently charged" + annotation (Placement(transformation(extent={{100,-100},{140,-60}}), + iconTransformation(extent={{100,-110},{140,-70}}))); + annotation (Documentation(info="

      This partial model can be used for different domestic hot water generation methods. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo index 0da98782322..7f4ab14f496 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo @@ -2,11 +2,15 @@ within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; block TankChargingController "Controller to enable or disable storage tank charging" - Controls.OBC.CDL.Interfaces.RealInput TTanTop + Controls.OBC.CDL.Interfaces.RealInput TTanTop( + final unit="K", + displayUnit="degC") "Measured temperature at top of tank" annotation (Placement(transformation( extent={{-140,-60},{-100,-20}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); - Modelica.Blocks.Interfaces.RealInput TTanTopSet(final unit="K", displayUnit="degC") + Modelica.Blocks.Interfaces.RealInput TTanTopSet( + final unit="K", + displayUnit="degC") "Temperature setpoint for top section of hot water tank" annotation ( Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-120,50},{-100,70}}))); @@ -15,9 +19,7 @@ block TankChargingController transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20}, {140,20}}))); protected - Controls.OBC.CDL.Reals.Hysteresis cha( - uLow=0, - uHigh=5) + Controls.OBC.CDL.Reals.Hysteresis cha(uLow=-5, uHigh=0) "Outputs true if tank should be charged" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Controls.OBC.CDL.Reals.Subtract sub @@ -26,7 +28,7 @@ protected equation connect(sub.u2, TTanTop) annotation (Line(points={{-42,-6},{-60,-6},{-60,-40}, {-120,-40}}, color={0,0,127})); - connect(sub.u1, TTanTopSet) annotation (Line(points={{-42,6},{-68,6},{-68,40}, + connect(sub.u1, TTanTopSet) annotation (Line(points={{-42,6},{-60,6},{-60,40}, {-120,40}}, color={0,0,127})); connect(sub.y, cha.u) annotation (Line(points={{-18,0},{18,0}}, color={0,0,127})); @@ -53,9 +55,10 @@ equation textColor={0,0,127}, textString="TTanTop"), Text( - extent={{36,20},{86,-16}}, + extent={{42,20},{92,-16}}, textColor={0,0,127}, - textString="charge")}), Diagram( + textString="charge")}), + Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="

        diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankValveController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankValveController.mo new file mode 100644 index 00000000000..01b9de45501 --- /dev/null +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankValveController.mo @@ -0,0 +1,75 @@ +within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; +block TankValveController + "Controller to divert the water to the middle or bottom of the tank" + + parameter Modelica.Units.SI.Temperature TSwi = 318.15 "Switching temperature for return water"; + + Modelica.Blocks.Interfaces.RealInput TRet(final unit="K", displayUnit="degC") + "Return water temperature" annotation (Placement(transformation(extent={{-140, + -20},{-100,20}}), iconTransformation(extent={{-120,-10},{-100,10}}))); + Controls.OBC.CDL.Interfaces.RealOutput y "Valve position" annotation ( + Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation( + extent={{100,-20},{140,20}}))); + Modelica.Blocks.Continuous.LimIntegrator ram( + k=1/120, + outMax=1, + outMin=0, + strict=false) + "Ramp signal for valve position" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Controls.OBC.CDL.Conversions.BooleanToReal booToRea + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); +protected + Controls.OBC.CDL.Reals.Hysteresis cha(uLow=TSwi - 1, uHigh=TSwi + 1) + "Outputs true if tank should be charged" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + +equation + connect(cha.y, booToRea.u) + annotation (Line(points={{-38,0},{-2,0}}, color={255,0,255})); + connect(booToRea.y, ram.u) + annotation (Line(points={{22,0},{38,0}}, color={0,0,127})); + connect(ram.y, y) annotation (Line(points={{61,0},{120,0}}, color={0,0,127})); + connect(cha.u, TRet) + annotation (Line(points={{-62,0},{-120,0}}, color={0,0,127})); + annotation ( + defaultComponentName="conVal", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Text( + extent={{-90,18},{-40,-18}}, + textColor={0,0,127}, + textString="TRet"), + Text( + extent={{52,22},{102,-14}}, + textColor={0,0,127}, + textString="y")}), + Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
          +
        • +October 4, 2023, by Michael Wetter:
          +First implementation. +
        • +
        +", info=" +

        +Controller that outputs the commanded position for the valve that diverts the return +water to the middle or bottom of the tank. +

        +

        +The controller changes its commanded valve position continuously between 0 and 1. +If the measured temperature TRet is below TSwi, the output is +0, otherwise it is 1. The controller has a hysteresis of 2 Kelvin. +

        +")); +end TankValveController; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order index 3f458a0cf62..85663b2dfc3 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/package.order @@ -1,3 +1,4 @@ -PartialFourPortDHW HeatExchangerPumpController +PartialFourPortDHW TankChargingController +TankValveController diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo index 7094e9ab328..48e914aa198 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo @@ -11,9 +11,6 @@ record GenericDomesticHotWaterWithHeatExchanger parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation" annotation (Dialog(group="Tank", tab="Advanced")); - parameter Modelica.Units.SI.TemperatureDifference dTTan_nominal(min=2) = 5 - "Maximum temperature difference of tank above the temperature required to heat the domestic hot water" - annotation (Dialog(group="Tank", tab="Advanced")); parameter Modelica.Units.SI.PressureDifference dpHexHea_nominal(displayUnit="Pa")=5000 "Pressure drop across the heat exchanger at nominal conditions on heating water side" @@ -46,7 +43,10 @@ record GenericDomesticHotWaterWithHeatExchanger parameter Integer nSeg(min=4) = 5 "Number of volume segments used to discretize tank" annotation (Dialog(group="Tank", tab="Advanced")); parameter Modelica.Units.SI.TemperatureDifference dTHexHea(min=2) = 5 - "Temperature difference between across heat exchanger on heating water side (inlet-outlet)" + "Temperature difference across heat exchanger on heating water side (inlet-outlet)" + annotation (Dialog(group="Heat exchanger", tab="Advanced")); + parameter Modelica.Units.SI.TemperatureDifference dTHexApp_nominal(min=1) = 2 + "Heat exchanger approach temperature" annotation (Dialog(group="Heat exchanger", tab="Advanced")); annotation (preferredView="info",Documentation(info=" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index 3b95614d2a0..36748ebb91a 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -2,8 +2,7 @@ within Buildings.Experimental.DHC.Loads.HotWater; model DirectHeatExchangerWithElectricHeat "A model for generating hot water using a district heat exchanger and supplemental electric resistance" extends - Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( - final have_PEle=have_eleHea); + Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPort; parameter Modelica.Units.SI.Efficiency eps(min=0,max=1) = 0.8 "Heat exchanger effectiveness"; parameter Boolean have_eleHea = true "True if has auxiliary electric heater"; parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for electric heater (positive)" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index f302f0de56d..5d206bd4738 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -2,8 +2,14 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; model StorageTankWithExternalHeatExchanger "Example model for storage tank with external heat exchanger" extends Modelica.Icons.Example; + package Medium = Buildings.Media.Water "Medium model"; + parameter Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea( + VTan=0.3, mDom_flow_nominal=0.333) + "Data for heat pump water heater with tank" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Modelica.Blocks.Sources.CombiTimeTable sch( tableOnFile=true, @@ -14,11 +20,6 @@ model StorageTankWithExternalHeatExchanger "Domestic hot water fixture draw fraction schedule" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Data.GenericDomesticHotWaterWithHeatExchanger - datWatHea( - VTan=0.3, mDom_flow_nominal=0.333) - "Data for heat pump water heater with tank" - annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Fluid.Sources.Boundary_pT sinDis( nPorts=1, redeclare package Medium = Medium, @@ -40,7 +41,7 @@ model StorageTankWithExternalHeatExchanger use_m_flow_in=true, nPorts=1, redeclare package Medium = Medium, - T(displayUnit="degC") = datWatHea.TMix_nominal + datWatHea.dTTan_nominal) + T(displayUnit="degC") = datWatHea.TMix_nominal + datWatHea.dTHexApp_nominal) "Source for heating water" annotation ( Placement(transformation( @@ -51,25 +52,28 @@ model StorageTankWithExternalHeatExchanger final unit="K", displayUnit="degC") = 308.15) "Temperature setpoint for hot water supply to fixture" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Experimental.DHC.Loads.HotWater.StorageTankWithExternalHeatExchanger domHotWatTan(redeclare package MediumDom = Medium, redeclare package MediumHea = Medium, dat=datWatHea) "Storage tank with external heat exchanger" annotation (Placement(transformation(extent={{0,20},{20,40}}))); ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, - mMix_flow_nominal=datWatHea.mDom_flow_nominal) + mMix_flow_nominal=1.2*datWatHea.mDom_flow_nominal) annotation (Placement(transformation(extent={{40,60},{60,80}}))); - Controls.OBC.CDL.Conversions.BooleanToReal booToRea( - realTrue=0.2*datWatHea.QHex_flow_nominal*4200*(55 - 50)) + Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue=0.1*datWatHea.QHex_flow_nominal + /4200/(55 - 50)) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); + Modelica.Blocks.Sources.Constant conTSetHot1(k( + final unit="K", + displayUnit="degC") = 313.15) + "Temperature setpoint for hot water supply to fixture" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); equation connect(theMixVal.yMixSet, sch.y[1]) annotation (Line(points={{39,78},{-50,78}, {-50,70},{-59,70}}, color={0,0,127})); - connect(conTSetHot.y, domHotWatTan.TDomSet) annotation (Line(points={{-59,30}, - {-1,30}}, color={0,0,127})); - connect(conTSetHot.y, theMixVal.TMixSet) annotation (Line(points={{-59,30},{ - -10,30},{-10,72},{39,72}}, + connect(conTSetHot.y, theMixVal.TMixSet) annotation (Line(points={{-59,40},{ + -10,40},{-10,72},{39,72}}, color={0,0,127})); connect(domHotWatTan.port_bDom, theMixVal.port_hot) annotation (Line(points={{ 20,36},{32,36},{32,66},{40,66}}, color={0,127,255})); @@ -85,6 +89,8 @@ equation annotation (Line(points={{-4,-40},{-4,24},{0,24}}, color={0,127,255})); connect(souHea.ports[1], domHotWatTan.port_aHea) annotation (Line(points={{58,24},{20,24}}, color={0,127,255})); + connect(domHotWatTan.TDomSet, conTSetHot1.y) annotation (Line(points={{-1,30}, + {-20,30},{-20,10},{-59,10}}, color={0,0,127})); annotation (Diagram(graphics={ Text( extent={{-140,160},{160,120}}, @@ -92,7 +98,9 @@ equation textColor={0,0,255})}), Documentation(info="

        -fixme: add +Example model of a fresh water station that heats up domestic hot water. +Input is a load profile which is sent to a model that computes the hot and cold water draw. +If the tank needs to be recharged, then heating water with a prescribed temperature is sent to the tank.

        ", revisions="
          @@ -102,5 +110,8 @@ First implementation.
        "), - experiment(StopTime=86400, __Dymola_Algorithm="Radau")); + experiment( + StopTime=8640000, + Tolerance=1e-06, + __Dymola_Algorithm="Cvode")); end StorageTankWithExternalHeatExchanger; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order index c11db6e484d..34ec09c4cd1 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order @@ -1,4 +1,4 @@ HeaterAndFixtureDirectHeatExchangerWithElectricHeat HeaterAndFixtureHeatPumpWithTank -BaseClasses StorageTankWithExternalHeatExchanger +BaseClasses diff --git a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo index 33bc0e41ed5..9fffed73113 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo @@ -1,16 +1,24 @@ within Buildings.Experimental.DHC.Loads.HotWater; model StorageTankWithExternalHeatExchanger "A model of a storage tank with external heat exchanger to produce hot water" - extends Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( + extends + Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( final allowFlowReversalHea=false); parameter Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger dat "Performance data" - annotation (Placement(transformation(extent={{-90,-96},{-70,-76}}))); + annotation (Placement(transformation(extent={{60,80},{80,100}}))); parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; parameter Real Ti=60 "Integrator time constant of circulation pump controller"; + parameter Modelica.Media.Interfaces.Types.Temperature TTan_start=323.15 + "Start value of tank temperature" + annotation(Dialog(tab="Initialization")); + final parameter Real eps = + dat.QHex_flow_nominal / CMin_flow_nominal / ( dat.TMix_nominal + dat.dTHexApp_nominal - dat.TCol_nominal) + "Heat exchanger effectiveness" + annotation(Dialog(tab="Advanced")); Fluid.Movers.Preconfigured.FlowControlled_dp pumHex( redeclare package Medium = MediumHea, energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, @@ -23,7 +31,7 @@ model StorageTankWithExternalHeatExchanger rotation=270, origin={-40,0}))); - Fluid.Storage.StratifiedEnhanced tan( + Fluid.Storage.Stratified tan( redeclare package Medium = MediumHea, kIns=dat.kIns, final T_start=TTan_start, @@ -32,9 +40,9 @@ model StorageTankWithExternalHeatExchanger VTan=dat.VTan, nSeg=dat.nSeg, m_flow_nominal=dat.mHex_flow_nominal) - "Tank with steady-state heat exchanger balance" - annotation (Placement(transformation(extent={{10,-20},{-10,0}}))); - Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") + "Heating water tank" + annotation (Placement(transformation(extent={{30,-18},{10,2}}))); + Modelica.Blocks.Interfaces.RealOutput PEle(unit="W") "Electric power required for pumping equipment" annotation (Placement(transformation(extent={{100,-10},{120,10}}), iconTransformation(extent={{100,-10},{120,10}}))); @@ -53,83 +61,128 @@ model StorageTankWithExternalHeatExchanger m2_flow_nominal=dat.mHex_flow_nominal, dp1_nominal=dat.dpHexHea_nominal, from_dp2=true, - dp2_nominal=dat.dpHexDom_nominal) - annotation (Placement(transformation(extent={{-70,44},{-50,64}}))); + dp2_nominal=dat.dpHexDom_nominal, + eps=eps) + annotation (Placement(transformation(extent={{-60,44},{-40,64}}))); Fluid.FixedResistances.Junction junTop( redeclare package Medium = MediumHea, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, m_flow_nominal=dat.mHex_flow_nominal*{1,1,1}, dp_nominal=zeros(3)) "Flow junction at top of tank" - annotation (Placement(transformation(extent={{-10,10},{10,30}}))); - Fluid.FixedResistances.Junction junBot( - redeclare package Medium = MediumHea, - m_flow_nominal=dat.mHex_flow_nominal*{1,1,1}, - dp_nominal=zeros(3)) "Flow junction at bottom of tank" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=180, - origin={0,-60}))); + annotation (Placement(transformation(extent={{10,20},{30,40}}))); Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = MediumDom) "Mass flow rate of domestic hot water" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TTanTop + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TTanTop( + T(displayUnit="degC")) "Fluid temperature at the top of the tank" - annotation (Placement(transformation(extent={{20,-20},{40,0}}))); - Controls.OBC.CDL.Interfaces.BooleanOutput charge - "Output true if tank needs to be charged, false if it is sufficiently charged" - annotation (Placement(transformation(extent={{100,-100},{140,-60}}), - iconTransformation(extent={{100,-110},{140,-70}}))); + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor TTanBot( + T(displayUnit="degC")) + "Fluid temperature at the bottom of the tank" + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + BaseClasses.HeatExchangerPumpController conPum(final mDom_flow_nominal=dat.mDom_flow_nominal, final dpPum_nominal=dat.dpHexHea_nominal) "Controller for pump of heat exchanger" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); BaseClasses.TankChargingController conCha "Controller for tank charge signal" - annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); - parameter Modelica.Media.Interfaces.Types.Temperature TTan_start=323.15 - "Start value of tank temperature"; + annotation (Placement(transformation(extent={{72,-90},{92,-70}}))); + + Fluid.Actuators.Valves.ThreeWayLinear divVal( + redeclare package Medium = MediumHea, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + use_inputFilter=false, + m_flow_nominal=dat.mHex_flow_nominal, + dpValve_nominal=1000) "Diversion valve to reduce mixing in tank" + annotation (Placement(transformation(extent={{30,-40},{10,-60}}))); + Fluid.Sensors.TemperatureTwoPort senTemRet( + redeclare package Medium = MediumHea, + final allowFlowReversal=allowFlowReversalDom, + m_flow_nominal=dat.mHex_flow_nominal) + "Temperature sensor for return heating water from heat exchanger" + annotation (Placement(transformation(extent={{-20,-60},{0,-40}}))); + BaseClasses.TankValveController conVal "Diversion valve controller" + annotation (Placement(transformation(extent={{-20,-90},{0,-70}}))); + + Controls.OBC.CDL.Reals.AddParameter dTHexApp(p=dat.dTHexApp_nominal) + "Offset for heat exchanger approach temperature" + annotation (Placement(transformation(extent={{34,-84},{54,-64}}))); +protected + parameter Modelica.Units.SI.SpecificHeatCapacity cpHea_default = + MediumHea.specificHeatCapacityCp(MediumHea.setState_pTX( + MediumHea.p_default, + MediumHea.T_default, + MediumHea.X_default)) + "Specific heat capacity of heating medium at default medium state"; + parameter Modelica.Units.SI.SpecificHeatCapacity cpDom_default = + MediumDom.specificHeatCapacityCp(MediumDom.setState_pTX( + MediumDom.p_default, + MediumDom.T_default, + MediumDom.X_default)) + "Specific heat capacity of domestic hot water medium at default medium state"; + parameter Modelica.Units.SI.ThermalConductance CMin_flow_nominal = + min(dat.mHex_flow_nominal*cpHea_default, dat.mDom_flow_nominal*cpDom_default) + "Minimum heat capacity flow rate"; +initial equation + assert(eps < 1, "In " + getInstanceName() + ": Heat exchanger effectivness must be below 1, received eps = " + String(eps) + ". Check sizing."); + equation connect(tan.port_a, junTop.port_3) - annotation (Line(points={{0,0},{0,10}}, color={0,127,255})); - connect(junTop.port_1, hex.port_b2) annotation (Line(points={{-10,20},{-76,20}, - {-76,48},{-70,48}}, color={0,127,255})); - connect(pumHex.port_b, junBot.port_2) - annotation (Line(points={{-40,-10},{-40,-60},{-10,-60}}, - color={0,127,255})); - connect(pumHex.port_a, hex.port_a2) annotation (Line(points={{-40,10},{-40,48}, - {-50,48}}, color={0,127,255})); - connect(junBot.port_3, tan.port_b) annotation (Line(points={{1.77636e-15,-50}, - {1.77636e-15,-40},{0,-40},{0,-20}}, color={0,127,255})); - connect(pumHex.P, PPum) annotation (Line(points={{-49,-11},{-48,-11},{-48,-70}, - {88,-70},{88,0},{110,0}}, color={0,0,127})); - connect(junTop.port_2, port_aHea) annotation (Line(points={{10,20},{84,20}, - {84,-60},{100,-60}}, color={0,127,255})); - connect(junBot.port_1, port_bHea) annotation (Line(points={{10,-60},{20, - -60},{20,-80},{-62,-80},{-62,-60},{-100,-60}}, - color={0,127,255})); + annotation (Line(points={{20,2},{20,20}}, + color={0,127,255})); + connect(pumHex.P, PEle) annotation (Line(points={{-49,-11},{-50,-11},{-50,-32}, + {86,-32},{86,0},{110,0}}, color={0,0,127})); + connect(junTop.port_2, port_aHea) annotation (Line(points={{30,30},{84,30},{84, + -60},{100,-60}}, color={0,127,255})); connect(hex.port_b1, senMasFlo.port_a) - annotation (Line(points={{-50,60},{-20,60}}, color={0,127,255})); + annotation (Line(points={{-40,60},{-20,60}}, color={0,127,255})); connect(senMasFlo.port_b, senTemHot.port_a) annotation (Line(points={{0,60},{20,60}}, color={0,127,255})); connect(TTanTop.port, tan.heaPorVol[1]) - annotation (Line(points={{20,-10},{0,-10}}, color={191,0,0})); + annotation (Line(points={{40,10},{22,10},{22,-8},{20,-8}}, + color={191,0,0})); connect(senMasFlo.m_flow, conPum.mDom_flow) annotation (Line(points={{-10,71}, {-10,74},{-86,74},{-86,6},{-82,6}}, color={0,0,127})); connect(senTemHot.T, conPum.TDom) annotation (Line(points={{30,71},{30,80},{-88, 80},{-88,-6},{-81,-6}}, color={0,0,127})); connect(conPum.TDomSet, TDomSet) annotation (Line(points={{-81,0},{-92,0},{-92, 0},{-110,0}}, color={0,0,127})); - connect(conCha.TTanTopSet, TDomSet) annotation (Line(points={{59,-34},{-92,-34}, - {-92,0},{-110,0}}, color={0,0,127})); - connect(conCha.TTanTop, TTanTop.T) annotation (Line(points={{58,-46},{46,-46}, - {46,-10},{41,-10}}, color={0,0,127})); - connect(conCha.charge, charge) annotation (Line(points={{82,-40},{86,-40},{86, - -80},{120,-80}}, color={255,0,255})); + connect(conCha.TTanTop, TTanTop.T) annotation (Line(points={{70,-86},{66,-86}, + {66,10},{61,10}}, color={0,0,127})); + connect(conCha.charge, charge) annotation (Line(points={{94,-80},{120,-80}}, + color={255,0,255})); connect(senTemHot.port_b, port_bDom) annotation (Line(points={{40,60},{100,60}}, color={0,127,255})); connect(conPum.dpPumHex, pumHex.dp_in) annotation (Line(points={{-58,0},{-52,0}}, color={0,0,127})); connect(port_aDom, hex.port_a1) - annotation (Line(points={{-100,60},{-70,60}}, color={0,127,255})); + annotation (Line(points={{-100,60},{-60,60}}, color={0,127,255})); + connect(junTop.port_1, hex.port_a2) annotation (Line(points={{10,30},{-30,30}, + {-30,48},{-40,48}}, color={0,127,255})); + connect(hex.port_b2, pumHex.port_a) annotation (Line(points={{-60,48},{-72,48}, + {-72,20},{-40,20},{-40,10}}, color={0,127,255})); + connect(senTemRet.port_b, divVal.port_2) + annotation (Line(points={{0,-50},{10,-50}}, color={0,127,255})); + connect(divVal.port_1, tan.fluPorVol[integer(dat.nSeg/2)]) annotation (Line( + points={{30,-50},{34,-50},{34,-8},{25,-8}}, color={0,127,255})); + connect(senTemRet.T, conVal.TRet) annotation (Line(points={{-10,-39},{-10,-36}, + {-26,-36},{-26,-80},{-21,-80}}, color={0,0,127})); + connect(conVal.y, divVal.y) + annotation (Line(points={{2,-80},{20,-80},{20,-62}}, color={0,0,127})); + connect(TTanBot.port, tan.heaPorVol[dat.nSeg]) annotation (Line(points={{40,-20}, + {22,-20},{22,-8},{20,-8}}, color={191,0,0})); + connect(conCha.TTanTopSet, dTHexApp.y) + annotation (Line(points={{71,-74},{56,-74}}, color={0,0,127})); + connect(dTHexApp.u, TDomSet) annotation (Line(points={{32,-74},{26,-74},{26, + -96},{-90,-96},{-90,0},{-110,0}}, color={0,0,127})); + connect(divVal.port_3, tan.fluPorVol[dat.nSeg]) annotation (Line(points={{20,-40}, + {20,-36},{32,-36},{32,-8},{25,-8}}, color={0,127,255})); + connect(tan.port_b, port_bHea) annotation (Line(points={{20,-18},{20,-26},{-80, + -26},{-80,-60},{-100,-60}}, color={0,127,255})); + connect(pumHex.port_b, senTemRet.port_a) annotation (Line(points={{-40,-10},{-40, + -50},{-20,-50}}, color={0,127,255})); annotation ( defaultComponentName="domHotWatTan", Documentation(info=" @@ -176,11 +229,11 @@ First implementation. fillColor={0,0,0}, fillPattern=FillPattern.CrossDiag), Rectangle( - extent={{60,40},{0,-60}}, + extent={{60,40},{0,-78}}, lineColor={0,0,0}, lineThickness=0.5), Rectangle( - extent={{-20,20},{-40,-20}}, + extent={{-30,40},{-50,0}}, lineColor={0,0,0}, lineThickness=0.5), Rectangle( @@ -189,28 +242,28 @@ First implementation. fillPattern=FillPattern.Solid, pattern=LinePattern.None), Rectangle( - extent={{-34,64},{100,58}}, + extent={{-44,64},{100,58}}, fillColor={0,140,72}, fillPattern=FillPattern.Solid, pattern=LinePattern.None), Rectangle( - extent={{-60,-26},{-36,-32}}, + extent={{-60,-10},{-44,-16}}, fillColor={0,140,72}, fillPattern=FillPattern.Solid, pattern=LinePattern.None), Rectangle( - extent={{-48,2},{48,-2}}, + extent={{-40,2},{40,-2}}, fillColor={0,140,72}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-60,16}, + origin={-60,24}, rotation=90), Rectangle( extent={{-6,2},{6,-2}}, fillColor={0,140,72}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-36,-26}, + origin={-46,-6}, rotation=90), Rectangle( extent={{76,-58},{98,-62}}, @@ -218,11 +271,11 @@ First implementation. fillPattern=FillPattern.Solid, pattern=LinePattern.None), Rectangle( - extent={{-53,2},{53,-2}}, + extent={{-58,2},{58,-2}}, fillColor={238,46,47}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={27,50}, + origin={22,50}, rotation=180), Rectangle( extent={{-56.5,2.5},{56.5,-2.5}}, @@ -232,11 +285,11 @@ First implementation. origin={77.5,-4.5}, rotation=270), Rectangle( - extent={{-46,2},{46,-2}}, + extent={{-6,2},{6,-2}}, fillColor={28,108,200}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-14,-72}, + origin={-6,-60}, rotation=180), Rectangle( extent={{-6,2},{6,-2}}, @@ -246,46 +299,39 @@ First implementation. origin={32,46}, rotation=270), Rectangle( - extent={{-16,2},{16,-2}}, + extent={{-6,2},{6,-2}}, fillColor={238,46,47}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-24,36}, + origin={-34,46}, rotation=270), Rectangle( - extent={{-20,2},{20,-2}}, + extent={{-33,2},{33,-2}}, fillColor={28,108,200}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-80,-60}, + origin={-67,-60}, rotation=180), Rectangle( - extent={{-7,2},{7,-2}}, - fillColor={28,108,200}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None, - origin={32,-67}, - rotation=270), - Rectangle( - extent={{-8,2},{8,-2}}, + extent={{-6,2},{6,-2}}, fillColor={28,108,200}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-60,-66}, - rotation=270), + origin={-26,-44}, + rotation=360), Rectangle( - extent={{-25,2},{25,-2}}, + extent={{-31,2},{31,-2}}, fillColor={28,108,200}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-24,-45}, + origin={-34,-31}, rotation=270), Rectangle( - extent={{-22,2},{22,-2}}, + extent={{-12,2},{12,-2}}, fillColor={0,140,72}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-36,42}, + origin={-44,52}, rotation=90), Text( extent={{-116,36},{-66,0}}, @@ -294,6 +340,82 @@ First implementation. Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram( + textColor={0,0,255}), + Rectangle( + extent={{-5,2},{5,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-10,-55}, + rotation=270), + Rectangle( + extent={{-6,2},{6,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-6,-12}, + rotation=180), + Polygon( + points={{-13,-3},{-5,3},{-5,-9},{-13,-3}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-7,-57}, + rotation=270), + Polygon( + points={{-15,-3},{-7,3},{-7,-9},{-15,-3}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-13,-29}, + rotation=90), + Polygon( + points={{-15,-3},{-5,3},{-5,-9},{-15,-3}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-25,-47}, + rotation=180), + Rectangle( + extent={{-12,2},{12,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-10,-24}, + rotation=270), + Ellipse( + extent={{-42,-20},{-26,-34}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{-15,-3},{-7,5},{-7,-11},{-15,-3}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid, + origin={-37,-19}, + rotation=90), + Text( + extent={{72,42},{-14,12}}, + textColor={0,0,0}, + textString=DynamicSelect("", String(TTanTop.T-273.15, format=".1f"))), + Text( + extent={{74,-46},{-12,-76}}, + textColor={0,0,0}, + textString=DynamicSelect("", String(TTanBot.T-273.15, format=".1f"))), + Ellipse( + extent={{81,-83},{95,-97}}, + lineColor=DynamicSelect({235,235,235}, + if charge then + {0,255,0} + else + {235,235,235}), + fillColor=DynamicSelect({235,235,235}, + if charge then + {0,255,0} + else + {235,235,235}), + fillPattern=FillPattern.Solid)}), + Diagram( coordinateSystem(preserveAspectRatio=false))); end StorageTankWithExternalHeatExchanger; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index 7af2cbba665..b0f645301fd 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -5,6 +5,31 @@ model ThermostaticMixingValve parameter Modelica.Units.SI.MassFlowRate mMix_flow_nominal "Nominal mixed water flow rate to fixture"; + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Real k( + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + "Gain of controller" + annotation (Dialog(group="Control gains")); + parameter Real Ti( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 + "Time constant of integrator block" + annotation (Dialog(group="Control gains", + enable=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or + controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Real Td( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 + "Time constant of derivative block" + annotation (Dialog(group="Control gains", + enable=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or + controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID)); + parameter Real relTol = 0.005 "Relative tolerance on energy balance, if not met, a warning will be issued at end of simulation" + annotation(Dialog(tab="Advanced")); + Modelica.Fluid.Interfaces.FluidPort_a port_hot(redeclare package Medium = Medium) "Port for hot water supply" annotation (Placement(transformation(extent={{-110,-50},{-90,-30}}))); @@ -13,8 +38,7 @@ model ThermostaticMixingValve annotation (Placement(transformation(extent={{-110,-90},{-90,-70}}))); Modelica.Blocks.Interfaces.RealInput TMixSet( final unit="K", - displayUnit="degC") - "Temperature setpoint of mixed water outlet" + displayUnit="degC") "Temperature setpoint of mixed water outlet" annotation (Placement(transformation(extent={{-120,10},{-100,30}}), iconTransformation(extent={{-120,10},{-100,30}}))); @@ -28,142 +52,210 @@ model ThermostaticMixingValve rotation=180, origin={-110,80}))); - Fluid.Sensors.TemperatureTwoPort senTemHot( + Fluid.Sensors.TemperatureTwoPort senTHot( redeclare final package Medium = Medium, allowFlowReversal=false, final m_flow_nominal=mMix_flow_nominal, tau=0) "Hot water temperature" annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); - Fluid.Sensors.TemperatureTwoPort senTemCol( + Fluid.Sensors.TemperatureTwoPort senTCol( redeclare final package Medium = Medium, allowFlowReversal=false, final m_flow_nominal=mMix_flow_nominal, tau=0) "Cold water temperature" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); - Modelica.Units.SI.MassFlowRate mMix_flow = gaiMMix_flow.y - "Mass flow rate of mixed water"; - Controls.OBC.CDL.Utilities.Assert assTHotTooLow(message="Hot water temperature is insufficient to meet mixed water set point") - "Assertion that triggers a warning whenever the hot water temperature becomes too low" - annotation (Placement(transformation(extent={{60,70},{80,90}}))); + Fluid.Sensors.TemperatureTwoPort senTMix( + redeclare final package Medium = Medium, + allowFlowReversal=false, + final m_flow_nominal=mMix_flow_nominal, + tau=1) "Mixed water temperature" + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); + + Controls.OBC.CDL.Reals.PID conPID( + final controllerType=controllerType, + final k=k, + final Ti=Ti, + final Td=Td, + yMax=1, + yMin=0) annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + + Controls.OBC.CDL.Reals.Divide ratEne + "Ratio of actual over required energy (must be near 1 if load is satisfied)" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); protected - Controls.OBC.CDL.Reals.Subtract dTMix - "Temperature difference mixed minus cold" - annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); - Controls.OBC.CDL.Reals.Subtract dTHot "Temperature difference hot minus cold" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Utilities.Math.SmoothMax dTHot_nonZero(deltaX=dTSmall/4) - "Temperature difference bounded away from zero" - annotation (Placement(transformation(extent={{0,20},{20,40}}))); - Controls.OBC.CDL.Reals.Sources.Constant dTSmaDiv( - final k(final unit="K")=dTSmall) - "Small temperature difference to avoid division by zero" - annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); - Controls.OBC.CDL.Reals.Divide temRat - "Ratio of temperatures (T_mix-T_col)/(T_hot-T_col)" - annotation (Placement(transformation(extent={{40,40},{60,60}}))); - Modelica.Blocks.Math.Gain gaiMMix_flow(final k=mMix_flow_nominal) + Controls.OBC.CDL.Reals.Multiply mulMHot_flow + "Multiplication to output required hot water mass flow rate" + annotation (Placement(transformation(extent={{40,10},{60,30}}))); + + EnergyMeter eneMetReq "Required energy" + annotation (Placement(transformation(extent={{-20,40},{0,60}}))); + EnergyMeter eneMetAct "Actual energy" + annotation (Placement(transformation(extent={{-20,70},{0,90}}))); + + block EnergyMeter "Block that outputs integrated energy, bounded away from zero" + extends Modelica.Blocks.Icons.Block; + + Modelica.Blocks.Interfaces.RealInput TMix(final unit="K", displayUnit="degC") + "Temperature of mixed water outlet" annotation (Placement(transformation( + extent={{-120,50},{-100,70}}), iconTransformation(extent={{-120,50},{-100, + 70}}))); + Modelica.Blocks.Interfaces.RealInput TCol(final unit="K", displayUnit="degC") + "Temperature of cold water" annotation (Placement(transformation(extent={{-120, + -10},{-100,10}}), iconTransformation(extent={{-120,-10},{-100,10}}))); + Modelica.Blocks.Interfaces.RealInput m_flow(final unit="kg/s") + "Mass flow rate" annotation (Placement(transformation(extent={{-120,-70},{-100, + -50}}), iconTransformation(extent={{-120,-70},{-100,-50}}))); + Modelica.Blocks.Interfaces.RealOutput E(final unit="J") "Consumed energy" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Modelica.Units.SI.Energy EInt( + start=0, + fixed=true, + unbounded=true, + nominal=1E9) "Integral of H_flow"; + Modelica.Units.SI.HeatFlowRate H_flow "Enthalpy flow rate"; + equation + der(EInt) = H_flow; + H_flow = m_flow * Buildings.Utilities.Psychrometrics.Constants.cpWatLiq * (TMix-TCol); + E = max(Buildings.Utilities.Psychrometrics.Constants.cpWatLiq*1, EInt); + annotation ( + defaultComponentName="eneMet", + Icon(graphics={ + Text( + extent={{-96,72},{-70,48}}, + textColor={0,0,88}, + textString="TMix"), + Text( + extent={{-94,14},{-68,-10}}, + textColor={0,0,88}, + textString="TCol"), + Text( + extent={{-94,-46},{-68,-70}}, + textColor={0,0,88}, + textString="m_flow"), + Text( + extent={{68,12},{94,-12}}, + textColor={0,0,88}, + textString="E")}), Documentation(info=" +

        +Block that outputs the integrated enthalpy flow rate. +

        +

        +To avoid division by zero in downstream blocks, the output is bounded away from zero. +

        +", revisions=" +
          +
        • +October 5, 2023, by Michael Wetter:
          +First implementation. +
        • +
        +")); + end EnergyMeter; + +protected + parameter Modelica.Units.SI.Temperature dTSmall = 0.1 "Small temperature used to avoid division by zero"; + + Controls.OBC.CDL.Reals.MultiplyByParameter gaiMMix_flow(final k=mMix_flow_nominal) "Gain for multiplying domestic hot water schedule" annotation (Placement( transformation( - extent={{10,-10},{-10,10}}, + extent={{10,10},{-10,-10}}, rotation=180, - origin={-30,-20}))); - Controls.OBC.CDL.Reals.Multiply mHot_flow( - u1(final unit="1"), - u2(final unit="kg/s"), - y(final unit="kg/s")) - "Hot water flow rate" - annotation (Placement(transformation(extent={{20,-20},{40,0}}))); - Controls.OBC.CDL.Reals.Subtract mCol_flow "Cold water flow rate" - annotation (Placement(transformation(extent={{60,-20},{80,0}}))); + origin={-70,30}))); - Fluid.Sources.MassFlowSource_T sinHot( - redeclare package Medium = Medium, - use_m_flow_in=true, - nPorts=1) "Sink for hot water supply" - annotation (Placement(transformation(extent={{10,-50},{-10,-30}}))); - Fluid.Sources.MassFlowSource_T sinCol( - redeclare package Medium = Medium, + Fluid.Movers.BaseClasses.IdealSource floSouHot( + redeclare final package Medium = Medium, + allowFlowReversal=false, + m_flow_small=1E-4*mMix_flow_nominal, + final control_m_flow=true, + final control_dp=false) + "Forced mass flow rate for hot water" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + Fluid.Sources.MassFlowSource_T sinMMix( + redeclare final package Medium = Medium, use_m_flow_in=true, - nPorts=1) "Sink for cold water supply" - annotation (Placement(transformation(extent={{8,-90},{-12,-70}}))); - Modelica.Blocks.Math.Gain sigHot(final k=-1) - "Sign change to extract mass flow rate" annotation (Placement( + nPorts=1) "Sink for mixed mass flow rate" annotation (Placement( transformation( extent={{10,-10},{-10,10}}, rotation=0, - origin={50,-40}))); - Modelica.Blocks.Math.Gain sigCol(final k=-1) - "Sign change to extract mass flow rate" annotation (Placement( - transformation( - extent={{10,-10},{-10,10}}, - rotation=0, - origin={50,-80}))); - Controls.OBC.CDL.Reals.Greater dTMon(h=dTSmall/4) - "Inequality to monitor whether temperatures are sufficient to meet set point" - annotation (Placement(transformation(extent={{20,70},{40,90}}))); + origin={50,-60}))); - parameter Modelica.Units.SI.Temperature dTSmall = 0.1 "Small temperature used to avoid division by zero"; + Controls.OBC.CDL.Reals.MultiplyByParameter gaiMMix_sign(final k=-1) + "Gain to invert sign" annotation (Placement(transformation( + extent={{10,10},{-10,-10}}, + rotation=180, + origin={50,-10}))); equation - connect(senTemHot.port_a, port_hot) annotation (Line(points={{-80,-40},{-100,-40}}, - color={0,127,255})); - connect(port_col, senTemCol.port_a) + connect(senTHot.port_a, port_hot) + annotation (Line(points={{-80,-40},{-100,-40}}, color={0,127,255})); + connect(port_col, senTCol.port_a) annotation (Line(points={{-100,-80},{-80,-80}}, color={0,127,255})); - connect(dTMix.u1, TMixSet) annotation (Line(points={{-42,76},{-74,76},{-74,20}, + connect(yMixSet, gaiMMix_flow.u) annotation (Line(points={{-110,80},{-90,80},{ + -90,30},{-82,30}}, color={0,0,127})); + connect(floSouHot.port_a, senTHot.port_b) + annotation (Line(points={{-40,-40},{-60,-40}}, color={0,127,255})); + connect(floSouHot.port_b, senTMix.port_a) annotation (Line(points={{-20,-40}, + {-14,-40},{-14,-60},{0,-60}}, color={0,127,255})); + connect(conPID.u_s, TMixSet) annotation (Line(points={{-42,0},{-88,0},{-88,20}, {-110,20}}, color={0,0,127})); - connect(senTemCol.T, dTMix.u2) annotation (Line(points={{-70,-69},{-70,-60},{-52, - -60},{-52,64},{-42,64}}, color={0,0,127})); - connect(dTHot.u1, senTemHot.T) - annotation (Line(points={{-42,46},{-70,46},{-70,-29}}, color={0,0,127})); - connect(dTHot.u2, senTemCol.T) annotation (Line(points={{-42,34},{-46,34},{-46, - -60},{-70,-60},{-70,-69}}, color={0,0,127})); - connect(dTHot_nonZero.u1, dTHot.y) annotation (Line(points={{-2,36},{-10,36},{ - -10,40},{-18,40}}, color={0,0,127})); - connect(dTHot_nonZero.u2, dTSmaDiv.y) annotation (Line(points={{-2,24},{-8,24}, - {-8,10},{-18,10}}, color={0,0,127})); - connect(dTHot_nonZero.y, temRat.u2) annotation (Line(points={{21,30},{30,30},{ - 30,44},{38,44}}, color={0,0,127})); - connect(temRat.u1, dTMix.y) annotation (Line(points={{38,56},{-10,56},{-10,70}, - {-18,70}},color={0,0,127})); - connect(yMixSet, gaiMMix_flow.u) annotation (Line(points={{-110,80},{-80,80},{ - -80,-20},{-42,-20}}, color={0,0,127})); - connect(mHot_flow.u1, temRat.y) annotation (Line(points={{18,-4},{10,-4},{10,10}, - {70,10},{70,50},{62,50}}, color={0,0,127})); - connect(gaiMMix_flow.y, mHot_flow.u2) annotation (Line(points={{-19,-20},{0,-20}, - {0,-16},{18,-16}}, color={0,0,127})); - connect(gaiMMix_flow.y, mCol_flow.u1) annotation (Line(points={{-19,-20},{0,-20}, - {0,14},{50,14},{50,-4},{58,-4}}, color={0,0,127})); - connect(mHot_flow.y, mCol_flow.u2) annotation (Line(points={{42,-10},{52,-10}, - {52,-16},{58,-16}}, color={0,0,127})); - connect(sigCol.y, sinCol.m_flow_in) annotation (Line(points={{39,-80},{26,-80}, - {26,-72},{10,-72}}, color={0,0,127})); - connect(sigHot.y, sinHot.m_flow_in) annotation (Line(points={{39,-40},{26,-40}, - {26,-32},{12,-32}}, color={0,0,127})); - connect(sigHot.u, mHot_flow.y) annotation (Line(points={{62,-40},{72,-40},{72, - -24},{52,-24},{52,-10},{42,-10}}, color={0,0,127})); - connect(mCol_flow.y, sigCol.u) annotation (Line(points={{82,-10},{90,-10},{90, - -80},{62,-80}}, color={0,0,127})); - connect(sinCol.ports[1], senTemCol.port_b) - annotation (Line(points={{-12,-80},{-60,-80}}, color={0,127,255})); - connect(sinHot.ports[1], senTemHot.port_b) - annotation (Line(points={{-10,-40},{-60,-40}}, color={0,127,255})); - connect(dTMon.y, assTHotTooLow.u) - annotation (Line(points={{42,80},{58,80}}, color={255,0,255})); - connect(dTMon.u1, dTHot.y) annotation (Line(points={{18,80},{-14,80},{-14,40}, - {-18,40}}, color={0,0,127})); - connect(dTSmaDiv.y, dTMon.u2) annotation (Line(points={{-18,10},{-8,10},{-8,72}, - {18,72}}, color={0,0,127})); + connect(senTMix.T, conPID.u_m) annotation (Line(points={{10,-49},{10,-20},{ + -30,-20},{-30,-12}}, color={0,0,127})); + connect(sinMMix.m_flow_in, gaiMMix_sign.y) annotation (Line(points={{62,-52}, + {80,-52},{80,-10},{62,-10}}, color={0,0,127})); + connect(mulMHot_flow.y, floSouHot.m_flow_in) annotation (Line(points={{62,20}, + {90,20},{90,-28},{-36,-28},{-36,-32}}, color={0,0,127})); + connect(gaiMMix_flow.y, mulMHot_flow.u1) annotation (Line(points={{-58,30},{26, + 30},{26,26},{38,26}}, color={0,0,127})); + connect(conPID.y, mulMHot_flow.u2) annotation (Line(points={{-18,0},{30,0},{ + 30,14},{38,14}}, color={0,0,127})); + connect(gaiMMix_flow.y, gaiMMix_sign.u) annotation (Line(points={{-58,30},{26, + 30},{26,-10},{38,-10}}, color={0,0,127})); + connect(senTCol.port_b, senTMix.port_a) annotation (Line(points={{-60,-80},{ + -14,-80},{-14,-60},{0,-60}}, color={0,127,255})); + connect(senTMix.port_b, sinMMix.ports[1]) + annotation (Line(points={{20,-60},{40,-60}}, color={0,127,255})); + connect(eneMetReq.TMix, TMixSet) annotation (Line(points={{-21,56},{-88,56},{-88, + 20},{-110,20}}, color={0,0,127})); + connect(eneMetReq.TCol, senTCol.T) annotation (Line(points={{-21,50},{-52,50}, + {-52,-60},{-70,-60},{-70,-69}}, color={0,0,127})); + connect(gaiMMix_flow.y, eneMetReq.m_flow) annotation (Line(points={{-58,30},{-32, + 30},{-32,44},{-21,44}}, color={0,0,127})); + connect(eneMetAct.TMix, senTMix.T) annotation (Line(points={{-21,86},{-28,86}, + {-28,20},{10,20},{10,-49}}, color={0,0,127})); + connect(eneMetAct.TCol, senTCol.T) annotation (Line(points={{-21,80},{-52,80}, + {-52,-60},{-70,-60},{-70,-69}}, color={0,0,127})); + connect(eneMetAct.m_flow, gaiMMix_flow.y) annotation (Line(points={{-21,74},{-24, + 74},{-24,30},{-58,30}}, color={0,0,127})); + connect(eneMetReq.E, ratEne.u2) annotation (Line(points={{1,50},{10,50},{10,64}, + {18,64}}, color={0,0,127})); + connect(eneMetAct.E, ratEne.u1) annotation (Line(points={{1,80},{10,80},{10,76}, + {18,76}}, color={0,0,127})); + when terminal() then + assert( + abs(1-ratEne.y) < relTol, + "In " + getInstanceName() + ": Required domestic hot water flow rate is not met. Ratio of actual over required energy = " + String(ratEne.y), + level=AssertionLevel.warning); + end when; annotation ( defaultComponentName="theMixVal", preferredView="info",Documentation(info="

        This model implements a thermostatic mixing valve, which uses a PI feedback controller to mix hot and cold fluid to achieve a specified -hot water outlet temperature to send to a fixture(s). +mixed water outlet temperature. +

        +

        +If the mixed water temperature cannot be provided within a tolerance of relTol, +averaged over the whole simulation period, +then an assertion warning will be written at the end of the simulation.

        ", revisions="
        • +October 17, 2023, by Michael Wetter:
          +Revised implementation. +
        • +
        • September 11, 2023 by David Blum:
          Updated for release.
        • diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order index 224b4920855..db5dbecc4e9 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -1,7 +1,7 @@ DirectHeatExchangerWithElectricHeat HeatPumpWithTank +StorageTankWithExternalHeatExchanger ThermostaticMixingValve Data Examples BaseClasses -StorageTankWithExternalHeatExchanger diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.png b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.png index e217b1fe036bafda63ee50553c4e0ea450d2726a..12c60070cf0e3a99c305df2eebb17ae5b104eb60 100644 GIT binary patch literal 6164 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 literal 8884 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 diff --git a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg index 229ad1c0dc8..b4578a518ec 100644 --- a/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg +++ b/Buildings/Resources/Images/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.svg @@ -2,24 +2,24 @@ image/svg+xml \ No newline at end of file + inkscape:connector-curvature="0" /> From 29327b21c0664f6644b87ce41a25e6a9c0763c9f Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Wed, 18 Oct 2023 09:20:47 -0700 Subject: [PATCH 118/183] Revised hot water load models [ci skip] --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 4 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 186 +++++++++++------- ...enericDomesticHotWaterWithHeatExchanger.mo | 5 +- .../StorageTankWithExternalHeatExchanger.mo | 33 +++- 4 files changed, 142 insertions(+), 86 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index ee79fc7d0cd..966b9001ed4 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -23,8 +23,8 @@ model HeatPumpHeatExchangerDHWTank TEva_nominal=TDisWatMin - dT_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, - mHotSou_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - - TColWat_nominal), + dp1_nominal=6000, + dp2_nominal=6000, datWatHea=datWatHea) if have_hotWat "Subsystem for hot water production" annotation (Placement(transformation(extent={{32,24},{52,44}}))); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index aca527c117a..a78a6dedd6f 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -13,9 +13,12 @@ model HeatPumpDHWTank choice(redeclare package Medium = Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) "Propylene glycol water, 40% mass fraction"))); - parameter Boolean have_varFloEva = true - "Set to true for a variable evaporator flow. Fixme: false does not make sense here." - annotation(Evaluate=true); + parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea "Performance data" + annotation (Placement(transformation(extent={{140,100},{160,120}}))); +// parameter Boolean have_varFloEva = true +// "Set to true for a variable evaporator flow. Fixme: false does not make sense here." +// annotation(Evaluate=true); parameter Real COP_nominal(final unit="1") "Heat pump COP" annotation (Dialog(group="Nominal condition")); @@ -25,13 +28,29 @@ model HeatPumpDHWTank parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal" annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.HeatFlowRate QHotWat_flow_nominal(min=0) = 0 + "Nominal capacity of heat pump condenser for hot water production system (>=0)" + annotation (Dialog(group="Nominal condition")); + + parameter Modelica.Units.SI.TemperatureDifference dT_nominal(min=0) = 5 + "Water temperature drop/increase accross load and source-side HX (always positive)" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal = heaPum.m1_flow_nominal + "Condenser mass flow rate"; + final parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal = heaPum.m2_flow_nominal + "Evaporator mass flow rate"; + parameter Boolean allowFlowReversal1=false "Set to true to allow flow reversal on condenser side" annotation (Dialog(tab="Assumptions"), Evaluate=true); parameter Boolean allowFlowReversal2=false "Set to true to allow flow reversal on evaporator side" annotation (Dialog(tab="Assumptions"), Evaluate=true); - parameter Modelica.Units.SI.MassFlowRate mHotSou_flow_nominal(min=0) "Mass flow rate of hot water leaving tank" + parameter Modelica.Units.SI.Pressure dp1_nominal(displayUnit="Pa") + "Pressure difference over condenser" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Pressure dp2_nominal(displayUnit="Pa") + "Pressure difference over evaporator" annotation (Dialog(group="Nominal condition")); // IO CONNECTORS Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) @@ -39,11 +58,6 @@ model HeatPumpDHWTank annotation ( Placement(transformation(extent={{-240,100},{-200,140}}), iconTransformation(extent={{-140,70},{-100,110}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput m2_flow( - final unit="kg/s") if have_varFloEva - "Evaporator mass flow rate" - annotation (Placement(transformation(extent={{-240,20},{-200,60}}), - iconTransformation(extent={{-140,-50},{-100,-10}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a2( redeclare final package Medium = Medium2, m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), @@ -86,18 +100,38 @@ model HeatPumpDHWTank extent={{200,-60},{240,-20}}), iconTransformation(extent={{100,-50},{ 140,-10}}))); // COMPONENTS + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + QCon_flow_nominal=QHotWat_flow_nominal, + dTEva_nominal=-dT_nominal, + dTCon_nominal=dT_nominal, + use_eta_Carnot_nominal=false, + COP_nominal=COP_nominal, + TCon_nominal=TCon_nominal, + TEva_nominal=TEva_nominal, + final dp1_nominal=dp1_nominal, + final dp2_nominal=dp2_nominal, + QCon_flow_max = datWatHea.QCon_flow_max) + "Domestic hot water heat pump" + annotation (Placement(transformation(extent={{-20,-64},{0,-44}}))); + Fluid.Movers.Preconfigured.FlowControlled_m_flow + pumCon( + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + redeclare package Medium = Medium, + m_flow_nominal=mCon_flow_nominal, + riseTime=10) "Pump for heat pump condenser" + annotation (Placement(transformation(extent={{0,4},{-20,24}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( redeclare final package Medium = Medium2, - final m_flow_nominal=heaPumTan.mHea_flow_nominal, final allowFlowReversal=allowFlowReversal2, - dp_nominal=datWatHea.dp2_nominal) + dp_nominal=dp2_nominal) "Heat pump evaporator water pump" - annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); - Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea + annotation (Placement(transformation(extent={{78,-70},{58,-50}}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal floCon(realTrue= + mCon_flow_nominal) "Condenser mass flow rate" annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom(final k=heaPumTan.mHea_flow_nominal) - if not have_varFloEva "Nominal flow rate" - annotation (Placement(transformation(extent={{0,80},{-20,100}}))); Fluid.Sensors.TemperatureTwoPort senTHotSup( redeclare final package Medium = Medium1, final allowFlowReversal=allowFlowReversal1, @@ -106,84 +140,84 @@ model HeatPumpDHWTank annotation (Placement( transformation( extent={{10,-10},{-10,10}}, - rotation=-90, - origin={40,20}))); - Fluid.Sensors.TemperatureTwoPort senTColSou( - redeclare final package Medium = Medium1, - final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=mHotSou_flow_nominal) - "Temperature of water entering domestic hot water tank" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-20}))); - Buildings.Controls.OBC.CDL.Reals.Switch enaHeaPum( - u2(start=false)) - "Enable heat pump by switching to actual set point" - annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); + rotation=0, + origin={-110,60}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum( y(each start=false), t=1e-2*heaPumTan.mHea_flow_nominal, h=0.5e-2*heaPumTan.mHea_flow_nominal) "Pump return status" annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply floEva - "Zero flow rate if not enabled" - annotation (Placement(transformation(extent={{-20,110},{0,130}}))); - Loads.HotWater.StorageTankWithExternalHeatExchanger heaPumTan( - mDom_flow_nominal=mHotSou_flow_nominal) + Loads.HotWater.StorageTankWithExternalHeatExchanger heaPumTan(final dat= + datWatHea) "Heat pump with storage tank for domestic hot water" - annotation (Placement(transformation(extent={{0,-20},{20,0}}))); - parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger - datWatHea "Performance data" - annotation (Placement(transformation(extent={{4,-36},{16,-24}}))); - Modelica.Blocks.Math.Add add - annotation (Placement(transformation(extent={{140,-18},{160,2}}))); + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + + Modelica.Blocks.Math.Add3 add3_1 "Electricity use for pumps" + annotation (Placement(transformation(extent={{140,-20},{160,0}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant THotSouSet(k=datWatHea.THotSou_nominal) "Set point of water in hot water tank" - annotation (Placement(transformation(extent={{-200,0},{-180,20}}))); + annotation (Placement(transformation(extent={{-180,0},{-160,20}}))); + Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(p=datWatHea.dTHexApp_nominal) + annotation (Placement(transformation(extent={{-120,-56},{-100,-36}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") "Actual heat pump heating heat flow rate added to fluid" annotation ( Placement(transformation(extent={{200,-120},{240,-80}}), iconTransformation(extent={{100,-120},{140,-80}}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal floEva(realTrue= + mEva_flow_nominal) "Evaporator mass flow rate" + annotation (Placement(transformation(extent={{-180,80},{-160,100}}))); equation - connect(senTColSou.T,enaHeaPum. u3) annotation (Line(points={{-51,-20},{-150,-20}, - {-150,12},{-142,12}}, color={0,0,127})); - connect(uEna, booToRea.u) + connect(uEna, floCon.u) annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); connect(senTHotSup.port_b, port_b1) - annotation (Line(points={{40,30},{40,60},{-200,60}}, color={0,127,255})); - connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{49,-55},{ - 44,-55},{44,-40},{220,-40}}, color={0,0,127})); + annotation (Line(points={{-120,60},{-200,60}}, color={0,127,255})); + connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{57,-55},{44, + -55},{44,-40},{220,-40}}, color={0,0,127})); connect(port_a2, pumEva.port_a) - annotation (Line(points={{200,-60},{70,-60}}, color={0,127,255})); - connect(booToRea.y, floEva.u1) annotation (Line(points={{-158,120},{-140,120}, - {-140,134},{-40,134},{-40,126},{-22,126}}, color={0,0,127})); - connect(m2_flow, floEva.u2) annotation (Line(points={{-220,40},{-40,40},{-40,114}, - {-22,114}}, color={0,0,127})); - connect(floEvaNom.y, floEva.u2) annotation (Line(points={{-22,90},{-30,90},{-30, - 114},{-22,114}}, color={0,0,127})); + annotation (Line(points={{200,-60},{78,-60}}, color={0,127,255})); + connect(pumEva.m_flow_actual, staPum.u) annotation (Line(points={{57,-55},{44, + -55},{44,-100},{-78,-100}}, + color={0,0,127})); + connect(add3_1.y, PPum) annotation (Line(points={{161,-10},{180,-10},{180,0},{ + 220,0}}, color={0,0,127})); + connect(heaPum.port_a1, heaPumTan.port_bHea) annotation (Line(points={{-20,-48}, + {-92,-48},{-92,14},{-80,14}}, color={0,127,255})); + connect(pumCon.port_b, heaPumTan.port_aHea) + annotation (Line(points={{-20,14},{-60,14}}, color={0,127,255})); + connect(heaPum.port_b1,pumCon. port_a) annotation (Line(points={{0,-48},{12,-48}, + {12,14},{0,14}}, color={0,127,255})); + connect(heaPumTan.port_bDom, senTHotSup.port_a) annotation (Line(points={{-60, + 26},{-50,26},{-50,60},{-100,60}}, color={0,127,255})); + connect(addPar.y, heaPum.TSet) annotation (Line(points={{-98,-46},{-40,-46},{ + -40,-45},{-22,-45}}, + color={0,0,127})); + connect(THotSouSet.y, heaPumTan.TDomSet) annotation (Line(points={{-158,10},{ + -140,10},{-140,20},{-81,20}}, + color={0,0,127})); + connect(addPar.u, THotSouSet.y) annotation (Line(points={{-122,-46},{-140,-46}, + {-140,10},{-158,10}}, + color={0,0,127})); + connect(heaPum.P, PHea) annotation (Line(points={{1,-54},{30,-54},{30,40},{220, + 40}}, color={0,0,127})); + connect(pumEva.port_b, heaPum.port_a2) + annotation (Line(points={{58,-60},{0,-60}}, color={0,127,255})); + connect(heaPum.port_b2, port_b2) annotation (Line(points={{-20,-60},{-30,-60}, + {-30,-110},{180,-110},{180,60},{200,60}}, color={0,127,255})); + connect(floEva.u, uEna) annotation (Line(points={{-182,90},{-190,90},{-190, + 120},{-220,120}}, color={255,0,255})); + connect(floCon.y, pumCon.m_flow_in) + annotation (Line(points={{-158,120},{-10,120},{-10,26}}, color={0,0,127})); connect(floEva.y, pumEva.m_flow_in) - annotation (Line(points={{2,120},{60,120},{60,-48}}, color={0,0,127})); - connect(port_a1,senTColSou. port_a) annotation (Line(points={{-200,-60},{-40,-60}, - {-40,-30}}, color={0,127,255})); - connect(enaHeaPum.y, heaPumTan.TDomSet) annotation (Line(points={{-118,20},{-10, - 20},{-10,-10},{-1,-10}}, color={0,0,127})); - connect(heaPumTan.PHea, PHea) annotation (Line(points={{21,-10},{80,-10},{80,20}, - {180,20},{180,40},{220,40}}, color={0,0,127})); - connect(staPum.y, enaHeaPum.u2) annotation (Line(points={{-102,-100},{-160,-100}, - {-160,20},{-142,20}}, color={255,0,255})); - connect(pumEva.m_flow_actual, staPum.u) annotation (Line(points={{49,-55},{0,-55}, - {0,-100},{-78,-100}}, color={0,0,127})); - connect(add.y, PPum) annotation (Line(points={{161,-8},{180,-8},{180,0},{220,0}}, - color={0,0,127})); - connect(add.u2, pumEva.P) annotation (Line(points={{138,-14},{120,-14},{120,-20}, - {49,-20},{49,-51}}, color={0,0,127})); - connect(heaPumTan.PPum, add.u1) annotation (Line(points={{21,-10},{120,-10},{ - 120,-2},{138,-2}}, - color={0,0,127})); - connect(THotSouSet.y, enaHeaPum.u1) annotation (Line(points={{-178,10},{-166, - 10},{-166,28},{-142,28}}, color={0,0,127})); + annotation (Line(points={{-158,90},{68,90},{68,-48}}, color={0,0,127})); + connect(port_a1, heaPumTan.port_aDom) annotation (Line(points={{-200,-60},{ + -188,-60},{-188,26},{-80,26}}, color={0,127,255})); + connect(add3_1.u1, heaPumTan.PEle) annotation (Line(points={{138,-2},{130,-2}, + {130,50},{-46,50},{-46,20},{-59,20}}, color={0,0,127})); + connect(pumEva.P, add3_1.u3) annotation (Line(points={{57,-51},{50,-51},{50, + -18},{138,-18}}, color={0,0,127})); + connect(add3_1.u2, pumCon.P) annotation (Line(points={{138,-10},{122,-10},{ + 122,46},{-32,46},{-32,23},{-21,23}}, color={0,0,127})); annotation ( defaultComponentName="heaPum", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo index 48e914aa198..99858014f2a 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo @@ -20,7 +20,8 @@ record GenericDomesticHotWaterWithHeatExchanger dpHexHea_nominal*(mDom_flow_nominal/mHex_flow_nominal)^2 "Pressure drop across the heat exchanger at nominal conditions on domestic hot water side" annotation (Dialog(group="Heat exchanger", tab="Advanced")); - parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = QHex_flow_nominal/dTHexHea/4200 + parameter Modelica.Units.SI.MassFlowRate mHex_flow_nominal = QHex_flow_nominal/ + dTHexHea_nominal /4200 "Mass flow rate of heat exchanger on heating side" annotation (Dialog(group="Heat exchanger", tab="Advanced")); parameter Modelica.Units.SI.MassFlowRate mDom_flow_nominal @@ -42,7 +43,7 @@ record GenericDomesticHotWaterWithHeatExchanger annotation (Dialog(group="Domestic hot water", tab="Advanced")); parameter Integer nSeg(min=4) = 5 "Number of volume segments used to discretize tank" annotation (Dialog(group="Tank", tab="Advanced")); - parameter Modelica.Units.SI.TemperatureDifference dTHexHea(min=2) = 5 + parameter Modelica.Units.SI.TemperatureDifference dTHexHea_nominal(min=2) = 5 "Temperature difference across heat exchanger on heating water side (inlet-outlet)" annotation (Dialog(group="Heat exchanger", tab="Advanced")); parameter Modelica.Units.SI.TemperatureDifference dTHexApp_nominal(min=1) = 2 diff --git a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo index 9fffed73113..dfe47fc6f31 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo @@ -9,7 +9,7 @@ model StorageTankWithExternalHeatExchanger dat "Performance data" annotation (Placement(transformation(extent={{60,80},{80,100}}))); - parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; + parameter Real k=0.1 "Proportional gain of circulation pump controller"; parameter Real Ti=60 "Integrator time constant of circulation pump controller"; parameter Modelica.Media.Interfaces.Types.Temperature TTan_start=323.15 @@ -306,11 +306,11 @@ First implementation. origin={-34,46}, rotation=270), Rectangle( - extent={{-33,2},{33,-2}}, + extent={{-15,2},{15,-2}}, fillColor={28,108,200}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-67,-60}, + origin={-85,-60}, rotation=180), Rectangle( extent={{-6,2},{6,-2}}, @@ -320,11 +320,11 @@ First implementation. origin={-26,-44}, rotation=360), Rectangle( - extent={{-31,2},{31,-2}}, + extent={{-23,2},{23,-2}}, fillColor={28,108,200}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - origin={-34,-31}, + origin={-34,-23}, rotation=270), Rectangle( extent={{-12,2},{12,-2}}, @@ -415,7 +415,28 @@ First implementation. {0,255,0} else {235,235,235}), - fillPattern=FillPattern.Solid)}), + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-16,2},{16,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-72,-76}, + rotation=270), + Rectangle( + extent={{-54,2},{54,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={-20,-90}, + rotation=180), + Rectangle( + extent={{-7,2},{7,-2}}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + origin={32,-85}, + rotation=270)}), Diagram( coordinateSystem(preserveAspectRatio=false))); end StorageTankWithExternalHeatExchanger; From ca1a781b14c6b87f579ea1796d300650823bf93a Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Wed, 18 Oct 2023 13:10:10 -0700 Subject: [PATCH 119/183] Revised hot water load models [ci skip] --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 154 +++++++- .../Combined/Subsystems/HeatPump.mo | 7 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 338 +++++++++++++----- .../BuildingTimeSeriesWithETSWithDHWTank.mo | 2 +- .../BuildingTimeSeriesWithETSDHWTank.mo | 12 +- 5 files changed, 404 insertions(+), 109 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 966b9001ed4..b09ac226cea 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -17,10 +17,11 @@ model HeatPumpHeatExchangerDHWTank Subsystems.HeatPumpDHWTank proHotWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, - final have_varFloEva=have_varFloEva, final COP_nominal=COPHotWat_nominal, - TCon_nominal=datWatHea.THex_nominal, + TCon_nominal=THotWatSup_nominal, TEva_nominal=TDisWatMin - dT_nominal, + QHotWat_flow_nominal=QHotWat_flow_nominal, + dT_nominal=dT_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, dp1_nominal=6000, @@ -33,8 +34,9 @@ model HeatPumpHeatExchangerDHWTank annotation (Placement(transformation(extent={{36,48},{48,60}}))); Loads.HotWater.ThermostaticMixingValve theMixVal( redeclare package Medium = MediumBui, - mMix_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - - TColWat_nominal)) "Thermostatic mixing valve" + mMix_flow_nominal=QHotWat_flow_nominal/cpBui_default/(THotWatSup_nominal - TColWat_nominal)) + if have_hotWat + "Thermostatic mixing valve" annotation (Placement(transformation(extent={{-20,50},{-40,72}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction dcwSpl( redeclare final package Medium = MediumBui, final m_flow_nominal= @@ -43,13 +45,11 @@ model HeatPumpHeatExchangerDHWTank extent={{-10,-10},{10,10}}, rotation=90, origin={-12,4}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=1/ - QHotWat_flow_nominal) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( + k=1/QHotWat_flow_nominal) if have_hotWat annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); equation - connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38,100}, - {28,100},{28,31},{30,31}}, color={0,0,127})); connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, {-114,43},{30,43}}, color={255,0,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) @@ -85,8 +85,9 @@ equation -156,-80},{-320,-80}}, color={0,0,127})); connect(THotWatSupSet, theMixVal.TMixSet) annotation (Line(points={{-320,-40}, {-32,-40},{-32,32},{-8,32},{-8,63.2},{-19,63.2}}, color={0,0,127})); - connect(QReqHotWat_flow, gai.u) annotation (Line(points={{-320,-120},{-288,-120},{-288, - 60},{-82,60}}, color={0,0,127})); + connect(QReqHotWat_flow, gai.u) annotation (Line(points={{-320,-120},{-288,-120}, + {-288,60},{-82,60}}, + color={0,0,127})); connect(gai.y, theMixVal.yMixSet) annotation (Line(points={{-58,60},{-48,60}, {-48,78},{-8,78},{-8,69.8},{-19,69.8}}, color={0,0,127})); annotation ( @@ -177,5 +178,136 @@ This is for issue 1097.
        -")); +"), Icon(graphics={ + Rectangle( + extent={{-140,-142},{140,142}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-14,8},{58,-70}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{0,-52},{46,-60}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{6,-30},{2,-38},{10,-38},{6,-30}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{6,-30},{2,-22},{10,-22},{6,-30}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{36,-12},{40,-52}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{30,-24},{48,-42}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{38,-24},{30,-36},{48,-36},{38,-24}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{4,-38},{8,-52}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{4,-12},{8,-22}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-2,-4},{44,-12}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-76,60},{-62,36}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-70,76},{-68,60}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-1.5,9.5},{1.5,-9.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={-59.5,74.5}, + rotation=90), + Rectangle( + extent={{-70,36},{-68,26}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-1.5,9.5},{1.5,-9.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={-59.5,26.5}, + rotation=90), + Rectangle( + extent={{-1.5,5.5},{1.5,-5.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={-13.5,26.5}, + rotation=90), + Rectangle( + extent={{-1.5,34.5},{1.5,-34.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={15.5,74.5}, + rotation=90), + Rectangle( + extent={{-50,78},{-18,22}}, + pattern=LinePattern.None, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-50,78},{-18,50}}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-8,28},{-6,8}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{50,76},{48,8}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid)})); end HeatPumpHeatExchangerDHWTank; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo index d1b307c7872..f83a89c9227 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; model HeatPump "Base subsystem with water-to-water heat pump" replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium "Medium model on condenser side" @@ -249,8 +249,9 @@ equation 138,6}}, color={0,0,127})); connect(pumCon.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-50}, {-40,-50},{-40,-30}},color={0,127,255})); - connect(zer.y, add2.u2) annotation (Line(points={{101,-100},{120,-100},{120,-6}, - {138,-6}}, color={0,0,127})); + connect(zer.y, add2.u2) annotation (Line(points={{101,-100},{120,-100},{120, + -6},{138,-6}}, + color={0,0,127})); connect(pumCon.m_flow_actual, staPum[1].u) annotation (Line(points={{-49,-45}, {-38,-45},{-38,-100},{-78,-100}}, color={0,0,127})); connect(pumEva.m_flow_actual, staPum[2].u) annotation (Line(points={{49,-55},{ diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index a78a6dedd6f..ec27ac7b706 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -28,7 +28,7 @@ model HeatPumpDHWTank parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.HeatFlowRate QHotWat_flow_nominal(min=0) = 0 + parameter Modelica.Units.SI.HeatFlowRate QHotWat_flow_nominal(min=0) "Nominal capacity of heat pump condenser for hot water production system (>=0)" annotation (Dialog(group="Nominal condition")); @@ -53,7 +53,7 @@ model HeatPumpDHWTank "Pressure difference over evaporator" annotation (Dialog(group="Nominal condition")); // IO CONNECTORS - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna "Enable signal" annotation ( Placement(transformation(extent={{-240,100},{-200,140}}), @@ -101,8 +101,10 @@ model HeatPumpDHWTank 140,-10}}))); // COMPONENTS Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, + redeclare package Medium1 = Medium1, + redeclare package Medium2 = Medium2, + allowFlowReversal1=false, + allowFlowReversal2=false, QCon_flow_nominal=QHotWat_flow_nominal, dTEva_nominal=-dT_nominal, dTCon_nominal=dT_nominal, @@ -112,129 +114,293 @@ model HeatPumpDHWTank TEva_nominal=TEva_nominal, final dp1_nominal=dp1_nominal, final dp2_nominal=dp2_nominal, - QCon_flow_max = datWatHea.QCon_flow_max) + QCon_flow_max=QHotWat_flow_nominal) "Domestic hot water heat pump" - annotation (Placement(transformation(extent={{-20,-64},{0,-44}}))); - Fluid.Movers.Preconfigured.FlowControlled_m_flow + annotation (Placement(transformation(extent={{-82,-70},{-62,-50}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumCon( energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - redeclare package Medium = Medium, + redeclare package Medium = Medium2, m_flow_nominal=mCon_flow_nominal, riseTime=10) "Pump for heat pump condenser" - annotation (Placement(transformation(extent={{0,4},{-20,24}}))); + annotation (Placement(transformation(extent={{-20,4},{-40,24}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( redeclare final package Medium = Medium2, final allowFlowReversal=allowFlowReversal2, - dp_nominal=dp2_nominal) + m_flow_nominal=mEva_flow_nominal, + dp_nominal=dp2_nominal + 6000) "Heat pump evaporator water pump" - annotation (Placement(transformation(extent={{78,-70},{58,-50}}))); + annotation (Placement(transformation(extent={{20,-70},{0,-50}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal floCon(realTrue= mCon_flow_nominal) "Condenser mass flow rate" - annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Fluid.Sensors.TemperatureTwoPort senTHotSup( - redeclare final package Medium = Medium1, - final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=mHotSou_flow_nominal) - "Temperature of water leaving the domestic hot water storage tank" - annotation (Placement( - transformation( - extent={{10,-10},{-10,10}}, - rotation=0, - origin={-110,60}))); - Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum( - y(each start=false), - t=1e-2*heaPumTan.mHea_flow_nominal, - h=0.5e-2*heaPumTan.mHea_flow_nominal) - "Pump return status" - annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); - Loads.HotWater.StorageTankWithExternalHeatExchanger heaPumTan(final dat= + annotation (Placement(transformation(extent={{-80,110},{-60,130}}))); + Loads.HotWater.StorageTankWithExternalHeatExchanger heaPumTan( + redeclare package MediumDom = Medium1, + redeclare package MediumHea = Medium2, final dat= datWatHea) "Heat pump with storage tank for domestic hot water" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Modelica.Blocks.Math.Add3 add3_1 "Electricity use for pumps" - annotation (Placement(transformation(extent={{140,-20},{160,0}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant THotSouSet(k=datWatHea.THotSou_nominal) + annotation (Placement(transformation(extent={{140,60},{160,80}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant THotSouSet(k=datWatHea.TMix_nominal) "Set point of water in hot water tank" annotation (Placement(transformation(extent={{-180,0},{-160,20}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(p=datWatHea.dTHexApp_nominal) - annotation (Placement(transformation(extent={{-120,-56},{-100,-36}}))); + annotation (Placement(transformation(extent={{-120,-62},{-100,-42}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") "Actual heat pump heating heat flow rate added to fluid" annotation ( Placement(transformation(extent={{200,-120},{240,-80}}), iconTransformation(extent={{100,-120},{140,-80}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal floEva(realTrue= mEva_flow_nominal) "Evaporator mass flow rate" - annotation (Placement(transformation(extent={{-180,80},{-160,100}}))); + annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); + Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear valHeaPumEva( + redeclare package Medium = Medium2, + m_flow_nominal=mEva_flow_nominal, + dpValve_nominal=6000) "Valve at heat pump evaporator" + annotation (Placement(transformation(extent={{80,-70},{60,-50}}))); + Fluid.Sensors.TemperatureTwoPort senTEvaRet( + redeclare final package Medium = Medium2, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=mEva_flow_nominal, + tau=0) + "Evaporator return temperature sensor" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={50,-120}))); + Fluid.Sensors.TemperatureTwoPort senTDisSup( + redeclare final package Medium = Medium2, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=mEva_flow_nominal, + tau=0) + "District supply temperature sensor" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={110,-60}))); + Buildings.Controls.OBC.CDL.Reals.Subtract dT_supRet + "Temperature difference over heat pump connection" + annotation (Placement(transformation(extent={{80,-20},{100,0}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant dTSet(k=dT_nominal) + "Set point for temperature difference over heat pump" + annotation (Placement(transformation(extent={{80,10},{100,30}}))); + Buildings.Controls.OBC.CDL.Reals.PIDWithReset conPI(Ti=20, xi_start=0.2) + "Controller to ensure dT_nominal over heat pump connection" + annotation (Placement(transformation(extent={{120,10},{140,30}}))); + Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = Medium2) + "Mass flow rate drawn from ETS" + annotation (Placement(transformation(extent={{160,-70},{140,-50}}))); equation - connect(uEna, floCon.u) - annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); - connect(senTHotSup.port_b, port_b1) - annotation (Line(points={{-120,60},{-200,60}}, color={0,127,255})); - connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{57,-55},{44, - -55},{44,-40},{220,-40}}, color={0,0,127})); - connect(port_a2, pumEva.port_a) - annotation (Line(points={{200,-60},{78,-60}}, color={0,127,255})); - connect(pumEva.m_flow_actual, staPum.u) annotation (Line(points={{57,-55},{44, - -55},{44,-100},{-78,-100}}, - color={0,0,127})); - connect(add3_1.y, PPum) annotation (Line(points={{161,-10},{180,-10},{180,0},{ - 220,0}}, color={0,0,127})); - connect(heaPum.port_a1, heaPumTan.port_bHea) annotation (Line(points={{-20,-48}, - {-92,-48},{-92,14},{-80,14}}, color={0,127,255})); + connect(add3_1.y, PPum) annotation (Line(points={{161,70},{172,70},{172,0},{220, + 0}}, color={0,0,127})); + connect(heaPum.port_a1, heaPumTan.port_bHea) annotation (Line(points={{-82,-54}, + {-92,-54},{-92,14},{-80,14}}, color={0,127,255})); connect(pumCon.port_b, heaPumTan.port_aHea) - annotation (Line(points={{-20,14},{-60,14}}, color={0,127,255})); - connect(heaPum.port_b1,pumCon. port_a) annotation (Line(points={{0,-48},{12,-48}, - {12,14},{0,14}}, color={0,127,255})); - connect(heaPumTan.port_bDom, senTHotSup.port_a) annotation (Line(points={{-60, - 26},{-50,26},{-50,60},{-100,60}}, color={0,127,255})); - connect(addPar.y, heaPum.TSet) annotation (Line(points={{-98,-46},{-40,-46},{ - -40,-45},{-22,-45}}, + annotation (Line(points={{-40,14},{-60,14}}, color={0,127,255})); + connect(heaPum.port_b1,pumCon. port_a) annotation (Line(points={{-62,-54},{ + -14,-54},{-14,14},{-20,14}}, + color={0,127,255})); + connect(addPar.y, heaPum.TSet) annotation (Line(points={{-98,-52},{-94,-52},{ + -94,-51},{-84,-51}}, color={0,0,127})); - connect(THotSouSet.y, heaPumTan.TDomSet) annotation (Line(points={{-158,10},{ - -140,10},{-140,20},{-81,20}}, - color={0,0,127})); - connect(addPar.u, THotSouSet.y) annotation (Line(points={{-122,-46},{-140,-46}, + connect(THotSouSet.y, heaPumTan.TDomSet) annotation (Line(points={{-158,10},{-140, + 10},{-140,20},{-81,20}}, color={0,0,127})); + connect(addPar.u, THotSouSet.y) annotation (Line(points={{-122,-52},{-140,-52}, {-140,10},{-158,10}}, color={0,0,127})); - connect(heaPum.P, PHea) annotation (Line(points={{1,-54},{30,-54},{30,40},{220, - 40}}, color={0,0,127})); - connect(pumEva.port_b, heaPum.port_a2) - annotation (Line(points={{58,-60},{0,-60}}, color={0,127,255})); - connect(heaPum.port_b2, port_b2) annotation (Line(points={{-20,-60},{-30,-60}, - {-30,-110},{180,-110},{180,60},{200,60}}, color={0,127,255})); - connect(floEva.u, uEna) annotation (Line(points={{-182,90},{-190,90},{-190, - 120},{-220,120}}, color={255,0,255})); + connect(heaPum.P, PHea) annotation (Line(points={{-61,-60},{-20,-60},{-20,-20}, + {22,-20},{22,40},{220,40}}, + color={0,0,127})); connect(floCon.y, pumCon.m_flow_in) - annotation (Line(points={{-158,120},{-10,120},{-10,26}}, color={0,0,127})); + annotation (Line(points={{-58,120},{-30,120},{-30,26}}, color={0,0,127})); connect(floEva.y, pumEva.m_flow_in) - annotation (Line(points={{-158,90},{68,90},{68,-48}}, color={0,0,127})); - connect(port_a1, heaPumTan.port_aDom) annotation (Line(points={{-200,-60},{ - -188,-60},{-188,26},{-80,26}}, color={0,127,255})); - connect(add3_1.u1, heaPumTan.PEle) annotation (Line(points={{138,-2},{130,-2}, - {130,50},{-46,50},{-46,20},{-59,20}}, color={0,0,127})); - connect(pumEva.P, add3_1.u3) annotation (Line(points={{57,-51},{50,-51},{50, - -18},{138,-18}}, color={0,0,127})); - connect(add3_1.u2, pumCon.P) annotation (Line(points={{138,-10},{122,-10},{ - 122,46},{-32,46},{-32,23},{-21,23}}, color={0,0,127})); + annotation (Line(points={{-58,90},{10,90},{10,-48}}, color={0,0,127})); + connect(port_a1, heaPumTan.port_aDom) annotation (Line(points={{-200,-60},{-188, + -60},{-188,26},{-80,26}}, color={0,127,255})); + connect(add3_1.u1, heaPumTan.PEle) annotation (Line(points={{138,78},{-46,78}, + {-46,20},{-59,20}}, color={0,0,127})); + connect(pumEva.P, add3_1.u3) annotation (Line(points={{-1,-51},{-2,-51},{-2, + -52},{-8,-52},{-8,62},{138,62}}, + color={0,0,127})); + connect(add3_1.u2, pumCon.P) annotation (Line(points={{138,70},{-44,70},{-44,23}, + {-41,23}}, color={0,0,127})); + connect(valHeaPumEva.port_2, pumEva.port_a) + annotation (Line(points={{60,-60},{20,-60}}, color={0,127,255})); + connect(heaPum.port_b2, senTEvaRet.port_a) annotation (Line(points={{-82,-66}, + {-90,-66},{-90,-120},{40,-120}}, color={0,127,255})); + connect(senTEvaRet.port_b, port_b2) annotation (Line(points={{60,-120},{180,-120}, + {180,60},{200,60}}, color={0,127,255})); + connect(senTDisSup.T, dT_supRet.u1) annotation (Line(points={{110,-49},{110, + -32},{34,-32},{34,-4},{78,-4}}, + color={0,0,127})); + connect(senTEvaRet.T, dT_supRet.u2) + annotation (Line(points={{50,-109},{50,-16},{78,-16}}, color={0,0,127})); + connect(valHeaPumEva.port_1, senTDisSup.port_b) + annotation (Line(points={{80,-60},{100,-60}}, color={0,127,255})); + connect(pumEva.port_b, heaPum.port_a2) annotation (Line(points={{0,-60},{-14, + -60},{-14,-66},{-62,-66}}, + color={0,127,255})); + connect(valHeaPumEva.port_3, senTEvaRet.port_b) annotation (Line(points={{70,-70}, + {70,-120},{60,-120}}, color={0,127,255})); + connect(conPI.u_s, dTSet.y) + annotation (Line(points={{118,20},{102,20}}, + color={0,0,127})); + connect(dT_supRet.y, conPI.u_m) + annotation (Line(points={{102,-10},{130,-10},{130,8}}, color={0,0,127})); + connect(conPI.y, valHeaPumEva.y) annotation (Line(points={{142,20},{148,20},{ + 148,-26},{70,-26},{70,-48}}, + color={0,0,127})); + connect(heaPumTan.port_bDom, port_b1) annotation (Line(points={{-60,26},{-52, + 26},{-52,60},{-200,60}}, color={0,127,255})); + connect(senTDisSup.port_a, senMasFlo.port_b) + annotation (Line(points={{120,-60},{140,-60}}, color={0,127,255})); + connect(senMasFlo.port_a, port_a2) + annotation (Line(points={{160,-60},{200,-60}}, color={0,127,255})); + connect(senMasFlo.m_flow, mEva_flow) + annotation (Line(points={{150,-49},{150,-40},{220,-40}}, color={0,0,127})); + connect(heaPumTan.charge, floCon.u) annotation (Line(points={{-58,11},{-56,11}, + {-56,12},{-54,12},{-54,0},{-100,0},{-100,120},{-82,120}}, color={255, + 0,255})); + connect(heaPumTan.charge, floEva.u) annotation (Line(points={{-58,11},{-56,11}, + {-56,12},{-54,12},{-54,0},{-100,0},{-100,90},{-82,90}}, color={255,0, + 255})); + connect(heaPumTan.charge, conPI.trigger) annotation (Line(points={{-58,11},{ + -54,11},{-54,0},{-100,0},{-100,106},{112,106},{112,0},{124,0},{124,8}}, + color={255,0,255})); annotation ( defaultComponentName="heaPum", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-60,60},{60,-60}}, - lineColor={27,0,55}, - fillColor={170,213,255}, - fillPattern=FillPattern.Solid), Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{-58,62},{62,-58}}, - lineColor={27,0,55}, - fillColor={170,213,255}, + extent={{-12,0},{60,-78}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{2,-60},{48,-68}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{8,-38},{4,-46},{12,-46},{8,-38}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{8,-38},{4,-30},{12,-30},{8,-38}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{38,-20},{42,-60}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,-32},{50,-50}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{40,-32},{32,-44},{50,-44},{40,-32}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{6,-46},{10,-60}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{6,-20},{10,-30}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{0,-12},{46,-20}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-74,52},{-60,28}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-68,68},{-66,52}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-1.5,9.5},{1.5,-9.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={-57.5,66.5}, + rotation=90), + Rectangle( + extent={{-68,28},{-66,18}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-1.5,9.5},{1.5,-9.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={-57.5,18.5}, + rotation=90), + Rectangle( + extent={{-1.5,5.5},{1.5,-5.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={-11.5,18.5}, + rotation=90), + Rectangle( + extent={{-1.5,34.5},{1.5,-34.5}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + origin={17.5,66.5}, + rotation=90), + Rectangle( + extent={{-48,70},{-16,14}}, + pattern=LinePattern.None, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-48,70},{-16,42}}, + pattern=LinePattern.None, + fillColor={238,46,47}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-6,20},{-4,0}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{52,68},{50,0}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={175,175,175}, fillPattern=FillPattern.Solid)}), Diagram( coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), Documentation(info=" @@ -244,6 +410,8 @@ The heat pump model with storage tank is described in Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank. By default a variable speed evaporator pump is considered. +
        +fixme: Update documentation. Do we indeed need a constant flow rate option?
        A constant speed pump may also be represented by setting have_varFloEva to false.

        diff --git a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo index 7989b1a1551..af3db333da4 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/BuildingTimeSeriesWithETSWithDHWTank.mo @@ -12,7 +12,7 @@ model BuildingTimeSeriesWithETSWithDHWTank datWatHea=datWatHea)); parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea "Performance data" - annotation (Placement(transformation(extent={{-246,244},{-234,256}}))); + annotation (Placement(transformation(extent={{-250,232},{-230,252}}))); annotation (Documentation(info="

        This model is the same as diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 10550fb5056..052f6794786 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -32,7 +32,7 @@ model BuildingTimeSeriesWithETSDHWTank THotWatSup_nominal=322.15, filNam= "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", - datWatHea=datWatHea) + datWatHea=datWatHea) "Building load with time series data" annotation (Placement(transformation(extent={{40,-20},{60,0}}))); Controls.OBC.CDL.Reals.Sources.Constant TColWat(k=bui.ets.TColWat_nominal) @@ -50,15 +50,9 @@ model BuildingTimeSeriesWithETSDHWTank Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) "Heating water supply temperature set point - Minimum value" annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); - parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea( - mHex_flow_nominal=datWatHea.QCon_flow_nominal/4200/datWatHea.dTCon_nominal* - 4, - QCon_flow_max=datWatHea.QCon_flow_nominal, - QCon_flow_nominal=bui.QHot_flow_nominal, - TTan_nominal=(bui.ets.TColWat_nominal + datWatHea.THex_nominal)/2, - dTCon_nominal=datWatHea.THex_nominal - bui.ets.TColWat_nominal) + parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea(VTan=0.3) "Performance data" - annotation (Placement(transformation(extent={{44,-38},{56,-26}}))); + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); equation connect(supAmbWat.ports[1], senMasFlo.port_a) From 74ef8176a83a59abdcf9ee45ceeb4fc8e1bbf383 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Thu, 19 Oct 2023 06:55:28 -0700 Subject: [PATCH 120/183] Revised hot water load models [ci skip] --- .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 5 ++++- .../DHC/Loads/HotWater/ThermostaticMixingValve.mo | 10 +++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo index d8169609d34..a0046286c80 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo @@ -266,5 +266,8 @@ Initial Implementation. lineThickness=0.5, fillColor={0,0,0}, fillPattern=FillPattern.CrossDiag)}), Diagram( - coordinateSystem(preserveAspectRatio=false))); + coordinateSystem(preserveAspectRatio=false), graphics={Text( + extent={{-116,94},{-24,84}}, + textColor={238,46,47}, + textString="fixme: to be deleted")})); end HeatPumpWithTank; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo index b0f645301fd..e642d818a79 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/ThermostaticMixingValve.mo @@ -78,7 +78,7 @@ model ThermostaticMixingValve final Ti=Ti, final Td=Td, yMax=1, - yMin=0) annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + yMin=0) annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Controls.OBC.CDL.Reals.Divide ratEne "Ratio of actual over required energy (must be near 1 if load is satisfied)" @@ -196,18 +196,18 @@ equation annotation (Line(points={{-40,-40},{-60,-40}}, color={0,127,255})); connect(floSouHot.port_b, senTMix.port_a) annotation (Line(points={{-20,-40}, {-14,-40},{-14,-60},{0,-60}}, color={0,127,255})); - connect(conPID.u_s, TMixSet) annotation (Line(points={{-42,0},{-88,0},{-88,20}, + connect(conPID.u_s, TMixSet) annotation (Line(points={{-22,0},{-88,0},{-88,20}, {-110,20}}, color={0,0,127})); connect(senTMix.T, conPID.u_m) annotation (Line(points={{10,-49},{10,-20},{ - -30,-20},{-30,-12}}, color={0,0,127})); + -10,-20},{-10,-12}}, color={0,0,127})); connect(sinMMix.m_flow_in, gaiMMix_sign.y) annotation (Line(points={{62,-52}, {80,-52},{80,-10},{62,-10}}, color={0,0,127})); connect(mulMHot_flow.y, floSouHot.m_flow_in) annotation (Line(points={{62,20}, {90,20},{90,-28},{-36,-28},{-36,-32}}, color={0,0,127})); connect(gaiMMix_flow.y, mulMHot_flow.u1) annotation (Line(points={{-58,30},{26, 30},{26,26},{38,26}}, color={0,0,127})); - connect(conPID.y, mulMHot_flow.u2) annotation (Line(points={{-18,0},{30,0},{ - 30,14},{38,14}}, color={0,0,127})); + connect(conPID.y, mulMHot_flow.u2) annotation (Line(points={{2,0},{30,0},{30, + 14},{38,14}}, color={0,0,127})); connect(gaiMMix_flow.y, gaiMMix_sign.u) annotation (Line(points={{-58,30},{26, 30},{26,-10},{38,-10}}, color={0,0,127})); connect(senTCol.port_b, senTMix.port_a) annotation (Line(points={{-60,-80},{ From 6063786ee000715578832bcd622e27a77322ee1e Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Thu, 19 Oct 2023 07:01:17 -0700 Subject: [PATCH 121/183] Revised hot water load models [ci skip] --- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index b09ac226cea..34c9864ec6f 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -309,5 +309,9 @@ This is for lineColor={0,0,255}, pattern=LinePattern.None, fillColor={175,175,175}, - fillPattern=FillPattern.Solid)})); + fillPattern=FillPattern.Solid)}), + Diagram(graphics={Text( + extent={{-22,112},{18,100}}, + textColor={238,46,47}, + textString="fixme: are these blocks needed?")})); end HeatPumpHeatExchangerDHWTank; From cd6c82f530c4c406b71be7e93cff482363012f19 Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 27 Oct 2023 13:36:37 -0700 Subject: [PATCH 122/183] Add stop charging when bottom tank temp above set point --- .../BaseClasses/TankChargingController.mo | 56 ++++++++++++++----- .../StorageTankWithExternalHeatExchanger.mo | 7 ++- 2 files changed, 46 insertions(+), 17 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo index 7f4ab14f496..ce70219c460 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo @@ -4,20 +4,26 @@ block TankChargingController Controls.OBC.CDL.Interfaces.RealInput TTanTop( final unit="K", - displayUnit="degC") - "Measured temperature at top of tank" annotation (Placement(transformation( - extent={{-140,-60},{-100,-20}}), iconTransformation(extent={{-140,-80}, - {-100,-40}}))); + displayUnit="degC") "Measured temperature at top of tank" + annotation (Placement(transformation( + extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20}, + {-100,20}}))); Modelica.Blocks.Interfaces.RealInput TTanTopSet( final unit="K", displayUnit="degC") "Temperature setpoint for top section of hot water tank" annotation ( - Placement(transformation(extent={{-140,20},{-100,60}}), - iconTransformation(extent={{-120,50},{-100,70}}))); + Placement(transformation(extent={{-140,50},{-100,90}}), + iconTransformation(extent={{-120,70},{-100,90}}))); Controls.OBC.CDL.Interfaces.BooleanOutput charge "Outputs true if tank should be charged" annotation (Placement( transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20}, {140,20}}))); + Controls.OBC.CDL.Interfaces.RealInput TTanBot(final unit="K", displayUnit= + "degC") "Measured temperature at bottom of tank" annotation (Placement( + transformation(extent={{-140,-120},{-100,-80}}), iconTransformation( + extent={{-140,-100},{-100,-60}}))); + Controls.OBC.CDL.Logical.Or or2 + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); protected Controls.OBC.CDL.Reals.Hysteresis cha(uLow=-5, uHigh=0) "Outputs true if tank should be charged" @@ -25,15 +31,31 @@ protected Controls.OBC.CDL.Reals.Subtract sub annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); +protected + Controls.OBC.CDL.Reals.Hysteresis cha1(uLow=-5, uHigh=0) + "Outputs true if tank should be charged" + annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + Controls.OBC.CDL.Reals.Subtract sub1 + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); equation - connect(sub.u2, TTanTop) annotation (Line(points={{-42,-6},{-60,-6},{-60,-40}, - {-120,-40}}, color={0,0,127})); - connect(sub.u1, TTanTopSet) annotation (Line(points={{-42,6},{-60,6},{-60,40}, - {-120,40}}, color={0,0,127})); + connect(sub.u2, TTanTop) annotation (Line(points={{-42,-6},{-80,-6},{-80,0},{ + -120,0}}, color={0,0,127})); + connect(sub.u1, TTanTopSet) annotation (Line(points={{-42,6},{-80,6},{-80,70}, + {-120,70}}, color={0,0,127})); connect(sub.y, cha.u) annotation (Line(points={{-18,0},{18,0}}, color={0,0,127})); - connect(cha.y, charge) - annotation (Line(points={{42,0},{120,0}}, color={255,0,255})); + connect(sub1.y, cha1.u) + annotation (Line(points={{-18,-60},{18,-60}}, color={0,0,127})); + connect(TTanTopSet, sub1.u1) annotation (Line(points={{-120,70},{-80,70},{-80, + 6},{-50,6},{-50,-54},{-42,-54}}, color={0,0,127})); + connect(TTanBot, sub1.u2) annotation (Line(points={{-120,-100},{-80,-100},{ + -80,-66},{-42,-66}}, color={0,0,127})); + connect(or2.y, charge) + annotation (Line(points={{82,0},{120,0}}, color={255,0,255})); + connect(cha.y, or2.u1) + annotation (Line(points={{42,0},{58,0}}, color={255,0,255})); + connect(or2.u2, cha1.y) annotation (Line(points={{58,-8},{50,-8},{50,-60},{42, + -60}}, color={255,0,255})); annotation ( defaultComponentName="tanCha", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -47,17 +69,21 @@ equation extent={{-150,110},{150,150}}, textString="%name"), Text( - extent={{-94,78},{-44,42}}, + extent={{-96,98},{-46,62}}, textColor={0,0,127}, textString="TTanTopSet"), Text( - extent={{-94,-42},{-44,-78}}, + extent={{-96,18},{-46,-18}}, textColor={0,0,127}, textString="TTanTop"), Text( extent={{42,20},{92,-16}}, textColor={0,0,127}, - textString="charge")}), + textString="charge"), + Text( + extent={{-96,-62},{-46,-98}}, + textColor={0,0,127}, + textString="TTanBot")}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo index dfe47fc6f31..01ebdd462ba 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo @@ -148,7 +148,7 @@ equation 80},{-88,-6},{-81,-6}}, color={0,0,127})); connect(conPum.TDomSet, TDomSet) annotation (Line(points={{-81,0},{-92,0},{-92, 0},{-110,0}}, color={0,0,127})); - connect(conCha.TTanTop, TTanTop.T) annotation (Line(points={{70,-86},{66,-86}, + connect(conCha.TTanTop, TTanTop.T) annotation (Line(points={{70,-80},{66,-80}, {66,10},{61,10}}, color={0,0,127})); connect(conCha.charge, charge) annotation (Line(points={{94,-80},{120,-80}}, color={255,0,255})); @@ -174,7 +174,8 @@ equation connect(TTanBot.port, tan.heaPorVol[dat.nSeg]) annotation (Line(points={{40,-20}, {22,-20},{22,-8},{20,-8}}, color={191,0,0})); connect(conCha.TTanTopSet, dTHexApp.y) - annotation (Line(points={{71,-74},{56,-74}}, color={0,0,127})); + annotation (Line(points={{71,-72},{64,-72},{64,-74},{56,-74}}, + color={0,0,127})); connect(dTHexApp.u, TDomSet) annotation (Line(points={{32,-74},{26,-74},{26, -96},{-90,-96},{-90,0},{-110,0}}, color={0,0,127})); connect(divVal.port_3, tan.fluPorVol[dat.nSeg]) annotation (Line(points={{20,-40}, @@ -183,6 +184,8 @@ equation -26},{-80,-60},{-100,-60}}, color={0,127,255})); connect(pumHex.port_b, senTemRet.port_a) annotation (Line(points={{-40,-10},{-40, -50},{-20,-50}}, color={0,127,255})); + connect(TTanBot.T, conCha.TTanBot) annotation (Line(points={{61,-20},{62,-20}, + {62,-88},{70,-88}}, color={0,0,127})); annotation ( defaultComponentName="domHotWatTan", Documentation(info=" From 656593c790ded2e92af91e1e3bc1d877e497ad2e Mon Sep 17 00:00:00 2001 From: David Blum Date: Mon, 30 Oct 2023 11:22:56 -0700 Subject: [PATCH 123/183] Add new schedule data and fix parameterization --- .../StorageTankWithExternalHeatExchanger.mo | 20 +++++++++----- .../Loads/HotWater/DHW_ApartmentMidRise.mos | 26 +++++++++++++++++++ 2 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index 5d206bd4738..a9c82dc5e93 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -4,18 +4,22 @@ model StorageTankWithExternalHeatExchanger extends Modelica.Icons.Example; package Medium = Buildings.Media.Water "Medium model"; - + parameter Modelica.Units.SI.Temperature THotSet=273.15 + 40 + "Temperature setpoint of hot water supply"; + parameter Modelica.Units.SI.Temperature TMixSet=273.15 + 35 + "Temperature setpoint of hot water supply to fixture"; + parameter Modelica.Units.SI.Temperature TCol = 273.15+10 "Temperature of domestic cold water supply"; parameter Data.GenericDomesticHotWaterWithHeatExchanger - datWatHea( - VTan=0.3, mDom_flow_nominal=0.333) + datWatHea(VTan=0.1892706, mDom_flow_nominal=6.52944E-06*1000) "Data for heat pump water heater with tank" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Modelica.Blocks.Sources.CombiTimeTable sch( tableOnFile=true, tableName="tab1", - fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Heating/DHW/DHW_SingleApartment.mos"), - smoothness=Modelica.Blocks.Types.Smoothness.LinearSegments, + fileName=Modelica.Utilities.Files.loadResource( + "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fixture draw fraction schedule" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); @@ -41,7 +45,8 @@ model StorageTankWithExternalHeatExchanger use_m_flow_in=true, nPorts=1, redeclare package Medium = Medium, - T(displayUnit="degC") = datWatHea.TMix_nominal + datWatHea.dTHexApp_nominal) + T(displayUnit="degC") = datWatHea.TMix_nominal + datWatHea.dTHexApp_nominal + + 1) "Source for heating water" annotation ( Placement(transformation( @@ -61,7 +66,7 @@ model StorageTankWithExternalHeatExchanger ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, mMix_flow_nominal=1.2*datWatHea.mDom_flow_nominal) annotation (Placement(transformation(extent={{40,60},{60,80}}))); - Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue=0.1*datWatHea.QHex_flow_nominal + Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue=datWatHea.QHex_flow_nominal /4200/(55 - 50)) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); Modelica.Blocks.Sources.Constant conTSetHot1(k( @@ -112,6 +117,7 @@ First implementation. "), experiment( StopTime=8640000, + Interval=30, Tolerance=1e-06, __Dymola_Algorithm="Cvode")); end StorageTankWithExternalHeatExchanger; diff --git a/Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos b/Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos new file mode 100644 index 00000000000..2342da56480 --- /dev/null +++ b/Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos @@ -0,0 +1,26 @@ +#1 +double tab1(24,2) # comment line +0,0.08 +3600,0.04 +7200,0.01 +10800,0.01 +14400,0.04 +18000,0.27 +21600,0.94 +25200,1.00 +28800,0.96 +32400,0.84 +36000,0.76 +39600,0.61 +43200,0.53 +46800,0.47 +50400,0.41 +54000,0.47 +57600,0.55 +61200,0.73 +64800,0.86 +68400,0.82 +72000,0.75 +75600,0.61 +79200,0.53 +82800,0.29 From 0484ea5a923fd43e9db1bbc32d812fc65db5fb72 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 31 Oct 2023 13:41:14 -0700 Subject: [PATCH 124/183] Add validation model, fix structural singularity, and tune PI control --- .../Combined/Subsystems/HeatPumpDHWTank.mo | 22 +-- .../Subsystems/Validation/HeatPumpDHWTank.mo | 132 ++++++++++++++++++ .../Subsystems/Validation/package.order | 1 + 3 files changed, 147 insertions(+), 8 deletions(-) create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index ec27ac7b706..d4d5685beb1 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -16,9 +16,6 @@ model HeatPumpDHWTank parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea "Performance data" annotation (Placement(transformation(extent={{140,100},{160,120}}))); -// parameter Boolean have_varFloEva = true -// "Set to true for a variable evaporator flow. Fixme: false does not make sense here." -// annotation(Evaluate=true); parameter Real COP_nominal(final unit="1") "Heat pump COP" annotation (Dialog(group="Nominal condition")); @@ -149,10 +146,6 @@ model HeatPumpDHWTank annotation (Placement(transformation(extent={{-180,0},{-160,20}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(p=datWatHea.dTHexApp_nominal) annotation (Placement(transformation(extent={{-120,-62},{-100,-42}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput QCon_flow(final unit="kg/s") - "Actual heat pump heating heat flow rate added to fluid" annotation ( - Placement(transformation(extent={{200,-120},{240,-80}}), - iconTransformation(extent={{100,-120},{140,-80}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal floEva(realTrue= mEva_flow_nominal) "Evaporator mass flow rate" annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); @@ -185,12 +178,23 @@ model HeatPumpDHWTank Buildings.Controls.OBC.CDL.Reals.Sources.Constant dTSet(k=dT_nominal) "Set point for temperature difference over heat pump" annotation (Placement(transformation(extent={{80,10},{100,30}}))); - Buildings.Controls.OBC.CDL.Reals.PIDWithReset conPI(Ti=20, xi_start=0.2) + Buildings.Controls.OBC.CDL.Reals.PIDWithReset conPI( + k=0.1, + Ti=120, xi_start=0.2, + reverseActing=false) "Controller to ensure dT_nominal over heat pump connection" annotation (Placement(transformation(extent={{120,10},{140,30}}))); Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = Medium2) "Mass flow rate drawn from ETS" annotation (Placement(transformation(extent={{160,-70},{140,-50}}))); + Fluid.Sources.Boundary_pT preRef( + redeclare package Medium = Medium2, + p(displayUnit="bar"), + nPorts=1) "Reference pressure for loop" annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={-60,-20}))); equation connect(add3_1.y, PPum) annotation (Line(points={{161,70},{172,70},{172,0},{220, 0}}, color={0,0,127})); @@ -268,6 +272,8 @@ equation connect(heaPumTan.charge, conPI.trigger) annotation (Line(points={{-58,11},{ -54,11},{-54,0},{-100,0},{-100,106},{112,106},{112,0},{124,0},{124,8}}, color={255,0,255})); + connect(preRef.ports[1], heaPumTan.port_bHea) annotation (Line(points={{-70,-20}, + {-92,-20},{-92,14},{-80,14}}, color={0,127,255})); annotation ( defaultComponentName="heaPum", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo new file mode 100644 index 00000000000..ed3582cf0e5 --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo @@ -0,0 +1,132 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.Validation; +model HeatPumpDHWTank + "Validation of the base subsystem model with domestic hot water tank and heat pump" + extends Modelica.Icons.Example; + package Medium=Buildings.Media.Water + "Medium model"; + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPumpDHWTank + heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + datWatHea=datWatHea, + COP_nominal=2.3, + TCon_nominal=datWatHea.TMix_nominal + datWatHea.dTHexApp_nominal + 1, + TEva_nominal(displayUnit="K") = 273.15 + 15 - 5, + QHotWat_flow_nominal=datWatHea.QHex_flow_nominal, + dp1_nominal=6000, + dp2_nominal=6000) + annotation (Placement(transformation(extent={{-10,-12},{10,8}}))); + Fluid.Sources.Boundary_pT supAmbWat( + redeclare package Medium = Medium, + p(displayUnit="bar"), + use_T_in=true, + T=280.15, + nPorts=1) "Ambient water supply" + annotation (Placement(transformation(extent={{10,-10},{-10,10}},rotation=0,origin={60,-60}))); + Fluid.Sources.Boundary_pT sinAmbWat( + redeclare package Medium = Medium, + p(displayUnit="bar"), + nPorts=1) "Sink for ambient water" + annotation (Placement(transformation(extent={{10,-10},{-10,10}},rotation=0,origin={60,10}))); + Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = + Medium) + "Mass flow rate sensor" + annotation (Placement(transformation(extent={{40,-70},{20,-50}}))); + Modelica.Blocks.Sources.Constant TDisSup(k( + unit="K", + displayUnit="degC") = 288.15) + "District supply temperature" + annotation (Placement(transformation(extent={{100,-60},{80,-40}}))); + Fluid.Sources.Boundary_pT souDCW( + redeclare final package Medium = Medium, + T=283.15, + nPorts=1) "Source for domestic cold water" + annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=180, + origin={-70,-30}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction dcwSpl( + redeclare final package Medium = Medium, final m_flow_nominal=6000*{1,-1, + -1}) "Splitter for domestic cold water" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-32,-10}))); + Modelica.Blocks.Sources.CombiTimeTable sch( + tableOnFile=true, + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) + "Domestic hot water fixture draw fraction schedule" + annotation (Placement(transformation(extent={{-120,60},{-100,80}}))); + + Modelica.Blocks.Sources.Constant conTSetMix(k( + final unit="K", + displayUnit="degC") = 308.15) + "Temperature setpoint for mixed water supply to fixture" + annotation (Placement(transformation(extent={{-120,20},{-100,40}}))); + Modelica.Blocks.Sources.BooleanConstant booCon "Always on" + annotation (Placement(transformation(extent={{-120,-20},{-100,0}}))); + Loads.HotWater.ThermostaticMixingValve + theMixVal(redeclare package Medium = Medium, + mMix_flow_nominal=1.2*datWatHea.mDom_flow_nominal) + annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); + parameter Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger + datWatHea(VTan=0.1892706, mDom_flow_nominal=6.52944E-06*1000) + "Data for heat pump water heater with tank" + annotation (Placement(transformation(extent={{-10,22},{10,42}}))); +equation + connect(TDisSup.y,supAmbWat. T_in) + annotation (Line(points={{79,-50},{76,-50},{76,-56},{72,-56}}, + color={0,0,127})); + connect(supAmbWat.ports[1], senMasFlo.port_a) + annotation (Line(points={{50,-60},{40,-60}}, color={0,127,255})); + connect(senMasFlo.port_b, heaPum.port_a2) annotation (Line(points={{20,-60},{16, + -60},{16,-8},{10,-8}}, color={0,127,255})); + connect(sinAmbWat.ports[1], heaPum.port_b2) annotation (Line(points={{50,10},{ + 22,10},{22,4},{10,4}}, color={0,127,255})); + connect(dcwSpl.port_1, souDCW.ports[1]) annotation (Line(points={{-32,-20},{-32, + -30},{-60,-30}}, color={0,127,255})); + connect(dcwSpl.port_3, heaPum.port_a1) + annotation (Line(points={{-22,-10},{-22,-8},{-10,-8}}, color={0,127,255})); + connect(booCon.y, heaPum.uEna) annotation (Line(points={{-99,-10},{-80,-10},{-80, + 7},{-12,7}}, color={255,0,255})); + connect(sch.y[1], theMixVal.yMixSet) annotation (Line(points={{-99,70},{-80,70}, + {-80,78},{-61,78}}, color={0,0,127})); + connect(conTSetMix.y, theMixVal.TMixSet) annotation (Line(points={{-99,30},{-76, + 30},{-76,72},{-61,72}}, color={0,0,127})); + connect(dcwSpl.port_2, theMixVal.port_col) annotation (Line(points={{-32,0},{-32, + 38},{-68,38},{-68,62},{-60,62}}, color={0,127,255})); + connect(theMixVal.port_hot, heaPum.port_b1) annotation (Line(points={{-60,66}, + {-72,66},{-72,4},{-10,4}}, color={0,127,255})); + annotation ( + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-120,-100},{100,100}})), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mos" "Simulate and plot"), + experiment( + StopTime=86400, + Interval=30, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + Documentation( + revisions=" +

          +
        • +October 31, 2020, by David Blum:
          +First implementation. +
        • +
        +", + info=" +

        +This model validates + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPumpDHWTank. +

        +")); +end HeatPumpDHWTank; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order index df0f4bfb1f2..8d5204b563e 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order @@ -1,5 +1,6 @@ Borefield Chiller HeatExchanger +HeatPumpDHWTank SwitchBox WatersideEconomizer From e55426157ba98a6e0b5a9caa4dc5a4b93a46c792 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 31 Oct 2023 13:43:25 -0700 Subject: [PATCH 125/183] Remove uEna as not needed --- .../Combined/Subsystems/HeatPumpDHWTank.mo | 5 ----- .../Combined/Subsystems/Validation/HeatPumpDHWTank.mo | 4 ---- 2 files changed, 9 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo index d4d5685beb1..abd8c76bc90 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpDHWTank.mo @@ -50,11 +50,6 @@ model HeatPumpDHWTank "Pressure difference over evaporator" annotation (Dialog(group="Nominal condition")); // IO CONNECTORS - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna - "Enable signal" - annotation ( - Placement(transformation(extent={{-240,100},{-200,140}}), - iconTransformation(extent={{-140,70},{-100,110}}))); Modelica.Fluid.Interfaces.FluidPort_a port_a2( redeclare final package Medium = Medium2, m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo index ed3582cf0e5..d87a0cb459b 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mo @@ -67,8 +67,6 @@ model HeatPumpDHWTank displayUnit="degC") = 308.15) "Temperature setpoint for mixed water supply to fixture" annotation (Placement(transformation(extent={{-120,20},{-100,40}}))); - Modelica.Blocks.Sources.BooleanConstant booCon "Always on" - annotation (Placement(transformation(extent={{-120,-20},{-100,0}}))); Loads.HotWater.ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, mMix_flow_nominal=1.2*datWatHea.mDom_flow_nominal) @@ -91,8 +89,6 @@ equation -30},{-60,-30}}, color={0,127,255})); connect(dcwSpl.port_3, heaPum.port_a1) annotation (Line(points={{-22,-10},{-22,-8},{-10,-8}}, color={0,127,255})); - connect(booCon.y, heaPum.uEna) annotation (Line(points={{-99,-10},{-80,-10},{-80, - 7},{-12,7}}, color={255,0,255})); connect(sch.y[1], theMixVal.yMixSet) annotation (Line(points={{-99,70},{-80,70}, {-80,78},{-61,78}}, color={0,0,127})); connect(conTSetMix.y, theMixVal.TMixSet) annotation (Line(points={{-99,30},{-76, From 900efdbe2dfea7c4a0abfe460b05b93a5108bccc Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 31 Oct 2023 14:03:38 -0700 Subject: [PATCH 126/183] BuildingTimeSeriesWithDHW example simulates --- .../BaseClasses/PartialHeatPumpHeatExchanger.mo | 17 ++--------------- .../Combined/HeatPumpHeatExchanger.mo | 6 +++++- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 12 +----------- .../BuildingTimeSeriesWithETSDHWTank.mo | 5 +++-- 4 files changed, 11 insertions(+), 29 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index af275eba533..33bc23d41a0 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -353,8 +353,8 @@ model PartialHeatPumpHeatExchanger extent={{-10,-10},{10,10}}, rotation=0, origin={40,-120}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = - MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium + = MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW( @@ -373,10 +373,6 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Reals.MultiSum PHeaTot(nin=2) "Total power used for heating and hot water production" annotation (Placement(transformation(extent={{270,70},{290,90}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract - heaFloEvaSHW if have_hotWat and have_varFloEva - "Heat flow rate at evaporator" - annotation (Placement(transformation(extent={{-100,90},{-80,110}}))); Buildings.Controls.OBC.CDL.Reals.Subtract dTHHW "Heating hot water DeltaT" annotation (Placement(transformation(extent={{0,310},{-20,330}}))); @@ -386,13 +382,6 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva "Heat flow rate at evaporator" annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaSHW( - final Q_flow_nominal=-QHotWat_flow_nominal*(1 - 1/COPHotWat_nominal), - final dT_nominal=-dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpSer_default) if have_hotWat and have_varFloEva - "Mass flow rate control" - annotation (Placement(transformation(extent={{-60,90},{-40,110}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloConHHW( final Q_flow_nominal=QHeaWat_flow_nominal, final dT_nominal=dT_nominal, @@ -551,8 +540,6 @@ equation 280},{-70,274},{-62,274}}, color={0,0,127})); connect(priOve.y, proHeaWat.m1_flow) annotation (Line(points={{-38,280},{-24,280}, {-24,214},{-12,214}}, color={0,0,127})); - connect(heaFloEvaSHW.y, conFloEvaSHW.loa) - annotation (Line(points={{-78,100},{-62,100}}, color={0,0,127})); connect(heaFloEvaHHW.y, conFloEvaHHW.loa) annotation (Line(points={{-78,240},{-62,240}}, color={0,0,127})); connect(capFloHHW.y, loaHHW.u2) annotation (Line(points={{-198,320},{-180,320}, diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 6052151e263..7ab40c9e7e6 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -175,5 +175,9 @@ This is for issue 1097.
      -")); +"), Diagram(graphics={ + Text( + extent={{-74,104},{-34,92}}, + textColor={238,46,47}, + textString="fixme: are these blocks needed?")})); end HeatPumpHeatExchanger; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 34c9864ec6f..54975358c2d 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -50,8 +50,6 @@ model HeatPumpHeatExchangerDHWTank annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); equation - connect(enaSHW.y, proHotWat.uEna) annotation (Line(points={{-118,80},{-114,80}, - {-114,43},{30,43}}, color={255,0,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) annotation (Line(points={{52,40},{260,40},{260,-360}}, color={0,127,255})); connect(proHotWat.PHea, PHeaTot.u[2]) annotation (Line(points={{54,37},{66,37}, @@ -77,10 +75,6 @@ equation {-12,52.2},{-20,52.2}}, color={0,127,255})); connect(proHotWat.port_b1, theMixVal.port_hot) annotation (Line(points={{32,40}, {0,40},{0,56.6},{-20,56.6}}, color={0,127,255})); - connect(proHotWat.QCon_flow, heaFloEvaSHW.u1) annotation (Line(points={{54,24}, - {68,24},{68,120},{-108,120},{-108,106},{-102,106}}, color={0,0,127})); - connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{54,37},{60, - 37},{60,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); connect(souDCW.T_in, TColWat) annotation (Line(points={{-64,-60},{-156,-60},{ -156,-80},{-320,-80}}, color={0,0,127})); connect(THotWatSupSet, theMixVal.TMixSet) annotation (Line(points={{-320,-40}, @@ -309,9 +303,5 @@ This is for lineColor={0,0,255}, pattern=LinePattern.None, fillColor={175,175,175}, - fillPattern=FillPattern.Solid)}), - Diagram(graphics={Text( - extent={{-22,112},{18,100}}, - textColor={238,46,47}, - textString="fixme: are these blocks needed?")})); + fillPattern=FillPattern.Solid)})); end HeatPumpHeatExchangerDHWTank; diff --git a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo index 052f6794786..92f94f3490b 100644 --- a/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo +++ b/Buildings/Experimental/DHC/Loads/Combined/Examples/BuildingTimeSeriesWithETSDHWTank.mo @@ -29,7 +29,7 @@ model BuildingTimeSeriesWithETSDHWTank redeclare package MediumBui = Medium, bui(facMul=10), allowFlowReversalSer=true, - THotWatSup_nominal=322.15, + THotWatSup_nominal=313.15, filNam= "modelica://Buildings/Resources/Data/Experimental/DHC/Loads/Examples/SwissOffice_20190916.mos", datWatHea=datWatHea) "Building load with time series data" @@ -50,7 +50,8 @@ model BuildingTimeSeriesWithETSDHWTank Controls.OBC.CDL.Reals.Sources.Constant THeaWatSupMinSet(each k=28 + 273.15) "Heating water supply temperature set point - Minimum value" annotation (Placement(transformation(extent={{-90,70},{-70,90}}))); - parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea(VTan=0.3) + parameter HotWater.Data.GenericDomesticHotWaterWithHeatExchanger datWatHea(VTan=0.3, + mDom_flow_nominal=0.03) "Performance data" annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); From f1d5ef299d55d55188eb0ed1d86b6b097f492490 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 1 Nov 2023 12:40:43 -0700 Subject: [PATCH 127/183] Create heat pump base class, update space heating heat pump and direct dhw heat pump in ETS --- .../PartialHeatPumpHeatExchanger.mo | 44 +-- .../Combined/Controls/SwitchBox.mo | 2 +- .../Combined/HeatPumpHeatExchanger.mo | 27 +- .../Combined/HeatPumpHeatExchangerDHWTank.mo | 3 +- .../Subsystems/BaseClasses/HeatPump.mo | 315 ++++++++++++++++++ .../Subsystems/BaseClasses/package.mo | 4 + .../Subsystems/BaseClasses/package.order | 1 + .../Combined/Subsystems/HeatPumpExtended.mo | 112 +++++++ .../Combined/Subsystems/Validation/Chiller.mo | 8 +- .../Subsystems/Validation/HeatExchanger.mo | 31 +- .../Subsystems/Validation/HeatPump.mo | 128 +++++++ .../Subsystems/Validation/HeatPump.mos | 10 + .../Subsystems/Validation/SwitchBox.mo | 12 +- .../Validation/WatersideEconomizer.mo | 16 +- .../Subsystems/Validation/package.order | 1 + .../Combined/Subsystems/package.order | 2 + .../Subsystems/Validation/HeatPump.mos | 11 + 17 files changed, 639 insertions(+), 88 deletions(-) create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.mo create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index 33bc23d41a0..646bebee0f1 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -69,7 +69,7 @@ model PartialHeatPumpHeatExchanger "Evaporator water mass flow rate of heat pump for hot water production" annotation (Dialog(group="Nominal condition", enable=have_hotWat)); final parameter Modelica.Units.SI.MassFlowRate mSerWat_flow_nominal(min=0)= - max(proHeaWat.m2_flow_nominal + mEvaHotWat_flow_nominal, hexChi.m1_flow_nominal) + max(proHeaWat.mCon_flow_nominal + mEvaHotWat_flow_nominal, hexChi.m1_flow_nominal) "Service water mass flow rate" annotation (Dialog(group="Nominal condition")); constant Modelica.Units.SI.SpecificHeatCapacity cpBui_default= @@ -211,7 +211,7 @@ model PartialHeatPumpHeatExchanger annotation (Placement(transformation(extent={{10,-324},{-10,-344}}))); Buildings.Fluid.Delays.DelayFirstOrder volHeaWatRet( redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal, + final m_flow_nominal=proHeaWat.mCon_flow_nominal, tau=60, final energyDynamics=mixingVolumeEnergyDynamics, T_start=THeaWatSup_nominal, @@ -296,16 +296,15 @@ model PartialHeatPumpHeatExchanger final m_flow_nominal=mSerWat_flow_nominal) "Flow switch box" annotation (Placement(transformation(extent={{-10,-390},{10,-370}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatSup( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal + redeclare final package Medium = MediumBui, final m_flow_nominal=proHeaWat.mCon_flow_nominal *{1,-1,-1}) "Bypass heating water (supply)" annotation (Placement( transformation( extent={{-10,-10},{10,10}}, rotation=0, origin={100,260}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction bypHeaWatRet( - redeclare final package Medium = MediumBui, - final m_flow_nominal=proHeaWat.m1_flow_nominal*{1,-1,1}) + redeclare final package Medium = MediumBui, final m_flow_nominal=proHeaWat.mCon_flow_nominal + *{1,-1,1}) "Bypass heating water (return)" annotation (Placement( transformation( @@ -315,19 +314,17 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaHea( trueHoldDuration=15*60) "Enable heating" annotation (Placement(transformation(extent={{-140,150},{-120,170}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump proHeaWat( + Subsystems.HeatPumpExtended proHeaWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, + dT_nominal=dT_nominal, final have_varFloCon=have_varFloCon, - final have_varFloEva=have_varFloEva, final COP_nominal=COPHeaWat_nominal, final TCon_nominal=THeaWatSup_nominal, final TEva_nominal=TDisWatMin-dT_nominal, final Q1_flow_nominal=QHeaWat_flow_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, - final dT1_nominal=dT_nominal, - final dT2_nominal=-dT_nominal, final dp1_nominal=dp_nominal, final dp2_nominal=dp_nominal) "Subsystem for heating water production" annotation (Placement(transformation(extent={{-10,204},{10,224}}))); @@ -353,8 +350,8 @@ model PartialHeatPumpHeatExchanger extent={{-10,-10},{10,10}}, rotation=0, origin={40,-120}))); - Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium - = MediumBui, final allowFlowReversal=allowFlowReversalBui) + Fluid.Sensors.MassFlowRate senMasFloHeaWatPri(redeclare final package Medium = + MediumBui, final allowFlowReversal=allowFlowReversalBui) "Primary heating water mass flow rate" annotation (Placement(transformation(extent={{30,270},{50,250}}))); Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaSHW( @@ -379,9 +376,6 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter capFloHHW( final k=cpBui_default) if have_varFloEva or have_varFloCon "Capacity flow rate" annotation (Placement(transformation(extent={{-220,310},{-200,330}}))); - Buildings.Controls.OBC.CDL.Reals.Add heaFloEvaHHW if have_varFloEva - "Heat flow rate at evaporator" - annotation (Placement(transformation(extent={{-100,230},{-80,250}}))); Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloConHHW( final Q_flow_nominal=QHeaWat_flow_nominal, final dT_nominal=dT_nominal, @@ -389,13 +383,6 @@ model PartialHeatPumpHeatExchanger final cp=cpBui_default) if have_varFloCon "Mass flow rate control" annotation (Placement(transformation(extent={{-100,270},{-80,290}}))); - Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow conFloEvaHHW( - final Q_flow_nominal=-QHeaWat_flow_nominal*(1 - 1/COPHeaWat_nominal), - final dT_nominal=-dT_nominal, - final ratFloMin=ratFloMin, - final cp=cpSer_default) if have_varFloEva - "Mass flow rate control" - annotation (Placement(transformation(extent={{-60,230},{-40,250}}))); Buildings.Controls.OBC.CDL.Reals.Max priOve if have_varFloCon "Ensure primary overflow" annotation (Placement(transformation(extent={{-60,270},{-40,290}}))); @@ -403,9 +390,6 @@ model PartialHeatPumpHeatExchanger if have_varFloEva or have_varFloCon "Heating load" annotation (Placement(transformation(extent={{-140,270},{-120,290}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter toSub1(final k=-1) - if have_varFloEva "Convert to subtraction" - annotation (Placement(transformation(extent={{-80,216},{-100,236}}))); equation connect(TChiWatSupSet, conTChiWat.u_s) annotation (Line(points={{-320,0},{-200, 0},{-200,-200},{-152,-200}}, color={0,0,127})); @@ -532,28 +516,18 @@ equation annotation (Line(points={{140,271},{140,326},{2,326}}, color={0,0,127})); connect(senMasFloHeaWat.m_flow, capFloHHW.u) annotation (Line(points={{-240,271}, {-240,320},{-222,320}}, color={0,0,127})); - connect(conFloEvaHHW.m_flow, proHeaWat.m2_flow) annotation (Line(points={{-38,240}, - {-28,240},{-28,211},{-12,211}}, color={0,0,127})); connect(senMasFloHeaWat.m_flow, priOve.u1) annotation (Line(points={{-240,271}, {-240,296},{-70,296},{-70,286},{-62,286}}, color={0,0,127})); connect(conFloConHHW.m_flow, priOve.u2) annotation (Line(points={{-78,280},{-70, 280},{-70,274},{-62,274}}, color={0,0,127})); connect(priOve.y, proHeaWat.m1_flow) annotation (Line(points={{-38,280},{-24,280}, {-24,214},{-12,214}}, color={0,0,127})); - connect(heaFloEvaHHW.y, conFloEvaHHW.loa) - annotation (Line(points={{-78,240},{-62,240}}, color={0,0,127})); connect(capFloHHW.y, loaHHW.u2) annotation (Line(points={{-198,320},{-180,320}, {-180,274},{-142,274}}, color={0,0,127})); connect(dTHHW.y, loaHHW.u1) annotation (Line(points={{-22,320},{-160,320},{ -160,286},{-142,286}}, color={0,0,127})); connect(loaHHW.y, conFloConHHW.loa) annotation (Line(points={{-118,280},{-102,280}}, color={0,0,127})); - connect(loaHHW.y, heaFloEvaHHW.u1) annotation (Line(points={{-118,280},{-110, - 280},{-110,246},{-102,246}}, color={0,0,127})); - connect(proHeaWat.PHea, toSub1.u) annotation (Line(points={{12,217},{20,217}, - {20,226},{-78,226}}, color={0,0,127})); - connect(toSub1.y, heaFloEvaHHW.u2) annotation (Line(points={{-102,226},{-110, - 226},{-110,234},{-102,234}}, color={0,0,127})); annotation ( defaultComponentName="ets", Documentation(info=" diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo index 9493aa684d3..f5a88969f52 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Controls/SwitchBox.mo @@ -1,4 +1,4 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls; +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls; block SwitchBox "Controller for flow switch box" extends Modelica.Blocks.Icons.Block; parameter Real trueHoldDuration( diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 7ab40c9e7e6..187af3279e0 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -5,26 +5,22 @@ model HeatPumpHeatExchanger Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger( volMix_a(nPorts=4), volMix_b(nPorts=4)); - Subsystems.HeatPump proHotWat( + Subsystems.HeatPumpExtended proHotWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, - final have_pumCon=false, - final have_varFloEva=have_varFloEva, final COP_nominal=COPHotWat_nominal, final TCon_nominal=THotWatSup_nominal, final TEva_nominal=TDisWatMin - dT_nominal, + dT_nominal=dT_nominal, final Q1_flow_nominal=QHotWat_flow_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, - final dT1_nominal=THotWatSup_nominal - TColWat_nominal, - final dT2_nominal=-dT_nominal, final dp1_nominal=dp_nominal, final dp2_nominal=dp_nominal) if have_hotWat "Subsystem for hot water production" annotation (Placement(transformation(extent={{-10,24},{10,44}}))); - Fluid.Sources.MassFlowSource_T souColWat( + Fluid.Sources.Boundary_pT souColWat( redeclare final package Medium = MediumBui, - use_m_flow_in=true, use_T_in=true, nPorts=1) if have_hotWat "Source for cold water" @@ -49,8 +45,6 @@ model HeatPumpHeatExchanger equation connect(souColWat.ports[1], proHotWat.port_a1) annotation (Line(points={{-28,-40}, {-20,-40},{-20,28},{-10,28}}, color={0,127,255})); - connect(conFloEvaSHW.m_flow, proHotWat.m2_flow) annotation (Line(points={{-38, - 100},{-16,100},{-16,31},{-12,31}}, color={0,0,127})); connect(sinSHW.ports[1], proHotWat.port_b1) annotation (Line(points={{-50,60}, {-20,60},{-20,40},{-10,40}}, color={0,127,255})); connect(THotWatSupSet, proHotWat.TSupSet) annotation (Line(points={{-320,-40}, @@ -71,17 +65,10 @@ equation color={0,0,127})); connect(TColWat, souColWat.T_in) annotation (Line(points={{-320,-80},{-60,-80}, {-60,-36},{-50,-36}}, color={0,0,127})); - connect(div1.y, souColWat.m_flow_in) annotation (Line(points={{-78,-50},{-70, - -50},{-70,-32},{-50,-32}}, - color={0,0,127})); connect(proHotWat.port_a2, volMix_a.ports[4]) annotation (Line(points={{10,28}, {14,28},{14,20},{-260,20},{-260,-360}}, color={0,127,255})); connect(proHotWat.port_b2, volMix_b.ports[4]) annotation (Line(points={{10,40},{260,40},{260,-360}}, color={0,127,255})); - connect(heaFloEvaSHW.u1, div1.u1) annotation (Line(points={{-102,106},{-290, - 106},{-290,-44},{-102,-44}}, color={0,0,127})); - connect(proHotWat.PHea, heaFloEvaSHW.u2) annotation (Line(points={{12,37},{14, - 37},{14,80},{-108,80},{-108,94},{-102,94}}, color={0,0,127})); connect(gai.y,div1. u2) annotation (Line(points={{-98,-10},{-80,-10},{-80,-30}, {-120,-30},{-120,-56},{-102,-56}}, color={0,0,127})); connect(QReqHotWat_flow,div1. u1) annotation (Line(points={{-320,-120},{-290,-120},{ @@ -95,6 +82,8 @@ equation connect(THotWatSupSet,delT. u1) annotation (Line(points={{-320,-40},{-160,-40}, {-160,-4},{-152,-4}}, color={0,0,127})); + connect(div1.y, proHotWat.m1_flow) annotation (Line(points={{-78,-50},{-70, + -50},{-70,34},{-12,34}}, color={0,0,127})); annotation ( Documentation(info="

      @@ -175,9 +164,5 @@ This is for issue 1097.

    -"), Diagram(graphics={ - Text( - extent={{-74,104},{-34,92}}, - textColor={238,46,47}, - textString="fixme: are these blocks needed?")})); +")); end HeatPumpHeatExchanger; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo index 54975358c2d..5e06b19567d 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchangerDHWTank.mo @@ -40,7 +40,8 @@ model HeatPumpHeatExchangerDHWTank annotation (Placement(transformation(extent={{-20,50},{-40,72}}))); Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Junction dcwSpl( redeclare final package Medium = MediumBui, final m_flow_nominal= - proHeaWat.m1_flow_nominal*{1,-1,-1}) "Splitter for domestic cold water" + datWatHea.mDom_flow_nominal*{1,-1,-1}) + "Splitter for domestic cold water" annotation (Placement(transformation( extent={{-10,-10},{10,10}}, rotation=90, diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo new file mode 100644 index 00000000000..891745c2f7e --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo @@ -0,0 +1,315 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.BaseClasses; +model HeatPump "Base class for subsystems containing a heat pump" + replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium + "Medium model on condenser side" + annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + replaceable package Medium2=Modelica.Media.Interfaces.PartialMedium + "Medium model on evaporator side" + annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + parameter Real COP_nominal(final unit="1") + "Heat pump COP" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TCon_nominal + "Condenser outlet temperature used to compute COP_nominal" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TEva_nominal + "Evaporator outlet temperature used to compute COP_nominal" + annotation (Dialog(group="Nominal condition")); + + parameter Modelica.Units.SI.TemperatureDifference dT_nominal(min=0) = 5 + "Water temperature drop/increase accross load and source-side HX (always positive)" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate mCon_flow_nominal = heaPum.m1_flow_nominal + "Condenser mass flow rate"; + final parameter Modelica.Units.SI.MassFlowRate mEva_flow_nominal = heaPum.m2_flow_nominal + "Evaporator mass flow rate"; + + parameter Boolean allowFlowReversal1=false + "Set to true to allow flow reversal on condenser side" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + parameter Boolean allowFlowReversal2=false + "Set to true to allow flow reversal on evaporator side" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + parameter Modelica.Units.SI.Pressure dp1_nominal(displayUnit="Pa") + "Pressure difference over condenser" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Pressure dp2_nominal(displayUnit="Pa") + "Pressure difference over evaporator" + annotation (Dialog(group="Nominal condition")); + // IO CONNECTORS + Modelica.Fluid.Interfaces.FluidPort_a port_a2( + redeclare final package Medium = Medium2, + m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), + h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) + "Fluid port for entering evaporator water" annotation (Placement( + transformation(extent={{190,-70},{210,-50}}), iconTransformation(extent= + {{90,-70},{110,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b2( + redeclare final package Medium = Medium2, + m_flow(max=if allowFlowReversal2 then +Modelica.Constants.inf else 0), + h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) + "Fluid port for leaving evaporator water" annotation (Placement( + transformation(extent={{190,50},{210,70}}), iconTransformation(extent={{ + 90,50},{110,70}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a1( + redeclare final package Medium = Medium1, + m_flow(min=if allowFlowReversal1 then -Modelica.Constants.inf else 0), + h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) + "Fluid port for entering condenser water" annotation (Placement( + transformation(extent={{-210,-70},{-190,-50}}), iconTransformation( + extent={{-110,-70},{-90,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b1( + redeclare final package Medium = Medium1, + m_flow(max=if allowFlowReversal1 then +Modelica.Constants.inf else 0), + h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) + "Fluid port for leaving condenser water" annotation (Placement( + transformation(extent={{-210,50},{-190,70}}), iconTransformation(extent= + {{-110,50},{-90,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput PHea( + final unit="W") "Heat pump power" + annotation (Placement(transformation(extent={{200,20},{240,60}}), + iconTransformation(extent={{100,10},{140,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput PPum( + final unit="W") "Pump power" + annotation (Placement(transformation(extent={{200,-20},{240,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mEva_flow(final unit="kg/s") + "Evaporator water mass flow rate" + annotation (Placement(transformation( + extent={{200,-60},{240,-20}}), iconTransformation(extent={{100,-50},{ + 140,-10}}))); + // COMPONENTS + Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare package Medium1 = Medium1, + redeclare package Medium2 = Medium2, + allowFlowReversal1=false, + allowFlowReversal2=false, + dTEva_nominal=-dT_nominal, + dTCon_nominal=dT_nominal, + use_eta_Carnot_nominal=false, + COP_nominal=COP_nominal, + TCon_nominal=TCon_nominal, + TEva_nominal=TEva_nominal, + final dp1_nominal=dp1_nominal, + final dp2_nominal=dp2_nominal) + "Domestic hot water heat pump" + annotation (Placement(transformation(extent={{-82,-70},{-62,-50}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow + pumCon( + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, + redeclare package Medium = Medium2, + m_flow_nominal=mCon_flow_nominal, + riseTime=10, + dp_nominal=dp1_nominal) + "Pump for heat pump condenser" + annotation (Placement(transformation(extent={{-20,4},{-40,24}}))); + + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( + redeclare final package Medium = Medium2, + final allowFlowReversal=allowFlowReversal2, + m_flow_nominal=mEva_flow_nominal, + dp_nominal=dp2_nominal + 6000) + "Heat pump evaporator water pump" + annotation (Placement(transformation(extent={{20,-70},{0,-50}}))); + + Modelica.Blocks.Math.Add addPPum "Electricity use for pumps" + annotation (Placement(transformation(extent={{140,60},{160,80}}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal floEva(realTrue= + mEva_flow_nominal) "Evaporator mass flow rate" + annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); + Fluid.Actuators.Valves.ThreeWayEqualPercentageLinear valHeaPumEva( + redeclare package Medium = Medium2, + m_flow_nominal=mEva_flow_nominal, + dpValve_nominal=6000) "Valve at heat pump evaporator" + annotation (Placement(transformation(extent={{80,-70},{60,-50}}))); + Fluid.Sensors.TemperatureTwoPort senTEvaRet( + redeclare final package Medium = Medium2, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=mEva_flow_nominal, + tau=0) + "Evaporator return temperature sensor" annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=0, + origin={50,-120}))); + Fluid.Sensors.TemperatureTwoPort senTDisSup( + redeclare final package Medium = Medium2, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=mEva_flow_nominal, + tau=0) + "District supply temperature sensor" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={110,-60}))); + Buildings.Controls.OBC.CDL.Reals.Subtract dT_supRet + "Temperature difference over heat pump connection" + annotation (Placement(transformation(extent={{80,-20},{100,0}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant dTSet(k=dT_nominal) + "Set point for temperature difference over heat pump" + annotation (Placement(transformation(extent={{80,10},{100,30}}))); + Buildings.Controls.OBC.CDL.Reals.PIDWithReset conPI( + k=0.1, + Ti=120, xi_start=0.2, + reverseActing=false) + "Controller to ensure dT_nominal over heat pump connection" + annotation (Placement(transformation(extent={{120,10},{140,30}}))); + Fluid.Sensors.MassFlowRate senMasFlo(redeclare package Medium = Medium2) + "Mass flow rate drawn from ETS" + annotation (Placement(transformation(extent={{160,-70},{140,-50}}))); +equation + connect(heaPum.port_b1,pumCon. port_a) annotation (Line(points={{-62,-54},{ + -14,-54},{-14,14},{-20,14}}, + color={0,127,255})); + connect(heaPum.P, PHea) annotation (Line(points={{-61,-60},{-20,-60},{-20,-20}, + {22,-20},{22,40},{220,40}}, + color={0,0,127})); + connect(floEva.y, pumEva.m_flow_in) + annotation (Line(points={{-58,90},{10,90},{10,-48}}, color={0,0,127})); + connect(valHeaPumEva.port_2, pumEva.port_a) + annotation (Line(points={{60,-60},{20,-60}}, color={0,127,255})); + connect(heaPum.port_b2, senTEvaRet.port_a) annotation (Line(points={{-82,-66}, + {-90,-66},{-90,-120},{40,-120}}, color={0,127,255})); + connect(senTEvaRet.port_b, port_b2) annotation (Line(points={{60,-120},{180,-120}, + {180,60},{200,60}}, color={0,127,255})); + connect(senTDisSup.T, dT_supRet.u1) annotation (Line(points={{110,-49},{110, + -32},{34,-32},{34,-4},{78,-4}}, + color={0,0,127})); + connect(senTEvaRet.T, dT_supRet.u2) + annotation (Line(points={{50,-109},{50,-16},{78,-16}}, color={0,0,127})); + connect(valHeaPumEva.port_1, senTDisSup.port_b) + annotation (Line(points={{80,-60},{100,-60}}, color={0,127,255})); + connect(pumEva.port_b, heaPum.port_a2) annotation (Line(points={{0,-60},{-14, + -60},{-14,-66},{-62,-66}}, + color={0,127,255})); + connect(valHeaPumEva.port_3, senTEvaRet.port_b) annotation (Line(points={{70,-70}, + {70,-120},{60,-120}}, color={0,127,255})); + connect(conPI.u_s, dTSet.y) + annotation (Line(points={{118,20},{102,20}}, + color={0,0,127})); + connect(dT_supRet.y, conPI.u_m) + annotation (Line(points={{102,-10},{130,-10},{130,8}}, color={0,0,127})); + connect(conPI.y, valHeaPumEva.y) annotation (Line(points={{142,20},{148,20},{ + 148,-26},{70,-26},{70,-48}}, + color={0,0,127})); + connect(senTDisSup.port_a, senMasFlo.port_b) + annotation (Line(points={{120,-60},{140,-60}}, color={0,127,255})); + connect(senMasFlo.port_a, port_a2) + annotation (Line(points={{160,-60},{200,-60}}, color={0,127,255})); + connect(senMasFlo.m_flow, mEva_flow) + annotation (Line(points={{150,-49},{150,-40},{220,-40}}, color={0,0,127})); + connect(addPPum.y, PPum) annotation (Line(points={{161,70},{170,70},{170,0},{ + 220,0}}, color={0,0,127})); + connect(pumCon.P, addPPum.u1) annotation (Line(points={{-41,23},{-42,23},{-42, + 76},{138,76}}, color={0,0,127})); + connect(addPPum.u2, pumEva.P) annotation (Line(points={{138,64},{-8,64},{-8, + -51},{-1,-51}}, color={0,0,127})); + annotation ( + defaultComponentName="heaPum", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-12,0},{60,-78}}, + lineColor={0,0,255}, + pattern=LinePattern.None, + fillColor={95,95,95}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{2,-60},{48,-68}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{8,-38},{4,-46},{12,-46},{8,-38}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{8,-38},{4,-30},{12,-30},{8,-38}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{38,-20},{42,-60}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,-32},{50,-50}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Polygon( + points={{40,-32},{32,-44},{50,-44},{40,-32}}, + lineColor={0,0,0}, + smooth=Smooth.None, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{6,-46},{10,-60}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{6,-20},{10,-30}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{0,-12},{46,-20}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)}), Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), + Documentation(info=" +

    +This model represents a water-to-water heat pump with storage tank and an evaporator water pump. +The heat pump model with storage tank is described in + +Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank. +By default a variable speed evaporator pump is considered. +
    +fixme: Update documentation. Do we indeed need a constant flow rate option?
    +A constant speed pump may also be represented by setting have_varFloEva +to false. +

    +

    Controls

    +

    +The system is enabled when the input control signal uEna switches to +true. +When enabled, +

    +
      +
    • +the evaporator pump is commanded on and supply either +the mass flow rate set point provided as an input in the case of a variable speed pump, +or the nominal mass flow rate in the case of a constant speed pump, +
    • +
    • +the heat pump with storage tank system operates to maintain the desired +storage tank temperature. +
    • +
    +", revisions=" +
      +
    • +November 16, 2022, by Michael Wetter:
      +Set pumEva.dp_nominal to correct value. +
    • +
    • +February 23, 2021, by Antoine Gautier:
      +First implementation. +
    • +
    +")); +end HeatPump; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.mo new file mode 100644 index 00000000000..3e54cb61e6a --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.mo @@ -0,0 +1,4 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +package BaseClasses "Contains base classes for Subsystems" + extends Modelica.Icons.BasesPackage; +end BaseClasses; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order new file mode 100644 index 00000000000..598f327d13d --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order @@ -0,0 +1 @@ +HeatPump diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo new file mode 100644 index 00000000000..95a586ee6e3 --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo @@ -0,0 +1,112 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +model HeatPumpExtended "Base subsystem with water-to-water heat pump" + extends Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.BaseClasses.HeatPump(heaPum( + QCon_flow_nominal=Q1_flow_nominal)); + parameter Boolean have_varFloCon = true + "Set to true for a variable condenser flow" + annotation(Evaluate=true); + parameter Modelica.Units.SI.HeatFlowRate Q1_flow_nominal(min=0) + "Heating heat flow rate" annotation (Dialog(group="Nominal condition")); + // IO CONNECTORS + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) + "Enable signal" + annotation ( + Placement(transformation(extent={{-240,100},{-200,140}}), + iconTransformation(extent={{-140,70},{-100,110}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( + final unit="K", + displayUnit="degC") + "Supply temperature set point" + annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), + iconTransformation(extent={{-140,10},{-100,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput m1_flow( + final unit="kg/s") if have_varFloCon + "Condenser mass flow rate" + annotation (Placement(transformation(extent={{-240,60},{-200,100}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + // COMPONENTS + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floConNom( + final k=m1_flow_nominal) if not have_varFloCon + "Nominal flow rate" + annotation (Placement(transformation(extent={{-100,80},{-120,100}}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea + annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); + Buildings.Controls.OBC.CDL.Reals.Multiply floCon + "Zero flow rate if not enabled" + annotation (Placement(transformation(extent={{-120,110},{-100,130}}))); +equation + connect(uEna, booToRea.u) + annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); + connect(booToRea.y, floCon.u1) annotation (Line(points={{-158,120},{-140,120}, + {-140,126},{-122,126}}, color={0,0,127})); + connect(m1_flow, floCon.u2) annotation (Line(points={{-220,80},{-140,80},{-140, + 114},{-122,114}}, color={0,0,127})); + connect(floConNom.y, floCon.u2) annotation (Line(points={{-122,90},{-130,90},{ + -130,114},{-122,114}}, color={0,0,127})); + connect(port_a1, heaPum.port_a1) annotation (Line(points={{-200,-60},{-120, + -60},{-120,-54},{-82,-54}}, color={0,127,255})); + connect(pumCon.port_b, port_b1) annotation (Line(points={{-40,14},{-120,14},{ + -120,60},{-200,60}}, color={0,127,255})); + connect(TSupSet, heaPum.TSet) annotation (Line(points={{-220,-20},{-100,-20}, + {-100,-51},{-84,-51}}, color={0,0,127})); + connect(uEna, floEva.u) annotation (Line(points={{-220,120},{-190,120},{-190, + 136},{-90,136},{-90,90},{-82,90}}, color={255,0,255})); + connect(floCon.y, pumCon.m_flow_in) + annotation (Line(points={{-98,120},{-30,120},{-30,26}}, color={0,0,127})); + connect(conPI.trigger, floEva.u) annotation (Line(points={{124,8},{124,-2},{ + 110,-2},{110,136},{-90,136},{-90,90},{-82,90}}, color={255,0,255})); + annotation ( + defaultComponentName="heaPum", + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), + Documentation(info=" +

    +This model represents a water-to-water heat pump, an evaporator water pump, +and an optional condenser water pump if have_pumCon is set to +true. +The heat pump model is described in + +Buildings.Fluid.HeatPumps.Carnot_TCon. +By default variable speed pumps are considered. +Constant speed pumps may also be represented by setting have_varFloEva +and have_varFloCon to false. +

    +

    Controls

    +

    +The system is enabled when the input control signal uEna switches to +true. +When enabled, +

    +
      +
    • +the evaporator and optionally the condenser water pumps are commanded on and supply either +the mass flow rate set point provided as an input in the case of variable speed pumps, +or the nominal mass flow rate in the case of constant speed pumps, +
    • +
    • +the heat pump is commanded on when the evaporator and optionally the condenser water pump +are proven on. When enabled, the heat pump controller—idealized in this model—tracks the +supply temperature set point at the condenser outlet. +
    • +
    +", revisions=" +
      +
    • +May 3, 2023, by David Blum:
      +Assigned dp_nominal to condenser pump.
      +This is for + +issue 3379. +
    • +
    • +November 16, 2022, by Michael Wetter:
      +Set pumEva.dp_nominal to correct value. +
    • +
    • +February 23, 2021, by Antoine Gautier:
      +First implementation. +
    • +
    +")); +end HeatPumpExtended; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/Chiller.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/Chiller.mo index eeaa23aef2c..01e37915137 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/Chiller.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/Chiller.mo @@ -109,19 +109,19 @@ equation connect(chi.port_bHeaWat,senTHeaWatSup.port_a) annotation (Line(points={{-10,-56},{-40,-56},{-40,-40},{-70,-40}},color={0,127,255})); connect(senTHeaWatSup.port_b,conWat.ports[1]) - annotation (Line(points={{-90,-40},{-100,-40},{-100,-60}},color={0,127,255})); + annotation (Line(points={{-90,-40},{-100,-40},{-100,-63}},color={0,127,255})); connect(evaWat.ports[1],senTChiWatSup.port_b) - annotation (Line(points={{100,-60},{100,-40},{80,-40}},color={0,127,255})); + annotation (Line(points={{100,-63},{100,-40},{80,-40}},color={0,127,255})); connect(senTChiWatSup.port_a,chi.port_bChiWat) annotation (Line(points={{60,-40},{40,-40},{40,-56},{10,-56}},color={0,127,255})); connect(conWat.ports[2],senTHeaWatRet.port_a) - annotation (Line(points={{-100,-64},{-100,-80},{-90,-80}},color={0,127,255})); + annotation (Line(points={{-100,-61},{-100,-80},{-90,-80}},color={0,127,255})); connect(senTHeaWatRet.port_b,chi.port_aHeaWat) annotation (Line(points={{-70,-80},{-40,-80},{-40,-68},{-10,-68}},color={0,127,255})); connect(chi.port_aChiWat,senTChiWatRet.port_b) annotation (Line(points={{10,-68},{40,-68},{40,-80},{60,-80}},color={0,127,255})); connect(senTChiWatRet.port_a,evaWat.ports[2]) - annotation (Line(points={{80,-80},{100,-80},{100,-64}},color={0,127,255})); + annotation (Line(points={{80,-80},{100,-80},{100,-61}},color={0,127,255})); connect(uCoo.y,chi.uCoo) annotation (Line(points={{-99,80},{-24,80},{-24,-60},{-12,-60}},color={255,0,255})); connect(uHea.y,chi.uHea) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatExchanger.mo index 74e5414fc92..574910c1e65 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatExchanger.mo @@ -199,18 +199,21 @@ equation connect(hexPum.port_b1,senT1OutPum.port_a) annotation (Line(points={{50,-74},{80,-74},{80,-100},{100,-100}}, color={0,127,255})); - connect(senT1OutPum.port_b, bou1Pum.ports[1]) annotation (Line(points={{120,-100}, - {140,-100},{140,-80}}, color={0,127,255})); + connect(senT1OutPum.port_b, bou1Pum.ports[1]) annotation (Line(points={{120, + -100},{140,-100},{140,-83}}, + color={0,127,255})); connect(hexPum.port_a1,senT1InlPum.port_b) annotation (Line(points={{30,-74},{20,-74},{20,-60},{100,-60}}, color={0,127,255})); connect(senT1InlPum.port_a, bou1Pum.ports[2]) annotation (Line(points={{120,-60}, - {140,-60},{140,-84}}, color={0,127,255})); + {140,-60},{140,-81}}, color={0,127,255})); connect(hexPum.port_b2,senT2OutPum.port_a) annotation (Line(points={{30,-86},{0,-86},{0,-60},{-20,-60}}, color={0,127,255})); connect(senT2OutPum.port_b, bou2.ports[1]) annotation (Line(points={{-40,-60}, - {-50,-60},{-50,-24},{-60,-24},{-60,-17}}, color={0,127,255})); - connect(bou2.ports[2], senT2InlPum.port_a) annotation (Line(points={{-60,-19}, - {-60,-100},{-40,-100}}, color={0,127,255})); + {-50,-60},{-50,-24},{-60,-24},{-60,-21.5}}, + color={0,127,255})); + connect(bou2.ports[2], senT2InlPum.port_a) annotation (Line(points={{-60, + -20.5},{-60,-100},{-40,-100}}, + color={0,127,255})); connect(senT2InlPum.port_b,hexPum.port_a2) annotation (Line(points={{-20,-100},{60,-100},{60,-86},{50,-86}}, color={0,127,255})); @@ -233,13 +236,13 @@ equation connect(uHeaRej.y,or2.u1) annotation (Line(points={{-169,100},{-130,100},{-130,80},{-122,80}}, color={255,0,255})); connect(yValIsoCon.y,hexVal.yValIso_actual[1]) - annotation (Line(points={{-169,60},{8,60},{8,-3},{28,-3}}, color={0,0,127})); + annotation (Line(points={{-169,60},{8,60},{8,-2.5},{28,-2.5}}, color={0,0,127})); connect(yValIsoCon.y,hexPum.yValIso_actual[1]) - annotation (Line(points={{-169,60},{8,60},{8,-83},{28,-83}}, color={0,0,127})); + annotation (Line(points={{-169,60},{8,60},{8,-82.5},{28,-82.5}}, color={0,0,127})); connect(yValIsoEva.y,hexVal.yValIso_actual[2]) - annotation (Line(points={{-169,40},{4,40},{4,-1},{28,-1}}, color={0,0,127})); + annotation (Line(points={{-169,40},{4,40},{4,-1.5},{28,-1.5}}, color={0,0,127})); connect(yValIsoEva.y,hexPum.yValIso_actual[2]) - annotation (Line(points={{-169,40},{4,40},{4,-81},{28,-81}}, color={0,0,127})); + annotation (Line(points={{-169,40},{4,40},{4,-81.5},{28,-81.5}}, color={0,0,127})); connect(or2.y,swi1.u2) annotation (Line(points={{-98,80},{-22,80}}, color={255,0,255})); connect(sin1.y,swi1.u1) @@ -260,9 +263,11 @@ equation connect(TSerWat.y, bou1InlVal.T_in) annotation (Line(points={{189,-80},{180,-80}, {180,24},{164,24}}, color={0,0,127})); connect(senT2OutVal.port_b, bou2.ports[3]) - annotation (Line(points={{-40,20},{-60,20},{-60,-21}}, color={0,127,255})); - connect(bou2.ports[4], senT2InlVal.port_a) annotation (Line(points={{-60,-23}, - {-60,-20},{-40,-20}}, color={0,127,255})); + annotation (Line(points={{-40,20},{-60,20},{-60,-19.5}}, + color={0,127,255})); + connect(bou2.ports[4], senT2InlVal.port_a) annotation (Line(points={{-60, + -18.5},{-60,-20},{-40,-20}}, + color={0,127,255})); annotation ( Diagram( coordinateSystem( diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo new file mode 100644 index 00000000000..5d91a7e889a --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo @@ -0,0 +1,128 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.Validation; +model HeatPump + "Validation of the base subsystem model with heat pump" + extends Modelica.Icons.Example; + package Medium=Buildings.Media.Water + "Medium model"; + parameter Modelica.Units.SI.Temperature TCon_nominal = 273.15+30 "Nominal condenser outlet temperature"; + parameter Modelica.Units.SI.Temperature TAmb_nominal = 273.15+15 "Nominal ambient loop temperature to evaporator"; + parameter Modelica.Units.SI.Power QLoa_nominal = 1000 "Nominal load"; + HeatPumpExtended + heaPum( + redeclare package Medium1 = Medium, + redeclare package Medium2 = Medium, + COP_nominal=2.3, + TCon_nominal=TCon_nominal, + TEva_nominal(displayUnit="K") = TAmb_nominal - heaPum.dT_nominal, + dp1_nominal=6000, + dp2_nominal=6000, + Q1_flow_nominal=QLoa_nominal) + annotation (Placement(transformation(extent={{-10,-12},{10,8}}))); + Fluid.Sources.Boundary_pT supAmb( + redeclare package Medium = Medium, + p(displayUnit="bar"), + T=TAmb_nominal, + nPorts=1) "Ambient water supply" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={60,-60}))); + Fluid.Sources.Boundary_pT sinAmb( + redeclare package Medium = Medium, + p(displayUnit="bar"), + nPorts=1) "Sink for ambient water" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={60,10}))); + Fluid.Sources.Boundary_pT souLoa( + redeclare final package Medium = Medium, + T=TCon_nominal - heaPum.dT_nominal, + nPorts=1) "Source for load (return from load)" + annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=180, + origin={-110,-52}))); + + Modelica.Blocks.Sources.Sine sin(f=1/(86400/2)) "Load signal" + annotation (Placement(transformation(extent={{-120,80},{-100,100}}))); + Modelica.Blocks.Nonlinear.Limiter limiter(uMax=1, uMin=0) + annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); + Modelica.Blocks.Math.Gain gain(k=QLoa_nominal/(4200*5)) + annotation (Placement(transformation(extent={{-48,80},{-28,100}}))); + Modelica.Blocks.Sources.Step TSetCon( + height=-2, + offset=TCon_nominal, + startTime=86400/2) "Set point of condenser outlet" + annotation (Placement(transformation(extent={{-120,20},{-100,40}}))); + Fluid.Sources.Boundary_pT sinLoa(redeclare final package Medium = Medium, + nPorts=1) "Sink for load" annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=180, + origin={-110,0}))); + Buildings.Controls.OBC.CDL.Reals.GreaterThreshold enaHea(each t=1e-4) + "Threshold comparison to enable heating" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + Fluid.Sensors.TemperatureTwoPort senTLoaSup( + redeclare final package Medium = Medium, + final m_flow_nominal=QLoa_nominal/(4200*5), + tau=0) "Load supply temperature sensor" + annotation (Placement(transformation( + extent={{10,-10},{-10,10}}, + rotation=0, + origin={-70,0}))); + Fluid.Sensors.MassFlowRate senMasFloAmb(redeclare package Medium = Medium) + "Mass flow rate sensor for ambient loop" + annotation (Placement(transformation(extent={{40,-70},{20,-50}}))); +equation + connect(sinAmb.ports[1], heaPum.port_b2) annotation (Line(points={{50,10},{22, + 10},{22,4},{10,4}}, color={0,127,255})); + connect(sin.y, limiter.u) + annotation (Line(points={{-99,90},{-82,90}}, color={0,0,127})); + connect(limiter.y, gain.u) + annotation (Line(points={{-59,90},{-50,90}}, color={0,0,127})); + connect(heaPum.m1_flow, gain.y) annotation (Line(points={{-12,-2},{-27,-2},{-27, + 90}}, color={0,0,127})); + connect(TSetCon.y, heaPum.TSupSet) annotation (Line(points={{-99,30},{-22,30}, + {-22,1},{-12,1}}, color={0,0,127})); + connect(souLoa.ports[1], heaPum.port_a1) annotation (Line(points={{-100,-52},{ + -20,-52},{-20,-8},{-10,-8}}, color={0,127,255})); + connect(enaHea.y, heaPum.uEna) annotation (Line(points={{-58,50},{-18,50},{-18, + 8},{-12,8},{-12,7}}, color={255,0,255})); + connect(limiter.y, enaHea.u) annotation (Line(points={{-59,90},{-56,90},{-56,68}, + {-92,68},{-92,50},{-82,50}}, color={0,0,127})); + connect(sinLoa.ports[1], senTLoaSup.port_b) annotation (Line(points={{-100, + -8.88178e-16},{-90,-8.88178e-16},{-90,0},{-80,0}}, color={0,127,255})); + connect(senTLoaSup.port_a, heaPum.port_b1) annotation (Line(points={{-60,0},{ + -40,0},{-40,4},{-10,4}}, color={0,127,255})); + connect(heaPum.port_a2, senMasFloAmb.port_b) + annotation (Line(points={{10,-8},{20,-8},{20,-60}}, color={0,127,255})); + connect(senMasFloAmb.port_a, supAmb.ports[1]) + annotation (Line(points={{40,-60},{50,-60}}, color={0,127,255})); + annotation ( + Diagram( + coordinateSystem( + preserveAspectRatio=false, + extent={{-120,-100},{100,100}})), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos" "Simulate and plot"), + experiment( + StopTime=86400, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + Documentation( + revisions=" +
      +
    • +November 1, 2020, by David Blum:
      +First implementation. +
    • +
    +", + info=" +

    +This model validates + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump. +

    +")); +end HeatPump; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos new file mode 100644 index 00000000000..7d7838ed58a --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos @@ -0,0 +1,10 @@ +// Script generated by Dymola Wed Nov 1 11:50:42 2023 +// Plot commands +removePlots(false); +Advanced.FilenameInLegend = true; +Advanced.SequenceInLegend = false; +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.senTDisSup.T", "heaPum.senTEvaRet.T", "senTLoaSup.T"}, range={0.0, 90000.0, 0.0, 40.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}, timeUnit="s", displayUnits={"degC", "degC", "degC"}); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.heaPum.QCon_flow", "heaPum.heaPum.QCon_flow_nominal"}, range={0.0, 90000.0, -500.0, 1500.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"W", "W"}); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.heaPum.m1_flow", "heaPum.heaPum.m2_flow"}, range={0.0, 90000.0, -0.02, 0.06}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"kg/s", "kg/s"}); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.PHea"}, range={0.0, 90000.0, -500.0, 1000.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); + diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/SwitchBox.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/SwitchBox.mo index 6fe314a78ac..de6af5b972a 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/SwitchBox.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/SwitchBox.mo @@ -67,24 +67,24 @@ model SwitchBox "Validation of flow switch box" annotation (Placement(transformation(extent={{-46,30},{-26,50}}))); equation connect(pum1.port_b, volSup.ports[1]) annotation (Line(points={{-10,0},{-60,0}, - {-60,-2.66667}}, color={0,127,255})); + {-60,-1.33333}}, color={0,127,255})); connect(volSup.ports[2], pum2.port_a) annotation (Line(points={{-60,-4.44089e-16}, {-60,60},{-10,60}}, color={0,127,255})); connect(pum2.port_b, volRet.ports[1]) annotation (Line(points={{10,60},{60,60}, - {60,-2.66667}}, color={0,127,255})); + {60,-1.33333}}, color={0,127,255})); connect(volRet.ports[2], pum1.port_a) annotation (Line(points={{60,8.88178e-16}, {60,0},{10,0}}, color={0,127,255})); connect(floSwiBox.port_bSup, volSup.ports[3]) annotation (Line(points={{-6,-40}, - {-6,-20},{-60,-20},{-60,2.66667}}, color={0,127,255})); + {-6,-20},{-60,-20},{-60,1.33333}}, color={0,127,255})); connect(floSwiBox.port_aRet, volRet.ports[3]) annotation (Line(points={{6,-40}, - {6,-20},{60,-20},{60,2.66667}}, color={0,127,255})); + {6,-20},{60,-20},{60,1.33333}}, color={0,127,255})); connect(floSwiBox.port_bRet, senMasFlo.port_a) annotation (Line(points={{6,-60}, {6,-80},{60,-80},{60,-100},{10,-100}}, color={0,127,255})); connect(senMasFlo.port_b, disWatBou.ports[1]) annotation (Line(points={{-10, - -100},{-60,-100},{-60,-88}}, + -100},{-60,-100},{-60,-91}}, color={0,127,255})); - connect(disWatBou.ports[2], floSwiBox.port_aSup) annotation (Line(points={{-60,-92}, + connect(disWatBou.ports[2], floSwiBox.port_aSup) annotation (Line(points={{-60,-89}, {-60,-80},{-6,-80},{-6,-60}}, color={0,127,255})); connect(pum1.m_flow_actual, floSwiBox.mRev_flow) annotation (Line(points={{-11, diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/WatersideEconomizer.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/WatersideEconomizer.mo index acdbdd0aa0e..198d864abf9 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/WatersideEconomizer.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/WatersideEconomizer.mo @@ -180,11 +180,11 @@ equation connect(hexPum.port_b1,senT1OutPum.port_a) annotation (Line(points={{40,-54},{70,-54},{70,-80},{90,-80}},color={0,127,255})); connect(senT1OutPum.port_b, bou1Pum.ports[1]) annotation (Line(points={{110,-80}, - {130,-80},{130,-60}}, color={0,127,255})); + {130,-80},{130,-63}}, color={0,127,255})); connect(hexPum.port_a1,senT1InlPum.port_b) annotation (Line(points={{20,-54},{10,-54},{10,-40},{90,-40}}, color={0,127,255})); connect(senT1InlPum.port_a, bou1Pum.ports[2]) annotation (Line(points={{110,-40}, - {130,-40},{130,-64}}, color={0,127,255})); + {130,-40},{130,-61}}, color={0,127,255})); connect(hexPum.port_b2,senT2OutPum.port_a) annotation (Line(points={{20,-66},{-10,-66},{-10,-40},{-30,-40}}, color={0,127,255})); connect(senT2InlPum.port_b,hexPum.port_a2) @@ -211,8 +211,9 @@ equation {170,44},{152,44}}, color={0,0,127})); connect(uCoo.y, hexVal.uCoo) annotation (Line(points={{-179,80},{0,80},{0,20},{18,20}}, color={255,0,255})); connect(uCoo.y, hexPum.uCoo) annotation (Line(points={{-179,80},{0,80},{0,-60},{18,-60}}, color={255,0,255})); - connect(bou2.ports[1], senT2InlVal.port_a) annotation (Line(points={{-140,3}, - {-120,3},{-120,0},{-50,0}}, color={0,127,255})); + connect(bou2.ports[1], senT2InlVal.port_a) annotation (Line(points={{-140, + -1.5},{-120,-1.5},{-120,0},{-50,0}}, + color={0,127,255})); connect(TChiWatRet.y, bou2.T_in) annotation (Line(points={{-179,20},{-172,20}, {-172,4},{-162,4}}, color={0,0,127})); connect(pum2Pum.port_a, senT2OutPum.port_b) @@ -228,16 +229,17 @@ equation connect(dpSet.y, pum2Val.dp_in) annotation (Line(points={{-178,-30},{-90,-30}, {-90,60},{-70,60},{-70,52}}, color={0,0,127})); connect(resVal.port_b, bou2.ports[2]) annotation (Line(points={{-120,40},{ - -140,40},{-140,1}}, color={0,127,255})); + -140,40},{-140,-0.5}}, + color={0,127,255})); connect(yEva.y, hexVal.yValIsoEva_actual) annotation (Line(points={{-179,60}, {-6,60},{-6,17},{18,17}}, color={0,0,127})); connect(yEva.y, hexPum.yValIsoEva_actual) annotation (Line(points={{-179,60}, {-6.07143,60},{-6.07143,17.1429},{-6,17.1429},{-6,-63},{18,-63}}, color={0,0,127})); - connect(bou2.ports[3], resPum.port_b) annotation (Line(points={{-140,-1},{ + connect(bou2.ports[3], resPum.port_b) annotation (Line(points={{-140,0.5},{ -140,-2},{-130,-2},{-130,-40},{-120,-40}}, color={0,127,255})); connect(senT2InlPum.port_a, bou2.ports[4]) annotation (Line(points={{-50,-80}, - {-140,-80},{-140,-3}}, color={0,127,255})); + {-140,-80},{-140,1.5}},color={0,127,255})); annotation ( Diagram( coordinateSystem( diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order index 8d5204b563e..efd8849c385 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/package.order @@ -1,6 +1,7 @@ Borefield Chiller HeatExchanger +HeatPump HeatPumpDHWTank SwitchBox WatersideEconomizer diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order index 21578f7a969..419774e0bf0 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order @@ -6,3 +6,5 @@ HeatPumpDHWTank SwitchBox WatersideEconomizer Validation +BaseClasses +HeatPumpExtended diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos new file mode 100644 index 00000000000..fc40a3e87e5 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mos @@ -0,0 +1,11 @@ +simulateModel("Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.Validation.HeatPump", + method="cvode", + tolerance=1e-6, + startTime=0, + stopTime=86400, + resultFile="HeatPump"); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.senTDisSup.T", "heaPum.senTEvaRet.T", "senTLoaSup.T"}, range={0.0, 90000.0, 0.0, 40.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}, timeUnit="s", displayUnits={"degC", "degC", "degC"}); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.heaPum.QCon_flow", "heaPum.heaPum.QCon_flow_nominal"}, range={0.0, 90000.0, -500.0, 1500.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"W", "W"}); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.heaPum.m1_flow", "heaPum.heaPum.m2_flow"}, range={0.0, 90000.0, -0.02, 0.06}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"kg/s", "kg/s"}); +createPlot(id=1, position={532, 0, 831, 646}, y={"heaPum.PHea"}, range={0.0, 90000.0, -500.0, 1000.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); + From ea58eff0c622d842d273b61e5a8a2e5ca8ac73d6 Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 2 Nov 2023 07:24:10 -0700 Subject: [PATCH 128/183] Name and package order changes --- .../PartialHeatPumpHeatExchanger.mo | 6 +- .../Combined/HeatPumpHeatExchanger.mo | 4 +- .../{HeatPump.mo => PartialHeatPump.mo} | 25 +- .../Subsystems/BaseClasses/package.order | 2 +- .../Combined/Subsystems/HeatPump.mo | 279 +------------- .../Combined/Subsystems/HeatPumpExtended.mo | 112 ------ .../Combined/Subsystems/HeatPump_Old.mo | 359 ++++++++++++++++++ .../Subsystems/Validation/HeatPump.mo | 4 +- .../Combined/Subsystems/package.order | 2 +- 9 files changed, 400 insertions(+), 393 deletions(-) rename Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/{HeatPump.mo => PartialHeatPump.mo} (96%) delete mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo create mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index 646bebee0f1..c1dca4e99a1 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -314,14 +314,14 @@ model PartialHeatPumpHeatExchanger Buildings.Controls.OBC.CDL.Logical.TrueFalseHold enaHea( trueHoldDuration=15*60) "Enable heating" annotation (Placement(transformation(extent={{-140,150},{-120,170}}))); - Subsystems.HeatPumpExtended proHeaWat( + Subsystems.HeatPump proHeaWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, dT_nominal=dT_nominal, final have_varFloCon=have_varFloCon, final COP_nominal=COPHeaWat_nominal, final TCon_nominal=THeaWatSup_nominal, - final TEva_nominal=TDisWatMin-dT_nominal, + final TEva_nominal=TDisWatMin - dT_nominal, final Q1_flow_nominal=QHeaWat_flow_nominal, final allowFlowReversal1=allowFlowReversalBui, final allowFlowReversal2=allowFlowReversalSer, @@ -587,7 +587,7 @@ When enabled,
  • the heat pumps and the evaporator and condenser water pumps are controlled based on the principles described in - + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump. The evaporator and condenser water mass flow rates are computed based on the logic described in diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo index 187af3279e0..c826a56e647 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/HeatPumpHeatExchanger.mo @@ -5,7 +5,7 @@ model HeatPumpHeatExchanger Buildings.Experimental.DHC.EnergyTransferStations.Combined.BaseClasses.PartialHeatPumpHeatExchanger( volMix_a(nPorts=4), volMix_b(nPorts=4)); - Subsystems.HeatPumpExtended proHotWat( + Subsystems.HeatPump proHotWat( redeclare final package Medium1 = MediumBui, redeclare final package Medium2 = MediumSer, final COP_nominal=COPHotWat_nominal, @@ -112,7 +112,7 @@ When enabled,
  • The heat pump and the evaporator and condenser water pumps are controlled based on the principles described in - + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump.
  • diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo similarity index 96% rename from Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo rename to Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo index 891745c2f7e..1b1a7d5bfc2 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/HeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo @@ -1,5 +1,6 @@ within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.BaseClasses; -model HeatPump "Base class for subsystems containing a heat pump" +model PartialHeatPump + "Partial base class for subsystems containing a heat pump" replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium "Medium model on condenser side" annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), @@ -217,56 +218,56 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{-12,0},{60,-78}}, + extent={{-32,40},{40,-38}}, lineColor={0,0,255}, pattern=LinePattern.None, fillColor={95,95,95}, fillPattern=FillPattern.Solid), Rectangle( - extent={{2,-60},{48,-68}}, + extent={{-18,-20},{28,-28}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Polygon( - points={{8,-38},{4,-46},{12,-46},{8,-38}}, + points={{-12,2},{-16,-6},{-8,-6},{-12,2}}, lineColor={0,0,0}, smooth=Smooth.None, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Polygon( - points={{8,-38},{4,-30},{12,-30},{8,-38}}, + points={{-12,2},{-16,10},{-8,10},{-12,2}}, lineColor={0,0,0}, smooth=Smooth.None, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{38,-20},{42,-60}}, + extent={{18,20},{22,-20}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Ellipse( - extent={{32,-32},{50,-50}}, + extent={{12,8},{30,-10}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Polygon( - points={{40,-32},{32,-44},{50,-44},{40,-32}}, + points={{20,8},{12,-4},{30,-4},{20,8}}, lineColor={0,0,0}, smooth=Smooth.None, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{6,-46},{10,-60}}, + extent={{-14,-6},{-10,-20}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{6,-20},{10,-30}}, + extent={{-14,20},{-10,10}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), Rectangle( - extent={{0,-12},{46,-20}}, + extent={{-20,28},{26,20}}, lineColor={0,0,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid)}), Diagram( @@ -312,4 +313,4 @@ First implementation.
")); -end HeatPump; +end PartialHeatPump; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order index 598f327d13d..b322085164b 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/package.order @@ -1 +1 @@ -HeatPump +PartialHeatPump diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo index f83a89c9227..d6f7f1e4448 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo @@ -1,61 +1,14 @@ within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; model HeatPump "Base subsystem with water-to-water heat pump" - replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium - "Medium model on condenser side" - annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), - choice(redeclare package Medium = - Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) - "Propylene glycol water, 40% mass fraction"))); - replaceable package Medium2=Modelica.Media.Interfaces.PartialMedium - "Medium model on evaporator side" - annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), - choice(redeclare package Medium = - Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) - "Propylene glycol water, 40% mass fraction"))); - parameter Boolean have_pumCon = true - "Set to true to include a condenser pump (false for external pump)" - annotation(Evaluate=true); + extends + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.BaseClasses.PartialHeatPump( + heaPum( + QCon_flow_nominal=Q1_flow_nominal)); parameter Boolean have_varFloCon = true "Set to true for a variable condenser flow" - annotation(Evaluate=true, Dialog(enable=have_pumCon)); - parameter Boolean have_varFloEva = true - "Set to true for a variable evaporator flow" annotation(Evaluate=true); - parameter Real COP_nominal(final unit="1") - "Heat pump COP" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature TCon_nominal - "Condenser outlet temperature used to compute COP_nominal" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature TEva_nominal - "Evaporator outlet temperature used to compute COP_nominal" - annotation (Dialog(group="Nominal condition")); parameter Modelica.Units.SI.HeatFlowRate Q1_flow_nominal(min=0) "Heating heat flow rate" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dT1_nominal(final min=0)= - 5 "Temperature difference condenser outlet-inlet" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dT2_nominal(final max=0)= - -5 "Temperature difference evaporator outlet-inlet" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Pressure dp1_nominal(displayUnit="Pa") - "Pressure difference over condenser" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Pressure dp2_nominal(displayUnit="Pa") - "Pressure difference over evaporator" - annotation (Dialog(group="Nominal condition")); - parameter Boolean allowFlowReversal1=false - "Set to true to allow flow reversal on condenser side" - annotation (Dialog(tab="Assumptions"), Evaluate=true); - parameter Boolean allowFlowReversal2=false - "Set to true to allow flow reversal on evaporator side" - annotation (Dialog(tab="Assumptions"), Evaluate=true); - final parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal(min=0)= - heaPum.m1_flow_nominal "Mass flow rate on condenser side" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal(min=0)= - heaPum.m2_flow_nominal "Mass flow rate on evaporator side" - annotation (Dialog(group="Nominal condition")); // IO CONNECTORS Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) "Enable signal" @@ -69,239 +22,45 @@ model HeatPump "Base subsystem with water-to-water heat pump" annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), iconTransformation(extent={{-140,10},{-100,50}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput m1_flow( - final unit="kg/s") if have_varFloCon and have_pumCon + final unit="kg/s") if have_varFloCon "Condenser mass flow rate" annotation (Placement(transformation(extent={{-240,60},{-200,100}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput m2_flow( - final unit="kg/s") if have_varFloEva - "Evaporator mass flow rate" - annotation (Placement(transformation(extent={{-240,20},{-200,60}}), - iconTransformation(extent={{-140,-50},{-100,-10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_a2( - redeclare final package Medium = Medium2, - m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), - h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) - "Fluid port for entering evaporator water" annotation (Placement( - transformation(extent={{190,-70},{210,-50}}), iconTransformation(extent= - {{90,-70},{110,-50}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_b2( - redeclare final package Medium = Medium2, - m_flow(max=if allowFlowReversal2 then +Modelica.Constants.inf else 0), - h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) - "Fluid port for leaving evaporator water" annotation (Placement( - transformation(extent={{190,50},{210,70}}), iconTransformation(extent={{ - 90,50},{110,70}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_a1( - redeclare final package Medium = Medium1, - m_flow(min=if allowFlowReversal1 then -Modelica.Constants.inf else 0), - h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) - "Fluid port for entering condenser water" annotation (Placement( - transformation(extent={{-210,-70},{-190,-50}}), iconTransformation( - extent={{-110,-70},{-90,-50}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_b1( - redeclare final package Medium = Medium1, - m_flow(max=if allowFlowReversal1 then +Modelica.Constants.inf else 0), - h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) - "Fluid port for leaving condenser water" annotation (Placement( - transformation(extent={{-210,50},{-190,70}}), iconTransformation(extent= - {{-110,50},{-90,70}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput PHea( - final unit="W") "Heat pump power" - annotation (Placement(transformation(extent={{200,20},{240,60}}), - iconTransformation(extent={{100,10},{140,50}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput PPum( - final unit="W") "Pump power" - annotation (Placement(transformation(extent={{200,-20},{240,20}}), - iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mEva_flow(final unit="kg/s") - "Evaporator water mass flow rate" - annotation (Placement(transformation( - extent={{200,-60},{240,-20}}), iconTransformation(extent={{100,-50},{ - 140,-10}}))); // COMPONENTS - Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare final package Medium1 = Medium1, - redeclare final package Medium2 = Medium2, - final dTEva_nominal=dT2_nominal, - final dTCon_nominal=dT1_nominal, - final TCon_nominal=TCon_nominal, - final TEva_nominal=TEva_nominal, - final allowFlowReversal1=allowFlowReversal1, - final allowFlowReversal2=allowFlowReversal2, - final use_eta_Carnot_nominal=false, - final COP_nominal=COP_nominal, - final QCon_flow_nominal=Q1_flow_nominal, - final dp1_nominal=dp1_nominal, - final dp2_nominal=dp2_nominal) - "Heat pump (index 1 for condenser side)" - annotation (Placement(transformation(extent={{0,-24},{20,-4}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( - redeclare final package Medium = Medium2, - final m_flow_nominal=m2_flow_nominal, - final allowFlowReversal=allowFlowReversal2, - dp_nominal=dp2_nominal) - "Heat pump evaporator water pump" - annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumCon( - redeclare final package Medium = Medium1, - final m_flow_nominal=m1_flow_nominal, - final allowFlowReversal=allowFlowReversal1, - dp_nominal=dp1_nominal) if have_pumCon - "Heat pump condenser water pump" - annotation (Placement(transformation(extent={{-70,-60},{-50,-40}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant floConNom( final k=m1_flow_nominal) if not have_varFloCon "Nominal flow rate" annotation (Placement(transformation(extent={{-100,80},{-120,100}}))); Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom( - final k=m2_flow_nominal) if not have_varFloEva - "Nominal flow rate" - annotation (Placement(transformation(extent={{0,80},{-20,100}}))); - Fluid.Sensors.TemperatureTwoPort senTConLvg( - redeclare final package Medium = Medium1, - final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=m1_flow_nominal) - "Condenser water leaving temperature" - annotation (Placement( - transformation( - extent={{10,-10},{-10,10}}, - rotation=-90, - origin={40,20}))); - Fluid.Sensors.TemperatureTwoPort senTConEnt( - redeclare final package Medium = Medium1, - final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=m1_flow_nominal) - "Condenser water entering temperature" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-20}))); - Buildings.Controls.OBC.CDL.Reals.Switch enaHeaPum( - u2(start=false)) - "Enable heat pump by switching to actual set point" - annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); - Buildings.Controls.OBC.CDL.Reals.Add add2 "Adder" - annotation (Placement(transformation(extent={{140,-10},{160,10}}))); - Modelica.Blocks.Sources.Constant zer(final k=0) if not have_pumCon - "Replacement variable" - annotation (Placement(transformation(extent={{80,-110},{100,-90}}))); - Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum[2]( - y(each start=false), - t=1e-2 .* {m1_flow_nominal,m2_flow_nominal}, - h=0.5e-2 .* {m1_flow_nominal, m2_flow_nominal}) - "Pump return status" - annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); - Buildings.Controls.OBC.CDL.Logical.And ena - "Enable heat pump if pump return status on" - annotation (Placement(transformation(extent={{-120,-110},{-140,-90}}))); - Modelica.Blocks.Sources.Constant one(final k=1) if not have_pumCon - "Replacement variable" - annotation (Placement(transformation(extent={{60,-110},{40,-90}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply floCon if have_pumCon + Buildings.Controls.OBC.CDL.Reals.Multiply floCon "Zero flow rate if not enabled" annotation (Placement(transformation(extent={{-120,110},{-100,130}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply floEva - "Zero flow rate if not enabled" - annotation (Placement(transformation(extent={{-20,110},{0,130}}))); -protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare package Medium = Medium1, - m_flow_nominal=m1_flow_nominal) if not have_pumCon - "Dummy connection used if model is configured to have no pump" - annotation (Placement(transformation(extent={{-70,-90},{-50,-70}}))); equation - connect(pumEva.port_b,heaPum. port_a2) - annotation (Line(points={{50,-60},{40,-60},{40,-20},{20,-20}}, - color={0,127,255})); - connect(heaPum.port_b1,senTConLvg. port_a) annotation (Line(points={{20,-8},{40, - -8},{40,10}}, color={0,127,255})); - connect(senTConEnt.port_b,heaPum. port_a1) annotation (Line(points={{-40,-10}, - {-40,-8},{0,-8}}, color={0,127,255})); - connect(senTConEnt.T,enaHeaPum. u3) annotation (Line(points={{-51,-20},{-150,-20}, - {-150,12},{-142,12}}, color={0,0,127})); - connect(enaHeaPum.y,heaPum. TSet) annotation (Line(points={{-118,20},{-10,20}, - {-10,-5},{-2,-5}}, color={0,0,127})); connect(uEna, booToRea.u) annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); - connect(TSupSet, enaHeaPum.u1) annotation (Line(points={{-220,-20},{-180,-20}, - {-180,28},{-142,28}}, color={0,0,127})); - connect(heaPum.port_b2, port_b2) annotation (Line(points={{0,-20},{-20,-20},{-20, - 40},{180,40},{180,60},{200,60}}, color={0,127,255})); - connect(senTConLvg.port_b, port_b1) - annotation (Line(points={{40,30},{40,60},{-200,60}}, color={0,127,255})); - connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{49,-55},{ - 44,-55},{44,-40},{220,-40}}, color={0,0,127})); - connect(port_a2, pumEva.port_a) - annotation (Line(points={{200,-60},{70,-60}}, color={0,127,255})); - connect(port_a1, pumCon.port_a) - annotation (Line(points={{-200,-60},{-140,-60},{-140,-50},{-70,-50}}, - color={0,127,255})); - connect(add2.y, PPum) - annotation (Line(points={{162,0},{220,0}}, color={0,0,127})); - connect(heaPum.P, PHea) annotation (Line(points={{21,-14},{190,-14},{190,40},{ - 220,40}}, color={0,0,127})); - connect(pumCon.P, add2.u2) annotation (Line(points={{-49,-41},{0,-41},{0,-80}, - {120,-80},{120,-6},{138,-6}}, color={0,0,127})); - connect(pumEva.P, add2.u1) annotation (Line(points={{49,-51},{46,-51},{46,6},{ - 138,6}}, color={0,0,127})); - connect(pumCon.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-50}, - {-40,-50},{-40,-30}},color={0,127,255})); - connect(zer.y, add2.u2) annotation (Line(points={{101,-100},{120,-100},{120, - -6},{138,-6}}, - color={0,0,127})); - connect(pumCon.m_flow_actual, staPum[1].u) annotation (Line(points={{-49,-45}, - {-38,-45},{-38,-100},{-78,-100}}, color={0,0,127})); - connect(pumEva.m_flow_actual, staPum[2].u) annotation (Line(points={{49,-55},{ - 20,-55},{20,-100},{-78,-100}}, color={0,0,127})); - connect(staPum[1].y, ena.u1) - annotation (Line(points={{-102,-100},{-118,-100}}, color={255,0,255})); - connect(staPum[2].y, ena.u2) annotation (Line(points={{-102,-100},{-110,-100}, - {-110,-108},{-118,-108}}, color={255,0,255})); - connect(ena.y, enaHeaPum.u2) annotation (Line(points={{-142,-100},{-160,-100}, - {-160,20},{-142,20}}, color={255,0,255})); - connect(one.y, staPum[1].u) - annotation (Line(points={{39,-100},{-78,-100}}, color={0,0,127})); connect(booToRea.y, floCon.u1) annotation (Line(points={{-158,120},{-140,120}, {-140,126},{-122,126}}, color={0,0,127})); connect(m1_flow, floCon.u2) annotation (Line(points={{-220,80},{-140,80},{-140, 114},{-122,114}}, color={0,0,127})); - connect(booToRea.y, floEva.u1) annotation (Line(points={{-158,120},{-140,120}, - {-140,134},{-40,134},{-40,126},{-22,126}}, color={0,0,127})); connect(floConNom.y, floCon.u2) annotation (Line(points={{-122,90},{-130,90},{ -130,114},{-122,114}}, color={0,0,127})); - connect(m2_flow, floEva.u2) annotation (Line(points={{-220,40},{-40,40},{-40,114}, - {-22,114}}, color={0,0,127})); - connect(floEvaNom.y, floEva.u2) annotation (Line(points={{-22,90},{-30,90},{-30, - 114},{-22,114}}, color={0,0,127})); - connect(floEva.y, pumEva.m_flow_in) - annotation (Line(points={{2,120},{60,120},{60,-48}}, color={0,0,127})); + connect(port_a1, heaPum.port_a1) annotation (Line(points={{-200,-60},{-120, + -60},{-120,-54},{-82,-54}}, color={0,127,255})); + connect(pumCon.port_b, port_b1) annotation (Line(points={{-40,14},{-120,14},{ + -120,60},{-200,60}}, color={0,127,255})); + connect(TSupSet, heaPum.TSet) annotation (Line(points={{-220,-20},{-100,-20}, + {-100,-51},{-84,-51}}, color={0,0,127})); + connect(uEna, floEva.u) annotation (Line(points={{-220,120},{-190,120},{-190, + 136},{-90,136},{-90,90},{-82,90}}, color={255,0,255})); connect(floCon.y, pumCon.m_flow_in) - annotation (Line(points={{-98,120},{-60,120},{-60,-38}}, color={0,0,127})); - connect(port_a1, pip.port_a) annotation (Line(points={{-200,-60},{-140,-60},{ - -140,-80},{-70,-80}}, color={0,127,255})); - connect(pip.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-80},{ - -40,-80},{-40,-30}}, color={0,127,255})); + annotation (Line(points={{-98,120},{-30,120},{-30,26}}, color={0,0,127})); + connect(conPI.trigger, floEva.u) annotation (Line(points={{124,8},{124,-2},{ + 110,-2},{110,136},{-90,136},{-90,90},{-82,90}}, color={255,0,255})); annotation ( defaultComponentName="heaPum", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-60,60},{60,-60}}, - lineColor={27,0,55}, - fillColor={170,213,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-58,62},{62,-58}}, - lineColor={27,0,55}, - fillColor={170,213,255}, - fillPattern=FillPattern.Solid)}), Diagram( + Icon(coordinateSystem(preserveAspectRatio=false)), + Diagram( coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), Documentation(info="

diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo deleted file mode 100644 index 95a586ee6e3..00000000000 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPumpExtended.mo +++ /dev/null @@ -1,112 +0,0 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; -model HeatPumpExtended "Base subsystem with water-to-water heat pump" - extends Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.BaseClasses.HeatPump(heaPum( - QCon_flow_nominal=Q1_flow_nominal)); - parameter Boolean have_varFloCon = true - "Set to true for a variable condenser flow" - annotation(Evaluate=true); - parameter Modelica.Units.SI.HeatFlowRate Q1_flow_nominal(min=0) - "Heating heat flow rate" annotation (Dialog(group="Nominal condition")); - // IO CONNECTORS - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) - "Enable signal" - annotation ( - Placement(transformation(extent={{-240,100},{-200,140}}), - iconTransformation(extent={{-140,70},{-100,110}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( - final unit="K", - displayUnit="degC") - "Supply temperature set point" - annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), - iconTransformation(extent={{-140,10},{-100,50}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput m1_flow( - final unit="kg/s") if have_varFloCon - "Condenser mass flow rate" - annotation (Placement(transformation(extent={{-240,60},{-200,100}}), - iconTransformation(extent={{-140,-20},{-100,20}}))); - // COMPONENTS - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floConNom( - final k=m1_flow_nominal) if not have_varFloCon - "Nominal flow rate" - annotation (Placement(transformation(extent={{-100,80},{-120,100}}))); - Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea - annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply floCon - "Zero flow rate if not enabled" - annotation (Placement(transformation(extent={{-120,110},{-100,130}}))); -equation - connect(uEna, booToRea.u) - annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); - connect(booToRea.y, floCon.u1) annotation (Line(points={{-158,120},{-140,120}, - {-140,126},{-122,126}}, color={0,0,127})); - connect(m1_flow, floCon.u2) annotation (Line(points={{-220,80},{-140,80},{-140, - 114},{-122,114}}, color={0,0,127})); - connect(floConNom.y, floCon.u2) annotation (Line(points={{-122,90},{-130,90},{ - -130,114},{-122,114}}, color={0,0,127})); - connect(port_a1, heaPum.port_a1) annotation (Line(points={{-200,-60},{-120, - -60},{-120,-54},{-82,-54}}, color={0,127,255})); - connect(pumCon.port_b, port_b1) annotation (Line(points={{-40,14},{-120,14},{ - -120,60},{-200,60}}, color={0,127,255})); - connect(TSupSet, heaPum.TSet) annotation (Line(points={{-220,-20},{-100,-20}, - {-100,-51},{-84,-51}}, color={0,0,127})); - connect(uEna, floEva.u) annotation (Line(points={{-220,120},{-190,120},{-190, - 136},{-90,136},{-90,90},{-82,90}}, color={255,0,255})); - connect(floCon.y, pumCon.m_flow_in) - annotation (Line(points={{-98,120},{-30,120},{-30,26}}, color={0,0,127})); - connect(conPI.trigger, floEva.u) annotation (Line(points={{124,8},{124,-2},{ - 110,-2},{110,136},{-90,136},{-90,90},{-82,90}}, color={255,0,255})); - annotation ( - defaultComponentName="heaPum", - Icon(coordinateSystem(preserveAspectRatio=false)), - Diagram( - coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), - Documentation(info=" -

-This model represents a water-to-water heat pump, an evaporator water pump, -and an optional condenser water pump if have_pumCon is set to -true. -The heat pump model is described in - -Buildings.Fluid.HeatPumps.Carnot_TCon. -By default variable speed pumps are considered. -Constant speed pumps may also be represented by setting have_varFloEva -and have_varFloCon to false. -

-

Controls

-

-The system is enabled when the input control signal uEna switches to -true. -When enabled, -

-
    -
  • -the evaporator and optionally the condenser water pumps are commanded on and supply either -the mass flow rate set point provided as an input in the case of variable speed pumps, -or the nominal mass flow rate in the case of constant speed pumps, -
  • -
  • -the heat pump is commanded on when the evaporator and optionally the condenser water pump -are proven on. When enabled, the heat pump controller—idealized in this model—tracks the -supply temperature set point at the condenser outlet. -
  • -
-", revisions=" -
    -
  • -May 3, 2023, by David Blum:
    -Assigned dp_nominal to condenser pump.
    -This is for - -issue 3379. -
  • -
  • -November 16, 2022, by Michael Wetter:
    -Set pumEva.dp_nominal to correct value. -
  • -
  • -February 23, 2021, by Antoine Gautier:
    -First implementation. -
  • -
-")); -end HeatPumpExtended; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo new file mode 100644 index 00000000000..a76461d56ed --- /dev/null +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo @@ -0,0 +1,359 @@ +within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; +model HeatPump_Old "Base subsystem with water-to-water heat pump" + replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium + "Medium model on condenser side" + annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + replaceable package Medium2=Modelica.Media.Interfaces.PartialMedium + "Medium model on evaporator side" + annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), + choice(redeclare package Medium = + Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) + "Propylene glycol water, 40% mass fraction"))); + parameter Boolean have_pumCon = true + "Set to true to include a condenser pump (false for external pump)" + annotation(Evaluate=true); + parameter Boolean have_varFloCon = true + "Set to true for a variable condenser flow" + annotation(Evaluate=true, Dialog(enable=have_pumCon)); + parameter Boolean have_varFloEva = true + "Set to true for a variable evaporator flow" + annotation(Evaluate=true); + parameter Real COP_nominal(final unit="1") + "Heat pump COP" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TCon_nominal + "Condenser outlet temperature used to compute COP_nominal" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Temperature TEva_nominal + "Evaporator outlet temperature used to compute COP_nominal" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.HeatFlowRate Q1_flow_nominal(min=0) + "Heating heat flow rate" annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.TemperatureDifference dT1_nominal(final min=0)= + 5 "Temperature difference condenser outlet-inlet" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.TemperatureDifference dT2_nominal(final max=0)= + -5 "Temperature difference evaporator outlet-inlet" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Pressure dp1_nominal(displayUnit="Pa") + "Pressure difference over condenser" + annotation (Dialog(group="Nominal condition")); + parameter Modelica.Units.SI.Pressure dp2_nominal(displayUnit="Pa") + "Pressure difference over evaporator" + annotation (Dialog(group="Nominal condition")); + parameter Boolean allowFlowReversal1=false + "Set to true to allow flow reversal on condenser side" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + parameter Boolean allowFlowReversal2=false + "Set to true to allow flow reversal on evaporator side" + annotation (Dialog(tab="Assumptions"), Evaluate=true); + final parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal(min=0)= + heaPum.m1_flow_nominal "Mass flow rate on condenser side" + annotation (Dialog(group="Nominal condition")); + final parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal(min=0)= + heaPum.m2_flow_nominal "Mass flow rate on evaporator side" + annotation (Dialog(group="Nominal condition")); + // IO CONNECTORS + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) + "Enable signal" + annotation ( + Placement(transformation(extent={{-240,100},{-200,140}}), + iconTransformation(extent={{-140,70},{-100,110}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( + final unit="K", + displayUnit="degC") + "Supply temperature set point" + annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), + iconTransformation(extent={{-140,10},{-100,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput m1_flow( + final unit="kg/s") if have_varFloCon and have_pumCon + "Condenser mass flow rate" + annotation (Placement(transformation(extent={{-240,60},{-200,100}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput m2_flow( + final unit="kg/s") if have_varFloEva + "Evaporator mass flow rate" + annotation (Placement(transformation(extent={{-240,20},{-200,60}}), + iconTransformation(extent={{-140,-50},{-100,-10}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a2( + redeclare final package Medium = Medium2, + m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), + h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) + "Fluid port for entering evaporator water" annotation (Placement( + transformation(extent={{190,-70},{210,-50}}), iconTransformation(extent= + {{90,-70},{110,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b2( + redeclare final package Medium = Medium2, + m_flow(max=if allowFlowReversal2 then +Modelica.Constants.inf else 0), + h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) + "Fluid port for leaving evaporator water" annotation (Placement( + transformation(extent={{190,50},{210,70}}), iconTransformation(extent={{ + 90,50},{110,70}}))); + Modelica.Fluid.Interfaces.FluidPort_a port_a1( + redeclare final package Medium = Medium1, + m_flow(min=if allowFlowReversal1 then -Modelica.Constants.inf else 0), + h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) + "Fluid port for entering condenser water" annotation (Placement( + transformation(extent={{-210,-70},{-190,-50}}), iconTransformation( + extent={{-110,-70},{-90,-50}}))); + Modelica.Fluid.Interfaces.FluidPort_b port_b1( + redeclare final package Medium = Medium1, + m_flow(max=if allowFlowReversal1 then +Modelica.Constants.inf else 0), + h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) + "Fluid port for leaving condenser water" annotation (Placement( + transformation(extent={{-210,50},{-190,70}}), iconTransformation(extent= + {{-110,50},{-90,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput PHea( + final unit="W") "Heat pump power" + annotation (Placement(transformation(extent={{200,20},{240,60}}), + iconTransformation(extent={{100,10},{140,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput PPum( + final unit="W") "Pump power" + annotation (Placement(transformation(extent={{200,-20},{240,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput mEva_flow(final unit="kg/s") + "Evaporator water mass flow rate" + annotation (Placement(transformation( + extent={{200,-60},{240,-20}}), iconTransformation(extent={{100,-50},{ + 140,-10}}))); + // COMPONENTS + Fluid.HeatPumps.Carnot_TCon heaPum( + redeclare final package Medium1 = Medium1, + redeclare final package Medium2 = Medium2, + final dTEva_nominal=dT2_nominal, + final dTCon_nominal=dT1_nominal, + final TCon_nominal=TCon_nominal, + final TEva_nominal=TEva_nominal, + final allowFlowReversal1=allowFlowReversal1, + final allowFlowReversal2=allowFlowReversal2, + final use_eta_Carnot_nominal=false, + final COP_nominal=COP_nominal, + final QCon_flow_nominal=Q1_flow_nominal, + final dp1_nominal=dp1_nominal, + final dp2_nominal=dp2_nominal) + "Heat pump (index 1 for condenser side)" + annotation (Placement(transformation(extent={{0,-24},{20,-4}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( + redeclare final package Medium = Medium2, + final m_flow_nominal=m2_flow_nominal, + final allowFlowReversal=allowFlowReversal2, + dp_nominal=dp2_nominal) + "Heat pump evaporator water pump" + annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); + Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumCon( + redeclare final package Medium = Medium1, + final m_flow_nominal=m1_flow_nominal, + final allowFlowReversal=allowFlowReversal1, + dp_nominal=dp1_nominal) if have_pumCon + "Heat pump condenser water pump" + annotation (Placement(transformation(extent={{-70,-60},{-50,-40}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floConNom( + final k=m1_flow_nominal) if not have_varFloCon + "Nominal flow rate" + annotation (Placement(transformation(extent={{-100,80},{-120,100}}))); + Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea + annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom( + final k=m2_flow_nominal) if not have_varFloEva + "Nominal flow rate" + annotation (Placement(transformation(extent={{0,80},{-20,100}}))); + Fluid.Sensors.TemperatureTwoPort senTConLvg( + redeclare final package Medium = Medium1, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=m1_flow_nominal) + "Condenser water leaving temperature" + annotation (Placement( + transformation( + extent={{10,-10},{-10,10}}, + rotation=-90, + origin={40,20}))); + Fluid.Sensors.TemperatureTwoPort senTConEnt( + redeclare final package Medium = Medium1, + final allowFlowReversal=allowFlowReversal1, + final m_flow_nominal=m1_flow_nominal) + "Condenser water entering temperature" + annotation (Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-40,-20}))); + Buildings.Controls.OBC.CDL.Reals.Switch enaHeaPum( + u2(start=false)) + "Enable heat pump by switching to actual set point" + annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); + Buildings.Controls.OBC.CDL.Reals.Add add2 "Adder" + annotation (Placement(transformation(extent={{140,-10},{160,10}}))); + Modelica.Blocks.Sources.Constant zer(final k=0) if not have_pumCon + "Replacement variable" + annotation (Placement(transformation(extent={{80,-110},{100,-90}}))); + Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum[2]( + y(each start=false), + t=1e-2 .* {m1_flow_nominal,m2_flow_nominal}, + h=0.5e-2 .* {m1_flow_nominal, m2_flow_nominal}) + "Pump return status" + annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); + Buildings.Controls.OBC.CDL.Logical.And ena + "Enable heat pump if pump return status on" + annotation (Placement(transformation(extent={{-120,-110},{-140,-90}}))); + Modelica.Blocks.Sources.Constant one(final k=1) if not have_pumCon + "Replacement variable" + annotation (Placement(transformation(extent={{60,-110},{40,-90}}))); + Buildings.Controls.OBC.CDL.Reals.Multiply floCon if have_pumCon + "Zero flow rate if not enabled" + annotation (Placement(transformation(extent={{-120,110},{-100,130}}))); + Buildings.Controls.OBC.CDL.Reals.Multiply floEva + "Zero flow rate if not enabled" + annotation (Placement(transformation(extent={{-20,110},{0,130}}))); +protected + Fluid.FixedResistances.LosslessPipe pip( + redeclare package Medium = Medium1, + m_flow_nominal=m1_flow_nominal) if not have_pumCon + "Dummy connection used if model is configured to have no pump" + annotation (Placement(transformation(extent={{-70,-90},{-50,-70}}))); +equation + connect(pumEva.port_b,heaPum. port_a2) + annotation (Line(points={{50,-60},{40,-60},{40,-20},{20,-20}}, + color={0,127,255})); + connect(heaPum.port_b1,senTConLvg. port_a) annotation (Line(points={{20,-8},{40, + -8},{40,10}}, color={0,127,255})); + connect(senTConEnt.port_b,heaPum. port_a1) annotation (Line(points={{-40,-10}, + {-40,-8},{0,-8}}, color={0,127,255})); + connect(senTConEnt.T,enaHeaPum. u3) annotation (Line(points={{-51,-20},{-150,-20}, + {-150,12},{-142,12}}, color={0,0,127})); + connect(enaHeaPum.y,heaPum. TSet) annotation (Line(points={{-118,20},{-10,20}, + {-10,-5},{-2,-5}}, color={0,0,127})); + connect(uEna, booToRea.u) + annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); + connect(TSupSet, enaHeaPum.u1) annotation (Line(points={{-220,-20},{-180,-20}, + {-180,28},{-142,28}}, color={0,0,127})); + connect(heaPum.port_b2, port_b2) annotation (Line(points={{0,-20},{-20,-20},{-20, + 40},{180,40},{180,60},{200,60}}, color={0,127,255})); + connect(senTConLvg.port_b, port_b1) + annotation (Line(points={{40,30},{40,60},{-200,60}}, color={0,127,255})); + connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{49,-55},{ + 44,-55},{44,-40},{220,-40}}, color={0,0,127})); + connect(port_a2, pumEva.port_a) + annotation (Line(points={{200,-60},{70,-60}}, color={0,127,255})); + connect(port_a1, pumCon.port_a) + annotation (Line(points={{-200,-60},{-140,-60},{-140,-50},{-70,-50}}, + color={0,127,255})); + connect(add2.y, PPum) + annotation (Line(points={{162,0},{220,0}}, color={0,0,127})); + connect(heaPum.P, PHea) annotation (Line(points={{21,-14},{190,-14},{190,40},{ + 220,40}}, color={0,0,127})); + connect(pumCon.P, add2.u2) annotation (Line(points={{-49,-41},{0,-41},{0,-80}, + {120,-80},{120,-6},{138,-6}}, color={0,0,127})); + connect(pumEva.P, add2.u1) annotation (Line(points={{49,-51},{46,-51},{46,6},{ + 138,6}}, color={0,0,127})); + connect(pumCon.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-50}, + {-40,-50},{-40,-30}},color={0,127,255})); + connect(zer.y, add2.u2) annotation (Line(points={{101,-100},{120,-100},{120, + -6},{138,-6}}, + color={0,0,127})); + connect(pumCon.m_flow_actual, staPum[1].u) annotation (Line(points={{-49,-45}, + {-38,-45},{-38,-100},{-78,-100}}, color={0,0,127})); + connect(pumEva.m_flow_actual, staPum[2].u) annotation (Line(points={{49,-55},{ + 20,-55},{20,-100},{-78,-100}}, color={0,0,127})); + connect(staPum[1].y, ena.u1) + annotation (Line(points={{-102,-100},{-118,-100}}, color={255,0,255})); + connect(staPum[2].y, ena.u2) annotation (Line(points={{-102,-100},{-110,-100}, + {-110,-108},{-118,-108}}, color={255,0,255})); + connect(ena.y, enaHeaPum.u2) annotation (Line(points={{-142,-100},{-160,-100}, + {-160,20},{-142,20}}, color={255,0,255})); + connect(one.y, staPum[1].u) + annotation (Line(points={{39,-100},{-78,-100}}, color={0,0,127})); + connect(booToRea.y, floCon.u1) annotation (Line(points={{-158,120},{-140,120}, + {-140,126},{-122,126}}, color={0,0,127})); + connect(m1_flow, floCon.u2) annotation (Line(points={{-220,80},{-140,80},{-140, + 114},{-122,114}}, color={0,0,127})); + connect(booToRea.y, floEva.u1) annotation (Line(points={{-158,120},{-140,120}, + {-140,134},{-40,134},{-40,126},{-22,126}}, color={0,0,127})); + connect(floConNom.y, floCon.u2) annotation (Line(points={{-122,90},{-130,90},{ + -130,114},{-122,114}}, color={0,0,127})); + connect(m2_flow, floEva.u2) annotation (Line(points={{-220,40},{-40,40},{-40,114}, + {-22,114}}, color={0,0,127})); + connect(floEvaNom.y, floEva.u2) annotation (Line(points={{-22,90},{-30,90},{-30, + 114},{-22,114}}, color={0,0,127})); + connect(floEva.y, pumEva.m_flow_in) + annotation (Line(points={{2,120},{60,120},{60,-48}}, color={0,0,127})); + connect(floCon.y, pumCon.m_flow_in) + annotation (Line(points={{-98,120},{-60,120},{-60,-38}}, color={0,0,127})); + connect(port_a1, pip.port_a) annotation (Line(points={{-200,-60},{-140,-60},{ + -140,-80},{-70,-80}}, color={0,127,255})); + connect(pip.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-80},{ + -40,-80},{-40,-30}}, color={0,127,255})); + annotation ( + defaultComponentName="heaPum", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-60,60},{60,-60}}, + lineColor={27,0,55}, + fillColor={170,213,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-58,62},{62,-58}}, + lineColor={27,0,55}, + fillColor={170,213,255}, + fillPattern=FillPattern.Solid)}), Diagram( + coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}}), + graphics={Text( + extent={{80,122},{146,68}}, + textColor={238,46,47}, + textString="fixme: to be deleted.")}), + Documentation(info=" +

+This model represents a water-to-water heat pump, an evaporator water pump, +and an optional condenser water pump if have_pumCon is set to +true. +The heat pump model is described in + +Buildings.Fluid.HeatPumps.Carnot_TCon. +By default variable speed pumps are considered. +Constant speed pumps may also be represented by setting have_varFloEva +and have_varFloCon to false. +

+

Controls

+

+The system is enabled when the input control signal uEna switches to +true. +When enabled, +

+
    +
  • +the evaporator and optionally the condenser water pumps are commanded on and supply either +the mass flow rate set point provided as an input in the case of variable speed pumps, +or the nominal mass flow rate in the case of constant speed pumps, +
  • +
  • +the heat pump is commanded on when the evaporator and optionally the condenser water pump +are proven on. When enabled, the heat pump controller—idealized in this model—tracks the +supply temperature set point at the condenser outlet. +
  • +
+", revisions=" +
    +
  • +May 3, 2023, by David Blum:
    +Assigned dp_nominal to condenser pump.
    +This is for + +issue 3379. +
  • +
  • +November 16, 2022, by Michael Wetter:
    +Set pumEva.dp_nominal to correct value. +
  • +
  • +February 23, 2021, by Antoine Gautier:
    +First implementation. +
  • +
+")); +end HeatPump_Old; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo index 5d91a7e889a..27b79698af6 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPump.mo @@ -7,7 +7,7 @@ model HeatPump parameter Modelica.Units.SI.Temperature TCon_nominal = 273.15+30 "Nominal condenser outlet temperature"; parameter Modelica.Units.SI.Temperature TAmb_nominal = 273.15+15 "Nominal ambient loop temperature to evaporator"; parameter Modelica.Units.SI.Power QLoa_nominal = 1000 "Nominal load"; - HeatPumpExtended + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump heaPum( redeclare package Medium1 = Medium, redeclare package Medium2 = Medium, @@ -121,7 +121,7 @@ First implementation. info="

This model validates - + Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump.

")); diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order index 419774e0bf0..5bbac2ea481 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order @@ -1,10 +1,10 @@ Borefield Chiller HeatExchanger +HeatPump_Old HeatPump HeatPumpDHWTank SwitchBox WatersideEconomizer Validation BaseClasses -HeatPumpExtended From 8dd05693fe2be2e0767c7a77cc4a713108db12fa Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 10 Nov 2023 17:26:27 -0800 Subject: [PATCH 129/183] Tank charge controller fix --- .../BaseClasses/TankChargingController.mo | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo index ce70219c460..95db2848c37 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo @@ -16,25 +16,27 @@ block TankChargingController iconTransformation(extent={{-120,70},{-100,90}}))); Controls.OBC.CDL.Interfaces.BooleanOutput charge "Outputs true if tank should be charged" annotation (Placement( - transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20}, - {140,20}}))); + transformation(extent={{100,-20},{140,20}}), iconTransformation(extent= + {{100,-20},{140,20}}))); Controls.OBC.CDL.Interfaces.RealInput TTanBot(final unit="K", displayUnit= "degC") "Measured temperature at bottom of tank" annotation (Placement( transformation(extent={{-140,-120},{-100,-80}}), iconTransformation( extent={{-140,-100},{-100,-60}}))); - Controls.OBC.CDL.Logical.Or or2 - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Controls.OBC.CDL.Logical.Latch lat + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Controls.OBC.CDL.Logical.Not not1 + annotation (Placement(transformation(extent={{30,-70},{50,-50}}))); protected Controls.OBC.CDL.Reals.Hysteresis cha(uLow=-5, uHigh=0) "Outputs true if tank should be charged" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Controls.OBC.CDL.Reals.Subtract sub annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); protected Controls.OBC.CDL.Reals.Hysteresis cha1(uLow=-5, uHigh=0) "Outputs true if tank should be charged" - annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); Controls.OBC.CDL.Reals.Subtract sub1 annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); equation @@ -43,19 +45,21 @@ equation connect(sub.u1, TTanTopSet) annotation (Line(points={{-42,6},{-80,6},{-80,70}, {-120,70}}, color={0,0,127})); connect(sub.y, cha.u) - annotation (Line(points={{-18,0},{18,0}}, color={0,0,127})); + annotation (Line(points={{-18,0},{-2,0}}, color={0,0,127})); connect(sub1.y, cha1.u) - annotation (Line(points={{-18,-60},{18,-60}}, color={0,0,127})); + annotation (Line(points={{-18,-60},{-2,-60}}, color={0,0,127})); connect(TTanTopSet, sub1.u1) annotation (Line(points={{-120,70},{-80,70},{-80, 6},{-50,6},{-50,-54},{-42,-54}}, color={0,0,127})); connect(TTanBot, sub1.u2) annotation (Line(points={{-120,-100},{-80,-100},{ -80,-66},{-42,-66}}, color={0,0,127})); - connect(or2.y, charge) - annotation (Line(points={{82,0},{120,0}}, color={255,0,255})); - connect(cha.y, or2.u1) - annotation (Line(points={{42,0},{58,0}}, color={255,0,255})); - connect(or2.u2, cha1.y) annotation (Line(points={{58,-8},{50,-8},{50,-60},{42, - -60}}, color={255,0,255})); + connect(cha.y, lat.u) + annotation (Line(points={{22,0},{48,0}}, color={255,0,255})); + connect(lat.y, charge) + annotation (Line(points={{72,0},{120,0}}, color={255,0,255})); + connect(cha1.y, not1.u) + annotation (Line(points={{22,-60},{28,-60}}, color={255,0,255})); + connect(not1.y, lat.clr) annotation (Line(points={{52,-60},{60,-60},{60,-34}, + {40,-34},{40,-6},{48,-6}}, color={255,0,255})); annotation ( defaultComponentName="tanCha", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ From 8b53e5dcdf214b7497e2e8431193719e833a0b3c Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 10 Nov 2023 21:23:47 -0800 Subject: [PATCH 130/183] Change TMix to TDom and description --- .../Data/GenericDomesticHotWaterWithHeatExchanger.mo | 6 +++--- .../Examples/StorageTankWithExternalHeatExchanger.mo | 4 ++-- .../Loads/HotWater/StorageTankWithExternalHeatExchanger.mo | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo index 99858014f2a..15aca798d68 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo @@ -28,15 +28,15 @@ record GenericDomesticHotWaterWithHeatExchanger "Design mass flow rate of domestic hot water" annotation (Dialog(group="Heat exchanger")); - parameter Modelica.Units.SI.HeatFlowRate QHex_flow_nominal(min=0) = mDom_flow_nominal*4200*(TMix_nominal-TCol_nominal) + parameter Modelica.Units.SI.HeatFlowRate QHex_flow_nominal(min=0) = mDom_flow_nominal*4200*(TDom_nominal-TCol_nominal) "Nominal heating flow rate at heat exchanger" annotation (Dialog(group="Heat exchanger")); // parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) // "Nominal heating flow rate"; // parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; // parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; - parameter Modelica.Units.SI.Temperature TMix_nominal = 318.15 - "Temperature of fluid leaving tank at nominal conditions" + parameter Modelica.Units.SI.Temperature TDom_nominal = 318.15 + "Temperature of domestic hot water leaving heater at nominal conditions" annotation (Dialog(group="Domestic hot water")); parameter Modelica.Units.SI.Temperature TCol_nominal = 288.15 "Temperature of cold water" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index a9c82dc5e93..818e0bac988 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -45,8 +45,8 @@ model StorageTankWithExternalHeatExchanger use_m_flow_in=true, nPorts=1, redeclare package Medium = Medium, - T(displayUnit="degC") = datWatHea.TMix_nominal + datWatHea.dTHexApp_nominal + - 1) + T(displayUnit="degC") = datWatHea.TDom_nominal + datWatHea.dTHexApp_nominal + + 1) "Source for heating water" annotation ( Placement(transformation( diff --git a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo index 01ebdd462ba..7b9ffd952fc 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo @@ -16,7 +16,7 @@ model StorageTankWithExternalHeatExchanger "Start value of tank temperature" annotation(Dialog(tab="Initialization")); final parameter Real eps = - dat.QHex_flow_nominal / CMin_flow_nominal / ( dat.TMix_nominal + dat.dTHexApp_nominal - dat.TCol_nominal) + dat.QHex_flow_nominal / CMin_flow_nominal / ( dat.TDom_nominal + dat.dTHexApp_nominal - dat.TCol_nominal) "Heat exchanger effectiveness" annotation(Dialog(tab="Advanced")); Fluid.Movers.Preconfigured.FlowControlled_dp pumHex( From d41f2bb5246fdaff42ffe146d22f326e1d844463 Mon Sep 17 00:00:00 2001 From: David Blum Date: Fri, 10 Nov 2023 21:42:58 -0800 Subject: [PATCH 131/183] Add heater loop with constant dT --- .../StorageTankWithExternalHeatExchanger.mo | 80 +++++++++++-------- 1 file changed, 45 insertions(+), 35 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index 818e0bac988..b7f171064d0 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -4,11 +4,8 @@ model StorageTankWithExternalHeatExchanger extends Modelica.Icons.Example; package Medium = Buildings.Media.Water "Medium model"; - parameter Modelica.Units.SI.Temperature THotSet=273.15 + 40 - "Temperature setpoint of hot water supply"; - parameter Modelica.Units.SI.Temperature TMixSet=273.15 + 35 - "Temperature setpoint of hot water supply to fixture"; parameter Modelica.Units.SI.Temperature TCol = 273.15+10 "Temperature of domestic cold water supply"; + parameter Modelica.Units.SI.MassFlowRate mHea_flow_nominal = datWatHea.QHex_flow_nominal/4200/(55 - 50) "Tank heater water loop nominal mass flow"; parameter Data.GenericDomesticHotWaterWithHeatExchanger datWatHea(VTan=0.1892706, mDom_flow_nominal=6.52944E-06*1000) "Data for heat pump water heater with tank" @@ -24,35 +21,13 @@ model StorageTankWithExternalHeatExchanger "Domestic hot water fixture draw fraction schedule" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Fluid.Sources.Boundary_pT sinDis( - nPorts=1, - redeclare package Medium = Medium, - T(displayUnit="degC")) "Sink for heating water" - annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-4,-50}))); Fluid.Sources.Boundary_pT souCol( nPorts=2, redeclare package Medium = Medium, - T(displayUnit="degC") = 283.15) - "Source of domestic cold water" + T(displayUnit="degC") = 283.15) "Source of domestic cold water" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=90, origin={-32,-50}))); - Fluid.Sources.MassFlowSource_T souHea( - use_m_flow_in=true, - nPorts=1, - redeclare package Medium = Medium, - T(displayUnit="degC") = datWatHea.TDom_nominal + datWatHea.dTHexApp_nominal - + 1) - "Source for heating water" - annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=180, - origin={68,24}))); Modelica.Blocks.Sources.Constant conTSetHot(k( final unit="K", displayUnit="degC") = 308.15) @@ -66,14 +41,39 @@ model StorageTankWithExternalHeatExchanger ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, mMix_flow_nominal=1.2*datWatHea.mDom_flow_nominal) annotation (Placement(transformation(extent={{40,60},{60,80}}))); - Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue=datWatHea.QHex_flow_nominal - /4200/(55 - 50)) + Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue= + mHea_flow_nominal) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); Modelica.Blocks.Sources.Constant conTSetHot1(k( final unit="K", displayUnit="degC") = 313.15) "Temperature setpoint for hot water supply to fixture" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + Fluid.HeatExchangers.Heater_T hea( + redeclare package Medium = Medium, + m_flow_nominal=mHea_flow_nominal, + dp_nominal=0) + annotation (Placement(transformation(extent={{40,-50},{60,-30}}))); + Fluid.Movers.FlowControlled_m_flow mov( + redeclare package Medium = Medium, + energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState, + nominalValuesDefineDefaultPressureCurve=true, + m_flow_nominal=mHea_flow_nominal) + annotation (Placement(transformation(extent={{70,14},{50,34}}))); + Fluid.Sensors.TemperatureTwoPort senTem( + redeclare package Medium = Medium, + m_flow_nominal=mHea_flow_nominal, + tau=0) annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); + Controls.OBC.CDL.Reals.AddParameter addPar(p=5) + annotation (Placement(transformation(extent={{14,-24},{24,-14}}))); + Fluid.Sources.Boundary_pT preRef( + nPorts=1, + redeclare package Medium = Medium, + T(displayUnit="degC")) "Reference pressure" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={80,-60}))); equation connect(theMixVal.yMixSet, sch.y[1]) annotation (Line(points={{39,78},{-50,78}, {-50,70},{-59,70}}, color={0,0,127})); @@ -88,14 +88,24 @@ equation annotation (Line(points={{-33,-40},{-33,62},{40,62}}, color={0,127,255})); connect(booToRea.u, domHotWatTan.charge) annotation (Line(points={{38,-10},{32, -10},{32,21},{22,21}}, color={255,0,255})); - connect(booToRea.y, souHea.m_flow_in) annotation (Line(points={{62,-10},{88,-10}, - {88,16},{80,16}}, color={0,0,127})); - connect(sinDis.ports[1], domHotWatTan.port_bHea) - annotation (Line(points={{-4,-40},{-4,24},{0,24}}, color={0,127,255})); - connect(souHea.ports[1], domHotWatTan.port_aHea) - annotation (Line(points={{58,24},{20,24}}, color={0,127,255})); connect(domHotWatTan.TDomSet, conTSetHot1.y) annotation (Line(points={{-1,30}, {-20,30},{-20,10},{-59,10}}, color={0,0,127})); + connect(mov.port_b, domHotWatTan.port_aHea) + annotation (Line(points={{50,24},{20,24}}, color={0,127,255})); + connect(hea.port_b, mov.port_a) annotation (Line(points={{60,-40},{80,-40},{80, + 24},{70,24}}, color={0,127,255})); + connect(booToRea.y, mov.m_flow_in) annotation (Line(points={{62,-10},{90,-10}, + {90,46},{60,46},{60,36}}, color={0,0,127})); + connect(domHotWatTan.port_bHea, senTem.port_a) annotation (Line(points={{0,24}, + {-10,24},{-10,-40},{10,-40}}, color={0,127,255})); + connect(senTem.port_b, hea.port_a) + annotation (Line(points={{30,-40},{40,-40}}, color={0,127,255})); + connect(addPar.y, hea.TSet) annotation (Line(points={{25,-19},{32,-19},{32,-32}, + {38,-32}}, color={0,0,127})); + connect(senTem.T, addPar.u) annotation (Line(points={{20,-29},{14,-29},{14,-28}, + {6,-28},{6,-19},{13,-19}}, color={0,0,127})); + connect(hea.port_b, preRef.ports[1]) + annotation (Line(points={{60,-40},{80,-40},{80,-50}}, color={0,127,255})); annotation (Diagram(graphics={ Text( extent={{-140,160},{160,120}}, From 04a809713b2d2490d01c64792b4039dea63dcb35 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 07:28:50 -0800 Subject: [PATCH 132/183] Update direct hx and heater and remove old tank model --- .../BaseClasses/PartialFourPortDHW.mo | 5 - .../DirectHeatExchangerWithElectricHeat.mo | 47 +-- ...tureDirectHeatExchangerWithElectricHeat.mo | 127 ++++---- .../HeaterAndFixtureHeatPumpWithTank.mo | 77 ----- .../StorageTankWithExternalHeatExchanger.mo | 10 +- .../DHC/Loads/HotWater/Examples/package.order | 1 - .../DHC/Loads/HotWater/HeatPumpWithTank.mo | 273 ------------------ .../StorageTankWithExternalHeatExchanger.mo | 4 + .../DHC/Loads/HotWater/package.order | 1 - 9 files changed, 114 insertions(+), 431 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo delete mode 100644 Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index 7c4bb1963c7..f4cab86def4 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -63,11 +63,6 @@ partial model PartialFourPortDHW "Temperature setpoint for domestic water source from heater" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); - Controls.OBC.CDL.Interfaces.BooleanOutput charge - "Output true if tank needs to be charged, false if it is sufficiently charged" - annotation (Placement(transformation(extent={{100,-100},{140,-60}}), - iconTransformation(extent={{100,-110},{140,-70}}))); - annotation (Documentation(info="

This partial model can be used for different domestic hot water generation methods. diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index 36748ebb91a..08d400b3da9 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -2,26 +2,28 @@ within Buildings.Experimental.DHC.Loads.HotWater; model DirectHeatExchangerWithElectricHeat "A model for generating hot water using a district heat exchanger and supplemental electric resistance" extends - Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPort; + Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW; parameter Modelica.Units.SI.Efficiency eps(min=0,max=1) = 0.8 "Heat exchanger effectiveness"; parameter Boolean have_eleHea = true "True if has auxiliary electric heater"; parameter Modelica.Units.SI.HeatFlowRate QMax_flow(min=0) = Modelica.Constants.inf "Maximum heat flow rate for electric heater (positive)" annotation(Dialog(enable=have_eleHea)); - + parameter Modelica.Units.SI.MassFlowRate mDom_flow_nominal "Nominal flow rate of domestic hot water"; + parameter Modelica.Units.SI.MassFlowRate mHea_flow_nominal "Nominal flow rate of heating source water"; Buildings.Fluid.HeatExchangers.Heater_T heaEle( - redeclare package Medium = Medium, + redeclare package Medium = MediumDom, m_flow_nominal=mDom_flow_nominal, dp_nominal=dpEle_nominal, QMax_flow=QMax_flow) if have_eleHea == true "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = Medium, m_flow_nominal=mDom_flow_nominal) + = MediumDom, + m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water supply" annotation (Placement(transformation(extent={{58,50},{78,70}}))); Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, + redeclare package Medium1 = MediumDom, + redeclare package Medium2 = MediumHea, m1_flow_nominal=mDom_flow_nominal, m2_flow_nominal=mHea_flow_nominal, dp1_nominal=dpHotSou_nominal, @@ -29,7 +31,8 @@ model DirectHeatExchangerWithElectricHeat eps=eps) "Domestic hot water heater heat exchanger" annotation (Placement(transformation(extent={{-80,-64},{-60,-44}}))); Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = - Medium, m_flow_nominal=mDom_flow_nominal) + MediumDom, + m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water leaving heat exchanger" annotation (Placement(transformation(extent={{-38,-50},{-18,-30}}))); parameter Modelica.Units.SI.PressureDifference dpHotSou_nominal=0 @@ -41,9 +44,15 @@ model DirectHeatExchangerWithElectricHeat Modelica.Blocks.Interfaces.RealOutput THexOut "Temperature of hot water leaving heat exchanger" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); + Modelica.Blocks.Interfaces.RealOutput PEle(unit="W") + "Electric power required for electric heater" + annotation (Placement(transformation(extent={{100,-10},{120,10}}), + iconTransformation(extent={{100,-10},{120,10}}))); + Modelica.Blocks.Sources.Constant zero(k=0) if have_eleHea == false "Zero power if no heater" + annotation (Placement(transformation(extent={{60,10},{80,30}}))); protected Fluid.FixedResistances.LosslessPipe pip( - redeclare final package Medium = Medium, + redeclare package Medium = MediumDom, final m_flow_nominal=mDom_flow_nominal, final show_T=false) if have_eleHea == false "Pipe without electric resistance" @@ -63,20 +72,22 @@ equation color={0,127,255})); connect(pip.port_b, senTemHot.port_a) annotation (Line(points={{30,0},{40,0},{ 40,60},{58,60}},color={0,127,255})); - connect(senTemHot.port_b, port_bDomWat) - annotation (Line(points={{78,60},{100,60}}, color={0,127,255})); - connect(port_aDomWat, hex.port_a1) annotation (Line(points={{-100,60},{-86,60}, - {-86,-48},{-80,-48}}, color={0,127,255})); - connect(heaEle.Q_flow,PHea) annotation (Line(points={{31,-32},{82,-32},{82,0}, - {110,0}}, color={0,0,127})); connect(TDomSet, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, -32},{8,-32}}, color={0,0,127})); - connect(hex.port_b2, port_bHeaWat) - annotation (Line(points={{-80,-60},{-100,-60}}, color={0,127,255})); - connect(port_aHeaWat, hex.port_a2) - annotation (Line(points={{100,-60},{-60,-60}}, color={0,127,255})); connect(senTemHexOut.T, THexOut) annotation (Line(points={{-28,-29},{-28,-20}, {110,-20}}, color={0,0,127})); + connect(heaEle.Q_flow, PEle) annotation (Line(points={{31,-32},{60,-32},{60,0}, + {110,0}}, color={0,0,127})); + connect(zero.y, PEle) annotation (Line(points={{81,20},{90,20},{90,0},{110,0}}, + color={0,0,127})); + connect(port_aDom, hex.port_a1) annotation (Line(points={{-100,60},{-90,60},{ + -90,-48},{-80,-48}}, color={0,127,255})); + connect(hex.port_b2, port_bHea) + annotation (Line(points={{-80,-60},{-100,-60}}, color={0,127,255})); + connect(hex.port_a2, port_aHea) + annotation (Line(points={{-60,-60},{100,-60}}, color={0,127,255})); + connect(senTemHot.port_b, port_bDom) + annotation (Line(points={{78,60},{100,60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

This model implements a basic domestic hot water source for a diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index d06d8ddf851..922fef308d4 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -1,62 +1,87 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; model HeaterAndFixtureDirectHeatExchangerWithElectricHeat extends Modelica.Icons.Example; - extends BaseClasses.PartialHeaterAndFixture( - souCol(nPorts=2), - souDis(nPorts=1), - sinDis(nPorts=1)); - DirectHeatExchangerWithElectricHeat gen( + package Medium = Buildings.Media.Water "Medium model"; + Fluid.Sources.Boundary_pT souCol( + nPorts=2, + redeclare package Medium = Medium, + T(displayUnit="degC") = 283.15) + "Source of domestic cold water" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + rotation=90, + origin={10,-50}))); + ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, + mMix_flow_nominal=1) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{0,-12},{20,8}}))); + Fluid.Sources.MassFlowSource_T souDis( + redeclare package Medium = Medium, + m_flow=1, + T(displayUnit="degC") = 298.15, + nPorts=1) "Source of district network water" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-20,-50}))); + Modelica.Blocks.Sources.Constant conTHotSet(k( + final unit="K", + displayUnit="degC") = 313.15) + "Temperature setpoint for hot water supply to fixture" + annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + Fluid.Sources.Boundary_pT sinDis( redeclare package Medium = Medium, - mDom_flow_nominal=mHotSou_flow_nominal, - mHea_flow_nominal=mDis_flow_nominal) + T(displayUnit="degC"), + nPorts=1) "Sink of district network water" annotation ( + Placement(transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={-60,-50}))); + Modelica.Blocks.Sources.Constant conTSetMix(k( + final unit="K", + displayUnit="degC") = 308.15) + "Temperature setpoint for mixed water supply to fixture" + annotation (Placement(transformation(extent={{-90,20},{-70,40}}))); + DirectHeatExchangerWithElectricHeat gen( + redeclare package MediumDom = Medium, + redeclare package MediumHea = Medium, + mDom_flow_nominal=1, + mHea_flow_nominal=1) "Hot water generated by heat exchanger and auxiliary heat" annotation (Placement(transformation(extent={{-52,-10},{-32,10}}))); + Modelica.Blocks.Interfaces.RealOutput PEle(final unit="W") + "Electric power required for generation equipment" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); + Modelica.Blocks.Sources.CombiTimeTable sch( + tableOnFile=true, + tableName="tab1", + fileName=Modelica.Utilities.Files.loadResource("modelica://Buildings/Resources/Data/Experimental/DHC/Loads/HotWater/DHW_ApartmentMidRise.mos"), + smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, + extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) + "Domestic hot water fixture draw fraction schedule" + annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); + equation - connect(gen.port_aDomWat, souCol.ports[2]) annotation (Line(points={{-52,6},{ - -56,6},{-56,-30},{10,-30},{10,-40}}, color={0,127,255})); - connect(gen.port_aHeaWat, souDis.ports[1]) annotation (Line(points={{-32,-6}, - {-20,-6},{-20,-20},{-30,-20},{-30,-40}}, color={0,127,255})); - connect(gen.port_bHeaWat, sinDis.ports[1]) - annotation (Line(points={{-52,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(conTHotSouSet.y, gen.TDomSet) + + connect(conTSetMix.y,theMixVal. TMixSet) annotation (Line(points={{-69,30},{-6, + 30},{-6,0},{-1,0}}, color={0,0,127})); + connect(conTHotSet.y, gen.TDomSet) annotation (Line(points={{-69,0},{-53,0}}, color={0,0,127})); - connect(gen.PHea, PEle) annotation (Line(points={{-31,0},{-20,0},{-20,80},{ + connect(sch.y[1], theMixVal.yMixSet) annotation (Line(points={{-69,60},{-4,60}, + {-4,6},{-1,6}}, color={0,0,127})); + connect(gen.port_bDom, theMixVal.port_hot) annotation (Line(points={{-32,6},{ + -12,6},{-12,-6},{0,-6}}, color={0,127,255})); + connect(theMixVal.port_col, souCol.ports[1]) annotation (Line(points={{0,-10}, + {-12,-10},{-12,-24},{11,-24},{11,-40}}, color={0,127,255})); + connect(gen.port_aDom, souCol.ports[2]) annotation (Line(points={{-52,6},{-56, + 6},{-56,-26},{9,-26},{9,-40}}, color={0,127,255})); + connect(gen.port_bHea, sinDis.ports[1]) + annotation (Line(points={{-52,-6},{-60,-6},{-60,-40}}, color={0,127,255})); + connect(gen.port_aHea, souDis.ports[1]) + annotation (Line(points={{-32,-6},{-20,-6},{-20,-40}}, color={0,127,255})); + connect(gen.PEle, PEle) annotation (Line(points={{-31,0},{-20,0},{-20,80},{ 110,80}}, color={0,0,127})); - connect(theMixVal.port_hot, gen.port_bDomWat) annotation (Line(points={{0,-6}, - {-14,-6},{-14,6},{-32,6}}, color={0,127,255})); annotation (experiment( - StopTime=86400, - Tolerance=1e-06), - __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos" - "Simulate and plot"),Documentation(info=" -

-This model implements an example hot water system where the hot water is -produced using -the hydronic arrangement modeled in - -Buildings.Experimental.DHC.Loads.HotWater.DirectHeatExchangerWithElectricHeat, -thermostatically mixed down to a distribution temperature, and supplied to a fixture load -defined by a schedule. -

-

-Such distribution is based on the -Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy -published by ASHRAE in 2022 at -https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download. -

-

-\"image\" -

-", revisions=" -
    -
  • -September 11, 2023 by David Blum:
    -Extended base class and updated for release. -
  • -
  • -October 20, 2022 by Dre Helmns:
    -Initial implementation. -
  • -
-")); + StopTime=864000, + Interval=60, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl")); end HeaterAndFixtureDirectHeatExchangerWithElectricHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo deleted file mode 100644 index 0d1ed88bd34..00000000000 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mo +++ /dev/null @@ -1,77 +0,0 @@ -within Buildings.Experimental.DHC.Loads.HotWater.Examples; -model HeaterAndFixtureHeatPumpWithTank - extends Modelica.Icons.Example; - extends Buildings.Experimental.DHC.Loads.HotWater.Examples.BaseClasses.PartialHeaterAndFixture( - souCol(nPorts=2), - souDis(nPorts=1), - sinDis(nPorts=1)); - - HeatPumpWithTank gen( - redeclare package Medium = Medium, - mDom_flow_nominal=mHotSou_flow_nominal, - mHea_flow_nominal=mDis_flow_nominal, - datWatHea=datWatHea, - COP_nominal=2.3, - TCon_nominal=datWatHea.THex_nominal, - TEva_nominal=TDis + 5) "Heat pump water heater with tank" - annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); - Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger - datWatHea( - mHex_flow_nominal=1.5, - QCon_flow_max=60000, - QCon_flow_nominal=50000, - TTan_nominal=(THotSouSet + TCol)/2, - THotSou_nominal=THotSouSet, - dTCon_nominal=datWatHea.THex_nominal - datWatHea.TTan_nominal) - "Data for heat pump water heater with tank" - annotation (Placement(transformation(extent={{60,40},{80,60}}))); -equation - - connect(gen.port_aDomWat, souCol.ports[2]) annotation (Line(points={{-50,6},{ - -56,6},{-56,-30},{10,-30},{10,-40}}, color={0,127,255})); - connect(gen.port_aHeaWat, souDis.ports[1]) annotation (Line(points={{-30,-6}, - {-24,-6},{-24,-20},{-30,-20},{-30,-40}}, color={0,127,255})); - connect(gen.port_bHeaWat, sinDis.ports[1]) - annotation (Line(points={{-50,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(conTHotSouSet.y, gen.TDomSet) - annotation (Line(points={{-69,0},{-51,0}}, color={0,0,127})); - connect(gen.PHea, PEle) annotation (Line(points={{-29,0},{-12,0},{-12,80},{110, - 80}}, color={0,0,127})); - connect(theMixVal.port_hot, gen.port_bDomWat) annotation (Line(points={{0,-6}, - {-20,-6},{-20,6},{-30,6}}, color={0,127,255})); - annotation (experiment( - StopTime=86400, - Tolerance=1e-06), - __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos" - "Simulate and plot"),Documentation(info=" -

-This model implements an example hot water system where the hot water is -produced using -The hydronic arrangement modeled in - -Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank, -thermostatically mixed down to a distribution temperature, and supplied to a fixture load -defined by a schedule. -

-

-Such distribution is based on the -Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy -published by ASHRAE in 2022 at -https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download. -

-

-\"image\" -

-", revisions=" -
    -
  • -September 11, 2023 by David Blum:
    -Extended base class and updated for release. -
  • -
  • -October 20, 2022 by Dre Helmns:
    -Initial implementation. -
  • -
-")); -end HeaterAndFixtureHeatPumpWithTank; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index b7f171064d0..b373fcb5cc3 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -28,10 +28,10 @@ model StorageTankWithExternalHeatExchanger annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=90, origin={-32,-50}))); - Modelica.Blocks.Sources.Constant conTSetHot(k( + Modelica.Blocks.Sources.Constant conTSetMix(k( final unit="K", displayUnit="degC") = 308.15) - "Temperature setpoint for hot water supply to fixture" + "Temperature setpoint for mixed water supply to fixture" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Experimental.DHC.Loads.HotWater.StorageTankWithExternalHeatExchanger domHotWatTan(redeclare package MediumDom = Medium, redeclare package @@ -44,7 +44,7 @@ model StorageTankWithExternalHeatExchanger Controls.OBC.CDL.Conversions.BooleanToReal booToRea(realTrue= mHea_flow_nominal) annotation (Placement(transformation(extent={{40,-20},{60,0}}))); - Modelica.Blocks.Sources.Constant conTSetHot1(k( + Modelica.Blocks.Sources.Constant conTSetHot(k( final unit="K", displayUnit="degC") = 313.15) "Temperature setpoint for hot water supply to fixture" @@ -77,7 +77,7 @@ model StorageTankWithExternalHeatExchanger equation connect(theMixVal.yMixSet, sch.y[1]) annotation (Line(points={{39,78},{-50,78}, {-50,70},{-59,70}}, color={0,0,127})); - connect(conTSetHot.y, theMixVal.TMixSet) annotation (Line(points={{-59,40},{ + connect(conTSetMix.y, theMixVal.TMixSet) annotation (Line(points={{-59,40},{ -10,40},{-10,72},{39,72}}, color={0,0,127})); connect(domHotWatTan.port_bDom, theMixVal.port_hot) annotation (Line(points={{ @@ -88,7 +88,7 @@ equation annotation (Line(points={{-33,-40},{-33,62},{40,62}}, color={0,127,255})); connect(booToRea.u, domHotWatTan.charge) annotation (Line(points={{38,-10},{32, -10},{32,21},{22,21}}, color={255,0,255})); - connect(domHotWatTan.TDomSet, conTSetHot1.y) annotation (Line(points={{-1,30}, + connect(domHotWatTan.TDomSet, conTSetHot.y) annotation (Line(points={{-1,30}, {-20,30},{-20,10},{-59,10}}, color={0,0,127})); connect(mov.port_b, domHotWatTan.port_aHea) annotation (Line(points={{50,24},{20,24}}, color={0,127,255})); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order index 34ec09c4cd1..e2134187530 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order @@ -1,4 +1,3 @@ HeaterAndFixtureDirectHeatExchangerWithElectricHeat -HeaterAndFixtureHeatPumpWithTank StorageTankWithExternalHeatExchanger BaseClasses diff --git a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo b/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo deleted file mode 100644 index a0046286c80..00000000000 --- a/Buildings/Experimental/DHC/Loads/HotWater/HeatPumpWithTank.mo +++ /dev/null @@ -1,273 +0,0 @@ -within Buildings.Experimental.DHC.Loads.HotWater; -model HeatPumpWithTank - "A model for generating hot water using a heat pump water heater and local storage tank" - extends - Buildings.Experimental.DHC.Loads.HotWater.BaseClasses.PartialFourPortDHW( - final have_PEle=true, - mHea_flow_nominal=heaPum.QEva_flow_nominal/cp2_default/heaPum.dTEva_nominal); - constant Modelica.Units.SI.SpecificHeatCapacity cp2_default= - Medium.specificHeatCapacityCp(Medium.setState_pTX(p=Medium.p_default, - T=Medium.T_default)) "Specific heat capacity of the fluid"; - parameter - Buildings.Experimental.DHC.Loads.HotWater.Data.GenericDomesticHotWaterWithHeatExchanger - datWatHea "Performance data" - annotation (Placement(transformation(extent={{-90,-96},{-70,-76}}))); - parameter Real COP_nominal(final unit="1") "Heat pump COP at nominal conditions"; - parameter Modelica.Units.SI.Temperature TCon_nominal "Condenser outlet temperature used to compute COP_nominal"; - parameter Modelica.Units.SI.Temperature TEva_nominal "Evaporator outlet temperature used to compute COP_nominal"; - parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; - parameter Real Ti=60 "Integrator time constant of circulation pump controller"; - Buildings.Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=datWatHea.mCon_flow_nominal, - m2_flow_nominal=mHea_flow_nominal, - dTEva_nominal=datWatHea.dTEva_nominal, - dTCon_nominal=datWatHea.dTCon_nominal, - use_eta_Carnot_nominal=false, - etaCarnot_nominal=0.3, - COP_nominal=COP_nominal, - TCon_nominal=TCon_nominal, - TEva_nominal=TEva_nominal, - QCon_flow_max = datWatHea.QCon_flow_max, - QCon_flow_nominal=datWatHea.QCon_flow_nominal, - dp1_nominal=datWatHea.dp1_nominal, - dp2_nominal=datWatHea.dp2_nominal) - "Domestic hot water heater" - annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); - Fluid.Movers.Preconfigured.FlowControlled_m_flow - pumHex( - energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial, - redeclare package Medium = Medium, - m_flow_nominal=datWatHea.mHex_flow_nominal, - riseTime=10) - "Pump with m_flow input" - annotation (Placement(transformation(extent={{-70,-30},{-50,-10}}))); - Fluid.Storage.StratifiedEnhanced tanSte( - T_start=datWatHea.TTan_nominal, - redeclare package Medium = Medium, - hTan=datWatHea.hTan, - dIns=datWatHea.dIns, - VTan=datWatHea.VTan, - nSeg=datWatHea.nSeg, - show_T=true, - m_flow_nominal=mDom_flow_nominal) - "Tank with steady-state heat exchanger balance" - annotation (Placement(transformation(extent={{-20,0},{-40,20}}))); - Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts=1) - annotation (Placement(transformation(extent={{16,16},{-4,36}}))); - Modelica.Thermal.HeatTransfer.Sensors.TemperatureSensor senTemTan - "Temperature of the hot water tank" - annotation (Placement(transformation(extent={{-42,54},{-22,74}}))); - Controls.OBC.CDL.Reals.MultiplyByParameter - dTTanHex2(k=datWatHea.mHex_flow_nominal) - "Temperature setpoint for domestic hot water supply from heater" - annotation (Placement(transformation(extent={{20,70},{40,90}}))); - Controls.OBC.CDL.Reals.PID conPI( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, - k=k, - Ti=Ti) - annotation (Placement(transformation(extent={{-10,70},{10,90}}))); - Modelica.Blocks.Interfaces.RealOutput PPum(unit="W") - "Electric power required for pumping equipment" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Modelica.Blocks.Interfaces.RealOutput QCon_flow - "Actual heat pump heating heat flow rate added to fluid" - annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); - Controls.OBC.CDL.Reals.AddParameter TConSet(p=datWatHea.dTTanHex) - "Set point temperature for condenser" - annotation (Placement(transformation(extent={{-48,-80},{-28,-60}}))); - Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = Medium, - m_flow_nominal=mDom_flow_nominal) - "Temperature sensor for hot water supply" - annotation (Placement(transformation(extent={{20,38},{40,58}}))); - Fluid.HydronicConfigurations.PassiveNetworks.SingleMixing con( - redeclare package Medium = Medium1, - use_siz=true, - m2_flow_nominal=datWatHea.mCon_flow_nominal, - dp1_nominal=datWatHea.dp1_nominal, - dp2_nominal=6000, - typCha=Buildings.Fluid.HydronicConfigurations.Types.ValveCharacteristic.EqualPercentage, - typPum=Buildings.Fluid.HydronicConfigurations.Types.Pump.NoVariableInput, - typPumMod=Buildings.Fluid.HydronicConfigurations.Types.PumpModel.Head, - typCtl=Buildings.Fluid.HydronicConfigurations.Types.Control.Heating) - annotation (Placement(transformation(extent={{-10,-20},{10,-40}}))); - - Fluid.HeatExchangers.ConstantEffectiveness hex( - redeclare package Medium1 = Medium, - redeclare package Medium2 = Medium, - m1_flow_nominal=mDom_flow_nominal, - dp1_nominal=6000, - dp2_nominal=6000) - annotation (Placement(transformation(extent={{-70,32},{-50,52}}))); - Fluid.FixedResistances.Junction junTop( - redeclare package Medium = Medium, - m_flow_nominal=mCon_flow_nominal*{1,1,1}, - dp_nominal=zeros(3)) "Flow junction at top of tank" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Fluid.FixedResistances.Junction junBot( - redeclare package Medium = Medium, - m_flow_nominal=mCon_flow_nominal*{1,1,1}, - dp_nominal=zeros(3)) "Flow junction at bottom of tank" annotation ( - Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=180, - origin={-30,-20}))); - Controls.OBC.CDL.Reals.Add PPumTot "Total pump electricity" - annotation (Placement(transformation(extent={{52,-12},{72,8}}))); -equation - connect(port_bHeaWat, heaPum.port_b2) annotation (Line(points={{-100,-60},{-56, - -60},{-56,-86},{-10,-86}}, color={0,127,255})); - connect(heaPum.P,PHea) annotation (Line(points={{11,-80},{82,-80},{82,0},{ - 110,0}}, color={0,0,127})); - connect(dTTanHex2.y, pumHex.m_flow_in) - annotation (Line(points={{42,80},{42,-8},{-60,-8}},color={0,0,127})); - connect(heaPum.port_a2, port_aHeaWat) annotation (Line(points={{10,-86},{56,-86}, - {56,-60},{100,-60}}, color={0,127,255})); - connect(conPI.y, dTTanHex2.u) - annotation (Line(points={{12,80},{18,80}}, color={0,0,127})); - connect(TDomSet, conPI.u_s) annotation (Line(points={{-110,0},{-88,0},{-88,80}, - {-12,80}}, color={0,0,127})); - connect(senTemTan.T, conPI.u_m) annotation (Line(points={{-21,64},{0,64},{0, - 68}}, color={0,0,127})); - connect(heaPum.QCon_flow, QCon_flow) annotation (Line(points={{11,-71},{12, - -71},{12,-70},{80,-70},{80,-20},{110,-20}}, - color={0,0,127})); - connect(TConSet.y, heaPum.TSet) annotation (Line(points={{-26,-70},{-28,-70}, - {-28,-71},{-12,-71}}, color={0,0,127})); - connect(TConSet.u, TDomSet) annotation (Line(points={{-50,-70},{-88,-70},{-88, - 0},{-110,0}}, color={0,0,127})); - connect(senTemHot.port_b, port_bDomWat) annotation (Line(points={{40,48},{90, - 48},{90,60},{100,60}}, color={0,127,255})); - connect(con.port_b2, heaPum.port_a1) annotation (Line(points={{-6,-40},{-6, - -48},{-20,-48},{-20,-74},{-10,-74}}, color={0,127,255})); - connect(heaPum.port_b1, con.port_a2) annotation (Line(points={{10,-74},{20, - -74},{20,-48},{6,-48},{6,-40}}, color={0,127,255})); - connect(port_aDomWat, hex.port_a1) annotation (Line(points={{-100,60},{-80,60}, - {-80,48},{-70,48}}, color={0,127,255})); - connect(hex.port_b1, senTemHot.port_a) - annotation (Line(points={{-50,48},{20,48}}, color={0,127,255})); - connect(tanSte.port_a, junTop.port_3) annotation (Line(points={{-30,20},{-30, - 30}}, color={0,127,255})); - connect(junTop.port_1, hex.port_b2) annotation (Line(points={{-40,40},{-46,40}, - {-46,60},{-76,60},{-76,36},{-70,36}}, - color={0,127,255})); - connect(pumHex.port_b, junBot.port_2) - annotation (Line(points={{-50,-20},{-40,-20}}, color={0,127,255})); - connect(pumHex.port_a, hex.port_a2) annotation (Line(points={{-70,-20},{-80, - -20},{-80,-2},{-46,-2},{-46,36},{-50,36}}, color={0,127,255})); - connect(junBot.port_3, tanSte.port_b) - annotation (Line(points={{-30,-10},{-30,0}}, color={0,127,255})); - connect(pumHex.P, PPumTot.u1) annotation (Line(points={{-49,-11},{-42,-11},{ - -42,-4},{30,-4},{30,4},{50,4}}, color={0,0,127})); - connect(con.PPum, PPumTot.u2) annotation (Line(points={{12,-38},{40,-38},{40, - -8},{50,-8}}, color={0,0,127})); - connect(PPumTot.y, PPum) annotation (Line(points={{74,-2},{76,-2},{76,-40},{ - 110,-40}}, color={0,0,127})); - connect(junBot.port_1, con.port_a1) annotation (Line(points={{-20,-20},{-14, - -20},{-14,2},{-6,2},{-6,-20}}, color={0,127,255})); - connect(con.port_b1, junTop.port_2) annotation (Line(points={{6,-20},{6,10},{ - -16,10},{-16,40},{-20,40}}, color={0,127,255})); - connect(bou.ports[1], junTop.port_2) annotation (Line(points={{-4,26},{-12,26}, - {-12,40},{-20,40}}, color={0,127,255})); - annotation (preferredView="info",Documentation(info=" -

-This model implements a domestic hot water source for a low-temperature -district heating network. It uses a heat pump, -circulation pump, and heat exchanger to draw heat from the district network -into a hot water storage tank. -The heat pump model is described in - -Buildings.Fluid.HeatPumps.Carnot_TCon. -The storage tank model is described in - -Buildings.Fluid.Storage.StratifiedEnhancedInternalHex. -The heat pump and storage tank system should be parameterized altogether using - -Buildings.Experimental.DHC.Loads.HotWater.Data.GenericHeatPumpWaterHeater. -

-

-\"image\" -

-

-It is based on Fig. 3 in Evaluations of different domestic hot water -preparing methods with ultra-low-temperature district heating by X. Yang, -H. Li, and S. Svendsen at -doi.org/10.1016/j.energy.2016.04.109, as well as the -Advanced Energy Design Guide for Multifamily Buildings-Achieving Zero Energy -published by ASHRAE in 2022 at -https://www.ashrae.org/technical-resources/aedgs/zero-energy-aedg-free-download. -

-", revisions=" -
    -
  • -September 11, 2023 by David Blum:
    -Updated for release. -
  • -
  • -July 7, 2022 by Dre Helmns:
    -Initial Implementation. -
  • -
-"),Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,-60},{20,-40}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={175,175,175}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-20,22},{20,-48}}, - lineColor={175,175,175}, - lineThickness=1, - fillColor={175,175,175}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,10},{20,30}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-20,50},{20,20}}, - lineColor={0,0,0}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{-20,40},{20,60}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line( - points={{-20,50},{-20,-50}}, - color={95,95,95}, - thickness=1), - Line( - points={{20,50},{20,-50}}, - color={95,95,95}, - thickness=1), - Polygon( - points={{-140,86},{-140,86}}, - lineColor={95,95,95}, - lineThickness=1, - fillColor={0,0,0}, - fillPattern=FillPattern.CrossDiag), - Polygon( - points={{20,40},{18,38},{14,36},{8,34},{8,26},{14,28},{18,30},{20,32}, - {20,40}}, - lineColor={95,95,95}, - lineThickness=0.5, - fillColor={0,0,0}, - fillPattern=FillPattern.CrossDiag)}), Diagram( - coordinateSystem(preserveAspectRatio=false), graphics={Text( - extent={{-116,94},{-24,84}}, - textColor={238,46,47}, - textString="fixme: to be deleted")})); -end HeatPumpWithTank; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo index 7b9ffd952fc..3c480dab70a 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/StorageTankWithExternalHeatExchanger.mo @@ -108,6 +108,10 @@ model StorageTankWithExternalHeatExchanger Controls.OBC.CDL.Reals.AddParameter dTHexApp(p=dat.dTHexApp_nominal) "Offset for heat exchanger approach temperature" annotation (Placement(transformation(extent={{34,-84},{54,-64}}))); + Controls.OBC.CDL.Interfaces.BooleanOutput charge + "Output true if tank needs to be charged, false if it is sufficiently charged" + annotation (Placement(transformation(extent={{100,-100},{140,-60}}), + iconTransformation(extent={{100,-110},{140,-70}}))); protected parameter Modelica.Units.SI.SpecificHeatCapacity cpHea_default = MediumHea.specificHeatCapacityCp(MediumHea.setState_pTX( diff --git a/Buildings/Experimental/DHC/Loads/HotWater/package.order b/Buildings/Experimental/DHC/Loads/HotWater/package.order index db5dbecc4e9..bc7ee22f7df 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/package.order @@ -1,5 +1,4 @@ DirectHeatExchangerWithElectricHeat -HeatPumpWithTank StorageTankWithExternalHeatExchanger ThermostaticMixingValve Data From f5c5d886286b573701bdea706e261cd3ea2c627a Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 08:03:27 -0800 Subject: [PATCH 133/183] More example cleanup --- .../DirectHeatExchangerWithElectricHeat.mo | 27 ++--- .../HotWater/Examples/BaseClasses/package.mo | 4 - ...tureDirectHeatExchangerWithElectricHeat.mo | 102 ++++++++++++------ .../DHC/Loads/HotWater/Examples/package.order | 1 - 4 files changed, 82 insertions(+), 52 deletions(-) delete mode 100644 Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index 08d400b3da9..e1892961e7d 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -29,12 +29,12 @@ model DirectHeatExchangerWithElectricHeat dp1_nominal=dpHotSou_nominal, dp2_nominal=dpDis_nominal, eps=eps) "Domestic hot water heater heat exchanger" - annotation (Placement(transformation(extent={{-80,-64},{-60,-44}}))); + annotation (Placement(transformation(extent={{-60,-64},{-40,-44}}))); Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = MediumDom, m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water leaving heat exchanger" - annotation (Placement(transformation(extent={{-38,-50},{-18,-30}}))); + annotation (Placement(transformation(extent={{-30,-50},{-10,-30}}))); parameter Modelica.Units.SI.PressureDifference dpHotSou_nominal=0 "Pressure difference in heat exchanger on hot water side"; parameter Modelica.Units.SI.PressureDifference dpDis_nominal=0 @@ -60,13 +60,14 @@ protected equation connect(senTemHexOut.port_a, hex.port_b1) - annotation (Line(points={{-38,-40},{-50,-40},{-50,-48},{-60,-48}}, + annotation (Line(points={{-30,-40},{-36,-40},{-36,-48},{-40,-48}}, color={0,127,255})); connect(senTemHexOut.port_b, heaEle.port_a) - annotation (Line(points={{-18,-40},{10,-40}}, + annotation (Line(points={{-10,-40},{10,-40}}, color={0,127,255})); - connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-18,-40},{0, - -40},{0,0},{10,0}}, color={0,127,255})); + connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-10,-40},{ + 0,-40},{0,0},{10,0}}, + color={0,127,255})); connect(heaEle.port_b, senTemHot.port_a) annotation (Line(points={{30,-40},{40,-40},{40,60},{58,60}}, color={0,127,255})); @@ -74,20 +75,20 @@ equation 40,60},{58,60}},color={0,127,255})); connect(TDomSet, heaEle.TSet) annotation (Line(points={{-110,0},{-12,0},{-12, -32},{8,-32}}, color={0,0,127})); - connect(senTemHexOut.T, THexOut) annotation (Line(points={{-28,-29},{-28,-20}, + connect(senTemHexOut.T, THexOut) annotation (Line(points={{-20,-29},{-20,-20}, {110,-20}}, color={0,0,127})); connect(heaEle.Q_flow, PEle) annotation (Line(points={{31,-32},{60,-32},{60,0}, {110,0}}, color={0,0,127})); connect(zero.y, PEle) annotation (Line(points={{81,20},{90,20},{90,0},{110,0}}, color={0,0,127})); - connect(port_aDom, hex.port_a1) annotation (Line(points={{-100,60},{-90,60},{ - -90,-48},{-80,-48}}, color={0,127,255})); - connect(hex.port_b2, port_bHea) - annotation (Line(points={{-80,-60},{-100,-60}}, color={0,127,255})); - connect(hex.port_a2, port_aHea) - annotation (Line(points={{-60,-60},{100,-60}}, color={0,127,255})); + connect(port_aDom, hex.port_a1) annotation (Line(points={{-100,60},{-64,60},{ + -64,-48},{-60,-48}}, color={0,127,255})); + connect(hex.port_a2, port_aHea) annotation (Line(points={{-40,-60},{-36,-60}, + {-36,-58},{90,-58},{90,-60},{100,-60}}, color={0,127,255})); connect(senTemHot.port_b, port_bDom) annotation (Line(points={{78,60},{100,60}}, color={0,127,255})); + connect(hex.port_b2, port_bHea) + annotation (Line(points={{-60,-60},{-100,-60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

This model implements a basic domestic hot water source for a diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo deleted file mode 100644 index 33a3a55fecc..00000000000 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/BaseClasses/package.mo +++ /dev/null @@ -1,4 +0,0 @@ -within Buildings.Experimental.DHC.Loads.HotWater.Examples; -package BaseClasses "Base classes for example models" - extends Modelica.Icons.BasesPackage; -end BaseClasses; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index 922fef308d4..31ddd107f39 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -1,55 +1,53 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; model HeaterAndFixtureDirectHeatExchangerWithElectricHeat + "Example model for direct heat exchanger with auxiliary electric heater" extends Modelica.Icons.Example; package Medium = Buildings.Media.Water "Medium model"; Fluid.Sources.Boundary_pT souCol( - nPorts=2, + nPorts=3, redeclare package Medium = Medium, T(displayUnit="degC") = 283.15) "Source of domestic cold water" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, rotation=90, - origin={10,-50}))); + origin={0,-50}))); ThermostaticMixingValve theMixVal(redeclare package Medium = Medium, - mMix_flow_nominal=1) "Ideal thermostatic mixing valve" - annotation (Placement(transformation(extent={{0,-12},{20,8}}))); - Fluid.Sources.MassFlowSource_T souDis( + mMix_flow_nominal=1) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{-10,-12},{10,8}}))); + Fluid.Sources.MassFlowSource_T souDisAmb( redeclare package Medium = Medium, m_flow=1, T(displayUnit="degC") = 298.15, - nPorts=1) "Source of district network water" annotation ( - Placement(transformation( + nPorts=1) "Source of district water from ambient network" annotation ( + Placement(transformation( extent={{-10,-10},{10,10}}, rotation=90, - origin={-20,-50}))); + origin={-30,-50}))); Modelica.Blocks.Sources.Constant conTHotSet(k( final unit="K", displayUnit="degC") = 313.15) "Temperature setpoint for hot water supply to fixture" - annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); Fluid.Sources.Boundary_pT sinDis( redeclare package Medium = Medium, T(displayUnit="degC"), - nPorts=1) "Sink of district network water" annotation ( + nPorts=3) "Sink of district network water" annotation ( Placement(transformation( extent={{-10,-10},{10,10}}, rotation=90, - origin={-60,-50}))); + origin={-70,-50}))); Modelica.Blocks.Sources.Constant conTSetMix(k( final unit="K", displayUnit="degC") = 308.15) "Temperature setpoint for mixed water supply to fixture" - annotation (Placement(transformation(extent={{-90,20},{-70,40}}))); + annotation (Placement(transformation(extent={{-100,20},{-80,40}}))); DirectHeatExchangerWithElectricHeat gen( redeclare package MediumDom = Medium, redeclare package MediumHea = Medium, mDom_flow_nominal=1, mHea_flow_nominal=1) "Hot water generated by heat exchanger and auxiliary heat" - annotation (Placement(transformation(extent={{-52,-10},{-32,10}}))); - Modelica.Blocks.Interfaces.RealOutput PEle(final unit="W") - "Electric power required for generation equipment" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); + annotation (Placement(transformation(extent={{-64,-10},{-44,10}}))); Modelica.Blocks.Sources.CombiTimeTable sch( tableOnFile=true, tableName="tab1", @@ -57,28 +55,64 @@ model HeaterAndFixtureDirectHeatExchangerWithElectricHeat smoothness=Modelica.Blocks.Types.Smoothness.ContinuousDerivative, extrapolation=Modelica.Blocks.Types.Extrapolation.Periodic) "Domestic hot water fixture draw fraction schedule" - annotation (Placement(transformation(extent={{-90,50},{-70,70}}))); + annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); + DirectHeatExchangerWithElectricHeat genNoEle( + redeclare package MediumDom = Medium, + redeclare package MediumHea = Medium, + have_eleHea=false, + mDom_flow_nominal=1, + mHea_flow_nominal=1) + "Hot water generated by heat exchanger without auxiliary heat" + annotation (Placement(transformation(extent={{32,-12},{52,8}}))); + ThermostaticMixingValve theMixValNoEle(redeclare package Medium = Medium, + mMix_flow_nominal=1) "Ideal thermostatic mixing valve" + annotation (Placement(transformation(extent={{70,-12},{90,8}}))); + Fluid.Sources.MassFlowSource_T souDisHot( + redeclare package Medium = Medium, + m_flow=1, + T(displayUnit="degC") = 323.15, + nPorts=1) "Source of district water from hot network" annotation (Placement( + transformation( + extent={{-10,-10},{10,10}}, + rotation=90, + origin={60,-50}))); equation - connect(conTSetMix.y,theMixVal. TMixSet) annotation (Line(points={{-69,30},{-6, - 30},{-6,0},{-1,0}}, color={0,0,127})); + connect(conTSetMix.y,theMixVal. TMixSet) annotation (Line(points={{-79,30},{-16, + 30},{-16,0},{-11,0}},color={0,0,127})); connect(conTHotSet.y, gen.TDomSet) - annotation (Line(points={{-69,0},{-53,0}}, color={0,0,127})); - connect(sch.y[1], theMixVal.yMixSet) annotation (Line(points={{-69,60},{-4,60}, - {-4,6},{-1,6}}, color={0,0,127})); - connect(gen.port_bDom, theMixVal.port_hot) annotation (Line(points={{-32,6},{ - -12,6},{-12,-6},{0,-6}}, color={0,127,255})); - connect(theMixVal.port_col, souCol.ports[1]) annotation (Line(points={{0,-10}, - {-12,-10},{-12,-24},{11,-24},{11,-40}}, color={0,127,255})); - connect(gen.port_aDom, souCol.ports[2]) annotation (Line(points={{-52,6},{-56, - 6},{-56,-26},{9,-26},{9,-40}}, color={0,127,255})); - connect(gen.port_bHea, sinDis.ports[1]) - annotation (Line(points={{-52,-6},{-60,-6},{-60,-40}}, color={0,127,255})); - connect(gen.port_aHea, souDis.ports[1]) - annotation (Line(points={{-32,-6},{-20,-6},{-20,-40}}, color={0,127,255})); - connect(gen.PEle, PEle) annotation (Line(points={{-31,0},{-20,0},{-20,80},{ - 110,80}}, color={0,0,127})); + annotation (Line(points={{-79,0},{-65,0}}, color={0,0,127})); + connect(sch.y[1], theMixVal.yMixSet) annotation (Line(points={{-79,60},{-14,60}, + {-14,6},{-11,6}}, + color={0,0,127})); + connect(gen.port_bDom, theMixVal.port_hot) annotation (Line(points={{-44,6},{-22, + 6},{-22,-6},{-10,-6}}, color={0,127,255})); + connect(theMixVal.port_col, souCol.ports[1]) annotation (Line(points={{-10,-10}, + {-22,-10},{-22,-24},{1.33333,-24},{1.33333,-40}}, color={0,127,255})); + connect(gen.port_aDom, souCol.ports[2]) annotation (Line(points={{-64,6},{-68, + 6},{-68,-26},{4.44089e-16,-26},{4.44089e-16,-40}}, color={0,127,255})); + connect(gen.port_bHea, sinDis.ports[1]) annotation (Line(points={{-64,-6},{ + -68.6667,-6},{-68.6667,-40}}, + color={0,127,255})); + connect(gen.port_aHea, souDisAmb.ports[1]) + annotation (Line(points={{-44,-6},{-30,-6},{-30,-40}}, color={0,127,255})); + connect(sch.y[1], theMixValNoEle.yMixSet) annotation (Line(points={{-79,60},{66, + 60},{66,6},{69,6}}, color={0,0,127})); + connect(conTSetMix.y, theMixValNoEle.TMixSet) annotation (Line(points={{-79,30}, + {64,30},{64,0},{69,0}}, color={0,0,127})); + connect(conTHotSet.y, genNoEle.TDomSet) annotation (Line(points={{-79,0},{-74, + 0},{-74,20},{28,20},{28,-2},{31,-2}}, color={0,0,127})); + connect(genNoEle.port_bDom, theMixValNoEle.port_hot) annotation (Line(points={ + {52,4},{60,4},{60,-6},{70,-6}}, color={0,127,255})); + connect(souDisHot.ports[1], genNoEle.port_aHea) + annotation (Line(points={{60,-40},{60,-8},{52,-8}}, color={0,127,255})); + connect(genNoEle.port_bHea, sinDis.ports[2]) annotation (Line(points={{32,-8}, + {26,-8},{26,-30},{-70,-30},{-70,-40}}, color={0,127,255})); + connect(theMixValNoEle.port_col, souCol.ports[3]) annotation (Line(points={{70, + -10},{62,-10},{62,-32},{-1.33333,-32},{-1.33333,-40}}, color={0,127,255})); + connect(genNoEle.port_aDom, sinDis.ports[3]) annotation (Line(points={{32,4},{ + 24,4},{24,-28},{-71.3333,-28},{-71.3333,-40}}, color={0,127,255})); annotation (experiment( StopTime=864000, Interval=60, diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order index e2134187530..aec36a08347 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/package.order @@ -1,3 +1,2 @@ HeaterAndFixtureDirectHeatExchangerWithElectricHeat StorageTankWithExternalHeatExchanger -BaseClasses From 5fd461008ea0e5efe90af0a81d28870d22553628 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 08:04:40 -0800 Subject: [PATCH 134/183] Delete old heat pump subsystem model --- .../Combined/Subsystems/HeatPump_Old.mo | 359 ------------------ .../Combined/Subsystems/package.order | 1 - 2 files changed, 360 deletions(-) delete mode 100644 Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo deleted file mode 100644 index a76461d56ed..00000000000 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump_Old.mo +++ /dev/null @@ -1,359 +0,0 @@ -within Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems; -model HeatPump_Old "Base subsystem with water-to-water heat pump" - replaceable package Medium1=Modelica.Media.Interfaces.PartialMedium - "Medium model on condenser side" - annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), - choice(redeclare package Medium = - Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) - "Propylene glycol water, 40% mass fraction"))); - replaceable package Medium2=Modelica.Media.Interfaces.PartialMedium - "Medium model on evaporator side" - annotation (choices(choice(redeclare package Medium=Buildings.Media.Water "Water"), - choice(redeclare package Medium = - Buildings.Media.Antifreeze.PropyleneGlycolWater (property_T=293.15,X_a=0.40) - "Propylene glycol water, 40% mass fraction"))); - parameter Boolean have_pumCon = true - "Set to true to include a condenser pump (false for external pump)" - annotation(Evaluate=true); - parameter Boolean have_varFloCon = true - "Set to true for a variable condenser flow" - annotation(Evaluate=true, Dialog(enable=have_pumCon)); - parameter Boolean have_varFloEva = true - "Set to true for a variable evaporator flow" - annotation(Evaluate=true); - parameter Real COP_nominal(final unit="1") - "Heat pump COP" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature TCon_nominal - "Condenser outlet temperature used to compute COP_nominal" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Temperature TEva_nominal - "Evaporator outlet temperature used to compute COP_nominal" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.HeatFlowRate Q1_flow_nominal(min=0) - "Heating heat flow rate" annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dT1_nominal(final min=0)= - 5 "Temperature difference condenser outlet-inlet" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.TemperatureDifference dT2_nominal(final max=0)= - -5 "Temperature difference evaporator outlet-inlet" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Pressure dp1_nominal(displayUnit="Pa") - "Pressure difference over condenser" - annotation (Dialog(group="Nominal condition")); - parameter Modelica.Units.SI.Pressure dp2_nominal(displayUnit="Pa") - "Pressure difference over evaporator" - annotation (Dialog(group="Nominal condition")); - parameter Boolean allowFlowReversal1=false - "Set to true to allow flow reversal on condenser side" - annotation (Dialog(tab="Assumptions"), Evaluate=true); - parameter Boolean allowFlowReversal2=false - "Set to true to allow flow reversal on evaporator side" - annotation (Dialog(tab="Assumptions"), Evaluate=true); - final parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal(min=0)= - heaPum.m1_flow_nominal "Mass flow rate on condenser side" - annotation (Dialog(group="Nominal condition")); - final parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal(min=0)= - heaPum.m2_flow_nominal "Mass flow rate on evaporator side" - annotation (Dialog(group="Nominal condition")); - // IO CONNECTORS - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput uEna(start=false) - "Enable signal" - annotation ( - Placement(transformation(extent={{-240,100},{-200,140}}), - iconTransformation(extent={{-140,70},{-100,110}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput TSupSet( - final unit="K", - displayUnit="degC") - "Supply temperature set point" - annotation (Placement(transformation(extent={{-240,-40},{-200,0}}), - iconTransformation(extent={{-140,10},{-100,50}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput m1_flow( - final unit="kg/s") if have_varFloCon and have_pumCon - "Condenser mass flow rate" - annotation (Placement(transformation(extent={{-240,60},{-200,100}}), - iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput m2_flow( - final unit="kg/s") if have_varFloEva - "Evaporator mass flow rate" - annotation (Placement(transformation(extent={{-240,20},{-200,60}}), - iconTransformation(extent={{-140,-50},{-100,-10}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_a2( - redeclare final package Medium = Medium2, - m_flow(min=if allowFlowReversal2 then -Modelica.Constants.inf else 0), - h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) - "Fluid port for entering evaporator water" annotation (Placement( - transformation(extent={{190,-70},{210,-50}}), iconTransformation(extent= - {{90,-70},{110,-50}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_b2( - redeclare final package Medium = Medium2, - m_flow(max=if allowFlowReversal2 then +Modelica.Constants.inf else 0), - h_outflow(start=Medium2.h_default, nominal=Medium2.h_default)) - "Fluid port for leaving evaporator water" annotation (Placement( - transformation(extent={{190,50},{210,70}}), iconTransformation(extent={{ - 90,50},{110,70}}))); - Modelica.Fluid.Interfaces.FluidPort_a port_a1( - redeclare final package Medium = Medium1, - m_flow(min=if allowFlowReversal1 then -Modelica.Constants.inf else 0), - h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) - "Fluid port for entering condenser water" annotation (Placement( - transformation(extent={{-210,-70},{-190,-50}}), iconTransformation( - extent={{-110,-70},{-90,-50}}))); - Modelica.Fluid.Interfaces.FluidPort_b port_b1( - redeclare final package Medium = Medium1, - m_flow(max=if allowFlowReversal1 then +Modelica.Constants.inf else 0), - h_outflow(start=Medium1.h_default, nominal=Medium1.h_default)) - "Fluid port for leaving condenser water" annotation (Placement( - transformation(extent={{-210,50},{-190,70}}), iconTransformation(extent= - {{-110,50},{-90,70}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput PHea( - final unit="W") "Heat pump power" - annotation (Placement(transformation(extent={{200,20},{240,60}}), - iconTransformation(extent={{100,10},{140,50}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput PPum( - final unit="W") "Pump power" - annotation (Placement(transformation(extent={{200,-20},{240,20}}), - iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput mEva_flow(final unit="kg/s") - "Evaporator water mass flow rate" - annotation (Placement(transformation( - extent={{200,-60},{240,-20}}), iconTransformation(extent={{100,-50},{ - 140,-10}}))); - // COMPONENTS - Fluid.HeatPumps.Carnot_TCon heaPum( - redeclare final package Medium1 = Medium1, - redeclare final package Medium2 = Medium2, - final dTEva_nominal=dT2_nominal, - final dTCon_nominal=dT1_nominal, - final TCon_nominal=TCon_nominal, - final TEva_nominal=TEva_nominal, - final allowFlowReversal1=allowFlowReversal1, - final allowFlowReversal2=allowFlowReversal2, - final use_eta_Carnot_nominal=false, - final COP_nominal=COP_nominal, - final QCon_flow_nominal=Q1_flow_nominal, - final dp1_nominal=dp1_nominal, - final dp2_nominal=dp2_nominal) - "Heat pump (index 1 for condenser side)" - annotation (Placement(transformation(extent={{0,-24},{20,-4}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumEva( - redeclare final package Medium = Medium2, - final m_flow_nominal=m2_flow_nominal, - final allowFlowReversal=allowFlowReversal2, - dp_nominal=dp2_nominal) - "Heat pump evaporator water pump" - annotation (Placement(transformation(extent={{70,-70},{50,-50}}))); - Buildings.Experimental.DHC.EnergyTransferStations.BaseClasses.Pump_m_flow pumCon( - redeclare final package Medium = Medium1, - final m_flow_nominal=m1_flow_nominal, - final allowFlowReversal=allowFlowReversal1, - dp_nominal=dp1_nominal) if have_pumCon - "Heat pump condenser water pump" - annotation (Placement(transformation(extent={{-70,-60},{-50,-40}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floConNom( - final k=m1_flow_nominal) if not have_varFloCon - "Nominal flow rate" - annotation (Placement(transformation(extent={{-100,80},{-120,100}}))); - Buildings.Controls.OBC.CDL.Conversions.BooleanToReal booToRea - annotation (Placement(transformation(extent={{-180,110},{-160,130}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant floEvaNom( - final k=m2_flow_nominal) if not have_varFloEva - "Nominal flow rate" - annotation (Placement(transformation(extent={{0,80},{-20,100}}))); - Fluid.Sensors.TemperatureTwoPort senTConLvg( - redeclare final package Medium = Medium1, - final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=m1_flow_nominal) - "Condenser water leaving temperature" - annotation (Placement( - transformation( - extent={{10,-10},{-10,10}}, - rotation=-90, - origin={40,20}))); - Fluid.Sensors.TemperatureTwoPort senTConEnt( - redeclare final package Medium = Medium1, - final allowFlowReversal=allowFlowReversal1, - final m_flow_nominal=m1_flow_nominal) - "Condenser water entering temperature" - annotation (Placement(transformation( - extent={{-10,-10},{10,10}}, - rotation=90, - origin={-40,-20}))); - Buildings.Controls.OBC.CDL.Reals.Switch enaHeaPum( - u2(start=false)) - "Enable heat pump by switching to actual set point" - annotation (Placement(transformation(extent={{-140,10},{-120,30}}))); - Buildings.Controls.OBC.CDL.Reals.Add add2 "Adder" - annotation (Placement(transformation(extent={{140,-10},{160,10}}))); - Modelica.Blocks.Sources.Constant zer(final k=0) if not have_pumCon - "Replacement variable" - annotation (Placement(transformation(extent={{80,-110},{100,-90}}))); - Buildings.Controls.OBC.CDL.Reals.GreaterThreshold staPum[2]( - y(each start=false), - t=1e-2 .* {m1_flow_nominal,m2_flow_nominal}, - h=0.5e-2 .* {m1_flow_nominal, m2_flow_nominal}) - "Pump return status" - annotation (Placement(transformation(extent={{-80,-110},{-100,-90}}))); - Buildings.Controls.OBC.CDL.Logical.And ena - "Enable heat pump if pump return status on" - annotation (Placement(transformation(extent={{-120,-110},{-140,-90}}))); - Modelica.Blocks.Sources.Constant one(final k=1) if not have_pumCon - "Replacement variable" - annotation (Placement(transformation(extent={{60,-110},{40,-90}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply floCon if have_pumCon - "Zero flow rate if not enabled" - annotation (Placement(transformation(extent={{-120,110},{-100,130}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply floEva - "Zero flow rate if not enabled" - annotation (Placement(transformation(extent={{-20,110},{0,130}}))); -protected - Fluid.FixedResistances.LosslessPipe pip( - redeclare package Medium = Medium1, - m_flow_nominal=m1_flow_nominal) if not have_pumCon - "Dummy connection used if model is configured to have no pump" - annotation (Placement(transformation(extent={{-70,-90},{-50,-70}}))); -equation - connect(pumEva.port_b,heaPum. port_a2) - annotation (Line(points={{50,-60},{40,-60},{40,-20},{20,-20}}, - color={0,127,255})); - connect(heaPum.port_b1,senTConLvg. port_a) annotation (Line(points={{20,-8},{40, - -8},{40,10}}, color={0,127,255})); - connect(senTConEnt.port_b,heaPum. port_a1) annotation (Line(points={{-40,-10}, - {-40,-8},{0,-8}}, color={0,127,255})); - connect(senTConEnt.T,enaHeaPum. u3) annotation (Line(points={{-51,-20},{-150,-20}, - {-150,12},{-142,12}}, color={0,0,127})); - connect(enaHeaPum.y,heaPum. TSet) annotation (Line(points={{-118,20},{-10,20}, - {-10,-5},{-2,-5}}, color={0,0,127})); - connect(uEna, booToRea.u) - annotation (Line(points={{-220,120},{-182,120}}, color={255,0,255})); - connect(TSupSet, enaHeaPum.u1) annotation (Line(points={{-220,-20},{-180,-20}, - {-180,28},{-142,28}}, color={0,0,127})); - connect(heaPum.port_b2, port_b2) annotation (Line(points={{0,-20},{-20,-20},{-20, - 40},{180,40},{180,60},{200,60}}, color={0,127,255})); - connect(senTConLvg.port_b, port_b1) - annotation (Line(points={{40,30},{40,60},{-200,60}}, color={0,127,255})); - connect(pumEva.m_flow_actual, mEva_flow) annotation (Line(points={{49,-55},{ - 44,-55},{44,-40},{220,-40}}, color={0,0,127})); - connect(port_a2, pumEva.port_a) - annotation (Line(points={{200,-60},{70,-60}}, color={0,127,255})); - connect(port_a1, pumCon.port_a) - annotation (Line(points={{-200,-60},{-140,-60},{-140,-50},{-70,-50}}, - color={0,127,255})); - connect(add2.y, PPum) - annotation (Line(points={{162,0},{220,0}}, color={0,0,127})); - connect(heaPum.P, PHea) annotation (Line(points={{21,-14},{190,-14},{190,40},{ - 220,40}}, color={0,0,127})); - connect(pumCon.P, add2.u2) annotation (Line(points={{-49,-41},{0,-41},{0,-80}, - {120,-80},{120,-6},{138,-6}}, color={0,0,127})); - connect(pumEva.P, add2.u1) annotation (Line(points={{49,-51},{46,-51},{46,6},{ - 138,6}}, color={0,0,127})); - connect(pumCon.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-50}, - {-40,-50},{-40,-30}},color={0,127,255})); - connect(zer.y, add2.u2) annotation (Line(points={{101,-100},{120,-100},{120, - -6},{138,-6}}, - color={0,0,127})); - connect(pumCon.m_flow_actual, staPum[1].u) annotation (Line(points={{-49,-45}, - {-38,-45},{-38,-100},{-78,-100}}, color={0,0,127})); - connect(pumEva.m_flow_actual, staPum[2].u) annotation (Line(points={{49,-55},{ - 20,-55},{20,-100},{-78,-100}}, color={0,0,127})); - connect(staPum[1].y, ena.u1) - annotation (Line(points={{-102,-100},{-118,-100}}, color={255,0,255})); - connect(staPum[2].y, ena.u2) annotation (Line(points={{-102,-100},{-110,-100}, - {-110,-108},{-118,-108}}, color={255,0,255})); - connect(ena.y, enaHeaPum.u2) annotation (Line(points={{-142,-100},{-160,-100}, - {-160,20},{-142,20}}, color={255,0,255})); - connect(one.y, staPum[1].u) - annotation (Line(points={{39,-100},{-78,-100}}, color={0,0,127})); - connect(booToRea.y, floCon.u1) annotation (Line(points={{-158,120},{-140,120}, - {-140,126},{-122,126}}, color={0,0,127})); - connect(m1_flow, floCon.u2) annotation (Line(points={{-220,80},{-140,80},{-140, - 114},{-122,114}}, color={0,0,127})); - connect(booToRea.y, floEva.u1) annotation (Line(points={{-158,120},{-140,120}, - {-140,134},{-40,134},{-40,126},{-22,126}}, color={0,0,127})); - connect(floConNom.y, floCon.u2) annotation (Line(points={{-122,90},{-130,90},{ - -130,114},{-122,114}}, color={0,0,127})); - connect(m2_flow, floEva.u2) annotation (Line(points={{-220,40},{-40,40},{-40,114}, - {-22,114}}, color={0,0,127})); - connect(floEvaNom.y, floEva.u2) annotation (Line(points={{-22,90},{-30,90},{-30, - 114},{-22,114}}, color={0,0,127})); - connect(floEva.y, pumEva.m_flow_in) - annotation (Line(points={{2,120},{60,120},{60,-48}}, color={0,0,127})); - connect(floCon.y, pumCon.m_flow_in) - annotation (Line(points={{-98,120},{-60,120},{-60,-38}}, color={0,0,127})); - connect(port_a1, pip.port_a) annotation (Line(points={{-200,-60},{-140,-60},{ - -140,-80},{-70,-80}}, color={0,127,255})); - connect(pip.port_b, senTConEnt.port_a) annotation (Line(points={{-50,-80},{ - -40,-80},{-40,-30}}, color={0,127,255})); - annotation ( - defaultComponentName="heaPum", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-60,60},{60,-60}}, - lineColor={27,0,55}, - fillColor={170,213,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-58,62},{62,-58}}, - lineColor={27,0,55}, - fillColor={170,213,255}, - fillPattern=FillPattern.Solid)}), Diagram( - coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}}), - graphics={Text( - extent={{80,122},{146,68}}, - textColor={238,46,47}, - textString="fixme: to be deleted.")}), - Documentation(info=" -

-This model represents a water-to-water heat pump, an evaporator water pump, -and an optional condenser water pump if have_pumCon is set to -true. -The heat pump model is described in - -Buildings.Fluid.HeatPumps.Carnot_TCon. -By default variable speed pumps are considered. -Constant speed pumps may also be represented by setting have_varFloEva -and have_varFloCon to false. -

-

Controls

-

-The system is enabled when the input control signal uEna switches to -true. -When enabled, -

-
    -
  • -the evaporator and optionally the condenser water pumps are commanded on and supply either -the mass flow rate set point provided as an input in the case of variable speed pumps, -or the nominal mass flow rate in the case of constant speed pumps, -
  • -
  • -the heat pump is commanded on when the evaporator and optionally the condenser water pump -are proven on. When enabled, the heat pump controller—idealized in this model—tracks the -supply temperature set point at the condenser outlet. -
  • -
-", revisions=" -
    -
  • -May 3, 2023, by David Blum:
    -Assigned dp_nominal to condenser pump.
    -This is for - -issue 3379. -
  • -
  • -November 16, 2022, by Michael Wetter:
    -Set pumEva.dp_nominal to correct value. -
  • -
  • -February 23, 2021, by Antoine Gautier:
    -First implementation. -
  • -
-")); -end HeatPump_Old; diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order index 5bbac2ea481..38cb15e7a72 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/package.order @@ -1,7 +1,6 @@ Borefield Chiller HeatExchanger -HeatPump_Old HeatPump HeatPumpDHWTank SwitchBox From ebf158009b75ba614ab107689183c0b833fe3118 Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 08:15:32 -0800 Subject: [PATCH 135/183] Clean parameter documentation in hot water models --- .../BaseClasses/PartialFourPortDHW.mo | 4 +- ...enericDomesticHotWaterWithHeatExchanger.mo | 9 +---- .../DirectHeatExchangerWithElectricHeat.mo | 38 +++++++++---------- 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index f4cab86def4..c621e1d6275 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -2,7 +2,7 @@ within Buildings.Experimental.DHC.Loads.HotWater.BaseClasses; partial model PartialFourPortDHW "A partial model for domestic water heating" replaceable package MediumDom = - Modelica.Media.Interfaces.PartialMedium "Medium 1 in the component" + Modelica.Media.Interfaces.PartialMedium "Medium for domestic water in the component" annotation (choices( choice(redeclare package Medium = Buildings.Media.Air "Moist air"), choice(redeclare package Medium = Buildings.Media.Water "Water"), @@ -12,7 +12,7 @@ partial model PartialFourPortDHW X_a=0.40) "Propylene glycol water, 40% mass fraction"))); replaceable package MediumHea = - Modelica.Media.Interfaces.PartialMedium "Medium 2 in the component" + Modelica.Media.Interfaces.PartialMedium "Medium for heating source in the component" annotation (choices( choice(redeclare package Medium = Buildings.Media.Air "Moist air"), choice(redeclare package Medium = Buildings.Media.Water "Water"), diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo index 15aca798d68..15d8253b69c 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Data/GenericDomesticHotWaterWithHeatExchanger.mo @@ -11,11 +11,9 @@ record GenericDomesticHotWaterWithHeatExchanger parameter Modelica.Units.SI.ThermalConductivity kIns = 0.04 "Specific heat conductivity of insulation" annotation (Dialog(group="Tank", tab="Advanced")); - parameter Modelica.Units.SI.PressureDifference dpHexHea_nominal(displayUnit="Pa")=5000 "Pressure drop across the heat exchanger at nominal conditions on heating water side" annotation (Dialog(group="Heat exchanger", tab="Advanced")); - parameter Modelica.Units.SI.PressureDifference dpHexDom_nominal(displayUnit="Pa")= dpHexHea_nominal*(mDom_flow_nominal/mHex_flow_nominal)^2 "Pressure drop across the heat exchanger at nominal conditions on domestic hot water side" @@ -27,19 +25,14 @@ record GenericDomesticHotWaterWithHeatExchanger parameter Modelica.Units.SI.MassFlowRate mDom_flow_nominal "Design mass flow rate of domestic hot water" annotation (Dialog(group="Heat exchanger")); - parameter Modelica.Units.SI.HeatFlowRate QHex_flow_nominal(min=0) = mDom_flow_nominal*4200*(TDom_nominal-TCol_nominal) "Nominal heating flow rate at heat exchanger" annotation (Dialog(group="Heat exchanger")); -// parameter Modelica.Units.SI.HeatFlowRate QTan_flow_nominal = mHex_flow_nominal*4200*(THex_nominal-TTan_nominal) -// "Nominal heating flow rate"; -// parameter Modelica.Units.SI.Height hHex_a = 1 "Height of portHex_a of the heat exchanger, measured from tank bottom"; -// parameter Modelica.Units.SI.Height hHex_b = 0.2 "Height of portHex_b of the heat exchanger, measured from tank bottom"; parameter Modelica.Units.SI.Temperature TDom_nominal = 318.15 "Temperature of domestic hot water leaving heater at nominal conditions" annotation (Dialog(group="Domestic hot water")); parameter Modelica.Units.SI.Temperature TCol_nominal = 288.15 - "Temperature of cold water" + "Temperature of cold water at nominal conditions" annotation (Dialog(group="Domestic hot water", tab="Advanced")); parameter Integer nSeg(min=4) = 5 "Number of volume segments used to discretize tank" annotation (Dialog(group="Tank", tab="Advanced")); diff --git a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo index e1892961e7d..b8962c5f691 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/DirectHeatExchangerWithElectricHeat.mo @@ -16,8 +16,8 @@ model DirectHeatExchangerWithElectricHeat QMax_flow=QMax_flow) if have_eleHea == true "Supplemental electric resistance domestic hot water heater" annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium - = MediumDom, + Buildings.Fluid.Sensors.TemperatureTwoPort senTemHot(redeclare package Medium = + MediumDom, m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water supply" annotation (Placement(transformation(extent={{58,50},{78,70}}))); @@ -26,8 +26,8 @@ model DirectHeatExchangerWithElectricHeat redeclare package Medium2 = MediumHea, m1_flow_nominal=mDom_flow_nominal, m2_flow_nominal=mHea_flow_nominal, - dp1_nominal=dpHotSou_nominal, - dp2_nominal=dpDis_nominal, + dp1_nominal=dpDom_nominal, + dp2_nominal=dpHea_nominal, eps=eps) "Domestic hot water heater heat exchanger" annotation (Placement(transformation(extent={{-60,-64},{-40,-44}}))); Fluid.Sensors.TemperatureTwoPort senTemHexOut(redeclare package Medium = @@ -35,12 +35,12 @@ model DirectHeatExchangerWithElectricHeat m_flow_nominal=mDom_flow_nominal) "Temperature sensor for hot water leaving heat exchanger" annotation (Placement(transformation(extent={{-30,-50},{-10,-30}}))); - parameter Modelica.Units.SI.PressureDifference dpHotSou_nominal=0 - "Pressure difference in heat exchanger on hot water side"; - parameter Modelica.Units.SI.PressureDifference dpDis_nominal=0 - "Pressure difference in heat exchanger on district water side"; + parameter Modelica.Units.SI.PressureDifference dpDom_nominal=0 + "Pressure difference in heat exchanger on domestic water side"; + parameter Modelica.Units.SI.PressureDifference dpHea_nominal=0 + "Pressure difference in heat exchanger on heating water side"; parameter Modelica.Units.SI.PressureDifference dpEle_nominal=0 - "Pressure difference in electric reheater for hot water"; + "Pressure difference in electric reheater for domestic water"; Modelica.Blocks.Interfaces.RealOutput THexOut "Temperature of hot water leaving heat exchanger" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); @@ -65,9 +65,8 @@ equation connect(senTemHexOut.port_b, heaEle.port_a) annotation (Line(points={{-10,-40},{10,-40}}, color={0,127,255})); - connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-10,-40},{ - 0,-40},{0,0},{10,0}}, - color={0,127,255})); + connect(senTemHexOut.port_b, pip.port_a) annotation (Line(points={{-10,-40},{0, + -40},{0,0},{10,0}}, color={0,127,255})); connect(heaEle.port_b, senTemHot.port_a) annotation (Line(points={{30,-40},{40,-40},{40,60},{58,60}}, color={0,127,255})); @@ -81,20 +80,21 @@ equation {110,0}}, color={0,0,127})); connect(zero.y, PEle) annotation (Line(points={{81,20},{90,20},{90,0},{110,0}}, color={0,0,127})); - connect(port_aDom, hex.port_a1) annotation (Line(points={{-100,60},{-64,60},{ - -64,-48},{-60,-48}}, color={0,127,255})); - connect(hex.port_a2, port_aHea) annotation (Line(points={{-40,-60},{-36,-60}, - {-36,-58},{90,-58},{90,-60},{100,-60}}, color={0,127,255})); + connect(port_aDom, hex.port_a1) annotation (Line(points={{-100,60},{-64,60},{-64, + -48},{-60,-48}}, color={0,127,255})); + connect(hex.port_a2, port_aHea) annotation (Line(points={{-40,-60},{-36,-60},{ + -36,-58},{90,-58},{90,-60},{100,-60}}, color={0,127,255})); connect(senTemHot.port_b, port_bDom) annotation (Line(points={{78,60},{100,60}}, color={0,127,255})); connect(hex.port_b2, port_bHea) annotation (Line(points={{-60,-60},{-100,-60}}, color={0,127,255})); annotation (preferredView="info",Documentation(info="

-This model implements a basic domestic hot water source for a -low-temperature district heating network. It includes preheating by the +This model implements a basic domestic hot water source for a +district heating network. It includes heating by the district through a heat-exchanger and optional electric resistance to bring -the temperature of produced hot water to setpoint. +the temperature of produced hot water to setpoint, if the district supply +water is not hot enough.

\"image\" From e64cb59b9b7a879ff17dc9ae009b9c5c217d5cec Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 08:25:06 -0800 Subject: [PATCH 136/183] Clean parameter documentation in hot water models --- .../HotWater/BaseClasses/HeatExchangerPumpController.mo | 2 +- .../DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo | 2 +- .../Loads/HotWater/BaseClasses/TankChargingController.mo | 7 +++++-- .../Examples/StorageTankWithExternalHeatExchanger.mo | 7 +++---- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo index dd9ed475771..d4efcf9960f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/HeatExchangerPumpController.mo @@ -6,7 +6,7 @@ block HeatExchangerPumpController parameter Modelica.Units.SI.PressureDifference dpPum_nominal( displayUnit="Pa", min=0) - "Heating water flow rate at full speed through heat exchanger"; + "Heating water pump head at full speed through heat exchanger"; parameter Real k=0.1 "Proportioanl gain of circulation pump controller"; parameter Real Ti=60 "Integrator time constant of circulation pump controller"; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo index c621e1d6275..71361f27750 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/PartialFourPortDHW.mo @@ -60,7 +60,7 @@ partial model PartialFourPortDHW Controls.OBC.CDL.Interfaces.RealInput TDomSet( final unit="K", displayUnit="degC") - "Temperature setpoint for domestic water source from heater" + "Temperature setpoint for heated domestic water" annotation (Placement(transformation(extent={{-120,-10},{-100,10}}))); annotation (Documentation(info=" diff --git a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo index 95db2848c37..a451043e710 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/BaseClasses/TankChargingController.mo @@ -104,8 +104,11 @@ water tank needs to be charged, and false otherwise.

Whether the tank needs to be charged depends on the difference between the -measured tank temperature and its set point. -The charge signal has a hysteresis of 5 Kelvin. +measured top and bottom tank temperatures and the tank's set point. +If the top temperature is below the set point with hysteresis, +charging is enabled until the bottom temperature reaches the set point with +hysteresis, at which point charging is disabled. +The hysteresis is 5 Kelvin.

")); end TankChargingController; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index b373fcb5cc3..6a94267b33a 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -2,7 +2,6 @@ within Buildings.Experimental.DHC.Loads.HotWater.Examples; model StorageTankWithExternalHeatExchanger "Example model for storage tank with external heat exchanger" extends Modelica.Icons.Example; - package Medium = Buildings.Media.Water "Medium model"; parameter Modelica.Units.SI.Temperature TCol = 273.15+10 "Temperature of domestic cold water supply"; parameter Modelica.Units.SI.MassFlowRate mHea_flow_nominal = datWatHea.QHex_flow_nominal/4200/(55 - 50) "Tank heater water loop nominal mass flow"; @@ -64,7 +63,7 @@ model StorageTankWithExternalHeatExchanger redeclare package Medium = Medium, m_flow_nominal=mHea_flow_nominal, tau=0) annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); - Controls.OBC.CDL.Reals.AddParameter addPar(p=5) + Controls.OBC.CDL.Reals.AddParameter addPar(p=5) "dT for heater" annotation (Placement(transformation(extent={{14,-24},{24,-14}}))); Fluid.Sources.Boundary_pT preRef( nPorts=1, @@ -88,8 +87,8 @@ equation annotation (Line(points={{-33,-40},{-33,62},{40,62}}, color={0,127,255})); connect(booToRea.u, domHotWatTan.charge) annotation (Line(points={{38,-10},{32, -10},{32,21},{22,21}}, color={255,0,255})); - connect(domHotWatTan.TDomSet, conTSetHot.y) annotation (Line(points={{-1,30}, - {-20,30},{-20,10},{-59,10}}, color={0,0,127})); + connect(domHotWatTan.TDomSet, conTSetHot.y) annotation (Line(points={{-1,30},{ + -20,30},{-20,10},{-59,10}}, color={0,0,127})); connect(mov.port_b, domHotWatTan.port_aHea) annotation (Line(points={{50,24},{20,24}}, color={0,127,255})); connect(hea.port_b, mov.port_a) annotation (Line(points={{60,-40},{80,-40},{80, From e043a243f87eaea3fe58fc35b16922d8724cf6eb Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 08:53:42 -0800 Subject: [PATCH 137/183] Configure unit tests for hot water examples --- ...tureDirectHeatExchangerWithElectricHeat.mo | 26 +++++++++++++++---- .../StorageTankWithExternalHeatExchanger.mo | 12 +++++---- ...ureDirectHeatExchangerWithElectricHeat.mos | 11 ++++---- .../HeaterAndFixtureHeatPumpWithTank.mos | 7 ----- .../StorageTankWithExternalHeatExchanger.mos | 7 +++++ 5 files changed, 40 insertions(+), 23 deletions(-) delete mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo index 31ddd107f39..4ea8ff62c2f 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mo @@ -113,9 +113,25 @@ equation -10},{62,-10},{62,-32},{-1.33333,-32},{-1.33333,-40}}, color={0,127,255})); connect(genNoEle.port_aDom, sinDis.ports[3]) annotation (Line(points={{32,4},{ 24,4},{24,-28},{-71.3333,-28},{-71.3333,-40}}, color={0,127,255})); - annotation (experiment( - StopTime=864000, - Interval=60, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl")); + annotation (__Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos" "Simulate and plot"), + Documentation(info=" +

+Example model of a fresh water station that heats up domestic hot water. +Input is a load profile which is sent to a model that computes the hot and cold water draw. +The domestic hot water is produced by a heat exchanger with a district water source +and optionally an electric heater. Examples with and without the electric +heater are shown. +

+", revisions=" +
    +
  • +Nov 15, 2023, by David Blum:
    +First implementation. +
  • +
+"), +experiment( + StopTime=172800, + Tolerance=1e-06)); end HeaterAndFixtureDirectHeatExchangerWithElectricHeat; diff --git a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo index 6a94267b33a..2b791499da7 100644 --- a/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo +++ b/Buildings/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mo @@ -110,11 +110,14 @@ equation extent={{-140,160},{160,120}}, textString="%name", textColor={0,0,255})}), - Documentation(info=" + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos" "Simulate and plot"), +Documentation(info="

Example model of a fresh water station that heats up domestic hot water. Input is a load profile which is sent to a model that computes the hot and cold water draw. -If the tank needs to be recharged, then heating water with a prescribed temperature is sent to the tank. +If the tank needs to be recharged, then tank water is circulated through a heater +with a prescribed temperature lift.

", revisions="
    @@ -125,8 +128,7 @@ First implementation.
"), experiment( - StopTime=8640000, - Interval=30, + StopTime=172800, Tolerance=1e-06, - __Dymola_Algorithm="Cvode")); + __Dymola_Algorithm="Dassl")); end StorageTankWithExternalHeatExchanger; diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos index 1c8204a1679..c50aa8b0041 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos @@ -1,6 +1,5 @@ -simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat", method="CVode", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureDirectHeatExchangerWithElectricHeat"); -createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.TMixSet", "theMixVal.senTemHot.T"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={677, 15, 592, 649}, y={"gen.THotSouSet", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.yMixSet"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}); - +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat", stopTime=172800, numberOfIntervals=0, outputInterval=60, tolerance=1e-06, resultFile="HeaterAndFixtureDirectHeatExchangerWithElectricHeat"); +createPlot(id=1, position={560, 11, 592, 621}, y={"theMixValNoEle.conPID.y", "theMixVal.conPID.y"}, range={0.0, 900000.0, 0.7000000000000001, 1.1}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={560, 11, 592, 621}, y={"genNoEle.THexOut", "souDisHot.T"}, range={0.0, 900000.0, 290.0, 330.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "K"}); +createPlot(id=1, position={560, 11, 592, 621}, y={"gen.PEle", "genNoEle.PEle"}, range={0.0, 900000.0, -20000.0, 80000.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"W", "W"}); +createPlot(id=1, position={532, 19, 592, 614}, y={"sch.y[1]"}, range={0.0, 180000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos deleted file mode 100644 index b4a12d01f11..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/HeaterAndFixtureHeatPumpWithTank.mos +++ /dev/null @@ -1,7 +0,0 @@ -simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureHeatPumpWithTank", method="CVode", tolerance=1e-6, stopTime=86400, resultFile="HeaterAndFixtureHeatPumpWithTank"); -createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.TMixSet", "theMixVal.senTemHot.T"}, range={0.0, 90000.0, 290.0, 320.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={677, 15, 592, 649}, y={"gen.THotSouSet", "gen.senTemHot.T"}, range={0.0, 90000.0, 280.0, 340.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={677, 15, 592, 649}, y={"PEle"}, range={0.0, 90000.0, -50000.0, 100000.0}, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={677, 15, 592, 649}, y={"theMixVal.yMixSet"}, range={0.0, 90000.0, -0.5, 1.0}, grid=true, subPlot=104, colors={{28,108,200}}); - - diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos new file mode 100644 index 00000000000..f38257b6ac9 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos @@ -0,0 +1,7 @@ +simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.StorageTankWithExternalHeatExchanger", stopTime=172800, tolerance=1e-06, resultFile="StorageTankWithExternalHeatExchanger"); +createPlot(id=1, position={532, 19, 592, 614}, y={"theMixVal.TMixSet", "theMixVal.senTMix.T", "domHotWatTan.senTemHot.T", +"domHotWatTan.TTanTop.T", "domHotWatTan.TTanBot.T", "domHotWatTan.conCha.TTanTopSet"}, range={0.0, 180000.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}, {162,29,33}}, timeUnit="s", displayUnits={"degC", "degC", "degC", "degC", "degC", "degC"}); +createPlot(id=1, position={532, 19, 592, 614}, y={"hea.Q_flow"}, range={0.0, 180000.0, -500.0, 1000.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); +createPlot(id=1, position={532, 19, 592, 614}, y={"domHotWatTan.PEle"}, range={0.0, 180000.0, 0.0, 1.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); +createPlot(id=1, position={532, 19, 592, 614}, y={"domHotWatTan.divVal.y_actual"}, range={0.0, 180000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={532, 19, 592, 614}, y={"sch.y[1]"}, range={0.0, 180000.0, -1.0, 2.0}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file From 7a9d2f57ca25bf12a370c5cb51e5062bf195e73d Mon Sep 17 00:00:00 2001 From: David Blum Date: Wed, 15 Nov 2023 09:39:39 -0800 Subject: [PATCH 138/183] Add unit test results for HotWater loads --- ...ureDirectHeatExchangerWithElectricHeat.txt | 21 ++++++++-------- ...s_StorageTankWithExternalHeatExchanger.txt | 24 +++++++++++++++++++ .../StorageTankWithExternalHeatExchanger.mos | 5 ++-- ...ureDirectHeatExchangerWithElectricHeat.mos | 13 +++++----- ...s.StorageTankWithExternalHeatExchanger.mos | 13 ++++++++++ 5 files changed, 57 insertions(+), 19 deletions(-) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_StorageTankWithExternalHeatExchanger.txt create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.StorageTankWithExternalHeatExchanger.mos diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt index a895a3a0216..298c87228d4 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_HeaterAndFixtureDirectHeatExchangerWithElectricHeat.txt @@ -1,15 +1,16 @@ -last-generated=2023-10-02 +last-generated=2023-11-15 statistics-simulation= { "linear": " ", - "nonlinear": "2", - "number of continuous time states": "2", + "nonlinear": " ", + "number of continuous time states": "12", "numerical Jacobians": "0" } -time=[0e+00, 8.64e+04] -theMixVal.TMixSet=[3.161499938964844e+02, 3.161499938964844e+02] -theMixVal.senTemHot.T=[3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02] -gen.THotSouSet=[3.231499938964844e+02, 3.231499938964844e+02] -gen.senTemHot.T=[2.931499938964844e+02, 2.931499938964844e+02, 2.931499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02, 3.231499938964844e+02] -PEle=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.704695703125e+04, 3.704695703125e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.2648140625e+04, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.130036591552198e-09, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -theMixVal.yMixSet=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.471937119960785e-01, 4.471937119960785e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.733856439590454e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.5729418595688e-14, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +time=[0e+00, 1.728e+05] +theMixValNoEle.conPID.y=[1e+00, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941632270813e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01, 7.352941036224365e-01] +theMixVal.conPID.y=[1e+00, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333329558372498e-01, 8.333332061767578e-01, 8.333333730697632e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01, 8.333333134651184e-01] +genNoEle.THexOut=[2.931499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02, 3.171499938964844e+02] +souDisHot.T=[3.231499938964844e+02, 3.231499938964844e+02] +gen.PEle=[6.0249599609375e+03, 3.7562923828125e+03, 2.604551318359375e+03, 1.566018896484375e+03, 7.436014038085938e+02, 4.006816711425781e+02, 5.8686259765625e+02, 9.976413208007821e+02, 2.083518212890625e+03, 4.9165443359375e+03, 1.2809462890625e+04, 2.74625484375e+04, 5.231342890625e+04, 6.11233109375e+04, 6.291094140625e+04, 6.24658203125e+04, 6.16340890625e+04, 5.917757499999999e+04, 5.53512640625e+04, 5.2027409375e+04, 4.982349609375e+04, 4.711332421875e+04, 4.225746640625e+04, 3.80449e+04, 3.539295390625e+04, 3.326280078125e+04, 3.145531171875e+04, 2.9647824609375e+04, 2.784033554687499e+04, 2.60328484375e+04, 2.608762109375e+04, 2.8886108203125e+04, 3.1071871484375e+04, 3.35001265625e+04, 3.755079062500002e+04, 4.356075390624998e+04, 4.876240859375e+04, 5.302582734375e+04, 5.398379765625e+04, 5.25855015625e+04, 5.07017109375e+04, 4.873068046875e+04, 4.596984296875e+04, 4.152069296875e+04, 3.747264609375e+04, 3.541400390625e+04, 3.2581467578125e+04, 2.6312022265625e+04, 4.90860517578125e+03, 3.657441845703125e+03, 2.51039990234375e+03, 1.489190161132813e+03, 6.84868505859375e+02, 4.061966979980469e+02, 6.026276733398438e+02, 1.068046264648445e+03, 2.189275244140636e+03, 5.409415234374948e+03, 1.36134587890625e+04, 2.9496894140625e+04, 5.391192578125e+04, 6.139069609375e+04, 6.293540234375e+04, 6.241537109375e+04, 6.151396328125e+04, 5.88841328125e+04, 5.503022265625e+04, 5.181734140625e+04, 4.964338984374998e+04, 4.678411875000004e+04, 4.182554687500004e+04, 3.78084734375e+04, 3.51929875e+04, 3.31121765625e+04, 3.130468828125e+04, 2.949719921875e+04, 2.7689712109375e+04, 2.5882223828125e+04, 2.627540546875e+04, 2.9105045703125e+04, 3.1251220703125e+04, 3.3741753125e+04, 3.802049296875e+04, 4.404184765625e+04, 4.918221015625e+04, 5.32586015625e+04, 5.392651640625e+04, 5.242567890625e+04, 5.054904296875e+04, 4.85435828125e+04, 4.565093359375e+04, 4.11296625e+04, 3.724378671875e+04, 3.525668203125e+04, 3.2197198046875e+04, 2.564944140625e+04, 4.7978154296875e+03, 3.55931923828125e+03, 2.417044482421875e+03, 1.413878247070312e+03, 6.275999755859375e+02] +genNoEle.PEle=[0e+00, 0e+00] +sch.y[1]=[7.999999821186066e-02, 5.985169559717178e-02, 4.150018021464348e-02, 2.49524999409914e-02, 1.184833310544491e-02, 6.384348031133413e-03, 9.350902028381824e-03, 1.589613296091558e-02, 3.319818675518036e-02, 7.833882123231888e-02, 2.041023373603821e-01, 4.375804662704468e-01, 8.335472941398621e-01, 9.739214420318604e-01, 1.002405095100403e+00, 9.953126311302185e-01, 9.820600271224975e-01, 9.429186582565307e-01, 8.819513559341431e-01, 8.289899826049805e-01, 7.938734292984009e-01, 7.506903290748597e-01, 6.733184933662415e-01, 6.061966061592102e-01, 5.639412999153137e-01, 5.299999713897705e-01, 5.011999845504761e-01, 4.723999977111816e-01, 4.435999989509581e-01, 4.147999942302704e-01, 4.156727194786072e-01, 4.602630257606506e-01, 4.950903594493866e-01, 5.337815046310425e-01, 5.983236193656926e-01, 6.940846443176265e-01, 7.769663810729981e-01, 8.448984742164611e-01, 8.601624727249145e-01, 8.378824234008789e-01, 8.078666925430298e-01, 7.764608144760132e-01, 7.324704051017761e-01, 6.615789294242859e-01, 5.970784902572632e-01, 5.642766952514648e-01, 5.1914381980896e-01, 4.192482888698578e-01, 7.821232080459595e-02, 5.827663913369178e-02, 3.999999910593033e-02, 2.372833378612995e-02, 1.091249957680702e-02, 6.472222972661257e-03, 9.602097794413567e-03, 1.70179456472398e-02, 3.488330543041247e-02, 8.619209527969278e-02, 2.16912978887558e-01, 4.699951291084289e-01, 8.590173125267029e-01, 9.781819224357605e-01, 1.002794742584229e+00, 9.945087790489197e-01, 9.801459908485413e-01, 9.3824303150177e-01, 8.768359661102295e-01, 8.256427764892578e-01, 7.910036921501157e-01, 7.454448699951177e-01, 6.664363741874701e-01, 6.02429473400116e-01, 5.607550859451294e-01, 5.276000022888183e-01, 4.988000094890594e-01, 4.699999988079071e-01, 4.412000119686127e-01, 4.123999953269958e-01, 4.186648607254028e-01, 4.637515127658844e-01, 4.979480504989624e-01, 5.376315116882324e-01, 6.058077335357666e-01, 7.017502784729004e-01, 7.836553454399109e-01, 8.486074209213257e-01, 8.592497944831848e-01, 8.353358507156372e-01, 8.054340958595276e-01, 7.73479676246643e-01, 7.273889780044556e-01, 6.553483724594116e-01, 5.934319376945496e-01, 5.61769962310791e-01, 5.130209922790527e-01, 4.086908996105194e-01, 7.644702792167664e-02, 5.671318098902702e-02, 3.851250037550926e-02, 2.252833358943462e-02, 9.999999776482582e-03] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_StorageTankWithExternalHeatExchanger.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_StorageTankWithExternalHeatExchanger.txt new file mode 100644 index 00000000000..388726a9f75 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Experimental_DHC_Loads_HotWater_Examples_StorageTankWithExternalHeatExchanger.txt @@ -0,0 +1,24 @@ +last-generated=2023-11-15 +statistics-initialization= +{ + "nonlinear": "1, 1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "1, 1, 1", + "number of continuous time states": "15", + "numerical Jacobians": "0" +} +time=[0e+00, 1.728e+05] +theMixVal.TMixSet=[3.081499938964844e+02, 3.081499938964844e+02] +theMixVal.senTMix.T=[2.931499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02, 3.081499938964844e+02] +domHotWatTan.senTemHot.T=[2.931499938964844e+02, 3.207474670410156e+02, 3.206727294921875e+02, 3.206035766601562e+02, 3.205524291992188e+02, 3.205205993652344e+02, 3.204981689453125e+02, 3.204784851074219e+02, 3.204515991210938e+02, 3.204035949707031e+02, 3.202911682128906e+02, 3.200279846191406e+02, 3.194520874023438e+02, 3.184129943847656e+02, 3.170361938476562e+02, 3.154847717285156e+02, 3.138613586425781e+02, 3.153184204101562e+02, 3.152786865234375e+02, 3.153708801269531e+02, 3.156370239257812e+02, 3.159957580566406e+02, 3.164180908203125e+02, 3.169566955566406e+02, 3.176262512207031e+02, 3.183736267089844e+02, 3.191731262207031e+02, 3.200185241699219e+02, 3.209107666015625e+02, 3.218515625e+02, 3.216044311523438e+02, 3.201795349121094e+02, 3.190120239257812e+02, 3.180206604003906e+02, 3.170729370117188e+02, 3.160796813964844e+02, 3.149801025390625e+02, 3.137557067871094e+02, 3.158576965332031e+02, 3.158539123535156e+02, 3.159980163574219e+02, 3.163041076660156e+02, 3.166865539550781e+02, 3.171363525390625e+02, 3.176978454589844e+02, 3.183803100585938e+02, 3.191307067871094e+02, 3.199419555664062e+02, 3.208951416015625e+02, 3.221982116699219e+02, 3.212597351074219e+02, 3.210323791503906e+02, 3.20901611328125e+02, 3.208318786621094e+02, 3.207872314453125e+02, 3.207429504394531e+02, 3.206705322265625e+02, 3.205284729003906e+02, 3.202058410644531e+02, 3.1966015625e+02, 3.187944946289062e+02, 3.1759130859375e+02, 3.161376342773438e+02, 3.145519714355469e+02, 3.154347839355469e+02, 3.152290344238281e+02, 3.152412109375e+02, 3.153875732421875e+02, 3.156796569824219e+02, 3.160429992675781e+02, 3.164717712402344e+02, 3.17022216796875e+02, 3.177003784179688e+02, 3.184526062011719e+02, 3.192560119628906e+02, 3.20105224609375e+02, 3.2100146484375e+02, 3.219463500976562e+02, 3.214589233398438e+02, 3.20055908203125e+02, 3.189117431640625e+02, 3.179301147460938e+02, 3.169825744628906e+02, 3.159825744628906e+02, 3.148728942871094e+02, 3.136382141113281e+02, 3.158519592285156e+02, 3.158598937988281e+02, 3.160211486816406e+02, 3.163365478515625e+02, 3.167237854003906e+02, 3.171809692382812e+02, 3.177533264160156e+02, 3.184437561035156e+02, 3.19197998046875e+02, 3.200174865722656e+02, 3.209878845214844e+02, 3.223322143554688e+02, 3.212357177734375e+02, 3.210183410644531e+02, 3.208939819335938e+02] +domHotWatTan.TTanTop.T=[3.231499938964844e+02, 3.231003112792969e+02, 3.230203857421875e+02, 3.229464111328125e+02, 3.228913269042969e+02, 3.228569641113281e+02, 3.228346557617188e+02, 3.228143310546875e+02, 3.227860107421875e+02, 3.22735107421875e+02, 3.226156921386719e+02, 3.223360290527344e+02, 3.217239990234375e+02, 3.206196594238281e+02, 3.191565246582031e+02, 3.175079956054688e+02, 3.157829284667969e+02, 3.163111877441406e+02, 3.169740295410156e+02, 3.172120361328125e+02, 3.1743212890625e+02, 3.177398376464844e+02, 3.181237182617188e+02, 3.185988159179688e+02, 3.191993103027344e+02, 3.199119873046875e+02, 3.207035217285156e+02, 3.215547180175781e+02, 3.224583129882812e+02, 3.234133911132812e+02, 3.240090026855469e+02, 3.224955749511719e+02, 3.212555236816406e+02, 3.20202392578125e+02, 3.191954956054688e+02, 3.181401672363281e+02, 3.169718017578125e+02, 3.156707763671875e+02, 3.165734558105469e+02, 3.174675903320312e+02, 3.178071594238281e+02, 3.180948791503906e+02, 3.184443359375e+02, 3.188600769042969e+02, 3.193641052246094e+02, 3.199857482910156e+02, 3.20710693359375e+02, 3.215086669921875e+02, 3.224089965820312e+02, 3.235252075195312e+02, 3.236397705078125e+02, 3.233983154296875e+02, 3.2325830078125e+02, 3.231847229003906e+02, 3.231403503417969e+02, 3.230940246582031e+02, 3.230172729492188e+02, 3.228666381835938e+02, 3.225242309570312e+02, 3.219447021484375e+02, 3.210250854492188e+02, 3.197464599609375e+02, 3.182017211914062e+02, 3.165167846679688e+02, 3.156455688476562e+02, 3.167599792480469e+02, 3.1707958984375e+02, 3.17241943359375e+02, 3.174670715332031e+02, 3.177841491699219e+02, 3.181744079589844e+02, 3.186588745117188e+02, 3.192699584960938e+02, 3.199903564453125e+02, 3.207874145507812e+02, 3.216430969238281e+02, 3.225509948730469e+02, 3.235103759765625e+02, 3.238543395996094e+02, 3.223642883300781e+02, 3.211490478515625e+02, 3.20106201171875e+02, 3.190995178222656e+02, 3.180369873046875e+02, 3.168578796386719e+02, 3.155459289550781e+02, 3.167043762207031e+02, 3.175106811523438e+02, 3.178327026367188e+02, 3.181243591308594e+02, 3.184793090820312e+02, 3.189010925292969e+02, 3.194141540527344e+02, 3.200456848144531e+02, 3.2077734375e+02, 3.215817260742188e+02, 3.224941101074219e+02, 3.236379089355469e+02, 3.236143188476562e+02, 3.233833618164062e+02, 3.232500305175781e+02] +domHotWatTan.TTanBot.T=[3.231499938964844e+02, 3.230213317871094e+02, 3.229248962402344e+02, 3.228665466308594e+02, 3.228367309570312e+02, 3.228255310058594e+02, 3.228158264160156e+02, 3.22797119140625e+02, 3.227546081542969e+02, 3.226637573242188e+02, 3.223997192382812e+02, 3.218124389648438e+02, 3.205433349609375e+02, 3.1874072265625e+02, 3.16879150390625e+02, 3.150448608398438e+02, 3.132536010742188e+02, 3.123321228027344e+02, 3.122900695800781e+02, 3.1238818359375e+02, 3.126710815429688e+02, 3.130523376464844e+02, 3.135012817382812e+02, 3.140738220214844e+02, 3.147854614257812e+02, 3.155798034667969e+02, 3.164295043945312e+02, 3.173280029296875e+02, 3.182763061523438e+02, 3.192762756347656e+02, 3.201551818847656e+02, 3.201571350097656e+02, 3.196387329101562e+02, 3.187521057128906e+02, 3.177455139160156e+02, 3.165636291503906e+02, 3.152056579589844e+02, 3.137063598632812e+02, 3.129052124023438e+02, 3.129013061523438e+02, 3.130545959472656e+02, 3.133799743652344e+02, 3.137864074707031e+02, 3.142645263671875e+02, 3.148613891601562e+02, 3.155867919921875e+02, 3.163843078613281e+02, 3.17246826171875e+02, 3.182687072753906e+02, 3.196641845703125e+02, 3.201604614257812e+02, 3.201640014648438e+02, 3.201675109863281e+02, 3.201709899902344e+02, 3.201744384765625e+02, 3.201778564453125e+02, 3.201812438964844e+02, 3.201845397949219e+02, 3.201876525878906e+02, 3.201902770996094e+02, 3.1947119140625e+02, 3.176878051757812e+02, 3.158417053222656e+02, 3.140180969238281e+02, 3.124555969238281e+02, 3.122372741699219e+02, 3.12250244140625e+02, 3.124059143066406e+02, 3.127164001464844e+02, 3.131025695800781e+02, 3.135583190917969e+02, 3.141434326171875e+02, 3.148642578125e+02, 3.156637268066406e+02, 3.165176086425781e+02, 3.174201354980469e+02, 3.183727111816406e+02, 3.193769836425781e+02, 3.201553955078125e+02, 3.201572570800781e+02, 3.195598449707031e+02, 3.186632690429688e+02, 3.17644287109375e+02, 3.164462280273438e+02, 3.150752868652344e+02, 3.135661926269531e+02, 3.128991394042969e+02, 3.129076843261719e+02, 3.130791931152344e+02, 3.134144592285156e+02, 3.138259887695312e+02, 3.143119812011719e+02, 3.149203491210938e+02, 3.156542053222656e+02, 3.16455810546875e+02, 3.173271484375e+02, 3.183677368164062e+02, 3.198076477050781e+02, 3.201607666015625e+02, 3.20164306640625e+02, 3.201678161621094e+02] +domHotWatTan.conCha.TTanTopSet=[3.151499938964844e+02, 3.151499938964844e+02] +hea.Q_flow=[-0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, -0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, -0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 8.195753173828125e+02, 0e+00, 0e+00, 0e+00] +domHotWatTan.PEle=[6.089811325073242e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01, 1.164225935935974e-01] +domHotWatTan.divVal.y_actual=[0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +sch.y[1]=[7.999999821186066e-02, 5.98515197634697e-02, 4.150015860795975e-02, 2.495200000703335e-02, 1.184799987822771e-02, 6.384348031133413e-03, 9.351248852908611e-03, 1.589446142315866e-02, 3.31978015601635e-02, 7.8330397605896e-02, 2.041023373603821e-01, 4.375594556331635e-01, 8.335957527160645e-01, 9.739294052124023e-01, 1.002408862113953e+00, 9.953126311302185e-01, 9.820626378059387e-01, 9.42921757698059e-01, 8.819501399993896e-01, 8.289878964424133e-01, 7.938734292984009e-01, 7.506957054138184e-01, 6.733169555664062e-01, 6.06195867061615e-01, 5.639404654502869e-01, 5.299999713897705e-01, 5.012000203132629e-01, 4.724000096321106e-01, 4.435999989509581e-01, 4.147999882698059e-01, 4.156727194786072e-01, 4.602656066417694e-01, 4.950896501541138e-01, 5.337789058685303e-01, 5.983203649520877e-01, 6.940846443176265e-01, 7.769672274589539e-01, 8.449069261550903e-01, 8.601675033569336e-01, 8.378830552101135e-01, 8.078666925430298e-01, 7.764618396759033e-01, 7.324758172035217e-01, 6.615780591964722e-01, 5.970742106437683e-01, 5.642766952514648e-01, 5.191502571105957e-01, 4.192543923854828e-01, 7.821183651685715e-02, 5.827647820115089e-02, 3.999999910593033e-02, 2.372800000011921e-02, 1.091200020164251e-02, 6.471123546361923e-03, 9.602559730410576e-03, 1.701794564723981e-02, 3.488311171531695e-02, 8.618001639842912e-02, 2.169084697961807e-01, 4.699792861938477e-01, 8.590173125267029e-01, 9.781871438026428e-01, 1.002800226211548e+00, 9.945087432861328e-01, 9.801488518714905e-01, 9.3824303150177e-01, 8.768349289894104e-01, 8.256399631500244e-01, 7.910051345825192e-01, 7.454496026039129e-01, 6.664363741874701e-01, 6.024289131164551e-01, 5.607538223266602e-01, 5.275999903678894e-01, 4.988000094890594e-01, 4.699999988079071e-01, 4.411999881267548e-01, 4.124000072479248e-01, 4.186592102050781e-01, 4.637547731399536e-01, 4.979480504989624e-01, 5.376297235488892e-01, 6.058034300804138e-01, 7.017546892166138e-01, 7.836566567420959e-01, 8.486074209213257e-01, 8.592529892921448e-01, 8.353365063667297e-01, 8.054344058036804e-01, 7.734807729721069e-01, 7.273889780044556e-01, 6.55347466468811e-01, 5.934261679649353e-01, 5.617724061012268e-01, 5.130271911621094e-01, 4.086908996105194e-01, 7.644671946763992e-02, 5.671295896172523e-02, 3.851199895143509e-02, 2.252800017595291e-02, 9.999999776482582e-03] diff --git a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos index f38257b6ac9..71a870809dc 100644 --- a/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos +++ b/Buildings/Resources/Scripts/Dymola/Experimental/DHC/Loads/HotWater/Examples/StorageTankWithExternalHeatExchanger.mos @@ -1,7 +1,6 @@ simulateModel("Buildings.Experimental.DHC.Loads.HotWater.Examples.StorageTankWithExternalHeatExchanger", stopTime=172800, tolerance=1e-06, resultFile="StorageTankWithExternalHeatExchanger"); -createPlot(id=1, position={532, 19, 592, 614}, y={"theMixVal.TMixSet", "theMixVal.senTMix.T", "domHotWatTan.senTemHot.T", -"domHotWatTan.TTanTop.T", "domHotWatTan.TTanBot.T", "domHotWatTan.conCha.TTanTopSet"}, range={0.0, 180000.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}, {162,29,33}}, timeUnit="s", displayUnits={"degC", "degC", "degC", "degC", "degC", "degC"}); +createPlot(id=1, position={532, 19, 592, 614}, y={"theMixVal.TMixSet", "theMixVal.senTMix.T", "domHotWatTan.senTemHot.T", "domHotWatTan.TTanTop.T", "domHotWatTan.TTanBot.T", "domHotWatTan.conCha.TTanTopSet"}, range={0.0, 180000.0, 0.0, 60.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}, {0,0,0}, {162,29,33}}, timeUnit="s", displayUnits={"degC", "degC", "degC", "degC", "degC", "degC"}); createPlot(id=1, position={532, 19, 592, 614}, y={"hea.Q_flow"}, range={0.0, 180000.0, -500.0, 1000.0}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); createPlot(id=1, position={532, 19, 592, 614}, y={"domHotWatTan.PEle"}, range={0.0, 180000.0, 0.0, 1.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s", displayUnits={"W"}); createPlot(id=1, position={532, 19, 592, 614}, y={"domHotWatTan.divVal.y_actual"}, range={0.0, 180000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=1, position={532, 19, 592, 614}, y={"sch.y[1]"}, range={0.0, 180000.0, -1.0, 2.0}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s"); \ No newline at end of file +createPlot(id=1, position={532, 19, 592, 614}, y={"sch.y[1]"}, range={0.0, 180000.0, -1.0, 2.0}, grid=true, subPlot=105, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos index 81790d833b5..9675ec7b515 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.HeaterAndFixtureDirectHeatExchangerWithElectricHeat.mos @@ -1,9 +1,10 @@ compareVars := { - "theMixVal.TMixSet", - "theMixVal.senTemHot.T", - "gen.THotSouSet", - "gen.senTemHot.T", - "PEle", - "theMixVal.yMixSet" + "theMixValNoEle.conPID.y", + "theMixVal.conPID.y", + "genNoEle.THexOut", + "souDisHot.T", + "gen.PEle", + "genNoEle.PEle", + "sch.y[1]" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.StorageTankWithExternalHeatExchanger.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.StorageTankWithExternalHeatExchanger.mos new file mode 100644 index 00000000000..f0372811a94 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Experimental.DHC.Loads.HotWater.Examples.StorageTankWithExternalHeatExchanger.mos @@ -0,0 +1,13 @@ +compareVars := + { + "theMixVal.TMixSet", + "theMixVal.senTMix.T", + "domHotWatTan.senTemHot.T", + "domHotWatTan.TTanTop.T", + "domHotWatTan.TTanBot.T", + "domHotWatTan.conCha.TTanTopSet", + "hea.Q_flow", + "domHotWatTan.PEle", + "domHotWatTan.divVal.y_actual", + "sch.y[1]" + }; From 56d13b1c1ed637e548829c4d253b8747ddbd567b Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 16 Nov 2023 07:42:58 -0800 Subject: [PATCH 139/183] Update docs for heat pump ETS base class (space heating and cooling) --- .../PartialHeatPumpHeatExchanger.mo | 68 +++++++++---------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo index c1dca4e99a1..cbbe66834ea 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/BaseClasses/PartialHeatPumpHeatExchanger.mo @@ -26,7 +26,7 @@ model PartialHeatPumpHeatExchanger final unit="1", final min=0, final max=1)=0.3 - "Minimum condenser or evaporator mass flow rate (ratio to nominal)" + "Minimum condenser mass flow rate (ratio to nominal)" annotation (Dialog(enable=have_varFloCon or have_varFloEva)); parameter Modelica.Units.SI.Temperature TDisWatMin "District water minimum temperature" annotation (Dialog(group="DHC system")); @@ -532,44 +532,60 @@ equation defaultComponentName="ets", Documentation(info="

-This model represents an energy transfer station as described in Sommer (2020). +This model represents an energy transfer station based on that described in Sommer (2020), +with some additioinal details:

  • The cooling function is provided in a compressor-less mode by a heat exchanger -connected to the service line. +connected to the district supply line. +
      +
    • +The cooling heat exchanger primary pump is modulated based on a PI control +loop tracking the chilled water supply temperature at the outlet of the heat exchanger +secondary side. +
    • +
    • The chilled water is typically produced at high temperature and distributed to radiant cooling systems, for instance at 19°C.
    • +
  • -The heating functions are provided by water-to-water heat pumps. +The space heating heating function is provided by a water-to-water heat pump + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump,
    • -By default the condenser and evaporator loops are operated -with variable mass flow rate, with a lower limit specified by the ratio -ratFloMin. -The model can also represent constant flow condenser and evaporator loops -by setting have_varFloCon and have_varFloEva -to false. +By default, the condenser loop is operated +with a variable mass flow rate to maintain a difference between supply and +return water of dT_nominal, +with a lower limit of mass flow specified by the ratio ratFloMin. +The control logic is implemented and described in + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Controls.PrimaryVariableFlow. +The model can also represent a constant flow condenser loop +by setting have_varFloCon to false.
    • -The evaporator water is supplied by mixing the flow rate from the direct connection -to the service line to the flow rate from the primary side of the cooling -heat exchanger. +The evaporator loop is controlled according to the documentation in + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.HeatPump. +Evaporator water is supplied by mixing flow directly from the district line with +flow leaving the district side of the cooling heat exchanger. The hydronic arrangement modeled in Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.SwitchBox -ensures that the resulting fluid stream in the service line always flows +ensures that the resulting fluid stream in the district line always flows in the same direction.
    • -The heating hot water is typically produced at low temperature, +The space heating hot water is typically produced at low temperature, for instance 40°C.
-

Controls

+

Space Heating and Cooling Enable/Disable

Heating (resp. cooling) is enabled based on the input signal uHea (resp. uCoo) which is held for 15 minutes, meaning that, @@ -580,26 +596,6 @@ on a schedule (to lock out the system during off-hours), ideally in conjunction with the number of requests yielded by the terminal unit controllers, or any other signal representative of the load.

-

-When enabled, -

-

Modeling considerations

There is a control volume at each of the two fluid ports that serve as inlet and outlet From b869ed9383fcd5215a177c6101d4b990d569c4bf Mon Sep 17 00:00:00 2001 From: David Blum Date: Thu, 16 Nov 2023 08:13:50 -0800 Subject: [PATCH 140/183] Update heat pump sub system docs --- .../Subsystems/BaseClasses/PartialHeatPump.mo | 26 +++++++------------ .../Combined/Subsystems/HeatPump.mo | 24 ++++++++--------- 2 files changed, 22 insertions(+), 28 deletions(-) diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo index 1b1a7d5bfc2..1ce3a2408bc 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo @@ -274,17 +274,12 @@ equation coordinateSystem(preserveAspectRatio=false, extent={{-200,-140},{200,140}})), Documentation(info="

-This model represents a water-to-water heat pump with storage tank and an evaporator water pump. -The heat pump model with storage tank is described in - -Buildings.Experimental.DHC.Loads.HotWater.HeatPumpWithTank. -By default a variable speed evaporator pump is considered. -
-fixme: Update documentation. Do we indeed need a constant flow rate option?
-A constant speed pump may also be represented by setting have_varFloEva -to false. -

-

Controls

+This model represents a water-to-water heat pump, as described in + +Buildings.Fluid.HeatPumps.Carnot_TCon, the condenser pump, and the +evaporator side hydronics and control. + +

Evaporator Controls

The system is enabled when the input control signal uEna switches to true. @@ -292,13 +287,12 @@ When enabled,

  • -the evaporator pump is commanded on and supply either -the mass flow rate set point provided as an input in the case of a variable speed pump, -or the nominal mass flow rate in the case of a constant speed pump, +the evaporator pump is commanded on and supplies the nominal mass flow rate,
  • -the heat pump with storage tank system operates to maintain the desired -storage tank temperature. +a three-way diverging valve is used to bypass flow through the evaporator and +is controlled by a PI controller to maintain dT_nominal across +the district supply and return flows.
", revisions=" diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo index d6f7f1e4448..9ac8879bfc2 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/HeatPump.mo @@ -65,30 +65,30 @@ equation Documentation(info="

This model represents a water-to-water heat pump, an evaporator water pump, -and an optional condenser water pump if have_pumCon is set to -true. +and a condenser water pump. The heat pump model is described in Buildings.Fluid.HeatPumps.Carnot_TCon. -By default variable speed pumps are considered. -Constant speed pumps may also be represented by setting have_varFloEva -and have_varFloCon to false. +By default, a variable speed condenser pump is considered, but a constant speed +pump may also be represented by setting have_varFloCon to false. +The evaporator hydronics and control are described in + +Buildings.Experimental.DHC.EnergyTransferStations.Combined.Subsystems.BaseClasses.PartialHeatPump.

-

Controls

+

Condenser Controls

The system is enabled when the input control signal uEna switches to true. -When enabled, +When enabled, on the condenser side,

  • -the evaporator and optionally the condenser water pumps are commanded on and supply either -the mass flow rate set point provided as an input in the case of variable speed pumps, -or the nominal mass flow rate in the case of constant speed pumps, +the ondenser water pumps are commanded on and supply either +the condenser mass flow rate set point provided as an input in the case of the variable speed condenser pump, +or the nominal mass flow rate in the case of the constant speed condenser pump,
  • -the heat pump is commanded on when the evaporator and optionally the condenser water pump -are proven on. When enabled, the heat pump controller—idealized in this model—tracks the +the heat pump controller—idealized in this model—tracks the supply temperature set point at the condenser outlet.
From 0c0bfdf8d96e354d6269d76f0a0855ba90e171e1 Mon Sep 17 00:00:00 2001 From: David Blum Date: Tue, 28 Nov 2023 10:34:16 -0800 Subject: [PATCH 141/183] Update docs, HeatPumpDHWTank validation, subsystem validation test scripts --- .../Subsystems/BaseClasses/PartialHeatPump.mo | 4 ++ .../Combined/Subsystems/HeatPump.mo | 6 +- .../Combined/Subsystems/HeatPumpDHWTank.mo | 58 +++++++++++-------- .../Subsystems/Validation/HeatPump.mo | 4 ++ .../Subsystems/Validation/HeatPumpDHWTank.mo | 20 +++++-- .../BaseClasses/TankChargingController.mo | 4 ++ .../StorageTankWithExternalHeatExchanger.mo | 4 ++ .../Subsystems/Validation/HeatPump.mos | 2 +- .../Subsystems/Validation/HeatPumpDHWTank.mos | 14 +++++ 9 files changed, 83 insertions(+), 33 deletions(-) create mode 100644 Buildings/Resources/Scripts/Dymola/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/Validation/HeatPumpDHWTank.mos diff --git a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo index 1ce3a2408bc..d571899072c 100644 --- a/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo +++ b/Buildings/Experimental/DHC/EnergyTransferStations/Combined/Subsystems/BaseClasses/PartialHeatPump.mo @@ -298,6 +298,10 @@ the district supply and return flows. ", revisions="