Browse Source

Fixes for python wrapper with ABC inheritence. Also fixed EM1D to not clone antenna in tight loop

master
Trevor Irons 4 years ago
parent
commit
a84f85654c

+ 5
- 5
Modules/FDEM1D/examples/inp/points.inp View File

1
-20 20 20          // number of points (nx, ny, nz) in (northing, easting, depth) z pos down
2
--100 -100 1e-1    // offset in x, y, z (location of first calculation)
3
-5 4 3 2 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 1 2 3 4 5 // x direction point spacing, in metres, (nx-1) 
4
-5 4 3 2 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 1 2 3 4 5 // y direction point spacing, in metres, (ny-1) 
5
-.1 .1 .1 2 2 2 3 3 3 4 4 4 4 4 4 5 5 5 5       // z direction point spacing, in metres, (nz-1) 
1
+40 40 40          // number of points (nx, ny, nz) in (northing, easting, depth) z pos down
2
+32.5 32.5 1e-1    // offset in x, y, z (location of first calculation)
3
+5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 // x direction point spacing, in metres, (nx-1) 
4
+5 5 5 5 5 5 5 5 5 5 5 4 3 2 1 .5 .5 .5 .5 .5 .5 .5 .5 .5 1 2 3 4 5 5 5 5 5 5 5 5 5 5 5 // y direction point spacing, in metres, (nx-1) 
5
+.1 .1 .1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 3 3 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5       // z direction point spacing, in metres, (nz-1) 

+ 2
- 0
Modules/FDEM1D/include/DipoleSource.h View File

16
 #include <memory>
16
 #include <memory>
17
 #include "LemmaObject.h"
17
 #include "LemmaObject.h"
18
 #include "LayeredEarthEM.h"
18
 #include "LayeredEarthEM.h"
19
+//#include "PolygonalWireAntenna.h"
19
 
20
 
20
 #ifdef LEMMAUSEVTK
21
 #ifdef LEMMAUSEVTK
21
 #include "vtkActor.h"
22
 #include "vtkActor.h"
51
         friend std::ostream &operator<<(std::ostream &stream, const DipoleSource &ob);
52
         friend std::ostream &operator<<(std::ostream &stream, const DipoleSource &ob);
52
 
53
 
53
         friend class EMEarth1D;
54
         friend class EMEarth1D;
55
+        friend class PolygonalWireAntenna;
54
 
56
 
55
         public:
57
         public:
56
 
58
 

+ 1
- 3
Modules/FDEM1D/python/pyFDEM1D.cpp View File

139
             "Sets all frequencies, argument is numpy array of frequencies")
139
             "Sets all frequencies, argument is numpy array of frequencies")
140
         ;
140
         ;
141
 
141
 
142
-    py::class_<Lemma::LayeredEarthEM, std::shared_ptr<Lemma::LayeredEarthEM> >
143
-        LayeredEarthEM(m, "LayeredEarthEM");
142
+    py::class_<Lemma::LayeredEarthEM, std::shared_ptr<Lemma::LayeredEarthEM>, Lemma::EarthModel > LayeredEarthEM(m, "LayeredEarthEM");
144
 
143
 
145
         // lifecycle
144
         // lifecycle
146
         LayeredEarthEM.def(py::init(&Lemma::LayeredEarthEM::NewSP))
145
         LayeredEarthEM.def(py::init(&Lemma::LayeredEarthEM::NewSP))
226
         .def("SetLayerBreathPermitivity", &Lemma::LayeredEarthEM::SetLayerBreathPermitivity,
225
         .def("SetLayerBreathPermitivity", &Lemma::LayeredEarthEM::SetLayerBreathPermitivity,
227
             "Sets the permitivity breath for Cole-COle model")
226
             "Sets the permitivity breath for Cole-COle model")
228
 
227
 
229
-
230
         // methods
228
         // methods
231
         .def("EvaluateColeColeModel", &Lemma::LayeredEarthEM::EvaluateColeColeModel,
229
         .def("EvaluateColeColeModel", &Lemma::LayeredEarthEM::EvaluateColeColeModel,
232
             "Calculates complex resistivity based on cole-cole parameters")
230
             "Calculates complex resistivity based on cole-cole parameters")

