From c025e058b032a9542ceba9ca0335a6a59ed6da00 Mon Sep 17 00:00:00 2001
From: otter
@@ -1139,24 +1139,24 @@ with a 3D icon (e.g. used in Blocks.Logical library).
grid={1,1}), graphics={
Ellipse(
extent={{-71,7},{-85,-7}},
- lineColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid),
Ellipse(
extent={{-71,-74},{-85,-88}},
- lineColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid),
Ellipse(
extent={{71,7},{85,-7}},
- lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid)}),
Documentation(info="
@@ -1192,31 +1192,31 @@ with a 3D icon (e.g. used in Blocks.Logical library).
grid={1,1}), graphics={
Ellipse(
extent={{-71,74},{-85,88}},
- lineColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u1 > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid),
Ellipse(
extent={{-71,7},{-85,-7}},
- lineColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u2 > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid),
Ellipse(
extent={{-71,-74},{-85,-88}},
- lineColor=DynamicSelect({235,235,235}, if u3 > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if u3 > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if u3 > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u3 > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid),
Ellipse(
extent={{71,7},{85,-7}},
- lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid)}),
Documentation(info="
Block has three continuous Boolean input and one continuous Boolean output signal
@@ -1236,10 +1236,10 @@ with a 3D icon (e.g. used in Blocks.Logical library).
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,
-100},{100,100}}), graphics={Ellipse(
extent={{-71,7},{-85,-7}},
- lineColor=DynamicSelect({235,235,235}, if u > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if u > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if u > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid)}),
Documentation(info="
@@ -1260,10 +1260,10 @@ with a 3D icon (e.g. used in Blocks.Logical library).
annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,
-100},{100,100}}), graphics={Ellipse(
extent={{71,7},{85,-7}},
- lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid)}),
Documentation(info="
@@ -1298,10 +1298,10 @@ with a 3D icon (e.g. used in Blocks.Logical library).
fillPattern=FillPattern.Solid),
Ellipse(
extent={{71,7},{85,-7}},
- lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid)}),
Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},
{100,100}}), graphics={
@@ -1365,10 +1365,10 @@ and a 3D icon (e.g. used in Blocks.Logical library).
textString="%threshold"),
Ellipse(
extent={{71,7},{85,-7}},
- lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid)}),
Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},
{100,100}}),
@@ -1405,10 +1405,10 @@ as well as a 3D icon (e.g. used in Blocks.Logical library).
borderPattern=BorderPattern.Raised),
Ellipse(
extent={{73,7},{87,-7}},
- lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
- fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0}
- else {235,235,235}),
+ lineColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if y > 0.5 then {0,255,0} else
+ {235,235,235}),
fillPattern=FillPattern.Solid),
Ellipse(extent={{32,10},{52,-10}}, lineColor={0,0,255}),
Line(points={{-100,-80},{42,-80},{42,0}}, color={0,0,255})}),
diff --git a/Modelica/Blocks/Logical.mo b/Modelica/Blocks/Logical.mo
index 10ffe9555d..ebe6325bdb 100644
--- a/Modelica/Blocks/Logical.mo
+++ b/Modelica/Blocks/Logical.mo
@@ -818,7 +818,7 @@ The default value of this parameter is false.
Line(points={{-78,-2},{-6,18},{82,-12}}, color={255,0,0}),
Line(points={{-78,12},{-6,30},{82,0}}, color={0,0,0}),
Line(points={{-78,-16},{-6,4},{82,-26}}, color={0,0,0}),
- Line(points={{-82,-18},{-56,-18},{-56,-40},{64,-40},{64,-20},{90,-20}},
+ Line(points={{-82,-18},{-56,-18},{-56,-40},{64,-40},{64,-20},{90,-20}},
color={255,0,255})}), Documentation(info="
The block OnOffController sets the output signal y to true when
the input signal u falls below the reference signal minus half of
@@ -884,7 +884,7 @@ signal u exceeds the reference signal plus half of the bandwidth.<
lineColor={0,0,0},
fillColor={255,255,255},
fillPattern=FillPattern.Solid),
- Line(points={{-80,-68},{-60,-68},{-60,-42},{8,-42},{8,-68},{60,-68}},
+ Line(points={{-80,-68},{-60,-68},{-60,-42},{8,-42},{8,-68},{60,-68}},
color={255,0,255}),
Line(
points={{-60,40},{-60,-42}},
@@ -1054,7 +1054,7 @@ handled properly.
@@ -1529,7 +1529,7 @@ is resolved in the world frame). Line(points={{20,0},{65,0}}, color={0,0,0}), Line(points={{-79,47},{-70,61},{-59,72},{-45,81},{-32,84},{-20,85}}, color={0,0,0}), - Line(points={{76,47},{66,60},{55,69},{49,74},{41,80},{31,84},{20,85}}, + Line(points={{76,47},{66,60},{55,69},{49,74},{41,80},{31,84},{20,85}}, color={0,0,0})}), Documentation(info="
@@ -1772,8 +1772,8 @@ is resolved in the world frame). fillColor={192,192,192}), Line(points={{-56,0},{-56,23},{-30,23},{-30,70},{-60,70},{-60,101}}, color={0,0,0}), - Line(points={{55,-1},{55,20},{30,20},{30,70},{60,70},{60,100}}, color - ={0,0,0}), + Line(points={{55,-1},{55,20},{30,20},{30,70},{60,70},{60,100}}, color= + {0,0,0}), Line( points={{-56,0},{55,-1}}, color={0,0,0}, @@ -1846,16 +1846,14 @@ is resolved in the world frame). fillColor={0,0,0}, fillPattern=FillPattern.Solid), Line(points={{-60,0},{-31,0}}, color={0,0,255}), - Polygon(points={{-19,0},{-31,3},{-31,-3},{-19,0}}, lineColor={0,0,255}), - + Polygon(points={{-19,0},{-31,3},{-31,-3},{-19,0}}, lineColor={0,0,255}), Line(points={{-60,16},{0,16}}, color={0,0,255}), Line(points={{0,0},{0,20}}, color={0,0,255}), Text( extent={{-43,-8},{-7,-33}}, lineColor={0,0,0}, textString="e_rel_0"), - Polygon(points={{0,16},{-12,19},{-12,13},{0,16}}, lineColor={0,0,255}), - + Polygon(points={{0,16},{-12,19},{-12,13},{0,16}}, lineColor={0,0,255}), Text( extent={{-50,35},{51,26}}, lineColor={0,0,0}, @@ -2237,8 +2235,7 @@ for this situation: fillPattern=FillPattern.Solid), Line(points={{29,3},{29,22}}, color={0,0,255}), Line(points={{29,16},{60,16}}, color={0,0,255}), - Polygon(points={{29,16},{41,19},{41,13},{29,16}}, lineColor={0,0,255}), - + Polygon(points={{29,16},{41,19},{41,13},{29,16}}, lineColor={0,0,255}), Text( extent={{15,36},{32,26}}, lineColor={0,0,0}, diff --git a/Modelica/Mechanics/MultiBody/Joints.mo b/Modelica/Mechanics/MultiBody/Joints.mo index 639ddd1c48..e968ac414e 100644 --- a/Modelica/Mechanics/MultiBody/Joints.mo +++ b/Modelica/Mechanics/MultiBody/Joints.mo @@ -1,300 +1,5 @@ within Modelica.Mechanics.MultiBody; package Joints "Components that constrain the motion between two frames" - model RevoluteNew - "Revolute joint (1 rotational degree-of-freedom, 2 potential states)" - - import SI = Modelica.SIunits; - - Modelica.Mechanics.Rotational.Interfaces.Flange_a axis if useAxisFlange - "1-dim. rotational flange that drives the joint" - annotation (Placement(transformation(extent={{10,90},{-10,110}}, rotation= - 0))); - Modelica.Mechanics.Rotational.Interfaces.Flange_b support if useAxisFlange - "1-dim. rotational flange of the drive support (assumed to be fixed in the world frame, NOT in the joint)" - annotation (Placement(transformation(extent={{-70,90},{-50,110}}, - rotation=0))); - - Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a - "Coordinate system fixed to the joint with one cut-force and cut-torque" - annotation (Placement(transformation(extent={{-116,-16},{-84,16}}, - rotation=0))); - Modelica.Mechanics.MultiBody.Interfaces.Frame_b frame_b - "Coordinate system fixed to the joint with one cut-force and cut-torque" - annotation (Placement(transformation(extent={{84,-16},{116,16}}, - rotation=0))); - - parameter Boolean useAxisFlange=false "= true, if axis flange is enabled" - annotation(Evaluate=true, HideResult=true, choices(__Dymola_checkBox=true)); - parameter Boolean animation=true - "= true, if animation shall be enabled (show axis as cylinder)"; - parameter Modelica.Mechanics.MultiBody.Types.Axis n={0,0,1} - "Axis of rotation resolved in frame_a (= same as in frame_b)" - annotation (Evaluate=true); - constant SI.Angle phi_offset=0 - "Relative angle offset (angle = phi_offset + phi)"; - parameter SI.Distance cylinderLength=world.defaultJointLength - "Length of cylinder representing the joint axis" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - parameter SI.Distance cylinderDiameter=world.defaultJointWidth - "Diameter of cylinder representing the joint axis" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - input Modelica.Mechanics.MultiBody.Types.Color cylinderColor=Modelica.Mechanics.MultiBody.Types.Defaults.JointColor - "Color of cylinder representing the joint axis" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - input Modelica.Mechanics.MultiBody.Types.SpecularCoefficient - specularCoefficient = world.defaultSpecularCoefficient - "Reflection of ambient light (= 0: light is completely absorbed)" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - parameter StateSelect stateSelect=StateSelect.prefer - "Priority to use joint angle phi and w=der(phi) as states" annotation(Dialog(tab="Advanced")); - - SI.Angle phi(start=0, final stateSelect=stateSelect) - "Relative rotation angle from frame_a to frame_b" - annotation (unassignedMessage=" -The rotation angle phi of a revolute joint cannot be determined. -A non-zero mass might be missing on either side of the parts -connected to the revolute joint. -"); - SI.AngularVelocity w(start=0, stateSelect=stateSelect) - "First derivative of angle phi (relative angular velocity)"; - SI.AngularAcceleration a(start=0) - "Second derivative of angle phi (relative angular acceleration)"; - SI.Torque tau "Driving torque in direction of axis of rotation"; - SI.Angle angle "= phi_offset + phi"; - annotation ( - Window( - x=0.05, - y=0.09, - width=0.65, - height=0.69), - Icon(coordinateSystem( - preserveAspectRatio=true, - extent={{-100,-100},{100,100}}, - grid={1,1}), graphics={ - Rectangle( - extent={{-100,-60},{-30,60}}, - lineColor={0,0,0}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={192,192,192}), - Rectangle( - extent={{30,-60},{100,60}}, - lineColor={0,0,0}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={192,192,192}), - Rectangle(extent={{-100,59},{-30,-60}}, lineColor={0,0,0}), - Rectangle(extent={{30,60},{100,-60}}, lineColor={0,0,0}), - Text( - extent={{-90,14},{-54,-11}}, - lineColor={128,128,128}, - textString="a"), - Text( - extent={{51,11},{87,-14}}, - lineColor={128,128,128}, - textString="b"), - Line( - visible=useAxisFlange, - points={{-20,80},{-20,60}}, - color={0,0,0}), - Line( - visible=useAxisFlange, - points={{20,80},{20,60}}, - color={0,0,0}), - Rectangle( - visible=useAxisFlange, - extent={{-10,100},{10,50}}, - lineColor={0,0,0}, - fillPattern=FillPattern.VerticalCylinder, - fillColor={192,192,192}), - Polygon( - visible=useAxisFlange, - points={{-10,30},{10,30},{30,50},{-30,50},{-10,30}}, - lineColor={0,0,0}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-30,11},{30,-10}}, - lineColor={0,0,0}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid), - Polygon( - visible=useAxisFlange, - points={{10,30},{30,50},{30,-50},{10,-30},{10,30}}, - lineColor={0,0,0}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid), - Text( - extent={{-150,-117},{150,-77}}, - lineColor={0,0,0}, - textString="n=%n"), - Text( - visible=useAxisFlange, - extent={{-150,-175},{150,-115}}, - textString="%name", - lineColor={0,0,255}), - Line( - visible=useAxisFlange, - points={{-20,70},{-60,70},{-60,60}}, - color={0,0,0}, - smooth=Smooth.None), - Line( - visible=useAxisFlange, - points={{20,70},{50,70},{50,60}}, - color={0,0,0}, - smooth=Smooth.None), - Line( - visible=useAxisFlange, - points={{-90,100},{-30,100}}, - color={0,0,0}), - Line( - visible=useAxisFlange, - points={{-30,100},{-50,80}}, - color={0,0,0}), - Line( - visible=useAxisFlange, - points={{-49,100},{-70,80}}, - color={0,0,0}), - Line( - visible=useAxisFlange, - points={{-70,100},{-90,80}}, - color={0,0,0}), - Text( - visible=not useAxisFlange, - extent={{-150,70},{150,130}}, - textString="%name", - lineColor={0,0,255})}), - Diagram(coordinateSystem( - preserveAspectRatio=true, - extent={{-100,-100},{100,100}}, - grid={1,1}), graphics), - Documentation(info=" - -
-Joint where frame_b rotates around axis n which is fixed in frame_a. -The two frames coincide when the rotation angle \"phi = 0\". -
- --Optionally, two additional 1-dimensional mechanical flanges -(flange \"axis\" represents the driving flange and -flange \"support\" represents the bearing) can be enabled via -parameter useAxisFlange. The enabled axis flange can be -driven with elements of the -Modelica.Mechanics.Rotational -library. - -
- --In the \"Advanced\" menu it can be defined via parameter stateSelect -that the rotation angle \"phi\" and its derivative shall be definitely -used as states by setting stateSelect=StateSelect.always. -Default is StateSelect.prefer to use the joint angle and its -derivative as preferred states. The states are usually selected automatically. -In certain situations, especially when closed kinematic loops are present, -it might be slightly more efficient, when using the StateSelect.always setting. -
--If a planar loop is present, e.g., consisting of 4 revolute joints -where the joint axes are all parallel to each other, then there is no -longer a unique mathematical solution and the symbolic algorithms will -fail. Usually, an error message will be printed pointing out this -situation. In this case, one revolute joint of the loop has to be replaced -by a Joints.RevolutePlanarLoopConstraint joint. The -effect is that from the 5 constraints of a usual revolute joint, -3 constraints are removed and replaced by appropriate known -variables (e.g., the force in the direction of the axis of rotation is -treated as known with value equal to zero; for standard revolute joints, -this force is an unknown quantity). -
- --In the following figure the animation of a revolute -joint is shown. The light blue coordinate system is -frame_a and the dark blue coordinate system is -frame_b of the joint. The black arrow is parameter -vector \"n\" defining the translation axis -(here: n = {0,0,1}, phi.start = 45o). -
-- -
- - -")); - protected - outer Modelica.Mechanics.MultiBody.World world; - parameter Real e[3]=Modelica.Math.Vectors.normalize( - n) - "Unit vector in direction of rotation axis, resolved in frame_a (= same as in frame_b)"; - Frames.Orientation R_rel - "Relative orientation object from frame_a to frame_b or from frame_b to frame_a"; - Visualizers.Advanced.Shape cylinder( - shapeType="cylinder", - color=cylinderColor, - specularCoefficient=specularCoefficient, - length=cylinderLength, - width=cylinderDiameter, - height=cylinderDiameter, - lengthDirection=e, - widthDirection={0,1,0}, - r_shape=-e*(cylinderLength/2), - r=frame_a.r_0, - R=frame_a.R) if world.enableAnimation and animation; - - Modelica.Mechanics.Rotational.Components.Fixed fixed - "support flange is fixed to ground" - annotation (Placement(transformation(extent={{-70,70},{-50,90}}))); - Rotational.Interfaces.InternalSupport internalAxis - annotation (Placement(transformation(extent={{-10,90},{10,70}}))); - Rotational.Sources.ConstantTorque constantTorque(tau_constant=0) if not useAxisFlange - annotation (Placement(transformation(extent={{40,70},{20,90}}))); - equation - defineBranch(frame_a.R, frame_b.R); - - assert(cardinality(frame_a) > 0, - "Connector frame_a of revolute joint is not connected"); - assert(cardinality(frame_b) > 0, - "Connector frame_b of revolute joint is not connected"); - - angle = phi_offset + phi; - w = der(phi); - a = der(w); - - // relationships between quantities of frame_a and of frame_b - frame_b.r_0 = frame_a.r_0; - - if rooted(frame_a.R) then - R_rel = Frames.planarRotation(e, phi_offset + phi, w); - frame_b.R = Frames.absoluteRotation(frame_a.R, R_rel); - frame_a.f = -Frames.resolve1(R_rel, frame_b.f); - frame_a.t = -Frames.resolve1(R_rel, frame_b.t); - else - R_rel = Frames.planarRotation(-e, phi_offset + phi, w); - frame_a.R = Frames.absoluteRotation(frame_b.R, R_rel); - frame_b.f = -Frames.resolve1(R_rel, frame_a.f); - frame_b.t = -Frames.resolve1(R_rel, frame_a.t); - end if; - - // d'Alemberts principle - tau = -frame_b.t*e; - - // Connection to internal connectors - tau = internalAxis.tau; - phi = internalAxis.phi; - - connect(fixed.flange, support) annotation (Line( - points={{-60,80},{-60,100}}, - color={0,0,0}, - smooth=Smooth.None)); - connect(internalAxis.flange, axis) annotation (Line( - points={{0,80},{0,100}}, - color={0,0,0}, - smooth=Smooth.None)); - connect(constantTorque.flange, internalAxis.flange) annotation (Line( - points={{20,80},{0,80}}, - color={0,0,0}, - smooth=Smooth.None)); - end RevoluteNew; import SI = Modelica.SIunits; extends Modelica.Icons.Library; @@ -311,8 +16,7 @@ solved, i.e., robustly and efficiently).Model | Description |
---|---|
Prismatic -ActuatedPrismatic |
+ |
Prismatic | Prismatic joint and actuated prismatic joint
(1 translational degree-of-freedom, 2 potential states) @@ -346,167 +50,173 @@ solved, i.e., robustly and efficiently). |
FreeMotion | -Free motion joint (6 degrees-of-freedom, 12 potential states) - - |
-
SphericalSpherical | -Spherical - spherical joint aggregation (1 constraint,
- no potential states) with an optional point mass in the middle - - |
-
UniversalSpherical | -Universal - spherical joint aggregation (1 constraint, no potential states) - - |
-
GearConstraint | -Ideal 3-dim. gearbox (arbitrary shaft directions) - | -
MultiBody.Joints.Assemblies | -Package of joint aggregations for analytic loop handling. - | -
-Joint where frame_b is translated along axis n which is fixed in frame_a. -The two frames coincide when the relative distance \"s = 0\". -
- --In the \"Advanced\" menu it can be defined via parameter stateSelect -that the relative distance \"s\" and its derivative shall be definitely -used as states by setting stateSelect=StateSelect.always. -Default is StateSelect.prefer to use the relative distance and its -derivative as preferred states. The states are usually selected automatically. -In certain situations, especially when closed kinematic loops are present, -it might be slightly more efficient, when using the StateSelect.always setting. -
- --In the following figure the animation of a prismatic -joint is shown. The light blue coordinate system is -frame_a and the dark blue coordinate system is -frame_b of the joint. The black arrow is parameter -vector \"n\" defining the translation axis -(here: n = {1,1,0}). -
-- -
- -"), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{ - 100,100}}), - graphics)); - - end Prismatic; +Joint where frame_b is translated along axis n which is fixed in frame_a. The two frames coincide when the relative distance \"s = 0\".
- +-The prismatic joint has two additional 1-dimensional mechanical flanges +Optionally, two additional 1-dimensional mechanical flanges (flange \"axis\" represents the driving flange and -flange \"bearing\" represents the bearing) where it can be +flange \"support\" represents the bearing) can be enabled via +parameter useAxisFlange. The enabled axis flange can be driven with elements of the Modelica.Mechanics.Translational library. +
- +In the \"Advanced\" menu it can be defined via parameter stateSelect that the relative distance \"s\" and its derivative shall be definitely @@ -516,10 +226,9 @@ derivative as preferred states. The states are usually selected automatically. In certain situations, especially when closed kinematic loops are present, it might be slightly more efficient, when using the StateSelect.always setting.
- +-In the following figure the animation of an actuated -prismatic +In the following figure the animation of a prismatic joint is shown. The light blue coordinate system is frame_a and the dark blue coordinate system is frame_b of the joint. The black arrow is parameter @@ -529,12 +238,61 @@ vector \"n\" defining the translation axis
+ ")); + + protected + Visualizers.Advanced.Shape box( + shapeType="box", + color=boxColor, + specularCoefficient=specularCoefficient, + length=if noEvent(abs(s + s_offset) > 1.e-6) then s + s_offset else 1.e-6, + width=boxWidth, + height=boxHeight, + lengthDirection=e, + widthDirection=boxWidthDirection, + r=frame_a.r_0, + R=frame_a.R) if world.enableAnimation and animation; + Translational.Components.Fixed fixed + annotation (Placement(transformation(extent={{-50,30},{-30,50}}))); + Translational.Interfaces.InternalSupport internalAxis + annotation (Placement(transformation(extent={{70,50},{90,30}}))); + Translational.Sources.ConstantForce constantForce(f_constant=0) if not useAxisFlange + annotation (Placement(transformation(extent={{40,30},{60,50}}))); equation - axis.s = s; - bearing.s = 0; - end ActuatedPrismatic; + v = der(s); + a = der(v); + + // relationships between kinematic quantities of frame_a and of frame_b + frame_b.r_0 = frame_a.r_0 + Frames.resolve1(frame_a.R, e*(s_offset + s)); + frame_b.R = frame_a.R; + + // Force and torque balance + zeros(3) = frame_a.f + frame_b.f; + zeros(3) = frame_a.t + frame_b.t + cross(e*(s_offset + s), frame_b.f); + + // d'Alemberts principle + f = -e*frame_b.f; + + // Connection to internal connectors + f = internalAxis.f; + s = internalAxis.s; + + connect(fixed.flange, support) annotation (Line( + points={{-40,40},{-40,60}}, + color={0,127,0}, + smooth=Smooth.None)); + connect(internalAxis.flange, axis) annotation (Line( + points={{80,40},{80,60}}, + color={0,127,0}, + smooth=Smooth.None)); + connect(constantForce.flange, internalAxis.flange) annotation (Line( + points={{60,40},{80,40}}, + color={0,127,0}, + smooth=Smooth.None)); + end Prismatic; + model Revolute "Revolute joint (1 rotational degree-of-freedom, 2 potential states, optional axis flange)" @@ -6776,163 +6534,6 @@ and 1 prismatic joint are connected by rigid rods. "Components used for analytic solution of kinematic loops (use only if you know what you are doing)" extends Modelica.Icons.Library; - model Revolute - "Revolute joint (1 rotational degree-of-freedom, 2 potential states)" - - import SI = Modelica.SIunits; - - Modelica.Mechanics.MultiBody.Interfaces.Frame_a frame_a - "Coordinate system fixed to the joint with one cut-force and cut-torque" - annotation (Placement(transformation(extent={{-116,-16},{-84,16}}, - rotation=0))); - Modelica.Mechanics.MultiBody.Interfaces.Frame_b frame_b - "Coordinate system fixed to the joint with one cut-force and cut-torque" - annotation (Placement(transformation(extent={{84,-16},{116,16}}, - rotation=0))); - - parameter Boolean animation=true - "= true, if animation shall be enabled (show axis as cylinder)"; - parameter Modelica.Mechanics.MultiBody.Types.Axis n={0,0,1} - "Axis of rotation resolved in frame_a (= same as in frame_b)" - annotation (Evaluate=true); - constant SI.Angle phi_offset=0 - "Relative angle offset (angle = phi_offset + phi)"; - parameter SI.Distance cylinderLength=world.defaultJointLength - "Length of cylinder representing the joint axis" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - parameter SI.Distance cylinderDiameter=world.defaultJointWidth - "Diameter of cylinder representing the joint axis" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - input Modelica.Mechanics.MultiBody.Types.Color cylinderColor=Modelica.Mechanics.MultiBody.Types.Defaults.JointColor - "Color of cylinder representing the joint axis" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - input Modelica.Mechanics.MultiBody.Types.SpecularCoefficient - specularCoefficient = world.defaultSpecularCoefficient - "Reflection of ambient light (= 0: light is completely absorbed)" - annotation (Dialog(tab="Animation", group="if animation = true", enable=animation)); - parameter StateSelect stateSelect=StateSelect.prefer - "Priority to use joint angle phi and w=der(phi) as states" annotation(Dialog(tab="Advanced")); - - SI.Angle phi(start=0, final stateSelect=stateSelect) - "Relative rotation angle from frame_a to frame_b" - annotation (unassignedMessage=" -The rotation angle phi of a revolute joint cannot be determined. -A non-zero mass might be missing on either side of the parts -connected to the revolute joint. -"); - SI.AngularVelocity w(start=0, stateSelect=stateSelect) - "First derivative of angle phi (relative angular velocity)"; - SI.AngularAcceleration a(start=0) - "Second derivative of angle phi (relative angular acceleration)"; - SI.Torque tau=0 "Driving torque in direction of axis of rotation"; - SI.Angle angle "= phi_offset + phi"; - annotation ( - Window( - x=0.05, - y=0.09, - width=0.65, - height=0.69), - Icon(coordinateSystem( - preserveAspectRatio=true, - extent={{-100,-100},{100,100}}, - grid={1,1}), graphics), - Diagram(coordinateSystem( - preserveAspectRatio=true, - extent={{-100,-100},{100,100}}, - grid={1,1}), graphics={ - Rectangle( - extent={{-100,-59},{-20,61}}, - lineColor={0,0,0}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={192,192,192}), - Rectangle( - extent={{-20,10},{20,-10}}, - lineColor={0,0,0}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{20,-60},{100,60}}, - lineColor={0,0,0}, - fillPattern=FillPattern.HorizontalCylinder, - fillColor={192,192,192})}), - Documentation(info=" -
-Joint where frame_b rotates around axis n which is fixed in frame_a. -The two frames coincide when the rotation angle \"phi = 0\". -
--In the \"Advanced\" menu it can be defined via parameter stateSelect -that the rotation angle \"phi\" and its derivative shall be definitely -used as states by setting stateSelect=StateSelect.always. -Default is StateSelect.prefer to use the joint angle and its -derivative as preferred states. The states are usually selected automatically. -In certain situations, especially when closed kinematic loops are present, -it might be slightly more efficient, when using the StateSelect.always setting. -
--If a planar loop is present, e.g., consisting of 4 revolute joints -where the joint axes are all parallel to each other, then there is no -longer a unique mathematical solution and the symbolic algorithms will -fail. Usually, an error message will be printed pointing out this -situation. In this case, one revolute joint of the loop has to be replaced -by a Joints.RevolutePlanarLoopConstraint joint. The -effect is that from the 5 constraints of a usual revolute joint, -3 constraints are removed and replaced by appropriate known -variables (e.g., the force in the direction of the axis of rotation is -treated as known with value equal to zero; for standard revolute joints, -this force is an unknown quantity). -
- -")); - protected - outer Modelica.Mechanics.MultiBody.World world; - parameter Real e[3]=Modelica.Math.Vectors.normalize( - n) - "Unit vector in direction of rotation axis, resolved in frame_a (= same as in frame_b)"; - Frames.Orientation R_rel - "Relative orientation object from frame_a to frame_b or from frame_b to frame_a"; - Visualizers.Advanced.Shape cylinder( - shapeType="cylinder", - color=cylinderColor, - specularCoefficient=specularCoefficient, - length=cylinderLength, - width=cylinderDiameter, - height=cylinderDiameter, - lengthDirection=e, - widthDirection={0,1,0}, - r_shape=-e*(cylinderLength/2), - r=frame_a.r_0, - R=frame_a.R) if world.enableAnimation and animation; - equation - defineBranch(frame_a.R, frame_b.R); - - assert(cardinality(frame_a) > 0, - "Connector frame_a of revolute joint is not connected"); - assert(cardinality(frame_b) > 0, - "Connector frame_b of revolute joint is not connected"); - - angle = phi_offset + phi; - w = der(phi); - a = der(w); - - // relationships between quantities of frame_a and of frame_b - frame_b.r_0 = frame_a.r_0; - - if rooted(frame_a.R) then - R_rel = Frames.planarRotation(e, phi_offset + phi, w); - frame_b.R = Frames.absoluteRotation(frame_a.R, R_rel); - frame_a.f = -Frames.resolve1(R_rel, frame_b.f); - frame_a.t = -Frames.resolve1(R_rel, frame_b.t); - else - R_rel = Frames.planarRotation(-e, phi_offset + phi, w); - frame_a.R = Frames.absoluteRotation(frame_b.R, R_rel); - frame_b.f = -Frames.resolve1(R_rel, frame_a.f); - frame_b.t = -Frames.resolve1(R_rel, frame_a.t); - end if; - - // d'Alemberts principle - tau = -frame_b.t*e; - end Revolute; model Prismatic "Prismatic joint (1 translational degree-of-freedom, 2 potential states)" @@ -7082,7 +6683,7 @@ connected to the prismatic joint."); Joint where frame_b is translated along axis n which is fixed in frame_a. The two frames coincide when the relative distance \"s = 0\". - +In the \"Advanced\" menu it can be defined via parameter stateSelect that the relative distance \"s\" and its derivative shall be definitely @@ -7092,6 +6693,18 @@ derivative as preferred states. The states are usually selected automatically. In certain situations, especially when closed kinematic loops are present, it might be slightly more efficient, when using the StateSelect.always setting.
+ ++In the following figure the animation of a prismatic +joint is shown. The light blue coordinate system is +frame_a and the dark blue coordinate system is +frame_b of the joint. The black arrow is parameter +vector \"n\" defining the translation axis +(here: n = {1,1,0}). +
++ +
")); diff --git a/Modelica/Mechanics/MultiBody/Visualizers.mo b/Modelica/Mechanics/MultiBody/Visualizers.mo index d4f38f5e13..b0a6b58225 100644 --- a/Modelica/Mechanics/MultiBody/Visualizers.mo +++ b/Modelica/Mechanics/MultiBody/Visualizers.mo @@ -174,8 +174,7 @@ definition of the colors used in the MultiBody library fillColor={0,127,255}, fillPattern=FillPattern.Solid), Polygon( - points={{-98,34},{-64,46},{0,30},{74,56},{50,32},{-10,12},{-98,34}}, - + points={{-98,34},{-64,46},{0,30},{74,56},{50,32},{-10,12},{-98,34}}, lineColor={255,255,255}, fillColor={160,160,164}, fillPattern=FillPattern.Solid), diff --git a/Modelica/Mechanics/Rotational.mo b/Modelica/Mechanics/Rotational.mo index 2de02aa695..2b13a01dcc 100644 --- a/Modelica/Mechanics/Rotational.mo +++ b/Modelica/Mechanics/Rotational.mo @@ -2343,8 +2343,7 @@ following references, especially (Armstrong and Canudas de Witt 1996): fillColor={0,0,0}, fillPattern=FillPattern.Solid), Line(points={{0,90},{80,70},{80,-40},{70,-40}}, color={0,0,127}), - Line(points={{0,90},{-80,70},{-80,-40},{-70,-40}}, color={0,0,127}), - + Line(points={{0,90},{-80,70},{-80,-40},{-70,-40}}, color={0,0,127}), Text( extent={{-150,-180},{150,-140}}, textString="%name", @@ -3547,8 +3546,7 @@ GearNew. fillPattern=FillPattern.HorizontalCylinder, fillColor={192,192,192}), Polygon( - points={{-60,10},{-60,20},{-40,40},{-40,-40},{-60,-20},{-60,10}}, - + points={{-60,10},{-60,20},{-40,40},{-40,-40},{-60,-20},{-60,10}}, lineColor={0,0,0}, fillPattern=FillPattern.HorizontalCylinder, fillColor={128,128,128}), @@ -4879,7 +4877,6 @@ Model of fixed angular verlocity of flange, not dependent on torque. w = w_fixed; end ConstantSpeed; - model TorqueStep "Constant torque, not dependent on speed" extends Modelica.Mechanics.Rotational.Interfaces.PartialTorque; parameter Modelica.SIunits.Torque stepTorque(start=1) diff --git a/Modelica/Mechanics/Translational.mo b/Modelica/Mechanics/Translational.mo index aee4ba6e36..6e7f378214 100644 --- a/Modelica/Mechanics/Translational.mo +++ b/Modelica/Mechanics/Translational.mo @@ -3350,7 +3350,7 @@ blocks of Modelica.Blocks.Source. "Velocity of flange with respect to support (= der(s))"; annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, - -100},{100,100}}), graphics={Line(points={{-100,-100},{100,100}}, + -100},{100,100}}), graphics={Line(points={{-100,-100},{100,100}}, color={0,0,255})}), Documentation(info="
Model of force, linearly dependent on velocity of flange.
diff --git a/Modelica/Scripts/ConvertModelica_from_2.2.2_to_3.0.mos b/Modelica/Scripts/ConvertModelica_from_2.2.2_to_3.0.mos
index 4fc4670e9d..6e0c034367 100644
--- a/Modelica/Scripts/ConvertModelica_from_2.2.2_to_3.0.mos
+++ b/Modelica/Scripts/ConvertModelica_from_2.2.2_to_3.0.mos
@@ -807,6 +807,15 @@ convertModifiers({"Modelica.Mechanics.MultiBody.Joints.ActuatedRevolute"},
{"cardinality(bearing)=1"},{"useAxisFlange=true"});
+convertClass ("Modelica.Mechanics.MultiBody.Joints.ActuatedPrismatic",
+ "Modelica.Mechanics.MultiBody.Joints.Prismatic");
+convertElement ({"Modelica.Mechanics.MultiBody.Joints.ActuatedPrismatic"},
+ "bearing", "support");
+convertModifiers({"Modelica.Mechanics.MultiBody.Joints.ActuatedPrismatic"},
+ {"cardinality(axis)=1"},{"useAxisFlange=true"});
+convertModifiers({"Modelica.Mechanics.MultiBody.Joints.ActuatedPrismatic"},
+ {"cardinality(bearing)=1"},{"useAxisFlange=true"});
+
// Sensors
convertModifiers({"Modelica.Mechanics.MultiBody.Sensors.CutForce"},
diff --git a/Modelica/StateGraph.mo b/Modelica/StateGraph.mo
index 3d4ae7bdb9..6f3c2d2091 100644
--- a/Modelica/StateGraph.mo
+++ b/Modelica/StateGraph.mo
@@ -2329,7 +2329,7 @@ block InitialStepWithSignal
extends Interfaces.PartialStep;
annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,
- -100},{100,100}}), graphics={Rectangle(extent={{-100,100},{100,-100}},
+ -100},{100,100}}), graphics={Rectangle(extent={{-100,100},{100,-100}},
lineColor={0,0,0}), Rectangle(extent={{-80,80},{80,-80}},
lineColor={0,0,0})}),
Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,
@@ -2413,7 +2413,7 @@ block StepWithSignal
extends Interfaces.PartialStep;
annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,
- -100},{100,100}}), graphics={Rectangle(extent={{-100,100},{100,-100}},
+ -100},{100,100}}), graphics={Rectangle(extent={{-100,100},{100,-100}},
lineColor={0,0,0})}),
Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,
100}}), graphics={
@@ -2469,8 +2469,8 @@ block Transition
grid={1,1}), graphics={
Rectangle(
extent={{-10,100},{10,-100}},
- fillColor=DynamicSelect({0,0,0}, if enableFire > 0.5 then {0,255,0}
- else {0,0,0}),
+ fillColor=DynamicSelect({0,0,0}, if enableFire > 0.5 then {0,255,0} else
+ {0,0,0}),
lineColor={0,0,0},
fillPattern=FillPattern.Solid),
Line(points={{-30,0},{-10,0}}, color={0,0,0}),
@@ -2485,13 +2485,13 @@ block Transition
textString="%waitTime"),
Text(
extent={{-200,-120},{200,-145}},
- lineColor=DynamicSelect({0,0,0}, if condition > 0.5 then {0,255,0}
- else {0,0,0}),
+ lineColor=DynamicSelect({0,0,0}, if condition > 0.5 then {0,255,0} else
+ {0,0,0}),
textString="%condition")}),
Diagram(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}},
- grid={1,1}), graphics={Line(points={{-31,0},{-11,0}}, color={0,0,0}),
+ grid={1,1}), graphics={Line(points={{-31,0},{-11,0}}, color={0,0,0}),
Rectangle(
extent={{-10,100},{10,-100}},
lineColor={0,0,0},
@@ -2531,8 +2531,8 @@ block TransitionWithSignal
textString="%waitTime"),
Rectangle(
extent={{-10,100},{10,-100}},
- fillColor=DynamicSelect({0,0,0}, if enableFire > 0.5 then {0,255,0}
- else {0,0,0}),
+ fillColor=DynamicSelect({0,0,0}, if enableFire > 0.5 then {0,255,0} else
+ {0,0,0}),
lineColor={0,0,0},
fillPattern=FillPattern.Solid),
Line(points={{-30,0},{-10,0}}, color={0,0,0}),
@@ -2542,15 +2542,15 @@ block TransitionWithSignal
lineColor={0,0,255}),
Ellipse(
extent={{7,-81},{-7,-95}},
- lineColor=DynamicSelect({0,0,0}, if condition > 0.5 then {0,255,0}
- else {0,0,0}),
- fillColor=DynamicSelect({0,0,0}, if condition > 0.5 then {0,255,0}
- else {0,0,0}),
+ lineColor=DynamicSelect({0,0,0}, if condition > 0.5 then {0,255,0} else
+ {0,0,0}),
+ fillColor=DynamicSelect({0,0,0}, if condition > 0.5 then {0,255,0} else
+ {0,0,0}),
fillPattern=FillPattern.Solid)}),
Diagram(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}},
- grid={1,1}), graphics={Line(points={{-31,0},{-11,0}}, color={0,0,0}),
+ grid={1,1}), graphics={Line(points={{-31,0},{-11,0}}, color={0,0,0}),
Rectangle(
extent={{-10,100},{10,-100}},
lineColor={0,0,0},
@@ -2583,7 +2583,7 @@ block Alternative
Diagram(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}},
- grid={1,1}), graphics={Line(points={{-100,0},{-80,0}}, color={0,0,0}),
+ grid={1,1}), graphics={Line(points={{-100,0},{-80,0}}, color={0,0,0}),
Line(points={{80,0},{100,0}}, color={0,0,0})}),
Documentation(info="
@@ -2707,7 +2707,7 @@ block Parallel
Diagram(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}},
- grid={1,1}), graphics={Line(points={{-100,0},{-80,0}}, color={0,0,0}),
+ grid={1,1}), graphics={Line(points={{-100,0},{-80,0}}, color={0,0,0}),
Line(points={{80,0},{100,0}}, color={0,0,0})}),
Documentation(info="
@@ -3219,9 +3219,9 @@ value, still requires to go in to the text layer.
100}}),
graphics={Rectangle(
extent={{-100,-100},{100,100}},
- fillColor=DynamicSelect({192,192,192}, if on > 0.5 then {0,255,0}
- else {192,192,192}),
- fillPattern=DynamicSelect(FillPattern.Solid, if on > 0.5 then
+ fillColor=DynamicSelect({192,192,192}, if on > 0.5 then {0,255,0} else
+ {192,192,192}),
+ fillPattern=DynamicSelect(FillPattern.Solid, if on > 0.5 then
FillPattern.Solid else FillPattern.Solid),
lineColor={128,128,128},
lineThickness=2), Text(
@@ -3263,8 +3263,8 @@ value, still requires to go in to the text layer.
borderPattern=BorderPattern.Raised), Text(
extent={{-90,-46},{90,34}},
textString=DynamicSelect(" ", realString(
- Value,
- 1,
+ Value,
+ 1,
integer(precision))),
lineColor={0,0,255})}),
Diagram(graphics),
@@ -3289,8 +3289,8 @@ value, still requires to go in to the text layer.
annotation (Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,
-100},{100,100}}), graphics={Ellipse(
extent={{-100,-100},{100,100}},
- fillColor=DynamicSelect({235,235,235}, if u > 0.5 then {0,255,0}
- else {235,235,235}),
+ fillColor=DynamicSelect({235,235,235}, if u > 0.5 then {0,255,0} else
+ {235,235,235}),
lineColor={0,0,0},
pattern=LinePattern.None,
fillPattern=FillPattern.Sphere), Text(
diff --git a/Modelica/Thermal/FluidHeatFlow.mo b/Modelica/Thermal/FluidHeatFlow.mo
index 716b63ee27..ad10182cc4 100644
--- a/Modelica/Thermal/FluidHeatFlow.mo
+++ b/Modelica/Thermal/FluidHeatFlow.mo
@@ -1,8 +1,8 @@
within Modelica.Thermal;
-package FluidHeatFlow
- "Simple components for 1-dimensional incompressible thermo-fluid flow models"
+package FluidHeatFlow
+ "Simple components for 1-dimensional incompressible thermo-fluid flow models"
extends Modelica.Icons.Library2;
annotation (
version="1.6.6", versionDate="2007-11-12",
@@ -120,26 +120,25 @@ and the accompanying disclaimer
100}}), graphics={
Polygon(
points={{-80,10},{-60,-10},{-80,-30},{-20,-30},{0,-10},{-20,10},{-80,
- 10}},
- lineColor={0,128,255},
- fillColor={0,128,255},
- fillPattern=FillPattern.Solid),
+ 10}},
+ lineColor={0,128,255},
+ fillColor={0,128,255},
+ fillPattern=FillPattern.Solid),
Polygon(
points={{-40,-90},{-20,-70},{0,-90},{0,-50},{-20,-30},{-40,-50},{-40,
- -90}},
- lineColor={255,0,0},
- fillColor={255,0,0},
- fillPattern=FillPattern.Solid),
+ -90}},
+ lineColor={255,0,0},
+ fillColor={255,0,0},
+ fillPattern=FillPattern.Solid),
Polygon(
- points={{-20,10},{0,-10},{-20,-30},{40,-30},{60,-10},{40,10},{-20,10}},
-
- lineColor={255,128,0},
- fillColor={255,128,0},
+ points={{-20,10},{0,-10},{-20,-30},{40,-30},{60,-10},{40,10},{-20,10}},
+ lineColor={255,128,0},
+ fillColor={255,128,0},
fillPattern=FillPattern.Solid)}),
uses(Modelica(version="3.0-development")));
-
- package Examples
- "Examples that demonstrate the usage of the FluidHeatFlow components"
+
+ package Examples
+ "Examples that demonstrate the usage of the FluidHeatFlow components"
extends Modelica.Icons.Library2;
annotation (Documentation(info="
This package contains test examples:
@@ -198,12 +197,12 @@ and the accompanying disclaimer
"), Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,
100}}), graphics={Ellipse(extent={{-60,10},{40,-90}}, lineColor={
135,135,135}), Polygon(
- points={{-30,-12},{-30,-68},{28,-40},{-30,-12}},
- lineColor={135,135,135},
- fillColor={135,135,135},
+ points={{-30,-12},{-30,-68},{28,-40},{-30,-12}},
+ lineColor={135,135,135},
+ fillColor={135,135,135},
fillPattern=FillPattern.Solid)}));
-
- model SimpleCooling "Example: simple cooling circuit"
+
+ model SimpleCooling "Example: simple cooling circuit"
extends Modelica.Icons.Example;
annotation (Documentation(info="
@@ -240,16 +239,16 @@ A prescribed heat source dissipates its heat through a thermal conductor to a co "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=1.0)); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Cooling medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; output Modelica.SIunits.TemperatureDifference dTSource= prescribedHeatFlow.port.T-TAmb "Source over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T "Source over Coolant"; - output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT + output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT "Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) annotation (Placement(transformation(extent={{-60,-10},{-80,10}}, @@ -276,7 +275,7 @@ A prescribed heat source dissipates its heat through a thermal conductor to a co origin={40,-50}, extent={{-10,10},{10,-10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow annotation (Placement(transformation(extent={{-30,-40},{-10,-60}}, rotation=0))); @@ -294,7 +293,7 @@ A prescribed heat source dissipates its heat through a thermal conductor to a co Modelica.Blocks.Sources.Constant thermalConductance(k=1) annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}, rotation=0))); - equation + equation connect(ambient1.flowPort, pump.flowPort_a) annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0})); connect(pump.flowPort_b, pipe.flowPort_a) @@ -317,8 +316,8 @@ A prescribed heat source dissipates its heat through a thermal conductor to a co color={0,0,127}, smooth=Smooth.None)); end SimpleCooling; - - model ParallelCooling "Example: coolig circuit with parallel branches" + + model ParallelCooling "Example: coolig circuit with parallel branches" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -379,24 +378,24 @@ Two prescribed heat sources dissipate their heat through thermal conductors to c "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=1.0)); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Cooling medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; output Modelica.SIunits.TemperatureDifference dTSource1= prescribedHeatFlow1.port.T-TAmb "Source1 over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe1=prescribedHeatFlow1.port.T-pipe1.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe1=prescribedHeatFlow1.port.T-pipe1.heatPort.T "Source1 over Coolant1"; - output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT + output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT "Coolant1's temperature increase"; output Modelica.SIunits.TemperatureDifference dTSource2= prescribedHeatFlow2.port.T-TAmb "Source2 over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe2=prescribedHeatFlow2.port.T-pipe2.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe2=prescribedHeatFlow2.port.T-pipe2.heatPort.T "Source2 over Coolant2"; - output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT + output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT "Coolant2's temperature increase"; - output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port + output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port "mixed Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) annotation (Placement(transformation(extent={{-60,-10},{-80,10}}, @@ -434,7 +433,7 @@ Two prescribed heat sources dissipate their heat through thermal conductors to c origin={40,-60}, extent={{-10,10},{10,-10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow1 annotation (Placement(transformation( origin={-20,-60}, @@ -451,7 +450,7 @@ Two prescribed heat sources dissipate their heat through thermal conductors to c origin={38,60}, extent={{10,-10},{-10,10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow2 annotation (Placement(transformation( origin={-20,60}, @@ -477,7 +476,7 @@ Two prescribed heat sources dissipate their heat through thermal conductors to c Modelica.Blocks.Sources.Constant thermalConductance2(k=1) annotation (Placement(transformation(extent={{-30,30},{-10,50}}, rotation=0))); - equation + equation connect(ambient1.flowPort, pump.flowPort_a) annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0})); connect(pump.flowPort_b, pipe1.flowPort_a) @@ -518,8 +517,8 @@ Two prescribed heat sources dissipate their heat through thermal conductors to c color={0,0,127}, smooth=Smooth.None)); end ParallelCooling; - - model IndirectCooling "Example: indirect cooling circuit" + + model IndirectCooling "Example: indirect cooling circuit" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -569,23 +568,23 @@ Inner coolant's temperature rise near the source is the same as temperature drop "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=1.5)); - parameter FluidHeatFlow.Media.Medium outerMedium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium outerMedium=FluidHeatFlow.Media.Medium() "Outer medium" annotation(choicesAllMatching=true); - parameter FluidHeatFlow.Media.Medium innerMedium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium innerMedium=FluidHeatFlow.Media.Medium() "Inner medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; output Modelica.SIunits.TemperatureDifference dTSource= prescribedHeatFlow.port.T-TAmb "Source over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe1.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe1.heatPort.T "Source over inner Coolant"; - output Modelica.SIunits.TemperatureDifference dTinnerCoolant=pipe1.dT + output Modelica.SIunits.TemperatureDifference dTinnerCoolant=pipe1.dT "inner Coolant's temperature increase"; - output Modelica.SIunits.TemperatureDifference dTCooler=innerPipe.heatPort.T-outerPipe.heatPort.T + output Modelica.SIunits.TemperatureDifference dTCooler=innerPipe.heatPort.T-outerPipe.heatPort.T "Cooler's temperature increase between inner and outer pipes"; - output Modelica.SIunits.TemperatureDifference dTouterCoolant=outerPipe.dT + output Modelica.SIunits.TemperatureDifference dTouterCoolant=outerPipe.dT "outer Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=outerMedium) annotation (Placement(transformation(extent={{-60, @@ -600,7 +599,7 @@ Inner coolant's temperature rise near the source is the same as temperature drop FluidHeatFlow.Sources.Ambient ambient2(constantAmbientTemperature=TAmb, medium=outerMedium) annotation (Placement(transformation(extent={{40,60}, {60,80}}, rotation=0))); - Modelica.Thermal.HeatTransfer.Components.ThermalConductor + Modelica.Thermal.HeatTransfer.Components.ThermalConductor thermalConductor( G=1) annotation (Placement(transformation( origin={10,-70}, @@ -612,7 +611,7 @@ Inner coolant's temperature rise near the source is the same as temperature drop origin={40,-90}, extent={{-10,10},{10,-10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow annotation (Placement(transformation( origin={-20,-90}, @@ -677,7 +676,7 @@ Inner coolant's temperature rise near the source is the same as temperature drop origin={10,40}, extent={{10,10},{-10,-10}}, rotation=270))); - equation + equation connect(ambient1.flowPort, outerPump.flowPort_a) annotation (Line(points={{-60,70},{-40,70}}, color={255,0,0})); connect(prescribedHeatFlow.port, thermalConductor.port_a) @@ -723,8 +722,8 @@ Inner coolant's temperature rise near the source is the same as temperature drop color={0,0,127}, smooth=Smooth.None)); end IndirectCooling; - - model PumpAndValve "Example: cooling circuit with pump and valve" + + model PumpAndValve "Example: cooling circuit with pump and valve" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -743,16 +742,16 @@ You may try to: "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=2)); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Cooling medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; output Modelica.SIunits.TemperatureDifference dTSource= prescribedHeatFlow.port.T-TAmb "Source over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T "Source over Coolant"; - output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT + output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT "Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) annotation (Placement(transformation(extent={{-70,-10},{-90,10}}, @@ -784,7 +783,7 @@ You may try to: origin={40,-50}, extent={{-10,10},{10,-10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow annotation (Placement(transformation(extent={{-30,-40},{-10,-60}}, rotation=0))); @@ -817,7 +816,7 @@ You may try to: duration=0.1, startTime=0.9) annotation (Placement(transformation(extent={{12,40},{-8, 60}}, rotation=0))); - equation + equation connect(pipe.flowPort_b, ambient2.flowPort) annotation (Line(points={{20,0},{40,0}}, color={255,0,0})); connect(heatFlow.y, prescribedHeatFlow.Q_flow) annotation (Line(points={ @@ -848,8 +847,8 @@ You may try to: color={0,0,0}, smooth=Smooth.None)); end PumpAndValve; - - model PumpDropOut "Example: cooling circuit with drop out of pump" + + model PumpDropOut "Example: cooling circuit with drop out of pump" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -861,16 +860,16 @@ then started again (using a ramp of 0.2 s). "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=2)); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Cooling medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; output Modelica.SIunits.TemperatureDifference dTSource= prescribedHeatFlow.port.T-TAmb "Source over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe=prescribedHeatFlow.port.T-pipe.heatPort.T "Source over Coolant"; - output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT + output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT "Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) annotation (Placement(transformation(extent={{-60,-10},{-80,10}}, @@ -897,7 +896,7 @@ then started again (using a ramp of 0.2 s). origin={40,-50}, extent={{-10,10},{10,-10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow annotation (Placement(transformation(extent={{-30,-40},{-10,-60}}, rotation=0))); @@ -915,7 +914,7 @@ then started again (using a ramp of 0.2 s). Modelica.Blocks.Sources.Constant thermalConductance(k=1) annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}, rotation=0))); - equation + equation connect(ambient1.flowPort, pump.flowPort_a) annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0})); connect(pump.flowPort_b, pipe.flowPort_a) @@ -938,9 +937,9 @@ then started again (using a ramp of 0.2 s). color={0,0,127}, smooth=Smooth.None)); end PumpDropOut; - - model ParallelPumpDropOut - "Example: cooling circuit with parallel branches and drop out of pump" + + model ParallelPumpDropOut + "Example: cooling circuit with parallel branches and drop out of pump" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -952,24 +951,24 @@ then started again (using a ramp of 0.2 s). "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=2)); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Cooling medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; output Modelica.SIunits.TemperatureDifference dTSource1= prescribedHeatFlow1.port.T-TAmb "Source1 over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe1=prescribedHeatFlow1.port.T-pipe1.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe1=prescribedHeatFlow1.port.T-pipe1.heatPort.T "Source1 over Coolant1"; - output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT + output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT "Coolant1's temperature increase"; output Modelica.SIunits.TemperatureDifference dTSource2= prescribedHeatFlow2.port.T-TAmb "Source2 over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe2=prescribedHeatFlow2.port.T-pipe2.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe2=prescribedHeatFlow2.port.T-pipe2.heatPort.T "Source2 over Coolant2"; - output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT + output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT "Coolant2's temperature increase"; - output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port + output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port "mixed Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) annotation (Placement(transformation(extent={{-60,-10},{-80,10}}, @@ -1007,7 +1006,7 @@ then started again (using a ramp of 0.2 s). origin={40,-60}, extent={{-10,10},{10,-10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow1 annotation (Placement(transformation( origin={-20,-60}, @@ -1024,7 +1023,7 @@ then started again (using a ramp of 0.2 s). origin={38,60}, extent={{10,-10},{-10,10}}, rotation=90))); - Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow + Modelica.Thermal.HeatTransfer.Sources.PrescribedHeatFlow prescribedHeatFlow2 annotation (Placement(transformation( origin={-20,60}, @@ -1050,7 +1049,7 @@ then started again (using a ramp of 0.2 s). Modelica.Blocks.Sources.Constant thermalConductance2(k=1) annotation (Placement(transformation(extent={{-30,30},{-10,50}}, rotation=0))); - equation + equation connect(ambient1.flowPort, pump.flowPort_a) annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0})); connect(pump.flowPort_b, pipe1.flowPort_a) @@ -1091,8 +1090,8 @@ then started again (using a ramp of 0.2 s). color={0,0,127}, smooth=Smooth.None)); end ParallelPumpDropOut; - - model OneMass "Example: ccoling of one hot mass" + + model OneMass "Example: ccoling of one hot mass" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -1104,18 +1103,18 @@ the time behaviour depending on coolant flow. "), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{100,100}}), graphics), experiment(StopTime=1.0)); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Cooling medium" annotation(choicesAllMatching=true); - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15 "Ambient temperature"; - parameter Modelica.SIunits.Temperature TMass(displayUnit="degC")=313.15 + parameter Modelica.SIunits.Temperature TMass(displayUnit="degC")=313.15 "Inital temperature of mass"; output Modelica.SIunits.TemperatureDifference dTMass= heatCapacitor.port.T-TAmb "Mass over Ambient"; - output Modelica.SIunits.TemperatureDifference dTtoPipe=heatCapacitor.port.T-pipe.heatPort.T + output Modelica.SIunits.TemperatureDifference dTtoPipe=heatCapacitor.port.T-pipe.heatPort.T "Mass over Coolant"; - output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT + output Modelica.SIunits.TemperatureDifference dTCoolant=pipe.dT "Coolant's temperature increase"; FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium) annotation (Placement(transformation(extent={{-60,-10},{-80,10}}, @@ -1142,7 +1141,7 @@ the time behaviour depending on coolant flow. origin={10,-60}, extent={{10,-10},{-10,10}}, rotation=180))); - Modelica.Thermal.HeatTransfer.Components.ThermalConductor + Modelica.Thermal.HeatTransfer.Components.ThermalConductor thermalConductor( G=1) annotation (Placement(transformation( origin={10,-30}, @@ -1153,7 +1152,7 @@ the time behaviour depending on coolant flow. height_1=1, height_2=-2) annotation (Placement(transformation(extent={{-60,10},{-40, 30}}, rotation=0))); - equation + equation connect(ambient1.flowPort, pump.flowPort_a) annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0})); connect(pump.flowPort_b, pipe.flowPort_a) @@ -1169,8 +1168,8 @@ the time behaviour depending on coolant flow. color={0,0,127}, smooth=Smooth.None)); end OneMass; - - model TwoMass "Example: cooling of two hot masses" + + model TwoMass "Example: cooling of two hot masses" extends Modelica.Icons.Example; annotation (Documentation(info="
@@ -1182,28 +1181,28 @@ the time behaviour depending on coolant flow.
"), Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100,
-100},{100,100}}), graphics),
experiment(StopTime=1.0));
- parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium()
+ parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium()
"Cooling medium"
annotation(choicesAllMatching=true);
- parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15
+ parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC")=293.15
"Ambient temperature";
- parameter Modelica.SIunits.Temperature TMass1(displayUnit="degC")=313.15
+ parameter Modelica.SIunits.Temperature TMass1(displayUnit="degC")=313.15
"Inital temperature of mass1";
- parameter Modelica.SIunits.Temperature TMass2(displayUnit="degC")=333.15
+ parameter Modelica.SIunits.Temperature TMass2(displayUnit="degC")=333.15
"Inital temperature of mass2";
output Modelica.SIunits.TemperatureDifference dTMass1=
heatCapacitor1.port.T-TAmb "Mass1 over Ambient";
- output Modelica.SIunits.TemperatureDifference dTtoPipe1=heatCapacitor1.port.T-pipe1.heatPort.T
+ output Modelica.SIunits.TemperatureDifference dTtoPipe1=heatCapacitor1.port.T-pipe1.heatPort.T
"Mass1 over Coolant1";
- output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT
+ output Modelica.SIunits.TemperatureDifference dTCoolant1=pipe1.dT
"Coolant1's temperature increase";
output Modelica.SIunits.TemperatureDifference dTMass2=
heatCapacitor2.port.T-TAmb "Mass2 over Ambient";
- output Modelica.SIunits.TemperatureDifference dTtoPipe2=heatCapacitor2.port.T-pipe2.heatPort.T
+ output Modelica.SIunits.TemperatureDifference dTtoPipe2=heatCapacitor2.port.T-pipe2.heatPort.T
"Mass2 over Coolant2";
- output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT
+ output Modelica.SIunits.TemperatureDifference dTCoolant2=pipe2.dT
"Coolant2's temperature increase";
- output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port
+ output Modelica.SIunits.TemperatureDifference dTmixedCoolant=ambient2.T_port-ambient1.T_port
"mixed Coolant's temperature increase";
FluidHeatFlow.Sources.Ambient ambient1(constantAmbientTemperature=TAmb, medium=medium)
annotation (Placement(transformation(extent={{-60,-10},{-80,10}},
@@ -1241,7 +1240,7 @@ the time behaviour depending on coolant flow.
origin={10,-70},
extent={{10,-10},{-10,10}},
rotation=180)));
- Modelica.Thermal.HeatTransfer.Components.ThermalConductor
+ Modelica.Thermal.HeatTransfer.Components.ThermalConductor
thermalConductor1( G=1)
annotation (Placement(transformation(
origin={10,-40},
@@ -1253,7 +1252,7 @@ the time behaviour depending on coolant flow.
origin={10,70},
extent={{10,10},{-10,-10}},
rotation=180)));
- Modelica.Thermal.HeatTransfer.Components.ThermalConductor
+ Modelica.Thermal.HeatTransfer.Components.ThermalConductor
thermalConductor2( G=1)
annotation (Placement(transformation(
origin={10,40},
@@ -1264,7 +1263,7 @@ the time behaviour depending on coolant flow.
height_1=1,
height_2=-2) annotation (Placement(transformation(extent={{-60,10},{-40,
30}}, rotation=0)));
- equation
+ equation
connect(ambient1.flowPort, pump.flowPort_a)
annotation (Line(points={{-60,0},{-40,0}}, color={255,0,0}));
connect(pump.flowPort_b, pipe1.flowPort_a)
@@ -1292,8 +1291,8 @@ the time behaviour depending on coolant flow.
color={0,0,127},
smooth=Smooth.None));
end TwoMass;
-
- package Utilities "Utility models for examples"
+
+ package Utilities "Utility models for examples"
extends Modelica.Icons.Library;
annotation (Documentation(info="
This package contains utility components used for the test examples.
@@ -1330,22 +1329,22 @@ and the accompanying disclaimer
first used
Partial model of (Infinite) ambient, defines pressure and temperature.
"), Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100}, {100,100}}), graphics={Ellipse( - extent={{-90,90},{90,-90}}, - lineColor={255,0,0}, - fillColor={0,0,255}, + extent={{-90,90},{90,-90}}, + lineColor={255,0,0}, + fillColor={0,0,255}, fillPattern=FillPattern.Solid), Text( - extent={{-150,150},{150,90}}, - lineColor={0,0,255}, + extent={{-150,150},{150,90}}, + lineColor={0,0,255}, textString="%name")})); - parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() + parameter FluidHeatFlow.Media.Medium medium=FluidHeatFlow.Media.Medium() "Ambient medium" annotation(choicesAllMatching=true); output Modelica.SIunits.Temperature T "Outlet temperature of medium"; - output Modelica.SIunits.Temperature T_port=flowPort.h/medium.cp + output Modelica.SIunits.Temperature T_port=flowPort.h/medium.cp "Temperature at flowPort_a"; - protected + protected Modelica.SIunits.SpecificEnthalpy h = medium.cp*T; - public + public Interfaces.FlowPort_a flowPort(final medium=medium) annotation (Placement(transformation(extent={{-110,-10},{-90,10}}, rotation=0))); - equation + equation // massflow -> ambient: mixing rule // massflow <- ambient: energy flow defined by ambient's temperature flowPort.H_flow = semiLinear(flowPort.m_flow,flowPort.h,h); end Ambient; - - partial model AbsoluteSensor "Partial model of absolute sensor" - + + partial model AbsoluteSensor "Partial model of absolute sensor" + annotation (Documentation(info=" Partial model for an absolute sensor (pressure/temperature).@@ -160,13 +160,13 @@ Modelica in file \"Modelica/package.mo\". componentes moved to sub-packages ")); - package Examples - "Example models to demonstrate the usage of package Modelica.Thermal.HeatTransfer" + package Examples + "Example models to demonstrate the usage of package Modelica.Thermal.HeatTransfer" extends Modelica.Icons.Library2; - - model TwoMasses "Simple conduction demo" + + model TwoMasses "Simple conduction demo" extends Modelica.Icons.Example; - parameter Modelica.SIunits.Temperature T_final_K(fixed=false) + parameter Modelica.SIunits.Temperature T_final_K(fixed=false) "Projected final temperature"; HeatTransfer.Components.HeatCapacitor mass1( C=15, T(start=373.15, fixed=true)) @@ -200,7 +200,7 @@ Tsensor1.T, Tsensor2.T, T_final_degC transformation(extent={{-60,-80},{-20,-40}}, rotation=0))); HeatTransfer.Celsius.TemperatureSensor Tsensor2 annotation (Placement( transformation(extent={{60,-80},{20,-40}}, rotation=0))); - equation + equation connect(mass1.port, conduction.port_a) annotation (Line(points={{-70,20}, {-70,10},{-30,10}}, color={191,0,0})); connect(conduction.port_b, mass2.port) annotation (Line(points={{30,10},{ @@ -209,17 +209,17 @@ Tsensor1.T, Tsensor2.T, T_final_degC -60},{-60,-60}}, color={191,0,0})); connect(mass2.port, Tsensor2.port) annotation (Line(points={{70,20},{70, -60},{60,-60}}, color={191,0,0})); - initial equation + initial equation T_final_K = (mass1.T*mass1.C + mass2.T*mass2.C)/(mass1.C + mass2.C); end TwoMasses; - - model ControlledTemperature "Control temperature of a resistor" + + model ControlledTemperature "Control temperature of a resistor" extends Modelica.Icons.Example; - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC") = 293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC") = 293.15 "Ambient Temperature"; - parameter Modelica.SIunits.TemperatureDifference TDif = 2 + parameter Modelica.SIunits.TemperatureDifference TDif = 2 "Error in Temperature"; - output Modelica.SIunits.Temperature TRes(displayUnit="degC") = heatingResistor.heatPort.T + output Modelica.SIunits.Temperature TRes(displayUnit="degC") = heatingResistor.heatPort.T "Resulting Temperature"; annotation (Documentation(info="
@@ -288,7 +288,7 @@ An approppriate simulating time would be 10 seconds. Modelica.Blocks.Logical.Not logicalNot annotation (Placement(transformation( extent={{-30,-20},{-50,0}}, rotation=0))); - equation + equation connect(constantVoltage.n, heatingResistor.n) annotation (Line(points={{-90,-60}, {-30,-60}}, color={0,0,255})); connect(constantVoltage.n, ground.p) annotation (Line(points={{-90,-60}, @@ -316,10 +316,10 @@ An approppriate simulating time would be 10 seconds. annotation (Line(points={{-51,-10}, {-60,-10},{-60,-33}}, color={255,0,255})); end ControlledTemperature; - - model Motor "Second order thermal model of a motor" + + model Motor "Second order thermal model of a motor" extends Modelica.Icons.Example; - parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC") = 293.15 + parameter Modelica.SIunits.Temperature TAmb(displayUnit="degC") = 293.15 "Ambient temperature"; annotation (Documentation(info="
@@ -354,7 +354,7 @@ Simulate for 7200 s; plot Twinding.T and Tcore.T. Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics)); - + Modelica.Blocks.Sources.CombiTimeTable lossTable(extrapolation=Modelica. Blocks.Types.Extrapolation.Periodic, table=[0,100,500; 360,100,500; 360,1000,500; 600,1000,500]) @@ -410,7 +410,7 @@ Simulate for 7200 s; plot Twinding.T and Tcore.T. origin={80,-10}, extent={{-10,-10},{10,10}}, rotation=180))); - equation + equation connect(windingLosses.port, winding.port) annotation (Line(points={{-80, 0},{-80,-20}}, color={191,0,0})); connect(coreLosses.port, core.port) annotation (Line(points={{ @@ -441,55 +441,54 @@ Simulate for 7200 s; plot Twinding.T and Tcore.T. 127})); end Motor; annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, - -100},{100,100}}), graphics={Ellipse(extent={{-60,10},{40,-90}}, + -100},{100,100}}), graphics={Ellipse(extent={{-60,10},{40,-90}}, lineColor={135,135,135}), Polygon( - points={{-30,-12},{-30,-68},{28,-40},{-30,-12}}, - lineColor={135,135,135}, - fillColor={135,135,135}, + points={{-30,-12},{-30,-68},{28,-40},{-30,-12}}, + lineColor={135,135,135}, + fillColor={135,135,135}, fillPattern=FillPattern.Solid)}), Documentation(info=" ")); end Examples; - - - package Components "Lumped thermal components" + + package Components "Lumped thermal components" extends Modelica.Icons.Library2; - + annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, -100},{100,100}}), graphics={ Rectangle( - extent={{-100,18},{-70,-100}}, - lineColor={0,0,0}, - fillColor={192,192,192}, - fillPattern=FillPattern.Backward), - Line(points={{-44,16},{-44,-100}}, color={0,127,255}), - Line(points={{-4,16},{-4,-100}}, color={0,127,255}), - Line(points={{30,18},{30,-100}}, color={0,127,255}), - Line(points={{66,18},{66,-100}}, color={0,127,255}), - Line(points={{66,-100},{76,-80}}, color={0,127,255}), - Line(points={{66,-100},{56,-80}}, color={0,127,255}), - Line(points={{30,-100},{40,-80}}, color={0,127,255}), - Line(points={{30,-100},{20,-80}}, color={0,127,255}), - Line(points={{-4,-100},{6,-80}}, color={0,127,255}), - Line(points={{-4,-100},{-14,-80}}, color={0,127,255}), - Line(points={{-44,-100},{-34,-80}}, color={0,127,255}), - Line(points={{-44,-100},{-54,-80}}, color={0,127,255}), - Line(points={{-70,-60},{66,-60}}, color={191,0,0}), - Line(points={{46,-70},{66,-60}}, color={191,0,0}), - Line(points={{46,-50},{66,-60}}, color={191,0,0}), - Line(points={{46,-30},{66,-20}}, color={191,0,0}), - Line(points={{46,-10},{66,-20}}, color={191,0,0}), + extent={{-100,18},{-70,-100}}, + lineColor={0,0,0}, + fillColor={192,192,192}, + fillPattern=FillPattern.Backward), + Line(points={{-44,16},{-44,-100}}, color={0,127,255}), + Line(points={{-4,16},{-4,-100}}, color={0,127,255}), + Line(points={{30,18},{30,-100}}, color={0,127,255}), + Line(points={{66,18},{66,-100}}, color={0,127,255}), + Line(points={{66,-100},{76,-80}}, color={0,127,255}), + Line(points={{66,-100},{56,-80}}, color={0,127,255}), + Line(points={{30,-100},{40,-80}}, color={0,127,255}), + Line(points={{30,-100},{20,-80}}, color={0,127,255}), + Line(points={{-4,-100},{6,-80}}, color={0,127,255}), + Line(points={{-4,-100},{-14,-80}}, color={0,127,255}), + Line(points={{-44,-100},{-34,-80}}, color={0,127,255}), + Line(points={{-44,-100},{-54,-80}}, color={0,127,255}), + Line(points={{-70,-60},{66,-60}}, color={191,0,0}), + Line(points={{46,-70},{66,-60}}, color={191,0,0}), + Line(points={{46,-50},{66,-60}}, color={191,0,0}), + Line(points={{46,-30},{66,-20}}, color={191,0,0}), + Line(points={{46,-10},{66,-20}}, color={191,0,0}), Line(points={{-70,-20},{66,-20}}, color={191,0,0})}), Documentation( info=" ")); - model HeatCapacitor "Lumped thermal element storing heat" - parameter Modelica.SIunits.HeatCapacity C + model HeatCapacitor "Lumped thermal element storing heat" + parameter Modelica.SIunits.HeatCapacity C "Heat capacity of element (= cp*m)"; - Modelica.SIunits.Temperature T(start=293.15, displayUnit="degC") + Modelica.SIunits.Temperature T(start=293.15, displayUnit="degC") "Temperature of element"; - Modelica.SIunits.TemperatureSlope der_T(start=0) + Modelica.SIunits.TemperatureSlope der_T(start=0) "Time derivative of temperature (= der(T))"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -611,18 +610,18 @@ compute C: origin={0,-100}, extent={{-10,-10},{10,10}}, rotation=90))); - equation + equation T = port.T; der_T = der(T); C*der(T) = port.Q_flow; end HeatCapacitor; - - model ThermalConductor - "Lumped thermal element transporting heat without storing it" + + model ThermalConductor + "Lumped thermal element transporting heat without storing it" extends Interfaces.Element1D; - parameter Modelica.SIunits.ThermalConductance G + parameter Modelica.SIunits.ThermalConductance G "Constant thermal conductance of material"; - + annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ @@ -712,11 +711,11 @@ e.g., with one of the following equations: ")); - equation + equation Q_flow = G*dT; end ThermalConductor; - - model Convection "Lumped thermal element for heat convection" + + model Convection "Lumped thermal element for heat convection" Modelica.SIunits.HeatFlowRate Q_flow "Heat flow rate from solid -> fluid"; Modelica.SIunits.TemperatureDifference dT "= solid.T - fluid.T"; annotation ( @@ -850,7 +849,7 @@ McGraw-Hill, 1997, p.270): Line(points={{56,-10},{76,-20}}, color={191,0,0}), Line(points={{56,10},{76,20}}, color={191,0,0}), Line(points={{56,30},{76,20}}, color={191,0,0})))); - Modelica.Blocks.Interfaces.RealInput Gc + Modelica.Blocks.Interfaces.RealInput Gc "Signal representing the convective thermal conductance in [W/K]" annotation (Placement(transformation( origin={0,100}, @@ -860,16 +859,16 @@ McGraw-Hill, 1997, p.270): -110,-10},{-90,10}}, rotation=0))); Interfaces.HeatPort_b fluid annotation (Placement(transformation(extent={{ 90,-10},{110,10}}, rotation=0))); - equation + equation dT = solid.T - fluid.T; solid.Q_flow = Q_flow; fluid.Q_flow = -Q_flow; Q_flow = Gc*dT; end Convection; - - model BodyRadiation "Lumped thermal element for radiation heat transfer" + + model BodyRadiation "Lumped thermal element for radiation heat transfer" extends Interfaces.Element1D; - parameter Real Gr(unit="m2") + parameter Real Gr(unit="m2") "Net radiation conductance between two surfaces (see docu)"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -1010,73 +1009,73 @@ place from the inner to the outer cylinder): Line(points={{-40,30},{40,30}}, color={191,0,0}), Line(points={{30,24},{40,30}}, color={191,0,0}), Line(points={{30,36},{40,30}}, color={191,0,0})))); - equation + equation Q_flow = Gr*Modelica.Constants.sigma*(port_a.T^4 - port_b.T^4); end BodyRadiation; end Components; - - package Sources "Thermal sources" + + package Sources "Thermal sources" extends Modelica.Icons.Library2; - + annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, -100},{100,100}}), graphics={ Line( - points={{-100,-20},{36,-20}}, - color={191,0,0}, - thickness=2), + points={{-100,-20},{36,-20}}, + color={191,0,0}, + thickness=2), Line( - points={{-100,-60},{38,-60}}, - color={191,0,0}, - thickness=2), + points={{-100,-60},{38,-60}}, + color={191,0,0}, + thickness=2), Polygon( - points={{30,-80},{30,-40},{60,-60},{30,-80}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + points={{30,-80},{30,-40},{60,-60},{30,-80}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Polygon( - points={{30,-40},{30,0},{60,-20},{30,-40}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + points={{30,-40},{30,0},{60,-20},{30,-40}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Rectangle( - extent={{60,0},{80,-80}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + extent={{60,0},{80,-80}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid)}), Documentation(info=" ")); - model FixedTemperature "Fixed temperature boundary condition in Kelvin" - + model FixedTemperature "Fixed temperature boundary condition in Kelvin" + parameter Modelica.SIunits.Temperature T "Fixed temperature at port"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ Text( - extent={{-121,162},{119,102}}, - textString="%name", - lineColor={0,0,255}), + extent={{-121,162},{119,102}}, + textString="%name", + lineColor={0,0,255}), Text( - extent={{-121,-105},{119,-151}}, - lineColor={0,0,0}, - textString="T=%T"), + extent={{-121,-105},{119,-151}}, + lineColor={0,0,0}, + textString="T=%T"), Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - pattern=LinePattern.None, - fillColor={159,159,223}, - fillPattern=FillPattern.Backward), - Text( - extent={{0,0},{-100,-100}}, - lineColor={0,0,0}, - textString="K"), + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + pattern=LinePattern.None, + fillColor={159,159,223}, + fillPattern=FillPattern.Backward), + Text( + extent={{0,0},{-100,-100}}, + lineColor={0,0,0}, + textString="K"), Line( - points={{-52,0},{56,0}}, - color={191,0,0}, - thickness=2), + points={{-52,0},{56,0}}, + color={191,0,0}, + thickness=2), Polygon( - points={{50,-20},{50,20},{90,0},{50,-20}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + points={{50,-20},{50,20},{90,0},{50,-20}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid)}), Documentation(info="
@@ -1107,38 +1106,38 @@ i.e., it defines a fixed temperature as a boundary condition. fillPattern=FillPattern.Solid)))); Interfaces.HeatPort_b port annotation (Placement(transformation(extent={{90, -10},{110,10}}, rotation=0))); - equation + equation port.T = T; end FixedTemperature; - - model PrescribedTemperature - "Variable temperature boundary condition in Kelvin" - + + model PrescribedTemperature + "Variable temperature boundary condition in Kelvin" + annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={0,0,0}, - pattern=LinePattern.None, - fillColor={159,159,223}, - fillPattern=FillPattern.Backward), + extent={{-100,100},{100,-100}}, + lineColor={0,0,0}, + pattern=LinePattern.None, + fillColor={159,159,223}, + fillPattern=FillPattern.Backward), Line( - points={{-102,0},{64,0}}, - color={191,0,0}, - thickness=2), + points={{-102,0},{64,0}}, + color={191,0,0}, + thickness=2), Text( - extent={{0,0},{-100,-100}}, - lineColor={0,0,0}, - textString="K"), + extent={{0,0},{-100,-100}}, + lineColor={0,0,0}, + textString="K"), Text( - extent={{-125,162},{115,102}}, - textString="%name", - lineColor={0,0,255}), + extent={{-125,162},{115,102}}, + textString="%name", + lineColor={0,0,255}), Polygon( - points={{50,-20},{50,20},{90,0},{50,-20}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + points={{50,-20},{50,20},{90,0},{50,-20}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid)}), Documentation(info="
@@ -1174,50 +1173,50 @@ as required to keep the temperature at the specified value. -10},{110,10}}, rotation=0))); Modelica.Blocks.Interfaces.RealInput T annotation (Placement(transformation( extent={{-140,-20},{-100,20}}, rotation=0))); - equation + equation port.T = T; end PrescribedTemperature; - - model FixedHeatFlow "Fixed heat flow boundary condition" - parameter Modelica.SIunits.HeatFlowRate Q_flow + + model FixedHeatFlow "Fixed heat flow boundary condition" + parameter Modelica.SIunits.HeatFlowRate Q_flow "Fixed heat flow rate at port"; - parameter Modelica.SIunits.Temperature T_ref=293.15 + parameter Modelica.SIunits.Temperature T_ref=293.15 "Reference temperature"; - parameter Modelica.SIunits.LinearTemperatureCoefficient alpha=0 + parameter Modelica.SIunits.LinearTemperatureCoefficient alpha=0 "Temperature coefficient of heat flow rate"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ Text( - extent={{-134,120},{132,60}}, - textString="%name", - lineColor={0,0,255}), + extent={{-134,120},{132,60}}, + textString="%name", + lineColor={0,0,255}), Text( - extent={{-137,-52},{133,-100}}, - lineColor={0,0,0}, - textString="Q_flow=%Q_flow"), + extent={{-137,-52},{133,-100}}, + lineColor={0,0,0}, + textString="Q_flow=%Q_flow"), Line( - points={{-100,-20},{48,-20}}, - color={191,0,0}, - thickness=2), + points={{-100,-20},{48,-20}}, + color={191,0,0}, + thickness=2), Line( - points={{-100,20},{46,20}}, - color={191,0,0}, - thickness=2), + points={{-100,20},{46,20}}, + color={191,0,0}, + thickness=2), Polygon( - points={{40,0},{40,40},{70,20},{40,0}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + points={{40,0},{40,40},{70,20},{40,0}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Polygon( - points={{40,-40},{40,0},{70,-20},{40,-40}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + points={{40,-40},{40,0},{70,-20},{40,-40}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Rectangle( - extent={{70,40},{90,-40}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + extent={{70,40},{90,-40}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid)}), Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics={ @@ -1259,52 +1258,52 @@ in order to simulate temperature dependent losses (which are given an reference ")); Interfaces.HeatPort_b port annotation (Placement(transformation(extent={{90, -10},{110,10}}, rotation=0))); - equation + equation port.Q_flow = -Q_flow*(1 + alpha*(port.T - T_ref)); end FixedHeatFlow; - - model PrescribedHeatFlow "Prescribed heat flow boundary condition" - parameter Modelica.SIunits.Temperature T_ref=293.15 + + model PrescribedHeatFlow "Prescribed heat flow boundary condition" + parameter Modelica.SIunits.Temperature T_ref=293.15 "Reference temperature"; - parameter Modelica.SIunits.LinearTemperatureCoefficient alpha=0 + parameter Modelica.SIunits.LinearTemperatureCoefficient alpha=0 "Temperature coefficient of heat flow rate"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ Line( - points={{-60,-20},{40,-20}}, - color={191,0,0}, - thickness=2), + points={{-60,-20},{40,-20}}, + color={191,0,0}, + thickness=2), Line( - points={{-60,20},{40,20}}, - color={191,0,0}, - thickness=2), + points={{-60,20},{40,20}}, + color={191,0,0}, + thickness=2), Line( - points={{-80,0},{-60,-20}}, - color={191,0,0}, - thickness=2), + points={{-80,0},{-60,-20}}, + color={191,0,0}, + thickness=2), Line( - points={{-80,0},{-60,20}}, - color={191,0,0}, - thickness=2), + points={{-80,0},{-60,20}}, + color={191,0,0}, + thickness=2), Polygon( - points={{40,0},{40,40},{70,20},{40,0}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + points={{40,0},{40,40},{70,20},{40,0}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Polygon( - points={{40,-40},{40,0},{70,-20},{40,-40}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + points={{40,-40},{40,0},{70,-20},{40,-40}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Rectangle( - extent={{70,40},{90,-40}}, - lineColor={191,0,0}, - fillColor={191,0,0}, - fillPattern=FillPattern.Solid), + extent={{70,40},{90,-40}}, + lineColor={191,0,0}, + fillColor={191,0,0}, + fillPattern=FillPattern.Solid), Text( - extent={{-134,120},{132,60}}, - textString="%name", + extent={{-134,120},{132,60}}, + textString="%name", lineColor={0,0,255})}), Documentation(info="
@@ -1354,56 +1353,56 @@ in order to simulate temperature dependent losses (which are given an reference rotation=180))); Interfaces.HeatPort_b port annotation (Placement(transformation(extent={{90, -10},{110,10}}, rotation=0))); - equation + equation port.Q_flow = -Q_flow*(1 + alpha*(port.T - T_ref)); end PrescribedHeatFlow; end Sources; - package Sensors "Thermal sensors" + package Sensors "Thermal sensors" extends Modelica.Icons.Library2; - + annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, -100},{100,100}}), graphics={ Ellipse( - extent={{-60,10},{40,-90}}, - lineColor={0,0,0}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), + extent={{-60,10},{40,-90}}, + lineColor={0,0,0}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), Line( - points={{-50,-16},{-36,-25}}, - color={0,0,0}, - fillPattern=FillPattern.Solid), + points={{-50,-16},{-36,-25}}, + color={0,0,0}, + fillPattern=FillPattern.Solid), Line( - points={{-35,0},{-25,-14}}, - color={0,0,0}, - fillPattern=FillPattern.Solid), + points={{-35,0},{-25,-14}}, + color={0,0,0}, + fillPattern=FillPattern.Solid), Line( - points={{-10,7},{-10,-10}}, - color={0,0,0}, - fillPattern=FillPattern.Solid), + points={{-10,7},{-10,-10}}, + color={0,0,0}, + fillPattern=FillPattern.Solid), Line( - points={{15,0},{5,-14}}, - color={0,0,0}, - fillPattern=FillPattern.Solid), + points={{15,0},{5,-14}}, + color={0,0,0}, + fillPattern=FillPattern.Solid), Line( - points={{30,-15},{16,-25}}, - color={0,0,0}, - fillPattern=FillPattern.Solid), + points={{30,-15},{16,-25}}, + color={0,0,0}, + fillPattern=FillPattern.Solid), Ellipse( - extent={{-15,-35},{-5,-45}}, - lineColor={0,0,0}, - fillColor={0,0,0}, - fillPattern=FillPattern.Solid), - Line(points={{-10,-40},{-6,-26}}, color={0,0,0}), + extent={{-15,-35},{-5,-45}}, + lineColor={0,0,0}, + fillColor={0,0,0}, + fillPattern=FillPattern.Solid), + Line(points={{-10,-40},{-6,-26}}, color={0,0,0}), Polygon( - points={{-12,-24},{-0.5,-27},{2,1.5},{-12,-24}}, - lineColor={0,0,0}, - fillColor={0,0,0}, + points={{-12,-24},{-0.5,-27},{2,1.5},{-12,-24}}, + lineColor={0,0,0}, + fillColor={0,0,0}, fillPattern=FillPattern.Solid)}), Documentation(info=" ")); - model TemperatureSensor "Absolute temperature sensor in Kelvin" - + model TemperatureSensor "Absolute temperature sensor in Kelvin" + annotation ( Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics( @@ -1494,12 +1493,12 @@ sensor model. transformation(extent={{90,-10},{110,10}}, rotation=0))); Interfaces.HeatPort_a port annotation (Placement(transformation(extent={{ -110,-10},{-90,10}}, rotation=0))); - equation + equation T = port.T; port.Q_flow = 0; end TemperatureSensor; - - model RelTemperatureSensor "Relative Temperature sensor" + + model RelTemperatureSensor "Relative Temperature sensor" extends Modelica.Icons.TranslationalSensor; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -1542,15 +1541,15 @@ the two ports of this component and is provided as output signal in Kelvin. origin={0,-90}, extent={{10,-10},{-10,10}}, rotation=90))); - equation + equation T_rel = port_a.T - port_b.T; 0 = port_a.Q_flow; 0 = port_b.Q_flow; end RelTemperatureSensor; - - model HeatFlowSensor "Heat flow rate sensor" + + model HeatFlowSensor "Heat flow rate sensor" extends Modelica.Icons.RotationalSensor; - Modelica.Blocks.Interfaces.RealOutput Q_flow + Modelica.Blocks.Interfaces.RealOutput Q_flow "Heat flow from port_a to port_b" annotation (Placement( transformation( origin={0,-100}, @@ -1591,19 +1590,18 @@ to port_b. -110,-10},{-90,10}}, rotation=0))); Interfaces.HeatPort_b port_b annotation (Placement(transformation(extent={{ 90,-10},{110,10}}, rotation=0))); - equation + equation port_a.T = port_b.T; port_a.Q_flow + port_b.Q_flow = 0; Q_flow = port_a.Q_flow; end HeatFlowSensor; end Sensors; - - - package Celsius "Components with Celsius input and/or output" - + + package Celsius "Components with Celsius input and/or output" + extends Modelica.Icons.Library2; - - model ToKelvin "Conversion block from °Celsius to Kelvin" + + model ToKelvin "Conversion block from °Celsius to Kelvin" annotation ( Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics={ @@ -1660,11 +1658,11 @@ and provide is as output signal. Modelica.Blocks.Interfaces.RealOutput Kelvin annotation (Placement(transformation(extent={{100,-10},{120,10}}, rotation=0))); - equation + equation Kelvin = from_degC(Celsius); end ToKelvin; - - model FromKelvin "Conversion from Kelvin to °Celsius" + + model FromKelvin "Conversion from Kelvin to °Celsius" annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ @@ -1721,13 +1719,13 @@ and provides is as output signal. Modelica.Blocks.Interfaces.RealOutput Celsius annotation (Placement(transformation(extent={{100,-10},{120,10}}, rotation=0))); - equation + equation Celsius = to_degC(Kelvin); end FromKelvin; - - model FixedTemperature - "Fixed temperature boundary condition in degree Celsius" - parameter Modelica.SIunits.Conversions.NonSIunits.Temperature_degC T + + model FixedTemperature + "Fixed temperature boundary condition in degree Celsius" + parameter Modelica.SIunits.Conversions.NonSIunits.Temperature_degC T "Fixed Temperature at the port"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -1788,13 +1786,13 @@ i.e., it defines a fixed temperature as a boundary condition. fillPattern=FillPattern.Solid)))); Interfaces.HeatPort_b port annotation (Placement(transformation(extent={{ 90,-10},{110,10}}, rotation=0))); - equation + equation port.T = from_degC(T); end FixedTemperature; - - model PrescribedTemperature - "Variable temperature boundary condition in °Celsius" - + + model PrescribedTemperature + "Variable temperature boundary condition in °Celsius" + annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ @@ -1859,10 +1857,10 @@ as required to keep the temperature at the specified value. 90,-10},{110,10}}, rotation=0))); Modelica.Blocks.Interfaces.RealInput T annotation (Placement( transformation(extent={{-140,-20},{-100,20}}, rotation=0))); - equation + equation port.T = from_degC(T); end PrescribedTemperature; - + annotation (Documentation(info="
The components of this package are provided for the convenience of @@ -1883,11 +1881,11 @@ Example: "), Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, 100}}), graphics={Text( - extent={{38,10},{-62,-90}}, - lineColor={0,0,0}, + extent={{38,10},{-62,-90}}, + lineColor={0,0,0}, textString="°C")})); - model TemperatureSensor "Absolute temperature sensor in °Celsius" - + model TemperatureSensor "Absolute temperature sensor in °Celsius" + annotation ( Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics={ @@ -1978,17 +1976,17 @@ sensor model. transformation(extent={{90,-10},{110,10}}, rotation=0))); Interfaces.HeatPort_a port annotation (Placement(transformation(extent={{ -110,-10},{-90,10}}, rotation=0))); - equation + equation T = to_degC(port.T); port.Q_flow = 0; end TemperatureSensor; end Celsius; - - package Fahrenheit "Components with Fahrenheit input and/or output" - + + package Fahrenheit "Components with Fahrenheit input and/or output" + extends Modelica.Icons.Library2; - - model ToKelvin "Conversion block from °Fahrenheit to Kelvin" + + model ToKelvin "Conversion block from °Fahrenheit to Kelvin" annotation ( Diagram(graphics={ Ellipse( @@ -2043,11 +2041,11 @@ and provides is as output signal. Modelica.Blocks.Interfaces.RealOutput Kelvin annotation (Placement(transformation(extent={{100,-10},{120,10}}, rotation=0))); - equation + equation Kelvin = from_degF(Fahrenheit); end ToKelvin; - - model FromKelvin "Conversion from Kelvin to °Fahrenheit" + + model FromKelvin "Conversion from Kelvin to °Fahrenheit" parameter Integer n=1 "Number of inputs (= number of outputs)"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -2104,13 +2102,13 @@ and provides them as output signals. Modelica.Blocks.Interfaces.RealOutput Fahrenheit annotation (Placement(transformation(extent={{100,-10},{120,10}}, rotation= 0))); - equation + equation Fahrenheit = to_degF(Kelvin); end FromKelvin; - - model FixedTemperature - "Fixed temperature boundary condition in °Fahrenheit" - parameter Modelica.SIunits.Conversions.NonSIunits.Temperature_degF T + + model FixedTemperature + "Fixed temperature boundary condition in °Fahrenheit" + parameter Modelica.SIunits.Conversions.NonSIunits.Temperature_degF T "Fixed Temperature at the port"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -2171,13 +2169,13 @@ i.e., it defines a fixed temperature as a boundary condition. fillPattern=FillPattern.Solid)))); Interfaces.HeatPort_b port annotation (Placement(transformation(extent={{ 90,-10},{110,10}}, rotation=0))); - equation + equation port.T = from_degF(T); end FixedTemperature; - - model PrescribedTemperature - "Variable temperature boundary condition in °Fahrenheit" - + + model PrescribedTemperature + "Variable temperature boundary condition in °Fahrenheit" + annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ @@ -2242,10 +2240,10 @@ as required to keep the temperature at the specified value. Modelica.Blocks.Interfaces.RealInput T annotation (Placement(transformation(extent={{-140,-20},{-100,20}}, rotation=0))); - equation + equation port.T = from_degF(T); end PrescribedTemperature; - + annotation (Documentation(info="
The components of this package are provided for the convenience of @@ -2266,11 +2264,11 @@ Example: "), Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, 100}}), graphics={Text( - extent={{40,10},{-60,-90}}, - lineColor={0,0,0}, + extent={{40,10},{-60,-90}}, + lineColor={0,0,0}, textString="°F")})); - model TemperatureSensor "Absolute temperature sensor in °Fahrenheit" - + model TemperatureSensor "Absolute temperature sensor in °Fahrenheit" + annotation ( Diagram(graphics={ Ellipse( @@ -2360,17 +2358,17 @@ sensor model. transformation(extent={{90,-10},{110,10}}, rotation=0))); Interfaces.HeatPort_a port annotation (Placement(transformation(extent={{ -110,-10},{-90,10}}, rotation=0))); - equation + equation T = to_degF(port.T); port.Q_flow = 0; end TemperatureSensor; end Fahrenheit; - - package Rankine "Components with Rankine input and/or output" - + + package Rankine "Components with Rankine input and/or output" + extends Modelica.Icons.Library2; - - model ToKelvin "Conversion block from °Rankine to Kelvin" + + model ToKelvin "Conversion block from °Rankine to Kelvin" parameter Integer n=1 "Number of inputs (= number of outputs)"; annotation ( Diagram(graphics={ @@ -2427,11 +2425,11 @@ and provides them as output signals. Modelica.Blocks.Interfaces.RealOutput Kelvin annotation (Placement(transformation(extent={{100,-10},{120,10}}, rotation=0))); - equation + equation Kelvin = from_degRk(Rankine); end ToKelvin; - - model FromKelvin "Conversion from Kelvin to °Rankine" + + model FromKelvin "Conversion from Kelvin to °Rankine" parameter Integer n=1 "Number of inputs (= number of outputs)"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -2488,13 +2486,13 @@ and provides them as output signals. Modelica.Blocks.Interfaces.RealOutput Rankine annotation (Placement(transformation(extent={{100,-10},{120,10}}, rotation=0))); - equation + equation Rankine = to_degRk(Kelvin); end FromKelvin; - - model FixedTemperature "Fixed temperature boundary condition in °Rankine" - - parameter Modelica.SIunits.Conversions.NonSIunits.Temperature_degRk T + + model FixedTemperature "Fixed temperature boundary condition in °Rankine" + + parameter Modelica.SIunits.Conversions.NonSIunits.Temperature_degRk T "Fixed Temperature at the port"; annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ @@ -2555,13 +2553,13 @@ This model defines a fixed temperature T at its port in degree Rankine, fillPattern=FillPattern.Solid)))); Interfaces.HeatPort_b port annotation (Placement(transformation(extent={{ 90,-10},{110,10}}, rotation=0))); - equation + equation port.T = from_degRk(T); end FixedTemperature; - - model PrescribedTemperature - "Variable temperature boundary condition in °Rankine" - + + model PrescribedTemperature + "Variable temperature boundary condition in °Rankine" + annotation ( Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={ @@ -2626,7 +2624,7 @@ as required to keep the temperature at the specified value. Modelica.Blocks.Interfaces.RealInput T annotation (Placement(transformation(extent={{-140,-20},{-100,20}}, rotation=0))); - equation + equation port.T = from_degRk(T); end PrescribedTemperature; annotation (Documentation(info=" @@ -2649,11 +2647,11 @@ Example: "), Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, 100}}), graphics={Text( - extent={{40,10},{-60,-90}}, - lineColor={0,0,0}, + extent={{40,10},{-60,-90}}, + lineColor={0,0,0}, textString="°Rk")})); - model TemperatureSensor "Absolute temperature sensor in °Rankine" - + model TemperatureSensor "Absolute temperature sensor in °Rankine" + annotation ( Diagram(graphics={ Ellipse( @@ -2743,30 +2741,30 @@ sensor model. transformation(extent={{90,-10},{110,10}}, rotation=0))); Interfaces.HeatPort_a port annotation (Placement(transformation(extent={{ -110,-10},{-90,10}}, rotation=0))); - equation + equation T = to_degRk(port.T); port.Q_flow = 0; end TemperatureSensor; end Rankine; - package Interfaces "Connectors and partial models" - + package Interfaces "Connectors and partial models" + extends Modelica.Icons.Library2; - - partial connector HeatPort "Thermal port for 1-dim. heat transfer" + + partial connector HeatPort "Thermal port for 1-dim. heat transfer" Modelica.SIunits.Temperature T "Port temperature"; - flow Modelica.SIunits.HeatFlowRate Q_flow + flow Modelica.SIunits.HeatFlowRate Q_flow "Heat flow rate (positive if flowing from outside into the component)"; annotation (Documentation(info=" ")); end HeatPort; - - connector HeatPort_a - "Thermal port for 1-dim. heat transfer (filled rectangular icon)" - + + connector HeatPort_a + "Thermal port for 1-dim. heat transfer (filled rectangular icon)" + extends HeatPort; - + annotation(defaultComponentName = "port_a", Documentation(info="
This connector is used for 1-dimensional heat flow between components. @@ -2784,26 +2782,26 @@ class.
icon layout. "), Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + extent={{-100,100},{100,-100}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid)}), Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics={Rectangle( - extent={{-50,50},{50,-50}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + extent={{-50,50},{50,-50}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid), Text( - extent={{-120,120},{100,60}}, - lineColor={191,0,0}, + extent={{-120,120},{100,60}}, + lineColor={191,0,0}, textString="%name")})); end HeatPort_a; - - connector HeatPort_b - "Thermal port for 1-dim. heat transfer (unfilled rectangular icon)" - + + connector HeatPort_b + "Thermal port for 1-dim. heat transfer (unfilled rectangular icon)" + extends HeatPort; - + annotation(defaultComponentName = "port_b", Documentation(info="This connector is used for 1-dimensional heat flow between components. @@ -2821,28 +2819,28 @@ class.
icon layout. "), Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics={Rectangle( - extent={{-50,50},{50,-50}}, - lineColor={191,0,0}, - fillColor={255,255,255}, + extent={{-50,50},{50,-50}}, + lineColor={191,0,0}, + fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-100,120},{120,60}}, - lineColor={191,0,0}, + extent={{-100,120},{120,60}}, + lineColor={191,0,0}, textString="%name")}), Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{ 100,100}}), graphics={Rectangle( - extent={{-100,100},{100,-100}}, - lineColor={191,0,0}, - fillColor={255,255,255}, + extent={{-100,100},{100,-100}}, + lineColor={191,0,0}, + fillColor={255,255,255}, fillPattern=FillPattern.Solid)})); end HeatPort_b; - - partial model Element1D - "Partial heat transfer element with two HeatPort connectors that does not store energy" - - Modelica.SIunits.HeatFlowRate Q_flow + + partial model Element1D + "Partial heat transfer element with two HeatPort connectors that does not store energy" + + Modelica.SIunits.HeatFlowRate Q_flow "Heat flow rate from port_a -> port_b"; Modelica.SIunits.TemperatureDifference dT "port_a.T - port_b.T"; - public + public HeatPort_a port_a annotation (Placement(transformation(extent={{-110,-10}, {-90,10}}, rotation=0))); HeatPort_b port_b annotation (Placement(transformation(extent={{90,-10},{ @@ -2866,16 +2864,16 @@ constitutive equations for many types of heat transfer components. Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100}, {100,100}}), graphics)); - equation + equation dT = port_a.T - port_b.T; port_a.Q_flow = Q_flow; port_b.Q_flow = -Q_flow; end Element1D; annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100, -100},{100,100}}), graphics={Rectangle( - extent={{-60,10},{40,-90}}, - lineColor={191,0,0}, - fillColor={191,0,0}, + extent={{-60,10},{40,-90}}, + lineColor={191,0,0}, + fillColor={191,0,0}, fillPattern=FillPattern.Solid)}), Documentation(info=" diff --git a/Modelica/Utilities/package.mo b/Modelica/Utilities/package.mo index c206c61551..0026601731 100644 --- a/Modelica/Utilities/package.mo +++ b/Modelica/Utilities/package.mo @@ -213,6 +213,7 @@ end UsersGuide; // Temporarily removed "protected" since this gives warning in the // newest Dymola release // protected + package Internal "Internal package as interface to the operating system" extends Modelica.Icons.Library; annotation (