Eigen::UmfPackLU< MatrixType_ > Class Template Reference

A sparse LU factorization and solver based on UmfPack. More...

#include <UmfPackSupport.h>

+ Inheritance 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, StorageIndex > UmfpackMatrixType
 
typedef Ref< const UmfpackMatrixType, StandardCompressedFormat > UmfpackMatrixRef
 
typedef Array< double, UMFPACK_CONTROL, 1 > UmfpackControl
 
typedef Array< double, UMFPACK_INFO, 1 > UmfpackInfo
 

Public Member Functions

 UmfPackLU ()
 
template<typename InputMatrixType >
 UmfPackLU (const InputMatrixType &matrix)
 
 ~UmfPackLU ()
 
Index rows () const
 
Index cols () const
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
const LUMatrixType & matrixL () const
 
const LUMatrixType & matrixU () const
 
const IntColVectorType & permutationP () const
 
const IntRowVectorType & permutationQ () const
 
template<typename InputMatrixType >
void compute (const InputMatrixType &matrix)
 
template<typename InputMatrixType >
void analyzePattern (const InputMatrixType &matrix)
 
int umfpackFactorizeReturncode () const
 
const UmfpackControl & umfpackControl () const
 
UmfpackControl & umfpackControl ()
 
template<typename InputMatrixType >
void factorize (const InputMatrixType &matrix)
 
void printUmfpackControl ()
 
void printUmfpackInfo ()
 
void printUmfpackStatus ()
 
template<typename BDerived , typename XDerived >
bool _solve_impl (const MatrixBase< BDerived > &b, MatrixBase< XDerived > &x) const
 
Scalar determinant () const
 
void extractData () const
 
- Public Member Functions inherited from Eigen::SparseSolverBase< UmfPackLU< MatrixType_ > >
 SparseSolverBase ()
 
 SparseSolverBase (SparseSolverBase &&other)
 
 ~SparseSolverBase ()
 
UmfPackLU< MatrixType_ > & derived ()
 
const UmfPackLU< MatrixType_ > & derived () const
 
const Solve< UmfPackLU< MatrixType_ >, Rhs > solve (const MatrixBase< Rhs > &b) const
 
const Solve< UmfPackLU< MatrixType_ >, Rhs > solve (const SparseMatrixBase< Rhs > &b) const
 
void _solve_impl (const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
 

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)
 

Protected Attributes

LUMatrixType m_l
 
StorageIndex m_fact_errorCode
 
UmfpackControl m_control
 
UmfpackInfo m_umfpackInfo
 
LUMatrixType m_u
 
IntColVectorType m_p
 
IntRowVectorType m_q
 
UmfpackMatrixType m_dummy
 
UmfpackMatrixRef mp_matrix
 
void * m_numeric
 
void * m_symbolic
 
ComputationInfo m_info
 
int m_factorizationIsOk
 
int m_analysisIsOk
 
bool m_extractedDataAreDirty
 
- Protected Attributes inherited from Eigen::SparseSolverBase< UmfPackLU< MatrixType_ > >
bool m_isInitialized
 

Private Member Functions

 UmfPackLU (const UmfPackLU &)
 

Detailed Description

template<typename MatrixType_>
class Eigen::UmfPackLU< MatrixType_ >

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.

Warning
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.
Template Parameters
MatrixType_the type of the sparse matrix A, it must be a SparseMatrix<>

\implsparsesolverconcept

See also
Sparse solver concept, class SparseLU

Member Typedef Documentation

◆ Base

template<typename MatrixType_ >
typedef SparseSolverBase<UmfPackLU<MatrixType_> > Eigen::UmfPackLU< MatrixType_ >::Base
protected

◆ IntColVectorType

template<typename MatrixType_ >
typedef Matrix<int, MatrixType::RowsAtCompileTime, 1> Eigen::UmfPackLU< MatrixType_ >::IntColVectorType

◆ IntRowVectorType

template<typename MatrixType_ >
typedef Matrix<int, 1, MatrixType::ColsAtCompileTime> Eigen::UmfPackLU< MatrixType_ >::IntRowVectorType

