NodeRigidBody2D
A 2D rigid body node for rigid bodies or beams; the node has 2 displacement degrees of freedom and one rotation coordinate (rotation around z-axis: uphi). All coordinates are ODE2, used for second order differetial equations.
Additional information for NodeRigidBody2D:
- This
Node
has/provides the following types =Position2D
,Orientation2D
,Position
,Orientation
,RigidBody
- Short name for Python =
Rigid2D
- Short name for Python visualization object =
VRigid2D
The item NodeRigidBody2D with type = ‘RigidBody2D’ has the following parameters:
- name [type = String, default = ‘’]:node’s unique name
- referenceCoordinates [\({\mathbf{q}}\cRef = [q_0,\,q_1,\,\psi_0]\tp\cRef\), type = Vector3D, size = 3, default = [0.,0.,0.]]:reference coordinates (x-pos,y-pos and rotation) of node ==> e.g. ref. coordinates for finite elements; global position of node without displacement
- initialCoordinates [\({\mathbf{q}}\cIni = [q_0,\,q_1,\,\psi_0]\tp\cIni\), type = Vector3D, size = 3, default = [0.,0.,0.]]:initial displacement coordinates and angle (relative to reference coordinates)
- initialVelocities [\(\dot {\mathbf{q}}\cIni = [\dot q_0,\,\dot q_1,\,\dot \psi_0]\tp\cIni = [v_0,\,v_1,\,\omega_2]\tp\cIni\), type = Vector3D, size = 3, default = [0.,0.,0.]]:initial velocity coordinates
- visualization [type = VNodeRigidBody2D]:parameters for visualization of item
The item VNodeRigidBody2D has the following parameters:
- show [type = Bool, default = True]:set true, if item is shown in visualization and false if it is not shown
- drawSize [type = float, default = -1.]:drawing size (diameter, dimensions of underlying cube, etc.) for item; size == -1.f means that default size is used
- color [type = Float4, size = 4, default = [-1.,-1.,-1.,-1.]]:Default RGBA color for nodes; 4th value is alpha-transparency; R=-1.f means, that default color is used
DESCRIPTION of NodeRigidBody2D
The following output variables are available as OutputVariableType in sensors, Get…Output() and other functions:
Position
: \(\LU{0}{{\mathbf{p}}}\cConfig = \LU{0}{[p_0,\,p_1,\,0]}\cConfig\tp= \LU{0}{{\mathbf{u}}}\cConfig + \LU{0}{{\mathbf{p}}}\cRef\)global 3D position vector of node; \({\mathbf{u}}\cRef=0\)Displacement
: \(\LU{0}{{\mathbf{u}}}\cConfig = [q_0,\,q_1,\,0]\cConfig\tp\)global 3D displacement vector of nodeVelocity
: \(\LU{0}{{\mathbf{v}}}\cConfig = [\dot q_0,\,\dot q_1,\,0]\cConfig\tp\)global 3D velocity vector of nodeAcceleration
: \(\LU{0}{{\mathbf{a}}}\cConfig = [\ddot q_0,\,\ddot q_1,\,0]\cConfig\tp\)global 3D acceleration vector of nodeAngularVelocity
: \(\LU{0}{\tomega}\cConfig = \LU{0}{[0,\,0,\,\dot \psi_0]}\cConfig\tp\)global 3D angular velocity vector of nodeCoordinates
: \({\mathbf{c}}\cConfig = [q_0,\,q_1,\,\psi_0]\tp\cConfig\)coordinate vector of node, having 2 displacement coordinates and 1 angleCoordinates\_t
: \(\dot{\mathbf{c}}\cConfig = [\dot q_0,\,\dot q_1,\,\dot \psi_0]\tp\cConfig\)velocity coordinates vector of nodeCoordinates\_tt
: \(\ddot{\mathbf{c}}\cConfig = [\ddot q_0,\,\ddot q_1,\,\ddot \psi_0]\tp\cConfig\)acceleration coordinates vector of nodeRotationMatrix
: \([A_{00},\,A_{01},\,A_{02},\,A_{10},\,\ldots,\,A_{21},\,A_{22}]\cConfig\tp\)vector with 9 components of the rotation matrix \(\LU{0b}{\Rot}\cConfig\) in row-major format, in any configuration; the rotation matrix transforms local (\(b\)) to global (0) coordinatesRotation
: \([0,\,0,\,\theta_0]\tp\cConfig = [0,\,0,\,\psi_0]\tp\cRef + [0,\,0,\,\psi_0]\tp\cConfig\)vector with 3rd angle around out of plane axisAngularVelocityLocal
: \(\LU{b}{\tomega}\cConfig = \LU{b}{[0,\,0,\,\dot \psi_0]}\cConfig\tp\)local (body-fixed) 3D angular velocity vector of nodeAngularAcceleration
: \(\LU{0}{\talpha}\cConfig = \LU{0}{[0,\,0,\,\ddot \psi_0]}\cConfig\tp\)global 3D angular acceleration vector of node
Detailed information: The node provides 2 displacement coordinates (displacement of COM, (\(q_0,q_1\)) ) and 1 rotation parameter (\(\theta_0\)). According equations need to be provided by an according object (e.g., RigidBody2D). The node leads to 3 ODE2 equations of motions, where the first 2 equations are residuals of global translational forces, and the third equation is the residual of the torque around the Z-axis (due to planar motion, local=global).
Using the rotation parameter \(\theta_{0\mathrm{config}} = \psi_{0ref} + \psi_{0\mathrm{config}}\), the rotation matrix is defined as
Example for NodeRigidBody2D: see ObjectRigidBody2D
Relevant Examples and TestModels with weblink:
beltDriveALE.py (Examples/), beltDriveReevingSystem.py (Examples/), beltDrivesComparison.py (Examples/), doublePendulum2D.py (Examples/), pendulumGeomExactBeam2D.py (Examples/), reevingSystem.py (Examples/), reevingSystemOpen.py (Examples/), simple4linkPendulumBing.py (Examples/), sliderCrank3DwithANCFbeltDrive2.py (Examples/), ANCFmovingRigidbody.py (Examples/), ANCFslidingJoint2D.py (Examples/), ANCFslidingJoint2Drigid.py (Examples/), ANCFBeamEigTest.py (TestModels/), ANCFbeltDrive.py (TestModels/), ANCFgeneralContactCircle.py (TestModels/)
The web version may not be complete. For details, consider also the Exudyn PDF documentation : theDoc.pdf