ObjectRotationalMass1D

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

Interface

Parameters

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

name

type

size

default

description

name

String

‘’

objects’s unique name

inertia

UReal

0.

(symbol: \(J\)) inertia components [SI:kgm\(^2\)] of rotor / rotational mass

nodeNumber

NodeIndex

invalid (-1)

(symbol: \(n0\)) node number (type NodeIndex) of Node1D, providing rotation coordinate \(\psi_0 = c_0\)

referencePosition

Vector3D

3

[0.,0.,0.]

(symbol: \(\LU{0}{\pRef_0}\)) a constant reference position = reference point, used to assign joint constraints accordingly and for drawing

referenceRotation

Matrix3D

9

[[1,0,0], [0,1,0], [0,0,1]]

(symbol: \(\LU{0i}{\Rot_{0}} \in \Rcal^{3 \times 3}\)) an intermediate rotation matrix, which transforms the 1D coordinate into 3D, see description

visualization

VObjectRotationalMass1D

parameters for visualization of item

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

Visualization parameters

The parameters of VObjectRotationalMass1D, 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, rotated about the axis of its reference rotation by the coordinate of its node.

Output variables

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

output variable

symbol

description

Position

\(\LU{0}{\pv}\cConfig= \pRefG\)

global position vector; for interpretation see intermediate variables

Displacement

\(\LU{0}{\uv}\cConfig\)

global displacement vector; for interpretation see intermediate variables

Velocity

\(\LU{0}{\vv}\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\)

global 3D angular velocity vector of body

AngularVelocityLocal

\(\LU{b}{\tomega}\cConfig\)

local (body-fixed) 3D angular velocity vector of body

KineticEnergy

\(T = \frac{1}{2} J\, \dot \theta_0^2\)

kinetic energy of the rotor; 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

rotation

\({\theta_0}\cConfig = {c_0}\cConfig + {c_0}\cRef\)

the coordinate \(c_0\) of the node plus its reference value

Position

\(\LU{0}{\pv}\cConfig = \LU{0}{\pRef_0}\)

the constant referencePosition

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}}\)

a rotation about the local \(z\)-axis of the frame given by referenceRotation \(\LU{0i}{\Rot_{0}}\)

AngularVelocity

\(\LU{0}{\tomega}\cConfig = \LU{0i}{\Rot_{0}} \LU{i}{\vr{0}{0}{\dot \theta_0}}\)

global angular velocity

applied torque

\(\LU{0}{\ttau}_a\)

3D torque from loads, connectors and joints

residual torque

\(\tau\)

the component of the applied torques about the axis

Equations of motion

\[ J \cdot \ddot \theta_0 = \tau , \quad \tau = \LU{i}{[0,\,0,\,1]} \LU{i0}{\Rot_{0}} \LU{0}{\ttau}_a . \]

Marker interfaces

\[ \LU{0}{\Jm_{pos}} = \frac{\partial \LU{0}{\vv}}{\partial \dot \theta_0} = \LU{0b}{\Rot} \left( \LU{b}{\vr{0}{0}{1}} \times \LU{b}{\pv} \right) , \quad \LU{0}{\Jm_{rot}} = \frac{\partial \LU{0}{\tomega}}{\partial \dot \theta_0} = \LU{0i}{\Rot_{0}} \LU{i}{\vr{0}{0}{1}} : \]

a torque acts with its component about the axis, a force at the local position \(\LU{b}{\pv}\) with its moment about the axis - on the axis, \(x = y = 0\), it has no effect; there is no mass-proportional load on it.

Mini example

node = mbs.AddNode(Node1D(referenceCoordinates = [1], #\psi_0ref
                          initialCoordinates=[0.5],   #\psi_0ini
                          initialVelocities=[0.5]))   #\psi_t0ini
rotor = mbs.AddObject(Rotor1D(nodeNumber = node, inertia=1))

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

#check result, get current rotor z-rotation at local position [0,0,0]
exu.sys['testResult'] = mbs.GetObjectOutputBody(rotor, exu.OutputVariableType.Rotation, [0,0,0])
#final z-angle of rotor shall be 2

Relevant Examples (Ex) and TestModels (TM) with weblink to github: accessFunctionsTest.py (TM), distanceSensor.py (TM), energiesTest.py (TM), coordinateSpringDamperExt.py (TM), driveTrainTest.py (TM)