◆ LUMatrixType

template<typename MatrixType_ >
typedef SparseMatrix<Scalar> Eigen::UmfPackLU< MatrixType_ >::LUMatrixType

◆ MatrixType

template<typename MatrixType_ >
typedef MatrixType_ Eigen::UmfPackLU< MatrixType_ >::MatrixType

◆ RealScalar

template<typename MatrixType_ >
typedef MatrixType::RealScalar Eigen::UmfPackLU< MatrixType_ >::RealScalar

◆ Scalar

template<typename MatrixType_ >
typedef MatrixType::Scalar Eigen::UmfPackLU< MatrixType_ >::Scalar

◆ StorageIndex

template<typename MatrixType_ >
typedef MatrixType::StorageIndex Eigen::UmfPackLU< MatrixType_ >::StorageIndex

◆ UmfpackControl

template<typename MatrixType_ >
typedef Array<double, UMFPACK_CONTROL, 1> Eigen::UmfPackLU< MatrixType_ >::UmfpackControl

◆ UmfpackInfo

template<typename MatrixType_ >
typedef Array<double, UMFPACK_INFO, 1> Eigen::UmfPackLU< MatrixType_ >::UmfpackInfo

◆ UmfpackMatrixRef

template<typename MatrixType_ >
typedef Ref<const UmfpackMatrixType, StandardCompressedFormat> Eigen::UmfPackLU< MatrixType_ >::UmfpackMatrixRef

◆ UmfpackMatrixType

template<typename MatrixType_ >
typedef SparseMatrix<Scalar, ColMajor, StorageIndex> Eigen::UmfPackLU< MatrixType_ >::UmfpackMatrixType

◆ Vector

template<typename MatrixType_ >
typedef Matrix<Scalar, Dynamic, 1> Eigen::UmfPackLU< MatrixType_ >::Vector

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType_ >
anonymous enum
Enumerator
ColsAtCompileTime 
MaxColsAtCompileTime 
319 { ColsAtCompileTime = MatrixType::ColsAtCompileTime, MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime };
@ ColsAtCompileTime
Definition: UmfPackSupport.h:319
@ MaxColsAtCompileTime
Definition: UmfPackSupport.h:319

Constructor & Destructor Documentation

◆ UmfPackLU() [1/3]

template<typename MatrixType_ >
Eigen::UmfPackLU< MatrixType_ >::UmfPackLU ( )
inline
325 : m_dummy(0, 0), mp_matrix(m_dummy) { init(); }
UmfpackMatrixRef mp_matrix
Definition: UmfPackSupport.h:532
UmfpackMatrixType m_dummy
Definition: UmfPackSupport.h:531
void init()
Definition: UmfPackSupport.h:476

References Eigen::UmfPackLU< MatrixType_ >::init().

◆ UmfPackLU() [2/3]

template<typename MatrixType_ >
template<typename InputMatrixType >
Eigen::UmfPackLU< MatrixType_ >::UmfPackLU ( const InputMatrixType &  matrix)
inlineexplicit
328  : mp_matrix(matrix) {
329  init();
330  compute(matrix);
331  }
void compute(const InputMatrixType &matrix)
Definition: UmfPackSupport.h:376
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85

References Eigen::UmfPackLU< MatrixType_ >::compute(), Eigen::UmfPackLU< MatrixType_ >::init(), and matrix().

◆ ~UmfPackLU()

template<typename MatrixType_ >
Eigen::UmfPackLU< MatrixType_ >::~UmfPackLU ( )
inline
333  {
336  }
MatrixType::Scalar Scalar
Definition: UmfPackSupport.h:310
void * m_numeric
Definition: UmfPackSupport.h:534
MatrixType::StorageIndex StorageIndex
Definition: UmfPackSupport.h:312
void * m_symbolic
Definition: UmfPackSupport.h:535
void umfpack_free_numeric(void **Numeric, double, int)
Definition: UmfPackSupport.h:98
void umfpack_free_symbolic(void **Symbolic, double, int)
Definition: UmfPackSupport.h:119

