NodeGenericData

A node containing a number of data (history) variables. Use this node e.g. for contact (active set), friction or plasticity (history variables).

Interface

Parameters

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

name

type

size

default

description

name

String

‘’

node’s unique name

initialCoordinates

Vector

[]

(symbol: \(\xv\cIni = [x_0,\,\ldots,\,x_{n_c}]\tp\cIni\)) initial data coordinates

numberOfDataCoordinates

UInt

0

(symbol: \(n_c\)) number of generic data coordinates (history variables)

visualization

VNodeGenericData

parameters for visualization of item

Visualization parameters

VNodeGenericData has no parameters.

Drawing

The item draws nothing.

Output variables

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

output variable

symbol

description

Coordinates

\(\xv\cConfig = [x_0,\,\ldots,\,x_{nc}]\tp\cConfig\)

data coordinates (history variables) vector of node

Detailed description

Coordinates

A number of data coordinates, numberOfDataCoordinates, whose meaning is defined by the object that uses the node: the contact state of a contact object, the stick or slip state and the last position of friction, plastic strains. Data coordinates are no unknowns of the equations of motion; the object updates them between steps, in its post Newton step.

Action on the equations of motion

None directly: the data coordinates change the equations of the object that owns them, e.g. by switching a contact on or off.

Mini example

#data coordinates hold a state that is no degree of freedom and that the object updates after each step:
#here the limit stop of a connector, which a mass is pushed against
node = mbs.AddNode(Node1D(referenceCoordinates=[0]))
mbs.AddObject(ObjectMass1D(nodeNumber=node, mass=1))
mMass = mbs.AddMarker(MarkerNodeCoordinate(nodeNumber=node, coordinate=0))
mGround = mbs.AddMarker(MarkerNodeCoordinate(nodeNumber=nGround, coordinate=0))
nData = mbs.AddNode(NodeGenericData(numberOfDataCoordinates=3, initialCoordinates=[0,0,0]))
mbs.AddObject(ObjectConnectorCoordinateSpringDamperExt(markerNumbers=[mGround, mMass], nodeNumber=nData,
              damping=20, useLimitStops=True, limitStopsLower=-1, limitStopsUpper=0.05,
              limitStopsStiffness=1e4, limitStopsDamping=100))
mbs.AddLoad(LoadCoordinate(markerNumber=mMass, load=10))

mbs.Assemble()
mbs.SolveDynamic()

#the mass rests at the stop, pressed into it by F/k_limits
exu.sys['testResult'] = mbs.GetNodeOutput(node, exu.OutputVariableType.Coordinates) #0.05+0.001

Relevant Examples (Ex) and TestModels (TM) with weblink to github: ANCFcontactCircle.py (Ex), ANCFcontactCircle2.py (Ex), ANCFmovingRigidbody.py (Ex), ANCFslidingJoint.py (Ex), ANCFslidingJoint2D.py (Ex), ANCFslidingJoint2Drigid.py (Ex), ANCFswitchingSlidingJoint2D.py (Ex), beltDriveALE.py (Ex), beltDriveReevingSystem.py (Ex), beltDrivesComparison.py (Ex), bicycleIftommBenchmark.py (Ex), camFollowerExample.py (Ex), ANCFcontactCircleTest.py (TM), ANCFcontactFrictionTest.py (TM), ANCFmovingRigidBodyTest.py (TM), …