SOFA API  7352f41a
Open source framework for multi-physics simuation
sofa::component::linearsolver::direct Namespace Reference

Classes

class  AsyncSparseLDLSolver
 
class  BTDLinearSolver
 
class  CholeskySolver
 Direct linear solver based on Cholesky factorization, for dense matrices. More...
 
class  EigenDirectSparseSolver
 
class  EigenSimplicialLDLT
 
class  EigenSimplicialLLT
 
struct  BaseEigenSolverProxy
 
class  EigenSolverWrapper
 
class  EigenSolverFactory
 
class  BaseMainEigenSolverFactory
 
class  MainSimplicialLDLTFactory
 
class  MainSimplicialLLTFactory
 
class  MainQRFactory
 
class  MainLUFactory
 
class  EigenSparseLU
 
class  EigenSparseQR
 
class  MetisOrderingMethod
 
class  PrecomputedLinearSolverInternalData
 
class  PrecomputedLinearSolver
 Linear system solver based on a precomputed inverse matrix. More...
 
class  SparseLDLSolver
 
class  SparseLDLImplInvertData
 
class  SparseLDLSolverImpl
 
class  SVDLinearSolver
 

Typedefs

template<class Real >
using SimplicialLDLTTraits = DeprecatedAndRemoved
 
template<class Real >
using SimplicialLLTTraits = DeprecatedAndRemoved
 
template<class Real >
using SparseLUTraits = DeprecatedAndRemoved
 
template<class Real >
using SparseQRTraits = DeprecatedAndRemoved
 

Functions

SOFA_EXPORT_DYNAMIC_LIBRARY void initExternalModule ()
 
SOFA_EXPORT_DYNAMIC_LIBRARY const chargetModuleName ()
 
SOFA_EXPORT_DYNAMIC_LIBRARY const chargetModuleVersion ()
 
SOFA_EXPORT_DYNAMIC_LIBRARY const chargetModuleComponentList ()
 
template<class EigenSolverFactory , class Scalar >
void registerOrderingMethods ()
 
template<class Scalar >
void registerOrderingMethods ()
 
void init ()
 
void csrToAdjMETIS (int n, int *M_colptr, int *M_rowind, type::vector< int > &adj, type::vector< int > &xadj, type::vector< int > &t_adj, type::vector< int > &t_xadj, type::vector< int > &tran_countvec)
 
void csrToAdj (int n, int *M_colptr, int *M_rowind, type::vector< int > &adj, type::vector< int > &xadj, type::vector< int > &t_adj, type::vector< int > &t_xadj, type::vector< int > &tran_countvec)
 
void fillReducingPermutation (int nbColumns, int *columns, int *rowIndices, int *perm, int *invperm)
 
bool compareMatrixShape (int s_M, int *M_colptr, int *M_rowind, int s_P, int *P_colptr, int *P_rowind)
 
void CSPARSE_symbolic (int n, int *M_colptr, int *M_rowind, int *colptr, int *perm, int *invperm, int *Parent, int *Flag, int *Lnz)
 
template<class Real >
void CSPARSE_numeric (int n, int *M_colptr, int *M_rowind, Real *M_values, int *colptr, int *rowind, Real *values, Real *D, int *perm, int *invperm, int *Parent, int *Flag, int *Lnz, int *Pattern, Real *Y)
 

Variables

int AsyncSparseLDLSolverClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API AsyncSparseLDLSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >
 
int BTDLinearSolverClass
 
int CholeskySolverClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API CholeskySolver< SparseMatrix< SReal >, FullVector< SReal > >
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API CholeskySolver< FullMatrix< SReal >, FullVector< SReal > >
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSimplicialLDLT< SReal >
 
int EigenSimplicialLDLTCRSClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSimplicialLLT< SReal >
 
int EigenSimplicialLLTCRSClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSparseLU< SReal >
 
int EigenSparseLUCRSClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSparseQR< SReal >
 
int EigenSparseQRCRSClass
 
int MetisOrderingMethodClass
 
int PrecomputedLinearSolverClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API PrecomputedLinearSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >
 
int SparseLDLSolverClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API SparseLDLSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >
 
int SVDLinearSolverClass
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API SVDLinearSolver< FullMatrix< SReal >, FullVector< SReal > >
 
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API SVDLinearSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >
 

Typedef Documentation

◆ SimplicialLDLTTraits

template<class Real >
using sofa::component::linearsolver::direct::SimplicialLDLTTraits = typedef DeprecatedAndRemoved

◆ SimplicialLLTTraits

template<class Real >
using sofa::component::linearsolver::direct::SimplicialLLTTraits = typedef DeprecatedAndRemoved

◆ SparseLUTraits

template<class Real >
using sofa::component::linearsolver::direct::SparseLUTraits = typedef DeprecatedAndRemoved

◆ SparseQRTraits

