Преглед изворни кода

Compiles with Lemma 0.2, not tested yet

master
T-bone пре 6 година
родитељ
комит
b6185dc902
3 измењених фајлова са 39 додато и 47 уклоњено
  1. 2
    6
      examples/EMSchur3D.cpp
  2. 2
    2
      include/EMSchur3DBase.h
  3. 35
    39
      src/EMSchur3DBase.cpp

+ 2
- 6
examples/EMSchur3D.cpp Прегледај датотеку

18
  */
18
  */
19
 
19
 
20
 #include <LemmaCore>
20
 #include <LemmaCore>
21
-#include "RectilinearGridReader.h"
21
+//#include "RectilinearGridReader.h"
22
 //#include "AEMSurveyReader.h"
22
 //#include "AEMSurveyReader.h"
23
 #include "EMSchur3D.h"
23
 #include "EMSchur3D.h"
24
 //#include "LayeredEarthEMReader.h"
24
 //#include "LayeredEarthEMReader.h"
84
             else exit(EXIT_FAILURE);
84
             else exit(EXIT_FAILURE);
85
 	    }
85
 	    }
86
 
86
 
87
-
88
-    /*
89
     //////////////////////////////////////////////////
87
     //////////////////////////////////////////////////
90
     // And solve
88
     // And solve
91
-    EM3D->SetRectilinearGrid(GridRead->GetGrid());
89
+    EM3D->SetRectilinearGrid( std::static_pointer_cast<RectilinearGrid>( GridRead->GetGrid() ) ); // UGLY!
92
     EM3D->SetLayeredEarthEM( LayEarthRead->GetLayeredEarth() );
90
     EM3D->SetLayeredEarthEM( LayEarthRead->GetLayeredEarth() );
93
     EM3D->SetAEMSurvey( AEMRead->GetSurvey() );
91
     EM3D->SetAEMSurvey( AEMRead->GetSurvey() );
94
     EM3D->LoadMeshToolsConductivityModel( argv[3] );
92
     EM3D->LoadMeshToolsConductivityModel( argv[3] );
95
     EM3D->SetResFileName(argv[5]);
93
     EM3D->SetResFileName(argv[5]);
96
     //EM3D->SetCSolver( Lemma::SPARSELU ); // Lemma::BiCGSTAB );
94
     //EM3D->SetCSolver( Lemma::SPARSELU ); // Lemma::BiCGSTAB );
97
     EM3D->Solve();
95
     EM3D->Solve();
98
-    */
99
-    std::cout << *EM3D;
100
 
96
 
101
     exit(EXIT_SUCCESS);
97
     exit(EXIT_SUCCESS);
102
 }
98
 }

+ 2
- 2
include/EMSchur3DBase.h Прегледај датотеку

206
     /** Sets the RectilinearGrid to use
206
     /** Sets the RectilinearGrid to use
207
      *  @param[in] Grid is a pointer to the Grid to be used.
207
      *  @param[in] Grid is a pointer to the Grid to be used.
208
      */
208
      */
209
-    //void SetAEMSurvey(AEMSurvey* Survey);
209
+    void SetAEMSurvey( std::shared_ptr<AEMSurvey> Survey);
210
 
210
 
211
     /** Sets the prefix for results files (.log and .vtr) the source fiducial is added as well
211
     /** Sets the prefix for results files (.log and .vtr) the source fiducial is added as well
212
      */
212
      */
351
     //std::shared_ptr<RectilinearGridVTKExporter>         VTKGridExporter;
351
     //std::shared_ptr<RectilinearGridVTKExporter>         VTKGridExporter;
352
 
352
 
353
     /** Class containing information about the AEM survey */
353
     /** Class containing information about the AEM survey */
354
-    //AEMSurvey*                      Survey;
354
+    std::shared_ptr<AEMSurvey>                          Survey;
355
 
355
 
356
     std::shared_ptr<LayeredEarthEM>                     LayModel;
356
     std::shared_ptr<LayeredEarthEM>                     LayModel;
357
 
357
 

+ 35
- 39
src/EMSchur3DBase.cpp Прегледај датотеку

1463
         return ;
1463
         return ;
1464
     }
1464
     }
1465
 
1465
 
