|
@@ -394,8 +394,8 @@ namespace Lemma {
|
394
|
394
|
|
395
|
395
|
#ifdef HAVE_SUPERLU
|
396
|
396
|
template<>
|
397
|
|
- void EMSchur3D< Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::BuildCDirectSolver() {
|
398
|
|
- CSolver = new Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
|
|
397
|
+ void EMSchur3D< Eigen::SuperLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR> > >::BuildCDirectSolver() {
|
|
398
|
+ CSolver = new Eigen::SuperLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR> > [Omegas.size()];
|
399
|
399
|
|
400
|
400
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
401
|
401
|
jsw_timer timer;
|
|
@@ -434,8 +434,8 @@ namespace Lemma {
|
434
|
434
|
#endif
|
435
|
435
|
|
436
|
436
|
template<>
|
437
|
|
- void EMSchur3D< Eigen::SparseLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::COLAMDOrdering<int> > >::BuildCDirectSolver() {
|
438
|
|
- CSolver = new Eigen::SparseLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::COLAMDOrdering<int> > [Omegas.size()];
|
|
437
|
+ void EMSchur3D< Eigen::SparseLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::COLAMDOrdering<int> > >::BuildCDirectSolver() {
|
|
438
|
+ CSolver = new Eigen::SparseLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::COLAMDOrdering<int> > [Omegas.size()];
|
439
|
439
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
440
|
440
|
jsw_timer timer;
|
441
|
441
|
timer.begin();
|
|
@@ -464,8 +464,8 @@ namespace Lemma {
|
464
|
464
|
|
465
|
465
|
#ifdef HAVE_PARDISO
|
466
|
466
|
template<>
|
467
|
|
- void EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::BuildCDirectSolver() {
|
468
|
|
- CSolver = new Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
|
|
467
|
+ void EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR> > >::BuildCDirectSolver() {
|
|
468
|
+ CSolver = new Eigen::PardisoLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR> > [Omegas.size()];
|
469
|
469
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
470
|
470
|
jsw_timer timer;
|
471
|
471
|
timer.begin();
|
|
@@ -488,8 +488,8 @@ namespace Lemma {
|
488
|
488
|
}
|
489
|
489
|
|
490
|
490
|
template<>
|
491
|
|
- void EMSchur3D< Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Symmetric > >::BuildCDirectSolver() {
|
492
|
|
- CSolver = new Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Symmetric > [Omegas.size()];
|
|
491
|
+ void EMSchur3D< Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Symmetric > >::BuildCDirectSolver() {
|
|
492
|
+ CSolver = new Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Symmetric > [Omegas.size()];
|
493
|
493
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
494
|
494
|
jsw_timer timer;
|
495
|
495
|
timer.begin();
|
|
@@ -518,8 +518,8 @@ namespace Lemma {
|
518
|
518
|
#ifdef HAVE_UMFPACK
|
519
|
519
|
// Umfpack only seems to work when LOWER and UPPER are set to 1. Workarounds this have not been found.
|
520
|
520
|
template<>
|
521
|
|
- void EMSchur3D< Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::BuildCDirectSolver() {
|
522
|
|
- CSolver = new Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
|
|
521
|
+ void EMSchur3D< Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR> > >::BuildCDirectSolver() {
|
|
522
|
+ CSolver = new Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR> > [Omegas.size()];
|
523
|
523
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
524
|
524
|
jsw_timer timer;
|
525
|
525
|
timer.begin();
|
|
@@ -549,8 +549,8 @@ namespace Lemma {
|
549
|
549
|
#endif
|
550
|
550
|
|
551
|
551
|
// template<>
|
552
|
|
-// void EMSchur3D< Eigen::CholmodSupernodalLLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
|
553
|
|
-// CSolver = new Eigen::CholmodSupernodalLLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > [Omegas.size()];
|
|
552
|
+// void EMSchur3D< Eigen::CholmodSupernodalLLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > > ::BuildCDirectSolver() {
|
|
553
|
+// CSolver = new Eigen::CholmodSupernodalLLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > [Omegas.size()];
|
554
|
554
|
// for (int iw=0; iw<Omegas.size(); ++iw) {
|
555
|
555
|
// Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
556
|
556
|
// jsw_timer timer;
|
|
@@ -570,8 +570,8 @@ namespace Lemma {
|
570
|
570
|
// }
|
571
|
571
|
|
572
|
572
|
// template<>
|
573
|
|
-// void EMSchur3D< Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::NaturalOrdering<int> > > ::BuildCDirectSolver() {
|
574
|
|
-// CSolver = new Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::NaturalOrdering<int> > [Omegas.size()];
|
|
573
|
+// void EMSchur3D< Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::NaturalOrdering<int> > > ::BuildCDirectSolver() {
|
|
574
|
+// CSolver = new Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::NaturalOrdering<int> > [Omegas.size()];
|
575
|
575
|
// for (int iw=0; iw<Omegas.size(); ++iw) {
|
576
|
576
|
// Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
577
|
577
|
// jsw_timer timer;
|
|
@@ -591,8 +591,8 @@ namespace Lemma {
|
591
|
591
|
// }
|
592
|
592
|
//
|
593
|
593
|
// template<>
|
594
|
|
-// void EMSchur3D< Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > > ::BuildCDirectSolver() {
|
595
|
|
-// CSolver = new Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > [Omegas.size()];
|
|
594
|
+// void EMSchur3D< Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::AMDOrdering<int> > > ::BuildCDirectSolver() {
|
|
595
|
+// CSolver = new Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::AMDOrdering<int> > [Omegas.size()];
|
596
|
596
|
// for (int iw=0; iw<Omegas.size(); ++iw) {
|
597
|
597
|
// //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
598
|
598
|
// jsw_timer timer;
|
|
@@ -612,8 +612,8 @@ namespace Lemma {
|
612
|
612
|
// }
|
613
|
613
|
//
|
614
|
614
|
// template<>
|
615
|
|
-// void EMSchur3D< Eigen::CSymSimplicialLDLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > > ::BuildCDirectSolver() {
|
616
|
|
-// CSolver = new Eigen::CSymSimplicialLDLT< Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > [Omegas.size()];
|
|
615
|
+// void EMSchur3D< Eigen::CSymSimplicialLDLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::AMDOrdering<int> > > ::BuildCDirectSolver() {
|
|
616
|
+// CSolver = new Eigen::CSymSimplicialLDLT< Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::AMDOrdering<int> > [Omegas.size()];
|
617
|
617
|
// for (int iw=0; iw<Omegas.size(); ++iw) {
|
618
|
618
|
// Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
619
|
619
|
// jsw_timer timer;
|
|
@@ -634,8 +634,8 @@ namespace Lemma {
|
634
|
634
|
|
635
|
635
|
|
636
|
636
|
template<>
|
637
|
|
- void EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::IncompleteLUT<Complex> > > ::BuildCDirectSolver() {
|
638
|
|
- CSolver = new Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::IncompleteLUT<Complex> > [Omegas.size()];
|
|
637
|
+ void EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::IncompleteLUT<Complex> > > ::BuildCDirectSolver() {
|
|
638
|
+ CSolver = new Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::IncompleteLUT<Complex> > [Omegas.size()];
|
639
|
639
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
640
|
640
|
Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
641
|
641
|
CSolver[iw].preconditioner().setDroptol(1e-6); //1e-5); // 1e-12
|
|
@@ -659,8 +659,8 @@ namespace Lemma {
|
659
|
659
|
}
|
660
|
660
|
|
661
|
661
|
template<>
|
662
|
|
- void EMSchur3D< Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > > ::BuildCDirectSolver() {
|
663
|
|
- CSolver = new Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
|
|
662
|
+ void EMSchur3D< Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, SPARSEMAJOR> > > ::BuildCDirectSolver() {
|
|
663
|
+ CSolver = new Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, SPARSEMAJOR> > [Omegas.size()];
|
664
|
664
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
665
|
665
|
Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
666
|
666
|
jsw_timer timer;
|
|
@@ -680,8 +680,8 @@ namespace Lemma {
|
680
|
680
|
}
|
681
|
681
|
|
682
|
682
|
template<>
|
683
|
|
- void EMSchur3D< Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > > ::BuildCDirectSolver() {
|
684
|
|
- CSolver = new Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
|
|
683
|
+ void EMSchur3D< Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, SPARSEMAJOR> > > ::BuildCDirectSolver() {
|
|
684
|
+ CSolver = new Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, SPARSEMAJOR> > [Omegas.size()];
|
685
|
685
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
686
|
686
|
Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
687
|
687
|
jsw_timer timer;
|
|
@@ -701,8 +701,8 @@ namespace Lemma {
|
701
|
701
|
}
|
702
|
702
|
|
703
|
703
|
template<>
|
704
|
|
- void EMSchur3D< Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
|
705
|
|
- CSolver = new Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > [Omegas.size()];
|
|
704
|
+ void EMSchur3D< Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > > ::BuildCDirectSolver() {
|
|
705
|
+ CSolver = new Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > [Omegas.size()];
|
706
|
706
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
707
|
707
|
//Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
708
|
708
|
jsw_timer timer;
|
|
@@ -722,8 +722,8 @@ namespace Lemma {
|
722
|
722
|
}
|
723
|
723
|
|
724
|
724
|
template<>
|
725
|
|
- void EMSchur3D< Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::IncompleteCholesky<Complex> > > ::BuildCDirectSolver() {
|
726
|
|
- CSolver = new Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower, Eigen::IncompleteCholesky<Complex> > [Omegas.size()];
|
|
725
|
+ void EMSchur3D< Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::IncompleteCholesky<Complex> > > ::BuildCDirectSolver() {
|
|
726
|
+ CSolver = new Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower, Eigen::IncompleteCholesky<Complex> > [Omegas.size()];
|
727
|
727
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
728
|
728
|
//Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
729
|
729
|
jsw_timer timer;
|
|
@@ -743,8 +743,8 @@ namespace Lemma {
|
743
|
743
|
}
|
744
|
744
|
|
745
|
745
|
// template<>
|
746
|
|
-// void EMSchur3D< Eigen::PastixLLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
|
747
|
|
-// CSolver = new Eigen::PastixLLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > [Omegas.size()];
|
|
746
|
+// void EMSchur3D< Eigen::PastixLLT<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > > ::BuildCDirectSolver() {
|
|
747
|
+// CSolver = new Eigen::PastixLLT<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > [Omegas.size()];
|
748
|
748
|
// //MPI_Init(NULL, NULL);
|
749
|
749
|
// for (int iw=0; iw<Omegas.size(); ++iw) {
|
750
|
750
|
// //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
|
@@ -765,8 +765,8 @@ namespace Lemma {
|
765
|
765
|
// }
|
766
|
766
|
//
|
767
|
767
|
// template<>
|
768
|
|
-// void EMSchur3D< Eigen::PastixLDLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
|
769
|
|
-// CSolver = new Eigen::PastixLDLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Lower > [Omegas.size()];
|
|
768
|
+// void EMSchur3D< Eigen::PastixLDLT<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > > ::BuildCDirectSolver() {
|
|
769
|
+// CSolver = new Eigen::PastixLDLT<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, Eigen::Lower > [Omegas.size()];
|
770
|
770
|
// //MPI_Init(NULL, NULL);
|
771
|
771
|
// for (int iw=0; iw<Omegas.size(); ++iw) {
|
772
|
772
|
// //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
|
|
@@ -790,8 +790,8 @@ namespace Lemma {
|
790
|
790
|
|
791
|
791
|
#ifdef HAVE_PASTIX
|
792
|
792
|
template<>
|
793
|
|
- void EMSchur3D< Eigen::PastixLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, true > > ::BuildCDirectSolver() {
|
794
|
|
- CSolver = new Eigen::PastixLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, true > [Omegas.size()];
|
|
793
|
+ void EMSchur3D< Eigen::PastixLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, true > > ::BuildCDirectSolver() {
|
|
794
|
+ CSolver = new Eigen::PastixLU<Eigen::SparseMatrix<Complex, SPARSEMAJOR>, true > [Omegas.size()];
|
795
|
795
|
|
796
|
796
|
for (int iw=0; iw<Omegas.size(); ++iw) {
|
797
|
797
|
jsw_timer timer;
|