Eigen::IncompleteLU< Scalar_ > Class Template Reference

#include <IncompleteLU.h>

+ Inheritance diagram for Eigen::IncompleteLU< Scalar_ >:

Public Types

typedef Matrix< Scalar, Dynamic, DynamicMatrixType
 

Public Member Functions

 IncompleteLU ()
 
template<typename MatrixType >
 IncompleteLU (const MatrixType &mat)
 
Index rows () const
 
Index cols () const
 
template<typename MatrixType >
IncompleteLUcompute (const MatrixType &mat)
 
template<typename Rhs , typename Dest >
void _solve_impl (const Rhs &b, Dest &x) const
 
- Public Member Functions inherited from Eigen::SparseSolverBase< IncompleteLU< Scalar_ > >
 SparseSolverBase ()
 
 SparseSolverBase (SparseSolverBase &&other)
 
 ~SparseSolverBase ()
 
IncompleteLU< Scalar_ > & derived ()
 
const IncompleteLU< Scalar_ > & derived () const
 
const Solve< IncompleteLU< Scalar_ >, Rhs > solve (const MatrixBase< Rhs > &b) const
 
const Solve< IncompleteLU< Scalar_ >, Rhs > solve (const SparseMatrixBase< Rhs > &b) const
 
void _solve_impl (const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
 

Protected Types

typedef SparseSolverBase< IncompleteLU< Scalar_ > > Base
 
typedef Scalar_ Scalar
 
typedef Matrix< Scalar, Dynamic, 1 > Vector
 
typedef Vector::Index Index
 
typedef SparseMatrix< Scalar, RowMajorFactorType
 

Protected Attributes

FactorType m_lu
 
- Protected Attributes inherited from Eigen::SparseSolverBase< IncompleteLU< Scalar_ > >
bool m_isInitialized
 

Member Typedef Documentation

◆ Base

template<typename Scalar_ >
typedef SparseSolverBase<IncompleteLU<Scalar_> > Eigen::IncompleteLU< Scalar_ >::Base
protected

◆ FactorType

template<typename Scalar_ >
typedef SparseMatrix<Scalar, RowMajor> Eigen::IncompleteLU< Scalar_ >::FactorType
protected

◆ Index

template<typename Scalar_ >
typedef Vector::Index Eigen::IncompleteLU< Scalar_ >::Index
protected

◆ MatrixType

template<typename Scalar_ >
typedef Matrix<Scalar, Dynamic, Dynamic> Eigen::IncompleteLU< Scalar_ >::MatrixType

◆ Scalar

template<typename Scalar_ >
typedef Scalar_ Eigen::IncompleteLU< Scalar_ >::Scalar
protected

◆ Vector

template<typename Scalar_ >
typedef Matrix<Scalar, Dynamic, 1> Eigen::IncompleteLU< Scalar_ >::Vector
protected

Constructor & Destructor Documentation

◆ IncompleteLU() [1/2]

template<typename Scalar_ >
Eigen::IncompleteLU< Scalar_ >::IncompleteLU ( )
inline
32 {}

◆ IncompleteLU() [2/2]

template<typename Scalar_ >
template<typename MatrixType >
Eigen::IncompleteLU< Scalar_ >::IncompleteLU ( const MatrixType mat)
inline
35  {
36  compute(mat);
37  }
IncompleteLU & compute(const MatrixType &mat)
Definition: IncompleteLU.h:43

References Eigen::IncompleteLU< Scalar_ >::compute().

Member Function Documentation

◆ _solve_impl()

template<typename Scalar_ >
template<typename Rhs , typename Dest >
void Eigen::IncompleteLU< Scalar_ >::_solve_impl ( const Rhs &  b,
Dest &  x 
) const
inline
77  {
78  x = m_lu.template triangularView<UnitLower>().solve(b);
79  x = m_lu.template triangularView<Upper>().solve(x);
80  }
Scalar * b
Definition: benchVecAdd.cpp:17
FactorType m_lu
Definition: IncompleteLU.h:83
list x
Definition: plotDoE.py:28

References b, Eigen::IncompleteLU< Scalar_ >::m_lu, and plotDoE::x.

◆ cols()

◆ compute()

template<typename Scalar_ >
template<typename MatrixType >
IncompleteLU& Eigen::IncompleteLU< Scalar_ >::compute ( const MatrixType mat)
inline
43  {
44  m_lu = mat;
45  int size = mat.cols();
46  Vector diag(size);
47  for (int i = 0; i < size; ++i) {
48  typename FactorType::InnerIterator k_it(m_lu, i);
49  for (; k_it && k_it.index() < i; ++k_it) {
50  int k = k_it.index();
51  k_it.valueRef() /= diag(k);
52 
53  typename FactorType::InnerIterator j_it(k_it);
54  typename FactorType::InnerIterator kj_it(m_lu, k);
55  while (kj_it && kj_it.index() <= k) ++kj_it;
56  for (++j_it; j_it;) {
57  if (kj_it.index() == j_it.index()) {
58  j_it.valueRef() -= k_it.value() * kj_it.value();
59  ++j_it;
60  ++kj_it;
61  } else if (kj_it.index() < j_it.index())
62  ++kj_it;
63  else
64  ++j_it;
65  }
66  }
67  if (k_it && k_it.index() == i)
68  diag(i) = k_it.value();
69  else
70  diag(i) = 1;
71  }
72  m_isInitialized = true;
73  return *this;
74  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Matrix< Scalar, Dynamic, 1 > Vector
Definition: IncompleteLU.h:25
Base::InnerIterator InnerIterator
Definition: SparseMatrix.h:138
bool m_isInitialized
Definition: SparseSolverBase.h:110
const char const char const char * diag
Definition: level2_impl.h:86
char char char int int * k
Definition: level2_impl.h:374

References Eigen::SparseMatrix< Scalar_, Options_, StorageIndex_ >::cols(), diag, i, k, Eigen::SparseSolverBase< IncompleteLU< Scalar_ > >::m_isInitialized, Eigen::IncompleteLU< Scalar_ >::m_lu, and size.

Referenced by Eigen::IncompleteLU< Scalar_ >::IncompleteLU().

◆ rows()

Member Data Documentation

◆ m_lu


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