ObjectMassPoint

A 3D mass point which is attached to a position-based node, usually NodePoint.

../../../_images/ObjectMassPoint.png

Simpler: mbs.CreateMassPoint adds this item, with what it needs, in one call.

Interface

Parameters

The parameters of the item; in a dictionary, its type is ‘MassPoint’:

name

type

size

default

description

name

String

‘’

objects’s unique name

mass

UReal

0.

(symbol: \(m\)) mass [SI:kg] of mass point

nodeNumber

NodeIndex

invalid (-1)

(symbol: \(n0\)) node number (type NodeIndex) for mass point

visualization

VObjectMassPoint

parameters for visualization of item

Renamed parameters, still taken with a DeprecationWarning: physicsMass (deprecated since 1.12.258, removed in 2031): use mass.

Visualization parameters

The parameters of VObjectMassPoint, given as visualization:

name

type

size

default

description

show

Bool

True

set true, if item is shown in visualization and false if it is not shown

graphicsData

BodyGraphicsData

Structure contains data for body visualization; data is defined in special list / dictionary structure

Drawing

Drawn as all bodies; its graphicsData, moved with the node; without graphicsData only the node is seen.

Output variables

Available as OutputVariableType in sensors, Get...Output() and other functions:

output variable

symbol

description

Position

\(\LU{0}{\pv}\cConfig(\pLocB) = \LU{0}{\pRef}\cConfig + \LU{0}{\pRef}\cRef + \LU{0b}{\ImThree}\pLocB\)

global position vector of translated local position; local (body) coordinate system = global coordinate system

Displacement

\(\LU{0}{\uv}\cConfig = [q_0,\;q_1,\;q_2]\cConfig\tp\)

global displacement vector of mass point

Velocity

\(\LU{0}{\vv}\cConfig = \LU{0}{\dot\uv}\cConfig = [\dot q_0,\;\dot q_1,\;\dot q_2]\cConfig\tp\)

global velocity vector of mass point

Acceleration

\(\LU{0}{\av}\cConfig = \LU{0}{\ddot\uv}\cConfig = [\ddot q_0,\;\ddot q_1,\;\ddot q_2]\cConfig\tp\)

global acceleration vector of mass point

RotationMatrix

identity matrix (only for completeness)

Rotation

\([0,0,0]\)

(only for completeness)

AngularVelocity

\([0,0,0]\)

(only for completeness)

AngularVelocityLocal

\([0,0,0]\)

(only for completeness)

KineticEnergy

\(T = \frac{1}{2} m\, \LU{0}{\vv}\tp \LU{0}{\vv}\)

kinetic energy of the mass point; localPosition must be \([0,0,0]\)

PotentialEnergy

\(V = 0\)

the body has no elastic energy; gravity and other loads are not part of it (see exudyn.advancedUtilities.LoadPotentialEnergy) - the value stays the same when a body gets a built-in gravity; localPosition must be \([0,0,0]\)

Detailed description

Definition of quantities

intermediate variables

symbol

description

node position

\(\LU{0}{\pv}\cConfig = \LU{0}{\pRef}\cRef + \LU{0}{\uv}\cConfig = \LU{0}{\pv}(n_0)\cConfig\)

position of the mass point, provided by node \(n_0\), in any configuration

node displacement

\(\LU{0}{\uv}\cConfig = [q_0,\;q_1,\;q_2]\cConfig\tp\)

displacement of the mass point, the coordinates of node \(n_0\)

node velocity

\(\LU{0}{\vv}\cConfig = [\dot q_0,\;\dot q_1,\;\dot q_2]\cConfig\tp\)

velocity of the mass point

rotation matrix

\(\LU{0b}{\Rot} = \ImThree\)

the body frame is the global frame

applied forces

\(\LU{0}{\fv}_a = [f_0,\;f_1,\;f_2]\tp\)

from loads, connectors and joint reaction forces

Equations of motion

\[ \mr{m}{0}{0} {0}{m}{0} {0}{0}{m} \vr{\ddot q_0}{\ddot q_1}{\ddot q_2} = \vr{f_0}{f_1}{f_2} . \]

A LoadCoordinate on coordinate 1 of the node adds to \(f_1\).

Marker interfaces

The position of a local point is \(\LU{0}{\pv}\cConfig + \pLocB\), as the body frame is the global frame. The position Jacobian is the unit matrix,

\[ \LU{0}{\Jm_{pos}} = \frac{\partial \LU{0}{\vv}}{\partial \dot\qv} = \mr{1}{0}{0} {0}{1}{0} {0}{0}{1} , \]

so a global force acts as it is, \(\Qm = \LU{0}{\fv}_a\), and the mass-weighted Jacobian is \(m\) times it. A mass point has no rotation: there is no rotation Jacobian, and no MarkerBodyRigid fits.

Mini example

node = mbs.AddNode(NodePoint(referenceCoordinates = [1,1,0], 
                             initialCoordinates=[0.5,0,0],
                             initialVelocities=[0.5,0,0]))
mbs.AddObject(MassPoint(nodeNumber = node, mass=1))

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

#check result
exu.sys['testResult'] = mbs.GetNodeOutput(node, exu.OutputVariableType.Position)[0]
#final x-coordinate of position shall be 2

Examples (Ex) and TestModels (TM) that show this item, with weblink to github: basicTutorial2024.py (Ex), tutorialSpringDamper.py (Ex), tutorialSpringDamperCreate.py (Ex), cartesianSpringDamper.py (Ex), coordinateSpringDamper.py (Ex)