Skip to content

Commit 5015240

Browse files
Add load-dependent data-based HP and chiller models (#4170)
* Add HP and chiller models w/ PLR dependent performance data
1 parent 625399d commit 5015240

67 files changed

Lines changed: 6390 additions & 12 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
within Buildings.Fluid.Chillers.ModularReversible.BaseClasses;
2+
model RefrigerantCycleHeatRecovery
3+
"Refrigerant cycle model for cooling-only or heat recovery chiller models"
4+
extends Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialModularRefrigerantCycle(
5+
use_rev=false);
6+
parameter Boolean have_switchover=false
7+
"Set to true for heat recovery chiller with built-in switchover"
8+
annotation (Evaluate=true);
9+
replaceable model RefrigerantCycleChillerCooling=Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling(
10+
useInChi=true)
11+
constrainedby Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle
12+
"Replaceable model for refrigerant cycle of a chiller in main operation mode";
13+
final model RefrigerantCycleChillerHeating=Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.NoHeating(
14+
useInHeaPum=false)
15+
"Model for refrigerant cycle of a chiller in reversed operation mode";
16+
RefrigerantCycleChillerCooling refCycChiCoo
17+
"Refrigerant cycle instance for cooling"
18+
annotation (Placement(transformation(extent={{20,40},{60,80}},rotation=0)));
19+
protected
20+
parameter String devIde=refCycChiCoo.devIde
21+
"Data source for refrigerant cycle";
22+
Buildings.Controls.OBC.CDL.Logical.Sources.Constant tru(
23+
k=true)
24+
"Placeholder signal to allow using coo variable with use_rev=false";
25+
equation
26+
connect(pasTrhModSet.u, tru.y);
27+
connect(sigBus, refCycChiCoo.sigBus)
28+
annotation (Line(points={{0,100},{0,92},{40.1667,92},{40.1667,80}},color={255,204,51},thickness=0.5));
29+
connect(swiPEle.u2, sigBus.coo)
30+
annotation (Line(points={{2.22045e-15,-58},{2.22045e-15,-2},{0,-2},{0,100}},
31+
color={255,0,255}),Text(string="%second",index=1,extent={{-3,6},{-3,6}},
32+
horizontalAlignment=TextAlignment.Right));
33+
connect(swiQEva.u2, sigBus.coo)
34+
annotation (Line(points={{-58,0},{0,0},{0,100}},color={255,0,255}),Text(string=
35+
"%second",index=1,extent={{6,3},{6,3}},horizontalAlignment=TextAlignment.Left));
36+
connect(swiQCon.u2, sigBus.coo)
37+
annotation (Line(points={{58,0},{0,0},{0,100}},color={255,0,255}),Text(string=
38+
"%second",index=1,extent={{-6,3},{-6,3}},horizontalAlignment=TextAlignment.Right));
39+
connect(refCycChiCoo.QEva_flow, swiQEva.u1)
40+
annotation (Line(points={{53.3333,38.3333},{53.3333,24},{-10,24},{-10,8},{
41+
-58,8}},
42+
color={0,0,127}));
43+
connect(refCycChiCoo.QCon_flow, swiQCon.u1)
44+
annotation (Line(points={{26.6667,38.3333},{26.6667,8},{58,8}},color={0,0,127}));
45+
connect(refCycChiCoo.PEle, swiPEle.u1)
46+
annotation (Line(points={{40,38.3333},{40,-48},{8,-48},{8,-58}},color={0,0,127}));
47+
connect(refCycChiCoo.QCon_flow, swiQCon.u3)
48+
annotation (Line(points={{26.6667,38.3333},{26.6667,-8},{58,-8}},color={0,0,127}));
49+
connect(refCycChiCoo.QEva_flow, swiQEva.u3)
50+
annotation (Line(points={{53.3333,38.3333},{54,38.3333},{54,24},{-10,24},{
51+
-10,-8},{-58,-8}},
52+
color={0,0,127}));
53+
connect(refCycChiCoo.PEle, swiPEle.u3)
54+
annotation (Line(points={{40,38.3333},{40,-48},{-8,-48},{-8,-58}},color={0,0,127}));
55+
annotation (
56+
Icon(
57+
coordinateSystem(
58+
preserveAspectRatio=false),
59+
graphics={
60+
Rectangle(
61+
extent={{-100,100},{100,-100}},
62+
lineColor={238,46,47},
63+
fillColor={0,0,0},
64+
fillPattern=FillPattern.Solid),
65+
Ellipse(
66+
extent={{-24,88},{22,44}},
67+
lineColor={28,108,200},
68+
lineThickness=0.5),
69+
Line(
70+
points={{-16,82},{20,74}},
71+
color={28,108,200},
72+
thickness=0.5),
73+
Line(
74+
points={{-18,52},{20,58}},
75+
color={28,108,200},
76+
thickness=0.5),
77+
Rectangle(
78+
extent={{-98,40},{-60,-28}},
79+
lineColor={28,108,200},
80+
lineThickness=0.5),
81+
Line(
82+
points={{-20,-60},{-20,-70},{-20,-80},{20,-60},{20,-80},{-20,-60}},
83+
color={28,108,200},
84+
thickness=0.5),
85+
Line(
86+
points={{-122,34},{-66,34},{-82,10},{-66,-22},{-120,-22}},
87+
color={28,108,200},
88+
thickness=0.5),
89+
Rectangle(
90+
extent={{60,40},{98,-28}},
91+
lineColor={28,108,200},
92+
lineThickness=0.5),
93+
Line(
94+
points={{120,34},{64,34},{80,10},{64,-22},{118,-22}},
95+
color={28,108,200},
96+
thickness=0.5),
97+
Line(
98+
points={{-80,40},{-80,68},{-24,68}},
99+
color={28,108,200},
100+
thickness=0.5),
101+
Line(
102+
points={{22,66},{80,66},{80,40}},
103+
color={28,108,200},
104+
thickness=0.5),
105+
Line(
106+
points={{78,-28},{78,-70}},
107+
color={28,108,200},
108+
thickness=0.5),
109+
Line(
110+
points={{78,-70},{62,-70},{20,-70}},
111+
color={28,108,200},
112+
thickness=0.5),
113+
Line(
114+
points={{-80,-26},{-80,-68},{-20,-68}},
115+
color={28,108,200},
116+
thickness=0.5),
117+
Text(
118+
extent={{-151,147},{149,107}},
119+
textColor={0,0,255},
120+
fillPattern=FillPattern.HorizontalCylinder,
121+
fillColor={0,127,255},
122+
textString="%name")}),
123+
Diagram(
124+
coordinateSystem(
125+
preserveAspectRatio=false)),
126+
Documentation(
127+
revisions="<html>
128+
<ul>
129+
<li>
130+
March 21, 2025, by Antoine Gautier:<br/>
131+
First implementation.
132+
</li>
133+
</ul>
134+
</html>",
135+
info="<html>
136+
<p>
137+
This is the refrigerant cycle model used in
138+
<a href=\"modelica://Buildings.Fluid.Chillers.ModularReversible.TableData2DLoadDep\">
139+
Buildings.Fluid.Chillers.ModularReversible.TableData2DLoadDep</a>.
140+
</p>
141+
<p>
142+
In contrast to
143+
<a href=\"modelica://Buildings.Fluid.Chillers.ModularReversible.BaseClasses.RefrigerantCycle\">
144+
Buildings.Fluid.Chillers.ModularReversible.BaseClasses.RefrigerantCycle</a>,
145+
this model includes a unique component that can be configured to
146+
either represent a cooling-only chiller (<code>have_switchover=false</code>)
147+
or a heat recovery chiller (<code>have_switchover=true</code>).
148+
A unique performance data file is required, providing
149+
the maximum <i>cooling</i> heat flow rate and power, regardless of the setting
150+
for <code>have_switchover</code>.
151+
</p>
152+
</html>"));
153+
end RefrigerantCycleHeatRecovery;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
RefrigerantCycle
2+
RefrigerantCycleHeatRecovery
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
within Buildings.Fluid.Chillers.ModularReversible.Data.TableData2DLoadDep;
2+
record Generic
3+
"Partial heat pump data"
4+
extends Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.Generic;
5+
parameter Real tabLowBou[:, 2]
6+
"Points to define lower boundary of operating envelope";
7+
parameter Boolean use_TEvaOutForOpeEnv=use_TEvaOutForTab
8+
"=true to use evaporator outlet temperature for operational envelope, false for inlet";
9+
parameter Boolean use_TConOutForOpeEnv=use_TConOutForTab
10+
"=true to use condenser outlet temperature for operational envelope, false for inlet";
11+
annotation (
12+
Documentation(
13+
info="<html>
14+
<p>
15+
This is the base record class to specify the parameters of the model
16+
<a href=\"modelica://Buildings.Fluid.Chillers.ModularReversible.TableData2DLoadDep\">
17+
Buildings.Fluid.Chillers.ModularReversible.TableData2DLoadDep</a>.
18+
</p>
19+
<p>
20+
In addition to the parameters defined in
21+
<a href=\"modelica://Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.Generic\">
22+
Buildings.Fluid.HeatPumps.ModularReversible.Data.TableData2DLoadDep.Generic</a>
23+
table data for lower temperature limits is included.
24+
Please refer to the documentation of
25+
<a href=\"modelica://Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.BaseClasses.PartialOperationalEnvelope\">
26+
Buildings.Fluid.HeatPumps.ModularReversible.Controls.Safety.BaseClasses.PartialOperationalEnvelope</a>
27+
for guidance on how to populate this table.
28+
</p>
29+
</html>",
30+
revisions="<html>
31+
<ul>
32+
<li>
33+
March 21, 2025, by Antoine Gautier:<br/>
34+
First implementation.
35+
</li>
36+
</ul>
37+
</html>"),
38+
Icon);
39+
end Generic;
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
within Buildings.Fluid.Chillers.ModularReversible.Data;
2+
package TableData2DLoadDep "Package with load-dependent 2D table data records"
3+
extends Modelica.Icons.MaterialPropertiesPackage;
4+
annotation (Documentation(info="<html>
5+
<p>
6+
This package contains parameter records for load-dependent data-based chiller models.
7+
</p>
8+
</html>"));
9+
end TableData2DLoadDep;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Generic
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
TableData2D
2+
TableData2DLoadDep

0 commit comments

Comments
 (0)