Dynamic Exports
If the generalized coordinates that you define are independent, the dynamic equations governing the system response constitute a set of ordinary differential equations (ODEs).
If the coordinates are dependent, the ODEs for the dynamic response can only be solved simultaneously with the nonlinear algebraic equations from the position-level kinematic constraints; the resulting system equations constitute a set of differential-algebraic equations (DAEs). With MapleSim/Multibody, you can represent the constraint reactions by their actual forces and moments, or indirectly using Lagrange multipliers.
LinkModel
The LinkModel command returns a "connection module" that allows programmatic access to a MapleSim model. Important: You must first link to a MapleSim model before you can access the MapleSim API commands for your model.
The LinkModel command is part of the MapleSim package. You can access this command using the long form of the command name, MapleSim:-LinkModel, or by first executing with(MapleSim) and then using the short form of the command name, LinkModel.
You can attach a worksheet to any model through Add Apps or Templates > Templates > Worksheet. These worksheets have the LinkModel command inserted and the default "connection module" is named A.
Baumgarte Constraint Stabilization
One method of converting these DAEs to ODEs is to replace the position constraints with the acceleration constraints, which are then numerically integrated simultaneously with the ODEs from the dynamic equations. However, during the integration process, the accumulation of numerical errors leads to violations in the position constraint equations. (Visually, the cotree joints will float apart.) Baumgarte proposed a method to stabilize these constraints, by combining the position, velocity, and acceleration constraints into a single expression:
⁢⁢⁢⁢⁢χ⁢+⁢2α⁢Ψ⁢+⁢β2⁢Φ⁢=⁢0
which can be written as a linear equation in terms of the accelerations:
Ψpⅆ⁢pⅆt⁢=⁢e⁢−⁢2α⁢Ψ⁢−⁢β2⁢Φ
⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢⁢=⁢ε
By integrating this expression for the accelerations, the Baumgarte parameters, α and β, act to stabilize the constraints at the position level. These parameters are set using the command:
> Model:-SetBaumgarte([alpha,beta]);
where `Model` is the module returned from the GetMultibody command, and α and β must be given numerical values prior to numerical solution. Typical values range from 1 to 10, and depend upon the characteristics of the particular system under study.
As explained below, Baumgarte stabilization is automatically used in the exports for constrained dynamic systems. If the Baumgarte parameters are not set, default values of 0 are assumed (that is, no constraint stabilization).
Unconstrained Dynamics (ODEs in Independent Coordinates)
If the generalized coordinates, q, and generalized speeds, p, are independent, the dynamic equations take the "unconstrained" form:
M⁢dpdt⁢⁢=⁢F
where M is the mass matrix and F contains external loads and quadratic velocity terms. The full set of system equations are formed by combining these dynamic equations with the kinematic transformations, giving 2n ordinary differential equations in 2n unknowns:
[M001][ⅆ⁢pⅆtⅆ⁢qⅆt]=[Fh]
These unconstrained dynamic equations, and their variables, are summarized in the table below.
Expression
BuildEQs Export
Description
M⁢ⅆ⁢pⅆt−F⁢=⁢0
GetDynEQs()
Dynamic equations in n independent coordinates and speeds
M
xM
Mass matrix (n x n)
F
vF
Right-hand side of dynamic equations (n x 1 column matrix)
GetSysODEs()
Complete set of 2n ODEs for systems modeled by n independent coordinates and speeds
[M001]⁢,[ⅆ⁢pⅆtⅆ⁢qⅆt],[Fh]
GetAYBSysODEs()
Returns the three matrices comprising the system ODEs. Note: The column matrix Y corresponds to the derivative of state variables, vXdot.
Constrained Dynamics (DAEs with Constraint Reactions)
If the generalized coordinates, q, and generalized speeds, p, are dependent, the "augmented" dynamic equations can be written with the constraint reactions appearing explicitly (AugType option set to Reaction):
⁢⁢⁢⁢M⁢dpdt⁢⁢+⁢CTf⁢=⁢F
where f contains the reaction loads in the cotree joints that enforce the kinematic constraints, and C is the corresponding coefficient matrix. These constrained dynamic equations, and their variables, are summarized in the table below.
M⁢ⅆ⁢pⅆt+CTf−F⁢=⁢0
Dynamic equations in n dependent coordinates and speeds
f
vReactions
Reaction forces and moments in the cotree joints that enforce the kinematic constraint equations (m x 1 column matrix)
C
xC
Coefficient matrix of constraint reactions (m x n)
Φ⁡q,t=0
ⅆ⁢qⅆt⁢=⁢h⁡p,q,t
GetSysEQs()
Complete set of 2n+m DAEs in terms of 2n coordinates and speeds and m constraint reactions
[M0CT010Ψp00][ⅆ⁢pⅆtⅆ⁢qⅆtf]=[Fhε]
Conversion of DAEs to 2n+m ODES, by replacing position constraints with Baumgarte form of acceleration constraints
[M0CT010Ψp00]⁢,[ⅆ⁢pⅆtⅆ⁢qⅆtf],[Fhε]
Returns the three matrices comprising the system ODEs
Constrained Dynamics (DAEs with Lagrange Multipliers)
Alternatively, you can write the augmented dynamic equations with the constraint reactions represented implicitly by Lagrange multipliers (AugType option set to Lagrange):
⁢M⁢dpdt⁢⁢+⁢ΨpT⁢λ⁢=⁢F
where λ are the Lagrange multipliers (one for each constraint equation) and Ψp is the Jacobian matrix of the velocity constraint equations with respect to the generalized speeds p. These constrained dynamic equations, and their variables, are summarized in the table below.
M⁢ⅆ⁢pⅆt+ΨpT⁢λ−F⁢=⁢0
λ
vLambda
Lagrange multipliers that indirectly represent the reaction forces and moments in the cotree joints that enforce the kinematic constraint equations (m x 1 column matrix)
M⁢ⅆ⁢pⅆt+ΨpT⁢λ⁢−F⁢=⁢0
Complete set of 2n+m DAEs in terms of 2n coordinates and speeds, and m Lagrange multipliers
[M0ΨpT010Ψp00][ⅆ⁢pⅆtⅆ⁢qⅆtλ]=[Fhε]
[M0ΨpT010Ψp00]⁢,[ⅆ⁢pⅆtⅆ⁢qⅆtλ],[Fhε]
Examples
The example below shows an embedded MapleSim model of a planar slider-crank mechanism. The form of the commands below assume that you are using a Worksheet attached to the MapleSim model through Add Apps or Templates > Templates > Worksheet. In this example we are going to name our multibody exports module SliderCrank.
A≔MapleSim:-LinkModel⁡:
SliderCrank ≔ A:-GetMultibodysimplify:
Analyzing system...
Performing constraint analysis...
The system has 1 degree(s) of freedom. It is modeled using 3 generalized coordinate(s) coupled by 2 algebraic constraint(s).
Performing a dynamic analysis using an augmented reaction formulation - system variables shown below:
vQ,P1_s⁡tR1_theta⁡tR3_theta⁡t,vP,ⅆⅆtP1_s⁡tⅆⅆtR1_theta⁡tⅆⅆtR3_theta⁡t,vPdot,ⅆ2ⅆt2P1_s⁡tⅆ2ⅆt2R1_theta⁡tⅆ2ⅆt2R3_theta⁡t,vReactions,Fx⁡tFy⁡t
Dynamic analysis complete.
SliderCrank:-xM;
520sin⁡R3_theta⁡t4034000sin⁡R3_theta⁡t401291000
SliderCrank:-vF;
−ⅆⅆtR3_theta⁡t2⁢cos⁡R3_theta⁡t4−2943⁢cos⁡R1_theta⁡t10000981⁢cos⁡R3_theta⁡t400
See Also
Kinematic Exports, MapleSim, MapleSim[LinkModel][GetMultibody]
Download Help Document