Changeset 1073 for trunk

Show
Ignore:
Timestamp:
02/26/08 09:21:13 (6 months ago)
Author:
dietmarw
Message:

* special symbols where encoded in UTF-8 by mistake during the last commit
* also corrected some Umlauts to HTML entities when present in the HTML environment

Location:
trunk/Modelica
Files:
8 modified

Legend:

Unmodified
Added
Removed
  • trunk/Modelica/Blocks/package.mo

    r1072 r1073  
    88 
    99annotation ( 
    10   Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}),  
     10  Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), 
    1111      graphics={ 
    1212      Rectangle(extent={{-32,-6},{16,-35}}, lineColor={0,0,0}), 
     
    4444<i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified 
    4545under the terms of the <b>Modelica license</b>, see the license conditions 
    46 and the accompanying <b>disclaimer</b>  
     46and the accompanying <b>disclaimer</b> 
    4747<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i> 
    4848</p> 
     
    108108      initType=Modelica.Blocks.Types.Init.SteadyState, 
    109109      limitsAtInit=false, 
    110       controllerType=Modelica.Blocks.Types.SimpleController.PI)  
     110      controllerType=Modelica.Blocks.Types.SimpleController.PI) 
    111111      annotation (Placement(transformation(extent={{-56,-20},{-36,0}}, rotation= 
    112112             0))); 
     
    158158 
    159159<li> The output of the controller is a torque that drives a motor inertia 
    160      \"inertia1\". Via a complᅵiant spring/damper component, the load 
     160     \"inertia1\". Via a compliant spring/damper component, the load 
    161161     inertia \"inertia2\" is attached. A constant external torque of 10 Nm 
    162162     is acting on the load inertia.</li> 
     
    166166The PI controller settings included \"limitAtInit=false\", in order that 
    167167the controller output limits of 12 Nm are removed from the initialization 
    168 problem.  
     168problem. 
    169169</p> 
    170170 
     
    204204</html>")); 
    205205 
    206     Modelica.Mechanics.Rotational.Sources.Torque torque  
     206    Modelica.Mechanics.Rotational.Sources.Torque torque 
    207207      annotation (Placement(transformation(extent={{-25,-20},{-5,0}}, rotation= 
    208208              0))); 
     
    210210                                                      c=1e4, d=100, 
    211211      stateSelect=StateSelect.prefer, 
    212       w_rel(fixed=true))  
     212      w_rel(fixed=true)) 
    213213      annotation (Placement(transformation(extent={{32,-20},{52,0}}, rotation=0))); 
    214214    Modelica.Mechanics.Rotational.Components.Inertia inertia2( 
    215                                                    J=2)  
     215                                                   J=2) 
    216216      annotation (Placement(transformation(extent={{60,-20},{80,0}}, rotation=0))); 
    217217    Modelica.Blocks.Sources.KinematicPTP kinematicPTP(startTime=0.5, deltaq={ 
     
    223223          Types.Init.InitialState) annotation (Placement(transformation(extent= 
    224224              {{-63,20},{-43,40}}, rotation=0))); 
    225     Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor  
     225    Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor 
    226226      annotation (Placement(transformation(extent={{22,-50},{2,-30}}, rotation= 
    227227              0))); 
    228228    Modelica.Mechanics.Rotational.Sources.ConstantTorque loadTorque( 
    229229                                                            tau_constant=10, 
    230         useSupport=false)  
     230        useSupport=false) 
    231231      annotation (Placement(transformation(extent={{98,-15},{88,-5}}, rotation= 
    232232              0))); 
     
    234234    der(spring.w_rel) = 0; 
    235235  equation 
    236     connect(spring.flange_b,inertia2. flange_a)  
     236    connect(spring.flange_b,inertia2. flange_a) 
    237237      annotation (Line(points={{52,-10},{60,-10}}, color={0,0,0})); 
    238     connect(inertia1.flange_b, spring.flange_a)  
     238    connect(inertia1.flange_b, spring.flange_a) 
    239239      annotation (Line(points={{22,-10},{32,-10}}, color={0,0,0})); 
    240     connect(torque.flange, inertia1.flange_a)  
     240    connect(torque.flange, inertia1.flange_a) 
    241241      annotation (Line(points={{-5,-10},{2,-10}}, color={0,0,0})); 
    242242    connect(kinematicPTP.y[1], integrator.u) annotation (Line(points={{-71,30}, 
    243243            {-65,30}}, color={0,0,127})); 
    244     connect(speedSensor.flange, inertia1.flange_b)  
     244    connect(speedSensor.flange, inertia1.flange_b) 
    245245      annotation (Line(points={{22,-40},{22,-10}}, color={0,0,0})); 
    246     connect(loadTorque.flange, inertia2.flange_b)  
     246    connect(loadTorque.flange, inertia2.flange_b) 
    247247      annotation (Line(points={{88,-10},{80,-10}}, color={0,0,0})); 
    248248    connect(PI.y, torque.tau)  annotation (Line(points={{-35,-10},{-27,-10}}, 
     
    271271<p> 
    272272This example demonstrates how to construct an inverse model in Modelica 
    273 (for more details see <a href=\"http://www.modelica.org/events/Conference2005/online_proceedings/Session3/Session3c3.pdf\">Looye, Thᅵmmel, Kurze, Otter, Bals: Nonlinear Inverse Models for Control</a>). 
     273(for more details see <a href=\"http://www.modelica.org/events/Conference2005/online_proceedings/Session3/Session3c3.pdf\">Looye, Th&uuml;mmel, Kurze, Otter, Bals: Nonlinear Inverse Models for Control</a>). 
    274274</p> 
    275275 
     
    295295numerator polynomial n(s) (which is usually the case for plant models), 
    296296then the inverse model is no longer proper, i.e., it is not causal. 
    297 To avoid this, an approximate inverse model is constructed by adding  
     297To avoid this, an approximate inverse model is constructed by adding 
    298298a sufficient number of poles to the denominator of the inverse model. 
    299299This can be interpreted as filtering the desired output signal y: 
     
    323323For this, the sine signal \"sin\" is first filtered with a \"CriticalDamping\" 
    324324filter of order 1 and then the output of this filter is connected to the output 
    325 of the \"firstOrder1\" block (via the InverseBlockConstraints block, since  
     325of the \"firstOrder1\" block (via the InverseBlockConstraints block, since 
    3263262 outputs cannot be connected directly together in a block diagram). 
    327327</p> 
     
    330330In order to check the inversion, the computed input of \"firstOrder1\" is used 
    331331as input in an identical block \"firstOrder2\". The output of \"firstOrder2\" should 
    332 be the given \"sine\" function. The difference is constructed with the \"feedback\"  
     332be the given \"sine\" function. The difference is constructed with the \"feedback\" 
    333333block. Since the \"sine\" function is filtered, one cannot expect that this difference 
    334 is zero. The higher the cut-off frequency of the filter, the closer is the  
     334is zero. The higher the cut-off frequency of the filter, the closer is the 
    335335agreement. A typical simulation result is shown in the next figure: 
    336336</p> 
     
    386386    "Demonstrates the usage of logical sources together with their diagram animation" 
    387387       extends Modelica.Icons.Example; 
    388        Sources.BooleanTable table(table={2,4,6,8})  
     388       Sources.BooleanTable table(table={2,4,6,8}) 
    389389                                       annotation (Placement(transformation( 
    390390            extent={{-60,-100},{-40,-80}}, rotation=0))); 
     
    401401      Documentation(info="<html> 
    402402<p> 
    403 This simple example demonstrates the logical sources in  
     403This simple example demonstrates the logical sources in 
    404404<a href=\"Modelica://Modelica.Blocks.Sources\">Modelica.Blocks.Sources</a> and demonstrate 
    405405their diagram animation (see \"small circle\" close to the output connector). 
     
    415415            extent={{-60,-60},{-40,-40}}, rotation=0))); 
    416416      Sources.BooleanExpression booleanExpression( 
    417                                                 y=pulse.y and step.y)  
     417                                                y=pulse.y and step.y) 
    418418      annotation (Placement(transformation(extent={{20,20},{80,40}}, rotation=0))); 
    419419     end ShowLogicalSources; 
     
    515515In <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces\">Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces</a> 
    516516the buses for this example are defined. Both the \"ControlBus\" and the \"SubControlBus\" are 
    517 <b>expandable</b> connectors that do not define any variable. For example,  
     517<b>expandable</b> connectors that do not define any variable. For example, 
    518518<a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces.ControlBus#text\">Interfaces.ControlBus</a> 
    519519is defined as: 
     
    521521<pre>  <b>expandable connector</b> ControlBus 
    522522      <b>extends</b> Modelica.Icons.ControlBus; 
    523       <b>annotation</b> (Icon(Rectangle(extent=[-20, 2; 22, -2],  
     523      <b>annotation</b> (Icon(Rectangle(extent=[-20, 2; 22, -2], 
    524524                       style(rgbcolor={255,204,51}, thickness=0.5)))); 
    525525  <b>end</b> ControlBus; 
     
    527527<p> 
    528528Note, the \"annotation\" in the connector is important since the color 
    529 and thickness of a connector line are taken from the first  
     529and thickness of a connector line are taken from the first 
    530530line element in the icon annotation of a connector class. Above, a small rectangle in the 
    531531color of the bus is defined (and therefore this rectangle is not 
     
    547547 
    548548<p> 
    549 The \"Add variable/New name\" field allows the user to define the name of the signal on  
     549The \"Add variable/New name\" field allows the user to define the name of the signal on 
    550550the \"controlBus\". When typing \"realSignal1\" as \"New name\", a connection of the form: 
    551551</p> 
     
    556556<p> 
    557557is generated and the \"controlBus\" contains the new signal \"realSignal1\". Modelica tools 
    558 may give more support in order to list potential signals for a connection.  
     558may give more support in order to list potential signals for a connection. 
    559559For example, in Dymola all variables are listed in the menu that are contained in 
    560560connectors which are derived by inheritance from \"controlBus\". Therefore, in 
     
    564564</p> 
    565565 
    566 <pre>  <b>expandable connector</b> StandardControlBus  
     566<pre>  <b>expandable connector</b> StandardControlBus 
    567567    <b>extends</b> BusUsage_Utilities.Interfaces.ControlBus; 
    568    
     568 
    569569    <b>import</b> SI = Modelica.SIunits; 
    570570    SI.AngularVelocity    realSignal1   \"First Real signal\"; 
     
    598598      startTime=0.5)   annotation (Placement(transformation(extent={{-60,-40},{ 
    599599              -40,-20}}, rotation=0))); 
    600     Modelica.Blocks.Sources.BooleanStep booleanStep(startTime=0.5)  
     600    Modelica.Blocks.Sources.BooleanStep booleanStep(startTime=0.5) 
    601601                                                               annotation (Placement( 
    602602          transformation(extent={{-58,0},{-38,20}}, rotation=0))); 
    603     Modelica.Blocks.Sources.Sine sine  
     603    Modelica.Blocks.Sources.Sine sine 
    604604                                     annotation (Placement(transformation( 
    605605            extent={{-60,40},{-40,60}}, rotation=0))); 
    606606 
    607     Modelica.Blocks.Examples.BusUsage_Utilities.Part part  
     607    Modelica.Blocks.Examples.BusUsage_Utilities.Part part 
    608608              annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}, 
    609609            rotation=0))); 
    610     Modelica.Blocks.Math.Gain gain  
     610    Modelica.Blocks.Math.Gain gain 
    611611      annotation (Placement(transformation(extent={{-40,70},{-60,90}}, rotation= 
    612612             0))); 
    613613  protected 
    614     BusUsage_Utilities.Interfaces.ControlBus controlBus  
     614    BusUsage_Utilities.Interfaces.ControlBus controlBus 
    615615      annotation (Placement(transformation( 
    616616          origin={30,10}, 
     
    670670<p> 
    671671This connector defines the \"expandable connector\" ControlBus that 
    672 is used as bus in the  
     672is used as bus in the 
    673673<a href=\"Modelica://Modelica.Blocks.Examples.BusUsage\">BusUsage</a> example. 
    674674Note, this connector is \"empty\". When using it, the actual content is 
     
    692692<p> 
    693693This connector defines the \"expandable connector\" SubControlBus that 
    694 is used as sub-bus in the  
     694is used as sub-bus in the 
    695695<a href=\"Modelica://Modelica.Blocks.Examples.BusUsage\">BusUsage</a> example. 
    696696Note, this connector is \"empty\". When using it, the actual content is 
     
    724724<p> 
    725725This connector is used to show default signals that might be added 
    726 to the  
     726to the 
    727727<a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces.ControlBus\">ControlBus</a>. 
    728728</p> 
     
    747747<p> 
    748748This connector is used to show default signals that might be added 
    749 to the  
     749to the 
    750750<a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces.SubControlBus\">SubControlBus</a>. 
    751751</p> 
     
    758758The bus definitions in this package are the default definitions shown in the 
    759759bus menu when connecting a signal to an expandable connector (here: ControlBus 
    760 or SubControlBus). Usually, the connectors of this package should not be  
     760or SubControlBus). Usually, the connectors of this package should not be 
    761761utilized by a user. 
    762762</p> 
     
    795795</p> 
    796796</html>")); 
    797      Interfaces.SubControlBus subControlBus  
     797     Interfaces.SubControlBus subControlBus 
    798798       annotation (Placement(transformation( 
    799799            origin={100,0}, 
    800800            extent={{-20,-20},{20,20}}, 
    801801            rotation=270))); 
    802      Sources.RealExpression realExpression(y=time)  
     802     Sources.RealExpression realExpression(y=time) 
    803803       annotation (Placement(transformation(extent={{-6,0},{20,20}}, rotation=0))); 
    804      Sources.BooleanExpression booleanExpression(y=time > 0.5)  
     804     Sources.BooleanExpression booleanExpression(y=time > 0.5) 
    805805       annotation (Placement(transformation(extent={{-6,-30},{20,-10}}, 
    806806              rotation=0))); 
  • trunk/Modelica/Electrical/Digital.mo

    r1072 r1073  
    43954395      parameter Real value_L(start=0) "value for digital L (Weak    0)"; 
    43964396      parameter Real value_H(start=1) "value for digital H (Weak    1)"; 
    4397       parameter Real value_m(start=0.5) "value for digital m (Donᅵt care)"; 
     4397      parameter Real value_m(start=0.5) "value for digital m (DonŽt care)"; 
    43984398      annotation (Documentation(info="<HTML> 
    43994399<P> 
  • trunk/Modelica/Mechanics/MultiBody/package.mo

    r1072 r1073  
    16163-dimensional mechanical components to model in a convenient way 
    1717<b>mechanical systems</b>, such as robots, mechanisms, vehicles. 
    18 Typical animations generated with this library are shown  
     18Typical animations generated with this library are shown 
    1919in the next figure: 
    2020</p> 
     
    3838<i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified 
    3939under the terms of the <b>Modelica license</b>, see the license conditions 
    40 and the accompanying <b>disclaimer</b>  
     40and the accompanying <b>disclaimer</b> 
    4141<a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i> 
    4242</p><br> 
     
    9898</li> 
    9999<li> 
    100 <a href=\"Modelica://Modelica.Mechanics.MultiBody.UsersGuide.Tutorial.FirstExample\">A first example</a>  
     100<a href=\"Modelica://Modelica.Mechanics.MultiBody.UsersGuide.Tutorial.FirstExample\">A first example</a> 
    101101  describes in detail all the steps to build a simple pendulum model. 
    102102</li> 
     
    334334<p> 
    335335In principal, now special action is needed, if 
    336 loop structures occur (contrary to the ModelicaAdditions.MultiBody library).  
    337 An example is presented in the figure below. It is available as  
     336loop structures occur (contrary to the ModelicaAdditions.MultiBody library). 
     337An example is presented in the figure below. It is available as 
    338338<a href=\"Modelica://Modelica.Mechanics.MultiBody.Examples.Loops.Fourbar1\"> 
    339339MultiBody.Examples.Loops.Fourbar1</a> 
     
    343343</p> 
    344344<p> 
    345 This mechanism consists of 6 revolute joints, 1 prismatic joint and forms a  
    346 kinematical loop.  
    347 It has has one degree of freedom. In the next figure the default animation  
    348 is shown. Note, that the axes of the revolute joints are represented by the  
    349 red cylinders and that the axis of the prismatic joint is represented by the  
    350 red box on the lower right side.  
     345This mechanism consists of 6 revolute joints, 1 prismatic joint and forms a 
     346kinematical loop. 
     347It has has one degree of freedom. In the next figure the default animation 
     348is shown. Note, that the axes of the revolute joints are represented by the 
     349red cylinders and that the axis of the prismatic joint is represented by the 
     350red box on the lower right side. 
    351351</p> 
    352352<p align=\"center\"> 
     
    354354</p> 
    355355<p> 
    356 Whenever loop structures occur, non-linear algebraic  
    357 equations are present on \"position level\". It is then usually not possible by  
    358 structural analysis to select states during translation (which is possible for  
    359 non-loop structures). In the example above, Dymola detects a non-linear  
    360 algebraic loop of 57 equations and reduces this to a system of 7 coupled  
    361 algebraic equations. Note, that this is performed without using any  
    362 \"cut-joints\" as it is usually done in multi-body programs, but by just  
    363 appropriate symbolic equation manipulation. Via the dynamic dummy derivative  
    364 method the generalized coordinates on position and velocity level from one of  
    365 the 7 joints are dynamically selected as states during simulation. Whenever,  
    366 these two states are no longer appropriate, states from one of the other  
     356Whenever loop structures occur, non-linear algebraic 
     357equations are present on \"position level\". It is then usually not possible by 
     358structural analysis to select states during translation (which is possible for 
     359non-loop structures). In the example above, Dymola detects a non-linear 
     360algebraic loop of 57 equations and reduces this to a system of 7 coupled 
     361algebraic equations. Note, that this is performed without using any 
     362\"cut-joints\" as it is usually done in multi-body programs, but by just 
     363appropriate symbolic equation manipulation. Via the dynamic dummy derivative 
     364method the generalized coordinates on position and velocity level from one of 
     365the 7 joints are dynamically selected as states during simulation. Whenever, 
     366these two states are no longer appropriate, states from one of the other 
    367367joints are selected during simulation. 
    368368</p> 
    369369<p> 
    370 The efficiency of loop structures can usually be  
    371 enhanced, if states are statically fixed at translation time. For this  
    372 mechanism, the generalized coordinates of joint j1 (i.e., the  
    373 rotation angle of the revolute joint and its derivative) can always be used as  
    374 states. This can be stated by setting parameter \"enforceStates = <b>true</b>\"  
    375 in the \"Advanced\" menu of the desired joint. This flag sets the attribute  
    376 stateSelect of the generalized coordinates of the coresponding joint to  
    377 \"StateSelect.always\". When setting this flag to <b>true</b> for joint j1 in  
    378 the four bar mechanism, Dymola detects a non-linear algebraic loop of 40  
    379 equations and reduces this to a system of 5 coupled non-linear algebraic  
     370The efficiency of loop structures can usually be 
     371enhanced, if states are statically fixed at translation time. For this 
     372mechanism, the generalized coordinates of joint j1 (i.e., the 
     373rotation angle of the revolute joint and its derivative) can always be used as 
     374states. This can be stated by setting parameter \"enforceStates = <b>true</b>\" 
     375in the \"Advanced\" menu of the desired joint. This flag sets the attribute 
     376stateSelect of the generalized coordinates of the coresponding joint to 
     377\"StateSelect.always\". When setting this flag to <b>true</b> for joint j1 in 
     378the four bar mechanism, Dymola detects a non-linear algebraic loop of 40 
     379equations and reduces this to a system of 5 coupled non-linear algebraic 
    380380equations. 
    381381</p> 
     
    384384equations analytically. For a certain class of systems this can 
    385385be performed also with the MultiBody library. This technique 
    386 is described in section  
     386is described in section 
    387387\"<a href=\"AnalyticLoopHandling\">Analytic loop handling</a>\". 
    388388</p> 
     
    394394        annotation (Documentation(info="<HTML> 
    395395<p> 
    396 In the figure below, the model of a V6 engine is  
    397 shown that has a simple combustion model. It is available as  
     396In the figure below, the model of a V6 engine is 
     397shown that has a simple combustion model. It is available as 
    398398<a href=\"Modelica://Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6\"> 
    399 MultiBody.Examples.Loops.EngineV6</a>.  
     399MultiBody.Examples.Loops.EngineV6</a>. 
    400400</p> 
    401401<p align=\"center\"> 
     
    403403</p> 
    404404<p> 
    405 The Modelica schematic of one cylinder  
    406 is given in the figure below. Connecting 6 instances of this  
     405The Modelica schematic of one cylinder 
     406is given in the figure below. Connecting 6 instances of this 
    407407cylinder appropriately together results in the engine schematic displayed 
    408408above. 
     
    412412</p> 
    413413<p> 
    414 In the next figure the animation of the engine is  
    415 shown. Every cylinder consists essentially of 1 prismatic and 2 revolute  
    416 joints that form a planar loop, since the axes of the two revolute joints are  
    417 parallel to each other and the axis of the prismatic joint is orthogonal to  
    418 the revolute joint axes. All 6 cylinders together form a coupled set of 6  
    419 loops that have together 1 degree of freedom.  
     414In the next figure the animation of the engine is 
     415shown. Every cylinder consists essentially of 1 prismatic and 2 revolute 
     416joints that form a planar loop, since the axes of the two revolute joints are 
     417parallel to each other and the axis of the prismatic joint is orthogonal to 
     418the revolute joint axes. All 6 cylinders together form a coupled set of 6 
     419loops that have together 1 degree of freedom. 
    420420</p> 
    421421<p align=\"center\"> 
     
    423423</p> 
    424424<p> 
    425 All planar loops, and especially the engine, result in  
     425All planar loops, and especially the engine, result in 
    426426a DAE (= Differential-Algebraic Equation system) 
    427 that does not have a unique solution. The reason is that, e.g., the cut  
    428 forces in direction of the axes of the revolute joints cannot be uniquely  
    429 computed. Any value fulfills the DAE equations. This is a structural property  
    430 that is determined by the symbolic algorithms. Since they detect that the DAE is  
    431 structurally singular, a further processing is not possible. Without  
    432 additional information it is also impossible that the symbolic algorithms  
    433 could be enhanced because if the axes of rotations of the revolute joints are  
    434 only slightly changed such that they are no longer parallel to each other, the  
    435 planar loop can no longer move and has 0 degrees of freedom. Algorithms based  
    436 on pure structural information cannot distinguish these two cases.  
    437 </p> 
    438 <p> 
    439 The usual remedy is to remove superfluous constraints,  
    440 e.g., along the axis of rotation of <b>one</b> revolute joint. Since this is  
     427that does not have a unique solution. The reason is that, e.g., the cut 
     428forces in direction of the axes of the revolute joints cannot be uniquely 
     429computed. Any value fulfills the DAE equations. This is a structural property 
     430that is determined by the symbolic algorithms. Since they detect that the DAE is 
     431structurally singular, a further processing is not possible. Without 
     432additional information it is also impossible that the symbolic algorithms 
     433could be enhanced because if the axes of rotations of the revolute joints are 
     434only slightly changed such that they are no longer parallel to each other, the 
     435planar loop can no longer move and has 0 degrees of freedom. Algorithms based 
     436on pure structural information cannot distinguish these two cases. 
     437</p> 
     438<p> 
     439The usual remedy is to remove superfluous constraints, 
     440e.g., along the axis of rotation of <b>one</b> revolute joint. Since this is 
    441441not easy for an inexperienced modeler, the special joint: 
    442442<a href=\"Modelica://Modelica.Mechanics.MultiBody.Joints.RevolutePlanarLoopConstraint\"> 
    443 RevolutePlanarLoopConstraint</a> is provided that removes these constraints.  
     443RevolutePlanarLoopConstraint</a> is provided that removes these constraints. 
    444444Exactly one revolute joint in a every planar loop must be replaced by this 
    445445joint type. In the engine example, this special joinst is used for 
     
    448448</p> 
    449449<p> 
    450 If a modeler is not aware of the problems with planar  
     450If a modeler is not aware of the problems with planar 
    451451loops and models them without special consideration, a Modelica 
    452 translator, such as Dymola, displays an error  
    453 message and points out that a planar loop may be the reason and suggests to  
     452translator, such as Dymola, displays an error 
     453message and points out that a planar loop may be the reason and suggests to 
    454454use the RevolutePlanarLoopConstraint joint. 
    455 This error message is due to an annotation in  
     455This error message is due to an annotation in 
    456456the Frame connector. 
    457457</p> 
     
    463463</pre> 
    464464<p> 
    465 If no assignment can be found for some  
    466 forces in a connector, the \"unassignedMessage\" is displayed. In most cases the  
    467 reason for this is a planar loop or two joints that constrain the same motion.  
     465If no assignment can be found for some 
     466forces in a connector, the \"unassignedMessage\" is displayed. In most cases the 
     467reason for this is a planar loop or two joints that constrain the same motion. 
    468468Both cases are discussed in the error message. 
    469469</p> 
    470470<p> 
    471 Note, that the non-linear algebraic equations occurring  
    472 in planar loops can be solved analytically in most cases and therefore it is  
     471Note, that the non-linear algebraic equations occurring 
     472in planar loops can be solved analytically in most cases and therefore it is 
    473473highly recommended to use the techniques discussed in section 
    474474\"<a href=\"AnalyticLoopHandling\">Analytic loop handling</a>\" 
     
    481481 
    482482        annotation (Documentation(info="<HTML> 
    483 It is well known that the non-linear  
    484 algebraic equations of most mechanical loops in technical devices can be  
    485 solved analytically. It is, however, difficult to perform this fully  
    486 automatically and therefore none of the commercial, general purpose multi-body  
    487 programs, such as MSC ADAMS, LMS DADS, SIMPACK, have this feature.  
    488 These programs solve loop structures with pure numerical methods. Multi-body  
    489 programs that are designed for real-time simulation of the dynamics of  
    490 specific vehicles, such as ve-DYNA, usually contain manual implementations  
    491 of a particular multi-body system (the vehicle) where the occurring loops are  
    492 either analytically solved, if this is possible, or are treated by table  
    493 look-up where the tables are constructed in a pre-processing phase. Without  
    494 these features the required real-time capability would be difficult to  
     483It is well known that the non-linear 
     484algebraic equations of most mechanical loops in technical devices can be 
     485solved analytically. It is, however, difficult to perform this fully 
     486automatically and therefore none of the commercial, general purpose multi-body 
     487programs, such as MSC ADAMS, LMS DADS, SIMPACK, have this feature. 
     488These programs solve loop structures with pure numerical methods. Multi-body 
     489programs that are designed for real-time simulation of the dynamics of 
     490specific vehicles, such as ve-DYNA, usually contain manual implementations 
     491of a particular multi-body system (the vehicle) where the occurring loops are 
     492either analytically solved, if this is possible, or are treated by table 
     493look-up where the tables are constructed in a pre-processing phase. Without 
     494these features the required real-time capability would be difficult to 
    495495achieve. 
    496496</p> 
     
    499499Prof. Hiller and his group in Duisburg, Germany, 
    500500have developed systematic methods to handle mechanical 
    501 loops analytically. The \"characteristic pair of joints\" method  
    502 basically cuts a loop at two joints and uses geometric  
    503 invariants to reduce the number of algebraic  
    504 equations, often down to one equation that can be solved analytically. Also  
    505 several multi-body codes have been developed that are based on this method,  
    506 e.g., MOBILE. Besides the very desired feature to solve non-linear  
    507 algebraic equations analytically, i.e., effic