- Timestamp:
- 02/26/08 09:21:13 (6 months ago)
- Location:
- trunk/Modelica
- Files:
-
- 8 modified
-
Blocks/package.mo (modified) (29 diffs)
-
Electrical/Digital.mo (modified) (1 diff)
-
Mechanics/MultiBody/package.mo (modified) (43 diffs)
-
Media/package.mo (modified) (1 diff)
-
SIunits.mo (modified) (10 diffs)
-
Thermal/FluidHeatFlow.mo (modified) (1 diff)
-
Thermal/HeatTransfer.mo (modified) (44 diffs)
-
package.mo (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Modelica/Blocks/package.mo
r1072 r1073 8 8 9 9 annotation ( 10 Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), 10 Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{100,100}}), 11 11 graphics={ 12 12 Rectangle(extent={{-32,-6},{16,-35}}, lineColor={0,0,0}), … … 44 44 <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified 45 45 under the terms of the <b>Modelica license</b>, see the license conditions 46 and the accompanying <b>disclaimer</b> 46 and the accompanying <b>disclaimer</b> 47 47 <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i> 48 48 </p> … … 108 108 initType=Modelica.Blocks.Types.Init.SteadyState, 109 109 limitsAtInit=false, 110 controllerType=Modelica.Blocks.Types.SimpleController.PI) 110 controllerType=Modelica.Blocks.Types.SimpleController.PI) 111 111 annotation (Placement(transformation(extent={{-56,-20},{-36,0}}, rotation= 112 112 0))); … … 158 158 159 159 <li> The output of the controller is a torque that drives a motor inertia 160 \"inertia1\". Via a compl ᅵiant spring/damper component, the load160 \"inertia1\". Via a compliant spring/damper component, the load 161 161 inertia \"inertia2\" is attached. A constant external torque of 10 Nm 162 162 is acting on the load inertia.</li> … … 166 166 The PI controller settings included \"limitAtInit=false\", in order that 167 167 the controller output limits of 12 Nm are removed from the initialization 168 problem. 168 problem. 169 169 </p> 170 170 … … 204 204 </html>")); 205 205 206 Modelica.Mechanics.Rotational.Sources.Torque torque 206 Modelica.Mechanics.Rotational.Sources.Torque torque 207 207 annotation (Placement(transformation(extent={{-25,-20},{-5,0}}, rotation= 208 208 0))); … … 210 210 c=1e4, d=100, 211 211 stateSelect=StateSelect.prefer, 212 w_rel(fixed=true)) 212 w_rel(fixed=true)) 213 213 annotation (Placement(transformation(extent={{32,-20},{52,0}}, rotation=0))); 214 214 Modelica.Mechanics.Rotational.Components.Inertia inertia2( 215 J=2) 215 J=2) 216 216 annotation (Placement(transformation(extent={{60,-20},{80,0}}, rotation=0))); 217 217 Modelica.Blocks.Sources.KinematicPTP kinematicPTP(startTime=0.5, deltaq={ … … 223 223 Types.Init.InitialState) annotation (Placement(transformation(extent= 224 224 {{-63,20},{-43,40}}, rotation=0))); 225 Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor 225 Modelica.Mechanics.Rotational.Sensors.SpeedSensor speedSensor 226 226 annotation (Placement(transformation(extent={{22,-50},{2,-30}}, rotation= 227 227 0))); 228 228 Modelica.Mechanics.Rotational.Sources.ConstantTorque loadTorque( 229 229 tau_constant=10, 230 useSupport=false) 230 useSupport=false) 231 231 annotation (Placement(transformation(extent={{98,-15},{88,-5}}, rotation= 232 232 0))); … … 234 234 der(spring.w_rel) = 0; 235 235 equation 236 connect(spring.flange_b,inertia2. flange_a) 236 connect(spring.flange_b,inertia2. flange_a) 237 237 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) 239 239 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) 241 241 annotation (Line(points={{-5,-10},{2,-10}}, color={0,0,0})); 242 242 connect(kinematicPTP.y[1], integrator.u) annotation (Line(points={{-71,30}, 243 243 {-65,30}}, color={0,0,127})); 244 connect(speedSensor.flange, inertia1.flange_b) 244 connect(speedSensor.flange, inertia1.flange_b) 245 245 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) 247 247 annotation (Line(points={{88,-10},{80,-10}}, color={0,0,0})); 248 248 connect(PI.y, torque.tau) annotation (Line(points={{-35,-10},{-27,-10}}, … … 271 271 <p> 272 272 This 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ümmel, Kurze, Otter, Bals: Nonlinear Inverse Models for Control</a>). 274 274 </p> 275 275 … … 295 295 numerator polynomial n(s) (which is usually the case for plant models), 296 296 then 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 297 To avoid this, an approximate inverse model is constructed by adding 298 298 a sufficient number of poles to the denominator of the inverse model. 299 299 This can be interpreted as filtering the desired output signal y: … … 323 323 For this, the sine signal \"sin\" is first filtered with a \"CriticalDamping\" 324 324 filter 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 325 of the \"firstOrder1\" block (via the InverseBlockConstraints block, since 326 326 2 outputs cannot be connected directly together in a block diagram). 327 327 </p> … … 330 330 In order to check the inversion, the computed input of \"firstOrder1\" is used 331 331 as input in an identical block \"firstOrder2\". The output of \"firstOrder2\" should 332 be the given \"sine\" function. The difference is constructed with the \"feedback\" 332 be the given \"sine\" function. The difference is constructed with the \"feedback\" 333 333 block. 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 334 is zero. The higher the cut-off frequency of the filter, the closer is the 335 335 agreement. A typical simulation result is shown in the next figure: 336 336 </p> … … 386 386 "Demonstrates the usage of logical sources together with their diagram animation" 387 387 extends Modelica.Icons.Example; 388 Sources.BooleanTable table(table={2,4,6,8}) 388 Sources.BooleanTable table(table={2,4,6,8}) 389 389 annotation (Placement(transformation( 390 390 extent={{-60,-100},{-40,-80}}, rotation=0))); … … 401 401 Documentation(info="<html> 402 402 <p> 403 This simple example demonstrates the logical sources in 403 This simple example demonstrates the logical sources in 404 404 <a href=\"Modelica://Modelica.Blocks.Sources\">Modelica.Blocks.Sources</a> and demonstrate 405 405 their diagram animation (see \"small circle\" close to the output connector). … … 415 415 extent={{-60,-60},{-40,-40}}, rotation=0))); 416 416 Sources.BooleanExpression booleanExpression( 417 y=pulse.y and step.y) 417 y=pulse.y and step.y) 418 418 annotation (Placement(transformation(extent={{20,20},{80,40}}, rotation=0))); 419 419 end ShowLogicalSources; … … 515 515 In <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces\">Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces</a> 516 516 the 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, 518 518 <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces.ControlBus#text\">Interfaces.ControlBus</a> 519 519 is defined as: … … 521 521 <pre> <b>expandable connector</b> ControlBus 522 522 <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], 524 524 style(rgbcolor={255,204,51}, thickness=0.5)))); 525 525 <b>end</b> ControlBus; … … 527 527 <p> 528 528 Note, the \"annotation\" in the connector is important since the color 529 and thickness of a connector line are taken from the first 529 and thickness of a connector line are taken from the first 530 530 line element in the icon annotation of a connector class. Above, a small rectangle in the 531 531 color of the bus is defined (and therefore this rectangle is not … … 547 547 548 548 <p> 549 The \"Add variable/New name\" field allows the user to define the name of the signal on 549 The \"Add variable/New name\" field allows the user to define the name of the signal on 550 550 the \"controlBus\". When typing \"realSignal1\" as \"New name\", a connection of the form: 551 551 </p> … … 556 556 <p> 557 557 is 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. 558 may give more support in order to list potential signals for a connection. 559 559 For example, in Dymola all variables are listed in the menu that are contained in 560 560 connectors which are derived by inheritance from \"controlBus\". Therefore, in … … 564 564 </p> 565 565 566 <pre> <b>expandable connector</b> StandardControlBus 566 <pre> <b>expandable connector</b> StandardControlBus 567 567 <b>extends</b> BusUsage_Utilities.Interfaces.ControlBus; 568 568 569 569 <b>import</b> SI = Modelica.SIunits; 570 570 SI.AngularVelocity realSignal1 \"First Real signal\"; … … 598 598 startTime=0.5) annotation (Placement(transformation(extent={{-60,-40},{ 599 599 -40,-20}}, rotation=0))); 600 Modelica.Blocks.Sources.BooleanStep booleanStep(startTime=0.5) 600 Modelica.Blocks.Sources.BooleanStep booleanStep(startTime=0.5) 601 601 annotation (Placement( 602 602 transformation(extent={{-58,0},{-38,20}}, rotation=0))); 603 Modelica.Blocks.Sources.Sine sine 603 Modelica.Blocks.Sources.Sine sine 604 604 annotation (Placement(transformation( 605 605 extent={{-60,40},{-40,60}}, rotation=0))); 606 606 607 Modelica.Blocks.Examples.BusUsage_Utilities.Part part 607 Modelica.Blocks.Examples.BusUsage_Utilities.Part part 608 608 annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}, 609 609 rotation=0))); 610 Modelica.Blocks.Math.Gain gain 610 Modelica.Blocks.Math.Gain gain 611 611 annotation (Placement(transformation(extent={{-40,70},{-60,90}}, rotation= 612 612 0))); 613 613 protected 614 BusUsage_Utilities.Interfaces.ControlBus controlBus 614 BusUsage_Utilities.Interfaces.ControlBus controlBus 615 615 annotation (Placement(transformation( 616 616 origin={30,10}, … … 670 670 <p> 671 671 This connector defines the \"expandable connector\" ControlBus that 672 is used as bus in the 672 is used as bus in the 673 673 <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage\">BusUsage</a> example. 674 674 Note, this connector is \"empty\". When using it, the actual content is … … 692 692 <p> 693 693 This connector defines the \"expandable connector\" SubControlBus that 694 is used as sub-bus in the 694 is used as sub-bus in the 695 695 <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage\">BusUsage</a> example. 696 696 Note, this connector is \"empty\". When using it, the actual content is … … 724 724 <p> 725 725 This connector is used to show default signals that might be added 726 to the 726 to the 727 727 <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces.ControlBus\">ControlBus</a>. 728 728 </p> … … 747 747 <p> 748 748 This connector is used to show default signals that might be added 749 to the 749 to the 750 750 <a href=\"Modelica://Modelica.Blocks.Examples.BusUsage_Utilities.Interfaces.SubControlBus\">SubControlBus</a>. 751 751 </p> … … 758 758 The bus definitions in this package are the default definitions shown in the 759 759 bus menu when connecting a signal to an expandable connector (here: ControlBus 760 or SubControlBus). Usually, the connectors of this package should not be 760 or SubControlBus). Usually, the connectors of this package should not be 761 761 utilized by a user. 762 762 </p> … … 795 795 </p> 796 796 </html>")); 797 Interfaces.SubControlBus subControlBus 797 Interfaces.SubControlBus subControlBus 798 798 annotation (Placement(transformation( 799 799 origin={100,0}, 800 800 extent={{-20,-20},{20,20}}, 801 801 rotation=270))); 802 Sources.RealExpression realExpression(y=time) 802 Sources.RealExpression realExpression(y=time) 803 803 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) 805 805 annotation (Placement(transformation(extent={{-6,-30},{20,-10}}, 806 806 rotation=0))); -
trunk/Modelica/Electrical/Digital.mo
r1072 r1073 4395 4395 parameter Real value_L(start=0) "value for digital L (Weak 0)"; 4396 4396 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)"; 4398 4398 annotation (Documentation(info="<HTML> 4399 4399 <P> -
trunk/Modelica/Mechanics/MultiBody/package.mo
r1072 r1073 16 16 3-dimensional mechanical components to model in a convenient way 17 17 <b>mechanical systems</b>, such as robots, mechanisms, vehicles. 18 Typical animations generated with this library are shown 18 Typical animations generated with this library are shown 19 19 in the next figure: 20 20 </p> … … 38 38 <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified 39 39 under the terms of the <b>Modelica license</b>, see the license conditions 40 and the accompanying <b>disclaimer</b> 40 and the accompanying <b>disclaimer</b> 41 41 <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i> 42 42 </p><br> … … 98 98 </li> 99 99 <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> 101 101 describes in detail all the steps to build a simple pendulum model. 102 102 </li> … … 334 334 <p> 335 335 In 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 336 loop structures occur (contrary to the ModelicaAdditions.MultiBody library). 337 An example is presented in the figure below. It is available as 338 338 <a href=\"Modelica://Modelica.Mechanics.MultiBody.Examples.Loops.Fourbar1\"> 339 339 MultiBody.Examples.Loops.Fourbar1</a> … … 343 343 </p> 344 344 <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. 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. 351 351 </p> 352 352 <p align=\"center\"> … … 354 354 </p> 355 355 <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 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 367 367 joints are selected during simulation. 368 368 </p> 369 369 <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 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 380 380 equations. 381 381 </p> … … 384 384 equations analytically. For a certain class of systems this can 385 385 be performed also with the MultiBody library. This technique 386 is described in section 386 is described in section 387 387 \"<a href=\"AnalyticLoopHandling\">Analytic loop handling</a>\". 388 388 </p> … … 394 394 annotation (Documentation(info="<HTML> 395 395 <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 396 In the figure below, the model of a V6 engine is 397 shown that has a simple combustion model. It is available as 398 398 <a href=\"Modelica://Modelica.Mechanics.MultiBody.Examples.Loops.EngineV6\"> 399 MultiBody.Examples.Loops.EngineV6</a>. 399 MultiBody.Examples.Loops.EngineV6</a>. 400 400 </p> 401 401 <p align=\"center\"> … … 403 403 </p> 404 404 <p> 405 The Modelica schematic of one cylinder 406 is given in the figure below. Connecting 6 instances of this 405 The Modelica schematic of one cylinder 406 is given in the figure below. Connecting 6 instances of this 407 407 cylinder appropriately together results in the engine schematic displayed 408 408 above. … … 412 412 </p> 413 413 <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. 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. 420 420 </p> 421 421 <p align=\"center\"> … … 423 423 </p> 424 424 <p> 425 All planar loops, and especially the engine, result in 425 All planar loops, and especially the engine, result in 426 426 a 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 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 441 441 not easy for an inexperienced modeler, the special joint: 442 442 <a href=\"Modelica://Modelica.Mechanics.MultiBody.Joints.RevolutePlanarLoopConstraint\"> 443 RevolutePlanarLoopConstraint</a> is provided that removes these constraints. 443 RevolutePlanarLoopConstraint</a> is provided that removes these constraints. 444 444 Exactly one revolute joint in a every planar loop must be replaced by this 445 445 joint type. In the engine example, this special joinst is used for … … 448 448 </p> 449 449 <p> 450 If a modeler is not aware of the problems with planar 450 If a modeler is not aware of the problems with planar 451 451 loops 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 452 translator, such as Dymola, displays an error 453 message and points out that a planar loop may be the reason and suggests to 454 454 use the RevolutePlanarLoopConstraint joint. 455 This error message is due to an annotation in 455 This error message is due to an annotation in 456 456 the Frame connector. 457 457 </p> … … 463 463 </pre> 464 464 <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. 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. 468 468 Both cases are discussed in the error message. 469 469 </p> 470 470 <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 471 Note, that the non-linear algebraic equations occurring 472 in planar loops can be solved analytically in most cases and therefore it is 473 473 highly recommended to use the techniques discussed in section 474 474 \"<a href=\"AnalyticLoopHandling\">Analytic loop handling</a>\" … … 481 481 482 482 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 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 495 495 achieve. 496 496 </p> … … 499 499 Prof. Hiller and his group in Duisburg, Germany, 500 500 have 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
