#include <ForceField.h>


Public Types | |
| typedef TDataTypes | DataTypes |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
Public Member Functions | |
| ForceField (MechanicalState< DataTypes > *mm=NULL) | |
| virtual | ~ForceField () |
| virtual void | init () |
| Initialization method called at graph modification, during bottom-up traversal. | |
| MechanicalState< DataTypes > * | getMState () |
| Retrieve the associated MechanicalState. | |
| virtual std::string | getTemplateName () const |
| Get the template type names (if any) used to instantiate this object. | |
Vector operations | |
| virtual void | addForce () |
| 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 (double kFactor, double bFactor) |
| Compute the force derivative given a small displacement from the position and velocity used in the previous call to addForce(). | |
| virtual void | addDForceV (double kFactor, double bFactor) |
| Same as addDForce(), except the velocity vector should be used instead of dx. | |
| virtual double | getPotentialEnergy () |
| Get the potential energy associated to this ForceField. | |
| virtual void | addForce (VecDeriv &f, const VecCoord &x, const VecDeriv &v)=0 |
| 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 void | addDForce (VecDeriv &df, const VecDeriv &dx, double kFactor, double bFactor) |
| 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)=0 |
| Get the potential energy associated to this ForceField. | |
Static Public Member Functions | |
| template<class T > | |
| static bool | canCreate (T *&obj, objectmodel::BaseContext *context, objectmodel::BaseObjectDescription *arg) |
| Pre-construction check method called by ObjectFactory. | |
| static std::string | templateName (const ForceField< DataTypes > *=NULL) |
Protected Attributes | |
| MechanicalState< DataTypes > * | mstate |
This class define the abstract API common to force fields using a given type of DOFs. A force field computes forces applied to one simulated body given its current position and velocity.
For implicit integration schemes, it must also compute the derivative ( df, given a displacement dx ).
Definition at line 59 of file ForceField.h.
| typedef DataTypes::Coord sofa::core::componentmodel::behavior::ForceField< TDataTypes >::Coord |
Reimplemented in sofa::core::componentmodel::behavior::Mass< DataTypes >, sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::filemanager::pml::LMLForce< DataTypes >, and sofa::gpu::cuda::CudaTestForceField.
Definition at line 65 of file ForceField.h.
| typedef TDataTypes sofa::core::componentmodel::behavior::ForceField< TDataTypes >::DataTypes |
Definition at line 62 of file ForceField.h.
| typedef DataTypes::Deriv sofa::core::componentmodel::behavior::ForceField< TDataTypes >::Deriv |
Reimplemented in sofa::core::componentmodel::behavior::Mass< DataTypes >, sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::BoxConstantForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, and sofa::filemanager::pml::LMLForce< DataTypes >.
Definition at line 66 of file ForceField.h.
| typedef DataTypes::VecCoord sofa::core::componentmodel::behavior::ForceField< TDataTypes >::VecCoord |
Reimplemented in sofa::core::componentmodel::behavior::Mass< DataTypes >, sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, and sofa::filemanager::pml::LMLForce< DataTypes >.
Definition at line 63 of file ForceField.h.
| typedef DataTypes::VecDeriv sofa::core::componentmodel::behavior::ForceField< TDataTypes >::VecDeriv |
Reimplemented in sofa::core::componentmodel::behavior::Mass< DataTypes >, sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, and sofa::filemanager::pml::LMLForce< DataTypes >.
Definition at line 64 of file ForceField.h.
| sofa::core::componentmodel::behavior::ForceField< DataTypes >::ForceField | ( | MechanicalState< DataTypes > * | mm = NULL |
) | [inline] |
Definition at line 46 of file ForceField.inl.
| sofa::core::componentmodel::behavior::ForceField< DataTypes >::~ForceField | ( | ) | [inline, virtual] |
Definition at line 52 of file ForceField.inl.
| void sofa::core::componentmodel::behavior::ForceField< DataTypes >::addDForce | ( | VecDeriv & | df, | |
| const VecDeriv & | dx, | |||
| double | kFactor, | |||
| double | bFactor | |||
| ) | [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 += kFactor K dx + bFactor B dx $
This method must be implemented by the component, and is usually called by the generic ForceField::addDForce() method.
To support old components that implement the deprecated addForce method without scalar coefficients, it defaults to using a temporaty vector to compute $ K dx $ and then manually scaling all values by kFactor.
: Add a better way to get the current VecId of dx
Reimplemented in sofa::core::componentmodel::behavior::Mass< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, and sofa::component::forcefield::SphereForceField< DataTypes >.
Definition at line 90 of file ForceField.inl.
References sofa::core::componentmodel::behavior::BaseMechanicalState::VecId::index.
| void sofa::core::componentmodel::behavior::ForceField< 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 in sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, and sofa::filemanager::pml::LMLForce< DataTypes >.
Definition at line 84 of file ForceField.inl.
References sofa::core::objectmodel::Base::getClassName().
| void sofa::core::componentmodel::behavior::ForceField< DataTypes >::addDForce | ( | double | kFactor, | |
| double | bFactor | |||
| ) | [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 += kFactor K dx + bFactor B dx $
This method retrieves the force and dx vector from the MechanicalState and call the internal addDForce(VecDeriv&,const VecDeriv&,double,double) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseForceField.
Definition at line 71 of file ForceField.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getDx(), sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getF(), and sofa::core::componentmodel::behavior::ForceField< TDataTypes >::mstate.
| void sofa::core::componentmodel::behavior::ForceField< DataTypes >::addDForceV | ( | double | kFactor, | |
| double | bFactor | |||
| ) | [inline, virtual] |
Same as addDForce(), except the velocity vector should be used instead of dx.
If the ForceField can be represented as a matrix, this method computes $ df += kFactor K v + bFactor B v $
This method retrieves the force and velocity vector from the MechanicalState and call the internal addDForce(VecDeriv&,const VecDeriv&,double,double) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseForceField.
Definition at line 78 of file ForceField.inl.
| virtual void sofa::core::componentmodel::behavior::ForceField< TDataTypes >::addForce | ( | VecDeriv & | f, | |
| const VecCoord & | x, | |||
| const VecDeriv & | v | |||
| ) | [pure 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.
Implemented in sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::filemanager::pml::LMLForce< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, and sofa::component::mass::UniformMass< DataTypes, MassType >.
| void sofa::core::componentmodel::behavior::ForceField< DataTypes >::addForce | ( | ) | [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 retrieves the force, x and v vector from the MechanicalState and call the internal addForce(VecDeriv&,const VecCoord&,const VecDeriv&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseForceField.
Definition at line 64 of file ForceField.inl.
| static bool sofa::core::componentmodel::behavior::ForceField< TDataTypes >::canCreate | ( | T *& | obj, | |
| objectmodel::BaseContext * | context, | |||
| objectmodel::BaseObjectDescription * | arg | |||
| ) | [inline, static] |
Pre-construction check method called by ObjectFactory.
Check that DataTypes matches the MechanicalState.
Reimplemented from sofa::core::objectmodel::BaseObject.
Definition at line 188 of file ForceField.h.
Referenced by sofa::core::componentmodel::behavior::ForceField< DataTypes >::canCreate().
| MechanicalState<DataTypes>* sofa::core::componentmodel::behavior::ForceField< TDataTypes >::getMState | ( | ) | [inline] |
| virtual double sofa::core::componentmodel::behavior::ForceField< TDataTypes >::getPotentialEnergy | ( | const VecCoord & | x | ) | [pure 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.
Implemented in sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::ConicalForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::EllipsoidForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::PlaneForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SphereForceField< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::filemanager::pml::LMLForce< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::forcefield::ConstantForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, and sofa::component::mass::UniformMass< DataTypes, MassType >.
| double sofa::core::componentmodel::behavior::ForceField< DataTypes >::getPotentialEnergy | ( | ) | [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 retrieves the x vector from the MechanicalState and call the internal getPotentialEnergy(const VecCoord&) method implemented by the component.
Implements sofa::core::componentmodel::behavior::BaseForceField.
Definition at line 111 of file ForceField.inl.
References sofa::core::componentmodel::behavior::MechanicalState< TDataTypes >::getX(), and sofa::core::componentmodel::behavior::ForceField< TDataTypes >::mstate.
| virtual std::string sofa::core::componentmodel::behavior::ForceField< TDataTypes >::getTemplateName | ( | ) | const [inline, virtual] |
Get the template type names (if any) used to instantiate this object.
Reimplemented from sofa::core::objectmodel::Base.
Definition at line 195 of file ForceField.h.
| void sofa::core::componentmodel::behavior::ForceField< DataTypes >::init | ( | ) | [inline, virtual] |
Initialization method called at graph modification, during bottom-up traversal.
Reimplemented from sofa::core::objectmodel::BaseObject.
Reimplemented in sofa::component::forcefield::BeamFEMForceField< DataTypes >, sofa::component::forcefield::BoxConstantForceField< DataTypes >, sofa::component::forcefield::EdgePressureForceField< DataTypes >, sofa::component::forcefield::HexahedralFEMForceField< DataTypes >, sofa::component::forcefield::HexahedronFEMForceField< DataTypes >, sofa::component::forcefield::LennardJonesForceField< DataTypes >, sofa::component::forcefield::QuadularBendingSprings< DataTypes >, sofa::component::forcefield::SPHFluidForceField< DataTypes >, sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >, sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >, sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >, sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >, sofa::component::forcefield::TriangleFEMForceField< DataTypes >, sofa::component::forcefield::TrianglePressureForceField< DataTypes >, sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >, sofa::component::forcefield::TriangularBendingSprings< DataTypes >, sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularFEMForceField< DataTypes >, sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >, sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::MatrixMass< DataTypes, MassType >, sofa::component::mass::UniformMass< DataTypes, MassType >, sofa::gpu::cuda::CudaTestForceField, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, sofa::component::mass::DiagonalMass< DataTypes, MassType >, and sofa::component::mass::DiagonalMass< DataTypes, MassType >.
Definition at line 57 of file ForceField.inl.
References sofa::core::objectmodel::BaseObject::getContext(), and sofa::core::componentmodel::behavior::ForceField< TDataTypes >::mstate.
| static std::string sofa::core::componentmodel::behavior::ForceField< TDataTypes >::templateName | ( | const ForceField< DataTypes > * | = NULL |
) | [inline, static] |
Definition at line 200 of file ForceField.h.
Referenced by sofa::core::componentmodel::behavior::ForceField< DataTypes >::getTemplateName().
MechanicalState<DataTypes>* sofa::core::componentmodel::behavior::ForceField< TDataTypes >::mstate [protected] |
Definition at line 206 of file ForceField.h.
Referenced by sofa::core::componentmodel::behavior::ForceField< TDataTypes >::addDForce(), sofa::core::componentmodel::behavior::ForceField< DataTypes >::getMState(), sofa::core::componentmodel::behavior::ForceField< TDataTypes >::getPotentialEnergy(), sofa::core::componentmodel::behavior::ForceField< TDataTypes >::init(), and sofa::gpu::cuda::CudaTestForceField::reinit().
1.5.7.1