#include <HexahedronFEMForceField.h>


Public Types | |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef VecCoord | Vector |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Coord::value_type | Real |
| typedef core::componentmodel::topology::BaseMeshTopology::index_type | Index |
| typedef core::componentmodel::topology::BaseMeshTopology::Cube | Element |
| typedef core::componentmodel::topology::BaseMeshTopology::SeqCubes | VecElement |
Public Member Functions | |
| HexahedronFEMForceField () | |
| 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. | |
| void | addKToMatrix (sofa::defaulttype::BaseMatrix *mat, SReal k, unsigned int &offset) |
| Compute the system matrix corresponding to k K. | |
| 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 | |
| Data< Real > | f_poissonRatio |
| Data< Real > | f_youngModulus |
| Data< bool > | f_updateStiffnessMatrix |
| Data< bool > | f_assembling |
Static Public Attributes | |
| static const int | LARGE = 0 |
| Symbol of mean large displacements tetrahedron solver (frame = edges mean on the 3 directions). | |
| static const int | POLAR = 1 |
| Symbol of polar displacements tetrahedron solver. | |
Protected Types | |
| typedef Vec< 24, Real > | Displacement |
| the displacement vector | |
| typedef Mat< 6, 6, Real > | MaterialStiffness |
| the matrix of material stiffness | |
| typedef vector< MaterialStiffness > | VecMaterialStiffness |
| a vector of material stiffness matrices | |
| typedef Mat< 24, 24, Real > | ElementStiffness |
| typedef helper::vector < ElementStiffness > | VecElementStiffness |
| typedef Mat< 3, 3, Real > | Mat33 |
| typedef Mat33 | Transformation |
| matrix for rigid transformations like rotations | |
| typedef std::pair< int, Real > | Col_Value |
| typedef vector< Col_Value > | CompressedValue |
| typedef vector< CompressedValue > | CompressedMatrix |
Protected Member Functions | |
| virtual void | computeElementStiffness (ElementStiffness &K, const MaterialStiffness &M, const helper::fixed_array< Coord, 8 > &nodes, const int elementIndice, double stiffnessFactor=1.0) |
| Mat33 | integrateStiffness (int signx0, int signy0, int signz0, int signx1, int signy1, int signz1, const Real u, const Real v, const Real w, const Mat33 &J_1) |
| void | computeMaterialStiffness (int i) |
| void | computeForce (Displacement &F, const Displacement &Depl, const ElementStiffness &K) |
| void | initLarge (int i, const Element &elem) |
| void | computeRotationLarge (Transformation &r, Coord &edgex, Coord &edgey) |
| virtual void | accumulateForceLarge (Vector &f, const Vector &p, int i, const Element &elem) |
| void | initPolar (int i, const Element &elem) |
| void | computeRotationPolar (Transformation &r, Vec< 8, Coord > &nodes) |
| virtual void | accumulateForcePolar (Vector &f, const Vector &p, int i, const Element &elem) |
Protected Attributes | |
| VecMaterialStiffness | _materialsStiffnesses |
| the material stiffness matrices vector | |
| Data< VecElementStiffness > | _elementStiffnesses |
| CompressedMatrix | _stiffnesses |
| double | m_potentialEnergy |
| sofa::core::componentmodel::topology::BaseMeshTopology * | _mesh |
| topology::SparseGridTopology * | _sparseGrid |
| const VecElement * | _indexedElements |
| Data< VecCoord > | _initialPoints |
| the intial positions of the points | |
| Mat< 8, 3, int > | _coef |
| coef of each vertices to compute the strain stress matrix | |
| vector< helper::fixed_array < Coord, 8 > > | _rotatedInitialElements |
| The initials positions in its frame. | |
| vector< Transformation > | _rotations |
| bool | _alreadyInit |
Static Protected Attributes | |
| static const int | _indices [8] = {0,1,3,2,4,5,7,6} |
| indices ordering is different than in topology node | |
Corotational hexahedron from {NMPCPF05, author = "Nesme, Matthieu and Marchal, Maud and Promayon, Emmanuel and Chabanas, Matthieu and Payan, Yohan and Faure, Fran\c{c}ois", title = "Physically Realistic Interactive Simulation for Biological Soft Tissues", journal = "Recent Research Developments in Biomechanics", volume = "2", year = "2005", keywords = "surgical simulation physical animation truth cube", url = "http://www-evasion.imag.fr/Publications/2005/NMPCPF05" }
WARNING: indices ordering is different than in topology node
Y 7---------6 ^ / /| |/ Z / | 3----^----2 | | / | | | 4------|--5 | / | / |/ |/ 0---------1-->X
Definition at line 74 of file HexahedronFEMForceField.h.
typedef std::pair<int,Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Col_Value [protected] |
Definition at line 117 of file HexahedronFEMForceField.h.
typedef vector< CompressedValue > sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::CompressedMatrix [protected] |
Definition at line 119 of file HexahedronFEMForceField.h.
typedef vector< Col_Value > sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::CompressedValue [protected] |
Definition at line 118 of file HexahedronFEMForceField.h.
| typedef DataTypes::Coord sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Coord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 80 of file HexahedronFEMForceField.h.
| typedef DataTypes::Deriv sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Deriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 81 of file HexahedronFEMForceField.h.
typedef Vec<24, Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Displacement [protected] |
| typedef core::componentmodel::topology::BaseMeshTopology::Cube sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Element |
Definition at line 89 of file HexahedronFEMForceField.h.
typedef Mat<24, 24, Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::ElementStiffness [protected] |
Definition at line 109 of file HexahedronFEMForceField.h.
| typedef core::componentmodel::topology::BaseMeshTopology::index_type sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Index |
Definition at line 84 of file HexahedronFEMForceField.h.
typedef Mat<3, 3, Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Mat33 [protected] |
Definition at line 113 of file HexahedronFEMForceField.h.
typedef Mat<6, 6, Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::MaterialStiffness [protected] |
| typedef Coord::value_type sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Real |
Definition at line 82 of file HexahedronFEMForceField.h.
typedef Mat33 sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Transformation [protected] |
matrix for rigid transformations like rotations
Definition at line 114 of file HexahedronFEMForceField.h.
| typedef DataTypes::VecCoord sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::VecCoord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 77 of file HexahedronFEMForceField.h.
| typedef DataTypes::VecDeriv sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::VecDeriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 78 of file HexahedronFEMForceField.h.
| typedef core::componentmodel::topology::BaseMeshTopology::SeqCubes sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::VecElement |
Definition at line 90 of file HexahedronFEMForceField.h.
typedef helper::vector<ElementStiffness> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::VecElementStiffness [protected] |
Definition at line 110 of file HexahedronFEMForceField.h.
typedef vector<MaterialStiffness> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::VecMaterialStiffness [protected] |
| typedef VecCoord sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::Vector |
Definition at line 79 of file HexahedronFEMForceField.h.
| sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::HexahedronFEMForceField | ( | ) | [inline] |
Definition at line 145 of file HexahedronFEMForceField.h.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_alreadyInit, and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_coef.
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge | ( | Vector & | f, | |
| const Vector & | p, | |||
| int | i, | |||
| const Element & | elem | |||
| ) | [inline, protected, virtual] |
Definition at line 893 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotatedInitialElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotations, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid, sofa::component::topology::SparseGridTopology::BOUNDARY, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_updateStiffnessMatrix, sofa::component::topology::SparseGridTopology::getType(), sofa::core::objectmodel::Data< T >::getValue(), and SOFA_NEW_HEXA.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar | ( | Vector & | f, | |
| const Vector & | p, | |||
| int | i, | |||
| const Element & | elem | |||
| ) | [inline, protected, virtual] |
Definition at line 1021 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotatedInitialElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotations, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid, sofa::component::topology::SparseGridTopology::BOUNDARY, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationPolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_updateStiffnessMatrix, sofa::component::topology::SparseGridTopology::getType(), sofa::core::objectmodel::Data< T >::getValue(), and SOFA_NEW_HEXA.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::HexahedronFEMForceField< 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 241 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotations, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeForce(), and SOFA_NEW_HEXA.
| void sofa::component::forcefield::HexahedronFEMForceField< 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 208 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::method, and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::POLAR.
| void sofa::component::forcefield::HexahedronFEMForceField< 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 1082 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotations, and sofa::defaulttype::BaseMatrix::add().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness | ( | ElementStiffness & | K, | |
| const MaterialStiffness & | M, | |||
| const helper::fixed_array< Coord, 8 > & | nodes, | |||
| const int | elementIndice, | |||
| double | stiffnessFactor = 1.0 | |||
| ) | [inline, protected, virtual] |
Definition at line 311 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_coef, sofa::defaulttype::determinant(), sofa::core::objectmodel::BaseObject::f_printLog, sofa::defaulttype::Mat< L, C, real >::fill(), sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::integrateStiffness(), and norm().
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeForce | ( | Displacement & | F, | |
| const Displacement & | Depl, | |||
| const ElementStiffness & | K | |||
| ) | [inline, protected] |
Definition at line 804 of file HexahedronFEMForceField.inl.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addDForce().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeMaterialStiffness | ( | int | i | ) | [inline, protected] |
Definition at line 778 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_poissonRatio, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_youngModulus, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationLarge | ( | Transformation & | r, | |
| Coord & | edgex, | |||
| Coord & | edgey | |||
| ) | [inline, protected] |
Definition at line 858 of file HexahedronFEMForceField.inl.
References cross().
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationPolar | ( | Transformation & | r, | |
| Vec< 8, Coord > & | nodes | |||
| ) | [inline, protected] |
Definition at line 989 of file HexahedronFEMForceField.inl.
References sofa::helper::polar_decomp().
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::draw | ( | ) | [inline, virtual] |
Render internal data of this object, for debugging purposes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 1128 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid, sofa::component::topology::SparseGridTopology::BOUNDARY, sofa::core::objectmodel::BaseObject::getContext(), sofa::component::topology::SparseGridTopology::getType(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::helper::gl::glVertexT(), and sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate.
| double sofa::component::forcefield::HexahedronFEMForceField< 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 284 of file HexahedronFEMForceField.inl.
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init | ( | void | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 82 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_alreadyInit, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_initialPoints, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_mesh, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotatedInitialElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotations, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getHexas(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::objectmodel::Base::getName(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbHexas(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::objectmodel::Base::getTypeName(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge | ( | int | i, | |
| const Element & | elem | |||
| ) | [inline, protected] |
Definition at line 821 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_initialPoints, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotatedInitialElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid, sofa::component::topology::SparseGridTopology::BOUNDARY, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::topology::SparseGridTopology::getType(), and SOFA_NEW_HEXA.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar | ( | int | i, | |
| const Element & | elem | |||
| ) | [inline, protected] |
Definition at line 959 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_initialPoints, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotatedInitialElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid, sofa::component::topology::SparseGridTopology::BOUNDARY, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationPolar(), sofa::component::topology::SparseGridTopology::getType(), and SOFA_NEW_HEXA.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
| HexahedronFEMForceField< DataTypes >::Mat33 sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::integrateStiffness | ( | int | signx0, | |
| int | signy0, | |||
| int | signz0, | |||
| int | signx1, | |||
| int | signy1, | |||
| int | signz1, | |||
| const Real | u, | |||
| const Real | v, | |||
| const Real | w, | |||
| const Mat33 & | J_1 | |||
| ) | [inline, protected] |
Definition at line 546 of file HexahedronFEMForceField.inl.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness().
| void sofa::component::forcefield::HexahedronFEMForceField< 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 75 of file HexahedronFEMForceField.inl.
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit | ( | ) | [inline, virtual] |
Update method called when variables used in precomputation are modified.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 164 of file HexahedronFEMForceField.inl.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_method, sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::method, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::POLAR, and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setMethod().
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setComputeGlobalMatrix | ( | bool | val | ) | [inline] |
Definition at line 204 of file HexahedronFEMForceField.h.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_assembling, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setMethod | ( | int | val | ) | [inline] |
Definition at line 192 of file HexahedronFEMForceField.h.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_method, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::method, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::POLAR, and sofa::core::objectmodel::Data< T >::setValue().
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setPoissonRatio | ( | Real | val | ) | [inline] |
Definition at line 188 of file HexahedronFEMForceField.h.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_poissonRatio, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setUpdateStiffnessMatrix | ( | bool | val | ) | [inline] |
Definition at line 202 of file HexahedronFEMForceField.h.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_updateStiffnessMatrix, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setYoungModulus | ( | Real | val | ) | [inline] |
Definition at line 190 of file HexahedronFEMForceField.h.
References sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_youngModulus, and sofa::core::objectmodel::Data< T >::setValue().
bool sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_alreadyInit [protected] |
Definition at line 247 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::HexahedronFEMForceField(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init().
Mat<8,3,int> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_coef [protected] |
coef of each vertices to compute the strain stress matrix
Definition at line 130 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::HexahedronFEMForceField().
Data<VecElementStiffness> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_elementStiffnesses [protected] |
Definition at line 111 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addKToMatrix(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
const VecElement* sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indexedElements [protected] |
Definition at line 126 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addKToMatrix(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::draw(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
const int sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_indices = {0,1,3,2,4,5,7,6} [inline, static, protected] |
indices ordering is different than in topology node
Definition at line 132 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addKToMatrix(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
Data< VecCoord > sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_initialPoints [protected] |
the intial positions of the points
Definition at line 127 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
VecMaterialStiffness sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_materialsStiffnesses [protected] |
the material stiffness matrices vector
Definition at line 107 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
sofa::core::componentmodel::topology::BaseMeshTopology* sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_mesh [protected] |
Definition at line 124 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init().
vector<helper::fixed_array<Coord,8> > sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotatedInitialElements [protected] |
The initials positions in its frame.
Definition at line 234 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
vector<Transformation> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_rotations [protected] |
Definition at line 235 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addKToMatrix(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init().
topology::SparseGridTopology* sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_sparseGrid [protected] |
Definition at line 125 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::draw(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::init(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::initPolar().
CompressedMatrix sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::_stiffnesses [protected] |
Definition at line 120 of file HexahedronFEMForceField.h.
| Data<bool> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_assembling |
Definition at line 142 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setComputeGlobalMatrix().
| Data<std::string> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_method |
the computation method of the displacements
Definition at line 138 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setMethod().
| Data<Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_poissonRatio |
| Data<bool> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_updateStiffnessMatrix |
Definition at line 141 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::accumulateForcePolar(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setUpdateStiffnessMatrix().
| Data<Real> sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::f_youngModulus |
const int sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::LARGE = 0 [static] |
Symbol of mean large displacements tetrahedron solver (frame = edges mean on the 3 directions).
Definition at line 93 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addForce(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit().
double sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::m_potentialEnergy [protected] |
Definition at line 121 of file HexahedronFEMForceField.h.
| int sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::method |
Definition at line 137 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setMethod().
const int sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::POLAR = 1 [static] |
Symbol of polar displacements tetrahedron solver.
Definition at line 94 of file HexahedronFEMForceField.h.
Referenced by sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::setMethod().
1.5.7.1