NodePointGround

A 3D point node fixed to ground which is similar to NodePoint, but it does not generate coordinates. Applied or reaction forces do not have any effect. This node can be used for ‘blind’ or ‘dummy’ ODE2 and ODE1 coordinates to which CoordinateSpringDamper or CoordinateConstraint objects are attached to.

Interface

Parameters

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

name

type

size

default

description

name

String

‘’

node’s unique name

referenceCoordinates

Vector3D

3

[0.,0.,0.]

(symbol: \(\qv\cRef = [q_0,\,q_1,\,q_2]\tp\cRef = \pv\cRef = [r_0,\,r_1,\,r_2]\tp\)) reference coordinates of node ==> e.g. ref. coordinates for finite elements; global position of node without displacement

visualization

VNodePointGround

parameters for visualization of item

Visualization parameters

The parameters of VNodePointGround, 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

drawSize

float

-1.

drawing size (diameter, dimensions of underlying cube, etc.) for item; size == -1.f means that default size is used

color

Float4

4

[-1.,-1.,-1.,-1.]

Default RGBA color for nodes; 4th value is alpha-transparency; R=-1.f means, that default color is used

Drawing

Drawn as all nodes.

Output variables

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

output variable

symbol

description

Position

\(\pv\cConfig = [p_0,\,p_1,\,p_2]\cConfig\tp = \pv\cRef\)

global 3D position vector of node (=reference position)

Displacement

\(\uv\cConfig = [0,\,0,\,0]\cConfig\tp\)

zero 3D vector

Velocity

\(\vv\cConfig = [0,\,0,\,0]\cConfig\tp\)

zero 3D vector

CoordinatesTotal

\(\cv\cConfig =[]\)

vector of length zero

Coordinates

\(\cv\cConfig =[]\)

vector of length zero

Coordinates_t

\(\dot\cv\cConfig =[]\)

vector of length zero

RotationMatrix

identity matrix (only for completeness)

Rotation

\([0,0,0]\)

(only for completeness)

AngularVelocity

\([0,0,0]\)

(only for completeness)

AngularVelocityLocal

\([0,0,0]\)

(only for completeness)

Detailed description

Coordinates

None: the node is fixed at its reference position \(\pv\cRef\), and does not add a coordinate to the system. It provides a position (and, formally, an orientation) so that markers can be attached to it.

Frame and interpretation

The reference position is global. Forces applied to the node, and reaction forces of connectors or constraints attached to it, have no effect.

Use

The node is the ground for coordinate markers: a CoordinateSpringDamper or a CoordinateConstraint between a coordinate of a node and the ground needs a marker on both sides, and MarkerNodeCoordinate on a NodePointGround is that side. CreateCoordinateConstraint creates it when one side is the ground.

Mini example

#a ground node: a fixed point that markers and connectors can use, without coordinates
node = mbs.AddNode(NodePoint(referenceCoordinates=[1,0,0]))
mbs.AddObject(ObjectMassPoint(nodeNumber=node, mass=1))
mNode = mbs.AddMarker(MarkerNodePosition(nodeNumber=node))
nFixed = mbs.AddNode(NodePointGround(referenceCoordinates=[0,0,0]))
mFixed = mbs.AddMarker(MarkerNodePosition(nodeNumber=nFixed))
mbs.AddObject(ObjectConnectorCartesianSpringDamper(markerNumbers=[mFixed, mNode], stiffness=[100,100,100],
                                                   offset=[1,0,0]))
mbs.AddLoad(LoadForceVector(markerNumber=mNode, loadVector=[10,0,0]))

mbs.Assemble()
mbs.SolveStatic()

#the spring is stretched by F/k
exu.sys['testResult'] = mbs.GetNodeOutput(node, exu.OutputVariableType.Displacement)[0] #0.1

Examples (Ex) and TestModels (TM) that show this item, with weblink to github: tutorialSpringDamper.py (Ex), coordinateSpringDamper.py (Ex), SliderCrank.py (Ex), plotSensorExamples.py (Ex), SpringDamperMassUserFunction.py (Ex)