@@ -2,124 +2,89 @@ within Buildings.Fluid.Humidifiers.EvaporativeCoolers;
22model 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-
8528protected
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
9562equation
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}));
12388annotation (defaultComponentName="dirEvaCoo" ,
12489Icon(graphics={
12590 Rectangle(lineColor={0,0,255}, fillColor={95,95,95}, pattern=LinePattern.None,
0 commit comments