SOFA API  c76874b7
Open source framework for multi-physics simuation
sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager > Class Template Reference

#include <WarpPreconditioner.h>

Linear system solver wrapping another (precomputed) linear solver by a per-node rotation matrix. More...

Inheritance diagram for sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >:

Detailed Description

template<class TMatrix, class TVector, class ThreadManager = NoThreadManager>
class sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >

Linear system solver wrapping another (precomputed) linear solver by a per-node rotation matrix.

Public Attributes

Data< std::string > solverName
 Name of the solver/preconditioner to warp. More...
 
Data< unsigned > f_useRotationFinder
 Which rotation Finder to use. More...
 

Public Member Functions

 SOFA_CLASS (SOFA_TEMPLATE3(WarpPreconditioner, TMatrix, TVector, ThreadManager), SOFA_TEMPLATE3(sofa::component::linearsolver::MatrixLinearSolver, TMatrix, TVector, ThreadManager))
 
 ~WarpPreconditioner ()
 
void bwdInit () override
 
void setSystemMBKMatrix (const core::MechanicalParams *mparams) override
 
void invert (Matrix &M) override
 
void solve (Matrix &M, Vector &solution, Vector &rh) override
 Solve the system as constructed using the previous methods. More...
 
bool addJMInvJt (defaulttype::BaseMatrix *result, defaulttype::BaseMatrix *J, double fact) override
 Solve the system as constructed using the previous methods. More...
 
bool addMInvJt (defaulttype::BaseMatrix *result, defaulttype::BaseMatrix *J, double fact) override
 
unsigned getSystemDimention (const sofa::core::MechanicalParams *mparams)
 
void computeResidual (const core::ExecParams *params, defaulttype::BaseVector *) override
 
void updateSystemMatrix () override
 

Protected Member Functions

 WarpPreconditioner ()
 

Attribute details

template<class TMatrix , class TVector , class ThreadManager = NoThreadManager>
Data<unsigned> sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::f_useRotationFinder

Which rotation Finder to use.

template<class TMatrix , class TVector , class ThreadManager = NoThreadManager>
Data<std::string> sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::solverName

Name of the solver/preconditioner to warp.

Constructor details

template<class TMatrix , class TVector , class ThreadManager >
sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::WarpPreconditioner ( )
protected
template<class TMatrix , class TVector , class ThreadManager >
sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::~WarpPreconditioner ( )

Function details

template<class TMatrix , class TVector , class ThreadManager >
bool sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::addJMInvJt ( defaulttype::BaseMatrix result,
defaulttype::BaseMatrix J,
double  fact 
)
override

Solve the system as constructed using the previous methods.

template<class TMatrix , class TVector , class ThreadManager >
bool sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::addMInvJt ( defaulttype::BaseMatrix result,
defaulttype::BaseMatrix J,
double  fact 
)
override
template<class TMatrix , class TVector , class ThreadManager >
void sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::bwdInit ( )
override
template<class TMatrix , class TVector , class ThreadManager >
void sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::computeResidual ( const core::ExecParams params,
defaulttype::BaseVector f 
)
override
template<class TMatrix , class TVector , class ThreadManager >
unsigned sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::getSystemDimention ( const sofa::core::MechanicalParams mparams)
template<class TMatrix , class TVector , class ThreadManager >
void sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::invert ( Matrix M)
override
template<class TMatrix , class TVector , class ThreadManager >
void sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::setSystemMBKMatrix ( const core::MechanicalParams mparams)
override
template<class TMatrix , class TVector , class ThreadManager = NoThreadManager>
sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::SOFA_CLASS ( SOFA_TEMPLATE3(WarpPreconditioner< TMatrix, TVector, ThreadManager >, TMatrix, TVector, ThreadManager)  ,
SOFA_TEMPLATE3(sofa::component::linearsolver::MatrixLinearSolver, TMatrix, TVector, ThreadManager)   
)
template<class TMatrix , class TVector , class ThreadManager >
void sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::solve ( Matrix M,
Vector solution,
Vector rh 
)
override

Solve the system as constructed using the previous methods.

template<class TMatrix , class TVector , class ThreadManager >
void sofa::component::linearsolver::WarpPreconditioner< TMatrix, TVector, ThreadManager >::updateSystemMatrix ( )
override