Upgrade
Upgrade from Former Versions
Library
Modelica/Mechanics/MultiBody/UsersGuide
Description
If different versions of the MultiBody library are notcompatible to each other, corresponding conversion scripts areprovided. As a result, models build with an older versionof the MultiBody library are automatically converted to thenew version when the model is loaded. The user is promptedwhether automatic conversion shall take place or not.Problems are not to be expected. Still one should first makea copy of such a model as backup before the conversionis performed.
Upgrade from ModelicaAdditions.MultiBody
There is now also a conversion script from the "old"ModelicaAdditions.MultiBody library to the"new" Modelica.Mechanics.MultiBody library. This script is alsoautomatically invoked. Since the differences between the "old" and the"new" MultiBody library are so large, not everything isconverted and it might be that some pieces have tobe adapted manually. Still, this script is useful, sincemany class names, parameters and modifiers areautomatically converted.
Components from the following sublibrariesare automatically convertedto the Modelica.Mechanics.MultiBody library:
- ModelicaAdditions.MultiBody.Parts
- ModelicaAdditions.MultiBody.Joints
- ModelicaAdditions.MultiBody.Forces
- Part of ModelicaAdditions.MultiBody.Interfaces
Models using the ModelicaAdditions.MultiBody librarythat are programmed with equations are only partly converted:The Frame connectors will be converted to the "new"Frame connectors of the MultiBody library, but the equationsthat reference variables of the Frame connectors willnot be converted. For a manual conversion, the followingtable might be helpful showing how the variables of the"old" and the "new" Frame connectors arerelated to each other (resolve2 and angularVelocity2 arefunctions from library Modelica.Mechanics.MultiBody.Frames):
ModelicaAdditions.MultiBody. Interfaces.Frame_a | MultiBody.Interfaces.Frame_a |
---|---|
frame_a.r0 | = frame_a.r_0 (is converted) |
frame_a.S | = transpose(frame_a.R) |
frame_a.v | = resolve2(frame_a.R, der(frame_a.r_0)) |
frame_a.w | = angularVelocity2(frame_a.R) |
frame_a.a | = resolve2(frame_a.R, der(v_0)); v_0 = der(r_0) |
frame_a.z | = der(w); w = angulaVelocity2(frame_a.R) |
frame_a.f | = frame_a.f (no conversion needed) |
frame_a.t | = frame_a.t (no conversion needed) |
Upgrade from MultiBody 0.99 (and earlier) to 1.0 (and later)
The conversion from MultiBody 0.99 to 1.0 does not work in some rarecases, where own components are implemented using functions of theMultiBody.Frames package. In this case, the conversion has to beperformed manually. The changes in 1.0 with regards to 0.99 are:
The definition of the Modelica.Mechanics.MultiBody.Frames.Orientation object has changed.In 0.99 this was just an alias type for a transformation matrix(now Modelica.Mechanics.MultiBody.Frames.TransformationMatrices.Orientation).In 1.0 the orientation object is a record holding thetransformation matrix from frame 1 to frame 2 and the angularvelocity of the transformation matrix resolved in frame 2.The reason is that this allows to compute the angular velocityin many cases by standard recursive formulas and not bydifferentiation of the transformation matrix. This is usuallymuch more efficient. As a consequence, the followingcalls in 0.99 should be changed:
Frames.angularVelocity1(T,der(T)) -> Frames.angularVelocity1(T) Frames.angularVelocity2(T,der(T)) -> Frames.angularVelocity2(T) Frames.from_T(T) -> Frames.from_T2(T,der(T))