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
Provides:
CoordinatesConnectors, constraints and loads that can use it: ObjectConnectorCoordinateVector
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)