Skip to content

Commit bb83c70

Browse files
Merge branch 'master' of github.com:lbl-srg/modelica-buildings into issue4227_fixedResistanceActuators
2 parents b710c1a + 9c200a5 commit bb83c70

80 files changed

Lines changed: 7583 additions & 1653 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.

Buildings/Electrical/Interfaces/PartialWindTurbine.mo

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ protected
1515
Modelica.Blocks.Tables.CombiTable1Ds per(
1616
final tableOnFile=tableOnFile,
1717
final table=cat(1, cat(1, [0, 0], table),
18-
[vOut+10*Modelica.Constants.eps, 0;
19-
vOut+20*Modelica.Constants.eps, 0]),
18+
[vOut+1E-9, 0;
19+
vOut+2E-9, 0]),
2020
final tableName=tableName,
2121
final fileName=fileName,
2222
final columns=2:2,
@@ -170,6 +170,11 @@ Below and above these wind speeds, the generated power is zero.
170170
</html>", revisions="<html>
171171
<ul>
172172
<li>
173+
April 9, 2025, by Michael Wetter:<br/>
174+
Increased small number to extend table beyond cut-out wind speed.<br/>
175+
<a href=\"https://github.com/lbl-srg/modelica-buildings/issues/4224\">issue 4224</a>.
176+
</li>
177+
<li>
173178
March 1, 2016, by Michael Wetter:<br/>
174179
Removed test for equality of <code>Real</code> variables.
175180
This is for

Buildings/Fluid/HeatExchangers/CoolingTowers/BaseClasses/Merkel.mo

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ block Merkel "Model for thermal performance of Merkel cooling tower"
5454
m_flow_nominal*cpWat_nominal*(TWatIn_nominal - TWatOut_nominal)
5555
"Nominal heat transfer, (negative)";
5656
final parameter Modelica.Units.SI.ThermalConductance UA_nominal=NTU_nominal*
57-
CMin_flow_nominal
57+
CMin_flow_nominal * Buildings.Utilities.Psychrometrics.Constants.cpAir/cpEqu_nominal
5858
"Thermal conductance at nominal flow, used to compute heat capacity";
5959
final parameter Real eps_nominal=
6060
Q_flow_nominal/((TAirInWB_nominal - TWatIn_nominal) * CMin_flow_nominal)
@@ -130,7 +130,7 @@ protected
130130

131131
parameter Real delta=1E-3 "Parameter used for smoothing";
132132

