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
Provides:
GenericDataObjects that take this node: ObjectConnectorRigidBodySpringDamper, ObjectConnectorTorsionalSpringDamper, ObjectConnectorCoordinateSpringDamperExt, ObjectConnectorRollingDiscPenalty, ObjectContactConvexRoll, ObjectContactCoordinate, ObjectContactCircleCable2D, ObjectContactFrictionCircleCable2D, ObjectContactSphereSphere, ObjectContactSphereTorus, ObjectContactSphereTriangle, ObjectContactCurveCircles, ObjectJointSliding, ObjectJointSliding2D
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), …