#include <MatrixMass.h>


Public Types | |
| typedef core::componentmodel::behavior::Mass < DataTypes > | Inherited |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef DataTypes::Real | Real |
| typedef helper::vector< MassType > | VecMass |
Public Member Functions | |
| MatrixMass () | |
| ~MatrixMass () | |
| void | clear () |
| void | resize (int vsize) |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| virtual void | reinit () |
| Update method called when variables used in precomputation are modified. | |
| void | addMDx (VecDeriv &f, const VecDeriv &dx, double factor=1.0) |
| f += factor M dx | |
| void | accFromF (VecDeriv &a, const VecDeriv &f) |
| dx = M^-1 f | |
| void | addForce (VecDeriv &f, const VecCoord &x, const VecDeriv &v) |
| Given the current position and velocity states, update the current force vector by computing and adding the forces associated with this ForceField. | |
| void | addGravityToV (double dt) |
| perform v += dt*g operation. Used if mass wants to added G separately from the other forces to v. | |
| double | getKineticEnergy (const VecDeriv &v) |
| vMv/2 using dof->getV() | |
| double | getPotentialEnergy (const VecCoord &x) |
| Mgx potential in a uniform gravity field, null at origin. | |
| void | addMToMatrix (defaulttype::BaseMatrix *mat, double mFact, unsigned int &offset) |
| Add Mass contribution to global Matrix assembling. | |
| double | getElementMass (unsigned int index) |
| return the mass relative to the DOF index | |
Data Fields | |
| Data< VecMass > | f_mass |
| Data< bool > | _lumped |
| Data< Real > | _defaultValue |
| VecMass | _lumpedMasses |
| lumped mass matrices | |
| const VecMass * | _usedMassMatrices |
| what VecMass is used to represent matrices ? f_mass.getValue() or _lumpedMasses ? | |
Protected Member Functions | |
| MassType | diagonalMass (const Real &m) |
| return a diagonal matrix mass with value m on all the diagonal | |
| MassType | lump (const MassType &m) |
| lump the matrix m, ie sum line on diagonal | |
| void | lumpMatrices () |
| lump all mass matrices | |
| void | defaultDiagonalMatrices () |
| compute default diagonal matrices | |
Protected Attributes | |
| bool | _usingDefaultDiagonalMatrices |
| default diagonal matrices are used | |
By default a diagonal matrix is created with diagonal to _defaultValue. Else matrices have to be given in the .scn file. It is possible to use lumped matrices.
Definition at line 54 of file MatrixMass.h.
| typedef DataTypes::Coord sofa::component::mass::MatrixMass< DataTypes, MassType >::Coord |
Reimplemented from sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 60 of file MatrixMass.h.
| typedef DataTypes::Deriv sofa::component::mass::MatrixMass< DataTypes, MassType >::Deriv |
Reimplemented from sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 61 of file MatrixMass.h.
| typedef core::componentmodel::behavior::Mass<DataTypes> sofa::component::mass::MatrixMass< DataTypes, MassType >::Inherited |
Definition at line 57 of file MatrixMass.h.
| typedef DataTypes::Real sofa::component::mass::MatrixMass< DataTypes, MassType >::Real |
Definition at line 62 of file MatrixMass.h.
| typedef DataTypes::VecCoord sofa::component::mass::MatrixMass< DataTypes, MassType >::VecCoord |
Reimplemented from sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 58 of file MatrixMass.h.
| typedef DataTypes::VecDeriv sofa::component::mass::MatrixMass< DataTypes, MassType >::VecDeriv |
Reimplemented from sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 59 of file MatrixMass.h.
| typedef helper::vector<MassType> sofa::component::mass::MatrixMass< DataTypes, MassType >::VecMass |
Definition at line 64 of file MatrixMass.h.
| sofa::component::mass::MatrixMass< DataTypes, MassType >::MatrixMass | ( | ) | [inline] |
Definition at line 77 of file MatrixMass.h.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumped, and sofa::core::objectmodel::Base::initData().
| sofa::component::mass::MatrixMass< DataTypes, MassType >::~MatrixMass | ( | ) | [inline] |
Definition at line 57 of file MatrixMass.inl.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::accFromF | ( | VecDeriv & | a, | |
| const VecDeriv & | f | |||
| ) | [inline, virtual] |
dx = M^-1 f
This method must be implemented by the component.
Implements sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 111 of file MatrixMass.inl.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::addForce | ( | VecDeriv & | f, | |
| const VecCoord & | x, | |||
| const VecDeriv & | v | |||
| ) | [inline, virtual] |
Given the current position and velocity states, update the current force vector by computing and adding the forces associated with this ForceField.
If the ForceField can be represented as a matrix, this method computes $ f += B v + K x $
This method must be implemented by the component, and is usually called by the generic ForceField::addForce() method.
Implements sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 151 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_usedMassMatrices, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::objectmodel::BaseContext::getPositionInWorld(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::objectmodel::BaseContext::getVelocityBasedLinearAccelerationInWorld(), sofa::core::objectmodel::BaseContext::getVelocityInWorld(), sofa::core::componentmodel::behavior::inertiaForce(), and sofa::core::componentmodel::behavior::BaseMass::m_separateGravity.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::addGravityToV | ( | double | dt | ) | [inline, virtual] |
perform v += dt*g operation. Used if mass wants to added G separately from the other forces to v.
Implements sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 132 of file MatrixMass.inl.
References sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getV(), and sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::addMDx | ( | VecDeriv & | f, | |
| const VecDeriv & | dx, | |||
| double | factor = 1.0 | |||
| ) | [inline, virtual] |
f += factor M dx
This method must be implemented by the component.
Implements sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 91 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_usedMassMatrices.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::addMToMatrix | ( | defaulttype::BaseMatrix * | mat, | |
| double | mFact, | |||
| unsigned int & | offset | |||
| ) | [inline, virtual] |
Add Mass contribution to global Matrix assembling.
Implements sofa::core::componentmodel::behavior::BaseMass.
Definition at line 179 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_usedMassMatrices.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::clear | ( | ) | [inline] |
Definition at line 66 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit().
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices | ( | ) | [inline, protected] |
compute default diagonal matrices
Definition at line 281 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_defaultValue, sofa::component::mass::MatrixMass< DataTypes, MassType >::_usingDefaultDiagonalMatrices, sofa::component::mass::MatrixMass< DataTypes, MassType >::diagonalMass(), sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass, sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), and sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit().
| MassType sofa::component::mass::MatrixMass< DataTypes, MassType >::diagonalMass | ( | const Real & | m | ) | [inline, protected] |
return a diagonal matrix mass with value m on all the diagonal
Definition at line 251 of file MatrixMass.inl.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices().
| double sofa::component::mass::MatrixMass< DataTypes, MassType >::getElementMass | ( | unsigned int | index | ) | [inline, virtual] |
return the mass relative to the DOF index
Implements sofa::core::componentmodel::behavior::BaseMass.
Definition at line 190 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_defaultValue, and sofa::core::objectmodel::Data< T >::getValue().
| double sofa::component::mass::MatrixMass< DataTypes, MassType >::getKineticEnergy | ( | const VecDeriv & | v | ) | [inline, virtual] |
vMv/2 using dof->getV()
Implements sofa::core::componentmodel::behavior::Mass< DataTypes >.
Definition at line 117 of file MatrixMass.inl.
| double sofa::component::mass::MatrixMass< DataTypes, MassType >::getPotentialEnergy | ( | const VecCoord & | x | ) | [inline, virtual] |
Mgx potential in a uniform gravity field, null at origin.
Implements sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 124 of file MatrixMass.inl.
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::init | ( | void | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 206 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumped, sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumpedMasses, sofa::component::mass::MatrixMass< DataTypes, MassType >::_usedMassMatrices, sofa::component::mass::MatrixMass< DataTypes, MassType >::_usingDefaultDiagonalMatrices, sofa::component::mass::MatrixMass< DataTypes, MassType >::clear(), sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices(), sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass, sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::init(), sofa::component::mass::MatrixMass< DataTypes, MassType >::lumpMatrices(), and sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate.
| MassType sofa::component::mass::MatrixMass< DataTypes, MassType >::lump | ( | const MassType & | m | ) | [inline, protected] |
lump the matrix m, ie sum line on diagonal
Definition at line 259 of file MatrixMass.inl.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::lumpMatrices().
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::lumpMatrices | ( | ) | [inline, protected] |
lump all mass matrices
Definition at line 271 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumpedMasses, sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass, and sofa::component::mass::MatrixMass< DataTypes, MassType >::lump().
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit().
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit | ( | ) | [inline, virtual] |
Update method called when variables used in precomputation are modified.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 231 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumped, sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumpedMasses, sofa::component::mass::MatrixMass< DataTypes, MassType >::_usedMassMatrices, sofa::component::mass::MatrixMass< DataTypes, MassType >::_usingDefaultDiagonalMatrices, sofa::component::mass::MatrixMass< DataTypes, MassType >::clear(), sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices(), sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass, sofa::core::objectmodel::Data< T >::getValue(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::lumpMatrices().
| void sofa::component::mass::MatrixMass< DataTypes, MassType >::resize | ( | int | vsize | ) | [inline] |
Definition at line 75 of file MatrixMass.inl.
References sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass.
| Data< Real > sofa::component::mass::MatrixMass< DataTypes, MassType >::_defaultValue |
Definition at line 69 of file MatrixMass.h.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::getElementMass().
| Data< bool > sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumped |
| VecMass sofa::component::mass::MatrixMass< DataTypes, MassType >::_lumpedMasses |
lumped mass matrices
Definition at line 71 of file MatrixMass.h.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), sofa::component::mass::MatrixMass< DataTypes, MassType >::lumpMatrices(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit().
| const VecMass* sofa::component::mass::MatrixMass< DataTypes, MassType >::_usedMassMatrices |
what VecMass is used to represent matrices ? f_mass.getValue() or _lumpedMasses ?
Definition at line 73 of file MatrixMass.h.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::addForce(), sofa::component::mass::MatrixMass< DataTypes, MassType >::addMDx(), sofa::component::mass::MatrixMass< DataTypes, MassType >::addMToMatrix(), sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit().
bool sofa::component::mass::MatrixMass< DataTypes, MassType >::_usingDefaultDiagonalMatrices [protected] |
default diagonal matrices are used
Definition at line 120 of file MatrixMass.h.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices(), sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit().
| Data< VecMass > sofa::component::mass::MatrixMass< DataTypes, MassType >::f_mass |
Definition at line 67 of file MatrixMass.h.
Referenced by sofa::component::mass::MatrixMass< DataTypes, MassType >::clear(), sofa::component::mass::MatrixMass< DataTypes, MassType >::defaultDiagonalMatrices(), sofa::component::mass::MatrixMass< DataTypes, MassType >::init(), sofa::component::mass::MatrixMass< DataTypes, MassType >::lumpMatrices(), sofa::component::mass::MatrixMass< DataTypes, MassType >::reinit(), and sofa::component::mass::MatrixMass< DataTypes, MassType >::resize().
1.5.7.1