![]() |
Prusa Slicer 2.6.0
|
A sparse LU factorization and solver based on UmfPack. More...
#include <src/eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h>
Inheritance diagram for Eigen::UmfPackLU< _MatrixType >:
Collaboration diagram for Eigen::UmfPackLU< _MatrixType >:Public Types | |
| enum | { ColsAtCompileTime = MatrixType::ColsAtCompileTime , MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime } |
| typedef _MatrixType | MatrixType |
| typedef MatrixType::Scalar | Scalar |
| typedef MatrixType::RealScalar | RealScalar |
| typedef MatrixType::StorageIndex | StorageIndex |
| typedef Matrix< Scalar, Dynamic, 1 > | Vector |
| typedef Matrix< int, 1, MatrixType::ColsAtCompileTime > | IntRowVectorType |
| typedef Matrix< int, MatrixType::RowsAtCompileTime, 1 > | IntColVectorType |
| typedef SparseMatrix< Scalar > | LUMatrixType |
| typedef SparseMatrix< Scalar, ColMajor, int > | UmfpackMatrixType |
| typedef Ref< const UmfpackMatrixType, StandardCompressedFormat > | UmfpackMatrixRef |
| typedef Array< double, UMFPACK_CONTROL, 1 > | UmfpackControl |
| typedef Array< double, UMFPACK_INFO, 1 > | UmfpackInfo |
Protected Types | |
| typedef SparseSolverBase< UmfPackLU< _MatrixType > > | Base |
Protected Member Functions | |
| void | init () |
| void | analyzePattern_impl () |
| void | factorize_impl () |
| template<typename MatrixDerived > | |
| void | grab (const EigenBase< MatrixDerived > &A) |
| void | grab (const UmfpackMatrixRef &A) |
Private Member Functions | |
| UmfPackLU (const UmfPackLU &) | |
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.
| _MatrixType | the type of the sparse matrix A, it must be a SparseMatrix<> |
\implsparsesolverconcept
|
protected |
| typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> Eigen::UmfPackLU< _MatrixType >::IntColVectorType |
| typedef Matrix<int, 1, MatrixType::ColsAtCompileTime> Eigen::UmfPackLU< _MatrixType >::IntRowVectorType |
| typedef SparseMatrix<Scalar> Eigen::UmfPackLU< _MatrixType >::LUMatrixType |
| typedef _MatrixType Eigen::UmfPackLU< _MatrixType >::MatrixType |
| typedef MatrixType::RealScalar Eigen::UmfPackLU< _MatrixType >::RealScalar |
| typedef MatrixType::Scalar Eigen::UmfPackLU< _MatrixType >::Scalar |
| typedef MatrixType::StorageIndex Eigen::UmfPackLU< _MatrixType >::StorageIndex |
| typedef Array<double, UMFPACK_CONTROL, 1> Eigen::UmfPackLU< _MatrixType >::UmfpackControl |
| typedef Array<double, UMFPACK_INFO, 1> Eigen::UmfPackLU< _MatrixType >::UmfpackInfo |
| typedef Ref<const UmfpackMatrixType, StandardCompressedFormat> Eigen::UmfPackLU< _MatrixType >::UmfpackMatrixRef |
| typedef SparseMatrix<Scalar,ColMajor,int> Eigen::UmfPackLU< _MatrixType >::UmfpackMatrixType |
| typedef Matrix<Scalar,Dynamic,1> Eigen::UmfPackLU< _MatrixType >::Vector |
| anonymous enum |
| Enumerator | |
|---|---|
| ColsAtCompileTime | |
| MaxColsAtCompileTime | |
|
inline |
References Eigen::UmfPackLU< _MatrixType >::init().
Here is the call graph for this function:
|
inlineexplicit |
References Eigen::UmfPackLU< _MatrixType >::compute(), and Eigen::UmfPackLU< _MatrixType >::init().
Here is the call graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::m_numeric, Eigen::UmfPackLU< _MatrixType >::m_symbolic, Eigen::umfpack_free_numeric(), and Eigen::umfpack_free_symbolic().
Here is the call graph for this function:
|
inlineprivate |
| bool Eigen::UmfPackLU< MatrixType >::_solve_impl | ( | const MatrixBase< BDerived > & | b, |
| MatrixBase< XDerived > & | x | ||
| ) | const |
References Eigen::PlainObjectBase< Derived >::data(), eigen_assert, Eigen::PlainObjectBase< Derived >::resize(), Eigen::RowMajorBit, and Eigen::umfpack_solve().
Here is the call graph for this function:
|
inlineinherited |
|
inline |
Performs a symbolic decomposition on the sparcity of matrix.
This function is particularly useful when solving for several problems having the same structure.
References Eigen::UmfPackLU< _MatrixType >::analyzePattern_impl(), Eigen::UmfPackLU< _MatrixType >::grab(), Eigen::UmfPackLU< _MatrixType >::m_numeric, Eigen::UmfPackLU< _MatrixType >::m_symbolic, Eigen::umfpack_free_numeric(), and Eigen::umfpack_free_symbolic().
Here is the call graph for this function:
|
inlineprotected |
References Eigen::PlainObjectBase< Derived >::data(), Eigen::InvalidInput, Eigen::UmfPackLU< _MatrixType >::m_analysisIsOk, Eigen::UmfPackLU< _MatrixType >::m_control, Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, Eigen::UmfPackLU< _MatrixType >::m_fact_errorCode, Eigen::UmfPackLU< _MatrixType >::m_factorizationIsOk, Eigen::UmfPackLU< _MatrixType >::m_info, Eigen::SparseSolverBase< UmfPackLU< _MatrixType > >::m_isInitialized, Eigen::UmfPackLU< _MatrixType >::m_symbolic, Eigen::UmfPackLU< _MatrixType >::m_umfpackInfo, Eigen::UmfPackLU< _MatrixType >::mp_matrix, Eigen::Success, and Eigen::umfpack_symbolic().
Referenced by Eigen::UmfPackLU< _MatrixType >::analyzePattern(), and Eigen::UmfPackLU< _MatrixType >::compute().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::mp_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 Eigen::UmfPackLU< _MatrixType >::analyzePattern_impl(), Eigen::UmfPackLU< _MatrixType >::factorize_impl(), Eigen::UmfPackLU< _MatrixType >::grab(), Eigen::UmfPackLU< _MatrixType >::m_numeric, Eigen::UmfPackLU< _MatrixType >::m_symbolic, Eigen::umfpack_free_numeric(), and Eigen::umfpack_free_symbolic().
Referenced by Eigen::UmfPackLU< _MatrixType >::UmfPackLU().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineinherited |
|
inlineinherited |
| UmfPackLU< MatrixType >::Scalar Eigen::UmfPackLU< MatrixType >::determinant |
References Eigen::umfpack_get_determinant().
Here is the call graph for this function:| void Eigen::UmfPackLU< MatrixType >::extractData |
References Eigen::umfpack_get_lunz(), and Eigen::umfpack_get_numeric().
Referenced by Eigen::UmfPackLU< _MatrixType >::matrixL(), Eigen::UmfPackLU< _MatrixType >::matrixU(), Eigen::UmfPackLU< _MatrixType >::permutationP(), and Eigen::UmfPackLU< _MatrixType >::permutationQ().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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_assert, Eigen::UmfPackLU< _MatrixType >::factorize_impl(), Eigen::UmfPackLU< _MatrixType >::grab(), Eigen::UmfPackLU< _MatrixType >::m_analysisIsOk, Eigen::UmfPackLU< _MatrixType >::m_numeric, and Eigen::umfpack_free_numeric().
Here is the call graph for this function:
|
inlineprotected |
References Eigen::PlainObjectBase< Derived >::data(), Eigen::UmfPackLU< _MatrixType >::m_control, Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, Eigen::UmfPackLU< _MatrixType >::m_fact_errorCode, Eigen::UmfPackLU< _MatrixType >::m_factorizationIsOk, Eigen::UmfPackLU< _MatrixType >::m_info, Eigen::UmfPackLU< _MatrixType >::m_numeric, Eigen::UmfPackLU< _MatrixType >::m_symbolic, Eigen::UmfPackLU< _MatrixType >::m_umfpackInfo, Eigen::UmfPackLU< _MatrixType >::mp_matrix, Eigen::NumericalIssue, Eigen::Success, and Eigen::umfpack_numeric().
Referenced by Eigen::UmfPackLU< _MatrixType >::compute(), and Eigen::UmfPackLU< _MatrixType >::factorize().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineprotected |
References Eigen::EigenBase< Derived >::derived(), and Eigen::UmfPackLU< _MatrixType >::mp_matrix.
Referenced by Eigen::UmfPackLU< _MatrixType >::analyzePattern(), Eigen::UmfPackLU< _MatrixType >::compute(), and Eigen::UmfPackLU< _MatrixType >::factorize().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inlineprotected |
References Eigen::UmfPackLU< _MatrixType >::mp_matrix.
|
inline |
Reports whether previous computation was successful.
Success if computation was succesful, NumericalIssue if the matrix.appears to be negative. References eigen_assert, Eigen::UmfPackLU< _MatrixType >::m_info, and Eigen::SparseSolverBase< UmfPackLU< _MatrixType > >::m_isInitialized.
|
inlineprotected |
References Eigen::PlainObjectBase< Derived >::data(), Eigen::InvalidInput, Eigen::UmfPackLU< _MatrixType >::m_control, Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, Eigen::UmfPackLU< _MatrixType >::m_info, Eigen::SparseSolverBase< UmfPackLU< _MatrixType > >::m_isInitialized, Eigen::UmfPackLU< _MatrixType >::m_numeric, Eigen::UmfPackLU< _MatrixType >::m_symbolic, and Eigen::umfpack_defaults().
Referenced by Eigen::UmfPackLU< _MatrixType >::UmfPackLU(), and Eigen::UmfPackLU< _MatrixType >::UmfPackLU().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::extractData(), Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, and Eigen::UmfPackLU< _MatrixType >::m_l.
Here is the call graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::extractData(), Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, and Eigen::UmfPackLU< _MatrixType >::m_u.
Here is the call graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::extractData(), Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, and Eigen::UmfPackLU< _MatrixType >::m_p.
Here is the call graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::extractData(), Eigen::UmfPackLU< _MatrixType >::m_extractedDataAreDirty, and Eigen::UmfPackLU< _MatrixType >::m_q.
Here is the call graph for this function:
|
inline |
References Eigen::UmfPackLU< _MatrixType >::mp_matrix.
|
inlineinherited |
|
inlineinherited |
|
inline |
Provides access to the control settings array used by UmfPack.
If this array contains NaN's, the default values are used.
See UMFPACK documentation for details.
References Eigen::UmfPackLU< _MatrixType >::m_control.
|
inline |
Provides access to the control settings array used by UmfPack.
If this array contains NaN's, the default values are used.
See UMFPACK documentation for details.
References Eigen::UmfPackLU< _MatrixType >::m_control.
|
inline |
Provides the return status code returned by UmfPack during the numeric factorization.
References eigen_assert, Eigen::UmfPackLU< _MatrixType >::m_fact_errorCode, and Eigen::UmfPackLU< _MatrixType >::m_numeric.
|
inline |
Prints the current UmfPack control settings.
References Eigen::PlainObjectBase< Derived >::data(), Eigen::UmfPackLU< _MatrixType >::m_control, and Eigen::umfpack_report_control().
Here is the call graph for this function:
|
inline |
Prints statistics collected by UmfPack.
References Eigen::PlainObjectBase< Derived >::data(), eigen_assert, Eigen::UmfPackLU< _MatrixType >::m_analysisIsOk, Eigen::UmfPackLU< _MatrixType >::m_control, Eigen::UmfPackLU< _MatrixType >::m_umfpackInfo, and Eigen::umfpack_report_info().
Here is the call graph for this function:
|
inline |
Prints the status of the previous factorization operation performed by UmfPack (symbolic or numerical factorization).
References Eigen::PlainObjectBase< Derived >::data(), eigen_assert, Eigen::UmfPackLU< _MatrixType >::m_analysisIsOk, Eigen::UmfPackLU< _MatrixType >::m_control, Eigen::UmfPackLU< _MatrixType >::m_fact_errorCode, and Eigen::umfpack_report_status().
Here is the call graph for this function:
|
protected |
|
protected |
Referenced by Eigen::UmfPackLU< _MatrixType >::analyzePattern_impl(), Eigen::UmfPackLU< _MatrixType >::factorize_impl(), Eigen::UmfPackLU< _MatrixType >::init(), Eigen::UmfPackLU< _MatrixType >::umfpackControl(), Eigen::UmfPackLU< _MatrixType >::umfpackControl(), Eigen::UmfPackLU< _MatrixType >::umfpackReportControl(), Eigen::UmfPackLU< _MatrixType >::umfpackReportInfo(), and Eigen::UmfPackLU< _MatrixType >::umfpackReportStatus().
|
protected |
|
mutableprotected |
Referenced by Eigen::UmfPackLU< _MatrixType >::analyzePattern_impl(), Eigen::UmfPackLU< _MatrixType >::factorize_impl(), Eigen::UmfPackLU< _MatrixType >::init(), Eigen::UmfPackLU< _MatrixType >::matrixL(), Eigen::UmfPackLU< _MatrixType >::matrixU(), Eigen::UmfPackLU< _MatrixType >::permutationP(), and Eigen::UmfPackLU< _MatrixType >::permutationQ().
|
protected |
|
protected |
|
mutableprotected |
|
mutableprotectedinherited |
|
mutableprotected |
Referenced by Eigen::UmfPackLU< _MatrixType >::matrixL().
|
protected |
Referenced by Eigen::UmfPackLU< _MatrixType >::~UmfPackLU(), Eigen::UmfPackLU< _MatrixType >::analyzePattern(), Eigen::UmfPackLU< _MatrixType >::compute(), Eigen::UmfPackLU< _MatrixType >::factorize(), Eigen::UmfPackLU< _MatrixType >::factorize_impl(), Eigen::UmfPackLU< _MatrixType >::init(), and Eigen::UmfPackLU< _MatrixType >::umfpackFactorizeReturncode().
|
mutableprotected |
Referenced by Eigen::UmfPackLU< _MatrixType >::permutationP().
|
mutableprotected |
Referenced by Eigen::UmfPackLU< _MatrixType >::permutationQ().
|
protected |
Referenced by Eigen::UmfPackLU< _MatrixType >::~UmfPackLU(), Eigen::UmfPackLU< _MatrixType >::analyzePattern(), Eigen::UmfPackLU< _MatrixType >::analyzePattern_impl(), Eigen::UmfPackLU< _MatrixType >::compute(), Eigen::UmfPackLU< _MatrixType >::factorize_impl(), and Eigen::UmfPackLU< _MatrixType >::init().
|
mutableprotected |
Referenced by Eigen::UmfPackLU< _MatrixType >::matrixU().
|
mutableprotected |
|
protected |