+ 6
- 6
Modules/FDEM1D/src/DipoleSource.cpp View File

275
         lays = Earth->GetLayerAtThisDepth(Location[2]);
275
         lays = Earth->GetLayerAtThisDepth(Location[2]);
276
         layr = Earth->GetLayerAtThisDepth(Receivers->GetLocation(irec)[2]);
276
         layr = Earth->GetLayerAtThisDepth(Receivers->GetLocation(irec)[2]);
277
 
277
 
278
+        // TODO, avoid smart pointer here maybe?
278
         KernelManager = KernelEM1DManager::NewSP();
279
         KernelManager = KernelEM1DManager::NewSP();
279
 
280
 
280
             KernelManager->SetEarth(Earth);
281
             KernelManager->SetEarth(Earth);
955
                             }
956
                             }
956
                             break;
957
                             break;
957
                         case H:
958
                         case H:
958
-                            f(5) = Hankel->Zgauss(5, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[5]));
959
-                            f(6) = Hankel->Zgauss(6, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[6]));
959
+                            // TI - Comparisons with Amira show slight better agreement when neglecting these grounding terms
960
+                            f(5) = 0; //Hankel->Zgauss(5, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[5]));
961
+                            f(6) = 0; //Hankel->Zgauss(6, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[6]));
960
                             f(7) = Hankel->Zgauss(7, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[7]))*KernelManager->GetRAWKernel(ik[7])->GetZs()/KernelManager->GetRAWKernel(ik[7])->GetZm();
962
                             f(7) = Hankel->Zgauss(7, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[7]))*KernelManager->GetRAWKernel(ik[7])->GetZs()/KernelManager->GetRAWKernel(ik[7])->GetZm();
961
                             f(8) = Hankel->Zgauss(8, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[8]))*KernelManager->GetRAWKernel(ik[8])->GetZs()/KernelManager->GetRAWKernel(ik[8])->GetZm();
963
                             f(8) = Hankel->Zgauss(8, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[8]))*KernelManager->GetRAWKernel(ik[8])->GetZs()/KernelManager->GetRAWKernel(ik[8])->GetZm();
962
                             f(9) = Hankel->Zgauss(9, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[9]))*KernelManager->GetRAWKernel(ik[9])->GetZs()/KernelManager->GetRAWKernel(ik[9])->GetZm();
964
                             f(9) = Hankel->Zgauss(9, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[9]))*KernelManager->GetRAWKernel(ik[9])->GetZs()/KernelManager->GetRAWKernel(ik[9])->GetZm();
965
                                         Pol[1]*QPI*(sps*f(5)+c2p*f(6)/rho-cps*f(7)+c2p*f(8)/rho)*Moment,
967
                                         Pol[1]*QPI*(sps*f(5)+c2p*f(6)/rho-cps*f(7)+c2p*f(8)/rho)*Moment,
966
                                         Pol[1]*QPI*scp*(-f(5)+(Real)(2.)*f(6)/rho-f(7)+(Real)(2.)*f(8)/rho)*Moment,
968
                                         Pol[1]*QPI*scp*(-f(5)+(Real)(2.)*f(6)/rho-f(7)+(Real)(2.)*f(8)/rho)*Moment,
967
                                         -Pol[1]*QPI*cp*f(9)*Moment );
969
                                         -Pol[1]*QPI*cp*f(9)*Moment );
968
-                                // Analytic whole space solution could go here
969
                             }
970
                             }
