10 #ifndef EIGEN_SUPERLUSUPPORT_H
11 #define EIGEN_SUPERLUSUPPORT_H
15 #if defined(SUPERLU_MAJOR_VERSION) && (SUPERLU_MAJOR_VERSION >= 5)
16 #define DECL_GSSVX(PREFIX,FLOATTYPE,KEYTYPE) \
18 extern void PREFIX##gssvx(superlu_options_t *, SuperMatrix *, int *, int *, int *, \
19 char *, FLOATTYPE *, FLOATTYPE *, SuperMatrix *, SuperMatrix *, \
20 void *, int, SuperMatrix *, SuperMatrix *, \
21 FLOATTYPE *, FLOATTYPE *, FLOATTYPE *, FLOATTYPE *, \
22 GlobalLU_t *, mem_usage_t *, SuperLUStat_t *, int *); \
24 inline float SuperLU_gssvx(superlu_options_t *options, SuperMatrix *A, \
25 int *perm_c, int *perm_r, int *etree, char *equed, \
26 FLOATTYPE *R, FLOATTYPE *C, SuperMatrix *L, \
27 SuperMatrix *U, void *work, int lwork, \
28 SuperMatrix *B, SuperMatrix *X, \
29 FLOATTYPE *recip_pivot_growth, \
30 FLOATTYPE *rcond, FLOATTYPE *ferr, FLOATTYPE *berr, \
31 SuperLUStat_t *stats, int *info, KEYTYPE) { \
32 mem_usage_t mem_usage; \
34 PREFIX##gssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, \
35 U, work, lwork, B, X, recip_pivot_growth, rcond, \
36 ferr, berr, &gLU, &mem_usage, stats, info); \
37 return mem_usage.for_lu;
\
40 #define DECL_GSSVX(PREFIX,FLOATTYPE,KEYTYPE) \
42 extern void PREFIX##gssvx(superlu_options_t *, SuperMatrix *, int *, int *, int *, \
43 char *, FLOATTYPE *, FLOATTYPE *, SuperMatrix *, SuperMatrix *, \
44 void *, int, SuperMatrix *, SuperMatrix *, \
45 FLOATTYPE *, FLOATTYPE *, FLOATTYPE *, FLOATTYPE *, \
46 mem_usage_t *, SuperLUStat_t *, int *); \
48 inline float SuperLU_gssvx(superlu_options_t *options, SuperMatrix *A, \
49 int *perm_c, int *perm_r, int *etree, char *equed, \
50 FLOATTYPE *R, FLOATTYPE *C, SuperMatrix *L, \
51 SuperMatrix *U, void *work, int lwork, \
52 SuperMatrix *B, SuperMatrix *X, \
53 FLOATTYPE *recip_pivot_growth, \
54 FLOATTYPE *rcond, FLOATTYPE *ferr, FLOATTYPE *berr, \
55 SuperLUStat_t *stats, int *info, KEYTYPE) { \
56 mem_usage_t mem_usage; \
57 PREFIX##gssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, \
58 U, work, lwork, B, X, recip_pivot_growth, rcond, \
59 ferr, berr, &mem_usage, stats, info); \
60 return mem_usage.for_lu;
\
70 #define EIGEN_SUPERLU_HAS_ILU
73 #ifdef EIGEN_SUPERLU_HAS_ILU
76 #define DECL_GSISX(PREFIX,FLOATTYPE,KEYTYPE) \
78 extern void PREFIX##gsisx(superlu_options_t *, SuperMatrix *, int *, int *, int *, \
79 char *, FLOATTYPE *, FLOATTYPE *, SuperMatrix *, SuperMatrix *, \
80 void *, int, SuperMatrix *, SuperMatrix *, FLOATTYPE *, FLOATTYPE *, \
81 mem_usage_t *, SuperLUStat_t *, int *); \
83 inline float SuperLU_gsisx(superlu_options_t *options, SuperMatrix *A, \
84 int *perm_c, int *perm_r, int *etree, char *equed, \
85 FLOATTYPE *R, FLOATTYPE *C, SuperMatrix *L, \
86 SuperMatrix *U, void *work, int lwork, \
87 SuperMatrix *B, SuperMatrix *X, \
88 FLOATTYPE *recip_pivot_growth, \
90 SuperLUStat_t *stats, int *info, KEYTYPE) { \
91 mem_usage_t mem_usage; \
92 PREFIX##gsisx(options, A, perm_c, perm_r, etree, equed, R, C, L, \
93 U, work, lwork, B, X, recip_pivot_growth, rcond, \
94 &mem_usage, stats, info); \
95 return mem_usage.for_lu;
\
98 DECL_GSISX(s,
float,
float)
99 DECL_GSISX(c,
float,std::complex<float>)
100 DECL_GSISX(
d,
double,
double)
101 DECL_GSISX(z,
double,std::complex<double>)
105 template<
typename MatrixType>
131 SuperMatrix::operator=(
static_cast<const SuperMatrix&
>(other));
148 if (t==SLU_NC || t==SLU_NR || t==SLU_DN)
157 template<
typename Scalar>
170 eigen_assert(
false &&
"Scalar type not supported by SuperLU");
174 template<
typename MatrixType>
177 MatrixType& mat(_mat.derived());
184 res.nrow = internal::convert_index<int>(mat.rows());
185 res.ncol = internal::convert_index<int>(mat.cols());
187 res.
storage.
lda = internal::convert_index<int>(MatrixType::IsVectorAtCompileTime ? mat.size() : mat.outerStride());
192 template<
typename MatrixType>
195 MatrixType &mat(a_mat.
derived());
200 res.nrow = internal::convert_index<int>(mat.cols());
201 res.ncol = internal::convert_index<int>(mat.rows());
206 res.nrow = internal::convert_index<int>(mat.rows());
207 res.ncol = internal::convert_index<int>(mat.cols());
212 res.
storage.
nnz = internal::convert_index<int>(mat.nonZeros());
231 template<
typename Scalar,
int Rows,
int Cols,
int Options,
int MRows,
int MCols>
242 res.nrow = mat.
rows();
243 res.ncol = mat.
cols();
250 template<
typename Derived>
259 res.nrow = mat.cols();
260 res.ncol = mat.rows();
265 res.nrow = mat.rows();
266 res.ncol = mat.cols();
290 template<
typename MatrixType>
297 template<
typename Scalar,
int Flags,
typename Index>
316 template<
typename _MatrixType,
typename Derived>
325 typedef typename MatrixType::Scalar
Scalar;
367 derived().analyzePattern(matrix);
385 template<
typename Stream>
433 Destroy_SuperNode_Matrix(&
m_sluL);
435 Destroy_CompCol_Matrix(&
m_sluU);
487 template<
typename _MatrixType>
540 template<
typename Rhs,
typename Dest>
612 template<
typename MatrixType>
615 eigen_assert(m_analysisIsOk &&
"You must first call analyzePattern()");
622 this->initFactorization(
a);
624 m_sluOptions.ColPerm = COLAMD;
629 StatInit(&m_sluStat);
630 SuperLU_gssvx(&m_sluOptions, &m_sluA, m_q.data(), m_p.data(), &m_sluEtree[0],
631 &m_sluEqued, &m_sluRscale[0], &m_sluCscale[0],
635 &recip_pivot_growth, &rcond,
637 &m_sluStat, &info,
Scalar());
638 StatFree(&m_sluStat);
640 m_extractedDataAreDirty =
true;
644 m_factorizationIsOk =
true;
647 template<
typename MatrixType>
648 template<
typename Rhs,
typename Dest>
651 eigen_assert(m_factorizationIsOk &&
"The decomposition is not in a valid state for solving, you must first call either compute() or analyzePattern()/factorize()");
653 const Index rhsCols = b.cols();
656 m_sluOptions.Trans = NOTRANS;
657 m_sluOptions.Fact = FACTORED;
658 m_sluOptions.IterRefine = NOREFINE;
661 m_sluFerr.resize(rhsCols);
662 m_sluBerr.resize(rhsCols);
670 typename Rhs::PlainObject b_cpy;
677 StatInit(&m_sluStat);
680 SuperLU_gssvx(&m_sluOptions, &m_sluA,
681 m_q.data(), m_p.data(),
682 &m_sluEtree[0], &m_sluEqued,
683 &m_sluRscale[0], &m_sluCscale[0],
687 &recip_pivot_growth, &rcond,
688 &m_sluFerr[0], &m_sluBerr[0],
689 &m_sluStat, &info,
Scalar());
690 StatFree(&m_sluStat);
692 if(x.derived().data() != x_ref.data())
705 template<
typename MatrixType,
typename Derived>
708 eigen_assert(m_factorizationIsOk &&
"The decomposition is not in a valid state for extracting factors, you must first call either compute() or analyzePattern()/factorize()");
709 if (m_extractedDataAreDirty)
712 int fsupc, istart, nsupr;
713 int lastl = 0, lastu = 0;
714 SCformat *Lstore =
static_cast<SCformat*
>(m_sluL.Store);
715 NCformat *Ustore =
static_cast<NCformat*
>(m_sluU.Store);
720 m_l.resizeNonZeros(Lstore->nnz);
722 m_u.resizeNonZeros(Ustore->nnz);
724 int* Lcol = m_l.outerIndexPtr();
725 int* Lrow = m_l.innerIndexPtr();
726 Scalar* Lval = m_l.valuePtr();
728 int* Ucol = m_u.outerIndexPtr();
729 int* Urow = m_u.innerIndexPtr();
730 Scalar* Uval = m_u.valuePtr();
736 for (
int k = 0; k <= Lstore->nsuper; ++k)
738 fsupc = L_FST_SUPC(k);
739 istart = L_SUB_START(fsupc);
740 nsupr = L_SUB_START(fsupc+1) - istart;
744 for (
int j = fsupc; j < L_FST_SUPC(k+1); ++j)
746 SNptr = &((
Scalar*)Lstore->nzval)[L_NZ_START(j)];
749 for (
int i = U_NZ_START(j); i < U_NZ_START(j+1); ++i)
751 Uval[lastu] = ((
Scalar*)Ustore->nzval)[i];
753 if (Uval[lastu] != 0.0)
754 Urow[lastu++] = U_SUB(i);
756 for (
int i = 0; i < upper; ++i)
759 Uval[lastu] = SNptr[i];
761 if (Uval[lastu] != 0.0)
762 Urow[lastu++] = L_SUB(istart+i);
768 Lrow[lastl++] = L_SUB(istart + upper - 1);
769 for (
int i = upper; i < nsupr; ++i)
771 Lval[lastl] = SNptr[i];
773 if (Lval[lastl] != 0.0)
774 Lrow[lastl++] = L_SUB(istart+i);
784 m_l.resizeNonZeros(lastl);
785 m_u.resizeNonZeros(lastu);
787 m_extractedDataAreDirty =
false;
791 template<
typename MatrixType>
794 eigen_assert(m_factorizationIsOk &&
"The decomposition is not in a valid state for computing the determinant, you must first call either compute() or analyzePattern()/factorize()");
796 if (m_extractedDataAreDirty)
800 for (
int j=0; j<m_u.cols(); ++j)
802 if (m_u.outerIndexPtr()[j+1]-m_u.outerIndexPtr()[j] > 0)
804 int lastId = m_u.outerIndexPtr()[j+1]-1;
806 if (m_u.innerIndexPtr()[lastId]==j)
807 det *= m_u.valuePtr()[lastId];
813 return det/m_sluRscale.prod()/m_sluCscale.prod();
818 #ifdef EIGEN_PARSED_BY_DOXYGEN
819 #define EIGEN_SUPERLU_HAS_ILU
822 #ifdef EIGEN_SUPERLU_HAS_ILU
840 template<
typename _MatrixType>
841 class SuperILU :
public SuperLUBase<_MatrixType,SuperILU<_MatrixType> >
845 typedef _MatrixType MatrixType;
846 typedef typename Base::Scalar Scalar;
847 typedef typename Base::RealScalar RealScalar;
850 using Base::_solve_impl;
852 SuperILU() : Base() { init(); }
854 SuperILU(
const MatrixType& matrix) : Base()
857 Base::compute(matrix);
870 void analyzePattern(
const MatrixType& matrix)
872 Base::analyzePattern(matrix);
881 void factorize(
const MatrixType& matrix);
883 #ifndef EIGEN_PARSED_BY_DOXYGEN
885 template<
typename Rhs,
typename Dest>
886 void _solve_impl(
const MatrixBase<Rhs> &b, MatrixBase<Dest> &dest)
const;
891 using Base::m_matrix;
892 using Base::m_sluOptions;
898 using Base::m_sluEtree;
899 using Base::m_sluEqued;
900 using Base::m_sluRscale;
901 using Base::m_sluCscale;
904 using Base::m_sluStat;
905 using Base::m_sluFerr;
906 using Base::m_sluBerr;
910 using Base::m_analysisIsOk;
911 using Base::m_factorizationIsOk;
912 using Base::m_extractedDataAreDirty;
913 using Base::m_isInitialized;
920 ilu_set_default_options(&m_sluOptions);
921 m_sluOptions.PrintStat = NO;
922 m_sluOptions.ConditionNumber = NO;
923 m_sluOptions.Trans = NOTRANS;
924 m_sluOptions.ColPerm = MMD_AT_PLUS_A;
927 m_sluOptions.ILU_MILU = SILU;
931 m_sluOptions.ILU_DropRule = DROP_BASIC;
932 m_sluOptions.ILU_DropTol = NumTraits<Scalar>::dummy_precision()*10;
936 SuperILU(SuperILU& ) { }
939 template<
typename MatrixType>
940 void SuperILU<MatrixType>::factorize(
const MatrixType&
a)
942 eigen_assert(m_analysisIsOk &&
"You must first call analyzePattern()");
949 this->initFactorization(
a);
952 RealScalar recip_pivot_growth, rcond;
954 StatInit(&m_sluStat);
955 SuperLU_gsisx(&m_sluOptions, &m_sluA, m_q.data(), m_p.data(), &m_sluEtree[0],
956 &m_sluEqued, &m_sluRscale[0], &m_sluCscale[0],
960 &recip_pivot_growth, &rcond,
961 &m_sluStat, &info, Scalar());
962 StatFree(&m_sluStat);
966 m_factorizationIsOk =
true;
969 #ifndef EIGEN_PARSED_BY_DOXYGEN
970 template<
typename MatrixType>
971 template<
typename Rhs,
typename Dest>
972 void SuperILU<MatrixType>::_solve_impl(
const MatrixBase<Rhs> &b, MatrixBase<Dest>& x)
const
974 eigen_assert(m_factorizationIsOk &&
"The decomposition is not in a valid state for solving, you must first call either compute() or analyzePattern()/factorize()");
976 const int rhsCols = b.cols();
979 m_sluOptions.Trans = NOTRANS;
980 m_sluOptions.Fact = FACTORED;
981 m_sluOptions.IterRefine = NOREFINE;
983 m_sluFerr.resize(rhsCols);
984 m_sluBerr.resize(rhsCols);
986 Ref<const Matrix<typename Rhs::Scalar,Dynamic,Dynamic,ColMajor> > b_ref(b);
987 Ref<const Matrix<typename Dest::Scalar,Dynamic,Dynamic,ColMajor> > x_ref(x);
992 typename Rhs::PlainObject b_cpy;
1000 RealScalar recip_pivot_growth, rcond;
1002 StatInit(&m_sluStat);
1003 SuperLU_gsisx(&m_sluOptions, &m_sluA,
1004 m_q.data(), m_p.data(),
1005 &m_sluEtree[0], &m_sluEqued,
1006 &m_sluRscale[0], &m_sluCscale[0],
1010 &recip_pivot_growth, &rcond,
1011 &m_sluStat, &info, Scalar());
1012 StatFree(&m_sluStat);
1014 if(x.derived().data() != x_ref.data())
#define eigen_assert(x)
Definition: Macros.h:1037
#define DECL_GSSVX(PREFIX, FLOATTYPE, KEYTYPE)
Definition: SuperLUSupport.h:40
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:96
Sparse matrix.
Definition: MappedSparseMatrix.h:34
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:50
The matrix class, also used for vectors and row-vectors.
Definition: Matrix.h:180
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index outerStride() const EIGEN_NOEXCEPT
Definition: Matrix.h:429
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition: PlainObjectBase.h:145
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Definition: PlainObjectBase.h:271
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE const Scalar * data() const
Definition: PlainObjectBase.h:247
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition: PlainObjectBase.h:143
A matrix or vector expression mapping an existing expression.
Definition: Ref.h:283
Base class of any sparse matrices or sparse expressions.
Definition: SparseMatrixBase.h:28
const Derived & derived() const
Definition: SparseMatrixBase.h:143
Index rows() const
Definition: SparseMatrix.h:138
Index cols() const
Definition: SparseMatrix.h:140
A base class for sparse solvers.
Definition: SparseSolverBase.h:68
void _solve_impl(const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
Definition: SparseSolverBase.h:111
bool m_isInitialized
Definition: SparseSolverBase.h:119
Derived & derived()
Definition: SparseSolverBase.h:79
The base class for the direct and incomplete LU factorization of SuperLU.
Definition: SuperLUSupport.h:318
SluMatrix m_sluX
Definition: SuperLUSupport.h:453
bool m_extractedDataAreDirty
Definition: SuperLUSupport.h:464
void extractData() const
Definition: SuperLUSupport.h:706
Matrix< Scalar, Dynamic, 1 > Vector
Definition: SuperLUSupport.h:328
LUMatrixType m_matrix
Definition: SuperLUSupport.h:450
~SuperLUBase()
Definition: SuperLUSupport.h:342
void dumpMemory(Stream &)
Definition: SuperLUSupport.h:386
superlu_options_t m_sluOptions
Definition: SuperLUSupport.h:455
void compute(const MatrixType &matrix)
Definition: SuperLUSupport.h:365
SparseMatrix< Scalar > LUMatrixType
Definition: SuperLUSupport.h:332
MatrixType::StorageIndex StorageIndex
Definition: SuperLUSupport.h:327
void analyzePattern(const MatrixType &)
Definition: SuperLUSupport.h:377
@ MaxColsAtCompileTime
Definition: SuperLUSupport.h:335
@ ColsAtCompileTime
Definition: SuperLUSupport.h:334
SluMatrix m_sluB
Definition: SuperLUSupport.h:453
void initFactorization(const MatrixType &a)
Definition: SuperLUSupport.h:391
Matrix< RealScalar, Dynamic, 1 > m_sluRscale
Definition: SuperLUSupport.h:457
Index rows() const
Definition: SuperLUSupport.h:347
_MatrixType MatrixType
Definition: SuperLUSupport.h:324
superlu_options_t & options()
Definition: SuperLUSupport.h:351
Matrix< int, MatrixType::RowsAtCompileTime, 1 > IntColVectorType
Definition: SuperLUSupport.h:330
void init()
Definition: SuperLUSupport.h:420
MatrixType::Scalar Scalar
Definition: SuperLUSupport.h:325
Index cols() const
Definition: SuperLUSupport.h:348
Matrix< RealScalar, Dynamic, 1 > m_sluFerr
Definition: SuperLUSupport.h:458
ComputationInfo m_info
Definition: SuperLUSupport.h:461
SparseSolverBase< Derived > Base
Definition: SuperLUSupport.h:320
std::vector< int > m_sluEtree
Definition: SuperLUSupport.h:456
IntRowVectorType m_q
Definition: SuperLUSupport.h:448
void clearFactors()
Definition: SuperLUSupport.h:430
SuperLUStat_t m_sluStat
Definition: SuperLUSupport.h:454
Matrix< RealScalar, Dynamic, 1 > m_sluCscale
Definition: SuperLUSupport.h:457
Matrix< RealScalar, Dynamic, 1 > m_sluBerr
Definition: SuperLUSupport.h:458
ComputationInfo info() const
Reports whether previous computation was successful.
Definition: SuperLUSupport.h:358
SuperMatrix m_sluL
Definition: SuperLUSupport.h:452
int m_analysisIsOk
Definition: SuperLUSupport.h:463
bool m_isInitialized
Definition: SparseSolverBase.h:119
SuperMatrix m_sluU
Definition: SuperLUSupport.h:452
Map< PermutationMatrix< Dynamic, Dynamic, int > > PermutationMap
Definition: SuperLUSupport.h:331
char m_sluEqued
Definition: SuperLUSupport.h:459
SluMatrix m_sluA
Definition: SuperLUSupport.h:451
Derived & derived()
Definition: SparseSolverBase.h:79
LUMatrixType m_l
Definition: SuperLUSupport.h:445
MatrixType::RealScalar RealScalar
Definition: SuperLUSupport.h:326
SuperLUBase()
Definition: SuperLUSupport.h:340
int m_factorizationIsOk
Definition: SuperLUSupport.h:462
IntColVectorType m_p
Definition: SuperLUSupport.h:447
Matrix< int, 1, MatrixType::ColsAtCompileTime > IntRowVectorType
Definition: SuperLUSupport.h:329
SuperLUBase(SuperLUBase &)
Definition: SuperLUSupport.h:467
LUMatrixType m_u
Definition: SuperLUSupport.h:446
A sparse direct LU factorization and solver based on the SuperLU library.
Definition: SuperLUSupport.h:489
bool m_extractedDataAreDirty
Definition: SuperLUSupport.h:464
void factorize(const MatrixType &matrix)
Definition: SuperLUSupport.h:613
SuperLU()
Definition: SuperLUSupport.h:506
TriangularView< LUMatrixType, Lower|UnitDiag > LMatrixType
Definition: SuperLUSupport.h:500
Base::StorageIndex StorageIndex
Definition: SuperLUSupport.h:495
TriangularView< LUMatrixType, Upper > UMatrixType
Definition: SuperLUSupport.h:501
superlu_options_t m_sluOptions
Definition: SuperLUSupport.h:455
const LMatrixType & matrixL() const
Definition: SuperLUSupport.h:543
Base::IntColVectorType IntColVectorType
Definition: SuperLUSupport.h:497
SuperLU(const MatrixType &matrix)
Definition: SuperLUSupport.h:508
void analyzePattern(const MatrixType &matrix)
Definition: SuperLUSupport.h:524
~SuperLU()
Definition: SuperLUSupport.h:514
Base::RealScalar RealScalar
Definition: SuperLUSupport.h:494
_MatrixType MatrixType
Definition: SuperLUSupport.h:492
const UMatrixType & matrixU() const
Definition: SuperLUSupport.h:549
ComputationInfo m_info
Definition: SuperLUSupport.h:461
IntRowVectorType m_q
Definition: SuperLUSupport.h:448
SuperLU(SuperLU &)
Definition: SuperLUSupport.h:609
SuperLUBase< _MatrixType, SuperLU > Base
Definition: SuperLUSupport.h:491
bool m_isInitialized
Definition: SparseSolverBase.h:119
const IntRowVectorType & permutationQ() const
Definition: SuperLUSupport.h:561
Scalar determinant() const
Definition: SuperLUSupport.h:792
LUMatrixType m_l
Definition: SuperLUSupport.h:445
Base::LUMatrixType LUMatrixType
Definition: SuperLUSupport.h:499
const IntColVectorType & permutationP() const
Definition: SuperLUSupport.h:555
Base::PermutationMap PermutationMap
Definition: SuperLUSupport.h:498
Base::IntRowVectorType IntRowVectorType
Definition: SuperLUSupport.h:496
IntColVectorType m_p
Definition: SuperLUSupport.h:447
Base::Scalar Scalar
Definition: SuperLUSupport.h:493
LUMatrixType m_u
Definition: SuperLUSupport.h:446
void init()
Definition: SuperLUSupport.h:596
void _solve_impl(const MatrixBase< Rhs > &b, MatrixBase< Dest > &dest) const
Definition: SuperLUSupport.h:649
Expression of a triangular part in a matrix.
Definition: TriangularMatrix.h:189
Concept for reading and writing characters.
ComputationInfo
Definition: Constants.h:440
@ SelfAdjoint
Definition: Constants.h:225
@ Lower
Definition: Constants.h:209
@ Upper
Definition: Constants.h:211
@ NumericalIssue
Definition: Constants.h:444
@ InvalidInput
Definition: Constants.h:449
@ Success
Definition: Constants.h:442
@ ColMajor
Definition: Constants.h:319
@ RowMajor
Definition: Constants.h:321
const unsigned int RowMajorBit
Definition: Constants.h:66
SluMatrix asSluMatrix(MatrixType &mat)
Definition: SuperLUSupport.h:291
EIGEN_CONSTEXPR Index size(const T &x)
Definition: Meta.h:479
MappedSparseMatrix< Scalar, Flags, Index > map_superlu(SluMatrix &sluMat)
Definition: SuperLUSupport.h:298
Namespace containing all symbols from the Eigen library.
Definition: LDLT.h:16
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:74
Flags
Special flags for archives.
Definition: cereal.hpp:185
Definition: document.h:416
const GenericPointer< typename T::ValueType > T2 value
Definition: pointer.h:1282
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1181
static void run(MatrixType &mat, SluMatrix &res)
Definition: SuperLUSupport.h:235
Matrix< Scalar, Rows, Cols, Options, MRows, MCols > MatrixType
Definition: SuperLUSupport.h:234
Derived MatrixType
Definition: SuperLUSupport.h:253
static void run(MatrixType &mat, SluMatrix &res)
Definition: SuperLUSupport.h:254
Definition: SuperLUSupport.h:106
Definition: SuperLUSupport.h:116
void * values
Definition: SuperLUSupport.h:140
SluMatrix & operator=(const SluMatrix &other)
Definition: SuperLUSupport.h:129
SluMatrix()
Definition: SuperLUSupport.h:117
SluMatrix(const SluMatrix &other)
Definition: SuperLUSupport.h:122
static SluMatrix Map(SparseMatrixBase< MatrixType > &a_mat)
Definition: SuperLUSupport.h:193
void setScalarType()
Definition: SuperLUSupport.h:158
int lda
Definition: SuperLUSupport.h:139
int nnz
Definition: SuperLUSupport.h:139
int * outerInd
Definition: SuperLUSupport.h:142
int * innerInd
Definition: SuperLUSupport.h:141
void setStorageType(Stype_t t)
Definition: SuperLUSupport.h:145
struct Eigen::SluMatrix::@862 storage
static SluMatrix Map(MatrixBase< MatrixType > &_mat)
Definition: SuperLUSupport.h:175