References Eigen::UmfPackLU< MatrixType_ >::m_numeric, Eigen::UmfPackLU< MatrixType_ >::m_symbolic, Eigen::umfpack_free_numeric(), and Eigen::umfpack_free_symbolic().

◆ UmfPackLU() [3/3]

template<typename MatrixType_ >
Eigen::UmfPackLU< MatrixType_ >::UmfPackLU ( const UmfPackLU< MatrixType_ > &  )
inlineprivate
543 {}

Member Function Documentation

◆ _solve_impl()

template<typename MatrixType >
template<typename BDerived , typename XDerived >
bool Eigen::UmfPackLU< MatrixType >::_solve_impl ( const MatrixBase< BDerived > &  b,
MatrixBase< XDerived > &  x 
) const
580  {
581  Index rhsCols = b.cols();
582  eigen_assert((BDerived::Flags & RowMajorBit) == 0 && "UmfPackLU backend does not support non col-major rhs yet");
583  eigen_assert((XDerived::Flags & RowMajorBit) == 0 && "UmfPackLU backend does not support non col-major result yet");
584  eigen_assert(b.derived().data() != x.derived().data() && " Umfpack does not support inplace solve");
585 
586  Scalar *x_ptr = 0;
587  Matrix<Scalar, Dynamic, 1> x_tmp;
588  if (x.innerStride() != 1) {
589  x_tmp.resize(x.rows());
590  x_ptr = x_tmp.data();
591  }
592  for (int j = 0; j < rhsCols; ++j) {
593  if (x.innerStride() == 1) x_ptr = &x.col(j).coeffRef(0);
594  StorageIndex errorCode =
595  umfpack_solve(UMFPACK_A, mp_matrix.outerIndexPtr(), mp_matrix.innerIndexPtr(), mp_matrix.valuePtr(), x_ptr,
596  &b.const_cast_derived().col(j).coeffRef(0), m_numeric, m_control.data(), m_umfpackInfo.data());
597  if (x.innerStride() != 1) x.col(j) = x_tmp;
598  if (errorCode != 0) return false;
599  }
600 
601  return true;
602 }
#define eigen_assert(x)
Definition: Macros.h:910
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
constexpr EIGEN_DEVICE_FUNC const Scalar * data() const
Definition: PlainObjectBase.h:273
UmfpackInfo m_umfpackInfo
Definition: UmfPackSupport.h:525
UmfpackControl m_control
Definition: UmfPackSupport.h:524
const unsigned int RowMajorBit
Definition: Constants.h:70
int umfpack_solve(int sys, const int Ap[], const int Ai[], const double Ax[], double X[], const double B[], void *Numeric, const double Control[UMFPACK_CONTROL], double Info[UMFPACK_INFO])
Definition: UmfPackSupport.h:184
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
list x
Definition: plotDoE.py:28
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References b, Eigen::PlainObjectBase< Derived >::data(), eigen_assert, j, Eigen::PlainObjectBase< Derived >::resize(), Eigen::RowMajorBit, Eigen::umfpack_solve(), and plotDoE::x.

◆ analyzePattern()

template<typename MatrixType_ >
template<typename InputMatrixType >
void Eigen::UmfPackLU< MatrixType_ >::analyzePattern ( const InputMatrixType &  matrix)
inline

Performs a symbolic decomposition on the sparcity of matrix.

This function is particularly useful when solving for several problems having the same structure.

See also
factorize(), compute()
391  {
394 
395  grab(matrix.derived());
396 
398  }
void analyzePattern_impl()
Definition: UmfPackSupport.h:486
void grab(const EigenBase< MatrixDerived > &A)
Definition: UmfPackSupport.h:509

References Eigen::UmfPackLU< MatrixType_ >::analyzePattern_impl(), Eigen::UmfPackLU< MatrixType_ >::grab(), Eigen::UmfPackLU< MatrixType_ >::m_numeric, Eigen::UmfPackLU< MatrixType_ >::m_symbolic, matrix(), Eigen::umfpack_free_numeric(), and Eigen::umfpack_free_symbolic().

