diff --git a/SimPEG/EM/FDEM/FDEM.py b/SimPEG/EM/FDEM/FDEM.py index 9d3be6b2..cce32964 100644 --- a/SimPEG/EM/FDEM/FDEM.py +++ b/SimPEG/EM/FDEM/FDEM.py @@ -1,7 +1,7 @@ -from SimPEG import Survey, Problem, Utils, np, sp, Solver as SimpegSolver +from SimPEG import Problem, Utils, np, sp, Solver as SimpegSolver from scipy.constants import mu_0 -from SurveyFDEM import SurveyFDEM -from FieldsFDEM import FieldsFDEM, FieldsFDEM_e, FieldsFDEM_b, FieldsFDEM_h, FieldsFDEM_j +from SurveyFDEM import Survey as SurveyFDEM +from FieldsFDEM import Fields, Fields_e, Fields_b, Fields_h, Fields_j from SimPEG.EM.Base import BaseEMProblem from SimPEG.EM.Utils import omega @@ -17,8 +17,8 @@ class BaseFDEMProblem(BaseEMProblem): \mathbf{C} \mathbf{e} + i \omega \mathbf{b} = \mathbf{s_m} \\\\ {\mathbf{C}^T \mathbf{M_{\mu^{-1}}^f} \mathbf{b} - \mathbf{M_{\sigma}^e} \mathbf{e} = \mathbf{M^e} \mathbf{s_e}} - if using the E-B formulation (:code:`ProblemFDEM_e` - or :code:`ProblemFDEM_b`) or the magnetic field + if using the E-B formulation (:code:`Problem_e` + or :code:`Problem_b`) or the magnetic field \\\(\\\mathbf{h}\\\) and current density \\\(\\\mathbf{j}\\\) .. math :: @@ -26,13 +26,13 @@ class BaseFDEMProblem(BaseEMProblem): \mathbf{C}^T \mathbf{M_{\\rho}^f} \mathbf{j} + i \omega \mathbf{M_{\mu}^e} \mathbf{h} = \mathbf{M^e} \mathbf{s_m} \\\\ \mathbf{C} \mathbf{h} - \mathbf{j} = \mathbf{s_e} - if using the H-J formulation (:code:`ProblemFDEM_j` or :code:`ProblemFDEM_h`). + if using the H-J formulation (:code:`Problem_j` or :code:`Problem_h`). The problem performs the elimination so that we are solving the system for \\\(\\\mathbf{e},\\\mathbf{b},\\\mathbf{j} \\\) or \\\(\\\mathbf{h}\\\) """ surveyPair = SurveyFDEM - fieldsPair = FieldsFDEM + fieldsPair = Fields def fields(self, m=None): """ @@ -185,7 +185,7 @@ class BaseFDEMProblem(BaseEMProblem): ################################ E-B Formulation ######################################### ########################################################################################## -class ProblemFDEM_e(BaseFDEMProblem): +class Problem_e(BaseFDEMProblem): """ By eliminating the magnetic flux density using @@ -205,7 +205,7 @@ class ProblemFDEM_e(BaseFDEMProblem): _fieldType = 'e' _eqLocs = 'FE' - fieldsPair = FieldsFDEM_e + fieldsPair = Fields_e def __init__(self, mesh, **kwargs): BaseFDEMProblem.__init__(self, mesh, **kwargs) @@ -284,7 +284,7 @@ class ProblemFDEM_e(BaseFDEMProblem): return None -class ProblemFDEM_b(BaseFDEMProblem): +class Problem_b(BaseFDEMProblem): """ We eliminate \\\(\\\mathbf{e}\\\) using @@ -304,7 +304,7 @@ class ProblemFDEM_b(BaseFDEMProblem): _fieldType = 'b' _eqLocs = 'FE' - fieldsPair = FieldsFDEM_b + fieldsPair = Fields_b def __init__(self, mesh, **kwargs): BaseFDEMProblem.__init__(self, mesh, **kwargs) @@ -425,7 +425,7 @@ class ProblemFDEM_b(BaseFDEMProblem): ########################################################################################## -class ProblemFDEM_j(BaseFDEMProblem): +class Problem_j(BaseFDEMProblem): """ We eliminate \\\(\\\mathbf{h}\\\) using @@ -446,7 +446,7 @@ class ProblemFDEM_j(BaseFDEMProblem): _fieldType = 'j' _eqLocs = 'EF' - fieldsPair = FieldsFDEM_j + fieldsPair = Fields_j def __init__(self, mesh, **kwargs): BaseFDEMProblem.__init__(self, mesh, **kwargs) @@ -558,7 +558,7 @@ class ProblemFDEM_j(BaseFDEMProblem): -class ProblemFDEM_h(BaseFDEMProblem): +class Problem_h(BaseFDEMProblem): """ We eliminate \\\(\\\mathbf{j}\\\) using @@ -576,7 +576,7 @@ class ProblemFDEM_h(BaseFDEMProblem): _fieldType = 'h' _eqLocs = 'EF' - fieldsPair = FieldsFDEM_h + fieldsPair = Fields_h def __init__(self, mesh, **kwargs): BaseFDEMProblem.__init__(self, mesh, **kwargs) diff --git a/SimPEG/EM/FDEM/FieldsFDEM.py b/SimPEG/EM/FDEM/FieldsFDEM.py index 53f90c4b..d83877c3 100644 --- a/SimPEG/EM/FDEM/FieldsFDEM.py +++ b/SimPEG/EM/FDEM/FieldsFDEM.py @@ -1,13 +1,16 @@ -from SimPEG import Survey, Problem, Utils, np, sp +import numpy as np +import scipy.sparse as sp +import SimPEG +from SimPEG import Utils from SimPEG.EM.Utils import omega -class FieldsFDEM(Problem.Fields): +class Fields(SimPEG.Problem.Fields): """Fancy Field Storage for a FDEM survey.""" knownFields = {} dtype = complex -class FieldsFDEM_e(FieldsFDEM): +class Fields_e(Fields): knownFields = {'eSolution':'E'} aliasFields = { 'e' : ['eSolution','E','_e'], @@ -19,7 +22,7 @@ class FieldsFDEM_e(FieldsFDEM): } def __init__(self,mesh,survey,**kwargs): - FieldsFDEM.__init__(self,mesh,survey,**kwargs) + Fields.__init__(self,mesh,survey,**kwargs) def startup(self): self.prob = self.survey.prob @@ -89,7 +92,7 @@ class FieldsFDEM_e(FieldsFDEM): return self._bSecondaryDeriv_m(src, v, adjoint) -class FieldsFDEM_b(FieldsFDEM): +class Fields_b(Fields): knownFields = {'bSolution':'F'} aliasFields = { 'b' : ['bSolution','F','_b'], @@ -101,7 +104,7 @@ class FieldsFDEM_b(FieldsFDEM): } def __init__(self,mesh,survey,**kwargs): - FieldsFDEM.__init__(self,mesh,survey,**kwargs) + Fields.__init__(self,mesh,survey,**kwargs) def startup(self): self.prob = self.survey.prob @@ -190,7 +193,7 @@ class FieldsFDEM_b(FieldsFDEM): return self._eSecondaryDeriv_m(src, v, adjoint) -class FieldsFDEM_j(FieldsFDEM): +class Fields_j(Fields): knownFields = {'jSolution':'F'} aliasFields = { 'j' : ['jSolution','F','_j'], @@ -202,7 +205,7 @@ class FieldsFDEM_j(FieldsFDEM): } def __init__(self,mesh,survey,**kwargs): - FieldsFDEM.__init__(self,mesh,survey,**kwargs) + Fields.__init__(self,mesh,survey,**kwargs) def startup(self): self.prob = self.survey.prob @@ -293,7 +296,7 @@ class FieldsFDEM_j(FieldsFDEM): return self._hSecondaryDeriv_m(src, v, adjoint) -class FieldsFDEM_h(FieldsFDEM): +class Fields_h(Fields): knownFields = {'hSolution':'E'} aliasFields = { 'h' : ['hSolution','E','_h'], @@ -305,7 +308,7 @@ class FieldsFDEM_h(FieldsFDEM): } def __init__(self,mesh,survey,**kwargs): - FieldsFDEM.__init__(self,mesh,survey,**kwargs) + Fields.__init__(self,mesh,survey,**kwargs) def startup(self): self.prob = self.survey.prob diff --git a/SimPEG/EM/FDEM/SurveyFDEM.py b/SimPEG/EM/FDEM/SurveyFDEM.py index a475b550..150a6c00 100644 --- a/SimPEG/EM/FDEM/SurveyFDEM.py +++ b/SimPEG/EM/FDEM/SurveyFDEM.py @@ -1,4 +1,4 @@ -from SimPEG import Survey, Problem, Utils, np, sp +import SimPEG from SimPEG.EM.Utils import * from scipy.constants import mu_0 import SrcFDEM as Src @@ -7,7 +7,7 @@ import SrcFDEM as Src # Receivers #################################################### -class Rx(Survey.BaseRx): +class Rx(SimPEG.Survey.BaseRx): knownRxTypes = { 'exr':['e', 'Ex', 'real'], @@ -41,7 +41,7 @@ class Rx(Survey.BaseRx): radius = None def __init__(self, locs, rxType): - Survey.BaseRx.__init__(self, locs, rxType) + SimPEG.Survey.BaseRx.__init__(self, locs, rxType) @property def projField(self): @@ -91,7 +91,7 @@ class Rx(Survey.BaseRx): # Survey #################################################### -class SurveyFDEM(Survey.BaseSurvey): +class Survey(SimPEG.Survey.BaseSurvey): """ docstring for SurveyFDEM """ @@ -101,7 +101,7 @@ class SurveyFDEM(Survey.BaseSurvey): def __init__(self, srcList, **kwargs): # Sort these by frequency self.srcList = srcList - Survey.BaseSurvey.__init__(self, **kwargs) + SimPEG.Survey.BaseSurvey.__init__(self, **kwargs) _freqDict = {} for src in srcList: @@ -136,7 +136,7 @@ class SurveyFDEM(Survey.BaseSurvey): return self._freqDict[freq] def projectFields(self, u): - data = Survey.Data(self) + data = SimPEG.Survey.Data(self) for src in self.srcList: for rx in src.rxList: data[src, rx] = rx.projectFields(src, self.mesh, u) diff --git a/SimPEG/EM/FDEM/__init__.py b/SimPEG/EM/FDEM/__init__.py index 1beef79c..978972f5 100644 --- a/SimPEG/EM/FDEM/__init__.py +++ b/SimPEG/EM/FDEM/__init__.py @@ -1,3 +1,3 @@ -from SurveyFDEM import Rx, Src, SurveyFDEM -from FDEM import BaseFDEMProblem, ProblemFDEM_e, ProblemFDEM_b, ProblemFDEM_j, ProblemFDEM_h +from SurveyFDEM import Rx, Src, Survey +from FDEM import BaseFDEMProblem, Problem_e, Problem_b, Problem_j, Problem_h from FieldsFDEM import * \ No newline at end of file diff --git a/SimPEG/EM/Utils/testingUtils.py b/SimPEG/EM/Utils/testingUtils.py index 315dc3f1..8c703083 100644 --- a/SimPEG/EM/Utils/testingUtils.py +++ b/SimPEG/EM/Utils/testingUtils.py @@ -47,20 +47,20 @@ def getFDEMProblem(fdemType, comp, SrcList, freq, verbose=False): print ' Fetching %s problem' % (fdemType) if fdemType == 'e': - survey = EM.FDEM.SurveyFDEM(Src) - prb = EM.FDEM.ProblemFDEM_e(mesh, mapping=mapping) + survey = EM.FDEM.Survey(Src) + prb = EM.FDEM.Problem_e(mesh, mapping=mapping) elif fdemType == 'b': - survey = EM.FDEM.SurveyFDEM(Src) - prb = EM.FDEM.ProblemFDEM_b(mesh, mapping=mapping) + survey = EM.FDEM.Survey(Src) + prb = EM.FDEM.Problem_b(mesh, mapping=mapping) elif fdemType == 'j': - survey = EM.FDEM.SurveyFDEM(Src) - prb = EM.FDEM.ProblemFDEM_j(mesh, mapping=mapping) + survey = EM.FDEM.Survey(Src) + prb = EM.FDEM.Problem_j(mesh, mapping=mapping) elif fdemType == 'h': - survey = EM.FDEM.SurveyFDEM(Src) - prb = EM.FDEM.ProblemFDEM_h(mesh, mapping=mapping) + survey = EM.FDEM.Survey(Src) + prb = EM.FDEM.Problem_h(mesh, mapping=mapping) else: raise NotImplementedError() diff --git a/tests/em/fdem/forward/test_FDEM_analytics.py b/tests/em/fdem/forward/test_FDEM_analytics.py index 7b4d4439..9786e7c8 100644 --- a/tests/em/fdem/forward/test_FDEM_analytics.py +++ b/tests/em/fdem/forward/test_FDEM_analytics.py @@ -31,9 +31,9 @@ class FDEM_analyticTests(unittest.TestCase): rxList = EM.FDEM.Rx(XYZ, 'exi') Src0 = EM.FDEM.Src.MagDipole([rxList],loc=np.r_[0.,0.,0.], freq=freq) - survey = EM.FDEM.SurveyFDEM([Src0]) + survey = EM.FDEM.Survey([Src0]) - prb = EM.FDEM.ProblemFDEM_b(mesh, mapping=mapping) + prb = EM.FDEM.Problem_b(mesh, mapping=mapping) prb.pair(survey) try: @@ -120,13 +120,13 @@ class FDEM_analyticTests(unittest.TestCase): # Pair the problem and survey - surveye = EM.FDEM.SurveyFDEM(de_p) - surveym = EM.FDEM.SurveyFDEM(dm_p) + surveye = EM.FDEM.Survey(de_p) + surveym = EM.FDEM.Survey(dm_p) mapping = [('sigma', Maps.IdentityMap(mesh)),('mu', Maps.IdentityMap(mesh))] - prbe = EM.FDEM.ProblemFDEM_h(mesh, mapping=mapping) - prbm = EM.FDEM.ProblemFDEM_e(mesh, mapping=mapping) + prbe = EM.FDEM.Problem_h(mesh, mapping=mapping) + prbm = EM.FDEM.Problem_e(mesh, mapping=mapping) prbe.pair(surveye) # pair problem and survey prbm.pair(surveym)