SOFA API  1df67014
Open source framework for multi-physics simuation
sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory > Class Template Reference

#include <EigenDirectSparseSolver.h>

Inheritance diagram for sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >:

Detailed Description

template<class TBlockType, class TEigenSolverFactory>
class sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >

Base class for all Eigen based direct sparse solvers

Protected Attributes

DeprecatedAndRemoved d_orderingMethod
 
std::string m_selectedOrderingMethod
 
std::unique_ptr< BaseEigenSolverProxym_solver
 
sofa::linearalgebra::CompressedRowSparseMatrix< RealMfiltered
 
std::unique_ptr< EigenSparseMatrixMapm_map
 
sofa::linearalgebra::CompressedRowSparseMatrix< Real >::VecIndex MfilteredrowBegin
 
sofa::linearalgebra::CompressedRowSparseMatrix< Real >::VecIndex MfilteredcolsIndex
 

Static Protected Attributes

static constexpr unsigned int s_defaultOrderingMethod { 1 }
 

Public Member Functions

 SOFA_ABSTRACT_CLASS (SOFA_TEMPLATE2(EigenDirectSparseSolver, TBlockType, EigenSolverFactory), SOFA_TEMPLATE(ordering::OrderingMethodAccessor, SOFA_TEMPLATE2(sofa::component::linearsolver::MatrixLinearSolver, Matrix, Vector)))
 
 ~EigenDirectSparseSolver () override=default
 
void init () override
 
void reinit () override
 
void solve (Matrix &A, Vector &x, Vector &b) override
 
void invert (Matrix &A) override
 
- Public Member Functions inherited from sofa::component::linearsolver::ordering::OrderingMethodAccessor< sofa::component::linearsolver::MatrixLinearSolver< sofa::linearalgebra::CompressedRowSparseMatrix< TBlockType >, sofa::linearalgebra::FullVector< sofa::linearalgebra::CompressedRowSparseMatrix< TBlockType >::Real > > >
 SOFA_CLASS (OrderingMethodAccessor, sofa::component::linearsolver::MatrixLinearSolver< sofa::linearalgebra::CompressedRowSparseMatrix< TBlockType >, sofa::linearalgebra::FullVector< sofa::linearalgebra::CompressedRowSparseMatrix< TBlockType >::Real > >)
 
 OrderingMethodAccessor ()
 
 ~OrderingMethodAccessor () override=default
 
void init () override
 
void parse (sofa::core::objectmodel::BaseObjectDescription *arg) override
 
- Public Member Functions inherited from sofa::component::linearsolver::MatrixLinearSolver< Matrix, Vector, ThreadManager >
void resetSystem ()
 
void resizeSystem (Size n)
 
void setSystemMBKMatrix (const core::MechanicalParams *mparams)
 
void rebuildSystem (SReal, SReal)
 
void setSystemLHVector (core::MultiVecDerivId v)
 
void applySystemSolution ()
 
void applyConstraintForce (const sofa::core::ConstraintParams *, sofa::core::MultiVecDerivId, const linearalgebra::BaseVector *)
 
void computeResidual (const core::ExecParams *, linearalgebra::BaseVector *)
 
GraphScatteredVectorcreatePersistentVector ()
 
linearalgebra::BaseMatrixgetSystemBaseMatrix ()
 
linearalgebra::BaseVectorgetSystemRHBaseVector ()
 
linearalgebra::BaseVectorgetSystemLHBaseVector ()
 
void checkLinearSystem ()
 
bool addJMInvJtLocal (GraphScatteredMatrix *M, MatrixLinearSolver< GraphScatteredMatrix, GraphScatteredVector, NoThreadManager >::ResMatrixType *result, const MatrixLinearSolver< GraphScatteredMatrix, GraphScatteredVector, NoThreadManager >::JMatrixType *J, const SReal fact)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void resetSystem ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void resizeSystem (Size)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void setSystemMBKMatrix (const core::MechanicalParams *mparams)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void rebuildSystem (SReal massFactor, SReal forceFactor)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void setSystemLHVector (core::MultiVecDerivId v)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void applySystemSolution ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API GraphScatteredVectorcreatePersistentVector ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API linearalgebra::BaseMatrixgetSystemBaseMatrix ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API linearalgebra::BaseVectorgetSystemRHBaseVector ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API linearalgebra::BaseVectorgetSystemLHBaseVector ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void applyConstraintForce (const sofa::core::ConstraintParams *, sofa::core::MultiVecDerivId, const linearalgebra::BaseVector *)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void computeResidual (const core::ExecParams *params, linearalgebra::BaseVector *f)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void checkLinearSystem ()
 

