Description
Class for a node, that has some degrees of freedom and that contain a proxy to the solver.
It is like a lightweight version of a ChPhysicsItem; often a ChPhysicsItem is used as a container for a cluster of these ChNodeBase.
#include <ChNodeBase.h>
Public Member Functions | |
ChNodeBase (const ChNodeBase &other) | |
ChNodeBase & | operator= (const ChNodeBase &other) |
virtual int | Get_ndof_x () const =0 |
Get the number of degrees of freedom. | |
virtual int | Get_ndof_w () const |
Get the number of degrees of freedom, derivative This might be different from ndof if quaternions are used for rotations, as derivative might be angular velocity. | |
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) | |
virtual void | NodeIntStateGather (const unsigned int off_x, ChState &x, const unsigned int off_v, ChStateDelta &v, double &T) |
virtual void | NodeIntStateScatter (const unsigned int off_x, const ChState &x, const unsigned int off_v, const ChStateDelta &v, const double T) |
virtual void | NodeIntStateGatherAcceleration (const unsigned int off_a, ChStateDelta &a) |
virtual void | NodeIntStateScatterAcceleration (const unsigned int off_a, const ChStateDelta &a) |
virtual void | NodeIntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) |
virtual void | NodeIntLoadResidual_F (const unsigned int off, ChVectorDynamic<> &R, const double c) |
virtual void | NodeIntLoadResidual_Mv (const unsigned int off, ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c) |
virtual void | NodeIntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R) |
virtual void | NodeIntFromDescriptor (const unsigned int off_v, ChStateDelta &v) |
virtual void | InjectVariables (ChSystemDescriptor &mdescriptor) |
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 () |
Sets the 'fb' part (the known term) of the encapsulated ChVariables to zero. | |
virtual void | VariablesFbLoadForces (double factor=1) |
Adds the current forces (applied to node) into the encapsulated ChVariables, in the 'fb' part: qf+=forces*factor. | |
virtual void | VariablesQbLoadSpeed () |
Initialize the 'qb' part of the ChVariables with the current value of speeds. | |
virtual void | VariablesFbIncrementMq () |
Adds M*q (masses multiplied current 'qb') to Fb, ex. More... | |
virtual void | VariablesQbSetSpeed (double step=0) |
Fetches the item speed (ex. More... | |
virtual void | VariablesQbIncrementPosition (double step) |
Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor. More... | |
virtual void | ArchiveOUT (ChArchiveOut &marchive) |
Method to allow serialization of transient data to archives. | |
virtual void | ArchiveIN (ChArchiveIn &marchive) |
Method to allow de-serialization of transient data from archives. More... | |
Protected Attributes | |
unsigned int | offset_x |
offset in vector of state (position part) | |
unsigned int | offset_w |
offset in vector of state (speed part) | |
Member Function Documentation
◆ ArchiveIN()
|
virtual |
Method to allow de-serialization of transient data from archives.
Method to allow de serialization of transient data from archives.
Reimplemented in chrono::fea::ChNodeFEAxyzrot, chrono::fea::ChNodeFEAxyz, chrono::fea::ChNodeFEAxyzDDD, chrono::fea::ChNodeFEAxyzDD, chrono::fea::ChNodeFEAxyzD, chrono::ChNodeSPH, chrono::fea::ChNodeFEAcurv, chrono::ChNodeXYZ, and chrono::fea::ChNodeFEAxyzP.
◆ VariablesFbIncrementMq()
|
inlinevirtual |
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 in chrono::fea::ChNodeFEAxyz, chrono::fea::ChNodeFEAcurv, chrono::fea::ChNodeFEAxyzrot, chrono::fea::ChNodeFEAxyzP, chrono::fea::ChNodeFEAxyzDDD, chrono::fea::ChNodeFEAxyzDD, and chrono::fea::ChNodeFEAxyzD.
◆ VariablesQbIncrementPosition()
|
inlinevirtual |
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 in chrono::fea::ChNodeFEAxyz, chrono::fea::ChNodeFEAcurv, chrono::fea::ChNodeFEAxyzrot, chrono::fea::ChNodeFEAxyzP, chrono::fea::ChNodeFEAxyzDDD, chrono::fea::ChNodeFEAxyzDD, and chrono::fea::ChNodeFEAxyzD.
◆ VariablesQbSetSpeed()
|
inlinevirtual |
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 in chrono::fea::ChNodeFEAxyz, chrono::fea::ChNodeFEAcurv, chrono::fea::ChNodeFEAxyzrot, chrono::fea::ChNodeFEAxyzP, chrono::fea::ChNodeFEAxyzDDD, chrono::fea::ChNodeFEAxyzDD, and chrono::fea::ChNodeFEAxyzD.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/physics/ChNodeBase.h
- /builds/uwsbel/chrono/src/chrono/physics/ChNodeBase.cpp