template<class Real >
using sofa::component::linearsolver::direct::SparseQRTraits = typedef DeprecatedAndRemoved

Function Documentation

◆ compareMatrixShape()

bool sofa::component::linearsolver::direct::compareMatrixShape ( int  s_M,
int *  M_colptr,
int *  M_rowind,
int  s_P,
int *  P_colptr,
int *  P_rowind 
)
inline

◆ CSPARSE_numeric()

template<class Real >
void sofa::component::linearsolver::direct::CSPARSE_numeric ( int  n,
int *  M_colptr,
int *  M_rowind,
Real M_values,
int *  colptr,
int *  rowind,
Real values,
Real D,
int *  perm,
int *  invperm,
int *  Parent,
int *  Flag,
int *  Lnz,
int *  Pattern,
Real Y 
)
inline

◆ CSPARSE_symbolic()

void sofa::component::linearsolver::direct::CSPARSE_symbolic ( int  n,
int *  M_colptr,
int *  M_rowind,
int *  colptr,
int *  perm,
int *  invperm,
int *  Parent,
int *  Flag,
int *  Lnz 
)
inline

◆ csrToAdj()

SOFA_COMPONENT_LINEARSOLVER_DIRECT_API void sofa::component::linearsolver::direct::csrToAdj ( int  n,
int *  M_colptr,
int *  M_rowind,
type::vector< int > &  adj,
type::vector< int > &  xadj,
type::vector< int > &  t_adj,
type::vector< int > &  t_xadj,
type::vector< int > &  tran_countvec 
)

compute the adjency matrix in CSR format from the matrix given in CSR format, we assume that the given matrix is symmetric

M_colptr[i+1]-M_colptr[i] is the number of non null values on the i-th line of the matrix M_rowind[M_colptr[i]] to M_rowind[M_colptr[i+1]] is the list of the indices of the columns containing a non null value on the i-th line

xadj[i+1]-xadj[i] is the number of neighbors of the i-th node adj[xadj[i]] is the first neighbor of the i-th node

◆ csrToAdjMETIS()

void sofa::component::linearsolver::direct::csrToAdjMETIS ( int  n,
int *  M_colptr,
int *  M_rowind,
type::vector< int > &  adj,
type::vector< int > &  xadj,
type::vector< int > &  t_adj,
type::vector< int > &  t_xadj,
type::vector< int > &  tran_countvec 
)

◆ fillReducingPermutation()

SOFA_COMPONENT_LINEARSOLVER_DIRECT_API void sofa::component::linearsolver::direct::fillReducingPermutation ( int  nbColumns,
int *  columns,
int *  rowIndices,
int *  perm,
int *  invperm 
)

◆ getModuleComponentList()

const char * sofa::component::linearsolver::direct::getModuleComponentList ( )

◆ getModuleName()

const char * sofa::component::linearsolver::direct::getModuleName ( )

◆ getModuleVersion()

const char * sofa::component::linearsolver::direct::getModuleVersion ( )

◆ init()

SOFA_COMPONENT_LINEARSOLVER_DIRECT_API void sofa::component::linearsolver::direct::init ( )

◆ initExternalModule()

void sofa::component::linearsolver::direct::initExternalModule ( )

◆ registerOrderingMethods() [1/2]

template<class EigenSolverFactory , class Scalar >
void sofa::component::linearsolver::direct::registerOrderingMethods ( )

◆ registerOrderingMethods() [2/2]

template<class Scalar >
void sofa::component::linearsolver::direct::registerOrderingMethods ( )

Variable Documentation

◆ AsyncSparseLDLSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::AsyncSparseLDLSolver< CompressedRowSparseMatrix< SReal >,FullVector< SReal > >

◆ AsyncSparseLDLSolverClass

int sofa::component::linearsolver::direct::AsyncSparseLDLSolverClass
Initial value:
= core::RegisterObject("Asynchronous direct Linear Solver using a Sparse LDL^T factorization.")
.add< AsyncSparseLDLSolver< CompressedRowSparseMatrix<SReal> , FullVector<SReal> > >(true)
.add< AsyncSparseLDLSolver< CompressedRowSparseMatrix<type::Mat<3,3,SReal> >, FullVector<SReal> > >()

◆ BTDLinearSolverClass

int sofa::component::linearsolver::direct::BTDLinearSolverClass
Initial value:
= core::RegisterObject("Linear system solver using Thomas Algorithm for Block Tridiagonal matrices")
.add< BTDLinearSolver<linearalgebra::BTDMatrix<6, SReal>, linearalgebra::BlockVector<6, SReal> > >(true)

◆ CholeskySolver< FullMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::CholeskySolver< FullMatrix< SReal >, FullVector< SReal > >

◆ CholeskySolver< SparseMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::CholeskySolver< SparseMatrix< SReal >, FullVector< SReal > >

