SurveyFDEM --> Survey, FieldsFDEM --> Fields

This commit is contained in:
Lindsey Heagy
2015-11-17 22:17:38 -08:00
parent 2fbe0af108
commit 7023e999bc
6 changed files with 50 additions and 47 deletions
+15 -15
View File
@@ -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)
+13 -10
View File
@@ -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
+6 -6
View File
@@ -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)
+2 -2
View File
@@ -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 *
+8 -8
View File
@@ -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()
+6 -6
View File
@@ -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)