sofa::component::linearsolver::LULinearSolver< Matrix, Vector > Class Template Reference

Linear system solver using the default (LU factorization) algorithm. More...

#include <LULinearSolver.h>

Inheritance diagram for sofa::component::linearsolver::LULinearSolver< Matrix, Vector >:

Inheritance graph
[legend]
Collaboration diagram for sofa::component::linearsolver::LULinearSolver< Matrix, Vector >:

Collaboration graph
[legend]

Public Member Functions

 LULinearSolver ()
 ~LULinearSolver ()
void invert (Matrix &M)
 Invert M.
void solve (Matrix &M, Vector &x, Vector &b)
 Solve Mx=b.
void computeMinv ()
double getMinvElement (int i, int j)
template<class RMatrix , class JMatrix >
bool addJMInvJt (RMatrix &result, JMatrix &J, double fact)
bool addJMInvJt (defaulttype::BaseMatrix *result, defaulttype::BaseMatrix *J, double fact)
 Multiply the inverse of the system matrix by the transpose of the given matrix, and multiply the result with the given matrix J.

Data Fields

Data< bool > f_verbose
Matrix::LUSolver * solver
Matrix::InvMatrixType Minv
bool computedMinv

Detailed Description

template<class Matrix, class Vector>
class sofa::component::linearsolver::LULinearSolver< Matrix, Vector >

Linear system solver using the default (LU factorization) algorithm.

Definition at line 45 of file LULinearSolver.h.


Constructor & Destructor Documentation

template<class Matrix , class Vector >
sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::LULinearSolver (  )  [inline]

Definition at line 53 of file LULinearSolver.h.

template<class Matrix , class Vector >
sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::~LULinearSolver (  )  [inline]


Member Function Documentation

template<class Matrix , class Vector >
bool sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::addJMInvJt ( defaulttype::BaseMatrix *  result,
defaulttype::BaseMatrix *  J,
double  fact 
) [inline, virtual]

Multiply the inverse of the system matrix by the transpose of the given matrix, and multiply the result with the given matrix J.

Parameters:
result the variable where the result will be added
J the matrix J to use
Returns:
false if the solver does not support this operation, of it the system matrix is not invertible

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

Definition at line 173 of file LULinearSolver.h.

References sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::addJMInvJt().

template<class Matrix , class Vector >
template<class RMatrix , class JMatrix >
bool sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::addJMInvJt ( RMatrix &  result,
JMatrix &  J,
double  fact 
) [inline]

template<class Matrix , class Vector >
void sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::computeMinv (  )  [inline]

template<class Matrix , class Vector >
double sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::getMinvElement ( int  i,
int  j 
) [inline]

template<class Matrix , class Vector >
void sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::invert ( Matrix &  M  )  [inline, virtual]

template<class Matrix , class Vector >
void sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::solve ( Matrix &  M,
Vector &  x,
Vector &  b 
) [inline, virtual]


Field Documentation

template<class Matrix , class Vector >
bool sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::computedMinv

template<class Matrix , class Vector >
Data<bool> sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::f_verbose

template<class Matrix , class Vector >
Matrix::InvMatrixType sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::Minv

template<class Matrix , class Vector >
Matrix::LUSolver* sofa::component::linearsolver::LULinearSolver< Matrix, Vector >::solver


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

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