◆ CholeskySolverClass

int sofa::component::linearsolver::direct::CholeskySolverClass
Initial value:
= core::RegisterObject("Direct linear solver based on Cholesky factorization, for dense matrices")
.add< CholeskySolver< SparseMatrix<SReal>, FullVector<SReal> > >(true)
.add< CholeskySolver< FullMatrix<SReal>, FullVector<SReal> > >()

◆ EigenSimplicialLDLT< SReal >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::EigenSimplicialLDLT< SReal >

◆ EigenSimplicialLDLTCRSClass

int sofa::component::linearsolver::direct::EigenSimplicialLDLTCRSClass
Initial value:
= sofa::core::RegisterObject("Direct Linear Solver using a Sparse LDL^T factorization.")
.add< EigenSimplicialLDLT< sofa::type::Mat<3,3,SReal> > >()
Helper class used to register a class in the ObjectFactory.
Definition: ObjectFactory.h:291
RegisterObject & add(bool defaultTemplate=false)
Definition: ObjectFactory.h:322
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSimplicialLDLT< SReal >
Definition: EigenSimplicialLDLT.cpp:30

◆ EigenSimplicialLLT< SReal >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::EigenSimplicialLLT< SReal >

◆ EigenSimplicialLLTCRSClass

int sofa::component::linearsolver::direct::EigenSimplicialLLTCRSClass
Initial value:
= sofa::core::RegisterObject("Direct Linear Solver using a Sparse LL^T factorization.")
.add< EigenSimplicialLLT< sofa::type::Mat<3,3,SReal> > >()
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSimplicialLLT< SReal >
Definition: EigenSimplicialLLT.cpp:30

◆ EigenSparseLU< SReal >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::EigenSparseLU< SReal >

◆ EigenSparseLUCRSClass

int sofa::component::linearsolver::direct::EigenSparseLUCRSClass
Initial value:
= sofa::core::RegisterObject("Direct Linear Solver using a Sparse LU factorization.")
.add< EigenSparseLU< sofa::type::Mat<3,3,SReal> > >()
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSparseLU< SReal >
Definition: EigenSparseLU.cpp:30

◆ EigenSparseQR< SReal >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::EigenSparseQR< SReal >

◆ EigenSparseQRCRSClass

int sofa::component::linearsolver::direct::EigenSparseQRCRSClass
Initial value:
= sofa::core::RegisterObject("Direct Linear Solver using a Sparse QR factorization.")
.add< EigenSparseQR< sofa::type::Mat<3,3,SReal> > >()
template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API EigenSparseQR< SReal >
Definition: EigenSparseQR.cpp:30

◆ MetisOrderingMethodClass

int sofa::component::linearsolver::direct::MetisOrderingMethodClass
Initial value:
= sofa::core::RegisterObject("Nested dissection algorithm implemented in the METIS library.")
.add<MetisOrderingMethod>()

◆ PrecomputedLinearSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::PrecomputedLinearSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

◆ PrecomputedLinearSolverClass

int sofa::component::linearsolver::direct::PrecomputedLinearSolverClass
Initial value:
= core::RegisterObject("Linear system solver based on a precomputed inverse matrix")
.add< PrecomputedLinearSolver< CompressedRowSparseMatrix<SReal> , FullVector<SReal> > >()

◆ SparseLDLSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::SparseLDLSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

◆ SparseLDLSolverClass

int sofa::component::linearsolver::direct::SparseLDLSolverClass
Initial value:
= core::RegisterObject("Direct Linear Solver using a Sparse LDL^T factorization.")
.add< SparseLDLSolver< CompressedRowSparseMatrix<SReal>,FullVector<SReal> > >(true)
.add< SparseLDLSolver< CompressedRowSparseMatrix<type::Mat<3,3,SReal> >,FullVector<SReal> > >()

◆ SVDLinearSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::SVDLinearSolver< CompressedRowSparseMatrix< SReal >, FullVector< SReal > >

◆ SVDLinearSolver< FullMatrix< SReal >, FullVector< SReal > >

template class SOFA_COMPONENT_LINEARSOLVER_DIRECT_API sofa::component::linearsolver::direct::SVDLinearSolver< FullMatrix< SReal >, FullVector< SReal > >

◆ SVDLinearSolverClass

int sofa::component::linearsolver::direct::SVDLinearSolverClass
Initial value:
= core::RegisterObject("Linear system solver using a SVD decomposition of a dense matrix")
.add< SVDLinearSolver< FullMatrix<SReal>, FullVector<SReal> > >()
.add< SVDLinearSolver< CompressedRowSparseMatrix<SReal>, FullVector<SReal> > >()
.add< SVDLinearSolver< CompressedRowSparseMatrix<type::Mat<3,3, SReal>>, FullVector<SReal> > >()
.addAlias("SVDLinear")
.addAlias("SVD")