sofa::component::odesolver::EulerImplicitSolver Class Reference

Implicit time integrator using backward Euler scheme. More...

#include <EulerImplicitSolver.h>

Inheritance diagram for sofa::component::odesolver::EulerImplicitSolver:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::odesolver::EulerImplicitSolver:

Collaboration graph
[legend]

Public Member Functions

 EulerImplicitSolver ()
void solve (double dt)
 Main computation method.
virtual double getVelocityIntegrationFactor () const
 Given a displacement as computed by the linear system inversion, how much will it affect the velocity.
virtual double getPositionIntegrationFactor () const
 Given a displacement as computed by the linear system inversion, how much will it affect the position.
double getIntegrationFactor (int inputDerivative, int outputDerivative) const
 Given an input derivative order (0 for position, 1 for velocity, 2 for acceleration), how much will it affect the output derivative of the given order.
double getSolutionIntegrationFactor (int outputDerivative) const
 Given a solution of the linear system, how much will it affect the output derivative of the given order.

Data Fields

Data< double > f_rayleighStiffness
Data< double > f_rayleighMass
Data< double > f_velocityDamping
Data< bool > f_verbose

Detailed Description

Implicit time integrator using backward Euler scheme.

Definition at line 44 of file EulerImplicitSolver.h.


Constructor & Destructor Documentation

sofa::component::odesolver::EulerImplicitSolver::EulerImplicitSolver (  ) 

Definition at line 50 of file EulerImplicitSolver.cpp.


Member Function Documentation

double sofa::component::odesolver::EulerImplicitSolver::getIntegrationFactor ( int  inputDerivative,
int  outputDerivative 
) const [inline, virtual]

Given an input derivative order (0 for position, 1 for velocity, 2 for acceleration), how much will it affect the output derivative of the given order.

This method is used to compute the compliance for contact corrections. For example, a backward-Euler dynamic implicit integrator would use: Input: x_t v_t a_{t+dt} x_{t+dt} 1 dt dt^2 v_{t+dt} 0 1 dt

If the linear system is expressed on s = a_{t+dt} dt, then the final factors are: Input: x_t v_t a_t s x_{t+dt} 1 dt 0 dt v_{t+dt} 0 1 0 1 a_{t+dt} 0 0 0 1/dt The last column is returned by the getSolutionIntegrationFactor method.

Implements sofa::core::componentmodel::behavior::OdeSolver.

Definition at line 90 of file EulerImplicitSolver.h.

References sofa::core::objectmodel::BaseObject::getContext(), and sofa::core::objectmodel::BaseContext::getDt().

virtual double sofa::component::odesolver::EulerImplicitSolver::getPositionIntegrationFactor (  )  const [inline, virtual]

Given a displacement as computed by the linear system inversion, how much will it affect the position.

This method is used to compute the compliance for contact corrections For Euler methods, it is typically dt².

Reimplemented from sofa::core::componentmodel::behavior::OdeSolver.

Definition at line 70 of file EulerImplicitSolver.h.

References sofa::core::objectmodel::BaseObject::getContext(), and sofa::core::objectmodel::BaseContext::getDt().

double sofa::component::odesolver::EulerImplicitSolver::getSolutionIntegrationFactor ( int  outputDerivative  )  const [inline, virtual]

Given a solution of the linear system, how much will it affect the output derivative of the given order.

Implements sofa::core::componentmodel::behavior::OdeSolver.

Definition at line 105 of file EulerImplicitSolver.h.

References sofa::core::objectmodel::BaseObject::getContext(), and sofa::core::objectmodel::BaseContext::getDt().

virtual double sofa::component::odesolver::EulerImplicitSolver::getVelocityIntegrationFactor (  )  const [inline, virtual]

Given a displacement as computed by the linear system inversion, how much will it affect the velocity.

This method is used to compute the compliance for contact corrections For Euler methods, it is typically dt.

Reimplemented from sofa::core::componentmodel::behavior::OdeSolver.

Definition at line 61 of file EulerImplicitSolver.h.

void sofa::component::odesolver::EulerImplicitSolver::solve ( double  dt  )  [virtual]


Field Documentation

Definition at line 51 of file EulerImplicitSolver.h.

Referenced by solve().


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

Generated on Sun Nov 23 04:21:19 2008 for Sofa by  doxygen 1.5.7.1