Skip to content

Commit 7628455

Browse files
authored
Merge pull request #4056 from karthikeyad-pnnl/issue3492_DirectEvaporativeCooler
Issue3492 direct evaporative cooler
2 parents 82516f2 + 6b66f4a commit 7628455

10 files changed

Lines changed: 85 additions & 120 deletions

File tree

Buildings/Fluid/Humidifiers/EvaporativeCoolers/Baseclasses/DirectCalculations.mo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ block DirectCalculations
4040

4141
Buildings.Controls.OBC.CDL.Interfaces.RealInput p(
4242
final unit="Pa",
43-
final quantity="AbsolutePressure")
43+
final quantity="Pressure")
4444
"Pressure"
4545
annotation (Placement(transformation(origin={-120,-60},extent={{-20,-20},{20,20}}),
4646
iconTransformation(origin={-120,-60}, extent={{-20,-20},{20,20}})));

Buildings/Fluid/Humidifiers/EvaporativeCoolers/Baseclasses/Validation/IndirectWetCalculations.mo

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ model IndirectWetCalculations
44
extends Modelica.Icons.Example;
55

66
parameter Real maxEff(
7-
displayUnit="1") = 0.8
7+
unit="1") = 0.8
88
"Maximum efficiency of heat exchanger coil";
99

1010
parameter Real floRat(
11-
displayUnit="1") = 0.16
11+
unit="1") = 0.16
1212
"Coil flow ratio";
1313

1414
parameter Modelica.Units.SI.ThermodynamicTemperature TDryBulSup_nominal = 296.15

Buildings/Fluid/Humidifiers/EvaporativeCoolers/Direct.mo

Lines changed: 55 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -2,124 +2,89 @@ within Buildings.Fluid.Humidifiers.EvaporativeCoolers;
22
model Direct
33
"Direct evaporative cooler"
44

5-
extends Buildings.Fluid.Interfaces.PartialTwoPort;
6-
7-
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal
8-
"Nominal air mass flow rate";
9-
10-
parameter Modelica.Units.SI.PressureDifference dp_nominal(
11-
displayUnit="Pa")
12-
"Pressure drop at nominal mass flow rate";
5+
extends Buildings.Fluid.Interfaces.TwoPortHeatMassExchanger(
6+
redeclare Buildings.Fluid.MixingVolumes.MixingVolumeMoistAir vol);
137

148
parameter Modelica.Units.SI.Area padAre
159
"Area of the rigid media evaporative pad";
1610

1711
parameter Modelica.Units.SI.Length dep
1812
"Depth of the rigid media evaporative pad";
1913

20-
parameter Modelica.Units.SI.Time tau=30
21-
"Time constant at nominal flow rate (if energyDynamics <> SteadyState)"
22-
annotation (Dialog(tab="Dynamics", group="Nominal condition"));
23-
2414
Buildings.Controls.OBC.CDL.Interfaces.RealOutput dmWat_flow(
2515
final unit="kg/s",
2616
final quantity="MassFlowRate")
2717
"Water vapor mass flow rate difference between inlet and outlet"
2818
annotation (Placement(transformation(origin={120,80}, extent={{-20,-20},{20,20}}),
2919
iconTransformation(origin={90,40}, extent={{-20,-20},{20,20}})));
3020

31-
Buildings.Fluid.Sensors.TemperatureTwoPort senTem(
32-
redeclare final package Medium = Medium,
33-
final allowFlowReversal=allowFlowReversal,
34-
final m_flow_nominal=m_flow_nominal,
35-
final initType=Modelica.Blocks.Types.Init.InitialOutput,
36-
final T_start=298.15)
37-
"Dry bulb temperature sensor"
38-
annotation (Placement(transformation(origin={-70,0}, extent={{-10,-10},{10,10}})));
39-
40-
Buildings.Fluid.Sensors.TemperatureWetBulbTwoPort senTemWetBul(
41-
redeclare final package Medium = Medium,
42-
final allowFlowReversal=allowFlowReversal,
43-
final m_flow_nominal=m_flow_nominal,
44-
final initType=Modelica.Blocks.Types.Init.InitialOutput,
45-
final TWetBul_start=296.15)
46-
"Wet bulb temperature sensor"
47-
annotation (Placement(transformation(origin={-40,0}, extent={{-10,-10},{10,10}})));
48-
49-
Buildings.Fluid.Sensors.VolumeFlowRate senVolFlo(
50-
redeclare final package Medium = Medium,
51-
final allowFlowReversal=allowFlowReversal,
52-
final m_flow_nominal=m_flow_nominal)
53-
"Volume flow rate sensor"
54-
annotation (Placement(transformation(origin={-10,0}, extent={{-10,-10},{10,10}})));
55-
56-
Buildings.Fluid.FixedResistances.PressureDrop res(
57-
redeclare final package Medium = Medium,
58-
final allowFlowReversal=allowFlowReversal,
59-
final dp_nominal=dp_nominal,
60-
final m_flow_nominal = m_flow_nominal)
61-
"Pressure drop"
62-
annotation (Placement(transformation(origin={30,0}, extent={{-10,-10},{10,10}})));
63-
64-
Buildings.Fluid.MixingVolumes.MixingVolumeMoistAir vol(
65-
redeclare final package Medium = Medium,
66-
final m_flow_nominal = m_flow_nominal,
67-
final allowFlowReversal=allowFlowReversal,
68-
final V=m_flow_nominal*tau/rho_default,
69-
final nPorts = 2)
70-
"Moist air mixing volume"
71-
annotation (Placement(transformation(origin={80,20}, extent={{-10,-10},{10,10}})));
72-
7321
Buildings.Fluid.Humidifiers.EvaporativeCoolers.Baseclasses.DirectCalculations dirEvaCoo(
7422
redeclare final package Medium = Medium,
7523
final dep=dep,
7624
final padAre=padAre)
7725
"Direct evaporative cooling calculator"
7826
annotation (Placement(transformation(origin={30,60}, extent={{-10,-10},{10,10}})));
7927

