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< ScalarLUMatrixType
 
typedef SparseMatrix< Scalar, ColMajor, StorageIndexUmfpackMatrixType
 
typedef Ref< const UmfpackMatrixType, StandardCompressedFormatUmfpackMatrixRef
 
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 LUMatrixTypematrixL () const
 
const LUMatrixTypematrixU () const
 
const IntColVectorTypepermutationP () const
 
const IntRowVectorTypepermutationQ () const
 
template<typename InputMatrixType >
void compute (const InputMatrixType &matrix)
 
template<typename InputMatrixType >
void analyzePattern (const InputMatrixType &matrix)
 
int umfpackFactorizeReturncode () const
 
const UmfpackControlumfpackControl () const
 
UmfpackControlumfpackControl ()
 
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: