root/branches/maintenance/3.0/Modelica/Thermal/FluidHeatFlow.mo

Revision 1177, 122.7 kB (checked in by otter, 4 weeks ago)

Modelica.Thermal: replaced undefined "ln(..)" by "log(..)"

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
<
Line 
1within Modelica.Thermal;
2
3
4package FluidHeatFlow
5  "Simple components for 1-dimensional incompressible thermo-fluid flow models"
6  extends Modelica.Icons.Library2;
7  annotation (
8    version="1.6.6", versionDate="2007-11-12",
9    Documentation(info="<HTML>
10This package contains very simple-to-use components to model coolant flows as needed to simulate cooling e.g. of electric machines:
11<ul>
12<li>Components: components like different types of pipe models</li>
13<li>Examples: some test examples</li>
14<li>Interfaces: definition of connectors and partial models
15(containing the core thermodynamic equations)</li>
16<li>Media: definition of media properties</li>
17<li>Sensors: various sensors for pressure, temperature, volume and enthalpy flow</li>
18<li>Sources: various flow sources</li>
19</ul>
20<b>Variables used in connectors:</b>
21<ul>
22<li>Pressure p</li>
23<li>flow MassFlowRate m_flow</li>
24<li>SpecificEnthalpy h</li>
25<li>flow EnthalpyFlowRate H_flow</li>
26</ul>
27EnthalpyFlowRate means the Enthalpy = cp<sub>constant</sub> * m * T that is carried by the medium's flow.<br><br>
28<b>Limitations and assumptions:</b>
29<ul>
30<li>Splitting and mixing of coolant flows (media with the same cp) is possible.</li>
31<li>Reversing the direction of flow is possible.</li>
32<li>The medium is considered to be incompressible.</li>
33<li>No mixtures of media is taken into consideration.</li>
34<li>The medium may not change its phase.</li>
35<li>Medium properties are kept constant.</li>
36<li>Pressure changes are only due to pressure drop and geodetic height differnence rho*g*h (if h > 0).</li>
37<li>A user-defined part (0..1) of the friction losses (V_flow*dp) are fed to the medium.</li>
38<li><b>Note:</b> Connected flowPorts have the same temperature (mixing temperature)!<br>
39Since mixing may occur, the outlet temperature may be different from the connector's temperature.<br> 
40Outlet temperature is defined by variable T of the corresponding component.</li>
41</ul>
42<b>Further development:</b>
43<ul>
44<li>Additional components like tanks (if needed)</li>
45</ul>
46<dl>
47  <dt><b>Main Authors:</b></dt>
48  <dd>
49  <p>
50  <a href=\"http://www.haumer.at/\">Anton Haumer</a><br>
51  Technical Consulting & Electrical Engineering<br>
52  A-3423 St.Andrae-Woerdern, Austria<br>
53  email: <a href=\"mailto:a.haumer@haumer.at\">a.haumer@haumer.at</a>
54  </p>
55  <p>
56  Dr.Christian Kral<br>
57  &Ouml;sterreichisches Forschungs- und Pr&uuml;fzentrum Arsenal Ges.m.b.H.<br>
58  <a href=\"http://www.arsenal.ac.at/\">arsenal research</a><br>
59  Giefinggasse 2<br>
60  A-1210 Vienna, Austria
61  </p>
62  </dd>
63</dl>
64<p>
65Copyright &copy; 1998-2008, Modelica Association, Anton Haumer and arsenal research.
66</p>
67<p>
68<i>The Modelica package is <b>free</b> software; it can be redistributed and/or modified
69under the terms of the <b>Modelica license</b>, see the license conditions
70and the accompanying <b>disclaimer</b> 
71<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
72</p>
73</HTML>", revisions="<HTML>
74  <ul>
75  <li> v1.00 2005/02/01 Anton Haumer<br>
76       first stable official release</li>
77  <li> v1.10 2005/02/15 Anton Haumer<br>
78       reorganisation of the package</li>
79  <li> v1.11 2005/02/18 Anton Haumer<br>
80       corrected usage of cv and cp</li>
81  <li> v1.20 Beta 2005/02/18 Anton Haumer<br>
82       introduced geodetic height in Components.Pipes<br>
83       <i>new models: Components.Valve, Sources.IdealPump</i></li>
84  <li> v1.30 Beta 2005/06/02 Anton Haumer<br>
85       friction losses are fed to medium</li>
86  <li> v1.31 Beta 2005/06/04 Anton Haumer<br>
87       <i>new example: PumpAndValve</i><br>
88       <i>new example: PumpDropOut</i></li>
89  <li> v1.33 Beta 2005/06/07 Anton Haumer<br>
90       corrected usage of simpleFlow</li>
91  <li> v1.40 2005/06/13 Anton Haumer<br>
92       stable release</li>
93  <li> v1.42 Beta 2005/06/18 Anton Haumer<br>
94       <i>new test example: ParallelPumpDropOut</i></li>
95  <li> v1.43 Beta 2005/06/20 Anton Haumer<br>
96       Test of mixing / semiLinear<br>
97       <i>new test example: OneMass</i><br>
98       <i>new test example: TwoMass</i></li>
99  <li> v1.50 2005/09/07 Anton Haumer<br>
100       semiLinear works fine</li>
101  <li> v1.60 2007/01/23 Anton Haumer<br>
102       new parameter tapT defining Temperature of heatPort </li>
103  <li> v1.6.1 2007/08/12 Anton Haumer<br>
104       improved documentation<br>
105       removed type TemperatureDifference since this is defined in Modelica.SIunits</li>
106  <li> v1.6.2 2007/08/20 Anton Haumer<br>
107       improved documentation</li>
108  <li> v1.6.3 2007/08/21 Anton Haumer<br>
109       improved documentation</li>
110  <li> v1.6.4 2007/08/24 Anton Haumer<br>
111       removed redeclare type SignalType</li>
112  <li> v1.6.5 2007/08/26 Anton Haumer<br>
113       fixed unit bug in SimpleFriction</li>
114  <li> v1.6.6 2007/11/13 Anton Haumer<br>
115       replaced all nonSIunits<br>
116       some renaming to be more concise</li>
117  </ul>
118</HTML>
119"), Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,
120            100}}), graphics={
121        Polygon(
122          points={{-80,10},{-60,-10},{-80,-30},{-20,-30},{0,-10},{-20,10},{-80,
123              10}},
124          lineColor={0,128,255},
125          fillColor={0,128,255},
126          fillPattern=FillPattern.Solid),
127        Polygon(
128          points={{-40,-90},{-20,-70},{0,-90},{0,-50},{-20,-30},{-40,-50},{-40,
129              -90}},
130          lineColor={255,0,0},
131          fillColor={255,0,0},
132          fillPattern=FillPattern.Solid),
133        Polygon(
134          points={{-20,10},{0,-10},{-20,-30},{40,-30},{60,-10},{40,10},{-20,10}}, 
135
136          lineColor={255,128,0},
137          fillColor={255,128,0},
138          fillPattern=FillPattern.Solid)}));
139
140  package Examples
141    "Examples that demonstrate the usage of the FluidHeatFlow components"
142    extends Modelica.Icons.Library2;
143  annotation (Documentation(info="<HTML>
144This package contains test examples:
145<ul>
146<li>1.SimpleCooling: heat is dissipated through a media flow</li>
147<li>2.ParallelCooling: two heat sources dissipate through merged media flows</li>
148<li>3.IndirectCooling: heat is disspated through two cooling cycles</li>
149<li>4.PumpAndValve: demonstrates usage of an IdealPump and a Valve</li>
150<li>5.PumpDropOut: demonstrates shutdown and restart of a pump</li>
151<li>6.ParallelPumpDropOut: demonstrates shutdown and restart of a pump in a parallel circuit</li>
152<li>7.OneMass: cooling of a mass (thermal capacity) by a coolant flow</li>
153<li>8.TwoMass: cooling of two masses (thermal capacities) by two parallel coolant flows</li>
154</ul>
155<dl>
156  <dt><b>Main Authors:</b></dt>
157  <dd>
158  <p>
159  <a href=\"http://www.haumer.at/\">Anton Haumer</a><br>
160  Technical Consulting & Electrical Engineering<br>
161  A-3423 St.Andrae-Woerdern, Austria<br>
162  email: <a href=\"mailto:a.haumer@haumer.at\">a.haumer@haumer.at</a>
163  </p>
164  <p>
165  Dr.Christian Kral<br>
166  &Ouml;sterreichisches Forschungs- und Pr&uuml;fzentrum Arsenal Ges.m.b.H.<br>
167  <a href=\"http://www.arsenal.ac.at/\">arsenal research</a><br>
168  Giefinggasse 2<br>
169  A-1210 Vienna, Austria
170  </p>
171  </dd>
172</dl>
173<p>
174Copyright &copy; 1998-2008, Modelica Association, Anton Haumer and arsenal research.
175</p>
176<p>
177<i>The Modelica package is <b>free</b> software; it can be redistributed and/or modified
178under the terms of the <b>Modelica license</b>, see the license conditions
179and the accompanying <b>disclaimer</b> 
180<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
181</p>
182</HTML>", revisions="<HTML>
183  <ul>
184  <li> v1.00 2005/02/01 Anton Haumer<br>
185       first stable official release</li>
186  <li> v1.31 Beta 2005/06/04 Anton Haumer<br>
187       <i>new example: PumpAndValve</i><br>
188       <i>new example: PumpDropOut</i></li>
189  <li> v1.42 Beta 2005/06/18 Anton Haumer<br>
190       <i>new test example: ParallelPumpDropOut</i></li>
191  <li> v1.43 Beta 2005/06/20 Anton Haumer<br>
192       Test of mixing / semiLinear<br>
193       <i>new test example: OneMass</i><br>
194       <i>new test example: TwoMass</i></li>
195  </ul>
196</HTML>
197"), Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,
198              100}}), graphics={Ellipse(extent={{-60,10},{40,-90}}, lineColor={
199                135,135,135}), Polygon(
200            points={{-30,-12},{-30,-68},{28,-40},{-30,-12}},
201            lineColor={135,135,135},
202            fillColor={135,135,135},
203            fillPattern=FillPattern.Solid)}));
204
205    model SimpleCooling "Example: simple cooling circuit"
206      extends Modelica.Icons.Example;
207    annotation (Documentation(info="<HTML>
208<p>
2091st test example: SimpleCooling
210</p>
211A prescribed heat source dissipates its heat through a thermal conductor to a coolant flow. The coolant flow is taken from an ambient and driven by a pump with prescribed mass flow.<br>
212<b>Results</b>:<br>
213<table>
214<tr>
215<td valign=\"top\"><b>output</b></td>
216<td valign=\"top\"><b>explanation</b></td>
217<td valign=\"top\"><b>formula</b></td>
218<td valign=\"top\"><b>actual steady-state value</b></td>
219</tr>
220<tr>
221<td valign=\"top\">dTSource</td>
222<td valign=\"top\">Source over Ambient</td>
223<td valign=\"top\">dtCoolant + dtToPipe</td>
224<td valign=\"top\">20 K</td>
225</tr>
226<tr>
227<td valign=\"top\">dTtoPipe</td>
228<td valign=\"top\">Source over Coolant</td>
229<td valign=\"top\">Losses / ThermalConductor.G</td>
230<td valign=\"top\">10 K</td>
231</tr>
232<tr>
233<td valign=\"top\">dTCoolant</td>
234<td valign=\"top\">Coolant's temperature increase</td>
235<td valign=\"top\">Losses * cp * massFlow</td>
236<td valign=\"top\">10 K</td>
237</tr>
238</table>
239</HTML>"), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,
240                -100},{100,100}}), graphics),
241        experiment(StopTime=1.0));
242      parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium()
243        "Cooling medium" 
244        annotation(__Dymola_choicesAllMatching=true);
245      parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15
246        "Ambient temperature";
247      output Modelica.SIunits.TemperatureDifference dTSource=
248        prescribedHeatFlow.port.T-TAmb "Source over Ambient";
249      output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T
250        "Source over Coolant";
251      output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT
252        "Coolant's temperature increase";
253      FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) 
254        annotation (Placement(transformation(extent={{-60,-10},{-80,10}},
255              rotation=0)));
256      Sources.VolumeFlow pump(
257        medium=medium,
258        m=0,
259        T0=TAmb,
260        useVolumeFlowInput=true) 
261        annotation (Placement(transformation(extent={{-40,-10},{-20,10}},
262              rotation=0)));
263      FluidHeatFlow.Components.HeatedPipe pipe(
264        medium=medium,
265        m=0.1,
266        T0=TAmb) 
267        annotation (Placement(transformation(extent={{0,-10},{20,10}}, rotation=
268               0)));
269      FluidHeatFlow.Sources.Ambient ambient2(constantAmbientTemperature=TAmb, medium=medium) 
270        annotation (Placement(transformation(extent={{40,-10},{60,10}},
271              rotation=0)));
272      Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor(
273        T(start=TAmb), C=0.1) 
274        annotation (Placement(transformation(
275            origin={40,-50},
276            extent={{-10,10},{10,-10}},
277            rotation=90)));
278      Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow
279        prescribedHeatFlow
280        annotation (Placement(transformation(extent={{-30,-40},{-10,-60}},
281              rotation=0)));
282      Modelica.Blocks.Sources.Constant volumeFlow(k=1) 
283        annotation (Placement(transformation(extent={{-60,10},{-40,30}},
284              rotation=0)));
285      Modelica.Blocks.Sources.Constant heatFlow(k=10) 
286        annotation (Placement(transformation(extent={{-60,-60},{-40,-40}},
287              rotation=0)));
288      Modelica.Thermal.HeatTransfer.Components.Convection convection
289        annotation (Placement(transformation(
290            origin={10,-30},
291            extent={{-10,-10},{10,10}},
292            rotation=90)));
293      Modelica.Blocks.Sources.Constant thermalConductance(k=1) 
294        annotation (Placement(transformation(extent={{-30,-40},{-10,-20}},
295              rotation=0)));
296    equation
297      connect(ambient1.flowPort, pump.flowPort_a) 
298        annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0}));
299      connect(pump.flowPort_b, pipe.flowPort_a) 
300        annotation (Line(points={{-20,0},{0,0}}, color={255,0,0}));
301      connect(pipe.flowPort_b, ambient2.flowPort) 
302        annotation (Line(points={{20,0},{40,0}}, color={255,0,0}));
303      connect(heatFlow.y, prescribedHeatFlow.Q_flow)  annotation (Line(points={
304              {-39,-50},{-30,-50}}, color={0,0,255}));
305      connect(convection.solid, prescribedHeatFlow.port)   annotation (Line(
306            points={{10,-40},{10,-50},{-10,-50}}, color={191,0,0}));
307      connect(convection.solid, heatCapacitor.port)   annotation (Line(points={
308              {10,-40},{10,-50},{30,-50}}, color={191,0,0}));
309      connect(pipe.heatPort, convection.fluid)   annotation (Line(points={{10,
310              -10},{10,-20}}, color={191,0,0}));
311      connect(thermalConductance.y, convection.Gc) 
312                                   annotation (Line(points={{-9,-30},{0,-30}},
313            color={0,0,127}));
314      connect(volumeFlow.y, pump.volumeFlow) annotation (Line(
315          points={{-39,20},{-30,20},{-30,10}},
316          color={0,0,127},
317          smooth=Smooth.None));
318    end SimpleCooling;
319
320    model ParallelCooling "Example: coolig circuit with parallel branches"
321      extends Modelica.Icons.Example;
322    annotation (Documentation(info="<HTML>
323<p>
3242nd test example: ParallelCooling
325</p>
326Two prescribed heat sources dissipate their heat through thermal conductors to coolant flows. The coolant flow is taken from an ambient and driven by a pump with prescribed mass flow, then splitted into two coolant flows connected to the two heat sources, and afterwards merged. Splitting of coolant flows is determined by pressure drop characteristic of the two pipes.<br>
327<b>Results</b>:<br>
328<table>
329<tr>
330<td valign=\"top\"><b>output</b></td>
331<td valign=\"top\"><b>explanation</b></td>
332<td valign=\"top\"><b>formula</b></td>
333<td valign=\"top\"><b>actual steady-state value</b></td>
334</tr>
335<tr>
336<td valign=\"top\">dTSource1</td>
337<td valign=\"top\">Source1 over Ambient</td>
338<td valign=\"top\">dTCoolant1 + dTtoPipe1</td>
339<td valign=\"top\">15 K</td>
340</tr>
341<tr>
342<td valign=\"top\">dTtoPipe1</td>
343<td valign=\"top\">Source1 over Coolant1</td>
344<td valign=\"top\">Losses1 / ThermalConductor1.G</td>
345<td valign=\"top\"> 5 K</td>
346</tr>
347<tr>
348<td valign=\"top\">dTCoolant1</td>
349<td valign=\"top\">Coolant's temperature increase</td>
350<td valign=\"top\">Losses * cp * totalMassFlow/2</td>
351<td valign=\"top\">10 K</td>
352</tr>
353<tr>
354<td valign=\"top\">dTSource2</td>
355<td valign=\"top\">Source2 over Ambient</td>
356<td valign=\"top\">dTCoolant2 + dTtoPipe2</td>
357<td valign=\"top\">30 K</td>
358</tr>
359<tr>
360<td valign=\"top\">dTtoPipe2</td>
361<td valign=\"top\">Source2 over Coolant2</td>
362<td valign=\"top\">Losses2 / ThermalConductor2.G</td>
363<td valign=\"top\">10 K</td>
364</tr>
365<tr>
366<td valign=\"top\">dTCoolant2</td>
367<td valign=\"top\">Coolant's temperature increase</td>
368<td valign=\"top\">Losses * cp * totalMassFlow/2</td>
369<td valign=\"top\">20 K</td>
370</tr>
371<tr>
372<td valign=\"top\">dTmixedCoolant</td>
373<td valign=\"top\">mixed Coolant's temperature increase</td>
374<td valign=\"top\">(dTCoolant1+dTCoolant2)/2</td>
375<td valign=\"top\">15 K</td>
376</tr>
377</table>
378</HTML>"), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,
379                -100},{100,100}}), graphics),
380        experiment(StopTime=1.0));
381      parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium()
382        "Cooling medium" 
383        annotation(__Dymola_choicesAllMatching=true);
384      parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15
385        "Ambient temperature";
386      output Modelica.SIunits.TemperatureDifference dTSource1=
387        prescribedHeatFlow1.port.T-TAmb "Source1 over Ambient";
388      output Modelica.SIunits.TemperatureDifference dTtoPipe1=prescribedHeatFlow1.port.T-pipe1.heatPort.T
389        "Source1 over Coolant1";
390      output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT
391        "Coolant1's temperature increase";
392      output Modelica.SIunits.TemperatureDifference dTSource2=
393        prescribedHeatFlow2.port.T-TAmb "Source2 over Ambient";
394      output Modelica.SIunits.TemperatureDifference dTtoPipe2=prescribedHeatFlow2.port.T-pipe2.heatPort.T
395        "Source2 over Coolant2";
396      output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT
397        "Coolant2's temperature increase";
398      output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port
399        "mixed Coolant's temperature increase";
400      FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) 
401        annotation (Placement(transformation(extent={{-60,-10},{-80,10}},
402              rotation=0)));
403      Sources.VolumeFlow pump(
404        medium=medium,
405        m=0,
406        T0=TAmb,
407        useVolumeFlowInput=true) 
408        annotation (Placement(transformation(extent={{-40,-10},{-20,10}},
409              rotation=0)));
410      FluidHeatFlow.Components.HeatedPipe pipe1(
411        medium=medium,
412        m=0.1,
413        T0=TAmb) 
414        annotation (Placement(transformation(extent={{0,-20},{20,0}}, rotation=
415                0)));
416      FluidHeatFlow.Components.HeatedPipe pipe2(
417        medium=medium,
418        m=0.1,
419        T0=TAmb) 
420        annotation (Placement(transformation(extent={{0,20},{20,0}}, rotation=0)));
421      FluidHeatFlow.Components.IsolatedPipe pipe3(
422        medium=medium,
423        m=0.1,
424        T0=TAmb) 
425        annotation (Placement(transformation(extent={{40,-10},{60,10}},
426              rotation=0)));
427      FluidHeatFlow.Sources.Ambient ambient2(constantAmbientTemperature=TAmb, medium=medium) 
428        annotation (Placement(transformation(extent={{80,-10},{100,10}},
429              rotation=0)));
430      Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor1(
431        T(start=TAmb), C=0.1) 
432        annotation (Placement(transformation(
433            origin={40,-60},
434            extent={{-10,10},{10,-10}},
435            rotation=90)));
436      Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow
437        prescribedHeatFlow1
438        annotation (Placement(transformation(
439            origin={-20,-60},
440            extent={{10,-10},{-10,10}},
441            rotation=180)));
442      Modelica.Thermal.HeatTransfer.Components.Convection convection1
443        annotation (Placement(transformation(
444            origin={10,-40},
445            extent={{10,10},{-10,-10}},
446            rotation=270)));
447      Modelica.Thermal.HeatTransfer.Components.HeatCapacitor heatCapacitor2(
448        T(start=TAmb), C=0.1) 
449        annotation (Placement(transformation(
450            origin={38,60},
451            extent={{10,-10},{-10,10}},
452            rotation=90)));
453      Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow
454        prescribedHeatFlow2
455        annotation (Placement(transformation(
456            origin={-20,60},
457            extent={{10,10},{-10,-10}},
458            rotation=180)));
459      Modelica.Thermal.HeatTransfer.Components.Convection convection2
460        annotation (Placement(transformation(
461            origin={10,40},
462            extent={{10,-10},{-10,10}},
463            rotation=90)));
464      Modelica.Blocks.Sources.Constant volumeFlow(k=1) 
465        annotation (Placement(transformation(extent={{-60,10},{-40,30}},
466              rotation=0)));
467      Modelica.Blocks.Sources.Constant heatFlow1(k=5) 
468        annotation (Placement(transformation(extent={{-60,-70},{-40,-50}},
469              rotation=0)));
470      Modelica.Blocks.Sources.Constant heatFlow2(k=10) 
471        annotation (Placement(transformation(extent={{-60,50},{-40,70}},
472              rotation=0)));
473      Modelica.Blocks.Sources.Constant thermalConductance1(k=1) 
474        annotation (Placement(transformation(extent={{-30,-50},{-10,-30}},
475              rotation=0)));
476      Modelica.Blocks.Sources.Constant thermalConductance2(k=1) 
477        annotation (Placement(transformation(extent={{-30,30},{-10,50}},
478              rotation=0)));
479    equation
480      connect(ambient1.flowPort, pump.flowPort_a) 
481        annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0}));
482      connect(pump.flowPort_b, pipe1.flowPort_a) 
483        annotation (Line(points={{-20,0},{-10,0},{-10,-10},{0,-10}}, color={255,
484              0,0}));
485      connect(pump.flowPort_b, pipe2.flowPort_a) 
486        annotation (Line(points={{-20,0},{-10,0},{-10,10},{0,10}}, color={255,0,
487              0}));
488      connect(heatFlow2.y,prescribedHeatFlow2. Q_flow) 
489        annotation (Line(points={{-39,60},{-30,60}}, color={0,0,255}));
490      connect(heatFlow1.y,prescribedHeatFlow1. Q_flow) 
491        annotation (Line(points={{-39,-60},{-30,-60}}, color={0,0,255}));
492      connect(thermalConductance2.y, convection2.Gc) 
493        annotation (Line(points={{-9,40},{0,40}}, color={0,0,127}));
494      connect(thermalConductance1.y, convection1.Gc) 
495                                    annotation (Line(points={{-9,-40},{0,-40}},
496            color={0,0,127}));
497      connect(pipe1.heatPort,convection1. fluid) annotation (Line(points={{10,-20},
498              {10,-30},{10,-30}},               color={191,0,0}));
499      connect(convection2.fluid,pipe2. heatPort) annotation (Line(points={{10,
500              30},{10,20}}, color={191,0,0}));
501      connect(convection2.solid,prescribedHeatFlow2. port) annotation (Line(
502            points={{10,50},{10,60},{-10,60}}, color={191,0,0}));
503      connect(convection2.solid,heatCapacitor2. port) annotation (Line(points={
504              {10,50},{10,60},{48,60}}, color={191,0,0}));
505      connect(convection1.solid,prescribedHeatFlow1. port) annotation (Line(
506            points={{10,-50},{10,-60},{-10,-60}}, color={191,0,0}));
507      connect(convection1.solid,heatCapacitor1. port) annotation (Line(points={{10,-50},
508              {10,-60},{30,-60}},          color={191,0,0}));
509      connect(pipe2.flowPort_b,pipe3. flowPort_a) annotation (Line(points={{20,
510              10},{30,10},{30,0},{40,0}}, color={255,0,0}));
511      connect(pipe1.flowPort_b,pipe3. flowPort_a) annotation (Line(points={{20,
512              -10},{30,-10},{30,0},{40,0}}, color={255,0,0}));
513      connect(pipe3.flowPort_b,ambient2. flowPort) 
514        annotation (Line(points={{60,0},{80,0}}, color={255,0,0}));
515      connect(volumeFlow.y, pump.volumeFlow) annotation (Line(
516          points={{-39,20},{-30,20},{-30,10}},
517          color={0,0,127},
518          smooth=Smooth.None));
519    end ParallelCooling;
520
521    model IndirectCooling "Example: indirect cooling circuit"
522      extends Modelica.Icons.Example;
523    annotation (Documentation(info="<HTML>
524<p>
5253rd test example: IndirectCooling
526</p>
527A prescribed heat sources dissipates its heat through a thermal conductor to the inner coolant cycle. It is necessary to define the pressure level of the inner coolant cycle. The inner coolant cycle is coupled to the outer coolant flow through a thermal conductor.<br>
528Inner coolant's temperature rise near the source is the same as temperature drop near the cooler.<br>
529<b>Results</b>:<br>
530<table>
531<tr>
532<td valign=\"top\"><b>output</b></td>
533<td valign=\"top\"><b>explanation</b></td>
534<td valign=\"top\"><b>formula</b></td>
535<td valign=\"top\"><b>actual steady-state value</b></td>
536</tr>
537<tr>
538<td valign=\"top\">dTSource</td>
539<td valign=\"top\">Source over Ambient</td>
540<td valign=\"top\">dtouterCoolant + dtCooler + dTinnerCoolant + dtToPipe</td>
541<td valign=\"top\">40 K</td>
542</tr>
543<tr>
544<td valign=\"top\">dTtoPipe</td>
545<td valign=\"top\">Source over inner Coolant</td>
546<td valign=\"top\">Losses / ThermalConductor.G</td>