|
@@ -36,7 +36,9 @@
|
36
|
36
|
#include <Eigen/PaStiXSupport>
|
37
|
37
|
#endif
|
38
|
38
|
|
|
39
|
+#ifdef HAVE_PARDISO
|
39
|
40
|
#include <Eigen/PardisoSupport>
|
|
41
|
+#endif
|
40
|
42
|
|
41
|
43
|
//#include "CSymSimplicialCholesky.h"
|
42
|
44
|
|
|
@@ -449,17 +451,17 @@ namespace Lemma {
|
449
|
451
|
std::cout << " done in " << timer.end() / 60. << " [m]" << std::endl;
|
450
|
452
|
}
|
451
|
453
|
}
|
452
|
|
-
|
453
|
|
-// Pardiso
|
|
454
|
+
|
|
455
|
+#ifdef HAVE_PARDISO
|
454
|
456
|
template<>
|
455
|
457
|
void EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::BuildCDirectSolver() {
|
456
|
458
|
CSolver = new Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > [Omegas.size()];
|
457
|
459
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
458
|
460
|
jsw_timer timer;
|
459
|
461
|
timer.begin();
|
460
|
|
-
|
|
462
|
+
|
461
|
463
|
//CSolver[iw].pardisoParameterArray()[2] = 28; // OMP_NUM_THREADS?
|
462
|
|
-
|
|
464
|
+
|
463
|
465
|
/* Complex system */
|
464
|
466
|
std::cout << "PardisoLU pattern analyzing C_" << iw << ",";
|
465
|
467
|
std::cout.flush();
|
|
@@ -481,10 +483,10 @@ namespace Lemma {
|
481
|
483
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
482
|
484
|
jsw_timer timer;
|
483
|
485
|
timer.begin();
|
484
|
|
-
|
|
486
|
+
|
485
|
487
|
//CSolver[iw].pardisoParameterArray()[2] = 28; // OMP_NUM_THREADS?
|
486
|
488
|
//Eigen::SparseMatrix<Complex> Csym = Cvec[iw].selfadjointView< Eigen::Lower >();
|
487
|
|
-
|
|
489
|
+
|
488
|
490
|
/* Complex system */
|
489
|
491
|
std::cout << "PardisoLDLT pattern analyzing C_" << iw << ",";
|
490
|
492
|
std::cout.flush();
|
|
@@ -501,6 +503,7 @@ namespace Lemma {
|
501
|
503
|
std::cout << " done in " << timer.end() / 60. << " [m]" << std::endl;
|
502
|
504
|
}
|
503
|
505
|
}
|
|
506
|
+#endif
|
504
|
507
|
|
505
|
508
|
#ifdef HAVE_UMFPACK
|
506
|
509
|
// Umfpack only seems to work when LOWER and UPPER are set to 1. Workarounds this have not been found.
|