133-
parameter Modelica.Units.SI.SpecificHeatCapacity cpe_nominal=
133+
parameter Modelica.Units.SI.SpecificHeatCapacity cpEqu_nominal=
134134
Buildings.Fluid.HeatExchangers.CoolingTowers.BaseClasses.Functions.equivalentHeatCapacity(
135135
TIn=TAirInWB_nominal, TOut=TAirOutWB_nominal)
136136
"Specific heat capacity of the equivalent medium on medium 1 side";
@@ -140,9 +140,8 @@ protected
140140
parameter Modelica.Units.SI.SpecificHeatCapacity cpWat_nominal=
141141
Medium.specificHeatCapacityCp(staWat_default)
142142
"Specific heat capacity of water at nominal condition";
143-
144143
parameter Modelica.Units.SI.ThermalConductance CAir_flow_nominal=
145-
mAir_flow_nominal*cpe_nominal "Nominal capacity flow rate of air";
144+
mAir_flow_nominal*cpEqu_nominal "Nominal capacity flow rate of air";
146145
parameter Modelica.Units.SI.ThermalConductance CWat_flow_nominal=
147146
m_flow_nominal*cpWat_nominal "Nominal capacity flow rate of water";
148147
parameter Modelica.Units.SI.ThermalConductance CMin_flow_nominal=min(
@@ -170,7 +169,7 @@ protected
170169

171170
initial equation
172171
// Heat transferred from air to water at nominal condition
173-
Q_flow_nominal = mAir_flow_nominal*cpe_nominal*(TAirInWB_nominal - TAirOutWB_nominal);
172+
Q_flow_nominal = mAir_flow_nominal*cpEqu_nominal*(TAirInWB_nominal - TAirOutWB_nominal);
174173

175174
assert(eps_nominal > 0 and eps_nominal < 1,
176175
"eps_nominal out of bounds, eps_nominal = " + String(eps_nominal) +
@@ -293,6 +292,12 @@ Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel</a>.
293292
revisions="<html>
294293
<ul>
295294
<li>
295+
April 17, 2025, by Michael Wetter:<br/>
296+
Corrected computation of nominal UA value, which also needs to include the correction for <code>cpEqu_nominal</code>.<br/>
297+
This is for
298+
<a href=\"https://github.com/lbl-srg/modelica-buildings/issues/4189\">#4189</a>.
299+
</li>
300+
<li>
296301
January 20, 2020, by Michael Wetter:<br/>
297302
First implementation during refactoring of
298303
<a href=\"modelica://Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel\">

Buildings/Fluid/HeatExchangers/CoolingTowers/Merkel.mo

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,12 @@ EnergyPlus 8.9.0 Engineering Reference</a>, March 23, 2018. </p>
249249
revisions="<html>
250250
<ul>
251251
<li>
252+
April 17, 2025, by Michael Wetter:<br/>
253+
Corrected computation of nominal UA value, which also needs to include the correction for <code>cpEqu_nominal</code>.<br/>
254+
This is for
255+
<a href=\"https://github.com/lbl-srg/modelica-buildings/issues/4189\">#4189</a>.
256+
</li>
257+
<li>
252258
January 16, 2020, by Michael Wetter:<br/>
253259
Revised model to put the thermal performance in a separate block.
254260
</li>

Buildings/Fluid/HeatExchangers/CoolingTowers/Validation/MerkelEnergyPlus.mo

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,39 +6,54 @@ model MerkelEnergyPlus
66
package MediumAir = Buildings.Media.Air "Air medium model";
77
package MediumWat = Buildings.Media.Water "Water medium model";
88

9-
parameter Modelica.Units.SI.Density denWat=MediumWat.density(
9+
parameter Modelica.Units.SI.Density rhoWat=MediumWat.density(
1010
MediumWat.setState_pTX(
11-
MediumWat.p_default,
12-
MediumWat.T_default,
13-
MediumWat.X_default)) "Default density of water";
11+
MediumWat.p_default,
12+
MediumWat.T_default,
13+
MediumWat.X_default)) "Default density of water";
14+
parameter Modelica.Units.SI.Density rhoAir=MediumAir.density(
15+
MediumAir.setState_pTX(
16+
MediumAir.p_default,
17+
MediumAir.T_default,
18+
MediumAir.X_default)) "Default density of air";
1419

15-
// Cooling tower parameters
20+
// Cooling tower parameters - values quoted from EnergyPlus
1621
parameter Modelica.Units.SI.PressureDifference dp_nominal=6000
1722
"Nominal pressure difference of cooling tower";
18-
parameter Modelica.Units.SI.VolumeFlowRate VWat_flow_nominal=0.00109181
23+
parameter Modelica.Units.SI.VolumeFlowRate VWat_flow_nominal=0.00109317
1924
"Nominal volumetric flow rate of water (medium 2)";
20-
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=VWat_flow_nominal*
21-
denWat "Nominal mass flow rate of water (medium 2)";
22-
parameter Real ratWatAir_nominal = 1.61599
23-
"Nominal water-to-air ratio";
24-
parameter Modelica.Units.SI.Temperature TAirInWB_nominal=18.85 + 273.15
25+
parameter Modelica.Units.SI.VolumeFlowRate VAir_flow_nominal=0.561240
26+
"Nominal volumetric flow rate of air (medium 1)";
27+
parameter Modelica.Units.SI.Temperature TAirInWB_nominal=25.60 + 273.15
2528
"Nominal outdoor wetbulb temperature";
26-
parameter Modelica.Units.SI.Temperature TWatIn_nominal=34.16 + 273.15
27-
"Nominal water inlet temperature";
29+
parameter Modelica.Units.SI.TemperatureDifference TRan=5.50
30+
"Range temperature (difference between water in and out)";
31+
parameter Modelica.Units.SI.TemperatureDifference TApp=3.90
32+
"Approach temperature (difference between water out and wetbulb)";
2833
parameter Modelica.Units.SI.Temperature TWatOut_initial=33.019 + 273.15
2934
"Nominal water inlet temperature";
30-
parameter Modelica.Units.SI.HeatFlowRate Q_flow_nominal=-20286.37455
31-
"Nominal heat transfer, positive";
32-
parameter Modelica.Units.SI.ThermalConductance UA_nominal_EP=2011.28668
33-
"Nominal heat transfer, positive";
34-
parameter Modelica.Units.SI.Power PFan_nominal=213.00693 "Nominal fan power";
35+
parameter Modelica.Units.SI.Power PFan_nominal=213.27113 "Nominal fan power";
3536

3637
parameter Real r_VEnePlu[:] = {0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1}
3738
"Fan control signal";
3839
parameter Real r_PEnePlu[:] = {0,0.020982275,0.027843038,0.046465108,
3940
0.082729139,0.142515786,0.231705701,0.356179538,0.521817952,0.734501596,1}
4041
"Fan power output as a function of the signal";
4142

43+
// Values calculated from principals
44+
final parameter Modelica.Units.SI.MassFlowRate mWat_flow_nominal=
45+
VWat_flow_nominal*rhoWat
46+
"Nominal mass flow rate of water (medium 2)";
47+
final parameter Modelica.Units.SI.MassFlowRate mAir_flow_nominal=
48+
VAir_flow_nominal*rhoAir
49+
"Nominal mass flow rate of air (medium 1)";
50+
final parameter Real ratWatAir_nominal = mWat_flow_nominal/mAir_flow_nominal
51+
"Nominal water-to-air ratio";
52+
final parameter Modelica.Units.SI.Temperature TWatIn_nominal=TWatOut_nominal + TRan
53+
"Nominal water inlet temperature";
54+
final parameter Modelica.Units.SI.Temperature TWatOut_nominal=TAirInWB_nominal + TApp
55+
"Nominal water outlet temperature, 29.5 in EnergyPlus";
56+
4257
Modelica.Blocks.Sources.CombiTimeTable datRea(
4358
tableOnFile=true,
4459
fileName=ModelicaServices.ExternalReferences.loadResource(
@@ -55,11 +70,11 @@ model MerkelEnergyPlus
5570
dp_nominal=dp_nominal,
5671
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
5772
T_start=TWatOut_initial,
58-
m_flow_nominal=m_flow_nominal,
73+
m_flow_nominal=mWat_flow_nominal,
5974
ratWatAir_nominal=ratWatAir_nominal,
6075
TAirInWB_nominal=TAirInWB_nominal,
6176
TWatIn_nominal=TWatIn_nominal,
62-
TWatOut_nominal=TWatIn_nominal+Q_flow_nominal/(m_flow_nominal*Buildings.Utilities.Psychrometrics.Constants.cpWatLiq),
77+
TWatOut_nominal=TWatOut_nominal,
6378
PFan_nominal=PFan_nominal,
6479
yMin=0.1,
6580
fraFreCon=0.1,
@@ -156,6 +171,13 @@ outlet are equal to the state variables of the model.
156171
</html>", revisions="<html>
157172
<ul>
158173
<li>
174+
April 30, 2025, by Kathryn Hinkelman:<br/>
175+
Corrected the wetbulb value <code>TAirInWB_nominal</code> and
176+
added intermediate equations from E+ to model.<br/>
177+
This is for
178+
<a href=\"https://github.com/lbl-srg/modelica-buildings/issues/4189\">#4189</a>.
179+
</li>
180+
<li>
159181
December 23, 2019, by Kathryn Hinkelman:<br/>
160182
First implementation.
161183
</li>
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
within Buildings.Fluid.HeatExchangers.CoolingTowers.Validation;
2+
model MerkelNominal
3+
"Validation model that simulates the cooling tower at design conditions"
4+
extends Modelica.Icons.Example;
5+
package Medium_W = Buildings.Media.Water "Medium model for water";
6+
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=0.5
7+
"Design water flow rate"
8+
annotation (Dialog(group="Nominal condition"));
9+
parameter Real ratWatAir_nominal = 0.625
10+
"Design water-to-air ratio"
11+
annotation (Dialog(group="Nominal condition"));
12+
Buildings.Fluid.HeatExchangers.CoolingTowers.Merkel tow(
13+
redeclare package Medium = Medium_W,
14+
ratWatAir_nominal=ratWatAir_nominal,
15+
TAirInWB_nominal=273.15 + 25.55,
16+
TWatIn_nominal=273.15 + 35,
17+
TWatOut_nominal=273.15 + 35 - 5.56,
18+
PFan_nominal=4800,
19+
m_flow_nominal=m_flow_nominal,
20+
dp_nominal=6000,
21+
energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial,
22+
show_T=true)
23+
"Cooling tower"
24+
annotation (Placement(transformation(extent={{-10,-10},{10,10}})));
25+
Buildings.Controls.OBC.CDL.Reals.Sources.Constant yFan(k=1) "Fan speed"
26+
annotation (Placement(transformation(extent={{-60,70},{-40,90}})));
27+
Buildings.Controls.OBC.CDL.Reals.Sources.Constant TWetBul(k=tow.TAirInWB_nominal)
28+
"Wetbulb temperature"
29+
annotation (Placement(transformation(extent={{-60,30},{-40,50}})));
30+
Buildings.Fluid.Sources.MassFlowSource_T sou(
31+
redeclare final package Medium = Medium_W,
32+
m_flow=m_flow_nominal,
33+
T=tow.TWatIn_nominal,
34+
nPorts=1) "Water source"
35+
annotation (Placement(transformation(extent={{-80,-10},{-60,10}})));
36+
Buildings.Fluid.Sources.Boundary_pT sin(
37+
redeclare package Medium = Medium_W,
38+
nPorts=1) "Sink"
39+
annotation (Placement(transformation(extent={{82,-10},{62,10}})));
40+
equation
41+
connect(sou.ports[1], tow.port_a)
42+
annotation (Line(points={{-60,0},{-10,0}}, color={0,127,255}));
43+
connect(tow.port_b,sin. ports[1])
44+
annotation (Line(points={{10,0},{62,0}}, color={0,127,255}));
45+
connect(TWetBul.y, tow.TAir) annotation (Line(points={{-38,40},{-28,40},{-28,4},
46+
{-12,4}}, color={0,0,127}));
47+
connect(yFan.y, tow.y) annotation (Line(points={{-38,80},{-20,80},{-20,8},{-12,
48+
8}}, color={0,0,127}));
49+
annotation (
50+
__Dymola_Commands(file=
51+
"modelica://Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/CoolingTowers/Validation/MerkelNominal.mos"
52+
"Simulate and plot"),
53+
experiment(StartTime=0, StopTime=1000, Tolerance=1e-06),
54+
Documentation(info="<html>
55+
<p>
56+
Validation model for the Merkel cooling tower.
57+
</p>
58+
<p>
59+
The model simulates the cooling tower at the design conditions,
60+
and it verifies that at steady-state, the outlet temperature is the same as the one from the design condition.
61+
</p>
62+
</html>", revisions="<html>
63+
<ul>
64+
<li>
65+
April 17, 2025, by Antoine Gautier and Michael Wetter:<br/>
66+
First implementation.
67+
</li>
68+
</ul>
69+
</html>"));
70+
end MerkelNominal;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
MerkelEnergyPlus
2+
MerkelNominal
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:c18e8e3d733eed838740f8a5f57a39d04425e8410821101900067ead7ff0b4b9
3-
size 680888
2+
oid sha256:f3fea07dbfcfc28ef3dc2974d9a9d351dc79270ccddc9f78c732c715a67386c5
3+
size 912544
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
version https://git-lfs.github.com/spec/v1
2-
oid sha256:b972d511d9c7d25454c09cf67ff10a5a0e8d19ba0d6a5e00c0e38b9a72dc8133
3-
size 123492
2+
oid sha256:d4b3fbd5c89941fd20ce399fc472ff4584b450ece4432fb2dd67593d538aa47b
3+
size 244392

0 commit comments

Comments
 (0)