Go to the documentation of this file.
32 #ifndef EIGEN_PARDISOSUPPORT_H
33 #define EIGEN_PARDISOSUPPORT_H
38 template<
typename _MatrixType,
int Options=Upper>
class PardisoLLT;
39 template<
typename _MatrixType,
int Options=Upper>
class PardisoLDLT;
43 template<
typename IndexType>
46 static IndexType
run( _MKL_DSS_HANDLE_t
pt, IndexType maxfct, IndexType mnum, IndexType
type, IndexType phase, IndexType
n,
void *
a,
47 IndexType *ia, IndexType *ja, IndexType *
perm, IndexType nrhs, IndexType *iparm, IndexType msglvl,
void *
b,
void *
x)
50 ::pardiso(
pt, &maxfct, &mnum, &
type, &phase, &
n,
a, ia, ja,
perm, &nrhs, iparm, &msglvl,
b,
x, &
error);
62 ::pardiso_64(
pt, &maxfct, &mnum, &
type, &phase, &
n,
a, ia, ja,
perm, &nrhs, iparm, &msglvl,
b,
x, &
error);
69 template<
typename _MatrixType>
78 template<
typename _MatrixType,
int Options>
87 template<
typename _MatrixType,
int Options>
98 template<
class Derived>
179 template<
typename Rhs,
typename Dest>
187 internal::pardiso_run_selector<StorageIndex>::run(
m_pt, 1, 1,
m_type, -1, internal::convert_index<StorageIndex>(
m_size),0, 0, 0,
m_perm.
data(), 0,
207 m_iparm[10] = symmetric ? 0 : 1;
209 m_iparm[12] = symmetric ? 0 : 1;
259 template<
class Derived>
266 m_perm.setZero(m_size);
267 derived().getMatrix(
a);
271 m_matrix.valuePtr(), m_matrix.outerIndexPtr(), m_matrix.innerIndexPtr(),
272 m_perm.data(), 0, m_iparm.data(), m_msglvl,
NULL,
NULL);
273 manageErrorCode(
error);
274 m_analysisIsOk =
true;
275 m_factorizationIsOk =
true;
276 m_isInitialized =
true;
280 template<
class Derived>
287 m_perm.setZero(m_size);
288 derived().getMatrix(
a);
292 m_matrix.valuePtr(), m_matrix.outerIndexPtr(), m_matrix.innerIndexPtr(),
293 m_perm.data(), 0, m_iparm.data(), m_msglvl,
NULL,
NULL);
295 manageErrorCode(
error);
296 m_analysisIsOk =
true;
297 m_factorizationIsOk =
false;
298 m_isInitialized =
true;
302 template<
class Derived>
305 eigen_assert(m_analysisIsOk &&
"You must first call analyzePattern()");
308 derived().getMatrix(
a);
312 m_matrix.valuePtr(), m_matrix.outerIndexPtr(), m_matrix.innerIndexPtr(),
313 m_perm.data(), 0, m_iparm.data(), m_msglvl,
NULL,
NULL);
315 manageErrorCode(
error);
316 m_factorizationIsOk =
true;
320 template<
class Derived>
321 template<
typename BDerived,
typename XDerived>
351 if(rhs_ptr ==
x.derived().data())
354 rhs_ptr = tmp.
data();
359 m_matrix.valuePtr(), m_matrix.outerIndexPtr(), m_matrix.innerIndexPtr(),
360 m_perm.data(), internal::convert_index<StorageIndex>(nrhs), m_iparm.data(), m_msglvl,
361 rhs_ptr,
x.derived().data());
363 manageErrorCode(
error);
384 template<
typename MatrixType>
440 template<
typename MatrixType,
int _UpLo>
441 class PardisoLLT :
public PardisoImpl< PardisoLLT<MatrixType,_UpLo> >
477 m_matrix.template selfadjointView<Upper>() =
matrix.template selfadjointView<UpLo>().twistedBy(p_null);
503 template<
typename MatrixType,
int Options>
504 class PardisoLDLT :
public PardisoImpl< PardisoLDLT<MatrixType,Options> >
538 m_matrix.template selfadjointView<Upper>() =
matrix.template selfadjointView<UpLo>().twistedBy(p_null);
545 #endif // EIGEN_PARDISOSUPPORT_H
Derived & compute(const MatrixType &matrix)
idx_t idx_t idx_t idx_t idx_t * perm
SparseMatrixType m_matrix
Namespace containing all symbols from the Eigen library.
Matrix< StorageIndex, 1, MatrixType::ColsAtCompileTime > IntRowVectorType
PardisoLDLT(const MatrixType &matrix)
Traits::StorageIndex StorageIndex
PardisoLLT(const MatrixType &matrix)
void _solve_impl(const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
SparseMatrixType m_matrix
Matrix< StorageIndex, MatrixType::RowsAtCompileTime, 1 > IntColVectorType
Traits::MatrixType MatrixType
void _solve_impl(const MatrixBase< Rhs > &b, MatrixBase< Dest > &dest) const
A sparse direct Cholesky (LDLT) factorization and solver based on the PARDISO library.
_MatrixType::RealScalar RealScalar
Base::RealScalar RealScalar
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy x
const unsigned int RowMajorBit
_MatrixType::Scalar Scalar
static const Point3 pt(1.0, 2.0, 3.0)
PardisoImpl< PardisoLU > Base
_MatrixType::Scalar Scalar
void getMatrix(const MatrixType &matrix)
_MatrixType::StorageIndex StorageIndex
void pardisoInit(int type)
static IndexType run(_MKL_DSS_HANDLE_t pt, IndexType maxfct, IndexType mnum, IndexType type, IndexType phase, IndexType n, void *a, IndexType *ia, IndexType *ja, IndexType *perm, IndexType nrhs, IndexType *iparm, IndexType msglvl, void *b, void *x)
Derived & analyzePattern(const MatrixType &matrix)
PardisoLU(const MatrixType &matrix)
Base::StorageIndex StorageIndex
void pardisoInit(int type)
void manageErrorCode(Index error) const
Array< StorageIndex, 64, 1, DontAlign > ParameterType
_MatrixType::StorageIndex StorageIndex
void getMatrix(const MatrixType &matrix)
void getMatrix(const MatrixType &matrix)
const Solve< Derived, Rhs > solve(const MatrixBase< Rhs > &b) const
PardisoImpl< PardisoLDLT< MatrixType, Options > > Base
SparseSolverBase< Derived > Base
void pardisoInit(int type)
ComputationInfo info() const
Reports whether previous computation was successful.
EIGEN_DONT_INLINE void compute(Solver &solver, const MatrixType &A)
Traits::RealScalar RealScalar
Matrix< Scalar, Dynamic, 1 > VectorType
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
A sparse direct LU factorization and solver based on the PARDISO library.
NumTraits< Scalar >::Real RealScalar
PardisoImpl< PardisoLLT< MatrixType, _UpLo > > Base
Base::RealScalar RealScalar
A base class for sparse solvers.
SparseMatrixType m_matrix
Base::StorageIndex StorageIndex
_MatrixType::RealScalar RealScalar
internal::pardiso_traits< Derived > Traits
EIGEN_DEVICE_FUNC const EIGEN_STRONG_INLINE Scalar * data() const
_MatrixType::StorageIndex StorageIndex
ParameterType & pardisoParameterArray()
EIGEN_DEVICE_FUNC Derived & setZero(Index size)
Base class for all dense matrices, vectors, and expressions.
SparseMatrix< Scalar, RowMajor, StorageIndex > SparseMatrixType
_MatrixType::RealScalar RealScalar
Base::RealScalar RealScalar
Derived & factorize(const MatrixType &matrix)
_MatrixType::Scalar Scalar
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
void pardisoInit(int type)
A sparse direct Cholesky (LLT) factorization and solver based on the PARDISO library.
SparseMatrixType m_matrix
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
static IndexType run(_MKL_DSS_HANDLE_t pt, IndexType maxfct, IndexType mnum, IndexType type, IndexType phase, IndexType n, void *a, IndexType *ia, IndexType *ja, IndexType *perm, IndexType nrhs, IndexType *iparm, IndexType msglvl, void *b, void *x)
gtsam
Author(s):
autogenerated on Sat Nov 16 2024 04:03:30