970
                             if (std::abs(Pol[0]) > 0) {
971
                             if (std::abs(Pol[0]) > 0) {
971
                                 this->Receivers->AppendHfield(ifreq, irec,
972
                                 this->Receivers->AppendHfield(ifreq, irec,
972
                                     Pol[0]*Moment*QPI*scp*(f(5)-(Real)(2.)*f(6)/rho+f(7)-(Real)(2.)*f(8)/rho),
973
                                     Pol[0]*Moment*QPI*scp*(f(5)-(Real)(2.)*f(6)/rho+f(7)-(Real)(2.)*f(8)/rho),
973
                                     Pol[0]*Moment*QPI*(-cps*f(5)+c2p*f(6)/rho+sps*f(7)+c2p*f(8)/rho),
974
                                     Pol[0]*Moment*QPI*(-cps*f(5)+c2p*f(6)/rho+sps*f(7)+c2p*f(8)/rho),
974
                                     Pol[0]*Moment*QPI*sp*f(9) );
975
                                     Pol[0]*Moment*QPI*sp*f(9) );
975
-                                // Analytic whole space solution
976
                             }
976
                             }
977
                             break;
977
                             break;
978
 
978
 
982
                             f(4) = 0;
982
                             f(4) = 0;
983
                             f(2) = Hankel->Zgauss(2, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[2])) * KernelManager->GetRAWKernel(0)->GetZs();
983
                             f(2) = Hankel->Zgauss(2, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[2])) * KernelManager->GetRAWKernel(0)->GetZs();
984
                             f(3) = Hankel->Zgauss(3, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[3])) * KernelManager->GetRAWKernel(1)->GetZs();
984
                             f(3) = Hankel->Zgauss(3, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[3])) * KernelManager->GetRAWKernel(1)->GetZs();
985
-                            f(5) = Hankel->Zgauss(5, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[5]));
986
-                            f(6) = Hankel->Zgauss(6, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[6]));
985
+                            f(5) = 0;//Hankel->Zgauss(5, TM, 0, rho, wavef, KernelManager->GetRAWKernel(ik[5]));
986
+                            f(6) = 0;//Hankel->Zgauss(6, TM, 1, rho, wavef, KernelManager->GetRAWKernel(ik[6]));
987
                             f(7) = Hankel->Zgauss(7, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[7]))*KernelManager->GetRAWKernel(ik[7])->GetZs()/KernelManager->GetRAWKernel(ik[7])->GetZm();
987
                             f(7) = Hankel->Zgauss(7, TE, 0, rho, wavef, KernelManager->GetRAWKernel(ik[7]))*KernelManager->GetRAWKernel(ik[7])->GetZs()/KernelManager->GetRAWKernel(ik[7])->GetZm();
988
                             f(8) = Hankel->Zgauss(8, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[8]))*KernelManager->GetRAWKernel(ik[8])->GetZs()/KernelManager->GetRAWKernel(ik[8])->GetZm();
988
                             f(8) = Hankel->Zgauss(8, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[8]))*KernelManager->GetRAWKernel(ik[8])->GetZs()/KernelManager->GetRAWKernel(ik[8])->GetZm();
989
                             f(9) = Hankel->Zgauss(9, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[9]))*KernelManager->GetRAWKernel(ik[9])->GetZs()/KernelManager->GetRAWKernel(ik[9])->GetZm();
989
                             f(9) = Hankel->Zgauss(9, TE, 1, rho, wavef, KernelManager->GetRAWKernel(ik[9]))*KernelManager->GetRAWKernel(ik[9])->GetZs()/KernelManager->GetRAWKernel(ik[9])->GetZm();

+ 3
- 8
Modules/FDEM1D/src/EMEarth1D.cpp View File

