#include <QuadularBendingSprings.h>


Data Structures | |
| class | EdgeInformation |
| class | Mat3 |
Public Types | |
| enum | { N = Coord::static_size } |
| 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 |
| typedef defaulttype::Mat< N, N, Real > | Mat |
Public Member Functions | |
| QuadularBendingSprings () | |
| ~QuadularBendingSprings () | |
| virtual double | getPotentialEnergy (const VecCoord &x) |
| Get the potential energy associated to this ForceField. | |
| virtual void | init () |
| Searches quad topology and creates the bending springs. | |
| 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 | getKs () const |
| virtual double | getKd () const |
| void | setKs (const double ks) |
| void | setKd (const double kd) |
| virtual void | handleTopologyChange () |
| Handle topological Changes. | |
| void | draw () |
| Render internal data of this object, for debugging purposes. | |
| void | initTextures () |
| void | update () |
Protected Member Functions | |
| EdgeData< EdgeInformation > & | getEdgeInfo () |
Static Protected Member Functions | |
| static void | QuadularBSEdgeCreationFunction (int edgeIndex, void *param, EdgeInformation &ei, const Edge &, const sofa::helper::vector< unsigned int > &, const sofa::helper::vector< double > &) |
| static void | QuadularBSQuadCreationFunction (const sofa::helper::vector< unsigned int > &quadAdded, void *param, vector< EdgeInformation > &edgeData) |
| static void | QuadularBSQuadDestructionFunction (const sofa::helper::vector< unsigned int > &quadAdded, void *param, vector< EdgeInformation > &edgeData) |
Protected Attributes | |
| EdgeData< EdgeInformation > | edgeInfo |
| sofa::core::componentmodel::topology::BaseMeshTopology * | _topology |
| bool | updateMatrix |
| Data< double > | f_ks |
| Data< double > | f_kd |
| double | m_potentialEnergy |
The springs connect the vertices not belonging to the common edge. It compresses when the surface bends along the common edge.
Definition at line 61 of file QuadularBendingSprings.h.
| typedef DataTypes::Coord sofa::component::forcefield::QuadularBendingSprings< DataTypes >::Coord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 69 of file QuadularBendingSprings.h.
| typedef DataTypes::Deriv sofa::component::forcefield::QuadularBendingSprings< DataTypes >::Deriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 70 of file QuadularBendingSprings.h.
| typedef core::componentmodel::behavior::ForceField<DataTypes> sofa::component::forcefield::QuadularBendingSprings< DataTypes >::Inherited |
Definition at line 64 of file QuadularBendingSprings.h.
| typedef defaulttype::Mat<N,N,Real> sofa::component::forcefield::QuadularBendingSprings< DataTypes >::Mat |
Definition at line 74 of file QuadularBendingSprings.h.
| typedef Coord::value_type sofa::component::forcefield::QuadularBendingSprings< DataTypes >::Real |
Definition at line 71 of file QuadularBendingSprings.h.
| typedef DataTypes::VecCoord sofa::component::forcefield::QuadularBendingSprings< DataTypes >::VecCoord |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 66 of file QuadularBendingSprings.h.
| typedef DataTypes::VecDeriv sofa::component::forcefield::QuadularBendingSprings< DataTypes >::VecDeriv |
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 68 of file QuadularBendingSprings.h.
| anonymous enum |
| sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBendingSprings | ( | ) | [inline] |
| sofa::component::forcefield::QuadularBendingSprings< DataTypes >::~QuadularBendingSprings | ( | ) | [inline] |
Definition at line 296 of file QuadularBendingSprings.inl.
| void sofa::component::forcefield::QuadularBendingSprings< 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 644 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::DfDx, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo, sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_activated, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m1, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m2, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m3, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m4, and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::updateMatrix.
| void sofa::component::forcefield::QuadularBendingSprings< 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 520 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::DfDx, dot(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo, force, sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_activated, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::kd, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::ks, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m1, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m2, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m3, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m4, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::m_potentialEnergy, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::restlength1, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::restlength2, and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::updateMatrix.
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::draw | ( | ) | [inline, virtual] |
Render internal data of this object, for debugging purposes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 705 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo, sofa::core::objectmodel::BaseObject::getContext(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbQuads(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuad(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), sofa::helper::gl::glVertexT(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, and norm().
| EdgeData<EdgeInformation>& sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getEdgeInfo | ( | ) | [inline, protected] |
Definition at line 160 of file QuadularBendingSprings.h.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo.
| virtual double sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKd | ( | ) | const [inline, virtual] |
Definition at line 141 of file QuadularBendingSprings.h.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::f_kd, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadCreationFunction(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadDestructionFunction().
| virtual double sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKs | ( | ) | const [inline, virtual] |
Definition at line 140 of file QuadularBendingSprings.h.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::f_ks, and sofa::core::objectmodel::Data< T >::getValue().
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadCreationFunction(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadDestructionFunction().
| double sofa::component::forcefield::QuadularBendingSprings< 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 513 of file QuadularBendingSprings.inl.
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::handleTopologyChange | ( | ) | [inline, virtual] |
Handle topological Changes.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 300 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo, sofa::core::componentmodel::topology::BaseMeshTopology::firstChange(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeQuadShell(), sofa::core::componentmodel::topology::BaseMeshTopology::getNbEdges(), sofa::core::componentmodel::topology::Topology::getNbPoints(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuadVertexShell(), sofa::core::componentmodel::topology::BaseMeshTopology::getVertexIndexInQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::lastChange(), sofa::core::componentmodel::topology::POINTSREMOVED, and sofa::core::componentmodel::topology::POINTSRENUMBERING.
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::init | ( | void | ) | [inline, virtual] |
Searches quad topology and creates the bending springs.
prepare to store info in the edge array
Reimplemented from sofa::core::componentmodel::behavior::ForceField< DataTypes >.
Definition at line 441 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo, 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::getNbQuads(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::init(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSEdgeCreationFunction(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadCreationFunction(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadDestructionFunction().
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::initTextures | ( | ) | [inline] |
Definition at line 155 of file QuadularBendingSprings.h.
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSEdgeCreationFunction | ( | int | edgeIndex, | |
| void * | param, | |||
| EdgeInformation & | ei, | |||
| const Edge & | , | |||
| const sofa::helper::vector< unsigned int > & | , | |||
| const sofa::helper::vector< double > & | ||||
| ) | [inline, static, protected] |
set to zero the edge stiffness matrix
Definition at line 62 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::DfDx, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_activated, and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_initialized.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::init().
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadCreationFunction | ( | const sofa::helper::vector< unsigned int > & | quadAdded, | |
| void * | param, | |||
| vector< EdgeInformation > & | edgeData | |||
| ) | [inline, static, protected] |
describe the jth edge index of quad no i
describe the jth vertex index of quad no i
set to zero the edge stiffness matrix
Definition at line 84 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::DfDx, sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeIndexInQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeQuadShell(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKd(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKs(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuadEdgeShell(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_activated, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_initialized, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::kd, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::ks, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m1, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m2, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m3, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m4, sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::restlength1, and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::restlength2.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::init().
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadDestructionFunction | ( | const sofa::helper::vector< unsigned int > & | quadAdded, | |
| void * | param, | |||
| vector< EdgeInformation > & | edgeData | |||
| ) | [inline, static, protected] |
describe the jth edge index of quad no i
describe the jth vertex index of quad no i
Definition at line 181 of file QuadularBendingSprings.inl.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology, sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeIndexInQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::getEdgeQuadShell(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKd(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKs(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuad(), sofa::core::componentmodel::topology::BaseMeshTopology::getQuadEdgeShell(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX0(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_activated, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::is_initialized, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::kd, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::ks, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m1, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m2, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m3, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::m4, sofa::core::componentmodel::behavior::ForceField< DataTypes >::mstate, sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::restlength1, and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::EdgeInformation::restlength2.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::init().
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::setKd | ( | const double | kd | ) | [inline] |
Definition at line 146 of file QuadularBendingSprings.h.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::f_kd, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::setKs | ( | const double | ks | ) | [inline] |
Definition at line 143 of file QuadularBendingSprings.h.
References sofa::component::forcefield::QuadularBendingSprings< DataTypes >::f_ks, and sofa::core::objectmodel::Data< T >::setValue().
| void sofa::component::forcefield::QuadularBendingSprings< DataTypes >::update | ( | ) | [inline] |
Definition at line 156 of file QuadularBendingSprings.h.
sofa::core::componentmodel::topology::BaseMeshTopology* sofa::component::forcefield::QuadularBendingSprings< DataTypes >::_topology [protected] |
Definition at line 119 of file QuadularBendingSprings.h.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addDForce(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addForce(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::draw(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::handleTopologyChange(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::init(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadCreationFunction(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBSQuadDestructionFunction().
EdgeData<EdgeInformation> sofa::component::forcefield::QuadularBendingSprings< DataTypes >::edgeInfo [protected] |
Definition at line 117 of file QuadularBendingSprings.h.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addDForce(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addForce(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::draw(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getEdgeInfo(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::handleTopologyChange(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::init().
Data<double> sofa::component::forcefield::QuadularBendingSprings< DataTypes >::f_kd [protected] |
Definition at line 124 of file QuadularBendingSprings.h.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKd(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBendingSprings(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::setKd().
Data<double> sofa::component::forcefield::QuadularBendingSprings< DataTypes >::f_ks [protected] |
Definition at line 123 of file QuadularBendingSprings.h.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::getKs(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::QuadularBendingSprings(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::setKs().
double sofa::component::forcefield::QuadularBendingSprings< DataTypes >::m_potentialEnergy [protected] |
Definition at line 173 of file QuadularBendingSprings.h.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addForce().
bool sofa::component::forcefield::QuadularBendingSprings< DataTypes >::updateMatrix [protected] |
Definition at line 121 of file QuadularBendingSprings.h.
Referenced by sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addDForce(), and sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addForce().
1.5.7.1