80-
Buildings.Fluid.Sensors.Pressure senPre(
81-
redeclare final package Medium = Medium)
82-
"Pressure"
83-
annotation (Placement(transformation(origin={-90,54}, extent={{-10,-10},{10,10}})));
84-
8528
protected
86-
parameter Medium.ThermodynamicState sta_default=Medium.setState_pTX(
87-
T=Medium.T_default,
88-
p=Medium.p_default,
89-
X=Medium.X_default)
90-
"Default state of medium";
91-
92-
parameter Modelica.Units.SI.Density rho_default=Medium.density(sta_default)
93-
"Density, used to compute fluid volume";
29+
Medium.ThermodynamicState staInl=Medium.setState_phX(
30+
p=port_a.p, h=inStream(port_a.h_outflow), X=inStream(port_a.Xi_outflow))
31+
"State of inlet medium";
32+
33+
Modelica.Blocks.Sources.RealExpression TDryBul(
34+
y=Medium.temperature(state=staInl))
35+
"Inlet air drybulb temperature"
36+
annotation (Placement(transformation(extent={{-90,82},{-70,98}})));
37+
38+
Modelica.Blocks.Sources.RealExpression XInl[Medium.nXi](
39+
y=inStream(port_a.Xi_outflow))
40+
"Inlet air humidity ratio"
41+
annotation (Placement(transformation(extent={{-90,72},{-70,88}})));
42+
43+
Modelica.Blocks.Sources.RealExpression pInl(
44+
y=port_a.p)
45+
"Inlet air pressure"
46+
annotation (Placement(transformation(extent={{-90,52},{-70,68}})));
47+
48+
Modelica.Blocks.Sources.RealExpression V_flow(
49+
y=port_a.m_flow/Medium.density(staInl))
50+
"Inlet air volume flowrate"
51+
annotation (Placement(transformation(extent={{-90,32},{-70,48}})));
52+
53+
Buildings.Utilities.Psychrometrics.TWetBul_TDryBulXi wetBul(
54+
redeclare package Medium = Medium)
55+
"Calculate wet bulb temperature from inlet medium state"
56+
annotation (Placement(transformation(extent={{-20,70},{0,90}})));
57+
58+
Modelica.Blocks.Routing.RealPassThrough realPassThrough
59+
"Pass-through block for transmitting real signal with different units"
60+
annotation (Placement(transformation(extent={{-60,50},{-40,70}})));
9461

9562
equation
96-
connect(senVolFlo.V_flow, dirEvaCoo.V_flow) annotation (Line(points={{-10,11},
97-
{-10,58},{18,58}}, color={0,0,127}));
98-
connect(senTemWetBul.T, dirEvaCoo.TWetBulIn)
99-
annotation (Line(points={{-40,11},{-40,66},{18,66}}, color={0,0,127}));
100-
connect(senTem.T, dirEvaCoo.TDryBulIn)
101-
annotation (Line(points={{-70,11},{-70,62},{18,62}}, color={0,0,127}));
102-
connect(senTem.port_b, senTemWetBul.port_a)
103-
annotation (Line(points={{-60,0},{-50,0}}, color={0,127,255}));
104-
connect(senTemWetBul.port_b,senVolFlo. port_a)
105-
annotation (Line(points={{-30,0},{-20,0}}));
106-
connect(res.port_b, vol.ports[1])
107-
annotation (Line(points={{40,0},{79,0},{79,10}}, color = {0, 127, 255}));
108-
connect(port_a, senTem.port_a)
109-
annotation (Line(points={{-100,0},{-80,0}}));
110-
connect(vol.ports[2], port_b)
111-
annotation (Line(points={{81,10},{81,0},{100,0}}, color = {0, 127, 255}));
112-
connect(senTem.port_a, senPre.port)
113-
annotation (Line(points={{-80,0},{-90,0},{-90,44}}, color={0,127,255}));
114-
connect(senPre.p, dirEvaCoo.p)
115-
annotation (Line(points={{-79,54},{18,54}}, color={0,0,127}));
11663
connect(dirEvaCoo.dmWat_flow, vol.mWat_flow)
117-
annotation (Line(points={{42,60},{60,60},{60,28},{68,28}}, color={0,0,127}));
118-
connect(senVolFlo.port_b, res.port_a)
119-
annotation (Line(points={{0,0},{20,0}}, color={0,127,255}));
64+
annotation (Line(points={{42,60},{60,60},{60,40},{-30,40},{-30,-18},{-11,-18}},
65+
color={0,0,127}));
12066
connect(dirEvaCoo.dmWat_flow, dmWat_flow)
12167
annotation (Line(points={{42,60},{60,60},{60,80},{120,80}}, color={0,0,127}));
12268