◆ analyzePattern_impl()

template<typename MatrixType_ >
void Eigen::UmfPackLU< MatrixType_ >::analyzePattern_impl ( )
inlineprotected
486  {
487  m_fact_errorCode = umfpack_symbolic(internal::convert_index<StorageIndex>(mp_matrix.rows()),
488  internal::convert_index<StorageIndex>(mp_matrix.cols()),
489  mp_matrix.outerIndexPtr(), mp_matrix.innerIndexPtr(), mp_matrix.valuePtr(),
491 
492  m_isInitialized = true;
494  m_analysisIsOk = true;
495  m_factorizationIsOk = false;
497  }
bool m_isInitialized
Definition: SparseSolverBase.h:110
int m_analysisIsOk
Definition: UmfPackSupport.h:539
bool m_extractedDataAreDirty
Definition: UmfPackSupport.h:540
ComputationInfo m_info
Definition: UmfPackSupport.h:537
StorageIndex m_fact_errorCode
Definition: UmfPackSupport.h:523
int m_factorizationIsOk
Definition: UmfPackSupport.h:538
@ InvalidInput
Definition: Constants.h:447
@ Success
Definition: Constants.h:440
int umfpack_symbolic(int n_row, int n_col, const int Ap[], const int Ai[], const double Ax[], void **Symbolic, const double Control[UMFPACK_CONTROL], double Info[UMFPACK_INFO])
Definition: UmfPackSupport.h:140

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().

◆ cols()

◆ compute()

template<typename MatrixType_ >
template<typename InputMatrixType >
void Eigen::UmfPackLU< MatrixType_ >::compute ( const InputMatrixType &  matrix)
inline

Computes the sparse Cholesky decomposition of matrix Note that the matrix should be column-major, and in compressed format for best performance.

See also
SparseMatrix::makeCompressed().
376  {
379  grab(matrix.derived());
381  factorize_impl();
382  }
void factorize_impl()
Definition: UmfPackSupport.h:499

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, matrix(), Eigen::umfpack_free_numeric(), and Eigen::umfpack_free_symbolic().

Referenced by Eigen::UmfPackLU< MatrixType_ >::UmfPackLU().

◆ determinant()

template<typename MatrixType >
UmfPackLU< MatrixType >::Scalar Eigen::UmfPackLU< MatrixType >::determinant
572  {
573  Scalar det;
575  return det;
576 }
int umfpack_get_determinant(double *Mx, double *Ex, void *NumericHandle, double User_Info[UMFPACK_INFO], int)
Definition: UmfPackSupport.h:265

References Eigen::umfpack_get_determinant().

◆ extractData()

template<typename MatrixType >
void Eigen::UmfPackLU< MatrixType >::extractData
547  {
549  // get size of the data
550  StorageIndex lnz, unz, rows, cols, nz_udiag;
551  umfpack_get_lunz(&lnz, &unz, &rows, &cols, &nz_udiag, m_numeric, Scalar());
552 
553  // allocate data
555  m_l.resizeNonZeros(lnz);
556 
558  m_u.resizeNonZeros(unz);
559 
560  m_p.resize(rows);
561  m_q.resize(cols);
562 
563  // extract
565  m_u.innerIndexPtr(), m_u.valuePtr(), m_p.data(), m_q.data(), 0, 0, 0, m_numeric);
566 
567  m_extractedDataAreDirty = false;
568  }
569 }
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Definition: PlainObjectBase.h:294
const Scalar * valuePtr() const
Definition: SparseMatrix.h:171
void resize(Index rows, Index cols)
Definition: SparseMatrix.h:734
void resizeNonZeros(Index size)
Definition: SparseMatrix.h:754
const StorageIndex * outerIndexPtr() const
Definition: SparseMatrix.h:189
const StorageIndex * innerIndexPtr() const
Definition: SparseMatrix.h:180
Index cols() const
Definition: UmfPackSupport.h:339
Index rows() const
Definition: UmfPackSupport.h:338
IntColVectorType m_p
Definition: UmfPackSupport.h:528
LUMatrixType m_l
Definition: UmfPackSupport.h:522
IntRowVectorType m_q
Definition: UmfPackSupport.h:529
LUMatrixType m_u
Definition: UmfPackSupport.h:527
#define min(a, b)
Definition: datatypes.h:22
int umfpack_get_numeric(int Lp[], int Lj[], double Lx[], int Up[], int Ui[], double Ux[], int P[], int Q[], double Dx[], int *do_recip, double Rs[], void *Numeric)
Definition: UmfPackSupport.h:232
int umfpack_get_lunz(int *lnz, int *unz, int *n_row, int *n_col, int *nz_udiag, void *Numeric, double)
Definition: UmfPackSupport.h:211

