Trevor Irons 6 лет назад
Родитель
Сommit
64c90e27a3
4 измененных файлов: 51 добавлений и 47 удалений
  1. 10
    8
      examples/EMSchur3D.cpp
  2. 36
    34
      include/EMSchur3D.h
  3. 4
    4
      include/EMSchur3DBase.h
  4. 1
    1
      src/EMSchur3DBase.cpp

+ 10
- 8
examples/EMSchur3D.cpp Просмотреть файл

@@ -29,23 +29,24 @@ using namespace Lemma;
29 29
 int main( int argc, char** argv ) {
30 30
 
31 31
     // BiCGSTAB Diagonal preconditioner
32
-    //auto EM3D = EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::IncompleteLUT<Complex> > >::NewSP();
33
-    //auto EM3D = EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::NewSP();
32
+    //auto EM3D = EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::IncompleteLUT<Complex> > >::NewSP();
33
+
34
+    auto EM3D = EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::NewSP();
34 35
 
35 36
     // SUPERLU
36
-    //auto EM3D = EMSchur3D< Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::NewSP();
37
+    //auto EM3D = EMSchur3D< Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::NewSP();
37 38
 
38
-    //auto EM3D = EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::NewSP();
39
-    //auto EM3D = EMSchur3D< Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Symmetric&Eigen::Lower > >::NewSP();
39
+    //auto EM3D = EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::NewSP();
40
+    //auto EM3D = EMSchur3D< Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, Eigen::Symmetric&Eigen::Lower > >::NewSP();
40 41
 
41 42
     // Eigen built-in
42
-    auto EM3D = EMSchur3D< Eigen::SparseLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::NewSP();
43
+    //auto EM3D = EMSchur3D< Eigen::SparseLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::NewSP();
43 44
 
44 45
     // UmfPack
45
-    //auto EM3D = EMSchur3D< Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::NewSP();
46
+    //auto EM3D = EMSchur3D< Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::NewSP();
46 47
 
47 48
     // PaStiX
48
-    //auto EM3D = EMSchur3D< Eigen::PastixLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, true > >::NewSP();
49
+    //auto EM3D = EMSchur3D< Eigen::PastixLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor>, true > >::NewSP();
49 50
 
50 51
 
51 52
     if (argc < 3) {
@@ -114,6 +115,7 @@ int main( int argc, char** argv ) {
114 115
     EM3D->LoadMeshToolsConductivityModel( argv[3] );
115 116
     EM3D->SetResFileName(argv[5]);
116 117
     //EM3D->SetCSolver( Lemma::SPARSELU ); // Lemma::BiCGSTAB );
118
+
117 119
     EM3D->Solve();
118 120
 
119 121
     exit(EXIT_SUCCESS);

+ 36
- 34
include/EMSchur3D.h Просмотреть файл

@@ -231,6 +231,8 @@ namespace Lemma {
231 231
         /////////////////////////////////////////
232 232
         // Solve for RHS
233 233
         //CSolver[iw].setMaxIterations(750);
234
+    Eigen::initParallel();
235
+    std::cout << "Eigen using " << Eigen::nbThreads( ) << " threads" << std::endl;
234 236
         VectorXcr A = CSolver[iw].solve(Se);
235 237
 
236 238
 //         // Solve Real system instead
@@ -392,8 +394,8 @@ namespace Lemma {
392 394
 
393 395
 #ifdef HAVE_SUPERLU
394 396
     template<>
395
-    void EMSchur3D< Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::BuildCDirectSolver() {
396
-        CSolver = new Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > [Omegas.size()];
397
+    void EMSchur3D< Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::BuildCDirectSolver() {
398
+        CSolver = new Eigen::SuperLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
397 399
 
398 400
         for (int iw=0; iw<Omegas.size(); ++iw) {
399 401
             jsw_timer timer;
@@ -432,8 +434,8 @@ namespace Lemma {
432 434
 #endif
433 435
 
434 436
     template<>
435
-    void EMSchur3D< Eigen::SparseLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::COLAMDOrdering<int> > >::BuildCDirectSolver() {
436
-        CSolver = new Eigen::SparseLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::COLAMDOrdering<int> > [Omegas.size()];
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 439
         for (int iw=0; iw<Omegas.size(); ++iw) {
438 440
             jsw_timer timer;
439 441
             timer.begin();
@@ -462,8 +464,8 @@ namespace Lemma {
462 464
 
463 465
 #ifdef HAVE_PARDISO
464 466
     template<>
465
-    void EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::BuildCDirectSolver() {
466
-        CSolver = new Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > [Omegas.size()];
467
+    void EMSchur3D< Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::BuildCDirectSolver() {
468
+        CSolver = new Eigen::PardisoLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
467 469
         for (int iw=0; iw<Omegas.size(); ++iw) {
468 470
             jsw_timer timer;
469 471
             timer.begin();
@@ -486,8 +488,8 @@ namespace Lemma {
486 488
     }
487 489
 
488 490
     template<>
489
-    void EMSchur3D< Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Symmetric > >::BuildCDirectSolver() {
490
-        CSolver = new Eigen::PardisoLDLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Symmetric > [Omegas.size()];
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 493
         for (int iw=0; iw<Omegas.size(); ++iw) {
492 494
             jsw_timer timer;
493 495
             timer.begin();
@@ -516,8 +518,8 @@ namespace Lemma {
516 518
 #ifdef HAVE_UMFPACK
517 519
     // Umfpack only seems to work when LOWER and UPPER are set to 1. Workarounds this have not been found.
518 520
     template<>
519
-    void EMSchur3D< Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > >::BuildCDirectSolver() {
520
-        CSolver = new Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor> > [Omegas.size()];
521
+    void EMSchur3D< Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > >::BuildCDirectSolver() {
522
+        CSolver = new Eigen::UmfPackLU<Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
521 523
         for (int iw=0; iw<Omegas.size(); ++iw) {
522 524
             jsw_timer timer;
523 525
             timer.begin();
@@ -547,8 +549,8 @@ namespace Lemma {
547 549
 #endif
548 550
 
549 551
 //     template<>
550
-//     void EMSchur3D< Eigen::CholmodSupernodalLLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
551
-//         CSolver = new Eigen::CholmodSupernodalLLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > [Omegas.size()];
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 554
 //         for (int iw=0; iw<Omegas.size(); ++iw) {
553 555
 //             Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
554 556
 //             jsw_timer timer;
@@ -568,8 +570,8 @@ namespace Lemma {
568 570
 //     }
569 571
 
570 572
 //     template<>
571
-//     void EMSchur3D< Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::NaturalOrdering<int> > > ::BuildCDirectSolver() {
572
-//         CSolver = new Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::NaturalOrdering<int> > [Omegas.size()];
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 575
 //         for (int iw=0; iw<Omegas.size(); ++iw) {
574 576
 //             Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
575 577
 //             jsw_timer timer;
@@ -589,8 +591,8 @@ namespace Lemma {
589 591
 //     }
590 592
 //
591 593
 //     template<>
592
-//     void EMSchur3D< Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > > ::BuildCDirectSolver() {
593
-//         CSolver = new Eigen::CSymSimplicialLLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > [Omegas.size()];
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 596
 //         for (int iw=0; iw<Omegas.size(); ++iw) {
595 597
 //             //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
596 598
 //             jsw_timer timer;
@@ -610,8 +612,8 @@ namespace Lemma {
610 612
 //     }
611 613
 //
612 614
 //     template<>
613
-//     void EMSchur3D< Eigen::CSymSimplicialLDLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > > ::BuildCDirectSolver() {
614
-//         CSolver = new Eigen::CSymSimplicialLDLT< Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::AMDOrdering<int> > [Omegas.size()];
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 617
 //         for (int iw=0; iw<Omegas.size(); ++iw) {
616 618
 //             Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
617 619
 //             jsw_timer timer;
@@ -632,8 +634,8 @@ namespace Lemma {
632 634
 
633 635
 
634 636
     template<>
635
-    void EMSchur3D< Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::IncompleteLUT<Complex> > > ::BuildCDirectSolver() {
636
-        CSolver = new Eigen::BiCGSTAB<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::IncompleteLUT<Complex> > [Omegas.size()];
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 639
         for (int iw=0; iw<Omegas.size(); ++iw) {
638 640
             Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
639 641
             CSolver[iw].preconditioner().setDroptol(1e-6);       //1e-5);      // 1e-12
@@ -657,8 +659,8 @@ namespace Lemma {
657 659
     }
658 660
 
659 661
     template<>
660
-    void EMSchur3D< Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, Eigen::ColMajor> > > ::BuildCDirectSolver() {
661
-        CSolver = new Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, Eigen::ColMajor> > [Omegas.size()];
662
+    void EMSchur3D< Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > > ::BuildCDirectSolver() {
663
+        CSolver = new Eigen::BiCGSTAB< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
662 664
         for (int iw=0; iw<Omegas.size(); ++iw) {
663 665
             Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
664 666
             jsw_timer timer;
@@ -678,8 +680,8 @@ namespace Lemma {
678 680
     }
679 681
 
680 682
     template<>
681
-    void EMSchur3D< Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, Eigen::ColMajor> > > ::BuildCDirectSolver() {
682
-        CSolver = new Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, Eigen::ColMajor> > [Omegas.size()];
683
+    void EMSchur3D< Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > > ::BuildCDirectSolver() {
684
+        CSolver = new Eigen::LeastSquaresConjugateGradient< Eigen::SparseMatrix<Complex, Eigen::RowMajor> > [Omegas.size()];
683 685
         for (int iw=0; iw<Omegas.size(); ++iw) {
684 686
             Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
685 687
             jsw_timer timer;
@@ -699,8 +701,8 @@ namespace Lemma {
699 701
     }
700 702
 
701 703
     template<>
702
-    void EMSchur3D<   Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
703
-        CSolver = new Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > [Omegas.size()];
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 706
         for (int iw=0; iw<Omegas.size(); ++iw) {
705 707
             //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
706 708
             jsw_timer timer;
@@ -720,8 +722,8 @@ namespace Lemma {
720 722
     }
721 723
 
722 724
     template<>
723
-    void EMSchur3D<   Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::IncompleteCholesky<Complex> > > ::BuildCDirectSolver() {
724
-        CSolver = new Eigen::ConjugateGradient<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower, Eigen::IncompleteCholesky<Complex> > [Omegas.size()];
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 727
         for (int iw=0; iw<Omegas.size(); ++iw) {
726 728
             //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
727 729
             jsw_timer timer;
@@ -741,8 +743,8 @@ namespace Lemma {
741 743
     }
742 744
 
743 745
 //     template<>
744
-//     void EMSchur3D<   Eigen::PastixLLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
745
-//         CSolver = new Eigen::PastixLLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > [Omegas.size()];
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 748
 //         //MPI_Init(NULL, NULL);
747 749
 //         for (int iw=0; iw<Omegas.size(); ++iw) {
748 750
 //             //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
@@ -763,8 +765,8 @@ namespace Lemma {
763 765
 //     }
764 766
 //
765 767
 //     template<>
766
-//     void EMSchur3D<   Eigen::PastixLDLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > > ::BuildCDirectSolver() {
767
-//         CSolver = new Eigen::PastixLDLT<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, Eigen::Lower > [Omegas.size()];
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 770
 //         //MPI_Init(NULL, NULL);
769 771
 //         for (int iw=0; iw<Omegas.size(); ++iw) {
770 772
 //             //Csym = Cvec[iw].selfadjointView<Eigen::Lower>();
@@ -788,8 +790,8 @@ namespace Lemma {
788 790
 
789 791
 #ifdef HAVE_PASTIX
790 792
     template<>
791
-    void EMSchur3D<   Eigen::PastixLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, true > > ::BuildCDirectSolver() {
792
-        CSolver = new Eigen::PastixLU<Eigen::SparseMatrix<Complex, Eigen::ColMajor>, true > [Omegas.size()];
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 795
 
794 796
         for (int iw=0; iw<Omegas.size(); ++iw) {
795 797
             jsw_timer timer;

+ 4
- 4
include/EMSchur3DBase.h Просмотреть файл

@@ -359,13 +359,13 @@ class EMSchur3DBase : public LemmaObject {
359 359
 
360 360
     /** Matrix objects representing discrete operators
361 361
      */
362
-    Eigen::SparseMatrix<Complex, Eigen::ColMajor>*                  Cvec;
363
-    Eigen::SparseMatrix<Complex, Eigen::ColMajor>                   D;
362
+    Eigen::SparseMatrix<Complex, Eigen::RowMajor>*                  Cvec;
363
+    Eigen::SparseMatrix<Complex, Eigen::RowMajor>                   D;
364 364
 
365 365
     /** Squeezed matrices for reduced phi grid
366 366
      */
367
-    Eigen::SparseMatrix<Complex, Eigen::ColMajor>*                  Cvec_s;
368
-    Eigen::SparseMatrix<Complex, Eigen::ColMajor>                   D_s;
367
+    Eigen::SparseMatrix<Complex, Eigen::RowMajor>*                  Cvec_s;
368
+    Eigen::SparseMatrix<Complex, Eigen::RowMajor>                   D_s;
369 369
 
370 370
     /** number of cells in x, set when RectilinearGrid is attached */
371 371
     int nx;

+ 1
- 1
src/EMSchur3DBase.cpp Просмотреть файл

@@ -942,7 +942,7 @@ namespace Lemma {
942 942
         // First set up grid stuff
943 943
         if (Cvec) delete [] Cvec;
944 944
         //if (CSolver) delete [] CSolver;
945
-        Cvec    = new Eigen::SparseMatrix<Complex, Eigen::ColMajor> [Omegas.size()];
945
+        Cvec    = new Eigen::SparseMatrix<Complex, Eigen::RowMajor> [Omegas.size()];
946 946
 
947 947
         //#ifdef LEMMAUSEOMP
948 948
         //#pragma omp parallel for schedule(static, 1)

Загрузка…
Отмена
Сохранить