69+
connect(TDryBul.y, dirEvaCoo.TDryBulIn) annotation (Line(points={{-69,90},{
70+
-32,90},{-32,62},{18,62}},
71+
color={0,0,127}));
72+
connect(TDryBul.y, wetBul.TDryBul) annotation (Line(points={{-69,90},{-32,90},
73+
{-32,88},{-21,88}}, color={0,0,127}));
74+
connect(wetBul.TWetBul, dirEvaCoo.TWetBulIn) annotation (Line(points={{1,80},{
75+
10,80},{10,66},{18,66}}, color={0,0,127}));
76+
connect(XInl.y, wetBul.Xi)
77+
annotation (Line(points={{-69,80},{-21,80}}, color={0,0,127}));
78+
connect(pInl.y, dirEvaCoo.p) annotation (Line(points={{-69,60},{-66,60},{-66,
79+
46},{10,46},{10,54},{18,54}},
80+
color={0,0,127}));
81+
connect(V_flow.y, dirEvaCoo.V_flow) annotation (Line(points={{-69,40},{-32,40},
82+
{-32,58},{18,58}}, color={0,0,127}));
83+
connect(pInl.y, realPassThrough.u) annotation (Line(points={{-69,60},{-62,60}},
84+
color={0,0,127}));
85+
connect(realPassThrough.y, wetBul.p) annotation (Line(points={{-39,60},{-28,
86+
60},{-28,72},{-21,72}},
87+
color={0,0,127}));
12388
annotation (defaultComponentName="dirEvaCoo",
12489
Icon(graphics={
12590
Rectangle(lineColor={0,0,255}, fillColor={95,95,95}, pattern=LinePattern.None,

Buildings/Fluid/Humidifiers/EvaporativeCoolers/Validation/Direct.mo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ equation
117117

118118
annotation (
119119
Diagram(coordinateSystem(extent={{-140,-100},{140,100}})),
120-
experiment(StartTime=350000, StopTime=1200000, Interval=60, Tolerance=1e-6),
120+
experiment(StartTime=350000, StopTime=604800, Interval=60, Tolerance=1e-6),
121121
Documentation(info="<html>
122122
<p>
123123
This model validates the direct evaporative cooler model

Buildings/Fluid/Humidifiers/EvaporativeCoolers/Validation/IndirectDry.mo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ equation
162162
annotation (
163163
Diagram(coordinateSystem(extent={{-200,-180},{180,180}})),
164164
Icon(coordinateSystem(extent={{-100,-100},{100,100}})),
165-
experiment(StartTime=350000, StopTime=604800, Interval=600, Tolerance=1e-6),
165+
experiment(StartTime=350000, StopTime=604800, Interval=60, Tolerance=1e-6),
166166
__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/Humidifiers/EvaporativeCoolers/Validation/IndirectDry.mos"
167167
"Simulate and plot"),
168168
Documentation(info="<html>

Buildings/Fluid/Humidifiers/EvaporativeCoolers/Validation/IndirectWet.mo

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ equation
158158
annotation (
159159
Diagram(coordinateSystem(extent = {{-200, -180}, {180, 180}})),
160160
Icon(coordinateSystem(extent = {{-100, -100}, {100, 100}})),
161-
experiment(StartTime=350000, StopTime = 604800, Interval = 600, Tolerance = 1e-6),
161+
experiment(StartTime=350000, StopTime = 604800, Interval = 60, Tolerance = 1e-6),
162162
__Dymola_Commands(file = "modelica://Buildings/Resources/Scripts/Dymola/Fluid/Humidifiers/EvaporativeCoolers/Validation/IndirectWet.mos" "Simulate and plot"),
163163
Documentation(info = "<html>
164164
<p>

0 commit comments

Comments
 (0)