-
Notifications
You must be signed in to change notification settings - Fork 78
/
EvaporatorCondenserWithCapacity.mo
234 lines (230 loc) · 8.98 KB
/
EvaporatorCondenserWithCapacity.mo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
within AixLib.Fluid.HeatPumps.BaseClasses;
model EvaporatorCondenserWithCapacity
extends AixLib.Fluid.Interfaces.TwoPortHeatMassExchanger(
redeclare final AixLib.Fluid.MixingVolumes.MixingVolume vol(
final prescribedHeatFlowRate=true, final V=V));
parameter Boolean is_con "Type of heat exchanger" annotation (Dialog( descriptionLabel = true),choices(choice=true "Condenser",
choice=false "Evaporator",
radioButtons=true));
parameter Modelica.SIunits.Volume V "Volume in condenser";
parameter Boolean use_cap=true "False if capacity and heat losses are neglected"
annotation (Dialog(group="Heat losses"),choices(checkBox=true));
parameter Modelica.SIunits.HeatCapacity C "Capacity of heat exchanger"
annotation (Dialog(group="Heat losses", enable=use_cap));
parameter Modelica.SIunits.ThermalConductance kAOut_nominal
"Nominal value for thermal conductance to the ambient" annotation (Dialog(group="Heat losses", enable=
use_cap));
Modelica.Blocks.Interfaces.RealOutput kAInn
"Formular for calculation of heat transfer coefficient on the inside"
annotation (Dialog(group="Heat losses", enable=
use_cap));
Modelica.Thermal.HeatTransfer.Components.Convection conIns if use_cap
"Convection between fluid and solid" annotation (Placement(transformation(
extent={{-8,-8},{8,8}},
rotation=90,
origin={-12,28})));
Modelica.Thermal.HeatTransfer.Components.Convection conOut if use_cap
"Convection and conduction between solid and ambient air" annotation (
Placement(transformation(
extent={{8,8},{-8,-8}},
rotation=270,
origin={-12,78})));
Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCap(
final C=C,
final T(start=T_start),
final der_T(start=0)) if use_cap
"Heat Capacity"
annotation (Placement(transformation(extent={{-12,-12},{12,12}},
rotation=270,
origin={12,52})));
Modelica.Blocks.Sources.RealExpression heatLossIns(final y=kAInn) if
use_cap
"Nominal heat loss coefficient to the inside" annotation (Placement(
transformation(
extent={{-15,-10},{15,10}},
rotation=0,
origin={-61,28})));
Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a port_out if use_cap
"Temperature and heat flow to the ambient"
annotation (Placement(transformation(extent={{-5,105},{5,95}}),
iconTransformation(extent={{-5,105},{5,95}})));
Modelica.Blocks.Sources.RealExpression heatLossOut(final y=kAOut_nominal) if use_cap
"Nominal heat loss coefficient to the inside" annotation (Placement(
transformation(
extent={{-15,-10},{15,10}},
rotation=0,
origin={-61,78})));
Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow preHea(final alpha=0,
final T_ref=293.15) "Heat flow rate of the condenser" annotation (
Placement(transformation(
extent={{12,-12},{-12,12}},
rotation=270,
origin={0,-68})));
Modelica.Blocks.Interfaces.RealInput QFlow_in "Heat flow rate to the medium"
annotation (Placement(transformation(
extent={{-20,-20},{20,20}},
rotation=90,
origin={0,-118}), iconTransformation(
extent={{-8,-8},{8,8}},
rotation=90,
origin={-8.88178e-16,-106})));
equation
connect(conIns.fluid, heatCap.port)
annotation (Line(points={{-12,36},{-12,52},{1.77636e-15,52}},
color={191,0,0},
pattern=LinePattern.Dash));
connect(heatCap.port, conOut.solid)
annotation (Line(points={{1.77636e-15,52},{-12,52},{-12,70}},
color={191,0,0},
pattern=LinePattern.Dash));
connect(conIns.Gc, heatLossIns.y)
annotation (Line(points={{-20,28},{-44.5,28}}, color={0,0,127},
pattern=LinePattern.Dash));
connect(conOut.fluid, port_out)
annotation (Line(points={{-12,86},{-12,100},{0,100}},
color={191,0,0},
pattern=LinePattern.Dash));
connect(conOut.Gc, heatLossOut.y)
annotation (Line(points={{-20,78},{-44.5,78}}, color={0,0,127},
pattern=LinePattern.Dash));
connect(vol.heatPort, conIns.solid) annotation (Line(
points={{-9,-10},{-12,-10},{-12,20}},
color={191,0,0},
pattern=LinePattern.Dash));
connect(vol.heatPort, preHea.port) annotation (Line(points={{-9,-10},{-12,-10},
{-12,-34},{0,-34},{0,-56},{2.22045e-15,-56}}, color={191,0,0}));
connect(preHea.Q_flow, QFlow_in) annotation (Line(points={{-2.22045e-15,-80},{
-2.22045e-15,-99},{0,-99},{0,-118}}, color={0,0,127}));
annotation (Icon(graphics={ Ellipse(
extent={{-48,46},{46,-42}},
lineColor={0,0,0},
fillPattern=FillPattern.Sphere,
fillColor={170,213,255}),
Rectangle(
extent={{-18,100},{18,-100}},
lineColor={0,0,0},
fillColor={192,192,192},
fillPattern=FillPattern.Backward,
origin={0,68},
rotation=90,
visible=use_cap),
Text(
extent={{-36,52},{36,82}},
lineColor={0,0,0},
pattern=LinePattern.Dash,
fillColor={255,215,136},
fillPattern=FillPattern.Solid,
textString="C",
visible=use_cap),
Text(
extent={{-36,-18},{36,12}},
lineColor={0,0,0},
pattern=LinePattern.Dash,
fillColor={255,215,136},
fillPattern=FillPattern.Solid,
textString="V"),
Rectangle(
extent={{-4,-42},{4,-50}},
pattern=LinePattern.None,
fillColor={191,0,0},
fillPattern=FillPattern.Solid,
lineColor={0,0,0}),
Rectangle(
extent={{-107,5},{-44,-4}},
lineColor={0,0,255},
pattern=LinePattern.None,
fillColor={0,0,255},
fillPattern=FillPattern.Solid,
visible=is_con),
Rectangle(
extent={{44,-4},{100,5}},
lineColor={0,0,255},
pattern=LinePattern.None,
fillColor={255,0,0},
fillPattern=FillPattern.Solid,
visible=is_con),
Line(
points={{0,-96},{0,-50},{0,-46}},
color={0,0,0},
pattern=LinePattern.None),
Line(
points={{-12,-76},{-12,-122},{50,-80},{82,-64},{4,-100}},
color={0,0,0},
pattern=LinePattern.None),
Line(
points={{-18,-70},{42,-44}},
color={0,0,0},
pattern=LinePattern.None),
Rectangle(
extent={{0,-98},{0,-48}},
lineColor={238,46,47},
pattern=LinePattern.None,
fillColor={191,0,0},
fillPattern=FillPattern.Solid),
Line(
points={{-102,34},{-96,56},{-140,52},{-100,88},{-84,84},{-106,36}},
color={238,46,47},
pattern=LinePattern.None),
Line(
points={{-80,88},{-80,110},{-76,104},{-80,110},{-84,104}},
color={28,108,200},
visible=use_cap),
Line(
points={{-80,34},{-80,56},{-76,50},{-80,56},{-84,50}},
color={238,46,47},
visible=use_cap),
Line(
points={{-50,34},{-50,56},{-46,50},{-50,56},{-54,50}},
color={238,46,47},
visible=use_cap),
Line(
points={{-50,88},{-50,110},{-46,104},{-50,110},{-54,104}},
color={28,108,200},
visible=use_cap),
Line(
points={{80,34},{80,56},{84,50},{80,56},{76,50}},
color={238,46,47},
visible=use_cap),
Line(
points={{80,88},{80,110},{84,104},{80,110},{76,104}},
color={28,108,200},
visible=use_cap),
Line(
points={{50,88},{50,110},{54,104},{50,110},{46,104}},
color={28,108,200},
visible=use_cap),
Line(
points={{50,34},{50,56},{54,50},{50,56},{46,50}},
color={238,46,47},
visible=use_cap),
Line(
points={{20,34},{20,56},{24,50},{20,56},{16,50}},
color={238,46,47},
visible=use_cap),
Line(
points={{20,88},{20,110},{24,104},{20,110},{16,104}},
color={28,108,200},
visible=use_cap),
Line(
points={{-20,88},{-20,110},{-16,104},{-20,110},{-24,104}},
color={28,108,200},
visible=use_cap),
Line(
points={{-20,34},{-20,56},{-16,50},{-20,56},{-24,50}},
color={238,46,47},
visible=use_cap),
Rectangle(
extent={{-100,-4},{-44,5}},
lineColor={0,0,255},
pattern=LinePattern.None,
fillColor={255,0,0},
fillPattern=FillPattern.Solid,
visible=not is_con),
Rectangle(
extent={{43,5},{106,-4}},
lineColor={0,0,255},
pattern=LinePattern.None,
fillColor={0,0,255},
fillPattern=FillPattern.Solid,
visible=not is_con)}));
end EvaporatorCondenserWithCapacity;