MarkerBodyCable2DCoordinates
A special Marker attached to the coordinates of a 2D ANCF beam finite element with cubic interpolation.
Interface
Provides:
CoordinateConnectors, constraints and loads that can use it: ObjectConnectorCoordinateSpringDamper, ObjectConnectorCoordinateSpringDamperExt, ObjectConnectorCoordinate, ObjectContactCoordinate, LoadCoordinate
Parameters
The parameters of the item; in a dictionary, its type is ‘BodyCable2DCoordinates’:
name |
type |
size |
default |
description |
|---|---|---|---|---|
name |
String |
‘’ |
marker’s unique name |
|
bodyNumber |
ObjectIndex |
invalid (-1) |
body number to which marker is attached to |
|
visualization |
VMarkerBodyCable2DCoordinates |
parameters for visualization of item |
Visualization parameters
The parameters of VMarkerBodyCable2DCoordinates, 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 |
Drawing
Drawn as all markers; circles at the points of the cable it acts on.
Detailed description
Attached to
A planar ANCF cable element, ObjectANCFCable2D or ObjectALEANCFCable2D; the marker is made for
the joints that slide along a cable, ObjectJointSliding2D and ObjectJointALEMoving2D, which
evaluate the shape functions themselves. Assemble() refuses it on any other body.
Marker quantities
The 8 nodal coordinates of the element - position and slope of both nodes, including their reference values - and their velocities, and the length of the element.
Jacobians
The unit matrix of the 8 coordinates: the joint computes the action on each coordinate.
Mini example
from exudyn.beams import GenerateBeamElementsAlongLine
#the coordinates of ANCF cable elements for a sliding joint: a mass point slides along a clamped, stiff cable
cable = ObjectANCFCable2D(massPerLength=1, bendingStiffness=1e4, axialStiffness=1e6)
beamInfo = GenerateBeamElementsAlongLine(mbs, positionStart=[0,0,0], positionEnd=[2,0,0],
numberOfElements=4, beamTemplate=cable,
groundConstraintsStart=[1,1,1,1], groundConstraintsEnd=[1,1,1,1])
nodes, elements = beamInfo['nodes'], beamInfo['elements']
nMass = mbs.AddNode(NodePoint2D(referenceCoordinates=[0.6,0]))
mbs.AddObject(ObjectMassPoint2D(nodeNumber=nMass, mass=1))
mMass = mbs.AddMarker(MarkerNodePosition(nodeNumber=nMass))
mbs.AddLoad(LoadForceVector(markerNumber=mMass, loadVector=[1,0,0]))
cableMarkers = [mbs.AddMarker(MarkerBodyCable2DCoordinates(bodyNumber=e)) for e in elements]
offsets = [0.5*i for i in range(4)] #the element length is 0.5
nData = mbs.AddNode(NodeGenericData(numberOfDataCoordinates=2, initialCoordinates=[1, 0.6])) #element 1, sliding coordinate
mbs.AddObject(ObjectJointSliding2D(markerNumbers=[mMass, cableMarkers[1]], slidingMarkerNumbers=cableMarkers,
slidingMarkerOffsets=offsets, nodeNumber=nData))
mbs.Assemble()
mbs.SolveDynamic()
#the mass slides: x = 0.6 + F/(2m)*t^2 at t=1, the stiff cable deflects little
exu.sys['testResult'] = mbs.GetNodeOutput(nMass, exu.OutputVariableType.Position)[0] #1.1
Relevant Examples (Ex) and TestModels (TM) with weblink to github: ANCFmovingRigidbody.py (Ex), ANCFslidingJoint2D.py (Ex), ANCFslidingJoint2Drigid.py (Ex), ANCFswitchingSlidingJoint2D.py (Ex), ANCFmovingRigidBodyTest.py (TM), SlidingJoint2DTest.py (TM)