A sparse LU factorization and solver based on UmfPack. More...
#include <UmfPackSupport.h>
Inherits noncopyable.
Public Member Functions | |
void | analyzePattern (const MatrixType &matrix) |
void | compute (const MatrixType &matrix) |
void | factorize (const MatrixType &matrix) |
ComputationInfo | info () const |
Reports whether previous computation was successful. | |
template<typename Rhs > | |
const internal::solve_retval < UmfPackLU, Rhs > | solve (const MatrixBase< Rhs > &b) const |
A sparse LU factorization and solver based on UmfPack.
This class allows to solve for A.X = B sparse linear problems via a LU factorization using the UmfPack library. The sparse matrix A must be squared and full rank. The vectors or matrices X and B can be either dense or sparse.
The input matrix A should be in a compressed and column-major form. Otherwise an expensive copy will be made. You can call the inexpensive makeCompressed() to get a compressed matrix.
_MatrixType | the type of the sparse matrix A, it must be a SparseMatrix<> |
void analyzePattern | ( | const MatrixType & | matrix | ) | [inline] |
This function is particularly useful when solving for several problems having the same structure.
References Eigen::InvalidInput, and Eigen::Success.
Referenced by UmfPackLU< _MatrixType >::compute().
void compute | ( | const MatrixType & | matrix | ) | [inline] |
Computes the sparse Cholesky decomposition of matrix Note that the matrix should be column-major, and in compressed format for best performance.
References UmfPackLU< _MatrixType >::analyzePattern(), and UmfPackLU< _MatrixType >::factorize().
void factorize | ( | const MatrixType & | matrix | ) | [inline] |
Performs a numeric decomposition of matrix
The given matrix must has the same sparcity than the matrix on which the pattern anylysis has been performed.
References Eigen::NumericalIssue, and Eigen::Success.
Referenced by UmfPackLU< _MatrixType >::compute().
ComputationInfo info | ( | ) | const [inline] |
Reports whether previous computation was successful.
Success
if computation was succesful, NumericalIssue
if the matrix.appears to be negative. const internal::solve_retval<UmfPackLU, Rhs> solve | ( | const MatrixBase< Rhs > & | b | ) | const [inline] |