231
         if (Antenna->GetName() == std::string("PolygonalWireAntenna") || Antenna->GetName() == std::string("TEMTransmitter") ) {
231
         if (Antenna->GetName() == std::string("PolygonalWireAntenna") || Antenna->GetName() == std::string("TEMTransmitter") ) {
232
             icalc += 1;
232
             icalc += 1;
233
             // Check to see if they are all on a plane? If so we can do this fast
233
             // Check to see if they are all on a plane? If so we can do this fast
234
-            if (Antenna->IsHorizontallyPlanar() && ( HankelType == ANDERSON801 || HankelType== FHTKEY201 || HankelType==FHTKEY101 ||
234
+            if ( Antenna->IsHorizontallyPlanar() && ( HankelType == ANDERSON801 || HankelType== FHTKEY201 || HankelType==FHTKEY101 ||
235
                                                      HankelType == FHTKEY51 || HankelType == FHTKONG61 || HankelType == FHTKONG121 ||
235
                                                      HankelType == FHTKEY51 || HankelType == FHTKONG61 || HankelType == FHTKONG121 ||
236
                                                      HankelType == FHTKONG241 || HankelType == IRONS )) {
236
                                                      HankelType == FHTKONG241 || HankelType == IRONS )) {
237
                 #ifdef HAVE_BOOST_PROGRESS
237
                 #ifdef HAVE_BOOST_PROGRESS
246
                     {
246
                     {
247
                     #endif
247
                     #endif
248
                     auto Hankel = HankelTransformFactory::NewSP( HankelType );
248
                     auto Hankel = HankelTransformFactory::NewSP( HankelType );
249
+                    auto AntCopy = static_cast<PolygonalWireAntenna*>(Antenna.get())->ClonePA();
249
                     #ifdef LEMMAUSEOMP
250
                     #ifdef LEMMAUSEOMP
250
                     #pragma omp for schedule(static, 1)
251
                     #pragma omp for schedule(static, 1)
251
                     #endif
252
                     #endif
252
                     for (int irec=0; irec<Receivers->GetNumberOfPoints(); ++irec) {
253
                     for (int irec=0; irec<Receivers->GetNumberOfPoints(); ++irec) {
253
-                        auto AntCopy = static_cast<PolygonalWireAntenna*>(Antenna.get())->ClonePA();
254
                         SolveLaggedTxRxPair(irec, Hankel.get(), wavef, ifreq, AntCopy.get());
254
                         SolveLaggedTxRxPair(irec, Hankel.get(), wavef, ifreq, AntCopy.get());
255
                         #ifdef HAVE_BOOST_PROGRESS
255
                         #ifdef HAVE_BOOST_PROGRESS
256
                         if (progressbar) ++(*disp);
256
                         if (progressbar) ++(*disp);
270
                     disp = new boost::progress_display( Receivers->GetNumberOfPoints()*Antenna->GetNumberOfFrequencies() );
270
                     disp = new boost::progress_display( Receivers->GetNumberOfPoints()*Antenna->GetNumberOfFrequencies() );
271
                 }
271
                 }
272
                 #endif
272
                 #endif
273
-
274
                 // parallelise across receivers
273
                 // parallelise across receivers
275
                 #ifdef LEMMAUSEOMP
274
                 #ifdef LEMMAUSEOMP
276
                 #pragma omp parallel
275
                 #pragma omp parallel
452
                                     //}
451
                                     //}
453
                                     auto tDipole = Antenna->GetDipoleSource(idip);
452
                                     auto tDipole = Antenna->GetDipoleSource(idip);
454
                                     // Propogation constant in free space
453
                                     // Propogation constant in free space
455
-                                    Real wavef   = tDipole->GetAngularFrequency(ifreq) *
456
-                                          std::sqrt(MU0*EPSILON0);
454
+                                    Real wavef   = tDipole->GetAngularFrequency(ifreq) * std::sqrt(MU0*EPSILON0);
457
                                     SolveSingleTxRxPair(irec, Hankel.get(), wavef, ifreq, tDipole.get());
455
                                     SolveSingleTxRxPair(irec, Hankel.get(), wavef, ifreq, tDipole.get());
458
                                 } // dipole loop
456
                                 } // dipole loop
459
                             } // frequency loop
457
                             } // frequency loop
778
     void EMEarth1D::SolveLaggedTxRxPair(const int &irec, HankelTransform* Hankel,
776
     void EMEarth1D::SolveLaggedTxRxPair(const int &irec, HankelTransform* Hankel,
779
                     const Real &wavef, const int &ifreq, PolygonalWireAntenna* antenna) {
777
                     const Real &wavef, const int &ifreq, PolygonalWireAntenna* antenna) {
780
 
778
 
781
-        //std::cout << "SolveLaggedTxRxPair" << std::endl;
782
-
783
         antenna->ApproximateWithElectricDipoles(Receivers->GetLocation(irec));
779
         antenna->ApproximateWithElectricDipoles(Receivers->GetLocation(irec));
784
-
785
         // Determine the min and max arguments
780
         // Determine the min and max arguments
786
         Real rhomin = 1e9;
781
         Real rhomin = 1e9;
787
         Real rhomax = 1e-9;
782
         Real rhomax = 1e-9;

+ 4
- 2
Modules/FDEM1D/testing/CMakeLists.txt View File

6
 CXXTEST_ADD_TEST(unittest_FEM1D_SerializeCheck SerializeCheck.cc ${CMAKE_CURRENT_SOURCE_DIR}/SerializeCheck.h)
6
 CXXTEST_ADD_TEST(unittest_FEM1D_SerializeCheck SerializeCheck.cc ${CMAKE_CURRENT_SOURCE_DIR}/SerializeCheck.h)
7
 target_link_libraries(unittest_FEM1D_SerializeCheck "lemmacore" "fdem1d" "yaml-cpp")
7
 target_link_libraries(unittest_FEM1D_SerializeCheck "lemmacore" "fdem1d" "yaml-cpp")
8
 
8
 
9
-#CXXTEST_ADD_TEST(benchKiHa BenchKiHa.cc ${CMAKE_CURRENT_SOURCE_DIR}/BenchKiHa.h)
10
-#target_link_libraries(benchKiHa "lemmacore" "fdem1d" "yaml-cpp")
9
+if(KIHA_EM1D)
10
+	CXXTEST_ADD_TEST(benchKiHa BenchKiHa.cc ${CMAKE_CURRENT_SOURCE_DIR}/BenchKiHa.h)
11
+	target_link_libraries(benchKiHa "lemmacore" "fdem1d" "yaml-cpp")
12
+endif()
11
 
13
 
12
 #set_target_properties(unittest_FEM1D_GetNameCheck
14
 #set_target_properties(unittest_FEM1D_GetNameCheck
13
 #	              unittest_FEM1D_SerializeCheck 
15
 #	              unittest_FEM1D_SerializeCheck 

+ 4
- 2
Modules/LemmaCore/include/EarthModel.h View File

33
         public:
33
         public:
34
 
34
 
35
             // ====================  LIFECYCLE     =======================
35
             // ====================  LIFECYCLE     =======================
36
+
37
+            /// Default destructor
38
+            ~EarthModel ();
39
+
36
             /** YAML Serializing method
40
             /** YAML Serializing method
37
              */
41
              */
38
             YAML::Node Serialize() const;
42
             YAML::Node Serialize() const;
112
             /** Deserialize constructor */
116
             /** Deserialize constructor */
113
             EarthModel (const YAML::Node& node, const ctor_key&);
117
             EarthModel (const YAML::Node& node, const ctor_key&);
114
 
118
 
115
-            /// Default protected constructor.
116
-            ~EarthModel ();
117
 
119
 
118
             // ====================  DATA MEMBERS  =========================
120
             // ====================  DATA MEMBERS  =========================
119
 
121
 

+ 13
- 1
Modules/LemmaCore/python/pyLemmaCore.cpp View File

226
     ;
226
     ;
227
 
227
 
228
     // ABC
228
     // ABC
229
-    //py::class_<Lemma::EarthModel, std::shared_ptr<Lemma::EarthModel> >(m, "EarthModel")
229
+    py::class_<Lemma::EarthModel, std::shared_ptr<Lemma::EarthModel> > abcEarthModel (m, "EarthModel");
230
+
231
+    // Modifiers
232
+    abcEarthModel.def("SetMagneticFieldIncDecMag", &Lemma::EarthModel::SetMagneticFieldIncDecMag, "Sets the inducing field" );
233
+    abcEarthModel.def("SetMagneticFieldComponents", &Lemma::EarthModel::SetMagneticFieldComponents, "Sets the inducing field" );
234
+
235
+    // Accessors
236
+    abcEarthModel.def("GetMagneticField", &Lemma::EarthModel::GetMagneticField, "returns the inducing field in Tesla" );
237
+    abcEarthModel.def("GetMagneticFieldInGauss", &Lemma::EarthModel::GetMagneticFieldInGauss, "returns the inducing field in Gauss" );
238
+    abcEarthModel.def("GetMagneticFieldUnitVector", &Lemma::EarthModel::GetMagneticFieldUnitVector, "returns the inducing field unit vector" );
239
+    abcEarthModel.def("GetMagneticFieldMagnitude", &Lemma::EarthModel::GetMagneticFieldMagnitude, "returns the magnitude of the inducing field" );
240
+    abcEarthModel.def("GetMagneticFieldMagnitudeInGauss", &Lemma::EarthModel::GetMagneticFieldMagnitudeInGauss, "returns the magnitude of the inducing field" );
241
+
230
 
242
 
231
     /*
243
     /*
232
     py::class_<Lemma::LayeredEarth, std::shared_ptr<Lemma::LayeredEarth> >(m, "LayeredEarth")
244
     py::class_<Lemma::LayeredEarth, std::shared_ptr<Lemma::LayeredEarth> >(m, "LayeredEarth")

+ 1
- 1
python/setup.py View File

44
     #'pyLemma.pyFDEM1D': ['pyFDEM1D.*.so']
44
     #'pyLemma.pyFDEM1D': ['pyFDEM1D.*.so']
45
     #'pyLemma.pyFDEM1D': ['pyFDEM1D.*.so']
45
     #'pyLemma.pyFDEM1D': ['pyFDEM1D.*.so']
46
     #'': ['LemmaCore.*.so','FDEM1D.*.so']
46
     #'': ['LemmaCore.*.so','FDEM1D.*.so']
47
-    '': ['LemmaCore.*','FDEM1D.*']
47
+    '': ['LemmaCore.*','FDEM1D.*','Merlin.*']
48
   },
48
   },
49
   zip_safe=False,
49
   zip_safe=False,
50
   cmdclass={'install':InstallPlatlib},
50
   cmdclass={'install':InstallPlatlib},

+ 1
- 1
vim/c.vim View File

17
 
17
 
18
 " Lemma types
18
 " Lemma types
19
 highlight leType ctermfg=Yellow guifg=Yellow
19
 highlight leType ctermfg=Yellow guifg=Yellow
20
-syn keyword leType HankelTransform FHTAnderson801 FHTKey201 FHTKey101 FHTKey51 GQChave QWEKey KernelEM1D KernelEM1DSpec KernelEM1DBase KernelEM1DManager DipoleSource EarthModel LayeredEarth LayeredEarthEM TEMSurvey TEMSurveyLine TEMSurveyLineRecord TEMInductiveReceiver WireAntenna PolygonalWireAntenna TEMTransmitter TEMReceiver Instrument InstrumentTem LemmaObject FieldPoints DCIPElectrode TEMSurveyData TEMSurveyLineData TEMSurveyLineRecordData  ASCIIParser CubicSplineInterpolator RectilinearGrid GridReader RectilinearGridReader RectilinearGridVTKExporter Filter WindowFilter DEMParticle DEMGrain Data DataReader EMEarth1D 
20
+syn keyword leType HankelTransform FHTAnderson801 FHTKey201 FHTKey101 FHTKey51 GQChave QWEKey KernelEM1D KernelEM1DSpec KernelEM1DBase KernelEM1DManager DipoleSource EarthModel LayeredEarth LayeredEarthEM TEMSurvey TEMSurveyLine TEMSurveyLineRecord TEMInductiveReceiver WireAntenna PolygonalWireAntenna TEMTransmitter TEMReceiver Instrument InstrumentTem LemmaObject FieldPoints DCIPElectrode TEMSurveyData TEMSurveyLineData TEMSurveyLineRecordData  ASCIIParser CubicSplineInterpolator RectilinearGrid GridReader RectilinearGridReader RectilinearGridVTKExporter Filter WindowFilter DEMParticle DEMGrain Data DataReader EMEarth1D KernelV0 
21
 
21
 
22
 " Deprecated Lemma Types
22
 " Deprecated Lemma Types
23
 highlight dleType ctermfg=Blue guifg=Blue 
23
 highlight dleType ctermfg=Blue guifg=Blue 

Loading…
Cancel
Save