|
Caribou
|
Implementation of a direct LLT sparse linear solver.
This class provides a LL^T Cholesky factorizations of sparse matrices that are selfadjoint and positive definite. In order to reduce the fill-in, a symmetric permutation P is applied prior to the factorization such that the factorized matrix is P A P^-1.
The component uses the Eigen SimplicialLLT class as the solver backend.
| EigenSolver | Eigen direct solver type |
#include <LLTSolver.h>
Public Types | |
| template<typename T > | |
| using | Data = sofa::Data< T > |
Public Types inherited from SofaCaribou::solver::EigenSparseSolver< EigenSolver > | |
| using | EigenSolver = EigenSolver |
| using | SparseMatrix = std::remove_cv_t< typename EigenSolver::MatrixType > |
| using | Vector = Eigen::Matrix< FLOATING_POINT_TYPE, Eigen::Dynamic, 1 > |
Public Member Functions | |
| SOFA_CLASS (SOFA_TEMPLATE(LLTSolver, EigenSolver), SOFA_TEMPLATE(EigenSparseSolver, EigenSolver)) | |
Public Member Functions inherited from SofaCaribou::solver::EigenSparseSolver< EigenSolver > | |
| SOFA_CLASS (SOFA_TEMPLATE(EigenSparseSolver, EigenSolver), sofa::core::behavior::LinearSolver) | |
| virtual void | assemble (const sofa::core::MechanicalParams *mparams) |
| Assemble the system matrix A = (mM + bB + kK) inside the SparseMatrix p_A. More... | |
| void | resetSystem () final |
| Reset the complete system (A, x and b are cleared). More... | |
| void | setSystemMBKMatrix (const sofa::core::MechanicalParams *mparams) final |
| Set the linear system matrix A = (mM + bB + kK), storing the coefficients m, b and k of the mechanical M,B,K matrices. More... | |
| void | setSystemRHVector (sofa::core::MultiVecDerivId b_id) final |
| Gives the identifier of the right-hand side vector b. More... | |
| void | setSystemLHVector (sofa::core::MultiVecDerivId x_id) final |
| Gives the identifier of the left-hand side vector x. More... | |
| void | solveSystem () override |
| Solves the system using the Eigen solver. | |
| virtual auto | symmetric () const -> bool |
| States if the system matrix is symmetric. More... | |
| virtual void | set_symmetric (bool is_symmetric) |
| Explicitly states if this matrix is symmetric. | |
| auto | solver () const -> const EigenSolver & |
| Get a readonly reference to the backend solver. | |
| auto | solver () -> EigenSolver & |
| Get a reference to the backend solver. | |
| auto | mechanical_params () const -> const sofa::core::MechanicalParams & |
| Get a readonly reference to the mechanical parameters. | |
| auto | matrix_accessor () const -> const sofa::component::linearsolver::DefaultMultiMatrixAccessor & |
| Get a readonly reference to the multi-matrix accessor. More... | |
| auto | A () const -> const SparseMatrix & |
| Get a readonly reference to the global assembled system matrix. | |
| auto | b_id () const -> const sofa::core::MultiVecDerivId & |
| Get a readonly reference to the right-hand side vector identifier. | |
| auto | x_id () const -> const sofa::core::MultiVecDerivId & |
| Get a readonly reference to the left-hand side unknown vector identifier. | |
| auto | A_is_factorized () const -> bool |
| True if the solver has successfully factorize the system matrix. | |
Public Member Functions inherited from SofaCaribou::solver::LinearSolver | |
| virtual sofa::defaulttype::BaseMatrix * | create_new_matrix (unsigned int rows, unsigned int cols) const =0 |
| Creates a new BaseMatrix of size rows x cols. More... | |
| virtual sofa::defaulttype::BaseVector * | create_new_vector (unsigned int n) const =0 |
| Creates a new BaseVector of size n. More... | |
Static Public Member Functions | |
| static std::string | BackendName () |
Static Public Member Functions inherited from SofaCaribou::solver::EigenSparseSolver< EigenSolver > | |
| static auto | GetCustomTemplateName () -> std::string |
| static auto | canCreate (Derived *o, sofa::core::objectmodel::BaseContext *context, sofa::core::objectmodel::BaseObjectDescription *arg) -> bool |