Skip to content

Latest commit

 

History

History
169 lines (112 loc) · 7.24 KB

ObjectMass1D.rst

File metadata and controls

169 lines (112 loc) · 7.24 KB

ObjectMass1D

A 1D (translational) mass which is attached to Node1D. Note, that the mass does not need to have the interpretation as a translational mass.

Additional information for ObjectMass1D:

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

The item ObjectMass1D with type = 'Mass1D' has the following parameters:

  • name [type = String, default = '']:
    objects's unique name
  • physicsMass [m, type = UReal, default = 0.]:
    mass [SI:kg] of mass
  • nodeNumber [n0, type = NodeIndex, default = invalid (-1)]:
    node number (type NodeIndex) for Node1D
  • referencePosition [\LU{0}{\pRef_0}, type = Vector3D, size = 3, default = [0.,0.,0.]]:
    a reference position, used to transform the 1D coordinate to a position
  • referenceRotation [\LU{0b}{\Rot_{0}} \in \Rcal^{3 \times 3}, type = Matrix3D, default = [[1,0,0], [0,1,0], [0,0,1]]]:
    the constant body rotation matrix, which transforms body-fixed (b) to global (0) coordinates
  • visualization [type = VObjectMass1D]:
    parameters for visualization of item

The item VObjectMass1D 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 ObjectMass1D

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

  • Position: \LU{0}{{\mathbf{p}}}\cConfig
    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:
    vector with 3 components of the Euler/Tait-Bryan angles in xyz-sequence (\LU{0b}{\Rot}\cConfig=:\Rot_0(\varphi_0) \cdot \Rot_1(\varphi_1) \cdot \Rot_2(\varphi_2)), recomputed from rotation matrix \LU{0b}{\Rot}
  • 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
{p_0}\cConfig = {c_0}\cConfig + {c_0}\cRef
position coordinate of node (nodal coordinate c_0) in any configuration
displacement coordinate
{u_0}\cConfig = {c_0}\cConfig
displacement coordinate of mass node in any configuration
velocity coordinate
{u_0}\cConfig
velocity coordinate of mass node in any configuration
Position
\LU{0}{{\mathbf{p}}}\cConfig =\LU{0}{\pRef_0} + \LU{0b}{\Rot_{0}} \LU{b}{\vr{p_0}{0}{0}}\cConfig
(translational) position of mass object in any configuration
Displacement
\LU{0}{{\mathbf{u}}}\cConfig = \LU{0b}{\Rot_{0}} \LU{b}{\vr{q_0}{0}{0}}\cConfig
(translational) displacement of mass object in any configuration
Velocity
\LU{0}{{\mathbf{v}}}\cConfig = \LU{0b}{\Rot_{0}} \LU{b}{\vr{\dot q_0}{0}{0}}\cConfig
(translational) velocity of mass object in any configuration
residual force
f
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, torques will have no effect and forces will only have effect in 'direction' of the coordinate.

Equations of motion

m \cdot \ddot q_0 = f.

Note that f is computed from all connectors and loads upon the object. E.g., a 3D force vector \LU{0}{{\mathbf{f}}}_a is transformed to f as

f = \LU{b}{[1,\,0,\,0]} \LU{b0}{\Rot_{0}} \LU{0}{{\mathbf{f}}}_a

Thus, the position jacobian reads

{\mathbf{J}}_{pos} = \partial {\mathbf{p}}\cCur / \partial {q_0}\cCur = \LU{b}{[1,\,0,\,0]} \LU{b0}{\Rot_{0}}

MINI EXAMPLE for ObjectMass1D

node = mbs.AddNode(Node1D(referenceCoordinates = [1],
                          initialCoordinates=[0.5],
                          initialVelocities=[0.5]))
mass = mbs.AddObject(Mass1D(nodeNumber = node, physicsMass=1))

#assemble and solve system for default parameters
mbs.Assemble()
mbs.SolveDynamic()

#check result, get current mass position at local position [0,0,0]
exudynTestGlobals.testResult = mbs.GetObjectOutputBody(mass, exu.OutputVariableType.Position, [0,0,0])[0]
#final x-coordinate of position shall be 2

Relevant Examples and TestModels with weblink:

craneReevingSystem.py (Examples/), lugreFrictionTest.py (Examples/), mpi4pyExample.py (Examples/), multiprocessingTest.py (Examples/), nMassOscillator.py (Examples/), nMassOscillatorEigenmodes.py (Examples/), nMassOscillatorInteractive.py (Examples/), driveTrainTest.py (TestModels/)

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