MarkerNodeCoordinates

A node-Marker attached to all ODE2 coordinates of a node. IN CONTRAST to MarkerNodeCoordinate, the marker coordinates INCLUDE the reference values! For ODE1 coordinates use MarkerNodeODE1Coordinates.

Interface

Parameters

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

name

type

size

default

description

name

String

‘’

marker’s unique name

nodeNumber

NodeIndex

invalid (-1)

node number to which marker is attached to

visualization

VMarkerNodeCoordinates

parameters for visualization of item

Visualization parameters

VMarkerNodeCoordinates has no parameters.

Drawing

The item draws nothing.

Detailed description

Marker quantities

quantity

symbol

as computed

coordinates

\(\cv = \qv\cRef + \qv\)

all ODE2 coordinates of the node, including their reference values

their velocities

\(\dot\cv = \dot\qv\)

the time derivatives

Unlike MarkerNodeCoordinate, the values include the reference values.

Jacobians

The unit matrix of the size of the node’s coordinates: a vector of forces acts on the coordinates one by one. On a node without ODE2 coordinates the values and the Jacobian are empty.

Mini example

#all coordinates of two nodes, tied by a coordinate vector constraint X1 qB - X0 qA = offset; the
#coordinates INCLUDE the reference values, so qB - qA = [1,0,0] keeps the two points where they are
nA = mbs.AddNode(NodePoint(referenceCoordinates=[0,0,0]))
nB = mbs.AddNode(NodePoint(referenceCoordinates=[1,0,0]))
mbs.AddObject(ObjectMassPoint(nodeNumber=nA, mass=1))
mbs.AddObject(ObjectMassPoint(nodeNumber=nB, mass=1))
mA = mbs.AddMarker(MarkerNodeCoordinates(nodeNumber=nA))
mB = mbs.AddMarker(MarkerNodeCoordinates(nodeNumber=nB))
mbs.AddObject(ObjectConnectorCoordinateVector(markerNumbers=[mA, mB], scalingMarker0=np.eye(3),
                                             scalingMarker1=np.eye(3), offset=[1,0,0]))
mbs.AddLoad(LoadForceVector(markerNumber=mbs.AddMarker(MarkerNodePosition(nodeNumber=nA)), loadVector=[2,0,0]))

mbs.Assemble()
mbs.SolveDynamic()

#both masses move together: a = F/(2m) = 1, x = a/2*t^2 at t=1
exu.sys['testResult'] = mbs.GetNodeOutput(nB, exu.OutputVariableType.Displacement)[0] #0.5

Relevant Examples (Ex) and TestModels (TM) with weblink to github: coordinateVectorConstraint.py (TM), coordinateVectorConstraintGenericODE2.py (TM), rigidBodyAsUserFunctionTest.py (TM)