References cols, min, rows, 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().

◆ factorize()

template<typename MatrixType_ >
template<typename InputMatrixType >
void Eigen::UmfPackLU< MatrixType_ >::factorize ( const InputMatrixType &  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.

See also
analyzePattern(), compute()
433  {
434  eigen_assert(m_analysisIsOk && "UmfPackLU: you must first call analyzePattern()");
436 
437  grab(matrix.derived());
438 
439  factorize_impl();
440  }

References eigen_assert, Eigen::UmfPackLU< MatrixType_ >::factorize_impl(), Eigen::UmfPackLU< MatrixType_ >::grab(), Eigen::UmfPackLU< MatrixType_ >::m_analysisIsOk, Eigen::UmfPackLU< MatrixType_ >::m_numeric, matrix(), and Eigen::umfpack_free_numeric().

◆ factorize_impl()

◆ grab() [1/2]

template<typename MatrixType_ >
template<typename MatrixDerived >
void Eigen::UmfPackLU< MatrixType_ >::grab ( const EigenBase< MatrixDerived > &  A)
inlineprotected
509  {
511  internal::construct_at(&mp_matrix, A.derived());
512  }
Matrix< SCALARA, Dynamic, Dynamic, opt_A > A
Definition: bench_gemm.cpp:47
EIGEN_DEVICE_FUNC T * construct_at(T *p, Args &&... args)
Definition: Memory.h:1321
EIGEN_DEVICE_FUNC void destroy_at(T *p)
Definition: Memory.h:1335

References Eigen::internal::construct_at(), Eigen::internal::destroy_at(), and Eigen::UmfPackLU< MatrixType_ >::mp_matrix.

Referenced by Eigen::UmfPackLU< MatrixType_ >::analyzePattern(), Eigen::UmfPackLU< MatrixType_ >::compute(), and Eigen::UmfPackLU< MatrixType_ >::factorize().

◆ grab() [2/2]

template<typename MatrixType_ >
void Eigen::UmfPackLU< MatrixType_ >::grab ( const UmfpackMatrixRef &  A)
inlineprotected

◆ info()

template<typename MatrixType_ >
ComputationInfo Eigen::UmfPackLU< MatrixType_ >::info ( ) const
inline

Reports whether previous computation was successful.

Returns
Success if computation was successful, NumericalIssue if the matrix.appears to be negative.
346  {
347  eigen_assert(m_isInitialized && "Decomposition is not initialized.");
348  return m_info;
349  }

References eigen_assert, Eigen::UmfPackLU< MatrixType_ >::m_info, and Eigen::SparseSolverBase< UmfPackLU< MatrixType_ > >::m_isInitialized.

◆ init()

◆ matrixL()

template<typename MatrixType_ >
const LUMatrixType& Eigen::UmfPackLU< MatrixType_ >::matrixL ( ) const
inline

◆ matrixU()

template<typename MatrixType_ >
const LUMatrixType& Eigen::UmfPackLU< MatrixType_ >::matrixU ( ) const
inline

◆ permutationP()

template<typename MatrixType_ >
const IntColVectorType& Eigen::UmfPackLU< MatrixType_ >::permutationP ( ) const
inline

◆ permutationQ()

template<typename MatrixType_ >
const IntRowVectorType& Eigen::UmfPackLU< MatrixType_ >::permutationQ ( ) const
inline

◆ printUmfpackControl()

template<typename MatrixType_ >
void Eigen::UmfPackLU< MatrixType_ >::printUmfpackControl ( )
inline

Prints the current UmfPack control settings.

See also
umfpackControl()
void umfpack_report_control(double control[UMFPACK_CONTROL], double, int)
Definition: UmfPackSupport.h:83

References Eigen::PlainObjectBase< Derived >::data(), Eigen::UmfPackLU< MatrixType_ >::m_control, and Eigen::umfpack_report_control().

◆ printUmfpackInfo()

template<typename MatrixType_ >
void Eigen::UmfPackLU< MatrixType_ >::printUmfpackInfo ( )
inline

Prints statistics collected by UmfPack.

See also
analyzePattern(), compute()
452  {
453  eigen_assert(m_analysisIsOk && "UmfPackLU: you must first call analyzePattern()");
455  }
void umfpack_report_info(double control[UMFPACK_CONTROL], double info[UMFPACK_INFO], double, int)
Definition: UmfPackSupport.h:48

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().

◆ printUmfpackStatus()

template<typename MatrixType_ >
void Eigen::UmfPackLU< MatrixType_ >::printUmfpackStatus ( )
inline

Prints the status of the previous factorization operation performed by UmfPack (symbolic or numerical factorization).

See also
analyzePattern(), compute()
462  {
463  eigen_assert(m_analysisIsOk && "UmfPackLU: you must first call analyzePattern()");
465  }
void umfpack_report_status(double control[UMFPACK_CONTROL], int status, double, int)
Definition: UmfPackSupport.h:66

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().

◆ rows()

◆ umfpackControl() [1/2]

template<typename MatrixType_ >
UmfpackControl& Eigen::UmfPackLU< MatrixType_ >::umfpackControl ( )
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.

424 { return m_control; }

References Eigen::UmfPackLU< MatrixType_ >::m_control.

◆ umfpackControl() [2/2]

template<typename MatrixType_ >
const UmfpackControl& Eigen::UmfPackLU< MatrixType_ >::umfpackControl ( ) const
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.

416 { return m_control; }

References Eigen::UmfPackLU< MatrixType_ >::m_control.

◆ umfpackFactorizeReturncode()

template<typename MatrixType_ >
int Eigen::UmfPackLU< MatrixType_ >::umfpackFactorizeReturncode ( ) const
inline

Provides the return status code returned by UmfPack during the numeric factorization.

See also
factorize(), compute()
405  {
406  eigen_assert(m_numeric && "UmfPackLU: you must first call factorize()");
407  return m_fact_errorCode;
408  }

References eigen_assert, Eigen::UmfPackLU< MatrixType_ >::m_fact_errorCode, and Eigen::UmfPackLU< MatrixType_ >::m_numeric.

Member Data Documentation

◆ m_analysisIsOk

◆ m_control

◆ m_dummy

template<typename MatrixType_ >
UmfpackMatrixType Eigen::UmfPackLU< MatrixType_ >::m_dummy
protected

◆ m_extractedDataAreDirty

◆ m_fact_errorCode

◆ m_factorizationIsOk

template<typename MatrixType_ >
int Eigen::UmfPackLU< MatrixType_ >::m_factorizationIsOk
protected

◆ m_info

◆ m_l

template<typename MatrixType_ >
LUMatrixType Eigen::UmfPackLU< MatrixType_ >::m_l
mutableprotected

◆ m_numeric

◆ m_p

template<typename MatrixType_ >
IntColVectorType Eigen::UmfPackLU< MatrixType_ >::m_p
mutableprotected

◆ m_q

template<typename MatrixType_ >
IntRowVectorType Eigen::UmfPackLU< MatrixType_ >::m_q
mutableprotected

◆ m_symbolic

◆ m_u

template<typename MatrixType_ >
LUMatrixType Eigen::UmfPackLU< MatrixType_ >::m_u
mutableprotected

◆ m_umfpackInfo

◆ mp_matrix


The documentation for this class was generated from the following file: