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 variablesDisplacement
: \(\LU{0}{{\mathbf{u}}}\cConfig\)global displacement vector; for interpretation see intermediate variablesVelocity
: \(\LU{0}{{\mathbf{v}}}\cConfig\)global velocity vector; for interpretation see intermediate variablesRotationMatrix
: \(\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 bodyAngularVelocityLocal
: \(\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
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
Thus, the position jacobian reads
MINI EXAMPLE for ObjectMass1D
1node = mbs.AddNode(Node1D(referenceCoordinates = [1],
2 initialCoordinates=[0.5],
3 initialVelocities=[0.5]))
4mass = mbs.AddObject(Mass1D(nodeNumber = node, physicsMass=1))
5
6#assemble and solve system for default parameters
7mbs.Assemble()
8mbs.SolveDynamic()
9
10#check result, get current mass position at local position [0,0,0]
11exudynTestGlobals.testResult = mbs.GetObjectOutputBody(mass, exu.OutputVariableType.Position, [0,0,0])[0]
12#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