#include <TriangularBiquadraticSpringsForceField.h>


Data Structures | |
| class | EdgeRestInformation |
| class | Mat3 |
| class | TriangleRestInformation |
Public Types | |
| typedef core::componentmodel::behavior::ForceField < DataTypes > | Inherited |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Coord::value_type | Real |
Public Member Functions | |
| TriangularBiquadraticSpringsForceField () | |
| second Lam� coefficient | |
| virtual | ~TriangularBiquadraticSpringsForceField () |
| virtual double | getPotentialEnergy (const VecCoord &x) |
| Get the potential energy associated to this ForceField. | |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| 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 Real | getLambda () const |
| virtual Real | getMu () const |
| virtual void | handleTopologyChange () |
| Handle topological Changes. | |
| void | setYoungModulus (const double modulus) |
| void | setPoissonRatio (const double ratio) |
| void | draw () |
| Render internal data of this object, for debugging purposes. | |
| void | updateLameCoefficients () |
| compute lambda and mu based on the Young modulus and Poisson ratio | |
Protected Member Functions | |
| EdgeData< EdgeRestInformation > & | getEdgeInfo () |
Static Protected Member Functions | |
| static void | TRBSEdgeCreationFunction (int edgeIndex, void *param, EdgeRestInformation &ei, const Edge &, const sofa::helper::vector< unsigned int > &, const sofa::helper::vector< double > &) |
| static void | TRBSTriangleCreationFunction (int, void *, TriangleRestInformation &, const Triangle &, const sofa::helper::vector< unsigned int > &, const sofa::helper::vector< double > &) |
| static void | TRBSTriangleDestroyFunction (int, void *, TriangleRestInformation &) |
Protected Attributes | |
| TriangleData < TriangleRestInformation > | triangleInfo |
| EdgeData< EdgeRestInformation > | edgeInfo |
| sofa::core::componentmodel::topology::BaseMeshTopology * | _topology |
| Data< VecCoord > | _initialPoints |
| the intial positions of the points | |
| bool | updateMatrix |
| Data< Real > | f_poissonRatio |
| Data< Real > | f_youngModulus |
| Data< Real > | f_dampingRatio |
| Data< bool > | f_useAngularSprings |
| Real | lambda |
| Real | mu |
| first Lam� coefficient | |
Definition at line 55 of file TriangularBiquadraticSpringsForceField.h.
| typedef DataTypes::Coord sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::Coord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 61 of file TriangularBiquadraticSpringsForceField.h.
| typedef DataTypes::Deriv sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::Deriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 62 of file TriangularBiquadraticSpringsForceField.h.
| typedef core::componentmodel::behavior::ForceField<DataTypes> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::Inherited |
Definition at line 58 of file TriangularBiquadraticSpringsForceField.h.
| typedef Coord::value_type sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::Real |
Definition at line 63 of file TriangularBiquadraticSpringsForceField.h.
| typedef DataTypes::VecCoord sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::VecCoord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 59 of file TriangularBiquadraticSpringsForceField.h.
| typedef DataTypes::VecDeriv sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::VecDeriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 60 of file TriangularBiquadraticSpringsForceField.h.
| sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangularBiquadraticSpringsForceField | ( | ) | [inline] |
| sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::~TriangularBiquadraticSpringsForceField | ( | ) | [inline, virtual] |
Definition at line 166 of file TriangularBiquadraticSpringsForceField.inl.
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< 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 286 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangleRestInformation::DfDx, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_useAngularSprings, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangleRestInformation::gamma, sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeTriangleShell(), 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::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangleRestInformation::stiffness, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::Mat3::transposeMultiply(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::triangleInfo, and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateMatrix.
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< 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 226 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::EdgeRestInformation::currentSquareLength, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::EdgeRestInformation::deltaL2, dot(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_dampingRatio, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_useAngularSprings, force, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangleRestInformation::gamma, sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeTriangleShell(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::objectmodel::Data< T >::getValue(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::EdgeRestInformation::restSquareLength, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::EdgeRestInformation::stiffness, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::triangleInfo, and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateMatrix.
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::draw | ( | ) | [inline, virtual] |
Render internal data of this object, for debugging purposes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 395 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::helper::gl::glVertexT(), and sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate.
| EdgeData<EdgeRestInformation>& sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getEdgeInfo | ( | ) | [inline, protected] |
Definition at line 155 of file TriangularBiquadraticSpringsForceField.h.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::edgeInfo.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction().
| virtual Real sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getLambda | ( | ) | const [inline, virtual] |
Definition at line 134 of file TriangularBiquadraticSpringsForceField.h.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::lambda.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction().
| virtual Real sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getMu | ( | void | ) | const [inline, virtual] |
| double sofa::component::forcefield::TriangularBiquadraticSpringsForceField< 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 220 of file TriangularBiquadraticSpringsForceField.inl.
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::handleTopologyChange | ( | ) | [inline, virtual] |
Handle topological Changes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 157 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology, sofa::core::componentmodel::topology::BaseMeshTopology::firstChange(), sofa::component::topology::EdgeData< T, Alloc >::handleTopologyEvents(), sofa::core::componentmodel::topology::BaseMeshTopology::lastChange(), and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::triangleInfo.
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init | ( | void | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 171 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_initialPoints, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdge(), sofa::core::objectmodel::BaseContext::getMeshTopology(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbTriangles(), sofa::core::componentmodel::topology::BaseMeshTopology::getTriangle(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::init(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::component::topology::EdgeData< T, Alloc >::setCreateFunction(), sofa::component::topology::EdgeData< T, Alloc >::setCreateParameter(), sofa::component::topology::EdgeData< T, Alloc >::setDestroyParameter(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSEdgeCreationFunction(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleDestroyFunction(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::triangleInfo, and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateLameCoefficients().
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::setPoissonRatio | ( | const double | ratio | ) | [inline] |
Definition at line 143 of file TriangularBiquadraticSpringsForceField.h.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_poissonRatio, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::setYoungModulus | ( | const double | modulus | ) | [inline] |
Definition at line 140 of file TriangularBiquadraticSpringsForceField.h.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_youngModulus, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSEdgeCreationFunction | ( | int | edgeIndex, | |
| void * | param, | |||
| EdgeRestInformation & | ei, | |||
| const Edge & | , | |||
| const sofa::helper::vector< unsigned int > & | , | |||
| const sofa::helper::vector< double > & | ||||
| ) | [inline, static, protected] |
Definition at line 58 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::topology::EdgeSetGeometryAlgorithms< DataTypes >::computeRestSquareEdgeLength(), sofa::core::objectmodel::BaseContext::get(), sofa::core::objectmodel::BaseObject::getContext(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::EdgeRestInformation::restSquareLength, and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::EdgeRestInformation::stiffness.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init().
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction | ( | int | triangleIndex, | |
| void * | param, | |||
| TriangleRestInformation & | tinfo, | |||
| const Triangle & | , | |||
| const sofa::helper::vector< unsigned int > & | , | |||
| const sofa::helper::vector< double > & | ||||
| ) | [inline, static, protected] |
describe the jth edge index of triangle no i
Definition at line 77 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::edgeInfo, sofa::core::objectmodel::BaseObject::f_printLog, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangleRestInformation::gamma, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getEdgeInfo(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeTriangleShell(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getLambda(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getMu(), sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::lambda, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::mu, and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TriangleRestInformation::stiffness.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init().
| static void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleDestroyFunction | ( | int | , | |
| void * | , | |||
| TriangleRestInformation & | ||||
| ) | [static, protected] |
| void sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateLameCoefficients | ( | ) | [inline] |
compute lambda and mu based on the Young modulus and Poisson ratio
Definition at line 386 of file TriangularBiquadraticSpringsForceField.inl.
References sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_poissonRatio, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_youngModulus, sofa::core::objectmodel::Data< T >::getValue(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::lambda, and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::mu.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init().
Data< VecCoord > sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_initialPoints [protected] |
the intial positions of the points
Definition at line 111 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init().
sofa::core::componentmodel::topology::BaseMeshTopology* sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::_topology [protected] |
Definition at line 110 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::addDForce(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::draw(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::handleTopologyChange(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init(), and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction().
EdgeData<EdgeRestInformation> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::edgeInfo [protected] |
Definition at line 108 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getEdgeInfo(), and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction().
Data<Real> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_dampingRatio [protected] |
Definition at line 117 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::addForce().
Data<Real> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_poissonRatio [protected] |
Data<bool> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_useAngularSprings [protected] |
Data<Real> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::f_youngModulus [protected] |
Real sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::lambda [protected] |
Definition at line 120 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getLambda(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction(), and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateLameCoefficients().
Real sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::mu [protected] |
first Lam� coefficient
Definition at line 121 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::getMu(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::TRBSTriangleCreationFunction(), and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateLameCoefficients().
TriangleData<TriangleRestInformation> sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::triangleInfo [protected] |
Definition at line 107 of file TriangularBiquadraticSpringsForceField.h.
Referenced by sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::addDForce(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::handleTopologyChange(), and sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::init().
bool sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::updateMatrix [protected] |
1.5.7.1