chrono::fea::ChNodeFEAcurv Class Reference

Description

Generic finite element node with 9 degrees of freedom representing curvature.

#include <ChNodeFEAcurv.h>

Inheritance diagram for chrono::fea::ChNodeFEAcurv:
Collaboration diagram for chrono::fea::ChNodeFEAcurv:

Public Member Functions

 ChNodeFEAcurv (const ChVector<> &rxx=VNULL, const ChVector<> &ryy=VNULL, const ChVector<> &rzz=VNULL)
 
 ChNodeFEAcurv (const ChNodeFEAcurv &other)
 
ChNodeFEAcurvoperator= (const ChNodeFEAcurv &other)
 
void SetCurvatureXX (const ChVector<> &rxx)
 Set the xx 2nd derivative of position vector.
 
const ChVectorGetCurvatureXX () const
 Get the xx 2nd derivative of position vector.
 
void SetCurvatureYY (const ChVector<> &ryy)
 Set the yy 2nd derivative of position vector.
 
const ChVectorGetCurvatureYY () const
 Get the yy 2nd derivative of position vector.
 
void SetCurvatureZZ (const ChVector<> &rzz)
 Set the zz 2nd derivative of position vector.
 
const ChVectorGetCurvatureZZ () const
 Get the zz 2nd derivative of position vector.
 
void SetCurvatureXX_dt (const ChVector<> &rxx_dt)
 Set the time derivative of the xx 2nd derivative of position vector.
 
const ChVectorGetCurvatureXX_dt () const
 Get the time derivative of the xx 2nd derivative of position vector.
 
void SetCurvatureYY_dt (const ChVector<> &ryy_dt)
 Set the time derivative of the yy 2nd derivative of position vector.
 
const ChVectorGetCurvatureYY_dt () const
 Get the time derivative of the yy 2nd derivative of position vector.
 
void SetCurvatureZZ_dt (const ChVector<> &rzz_dt)
 Set the time derivative of the zz 2nd derivative of position vector.
 
const ChVectorGetCurvatureZZ_dt () const
 Get the time derivative of the zz 2nd derivative of position vector.
 
ChVectorDynamicGetMassDiagonal ()
 Get mass of the node. / TODO is this even meaningful/needed for this type of node?
 
void SetMass (double mass)
 Set mass of the node. / TODO is this even meaningful/needed for this type of node?
 
ChVariablesVariables ()
 
virtual void Relax () override
 Reset the 2nd derivatives of position vector and their time derivatives.
 
virtual void SetNoSpeedNoAcceleration () override
 Reset to no speed and acceleration.
 
virtual void SetFixed (bool val) override
 Set the 'fixed' state of the node. More...
 
virtual bool GetFixed () override
 Get the 'fixed' state of the node.
 
virtual int Get_ndof_x () const override
 Get the number of degrees of freedom.
 
virtual int Get_ndof_w () const override
 Get the number of degrees of freedom, derivative.
 
virtual void NodeIntStateGather (const unsigned int off_x, ChState &x, const unsigned int off_v, ChStateDelta &v, double &T) override
 
virtual void NodeIntStateScatter (const unsigned int off_x, const ChState &x, const unsigned int off_v, const ChStateDelta &v, const double T) override
 
virtual void NodeIntStateGatherAcceleration (const unsigned int off_a, ChStateDelta &a) override
 
virtual void NodeIntStateScatterAcceleration (const unsigned int off_a, const ChStateDelta &a) override
 
virtual void NodeIntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) override
 
virtual void NodeIntLoadResidual_F (const unsigned int off, ChVectorDynamic<> &R, const double c) override
 
virtual void NodeIntLoadResidual_Mv (const unsigned int off, ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c) override
 
virtual void NodeIntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R) override
 
virtual void NodeIntFromDescriptor (const unsigned int off_v, ChStateDelta &v) override
 
virtual void InjectVariables (ChSystemDescriptor &mdescriptor) override
 Tell to a system descriptor that there are variables of type ChVariables in this object (for further passing it to a solver)
 
virtual void VariablesFbReset () override
 Sets the 'fb' part (the known term) of the encapsulated ChVariables to zero.
 
