10 #ifndef EIGEN_SUPERLUSUPPORT_H
11 #define EIGEN_SUPERLUSUPPORT_H
18 #if defined(SUPERLU_MAJOR_VERSION) && (SUPERLU_MAJOR_VERSION >= 5)
19 #define DECL_GSSVX(PREFIX, FLOATTYPE, KEYTYPE) \
21 extern void PREFIX##gssvx(superlu_options_t *, SuperMatrix *, int *, int *, int *, char *, FLOATTYPE *, FLOATTYPE *, \
22 SuperMatrix *, SuperMatrix *, void *, int, SuperMatrix *, SuperMatrix *, FLOATTYPE *, \
23 FLOATTYPE *, FLOATTYPE *, FLOATTYPE *, GlobalLU_t *, mem_usage_t *, SuperLUStat_t *, \
26 inline float SuperLU_gssvx(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, int *etree, \
27 char *equed, FLOATTYPE *R, FLOATTYPE *C, SuperMatrix *L, SuperMatrix *U, void *work, \
28 int lwork, SuperMatrix *B, SuperMatrix *X, FLOATTYPE *recip_pivot_growth, \
29 FLOATTYPE *rcond, FLOATTYPE *ferr, FLOATTYPE *berr, SuperLUStat_t *stats, int *info, \
31 mem_usage_t mem_usage; \
33 PREFIX##gssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, recip_pivot_growth, rcond, \
34 ferr, berr, &gLU, &mem_usage, stats, info); \
35 return mem_usage.for_lu;
\
38 #define DECL_GSSVX(PREFIX, FLOATTYPE, KEYTYPE) \
40 extern void PREFIX##gssvx(superlu_options_t *, SuperMatrix *, int *, int *, int *, char *, FLOATTYPE *, FLOATTYPE *, \
41 SuperMatrix *, SuperMatrix *, void *, int, SuperMatrix *, SuperMatrix *, FLOATTYPE *, \
42 FLOATTYPE *, FLOATTYPE *, FLOATTYPE *, mem_usage_t *, SuperLUStat_t *, int *); \
44 inline float SuperLU_gssvx(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, int *etree, \
45 char *equed, FLOATTYPE *R, FLOATTYPE *C, SuperMatrix *L, SuperMatrix *U, void *work, \
46 int lwork, SuperMatrix *B, SuperMatrix *X, FLOATTYPE *recip_pivot_growth, \
47 FLOATTYPE *rcond, FLOATTYPE *ferr, FLOATTYPE *berr, SuperLUStat_t *stats, int *info, \
49 mem_usage_t mem_usage; \
50 PREFIX##gssvx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, recip_pivot_growth, rcond, \
51 ferr, berr, &mem_usage, stats, info); \
52 return mem_usage.for_lu;
\
62 #define EIGEN_SUPERLU_HAS_ILU
65 #ifdef EIGEN_SUPERLU_HAS_ILU
68 #define DECL_GSISX(PREFIX, FLOATTYPE, KEYTYPE) \
70 extern void PREFIX##gsisx(superlu_options_t *, SuperMatrix *, int *, int *, int *, char *, FLOATTYPE *, FLOATTYPE *, \
71 SuperMatrix *, SuperMatrix *, void *, int, SuperMatrix *, SuperMatrix *, FLOATTYPE *, \
72 FLOATTYPE *, mem_usage_t *, SuperLUStat_t *, int *); \
74 inline float SuperLU_gsisx(superlu_options_t *options, SuperMatrix *A, int *perm_c, int *perm_r, int *etree, \
75 char *equed, FLOATTYPE *R, FLOATTYPE *C, SuperMatrix *L, SuperMatrix *U, void *work, \
76 int lwork, SuperMatrix *B, SuperMatrix *X, FLOATTYPE *recip_pivot_growth, \
77 FLOATTYPE *rcond, SuperLUStat_t *stats, int *info, KEYTYPE) { \
78 mem_usage_t mem_usage; \
79 PREFIX##gsisx(options, A, perm_c, perm_r, etree, equed, R, C, L, U, work, lwork, B, X, recip_pivot_growth, rcond, \
80 &mem_usage, stats, info); \
81 return mem_usage.for_lu;
\
84 DECL_GSISX(
s,
float,
float)
85 DECL_GSISX(
c,
float, std::complex<float>)
86 DECL_GSISX(d,
double,
double)
87 DECL_GSISX(z,
double, std::complex<double>)
91 template <
typename MatrixType>
110 SuperMatrix::operator=(
static_cast<const SuperMatrix &
>(other));
136 template <
typename Scalar>
147 eigen_assert(
false &&
"Scalar type not supported by SuperLU");
151 template <
typename MatrixType>
155 "row-major dense matrices are not supported by SuperLU");
161 res.nrow = internal::convert_index<int>(
mat.
rows());
162 res.ncol = internal::convert_index<int>(
mat.
cols());
164 res.storage.lda = internal::convert_index<int>(MatrixType::IsVectorAtCompileTime ?
mat.
size() :
mat.outerStride());
169 template <
typename MatrixType>
175 res.nrow = internal::convert_index<int>(
mat.
cols());
176 res.ncol = internal::convert_index<int>(
mat.
rows());
179 res.nrow = internal::convert_index<int>(
mat.
rows());
180 res.ncol = internal::convert_index<int>(
mat.
cols());
197 "SelfAdjoint matrix shape not supported by SuperLU");
203 template <
typename Scalar,
int Rows,
int Cols,
int Options,
int MRows,
int MCols>
215 res.storage.lda =
mat.outerStride();
220 template <
typename Derived>
253 template <
typename MatrixType>
259 template <
typename Scalar,
int Flags,
typename Index>
277 template <
typename MatrixType_,
typename Derived>
336 template <
typename Stream>
430 template <
typename MatrixType_>
478 template <
typename Rhs,
typename Dest>
543 template <
typename MatrixType>
545 eigen_assert(m_analysisIsOk &&
"You must first call analyzePattern()");
546 if (!m_analysisIsOk) {
551 this->initFactorization(
a);
553 m_sluOptions.ColPerm =
COLAMD;
559 SuperLU_gssvx(&m_sluOptions, &m_sluA, m_q.data(), m_p.data(), &m_sluEtree[0], &m_sluEqued, &m_sluRscale[0],
560 &m_sluCscale[0], &m_sluL, &m_sluU, NULL, 0, &m_sluB, &m_sluX, &recip_pivot_growth, &rcond, &ferr, &berr,
564 m_extractedDataAreDirty =
true;
568 m_factorizationIsOk =
true;
571 template <
typename MatrixType>
572 template <
typename Rhs,
typename Dest>
575 "The decomposition is not in a valid state for solving, you must first call either compute() or "
576 "analyzePattern()/factorize()");
578 const Index rhsCols =
b.cols();
585 m_sluFerr.resize(rhsCols);
586 m_sluBerr.resize(rhsCols);
594 typename Rhs::PlainObject b_cpy;
595 if (m_sluEqued !=
'N') {
603 SuperLU_gssvx(&m_sluOptions, &m_sluA, m_q.data(), m_p.data(), &m_sluEtree[0], &m_sluEqued, &m_sluRscale[0],
604 &m_sluCscale[0], &m_sluL, &m_sluU, NULL, 0, &m_sluB, &m_sluX, &recip_pivot_growth, &rcond,
605 &m_sluFerr[0], &m_sluBerr[0], &m_sluStat, &
info,
Scalar());
608 if (
x.derived().data() != x_ref.data())
x = x_ref;
620 template <
typename MatrixType,
typename Derived>
623 "The decomposition is not in a valid state for extracting factors, you must first call either compute() "
624 "or analyzePattern()/factorize()");
625 if (m_extractedDataAreDirty) {
627 int fsupc, istart, nsupr;
628 int lastl = 0, lastu = 0;
635 m_l.resizeNonZeros(Lstore->
nnz);
637 m_u.resizeNonZeros(Ustore->
nnz);
639 int *Lcol = m_l.outerIndexPtr();
640 int *Lrow = m_l.innerIndexPtr();
641 Scalar *Lval = m_l.valuePtr();
643 int *Ucol = m_u.outerIndexPtr();
644 int *Urow = m_u.innerIndexPtr();
645 Scalar *Uval = m_u.valuePtr();
651 for (
int k = 0;
k <= Lstore->
nsuper; ++
k) {
665 if (Uval[lastu] != 0.0) Urow[lastu++] =
U_SUB(
i);
667 for (
int i = 0;
i < upper; ++
i) {
669 Uval[lastu] = SNptr[
i];
671 if (Uval[lastu] != 0.0) Urow[lastu++] =
L_SUB(istart +
i);
677 Lrow[lastl++] =
L_SUB(istart + upper - 1);
678 for (
int i = upper;
i < nsupr; ++
i) {
679 Lval[lastl] = SNptr[
i];
681 if (Lval[lastl] != 0.0) Lrow[lastl++] =
L_SUB(istart +
i);
691 m_l.resizeNonZeros(lastl);
692 m_u.resizeNonZeros(lastu);
694 m_extractedDataAreDirty =
false;
698 template <
typename MatrixType>
701 "The decomposition is not in a valid state for computing the determinant, you must first call either "
702 "compute() or analyzePattern()/factorize()");
704 if (m_extractedDataAreDirty) this->extractData();
707 for (
int j = 0;
j < m_u.cols(); ++
j) {
708 if (m_u.outerIndexPtr()[
j + 1] - m_u.outerIndexPtr()[
j] > 0) {
709 int lastId = m_u.outerIndexPtr()[
j + 1] - 1;
711 if (m_u.innerIndexPtr()[lastId] ==
j) det *= m_u.valuePtr()[lastId];
716 if (m_sluEqued !=
'N')
717 return det / m_sluRscale.prod() / m_sluCscale.prod();
722 #ifdef EIGEN_PARSED_BY_DOXYGEN
723 #define EIGEN_SUPERLU_HAS_ILU
726 #ifdef EIGEN_SUPERLU_HAS_ILU
745 template <
typename MatrixType_>
746 class SuperILU :
public SuperLUBase<MatrixType_, SuperILU<MatrixType_> > {
754 using Base::_solve_impl;
756 SuperILU() : Base() {
init(); }
781 #ifndef EIGEN_PARSED_BY_DOXYGEN
783 template <
typename Rhs,
typename Dest>
784 void _solve_impl(
const MatrixBase<Rhs> &
b, MatrixBase<Dest> &dest)
const;
789 using Base::m_matrix;
794 using Base::m_sluBerr;
795 using Base::m_sluCscale;
796 using Base::m_sluEqued;
797 using Base::m_sluEtree;
798 using Base::m_sluFerr;
800 using Base::m_sluOptions;
801 using Base::m_sluRscale;
802 using Base::m_sluStat;
807 using Base::m_analysisIsOk;
808 using Base::m_extractedDataAreDirty;
809 using Base::m_factorizationIsOk;
811 using Base::m_isInitialized;
817 m_sluOptions.PrintStat =
NO;
818 m_sluOptions.ConditionNumber =
NO;
823 m_sluOptions.ILU_MILU =
SILU;
828 m_sluOptions.ILU_DropTol = NumTraits<Scalar>::dummy_precision() * 10;
832 SuperILU(SuperILU &) {}
835 template <
typename MatrixType>
836 void SuperILU<MatrixType>::factorize(
const MatrixType &
a) {
837 eigen_assert(m_analysisIsOk &&
"You must first call analyzePattern()");
838 if (!m_analysisIsOk) {
843 this->initFactorization(
a);
849 SuperLU_gsisx(&m_sluOptions, &m_sluA, m_q.data(), m_p.data(), &m_sluEtree[0], &m_sluEqued, &m_sluRscale[0],
850 &m_sluCscale[0], &m_sluL, &m_sluU, NULL, 0, &m_sluB, &m_sluX, &recip_pivot_growth, &rcond, &m_sluStat,
856 m_factorizationIsOk =
true;
859 #ifndef EIGEN_PARSED_BY_DOXYGEN
860 template <
typename MatrixType>
861 template <
typename Rhs,
typename Dest>
862 void SuperILU<MatrixType>::_solve_impl(
const MatrixBase<Rhs> &
b, MatrixBase<Dest> &
x)
const {
864 "The decomposition is not in a valid state for solving, you must first call either compute() or "
865 "analyzePattern()/factorize()");
867 const int rhsCols =
b.cols();
874 m_sluFerr.resize(rhsCols);
875 m_sluBerr.resize(rhsCols);
877 Ref<const Matrix<typename Rhs::Scalar, Dynamic, Dynamic, ColMajor> > b_ref(
b);
878 Ref<const Matrix<typename Dest::Scalar, Dynamic, Dynamic, ColMajor> > x_ref(
x);
883 typename Rhs::PlainObject b_cpy;
884 if (m_sluEqued !=
'N') {
893 SuperLU_gsisx(&m_sluOptions, &m_sluA, m_q.data(), m_p.data(), &m_sluEtree[0], &m_sluEqued, &m_sluRscale[0],
894 &m_sluCscale[0], &m_sluL, &m_sluU, NULL, 0, &m_sluB, &m_sluX, &recip_pivot_growth, &rcond, &m_sluStat,
898 if (
x.derived().data() != x_ref.data())
x = x_ref;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Eigen::SparseMatrix< double > mat
Definition: EigenUnitTest.cpp:10
#define eigen_assert(x)
Definition: Macros.h:910
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition: PartialRedux_count.cpp:3
#define DECL_GSSVX(PREFIX, FLOATTYPE, KEYTYPE)
Definition: SuperLUSupport.h:38
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
Scalar * b
Definition: benchVecAdd.cpp:17
SCALAR Scalar
Definition: bench_gemm.cpp:45
NumTraits< Scalar >::Real RealScalar
Definition: bench_gemm.cpp:46
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
A matrix or vector expression mapping an existing array of data.
Definition: Map.h:96
Base class for all dense matrices, vectors, and expressions.
Definition: MatrixBase.h:52
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
EIGEN_DEVICE_FUNC constexpr EIGEN_STRONG_INLINE void resize(Index rows, Index cols)
Definition: PlainObjectBase.h:294
A matrix or vector expression mapping an existing expression.
Definition: Ref.h:264
Base class of any sparse matrices or sparse expressions.
Definition: SparseMatrixBase.h:30
Index size() const
Definition: SparseMatrixBase.h:187
const Derived & derived() const
Definition: SparseMatrixBase.h:144
Index nonZeros() const
Definition: SparseCompressedBase.h:64
Index cols() const
Definition: SparseMatrix.h:161
const Scalar * valuePtr() const
Definition: SparseMatrix.h:171
Index rows() const
Definition: SparseMatrix.h:159
const StorageIndex * outerIndexPtr() const
Definition: SparseMatrix.h:189
const StorageIndex * innerIndexPtr() const
Definition: SparseMatrix.h:180
constexpr Storage & data()
Definition: SparseMatrix.h:205
A base class for sparse solvers.
Definition: SparseSolverBase.h:67
void _solve_impl(const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
Definition: SparseSolverBase.h:104
bool m_isInitialized
Definition: SparseSolverBase.h:110
Derived & derived()
Definition: SparseSolverBase.h:76
The base class for the direct and incomplete LU factorization of SuperLU.
Definition: SuperLUSupport.h:278
Matrix< RealScalar, Dynamic, 1 > m_sluRscale
Definition: SuperLUSupport.h:401
std::vector< int > m_sluEtree
Definition: SuperLUSupport.h:400
void extractData() const
Definition: SuperLUSupport.h:621
SuperMatrix m_sluL
Definition: SuperLUSupport.h:396
Matrix< Scalar, Dynamic, 1 > Vector
Definition: SuperLUSupport.h:289
void compute(const MatrixType &matrix)
Definition: SuperLUSupport.h:318
bool m_extractedDataAreDirty
Definition: SuperLUSupport.h:408
LUMatrixType m_l
Definition: SuperLUSupport.h:389
~SuperLUBase()
Definition: SuperLUSupport.h:299
SuperLUStat_t m_sluStat
Definition: SuperLUSupport.h:398
Matrix< RealScalar, Dynamic, 1 > m_sluBerr
Definition: SuperLUSupport.h:402
Index rows() const
Definition: SuperLUSupport.h:301
ComputationInfo info() const
Reports whether previous computation was successful.
Definition: SuperLUSupport.h:312
MatrixType::StorageIndex StorageIndex
Definition: SuperLUSupport.h:288
MatrixType::RealScalar RealScalar
Definition: SuperLUSupport.h:287
SluMatrix m_sluB
Definition: SuperLUSupport.h:397
SparseSolverBase< Derived > Base
Definition: SuperLUSupport.h:280
SuperLUBase()
Definition: SuperLUSupport.h:297
SuperMatrix m_sluU
Definition: SuperLUSupport.h:396
IntRowVectorType m_q
Definition: SuperLUSupport.h:392
void clearFactors()
Definition: SuperLUSupport.h:377
MatrixType::Scalar Scalar
Definition: SuperLUSupport.h:286
SluMatrix m_sluX
Definition: SuperLUSupport.h:397
Matrix< RealScalar, Dynamic, 1 > m_sluFerr
Definition: SuperLUSupport.h:402
LUMatrixType m_u
Definition: SuperLUSupport.h:390
Matrix< RealScalar, Dynamic, 1 > m_sluCscale
Definition: SuperLUSupport.h:401
int m_analysisIsOk
Definition: SuperLUSupport.h:407
@ ColsAtCompileTime
Definition: SuperLUSupport.h:294
@ MaxColsAtCompileTime
Definition: SuperLUSupport.h:294
superlu_options_t & options()
Definition: SuperLUSupport.h:305
Map< PermutationMatrix< Dynamic, Dynamic, int > > PermutationMap
Definition: SuperLUSupport.h:292
int m_factorizationIsOk
Definition: SuperLUSupport.h:406
IntColVectorType m_p
Definition: SuperLUSupport.h:391
void dumpMemory(Stream &)
Definition: SuperLUSupport.h:337
void analyzePattern(const MatrixType &)
Definition: SuperLUSupport.h:329
void init()
Definition: SuperLUSupport.h:368
Matrix< int, MatrixType::RowsAtCompileTime, 1 > IntColVectorType
Definition: SuperLUSupport.h:291
SuperLUBase(SuperLUBase &)
Definition: SuperLUSupport.h:411
bool m_isInitialized
Definition: SparseSolverBase.h:110
superlu_options_t m_sluOptions
Definition: SuperLUSupport.h:399
Derived & derived()
Definition: SparseSolverBase.h:76
char m_sluEqued
Definition: SuperLUSupport.h:403
void initFactorization(const MatrixType &a)
Definition: SuperLUSupport.h:340
ComputationInfo m_info
Definition: SuperLUSupport.h:405
SparseMatrix< Scalar > LUMatrixType
Definition: SuperLUSupport.h:293
Matrix< int, 1, MatrixType::ColsAtCompileTime > IntRowVectorType
Definition: SuperLUSupport.h:290
SluMatrix m_sluA
Definition: SuperLUSupport.h:395
MatrixType_ MatrixType
Definition: SuperLUSupport.h:285
Index cols() const
Definition: SuperLUSupport.h:302
LUMatrixType m_matrix
Definition: SuperLUSupport.h:394
A sparse direct LU factorization and solver based on the SuperLU library.
Definition: SuperLUSupport.h:431
SuperLU()
Definition: SuperLUSupport.h:448
Base::IntRowVectorType IntRowVectorType
Definition: SuperLUSupport.h:438
void factorize(const MatrixType &matrix)
Definition: SuperLUSupport.h:544
void analyzePattern(const MatrixType &matrix)
Definition: SuperLUSupport.h:463
bool m_extractedDataAreDirty
Definition: SuperLUSupport.h:408
LUMatrixType m_l
Definition: SuperLUSupport.h:389
Base::IntColVectorType IntColVectorType
Definition: SuperLUSupport.h:439
const IntColVectorType & permutationP() const
Definition: SuperLUSupport.h:491
Base::Scalar Scalar
Definition: SuperLUSupport.h:435
Base::RealScalar RealScalar
Definition: SuperLUSupport.h:436
TriangularView< LUMatrixType, Upper > UMatrixType
Definition: SuperLUSupport.h:443
const UMatrixType & matrixU() const
Definition: SuperLUSupport.h:486
IntRowVectorType m_q
Definition: SuperLUSupport.h:392
const LMatrixType & matrixL() const
Definition: SuperLUSupport.h:481
Base::LUMatrixType LUMatrixType
Definition: SuperLUSupport.h:441
void init()
Definition: SuperLUSupport.h:529
LUMatrixType m_u
Definition: SuperLUSupport.h:390
TriangularView< LUMatrixType, Lower|UnitDiag > LMatrixType
Definition: SuperLUSupport.h:442
IntColVectorType m_p
Definition: SuperLUSupport.h:391
~SuperLU()
Definition: SuperLUSupport.h:455
SuperLU(SuperLU &)
Definition: SuperLUSupport.h:540
MatrixType_ MatrixType
Definition: SuperLUSupport.h:434
bool m_isInitialized
Definition: SparseSolverBase.h:110
SuperLUBase< MatrixType_, SuperLU > Base
Definition: SuperLUSupport.h:433
superlu_options_t m_sluOptions
Definition: SuperLUSupport.h:399
Scalar determinant() const
Definition: SuperLUSupport.h:699
const IntRowVectorType & permutationQ() const
Definition: SuperLUSupport.h:496
ComputationInfo m_info
Definition: SuperLUSupport.h:405
SuperLU(const MatrixType &matrix)
Definition: SuperLUSupport.h:450
Base::StorageIndex StorageIndex
Definition: SuperLUSupport.h:437
Base::PermutationMap PermutationMap
Definition: SuperLUSupport.h:440
void _solve_impl(const MatrixBase< Rhs > &b, MatrixBase< Dest > &dest) const
Definition: SuperLUSupport.h:573
Expression of a triangular part in a matrix.
Definition: TriangularMatrix.h:167
Concept for reading and writing characters.
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
EIGEN_DONT_INLINE void compute(Solver &solver, const MatrixType &A)
Definition: dense_solvers.cpp:23
ComputationInfo
Definition: Constants.h:438
@ SelfAdjoint
Definition: Constants.h:227
@ Lower
Definition: Constants.h:211
@ Upper
Definition: Constants.h:213
@ NumericalIssue
Definition: Constants.h:442
@ InvalidInput
Definition: Constants.h:447
@ Success
Definition: Constants.h:440
@ ColMajor
Definition: Constants.h:318
@ RowMajor
Definition: Constants.h:320
const unsigned int RowMajorBit
Definition: Constants.h:70
RealScalar s
Definition: level1_cplx_impl.h:130
const Scalar * a
Definition: level2_cplx_impl.h:32
int info
Definition: level2_cplx_impl.h:39
if(UPLO(*uplo)==INVALID) info
Definition: level3_impl.h:428
char char char int int * k
Definition: level2_impl.h:374
SluMatrix asSluMatrix(MatrixType &mat)
Definition: SuperLUSupport.h:254
Map< SparseMatrix< Scalar, Flags, Index > > map_superlu(SluMatrix &sluMat)
Definition: SuperLUSupport.h:260
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Extend namespace for flags.
Definition: fsi_chan_precond_driver.cc:56
int c
Definition: calibrate.py:100
Definition: Eigen_Colamd.h:49
list x
Definition: plotDoE.py:28
t
Definition: plotPSD.py:36
@ NOTRANS
Definition: oomph_superlu_4.3/superlu_enum_consts.h:21
@ SILU
Definition: oomph_superlu_4.3/superlu_enum_consts.h:28
@ NOREFINE
Definition: oomph_superlu_4.3/superlu_enum_consts.h:23
@ MMD_AT_PLUS_A
Definition: oomph_superlu_4.3/superlu_enum_consts.h:19
@ COLAMD
Definition: oomph_superlu_4.3/superlu_enum_consts.h:19
@ FACTORED
Definition: oomph_superlu_4.3/superlu_enum_consts.h:17
@ NO
Definition: oomph_superlu_4.3/superlu_enum_consts.h:16
@ SLU_TRL
Definition: oomph_superlu_4.3/supermatrix.h:35
@ SLU_TRU
Definition: oomph_superlu_4.3/supermatrix.h:36
@ SLU_GE
Definition: oomph_superlu_4.3/supermatrix.h:32
@ SLU_S
Definition: oomph_superlu_4.3/supermatrix.h:25
@ SLU_Z
Definition: oomph_superlu_4.3/supermatrix.h:28
@ SLU_C
Definition: oomph_superlu_4.3/supermatrix.h:27
@ SLU_D
Definition: oomph_superlu_4.3/supermatrix.h:26
Stype_t
Definition: oomph_superlu_4.3/supermatrix.h:11
@ SLU_NC
Definition: oomph_superlu_4.3/supermatrix.h:12
@ SLU_DN
Definition: oomph_superlu_4.3/supermatrix.h:20
@ SLU_NR
Definition: oomph_superlu_4.3/supermatrix.h:16
#define L_FST_SUPC(superno)
Definition: slu_util.h:76
void StatInit(SuperLUStat_t *)
void Destroy_CompCol_Matrix(SuperMatrix *)
#define L_SUB_START(col)
Definition: slu_util.h:73
void set_default_options(superlu_options_t *options)
#define L_NZ_START(col)
Definition: slu_util.h:75
#define L_SUB(ptr)
Definition: slu_util.h:74
void StatFree(SuperLUStat_t *)
#define U_NZ_START(col)
Definition: slu_util.h:77
#define U_SUB(ptr)
Definition: slu_util.h:78
void Destroy_SuperNode_Matrix(SuperMatrix *)
#define DROP_BASIC
Definition: slu_util.h:95
void ilu_set_default_options(superlu_options_t *options)
static void run(MatrixType &mat, SluMatrix &res)
Definition: SuperLUSupport.h:206
Matrix< Scalar, Rows, Cols, Options, MRows, MCols > MatrixType
Definition: SuperLUSupport.h:205
Derived MatrixType
Definition: SuperLUSupport.h:222
static void run(MatrixType &mat, SluMatrix &res)
Definition: SuperLUSupport.h:223
Definition: SuperLUSupport.h:92
Definition: SuperLUSupport.h:101
void * values
Definition: SuperLUSupport.h:121
SluMatrix & operator=(const SluMatrix &other)
Definition: SuperLUSupport.h:109
SluMatrix()
Definition: SuperLUSupport.h:102
SluMatrix(const SluMatrix &other)
Definition: SuperLUSupport.h:104
static SluMatrix Map(SparseMatrixBase< MatrixType > &a_mat)
Definition: SuperLUSupport.h:170
void setScalarType()
Definition: SuperLUSupport.h:137
struct Eigen::SluMatrix::@890 storage
int lda
Definition: SuperLUSupport.h:119
int nnz
Definition: SuperLUSupport.h:118
int * outerInd
Definition: SuperLUSupport.h:123
int * innerInd
Definition: SuperLUSupport.h:122
void setStorageType(Stype_t t)
Definition: SuperLUSupport.h:126
static SluMatrix Map(MatrixBase< MatrixType > &_mat)
Definition: SuperLUSupport.h:152
Definition: slu_util.h:290
Definition: oomph_superlu_4.3/supermatrix.h:43
Mtype_t Mtype
Definition: oomph_superlu_4.3/supermatrix.h:47
void * Store
Definition: oomph_superlu_4.3/supermatrix.h:51
int_t nrow
Definition: oomph_superlu_4.3/supermatrix.h:49
Stype_t Stype
Definition: oomph_superlu_4.3/supermatrix.h:44
int_t ncol
Definition: oomph_superlu_4.3/supermatrix.h:50
Dtype_t Dtype
Definition: oomph_superlu_4.3/supermatrix.h:46
Definition: TutorialInplaceLU.cpp:2
Definition: slu_util.h:246
trans_t Trans
Definition: slu_util.h:250
yes_no_t ConditionNumber
Definition: slu_util.h:255
yes_no_t PrintStat
Definition: slu_util.h:268
colperm_t ColPerm
Definition: slu_util.h:249
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2