#include <StiffSpringForceField.h>


Public Types | |
| enum | { N = Coord::static_size } |
| typedef SpringForceField < DataTypes > | Inherit |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Coord::value_type | Real |
| typedef Inherit::Spring | Spring |
| typedef core::componentmodel::behavior::MechanicalState < DataTypes > | MechanicalState |
| typedef defaulttype::Mat< N, N, Real > | Mat |
Public Member Functions | |
| StiffSpringForceField (MechanicalState *object1, MechanicalState *object2, double ks=100.0, double kd=5.0) | |
| StiffSpringForceField (double ks=100.0, double kd=5.0) | |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| virtual void | addForce (VecDeriv &f1, VecDeriv &f2, const VecCoord &x1, const VecCoord &x2, const VecDeriv &v1, const VecDeriv &v2) |
| Accumulate f corresponding to x,v. | |
| virtual void | addDForce (VecDeriv &df1, VecDeriv &df2, const VecDeriv &dx1, const VecDeriv &dx2, double kFactor, double bFactor) |
| Accumulate df corresponding to dx. | |
Protected Member Functions | |
| void | addSpringForce (double &potentialEnergy, VecDeriv &f1, const VecCoord &p1, const VecDeriv &v1, VecDeriv &f2, const VecCoord &p2, const VecDeriv &v2, int i, const Spring &spring) |
| Accumulate the spring force and compute and store its stiffness. | |
| void | addSpringDForce (VecDeriv &df1, const VecDeriv &dx1, VecDeriv &df2, const VecDeriv &dx2, int i, const Spring &spring, double kFactor, double bFactor) |
| Apply the stiffness, i.e. accumulate df given dx. | |
Protected Attributes | |
| sofa::helper::vector< Mat > | dfdx |
| double | m_potentialEnergy |
This allows to perform implicit integration. Stiffness is evaluated and stored by the addForce method. When explicit integration is used, SpringForceField is slightly more efficient.
Definition at line 49 of file StiffSpringForceField.h.
| typedef DataTypes::Coord sofa::component::forcefield::StiffSpringForceField< DataTypes >::Coord |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >, sofa::component::forcefield::MeshSpringForceField< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >, and sofa::component::forcefield::MeshSpringForceField< sofa::defaulttype::StdVectorTypes >.
Definition at line 55 of file StiffSpringForceField.h.
| typedef DataTypes::Deriv sofa::component::forcefield::StiffSpringForceField< DataTypes >::Deriv |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >, sofa::component::forcefield::MeshSpringForceField< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >, and sofa::component::forcefield::MeshSpringForceField< sofa::defaulttype::StdVectorTypes >.
Definition at line 56 of file StiffSpringForceField.h.
| typedef SpringForceField<DataTypes> sofa::component::forcefield::StiffSpringForceField< DataTypes >::Inherit |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, and sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >.
Definition at line 52 of file StiffSpringForceField.h.
| typedef defaulttype::Mat<N,N,Real> sofa::component::forcefield::StiffSpringForceField< DataTypes >::Mat |
Reimplemented in sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >.
Definition at line 61 of file StiffSpringForceField.h.
| typedef core::componentmodel::behavior::MechanicalState<DataTypes> sofa::component::forcefield::StiffSpringForceField< DataTypes >::MechanicalState |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >.
Definition at line 59 of file StiffSpringForceField.h.
| typedef Coord::value_type sofa::component::forcefield::StiffSpringForceField< DataTypes >::Real |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >, sofa::component::forcefield::MeshSpringForceField< DataTypes >, sofa::component::forcefield::QuadBendingSprings< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, sofa::component::forcefield::TriangleBendingSprings< DataTypes >, sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >, and sofa::component::forcefield::MeshSpringForceField< sofa::defaulttype::StdVectorTypes >.
Definition at line 57 of file StiffSpringForceField.h.
| typedef Inherit::Spring sofa::component::forcefield::StiffSpringForceField< DataTypes >::Spring |
| typedef DataTypes::VecCoord sofa::component::forcefield::StiffSpringForceField< DataTypes >::VecCoord |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >, sofa::component::forcefield::MeshSpringForceField< DataTypes >, sofa::component::forcefield::QuadBendingSprings< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, sofa::component::forcefield::TriangleBendingSprings< DataTypes >, sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >, and sofa::component::forcefield::MeshSpringForceField< sofa::defaulttype::StdVectorTypes >.
Definition at line 53 of file StiffSpringForceField.h.
| typedef DataTypes::VecDeriv sofa::component::forcefield::StiffSpringForceField< DataTypes >::VecDeriv |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::BoxStiffSpringForceField< DataTypes >, sofa::component::forcefield::MeshSpringForceField< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >, and sofa::component::forcefield::MeshSpringForceField< sofa::defaulttype::StdVectorTypes >.
Definition at line 54 of file StiffSpringForceField.h.
| anonymous enum |
| sofa::component::forcefield::StiffSpringForceField< DataTypes >::StiffSpringForceField | ( | MechanicalState * | object1, | |
| MechanicalState * | object2, | |||
| double | ks = 100.0, |
|||
| double | kd = 5.0 | |||
| ) | [inline] |
Definition at line 74 of file StiffSpringForceField.h.
| sofa::component::forcefield::StiffSpringForceField< DataTypes >::StiffSpringForceField | ( | double | ks = 100.0, |
|
| double | kd = 5.0 | |||
| ) | [inline] |
Definition at line 79 of file StiffSpringForceField.h.
| void sofa::component::forcefield::StiffSpringForceField< DataTypes >::addDForce | ( | VecDeriv & | df1, | |
| VecDeriv & | df2, | |||
| const VecDeriv & | dx1, | |||
| const VecDeriv & | dx2, | |||
| double | kFactor, | |||
| double | bFactor | |||
| ) | [inline, virtual] |
Accumulate df corresponding to dx.
Reimplemented from sofa::core::componentmodel::behavior::PairInteractionForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, and sofa::component::forcefield::SparseGridSpringForceField< DataTypes >.
Definition at line 128 of file StiffSpringForceField.inl.
References sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringDForce(), and sofa::component::forcefield::SpringForceField< DataTypes >::springs.
| void sofa::component::forcefield::StiffSpringForceField< DataTypes >::addForce | ( | VecDeriv & | f1, | |
| VecDeriv & | f2, | |||
| const VecCoord & | x1, | |||
| const VecCoord & | x2, | |||
| const VecDeriv & | v1, | |||
| const VecDeriv & | v2 | |||
| ) | [inline, virtual] |
Accumulate f corresponding to x,v.
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::SparseGridSpringForceField< DataTypes >, and sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >.
Definition at line 112 of file StiffSpringForceField.inl.
References sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringForce(), sofa::component::forcefield::StiffSpringForceField< DataTypes >::dfdx, sofa::component::forcefield::StiffSpringForceField< DataTypes >::m_potentialEnergy, and sofa::component::forcefield::SpringForceField< DataTypes >::springs.
| void sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringDForce | ( | VecDeriv & | df1, | |
| const VecDeriv & | dx1, | |||
| VecDeriv & | df2, | |||
| const VecDeriv & | dx2, | |||
| int | i, | |||
| const Spring & | spring, | |||
| double | kFactor, | |||
| double | bFactor | |||
| ) | [inline, protected] |
Apply the stiffness, i.e. accumulate df given dx.
Definition at line 99 of file StiffSpringForceField.inl.
References sofa::component::forcefield::StiffSpringForceField< DataTypes >::dfdx, sofa::component::forcefield::SpringForceField< DataTypes >::Spring::m1, and sofa::component::forcefield::SpringForceField< DataTypes >::Spring::m2.
Referenced by sofa::component::forcefield::StiffSpringForceField< DataTypes >::addDForce(), sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addDForce(), and sofa::component::forcefield::RegularGridSpringForceField< DataTypes >::addDForce().
| void sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringForce | ( | double & | potentialEnergy, | |
| VecDeriv & | f1, | |||
| const VecCoord & | p1, | |||
| const VecDeriv & | v1, | |||
| VecDeriv & | f2, | |||
| const VecCoord & | p2, | |||
| const VecDeriv & | v2, | |||
| int | i, | |||
| const Spring & | spring | |||
| ) | [inline, protected] |
Accumulate the spring force and compute and store its stiffness.
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Definition at line 51 of file StiffSpringForceField.inl.
References sofa::component::forcefield::StiffSpringForceField< DataTypes >::dfdx, dot(), force, sofa::component::forcefield::SpringForceField< DataTypes >::Spring::initpos, sofa::component::forcefield::SpringForceField< DataTypes >::Spring::kd, sofa::component::forcefield::SpringForceField< DataTypes >::Spring::ks, sofa::component::forcefield::SpringForceField< DataTypes >::Spring::m1, sofa::component::forcefield::SpringForceField< DataTypes >::Spring::m2, and sofa::component::forcefield::StiffSpringForceField< DataTypes >::N.
Referenced by sofa::component::forcefield::StiffSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addForce(), and sofa::component::forcefield::RegularGridSpringForceField< DataTypes >::addForce().
| void sofa::component::forcefield::StiffSpringForceField< DataTypes >::init | ( | void | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::MeshSpringForceField< DataTypes >, sofa::component::forcefield::QuadBendingSprings< DataTypes >, sofa::component::forcefield::RegularGridSpringForceField< DataTypes >, sofa::component::forcefield::TriangleBendingSprings< DataTypes >, and sofa::component::forcefield::MeshSpringForceField< sofa::defaulttype::StdVectorTypes >.
Definition at line 45 of file StiffSpringForceField.inl.
sofa::helper::vector<Mat> sofa::component::forcefield::StiffSpringForceField< DataTypes >::dfdx [protected] |
Definition at line 64 of file StiffSpringForceField.h.
Referenced by sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addDForce(), sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::StiffSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::RegularGridSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringDForce(), and sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringForce().
double sofa::component::forcefield::StiffSpringForceField< DataTypes >::m_potentialEnergy [protected] |
Reimplemented from sofa::component::forcefield::SpringForceField< DataTypes >.
Reimplemented in sofa::component::forcefield::RegularGridSpringForceField< DataTypes >.
Definition at line 65 of file StiffSpringForceField.h.
Referenced by sofa::component::forcefield::StiffSpringForceField< DataTypes >::addForce(), and sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addForce().
1.5.7.1