ObjectRotationalMass1D

A 1D rotational inertia (mass) which is attached to Node1D.

Additional information for ObjectRotationalMass1D:

  • This Object has/provides the following types = Body, SingleNoded
  • Requested Node type = GenericODE2
  • Short name for Python = Rotor1D
  • Short name for Python visualization object = VRotor1D

The item ObjectRotationalMass1D with type = ‘RotationalMass1D’ has the following parameters:

  • name [type = String, default = ‘’]:
    objects’s unique name
  • physicsInertia [\(J\), type = UReal, default = 0.]:
    inertia components [SI:kgm\(^2\)] of rotor / rotational mass
  • nodeNumber [\(n0\), type = NodeIndex, default = invalid (-1)]:
    node number (type NodeIndex) of Node1D, providing rotation coordinate \(\psi_0 = c_0\)
  • referencePosition [\(\LU{0}{\pRef_0}\), type = Vector3D, size = 3, default = [0.,0.,0.]]:
    a constant reference position = reference point, used to assign joint constraints accordingly and for drawing
  • referenceRotation [\(\LU{0i}{\Rot_{0}} \in \Rcal^{3 \times 3}\), type = Matrix3D, default = [[1,0,0], [0,1,0], [0,0,1]]]:
    an intermediate rotation matrix, which transforms the 1D coordinate into 3D, see description
  • visualization [type = VObjectRotationalMass1D]:
    parameters for visualization of item

The item VObjectRotationalMass1D has the following parameters:

  • show [type = Bool, default = True]:
    set true, if item is shown in visualization and false if it is not shown
  • graphicsData [type = BodyGraphicsData]:
    Structure contains data for body visualization; data is defined in special list / dictionary structure

DESCRIPTION of ObjectRotationalMass1D

The following output variables are available as OutputVariableType in sensors, Get…Output() and other functions:

  • Position: \(\LU{0}{{\mathbf{p}}}\cConfig= \pRefG\)
    global position vector; for interpretation see intermediate variables
  • Displacement: \(\LU{0}{{\mathbf{u}}}\cConfig\)
    global displacement vector; for interpretation see intermediate variables
  • Velocity: \(\LU{0}{{\mathbf{v}}}\cConfig\)
    global velocity vector; for interpretation see intermediate variables
  • RotationMatrix: \(\LU{0b}{\Rot}\)
    vector with 9 components of the rotation matrix (row-major format)
  • Rotation: \(\theta\)
    scalar rotation angle obtained from underlying node
  • AngularVelocity: \(\LU{0}{\tomega}\cConfig\)
    angular velocity of body
  • AngularVelocityLocal: \(\LU{b}{\tomega}\cConfig\)
    local (body-fixed) 3D velocity vector of node

Definition of quantities

intermediate variables
symbol
description
position coordinate
\({\theta_0}\cConfig = {c_0}\cConfig + {c_0}\cRef\)
total rotation coordinate of node (e.g., Node1D) in any configuration (nodal coordinate \(c_0\))
displacement coordinate
\({\psi_0}\cConfig = {c_0}\cConfig\)
change of rotation coordinate of mass node (e.g., Node1D) in any configuration (nodal coordinate \(c_0\))
velocity coordinate
\({\dot \psi_{0\cConfig}}\)
rotation velocity coordinate of mass node (e.g., Node1D) in any configuration
Position
\(\LU{0}{{\mathbf{p}}}\cConfig =\LU{0}{\pRef_0}\)
constant (translational) position of mass object in any configuration
Displacement
\(\LU{0}{{\mathbf{u}}}\cConfig = [0,0,0]\tp\)
(translational) displacement of mass object in any configuration
Velocity
\(\LU{0}{{\mathbf{v}}}\cConfig = [0,0,0]\tp\)
(translational) velocity of mass object in any configuration
AngularVelocity
\(\LU{0}{\tomega}\cConfig = \LU{0i}{\Rot_{0}} \LU{i}{\vr{0}{0}{\dot \psi_0}}\tp\)

AngularVelocityLocal
\(\LU{b}{\tomega}\cConfig = \LU{i}{\vr{0}{0}{\dot \psi_0}}\tp\)

RotationMatrix
\(\LU{0b}{\Rot} = \LU{0i}{\Rot_{0}} \LU{ib}{\mr{\cos(\theta_0)}{-\sin(\theta_0)}{0} {\sin(\theta_0)}{\cos(\theta_0)}{0} {0}{0}{1}}\)
transformation of local body (\(b\)) coordinates to global (0) coordinates
residual force
\(\tau\)
residual of all forces on mass object
applied force
\(\LU{0}{{\mathbf{f}}}_a = [f_0,\;f_1,\;f_2]\tp\)
3D applied force (loads, connectors, joint reaction forces, …)
applied torque
\(\LU{0}{\ttau}_a = [\tau_0,\;\tau_1,\;\tau_2]\tp\)
3D applied torque (loads, connectors, joint reaction forces, …)

A rigid body marker (e.g., MarkerBodyRigid) may be attached to this object and forces/torques can be applied. However, forces will have no effect and torques will only have effect in ‘direction’ of the coordinate.

Equations of motion

\[J \cdot \ddot \psi_0 = \tau.\]

Note that \(\tau\) is computed from all connectors and loads upon the object. E.g., a 3D torque vector \(\LU{0}{\ttau}_a\) is transformed to \(\tau\) as

\[\tau = \LU{b}{[0,\,0,\,1]}\LU{b0}{\Rot_{0}} \LU{0}{\ttau}_a\]

Thus, the rotation jacobian reads

\[{\mathbf{J}}_{rot} = \partial \tomega\cCur / \partial \dot q_{0,cur} = \LU{b}{[0,\,0,\,1]} \LU{b0}{\Rot_{0}}\]

MINI EXAMPLE for ObjectRotationalMass1D

 1node = mbs.AddNode(Node1D(referenceCoordinates = [1], #\psi_0ref
 2                          initialCoordinates=[0.5],   #\psi_0ini
 3                          initialVelocities=[0.5]))   #\psi_t0ini
 4rotor = mbs.AddObject(Rotor1D(nodeNumber = node, physicsInertia=1))
 5
 6#assemble and solve system for default parameters
 7mbs.Assemble()
 8mbs.SolveDynamic()
 9
10#check result, get current rotor z-rotation at local position [0,0,0]
11exudynTestGlobals.testResult = mbs.GetObjectOutputBody(rotor, exu.OutputVariableType.Rotation, [0,0,0])
12#final z-angle of rotor shall be 2

Relevant Examples and TestModels with weblink:

distanceSensor.py (TestModels/), coordinateSpringDamperExt.py (TestModels/), driveTrainTest.py (TestModels/)

The web version may not be complete. For details, consider also the Exudyn PDF documentation : theDoc.pdf