If different versions of the MultiBody library are not compatible to each other, corresponding conversion scripts are provided. As a result, models build with an older version of the MultiBody library are automatically converted to the new version when the model is loaded. The user is prompted whether automatic conversion shall take place or not. Problems are not to be expected. Still one should first make a copy of such a model as backup before the conversion is 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 also automatically invoked. Since the differences between the "old" and the "new" MultiBody library are so large, not everything is converted and it might be that some pieces have to be adapted manually. Still, this script is useful, since many class names, parameters and modifiers are automatically converted.
Components from the following sublibraries are automatically converted to the Modelica.Mechanics.MultiBody library:
Models using the ModelicaAdditions.MultiBody library that 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 equations that reference variables of the Frame connectors will not be converted. For a manual conversion, the following table might be helpful showing how the variables of the "old" and the "new" Frame connectors are related to each other (resolve2 and angularVelocity2 are functions 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 rare cases, where own components are implemented using functions of the MultiBody.Frames package. In this case, the conversion has to be performed 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 the transformation matrix from frame 1 to frame 2 and the angular velocity of the transformation matrix resolved in frame 2. The reason is that this allows to compute the angular velocity in many cases by standard recursive formulas and not by differentiation of the transformation matrix. This is usually much more efficient. As a consequence, the following calls 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))