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 :ref:`ODE2 <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
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}}}\cRefglobal 3D position vector of node; {\mathbf{u}}\cRef=0Displacement
: \LU{0}{{\mathbf{u}}}\cConfig = [q_0,\,q_1,\,0]\cConfig\tpglobal 3D displacement vector of nodeVelocity
: \LU{0}{{\mathbf{v}}}\cConfig = [\dot q_0,\,\dot q_1,\,0]\cConfig\tpglobal 3D velocity vector of nodeAcceleration
: \LU{0}{{\mathbf{a}}}\cConfig = [\ddot q_0,\,\ddot q_1,\,0]\cConfig\tpglobal 3D acceleration vector of nodeAngularVelocity
: \LU{0}{\tomega}\cConfig = \LU{0}{[0,\,0,\,\dot \psi_0]}\cConfig\tpglobal 3D angular velocity vector of nodeCoordinates
: {\mathbf{c}}\cConfig = [q_0,\,q_1,\,\psi_0]\tp\cConfigcoordinate 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\cConfigvelocity coordinates vector of nodeCoordinates\_tt
: \ddot{\mathbf{c}}\cConfig = [\ddot q_0,\,\ddot q_1,\,\ddot \psi_0]\tp\cConfigacceleration coordinates vector of nodeRotationMatrix
: [A_{00},\,A_{01},\,A_{02},\,A_{10},\,\ldots,\,A_{21},\,A_{22}]\cConfig\tpvector 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\cConfigvector with 3rd angle around out of plane axisAngularVelocityLocal
: \LU{b}{\tomega}\cConfig = \LU{b}{[0,\,0,\,\dot \psi_0]}\cConfig\tplocal (body-fixed) 3D angular velocity vector of nodeAngularAcceleration
: \LU{0}{\talpha}\cConfig = \LU{0}{[0,\,0,\,\ddot \psi_0]}\cConfig\tpglobal 3D angular acceleration vector of node
Detailed information: The node provides 2 displacement coordinates (displacement of :ref:`COM <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
\LU{0b}{\Rot}\cConfig = \mr{\cos(\theta_0)}{-\sin(\theta_0)}{0}{\sin(\theta_0)}{\cos(\theta_0)}{0}{0}{0}{1}\cConfig
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