Protected Member Functions

Eigen::ComputationInfo getSolverInfo () const
 
void updateSolverOderingMethod ()
 

Additional Inherited Members

- Public Attributes inherited from sofa::component::linearsolver::ordering::OrderingMethodAccessor< sofa::component::linearsolver::MatrixLinearSolver< sofa::linearalgebra::CompressedRowSparseMatrix< TBlockType >, sofa::linearalgebra::FullVector< sofa::linearalgebra::CompressedRowSparseMatrix< TBlockType >::Real > > >
SingleLink< OrderingMethodAccessor, core::behavior::BaseOrderingMethod, BaseLink::FLAG_STRONGLINK > l_orderingMethod
 

Attribute details

◆ d_orderingMethod

template<class TBlockType , class TEigenSolverFactory >
DeprecatedAndRemoved sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::d_orderingMethod
protected

◆ m_map

template<class TBlockType , class TEigenSolverFactory >
std::unique_ptr<EigenSparseMatrixMap> sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::m_map
protected

◆ m_selectedOrderingMethod

template<class TBlockType , class TEigenSolverFactory >
std::string sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::m_selectedOrderingMethod
protected

◆ m_solver

template<class TBlockType , class TEigenSolverFactory >
std::unique_ptr<BaseEigenSolverProxy> sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::m_solver
protected

◆ Mfiltered

template<class TBlockType , class TEigenSolverFactory >
sofa::linearalgebra::CompressedRowSparseMatrix<Real> sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::Mfiltered
protected

◆ MfilteredcolsIndex

template<class TBlockType , class TEigenSolverFactory >
sofa::linearalgebra::CompressedRowSparseMatrix<Real>::VecIndex sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::MfilteredcolsIndex
protected

◆ MfilteredrowBegin

template<class TBlockType , class TEigenSolverFactory >
sofa::linearalgebra::CompressedRowSparseMatrix<Real>::VecIndex sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::MfilteredrowBegin
protected

◆ s_defaultOrderingMethod

template<class TBlockType , class TEigenSolverFactory >
constexpr unsigned int sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::s_defaultOrderingMethod { 1 }
staticconstexprprotected

Constructor details

◆ ~EigenDirectSparseSolver()

template<class TBlockType , class TEigenSolverFactory >
sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::~EigenDirectSparseSolver ( )
overridedefault

Function details

◆ getSolverInfo()

template<class TBlockType , class EigenSolver >
Eigen::ComputationInfo sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, EigenSolver >::getSolverInfo
protected

◆ init()

template<class TBlockType , class EigenSolver >
void sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, EigenSolver >::init ( void  )
override

◆ invert()

template<class TBlockType , class EigenSolver >
void sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, EigenSolver >::invert ( Matrix A)
override

◆ reinit()

template<class TBlockType , class EigenSolver >
void sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, EigenSolver >::reinit
override

◆ SOFA_ABSTRACT_CLASS()

template<class TBlockType , class TEigenSolverFactory >
sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >::SOFA_ABSTRACT_CLASS ( SOFA_TEMPLATE2(EigenDirectSparseSolver< TBlockType, TEigenSolverFactory >, TBlockType, EigenSolverFactory ,
SOFA_TEMPLATE(ordering::OrderingMethodAccessor, SOFA_TEMPLATE2(sofa::component::linearsolver::MatrixLinearSolver, Matrix, Vector))   
)

◆ solve()

template<class TBlockType , class EigenSolver >
void sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, EigenSolver >::solve ( Matrix A,
Vector x,
Vector b 
)
override

◆ updateSolverOderingMethod()

template<class TBlockType , class EigenSolver >
void sofa::component::linearsolver::direct::EigenDirectSparseSolver< TBlockType, EigenSolver >::updateSolverOderingMethod
protected