1466
-//     //--------------------------------------------------------------------------------------
1467
-//     //       Class:  EMSchur3DBase
1468
-//     //      Method:  SetAEMSurvey
1469
-//     //--------------------------------------------------------------------------------------
1470
-//     void EMSchur3DBase::SetAEMSurvey ( AEMSurvey* SurveyIn ) {
1471
-//         if (Survey) Survey->DetachFrom(this);
1472
-//         Survey = SurveyIn;
1473
-//         Survey->AttachTo(this);
1474
-//
1475
-//         // OK determine how many frequencies we are dealing with
1476
-//         Omegas = 2.*PI*Survey->GetFrequencies();
1477
-//
1478
-//         return ;
1479
-//     }		// -----  end of method EMSchur3DBase::SetAEMSurvey  -----// -----  end of method EMSchur3DBase::LoadMeshToolsConductivityModel  -----
1466
+    //--------------------------------------------------------------------------------------
1467
+    //       Class:  EMSchur3DBase
1468
+    //      Method:  SetAEMSurvey
1469
+    //--------------------------------------------------------------------------------------
1470
+    void EMSchur3DBase::SetAEMSurvey ( std::shared_ptr<AEMSurvey> SurveyIn ) {
1471
+        Survey = SurveyIn;
1472
+        // determine how many frequencies we are dealing with
1473
+        Omegas = 2.*PI*Survey->GetFrequencies();
1474
+        return ;
1475
+    }		// -----  end of method EMSchur3DBase::SetAEMSurvey  -----// -----  end of method EMSchur3DBase::LoadMeshToolsConductivityModel  -----
1480
 
1476
 
1481
-//     //--------------------------------------------------------------------------------------
1482
-//     //       Class:  EMSchur3DBase
1483
-//     //      Method:  Solve
1484
-//     //--------------------------------------------------------------------------------------
1485
-//     void EMSchur3DBase::Solve (  ) {
1486
-//
1487
-//         // TODO, these should throw exceptions for a GUI to catch
1488
-//         if (!LayModel or !Survey or !Grid or !sigma) {
1489
-//             std::cerr << "You need to set something. EMSChur3D::Solve()";
1490
-//             exit(EXIT_FAILURE);
1491
-//         }
1492
-//
1493
-//         //BuildD(); // strangely necessary, bug, track down.
1494
-//         Setup();
1495
-//
1496
-//         std::cout << "Entering parallel solve" << std::endl;
1497
-//         #ifdef LEMMAUSEOMP
1498
-//         #pragma omp parallel for schedule(static,1)
1499
-//         #endif
1500
-//         for (int isource=0; isource<Survey->GetNumberOfSources(); ++isource) {
1501
-//             SolveSource(Survey->GetSource(isource), isource);
1502
-//         }
1503
-//
1504
-//         return ;
1505
-//     }		// -----  end of method EMSchur3DBase::Solve  -----
1477
+    //--------------------------------------------------------------------------------------
1478
+    //       Class:  EMSchur3DBase
1479
+    //      Method:  Solve
1480
+    //--------------------------------------------------------------------------------------
1481
+    void EMSchur3DBase::Solve (  ) {
1482
+
1483
+        // TODO, these should throw exceptions for a GUI to catch
1484
+        if (!LayModel or !Survey or !Grid or !sigma) {
1485
+            std::cerr << "You need to set something. EMSChur3D::Solve()";
1486
+            exit(EXIT_FAILURE);
1487
+        }
1488
+
1489
+        //BuildD(); // strangely necessary, bug, track down.
1490
+        Setup();
1491
+
1492
+        std::cout << "Entering parallel solve" << std::endl;
1493
+        #ifdef LEMMAUSEOMP
1494
+        #pragma omp parallel for schedule(static,1)
1495
+        #endif
1496
+        for (int isource=0; isource<Survey->GetNumberOfSources(); ++isource) {
1497
+            SolveSource(Survey->GetSource(isource), isource);
1498
+        }
1499
+
1500
+        return ;
1501
+    }		// -----  end of method EMSchur3DBase::Solve  -----
1506
 
1502
 
1507
 }		// -----  end of Lemma  name  -----
1503
 }		// -----  end of Lemma  name  -----

Loading…
Откажи
Сачувај