#include <TriangularFEMForceField.h>


Data Structures | |
| class | EdgeInformation |
| class | TriangleInformation |
| class | VertexInformation |
Public Types | |
| typedef core::componentmodel::behavior::ForceField < DataTypes > | Inherited |
| 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 |
| typedef sofa::core::componentmodel::topology::BaseMeshTopology::index_type | Index |
| typedef sofa::core::componentmodel::topology::BaseMeshTopology::Triangle | Element |
| typedef sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles | VecElement |
Public Member Functions | |
| TriangularFEMForceField () | |
| virtual | ~TriangularFEMForceField () |
| 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 | handleTopologyChange () |
| Handle topological Changes. | |
| void | draw () |
| Render internal data of this object, for debugging purposes. | |
| Real | getPoisson () |
| void | setPoisson (Real val) |
| Real | getYoung () |
| void | setYoung (Real val) |
| Real | getDamping () |
| void | setDamping (Real val) |
| int | getMethod () |
| void | setMethod (int val) |
| int | getFracturedEdge () |
Data Fields | |
| int | method |
| Data< std::string > | f_method |
| Data< Real > | f_poisson |
| Data< Real > | f_young |
| Data< Real > | f_damping |
| Data< bool > | f_fracturable |
| Data< bool > | showStressValue |
| Data< bool > | showStressVector |
Static Public Attributes | |
| static const int | SMALL = 1 |
| Symbol of small displacements triangle solver. | |
| static const int | LARGE = 0 |
| Symbol of large displacements triangle solver. | |
Protected Types | |
| typedef Vec< 6, Real > | Displacement |
| the displacement vector | |
| typedef Mat< 3, 3, Real > | MaterialStiffness |
| the matrix of material stiffness | |
| typedef sofa::helper::vector < MaterialStiffness > | VecMaterialStiffness |
| a vector of material stiffness matrices | |
| typedef Mat< 6, 3, Real > | StrainDisplacement |
| the strain-displacement matrix | |
| typedef sofa::helper::vector < StrainDisplacement > | VecStrainDisplacement |
| a vector of strain-displacement matrices | |
| typedef Mat< 3, 3, Real > | Transformation |
| matrix for rigid transformations like rotations | |
Protected Member Functions | |
| void | computeEigenStrain (Coord &v, StrainDisplacement &J, Displacement &Depl, double &maxEigenValue) |
| virtual void | applyStiffness (VecCoord &f, Real h, const VecCoord &x) |
| f += Kx where K is the stiffness matrix and x a displacement | |
| virtual void | computeMaterialStiffness (int i, Index &a, Index &b, Index &c) |
| void | computeStrainDisplacement (StrainDisplacement &J, Coord a, Coord b, Coord c) |
| void | computeForce (Displacement &F, const Displacement &Depl, const MaterialStiffness &K, const StrainDisplacement &J) |
| void | initSmall (void) |
| void | accumulateForceSmall (VecCoord &f, const VecCoord &p, Index elementIndex, bool implicit=false) |
| void | accumulateDampingSmall (VecCoord &f, Index elementIndex) |
| void | applyStiffnessSmall (VecCoord &f, Real h, const VecCoord &x) |
| void | initLarge (int i, Index &a, Index &b, Index &c) |
| void | computeRotationLarge (Transformation &r, const VecCoord &p, const Index &a, const Index &b, const Index &c) |
| void | accumulateForceLarge (VecCoord &f, const VecCoord &p, Index elementIndex, bool implicit=false) |
| void | accumulateDampingLarge (VecCoord &f, Index elementIndex) |
| void | applyStiffnessLarge (VecCoord &f, Real h, const VecCoord &x) |
Static Protected Member Functions | |
| static void | TRQSTriangleCreationFunction (int, void *, TriangleInformation &, const Triangle &, const sofa::helper::vector< unsigned int > &, const sofa::helper::vector< double > &) |
Protected Attributes | |
| TriangleData< TriangleInformation > | triangleInfo |
| PointData< VertexInformation > | vertexInfo |
| EdgeData< EdgeInformation > | edgeInfo |
| sofa::core::componentmodel::topology::BaseMeshTopology * | _topology |
| VecCoord * | _initialPoints |
| bool | updateMatrix |
| int | lastFracturedEdgeIndex |
Definition at line 71 of file TriangularFEMForceField.h.
| typedef DataTypes::Coord sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Coord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 79 of file TriangularFEMForceField.h.
| typedef DataTypes::Deriv sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Deriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 80 of file TriangularFEMForceField.h.
typedef Vec<6, Real> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Displacement [protected] |
| typedef sofa::core::componentmodel::topology::BaseMeshTopology::Triangle sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Element |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 84 of file TriangularFEMForceField.h.
| typedef sofa::core::componentmodel::topology::BaseMeshTopology::index_type sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Index |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 83 of file TriangularFEMForceField.h.
| typedef core::componentmodel::behavior::ForceField<DataTypes> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Inherited |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 74 of file TriangularFEMForceField.h.
typedef Mat<3, 3, Real> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::MaterialStiffness [protected] |
| typedef Coord::value_type sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Real |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 81 of file TriangularFEMForceField.h.
typedef Mat<6, 3, Real> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::StrainDisplacement [protected] |
typedef Mat<3, 3, Real > sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Transformation [protected] |
matrix for rigid transformations like rotations
Definition at line 99 of file TriangularFEMForceField.h.
| typedef DataTypes::VecCoord sofa::component::forcefield::TriangularFEMForceField< DataTypes >::VecCoord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 75 of file TriangularFEMForceField.h.
| typedef DataTypes::VecDeriv sofa::component::forcefield::TriangularFEMForceField< DataTypes >::VecDeriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 76 of file TriangularFEMForceField.h.
| typedef sofa::core::componentmodel::topology::BaseMeshTopology::SeqTriangles sofa::component::forcefield::TriangularFEMForceField< DataTypes >::VecElement |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 85 of file TriangularFEMForceField.h.
typedef sofa::helper::vector<MaterialStiffness> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::VecMaterialStiffness [protected] |
| typedef DataTypes::VecReal sofa::component::forcefield::TriangularFEMForceField< DataTypes >::VecReal |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 77 of file TriangularFEMForceField.h.
typedef sofa::helper::vector<StrainDisplacement> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::VecStrainDisplacement [protected] |
| typedef VecCoord sofa::component::forcefield::TriangularFEMForceField< DataTypes >::Vector |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 78 of file TriangularFEMForceField.h.
| sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TriangularFEMForceField | ( | ) | [inline] |
Definition at line 103 of file TriangularFEMForceField.cpp.
| sofa::component::forcefield::TriangularFEMForceField< DataTypes >::~TriangularFEMForceField | ( | ) | [inline, virtual] |
Definition at line 127 of file TriangularFEMForceField.cpp.
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateDampingLarge | ( | VecCoord & | f, | |
| Index | elementIndex | |||
| ) | [inline, protected] |
Definition at line 898 of file TriangularFEMForceField.cpp.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateDampingSmall | ( | VecCoord & | f, | |
| Index | elementIndex | |||
| ) | [inline, protected] |
Definition at line 686 of file TriangularFEMForceField.cpp.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge | ( | VecCoord & | f, | |
| const VecCoord & | p, | |||
| Index | elementIndex, | |||
| bool | implicit = false | |||
| ) | [inline, protected] |
Definition at line 812 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeEigenStrain(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeStrainDisplacement(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_fracturable, sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::objectmodel::Data< T >::getValue(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceSmall | ( | VecCoord & | f, | |
| const VecCoord & | p, | |||
| Index | elementIndex, | |||
| bool | implicit = false | |||
| ) | [inline, protected] |
Definition at line 644 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeStrainDisplacement(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce().
| void sofa::component::forcefield::TriangularFEMForceField< 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 430 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL.
| void sofa::component::forcefield::TriangularFEMForceField< 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 192 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateDampingLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateDampingSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::edgeInfo, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_damping, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_fracturable, sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeVertexShell(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangleEdgeShell(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangleVertexShell(), sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::lastFracturedEdgeIndex, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::vertexInfo.
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffness | ( | VecCoord & | f, | |
| Real | h, | |||
| const VecCoord & | x | |||
| ) | [inline, protected, virtual] |
f += Kx where K is the stiffness matrix and x a displacement
Definition at line 453 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL.
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessLarge | ( | VecCoord & | f, | |
| Real | h, | |||
| const VecCoord & | x | |||
| ) | [inline, protected] |
Definition at line 909 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeForce(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addDForce(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffness().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessSmall | ( | VecCoord & | f, | |
| Real | h, | |||
| const VecCoord & | x | |||
| ) | [inline, protected] |
Definition at line 697 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeForce(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addDForce(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffness().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeEigenStrain | ( | Coord & | v, | |
| StrainDisplacement & | J, | |||
| Displacement & | Depl, | |||
| double & | maxEigenValue | |||
| ) | [inline, protected] |
Definition at line 486 of file TriangularFEMForceField.cpp.
References sofa::defaulttype::Mat< L, C, real >::transpose().
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeForce | ( | Displacement & | F, | |
| const Displacement & | Depl, | |||
| const MaterialStiffness & | K, | |||
| const StrainDisplacement & | J | |||
| ) | [inline, protected] |
Definition at line 552 of file TriangularFEMForceField.cpp.
References sofa::defaulttype::Mat< L, C, real >::transpose().
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessLarge(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessSmall().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeMaterialStiffness | ( | int | i, | |
| Index & | a, | |||
| Index & | b, | |||
| Index & | c | |||
| ) | [inline, protected, virtual] |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 530 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_poisson, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_young, sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TriangleInformation::materialMatrix, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeRotationLarge | ( | Transformation & | r, | |
| const VecCoord & | p, | |||
| const Index & | a, | |||
| const Index & | b, | |||
| const Index & | c | |||
| ) | [inline, protected] |
Definition at line 775 of file TriangularFEMForceField.cpp.
References cross().
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initLarge().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeStrainDisplacement | ( | StrainDisplacement & | J, | |
| Coord | a, | |||
| Coord | b, | |||
| Coord | c | |||
| ) | [inline, protected] |
Definition at line 467 of file TriangularFEMForceField.cpp.
References sofa::defaulttype::determinant().
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceSmall().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw | ( | ) | [inline, virtual] |
Render internal data of this object, for debugging purposes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 1042 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::ColorMap, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_fracturable, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::helper::gl::glVertexT(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::defaulttype::Vec< N, real >::ptr(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::showStressValue, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::showStressVector, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::vertexInfo.
Referenced by sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::draw().
| Real sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getDamping | ( | ) | [inline] |
Definition at line 186 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_damping, and sofa::core::objectmodel::Data< T >::getValue().
| int sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getFracturedEdge | ( | ) | [inline, virtual] |
Reimplemented from sofa::core::componentmodel::behavior::BaseForceField.
Definition at line 1022 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::edgeInfo, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_fracturable, sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), and sofa::core::objectmodel::Data< T >::getValue().
| int sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getMethod | ( | ) | [inline] |
Definition at line 188 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method.
| Real sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getPoisson | ( | ) | [inline] |
Definition at line 182 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_poisson, and sofa::core::objectmodel::Data< T >::getValue().
| double sofa::component::forcefield::TriangularFEMForceField< 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 446 of file TriangularFEMForceField.cpp.
| Real sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getYoung | ( | ) | [inline] |
Definition at line 184 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_young, and sofa::core::objectmodel::Data< T >::getValue().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::handleTopologyChange | ( | ) | [inline, virtual] |
Handle topological Changes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 116 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::edgeInfo, sofa::core::componentmodel::topology::BaseMeshTopology::firstChange(), sofa::core::componentmodel::topology::BaseMeshTopology::lastChange(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::vertexInfo.
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init | ( | void | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 132 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_method, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::init(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::lastFracturedEdgeIndex, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL.
Referenced by sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::init().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initLarge | ( | int | i, | |
| Index & | a, | |||
| Index & | b, | |||
| Index & | c | |||
| ) | [inline, protected] |
Definition at line 741 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_initialPoints, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TriangleInformation::rotatedInitialElements, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction(), and sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::TRQSTriangleCreationFunction().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initSmall | ( | void | ) | [inline, protected] |
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit | ( | ) | [inline, virtual] |
Update method called when variables used in precomputation are modified.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 156 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_initialPoints, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::edgeInfo, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_method, sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method, sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::vertexInfo.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init(), and sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::reinit().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setDamping | ( | Real | val | ) | [inline] |
Definition at line 187 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_damping, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setMethod | ( | int | val | ) | [inline] |
Definition at line 189 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method.
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setPoisson | ( | Real | val | ) | [inline] |
Definition at line 183 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_poisson, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setYoung | ( | Real | val | ) | [inline] |
Definition at line 185 of file TriangularFEMForceField.h.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_young, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction | ( | int | triangleIndex, | |
| void * | param, | |||
| TriangleInformation & | , | |||
| const Triangle & | t, | |||
| const sofa::helper::vector< unsigned int > & | , | |||
| const sofa::helper::vector< double > & | ||||
| ) | [inline, static, protected] |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 64 of file TriangularFEMForceField.cpp.
References sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::LARGE, sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method, and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
VecCoord* sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_initialPoints [protected] |
Definition at line 147 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
sofa::core::componentmodel::topology::BaseMeshTopology* sofa::component::forcefield::TriangularFEMForceField< DataTypes >::_topology [protected] |
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 144 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getFracturedEdge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::handleTopologyChange(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
EdgeData<EdgeInformation> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::edgeInfo [protected] |
Definition at line 142 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getFracturedEdge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::handleTopologyChange(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
| Data<Real> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_damping |
Definition at line 176 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getDamping(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setDamping().
| Data<bool> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_fracturable |
Definition at line 177 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getFracturedEdge().
| Data<std::string> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_method |
Definition at line 173 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
| Data<Real> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_poisson |
Definition at line 174 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getPoisson(), sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setPoisson().
| Data<Real> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::f_young |
Definition at line 175 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getYoung(), sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setYoung().
const int sofa::component::forcefield::TriangularFEMForceField< DataTypes >::LARGE = 0 [static] |
Symbol of large displacements triangle solver.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 88 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction().
int sofa::component::forcefield::TriangularFEMForceField< DataTypes >::lastFracturedEdgeIndex [protected] |
Definition at line 154 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init().
| int sofa::component::forcefield::TriangularFEMForceField< DataTypes >::method |
Definition at line 172 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffness(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::getMethod(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::setMethod(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction(), and sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::TRQSTriangleCreationFunction().
| Data<bool> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::showStressValue |
Definition at line 179 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw().
| Data<bool> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::showStressVector |
Definition at line 180 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw().
const int sofa::component::forcefield::TriangularFEMForceField< DataTypes >::SMALL = 1 [static] |
Symbol of small displacements triangle solver.
Reimplemented in sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >.
Definition at line 87 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addDForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffness(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::init(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::TRQSTriangleCreationFunction().
TriangleData<TriangleInformation> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::triangleInfo [protected] |
Definition at line 140 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::accumulateForceSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessLarge(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::applyStiffnessSmall(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::handleTopologyChange(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::initLarge(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
bool sofa::component::forcefield::TriangularFEMForceField< DataTypes >::updateMatrix [protected] |
Definition at line 153 of file TriangularFEMForceField.h.
PointData<VertexInformation> sofa::component::forcefield::TriangularFEMForceField< DataTypes >::vertexInfo [protected] |
Definition at line 141 of file TriangularFEMForceField.h.
Referenced by sofa::component::forcefield::TriangularFEMForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::draw(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::handleTopologyChange(), and sofa::component::forcefield::TriangularFEMForceField< DataTypes >::reinit().
1.5.7.1