#include <TetrahedralCorotationalFEMForceField.h>


Full system matrix assembly support | |
| typedef std::pair< int, Real > | Col_Value |
| typedef vector< Col_Value > | CompressedValue |
| typedef vector< CompressedValue > | CompressedMatrix |
| typedef unsigned int | Index |
| CompressedMatrix | _stiffnesses |
Data Structures | |
| class | TetrahedronInformation |
| the information stored for each tetrahedron More... | |
Public Types | |
| enum | { SMALL = 0, LARGE = 1, POLAR = 2 } |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::VecReal | VecReal |
| typedef VecCoord | Vector |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Coord::value_type | Real |
Public Member Functions | |
| TetrahedralCorotationalFEMForceField () | |
| void | parse (core::objectmodel::BaseObjectDescription *arg) |
| Parse the given description to assign values to this object's fields and potentially other parameters. | |
| void | setPoissonRatio (Real val) |
| void | setYoungModulus (Real val) |
| void | setMethod (int val) |
| void | setUpdateStiffnessMatrix (bool val) |
| void | setComputeGlobalMatrix (bool val) |
| 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. | |
| virtual 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. | |
| virtual void | addDForce (VecDeriv &df, const VecDeriv &dx) |
| Compute the force derivative given a small displacement from the position and velocity used in the previous call to addForce(). | |
| virtual double | getPotentialEnergy (const VecCoord &x) |
| Get the potential energy associated to this ForceField. | |
| virtual void | addKToMatrix (sofa::defaulttype::BaseMatrix *, SReal, unsigned int &) |
| Compute the system matrix corresponding to k K. | |
| virtual void | handleTopologyChange () |
| Handle topological Changes. | |
| void | draw () |
| Render internal data of this object, for debugging purposes. | |
Data Fields | |
| int | method |
| Data< std::string > | f_method |
| the computation method of the displacements | |
| Real | _poissonRatio |
| DataPtr< Real > | f_poissonRatio |
| Real | _youngModulus |
| DataPtr< Real > | f_youngModulus |
| VecReal | _localStiffnessFactor |
| DataPtr< VecReal > | f_localStiffnessFactor |
| bool | _updateStiffnessMatrix |
| DataPtr< bool > | f_updateStiffnessMatrix |
| bool | _assembling |
| DataPtr< bool > | f_assembling |
Protected Types | |
Per element (tetrahedron) data | |
| typedef VecNoInit< 12, Real > | Displacement |
| Displacement vector (deformation of the 4 corners of a tetrahedron. | |
| typedef Mat< 6, 6, Real > | MaterialStiffness |
| Material stiffness matrix of a tetrahedron. | |
| typedef Mat< 12, 6, Real > | StrainDisplacement |
| Strain-displacement matrix. | |
| typedef MatNoInit< 3, 3, Real > | Transformation |
| Rigid transformation (rotation) matrix. | |
| typedef Mat< 12, 12, Real > | StiffnessMatrix |
| Stiffness matrix ( = RJKJtRt with K the Material stiffness matrix, J the strain-displacement matrix, and R the transformation matrix if any ). | |
Protected Member Functions | |
| void | computeStrainDisplacement (StrainDisplacement &J, Coord a, Coord b, Coord c, Coord d) |
| Real | peudo_determinant_for_coef (const Mat< 2, 3, Real > &M) |
| void | computeStiffnessMatrix (StiffnessMatrix &S, StiffnessMatrix &SR, const MaterialStiffness &K, const StrainDisplacement &J, const Transformation &Rot) |
| void | computeMaterialStiffness (int i, Index &a, Index &b, Index &c, Index &d) |
| void | computeForce (Displacement &F, const Displacement &Depl, const MaterialStiffness &K, const StrainDisplacement &J) |
| void | initSmall (int i, Index &a, Index &b, Index &c, Index &d) |
| void | accumulateForceSmall (Vector &f, const Vector &p, Index elementIndex) |
| void | applyStiffnessSmall (Vector &f, const Vector &x, int i=0, Index a=0, Index b=1, Index c=2, Index d=3) |
| void | initLarge (int i, Index &a, Index &b, Index &c, Index &d) |
| void | computeRotationLarge (Transformation &r, const Vector &p, const Index &a, const Index &b, const Index &c) |
| void | accumulateForceLarge (Vector &f, const Vector &p, Index elementIndex) |
| void | applyStiffnessLarge (Vector &f, const Vector &x, int i=0, Index a=0, Index b=1, Index c=2, Index d=3) |
| void | initPolar (int i, Index &a, Index &b, Index &c, Index &d) |
| void | accumulateForcePolar (Vector &f, const Vector &p, Index elementIndex) |
| void | applyStiffnessPolar (Vector &f, const Vector &x, int i=0, Index a=0, Index b=1, Index c=2, Index d=3) |
Static Protected Member Functions | |
| static void | CFTetrahedronCreationFunction (int, void *, TetrahedronInformation &, const Tetrahedron &, const helper::vector< unsigned int > &, const helper::vector< double > &) |
| the callback function called when a tetrahedron is created | |
Protected Attributes | |
| TetrahedronData < TetrahedronInformation > | tetrahedronInfo |
| container that stotes all requires information for each tetrahedron | |
| double | m_potentialEnergy |
| sofa::core::componentmodel::topology::BaseMeshTopology * | _topology |
Definition at line 67 of file TetrahedralCorotationalFEMForceField.h.
typedef std::pair<int,Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Col_Value [protected] |
Definition at line 128 of file TetrahedralCorotationalFEMForceField.h.
typedef vector< CompressedValue > sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CompressedMatrix [protected] |
Definition at line 130 of file TetrahedralCorotationalFEMForceField.h.
typedef vector< Col_Value > sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CompressedValue [protected] |
Definition at line 129 of file TetrahedralCorotationalFEMForceField.h.
| typedef DataTypes::Coord sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Coord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 74 of file TetrahedralCorotationalFEMForceField.h.
| typedef DataTypes::Deriv sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Deriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 75 of file TetrahedralCorotationalFEMForceField.h.
typedef VecNoInit<12, Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Displacement [protected] |
Displacement vector (deformation of the 4 corners of a tetrahedron.
Definition at line 89 of file TetrahedralCorotationalFEMForceField.h.
typedef unsigned int sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Index [protected] |
Definition at line 131 of file TetrahedralCorotationalFEMForceField.h.
typedef Mat<6, 6, Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::MaterialStiffness [protected] |
Material stiffness matrix of a tetrahedron.
Definition at line 92 of file TetrahedralCorotationalFEMForceField.h.
| typedef Coord::value_type sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Real |
Definition at line 76 of file TetrahedralCorotationalFEMForceField.h.
typedef Mat<12, 12, Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::StiffnessMatrix [protected] |
Stiffness matrix ( = RJKJtRt with K the Material stiffness matrix, J the strain-displacement matrix, and R the transformation matrix if any ).
Definition at line 101 of file TetrahedralCorotationalFEMForceField.h.
typedef Mat<12, 6, Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::StrainDisplacement [protected] |
typedef MatNoInit<3, 3, Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Transformation [protected] |
Rigid transformation (rotation) matrix.
Definition at line 98 of file TetrahedralCorotationalFEMForceField.h.
| typedef DataTypes::VecCoord sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::VecCoord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 70 of file TetrahedralCorotationalFEMForceField.h.
| typedef DataTypes::VecDeriv sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::VecDeriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 71 of file TetrahedralCorotationalFEMForceField.h.
| typedef DataTypes::VecReal sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::VecReal |
Definition at line 72 of file TetrahedralCorotationalFEMForceField.h.
| typedef VecCoord sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::Vector |
Definition at line 73 of file TetrahedralCorotationalFEMForceField.h.
| anonymous enum |
| SMALL | Symbol of small displacements tetrahedron solver. |
| LARGE | Symbol of large displacements tetrahedron solver. |
| POLAR | Symbol of polar displacements tetrahedron solver. |
Definition at line 79 of file TetrahedralCorotationalFEMForceField.h.
| sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::TetrahedralCorotationalFEMForceField | ( | ) | [inline] |
Definition at line 154 of file TetrahedralCorotationalFEMForceField.h.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge | ( | Vector & | f, | |
| const Vector & | p, | |||
| Index | elementIndex | |||
| ) | [inline, protected] |
Definition at line 719 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_assembling, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_stiffnesses, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_updateStiffnessMatrix, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStiffnessMatrix(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar | ( | Vector & | f, | |
| const Vector & | p, | |||
| Index | elementIndex | |||
| ) | [inline, protected] |
Definition at line 916 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_assembling, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_updateStiffnessMatrix, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStrainDisplacement(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), sofa::helper::polar_decomp(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall | ( | Vector & | f, | |
| const Vector & | p, | |||
| Index | elementIndex | |||
| ) | [inline, protected] |
Definition at line 519 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_assembling, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_stiffnesses, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStiffnessMatrix(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addDForce | ( | VecDeriv & | df, | |
| const VecDeriv & | dx | |||
| ) | [inline, virtual] |
Compute the force derivative given a small displacement from the position and velocity used in the previous call to addForce().
The derivative should be directly derived from the computations done by addForce. Any forces neglected in addDForce will be integrated explicitly (i.e. using its value at the beginning of the timestep).
If the ForceField can be represented as a matrix, this method computes $ df += K dx $
This method must be implemented by the component, and is usually called by the generic ForceField::addDForce() method.
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 193 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessPolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessSmall(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::method, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::POLAR, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::SMALL.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::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 160 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::method, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::POLAR, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::SMALL.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addKToMatrix | ( | sofa::defaulttype::BaseMatrix * | matrix, | |
| SReal | kFact, | |||
| unsigned int & | offset | |||
| ) | [inline, virtual] |
Compute the system matrix corresponding to k K.
| matrix | matrix to add the result to | |
| kFact | coefficient for stiffness contributions (i.e. DOFs term in the ODE) | |
| offset | current row/column offset |
Reimplemented from sofa::core::componentmodel::behavior::BaseForceField.
Definition at line 1075 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::defaulttype::BaseMatrix::add(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStiffnessMatrix(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessLarge | ( | Vector & | f, | |
| const Vector & | x, | |||
| int | i = 0, |
|||
| Index | a = 0, |
|||
| Index | b = 1, |
|||
| Index | c = 2, |
|||
| Index | d = 3 | |||
| ) | [inline, protected] |
Definition at line 846 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addDForce().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessPolar | ( | Vector & | f, | |
| const Vector & | x, | |||
| int | i = 0, |
|||
| Index | a = 0, |
|||
| Index | b = 1, |
|||
| Index | c = 2, |
|||
| Index | d = 3 | |||
| ) | [inline, protected] |
Definition at line 972 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addDForce().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessSmall | ( | Vector & | f, | |
| const Vector & | x, | |||
| int | i = 0, |
|||
| Index | a = 0, |
|||
| Index | b = 1, |
|||
| Index | c = 2, |
|||
| Index | d = 3 | |||
| ) | [inline, protected] |
Definition at line 624 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addDForce().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction | ( | int | tetrahedronIndex, | |
| void * | param, | |||
| TetrahedronInformation & | , | |||
| const Tetrahedron & | , | |||
| const helper::vector< unsigned int > & | , | |||
| const helper::vector< double > & | ||||
| ) | [inline, static, protected] |
the callback function called when a tetrahedron is created
Definition at line 57 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initPolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initSmall(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::method, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::POLAR, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::SMALL.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeForce | ( | Displacement & | F, | |
| const Displacement & | Depl, | |||
| const MaterialStiffness & | K, | |||
| const StrainDisplacement & | J | |||
| ) | [inline, protected] |
Definition at line 408 of file TetrahedralCorotationalFEMForceField.inl.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessPolar(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessSmall().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness | ( | int | i, | |
| Index & | a, | |||
| Index & | b, | |||
| Index & | c, | |||
| Index & | d | |||
| ) | [inline, protected] |
Definition at line 359 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_localStiffnessFactor, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_poissonRatio, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_youngModulus, cross(), dot(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeRotationLarge | ( | Transformation & | r, | |
| const Vector & | p, | |||
| const Index & | a, | |||
| const Index & | b, | |||
| const Index & | c | |||
| ) | [inline, protected] |
Definition at line 658 of file TetrahedralCorotationalFEMForceField.inl.
References cross().
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initLarge().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStiffnessMatrix | ( | StiffnessMatrix & | S, | |
| StiffnessMatrix & | SR, | |||
| const MaterialStiffness & | K, | |||
| const StrainDisplacement & | J, | |||
| const Transformation & | Rot | |||
| ) | [inline, protected] |
Definition at line 336 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::defaulttype::Mat< L, C, real >::clear(), and sofa::defaulttype::Mat< L, C, real >::transpose().
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addKToMatrix().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStrainDisplacement | ( | StrainDisplacement & | J, | |
| Coord | a, | |||
| Coord | b, | |||
| Coord | c, | |||
| Coord | d | |||
| ) | [inline, protected] |
Definition at line 250 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::peudo_determinant_for_coef().
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initPolar(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initSmall().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::draw | ( | ) | [inline, virtual] |
Render internal data of this object, for debugging purposes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 1019 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::helper::gl::glVertexT(), and sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate.
| double sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::getPotentialEnergy | ( | const VecCoord & | x | ) | [inline, virtual] |
Get the potential energy associated to this ForceField.
Used to extimate the total energy of the system by some post-stabilization techniques.
This method must be implemented by the component, and is usually called by the generic ForceField::getPotentialEnergy() method.
Implements sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 243 of file TetrahedralCorotationalFEMForceField.inl.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::handleTopologyChange | ( | ) | [inline, virtual] |
Handle topological Changes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 99 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::core::componentmodel::topology::BaseMeshTopology::firstChange(), sofa::core::componentmodel::topology::BaseMeshTopology::lastChange(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::init | ( | void | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 110 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::core::objectmodel::DataPtr< T >::beginEdit(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_assembling, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_localStiffnessFactor, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_poissonRatio, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_updateStiffnessMatrix, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_youngModulus, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initLarge | ( | int | i, | |
| Index & | a, | |||
| Index & | b, | |||
| Index & | c, | |||
| Index & | d | |||
| ) | [inline, protected] |
Definition at line 688 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStrainDisplacement(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initPolar | ( | int | i, | |
| Index & | a, | |||
| Index & | b, | |||
| Index & | c, | |||
| Index & | d | |||
| ) | [inline, protected] |
Definition at line 893 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStrainDisplacement(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::helper::polar_decomp(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initSmall | ( | int | i, | |
| Index & | a, | |||
| Index & | b, | |||
| Index & | c, | |||
| Index & | d | |||
| ) | [inline, protected] |
Definition at line 511 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStrainDisplacement(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::parse | ( | core::objectmodel::BaseObjectDescription * | arg | ) | [inline, virtual] |
Parse the given description to assign values to this object's fields and potentially other parameters.
Reimplemented from sofa::core::objectmodel::Base.
Definition at line 92 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::core::objectmodel::BaseObjectDescription::getAttribute(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setComputeGlobalMatrix().
| TetrahedralCorotationalFEMForceField< DataTypes >::Real sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::peudo_determinant_for_coef | ( | const Mat< 2, 3, Real > & | M | ) | [inline, protected] |
Definition at line 330 of file TetrahedralCorotationalFEMForceField.inl.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeStrainDisplacement().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit | ( | ) | [inline, virtual] |
Update method called when variables used in precomputation are modified.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 135 of file TetrahedralCorotationalFEMForceField.inl.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_method, sofa::core::componentmodel::topology::BaseMeshTopology::getNbTetras(), sofa::core::componentmodel::topology::BaseMeshTopology::getTetra(), sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::POLAR, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setMethod(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::SMALL, and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::init().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setComputeGlobalMatrix | ( | bool | val | ) | [inline] |
Definition at line 177 of file TetrahedralCorotationalFEMForceField.h.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_assembling, and sofa::core::objectmodel::DataPtr< T >::setValue().
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::parse().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setMethod | ( | int | val | ) | [inline] |
Definition at line 173 of file TetrahedralCorotationalFEMForceField.h.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::method.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setPoissonRatio | ( | Real | val | ) | [inline] |
Definition at line 169 of file TetrahedralCorotationalFEMForceField.h.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_poissonRatio.
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setUpdateStiffnessMatrix | ( | bool | val | ) | [inline] |
| void sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setYoungModulus | ( | Real | val | ) | [inline] |
Definition at line 171 of file TetrahedralCorotationalFEMForceField.h.
References sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_youngModulus.
| bool sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_assembling |
Definition at line 151 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall().
| VecReal sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_localStiffnessFactor |
Definition at line 147 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness().
| Real sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_poissonRatio |
Definition at line 143 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness().
CompressedMatrix sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_stiffnesses [protected] |
sofa::core::componentmodel::topology::BaseMeshTopology* sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_topology [protected] |
Definition at line 138 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addKToMatrix(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::draw(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::handleTopologyChange(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::init(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit().
| bool sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_updateStiffnessMatrix |
| Real sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::_youngModulus |
Definition at line 145 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness().
| DataPtr<bool> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_assembling |
| DataPtr<VecReal> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_localStiffnessFactor |
Definition at line 148 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::init().
| Data<std::string> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_method |
the computation method of the displacements
Definition at line 142 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit().
| DataPtr<Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_poissonRatio |
| DataPtr<bool> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_updateStiffnessMatrix |
| DataPtr<Real> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::f_youngModulus |
double sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::m_potentialEnergy [protected] |
Definition at line 136 of file TetrahedralCorotationalFEMForceField.h.
| int sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::method |
Definition at line 141 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::CFTetrahedronCreationFunction(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::setMethod().
TetrahedronData<TetrahedronInformation> sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::tetrahedronInfo [protected] |
container that stotes all requires information for each tetrahedron
Definition at line 123 of file TetrahedralCorotationalFEMForceField.h.
Referenced by sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::addKToMatrix(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessPolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::applyStiffnessSmall(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::handleTopologyChange(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initPolar(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::initSmall(), and sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::reinit().
1.5.7.1