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

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