virtual void VariablesFbLoadForces (double factor=1) override
 Adds the current forces (applied to node) into the encapsulated ChVariables, in the 'fb' part: qf+=forces*factor.
 
virtual void VariablesQbLoadSpeed () override
 Initialize the 'qb' part of the ChVariables with the current value of speeds. More...
 
virtual void VariablesQbSetSpeed (double step=0) override
 Fetches the item speed (ex. More...
 
virtual void VariablesFbIncrementMq () override
 Adds M*q (masses multiplied current 'qb') to Fb, ex. More...
 
virtual void VariablesQbIncrementPosition (double step) override
 Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor. More...
 
virtual void ArchiveOUT (ChArchiveOut &marchive) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIN (ChArchiveIn &marchive) override
 Method to allow de-serialization of transient data from archives.
 
- Public Member Functions inherited from chrono::fea::ChNodeFEAbase
virtual void SetIndex (unsigned int mindex)
 Sets the global index of the node.
 
virtual unsigned int GetIndex ()
 Gets the global index of the node.
 
- Public Member Functions inherited from chrono::ChNodeBase
 ChNodeBase (const ChNodeBase &other)
 
ChNodeBaseoperator= (const ChNodeBase &other)
 
unsigned int NodeGetOffset_x ()
 Get offset in the state vector (position part)
 
unsigned int NodeGetOffset_w ()
 Get offset in the state vector (speed part)
 
void NodeSetOffset_x (const unsigned int moff)
 Set offset in the state vector (position part)
 
void NodeSetOffset_w (const unsigned int moff)
 Set offset in the state vector (speed part)
 

Additional Inherited Members

- Public Attributes inherited from chrono::fea::ChNodeFEAbase
double m_TotalMass
 Nodal mass obtained from element masss matrix.
 
- Protected Attributes inherited from chrono::fea::ChNodeFEAbase
unsigned int g_index
 global node index
 
- Protected Attributes inherited from chrono::ChNodeBase
unsigned int offset_x
 offset in vector of state (position part)
 
unsigned int offset_w
 offset in vector of state (speed part)
 

Constructor & Destructor Documentation

chrono::fea::ChNodeFEAcurv::ChNodeFEAcurv ( const ChVector<> &  rxx = VNULL,
const ChVector<> &  ryy = VNULL,
const ChVector<> &  rzz = VNULL 
)
Parameters
rxxinitial value of xx 2nd derivative of position vector
ryyinitial value of yy 2nd derivative of position vector
rzzinitial value of zz 2nd derivative of position vector

Member Function Documentation

virtual void chrono::fea::ChNodeFEAcurv::SetFixed ( bool  val)
overridevirtual

Set the 'fixed' state of the node.

If true, its current curvature values are not changed by solver.

Implements chrono::fea::ChNodeFEAbase.

void chrono::fea::ChNodeFEAcurv::VariablesFbIncrementMq ( )
overridevirtual

Adds M*q (masses multiplied current 'qb') to Fb, ex.

if qb is initialized with v_old using VariablesQbLoadSpeed, this method can be used in timestepping schemes that do: M*v_new = M*v_old + forces*dt

Reimplemented from chrono::ChNodeBase.

void chrono::fea::ChNodeFEAcurv::VariablesQbIncrementPosition ( double  step)
overridevirtual

Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor.

pos+=qb*step If qb is a speed, this behaves like a single step of 1-st order numerical integration (Eulero integration).

Reimplemented from chrono::ChNodeBase.

void chrono::fea::ChNodeFEAcurv::VariablesQbLoadSpeed ( )
overridevirtual

Initialize the 'qb' part of the ChVariables with the current value of speeds.

Reimplemented from chrono::ChNodeBase.

void chrono::fea::ChNodeFEAcurv::VariablesQbSetSpeed ( double  step = 0)
overridevirtual

Fetches the item speed (ex.

linear velocity, in xyz nodes) from the 'qb' part of the ChVariables and sets it as the current item speed. If 'step' is not 0, also should compute the approximate acceleration of the item using backward differences, that is accel=(new_speed-old_speed)/step. Mostly used after the solver provided the solution in ChVariables.

Reimplemented from chrono::ChNodeBase.