Description
Specialized class for representing a N-DOF item for a system, that is an item with mass matrix and associate variables.
The main difference from the base class ChVariables is that the base class does not create any mass matrix, while this minimal specialization at least creates a NxN mass matrix. Of course a generic (uncompressed) NxN matrix is used. This means that, for example, this class could be used for 3D rigid bodies if N=6, however it would be better to implement a more optimized class which does not create a full 6x6 matrix (since only few elements on the diagonal would be different from 0 in case of rigid bodies), so use the ChVariablesBody in this case..
#include <ChVariablesGeneric.h>
Public Member Functions | |
ChVariablesGeneric (int m_ndof=1) | |
ChVariablesGeneric & | operator= (const ChVariablesGeneric &other) |
Assignment operator: copy from other object. | |
ChMatrixDynamic & | GetMass () |
Access the inertia matrix. | |
ChMatrixDynamic & | GetInvMass () |
Access the inverted inertia matrix. | |
virtual int | Get_ndof () const override |
The number of scalar variables in the vector qb (dof=degrees of freedom) | |
virtual void | Compute_invMb_v (ChVectorRef result, ChVectorConstRef vect) const override |
Computes the product of the inverse mass matrix by a vector, and add to result: result = [invMb]*vect. | |
virtual void | Compute_inc_invMb_v (ChVectorRef result, ChVectorConstRef vect) const override |
Computes the product of the inverse mass matrix by a vector, and increment result: result += [invMb]*vect. | |
virtual void | Compute_inc_Mb_v (ChVectorRef result, ChVectorConstRef vect) const override |
Computes the product of the mass matrix by a vector, and set in result: result = [Mb]*vect. | |
virtual void | MultiplyAndAdd (ChVectorRef result, ChVectorConstRef vect, const double c_a) const override |
Computes the product of the corresponding block in the system matrix (ie. More... | |
virtual void | DiagonalAdd (ChVectorRef result, const double c_a) const override |
Add the diagonal of the mass matrix scaled by c_a, to 'result'. More... | |
virtual void | Build_M (ChSparseMatrix &storage, int insrow, int inscol, const double c_a) override |
Build the mass matrix (for these variables) scaled by c_a, storing it in 'storage' sparse matrix, at given column/row offset. More... | |
Public Member Functions inherited from chrono::ChVariables | |
ChVariables (int m_ndof) | |
ChVariables & | operator= (const ChVariables &other) |
Assignment operator: copy from other object. | |
void | SetDisabled (bool mdis) |
Deactivates/freezes the variable (these variables won't be modified by the system solver). | |
bool | IsDisabled () const |
Check if the variables have been deactivated (these variables won't be modified by the system solver). | |
bool | IsActive () const |
Check if these variables are currently active. More... | |
ChVectorRef | Get_qb () |
Returns reference to qb, body-relative part of degrees of freedom q in system: More... | |
virtual void | Compute_fb () |
Compute fb, body-relative part of known vector f in system. More... | |
ChVectorRef | Get_fb () |
Returns reference to fb, body-relative part of known vector f in system. More... | |
void | SetOffset (int moff) |
Set offset in global q vector (set automatically by ChSystemDescriptor) | |
int | GetOffset () const |
Get offset in global q vector. | |
virtual void | ArchiveOUT (ChArchiveOut &marchive) |
virtual void | ArchiveIN (ChArchiveIn &marchive) |
Additional Inherited Members | |
Protected Attributes inherited from chrono::ChVariables | |
int | offset |
offset in global q state vector (needed by some solvers) | |
Member Function Documentation
◆ Build_M()
|
overridevirtual |
Build the mass matrix (for these variables) scaled by c_a, storing it in 'storage' sparse matrix, at given column/row offset.
Note, most iterative solvers don't need to know mass matrix explicitly.
Implements chrono::ChVariables.
◆ DiagonalAdd()
|
overridevirtual |
Add the diagonal of the mass matrix scaled by c_a, to 'result'.
NOTE: the 'result' vector must already have the size of system unknowns, ie the size of the total variables & constraints in the system; the procedure will use the ChVariable offset (that must be already updated) as index.
Implements chrono::ChVariables.
◆ MultiplyAndAdd()
|
overridevirtual |
Computes the product of the corresponding block in the system matrix (ie.
the mass matrix) by 'vect', scale by c_a, and add to 'result'. NOTE: the 'vect' and 'result' vectors must already have the size of the total variables&constraints in the system; the procedure will use the ChVariable offsets (that must be already updated) to know the indexes in result and vect.
Implements chrono::ChVariables.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/solver/ChVariablesGeneric.h
- /builds/uwsbel/chrono/src/chrono/solver/ChVariablesGeneric.cpp