sofa::component::forcefield::StiffSpringForceField< DataTypes > Class Template Reference

SpringForceField able to evaluate and apply its stiffness. More...

#include <StiffSpringForceField.h>

Inheritance diagram for sofa::component::forcefield::StiffSpringForceField< DataTypes >:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::forcefield::StiffSpringForceField< DataTypes >:

Collaboration graph
[legend]

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

Detailed Description

template<class DataTypes>
class sofa::component::forcefield::StiffSpringForceField< DataTypes >

SpringForceField able to evaluate and apply its stiffness.

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.


Member Typedef Documentation

template<class DataTypes >
typedef DataTypes::Coord sofa::component::forcefield::StiffSpringForceField< DataTypes >::Coord

template<class DataTypes >
typedef DataTypes::Deriv sofa::component::forcefield::StiffSpringForceField< DataTypes >::Deriv

template<class DataTypes >
typedef Coord::value_type sofa::component::forcefield::StiffSpringForceField< DataTypes >::Real

template<class DataTypes >
typedef Inherit::Spring sofa::component::forcefield::StiffSpringForceField< DataTypes >::Spring

template<class DataTypes >
typedef DataTypes::VecCoord sofa::component::forcefield::StiffSpringForceField< DataTypes >::VecCoord

template<class DataTypes >
typedef DataTypes::VecDeriv sofa::component::forcefield::StiffSpringForceField< DataTypes >::VecDeriv


Member Enumeration Documentation

template<class DataTypes >
anonymous enum

Enumerator:
N 

Definition at line 60 of file StiffSpringForceField.h.


Constructor & Destructor Documentation

template<class DataTypes >
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.

template<class DataTypes >
sofa::component::forcefield::StiffSpringForceField< DataTypes >::StiffSpringForceField ( double  ks = 100.0,
double  kd = 5.0 
) [inline]

Definition at line 79 of file StiffSpringForceField.h.


Member Function Documentation

template<class DataTypes >
void sofa::component::forcefield::StiffSpringForceField< DataTypes >::addDForce ( VecDeriv &  df1,
VecDeriv &  df2,
const VecDeriv &  dx1,
const VecDeriv &  dx2,
double  kFactor,
double  bFactor 
) [inline, virtual]

template<class DataTypes >
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]

template<class DataTypes >
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]

template<class DataTypes >
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]

template<class DataTypes >
void sofa::component::forcefield::StiffSpringForceField< DataTypes >::init ( void   )  [inline, virtual]


Field Documentation

template<class DataTypes >
double sofa::component::forcefield::StiffSpringForceField< DataTypes >::m_potentialEnergy [protected]


The documentation for this class was generated from the following files:

Generated on Sun Nov 23 04:20:10 2008 for Sofa by  doxygen 1.5.7.1