Registered Member
|
Dear Eigens,
I have a problem of using Eigen::PardisoLDLT. In my code, 1. typedef std::complex<double> Dcomplex; typedef Eigen::SparseMatrix<Dcomplex, Eigen::RowMajor> DSparseMatrix; // row-major 2. I define a solver as Eigen::PardisoLDLT< DSparseMatrix, Eigen::Symmetric> solver; By using icpc (composer_xe_2011_sp1.8.273/composer_xe_2011_sp1.8.273/bin/intel64/icpc), I get a error like: ../contrib/eigen-3.1.0-alpha2/Eigen/src/PARDISOSupport/PARDISOSupport.h(100): e rror: incomplete type is not allowed typedef typename internal::pardiso_traits<Derived>::MatrixType MatrixType ; ^ detected during: instantiation of class "Eigen::PardisoImpl<Derived> [with Derived=E igen::PardisoLDLT<EBEM::DSparseMatrix, 32>]" at line 440 instantiation of class "Eigen::PardisoLDLT<MatrixType, Options> [wi th MatrixType=EBEM::DSparseMatrix, Options=32]" at line 100 of "../src/feti_dp. h" My question is that is this function Eigen::PardisoLDLT for symmetric indefinite complex matrix available? Best wishes Zhengyong |
Moderator
|
As explain in the doc, the second template parameter of PardisoLDLT must be Upper or Lower. Symmetric is not allowed here. Actually, here LDLT rather means L.D.L^*, so the matrix is assumed to be selfadjoint.
|
Registered Member
|
Good to know that Eigen has the support for Pardico. Do I need to link against the Pardiso library in order to use it? |
Moderator
|
yes, it's up to the user to make sure the Pardiso headers are available, and to link to MKL:
http://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html |
Registered Member
|
Dear ggael, I used the doc from http://eigen.tuxfamily.org/dox/classEig ... oLDLT.html. It says it is possible of using Symmetric in PardisoLDLT. Maybe I used the wrong doc. template<typename MatrixType, int Options> class Eigen::PardisoLDLT< MatrixType, Options > A sparse direct Cholesky (LDLT) factorization and solver based on the PARDISO library. This class allows to solve for A.X = B sparse linear problems via a LDL^T Cholesky factorization using the Intel MKL PARDISO library. The sparse matrix A is assumed to be selfajoint and positive definite. For complex matrices, A can also be symmetric only, see the Options template parameter. The vectors or matrices X and B can be either dense or sparse. Template Parameters: MatrixType the type of the sparse matrix A, it must be a SparseMatrix<> Options can be any bitwise combination of Upper, Lower, and Symmetric. The default is Upper, meaning only the upper triangular part has to be used. Symmetric can be used for symmetric, non-selfadjoint complex matrices, the default being to assume a selfadjoint matrix. Upper|Lower can be used to tell both triangular parts can be used as input. Thanks a lot for your help Best wishes Zhengyong |
Moderator
|
oh, ok. Looking back at your first post I see you are using the old alpha2 version, could you try the 3.1.1 release.
|
Registered users: Baidu [Spider], Bing [Bot], Google [Bot]