Merge pull request #317 from simpeg/em/ref/dev-cleanup

em/dev cleanup
This commit is contained in:
Lindsey
2016-05-18 08:13:06 -07:00
5 changed files with 31 additions and 31 deletions
+4 -4
View File
@@ -87,7 +87,7 @@ class BaseFDEMProblem(BaseEMProblem):
du_dm_v = Ainv * ( - dA_dm_v + dRHS_dm_v )
for rx in src.rxList:
df_dmFun = getattr(f, '_%sDeriv'%rx.projField, None)
df_dmFun = getattr(f, '_{0}Deriv'.format(rx.projField), None)
df_dm_v = df_dmFun(src, du_dm_v, v, adjoint=False)
Jv[src, rx] = rx.evalDeriv(src, self.mesh, f, df_dm_v)
Ainv.clean()
@@ -125,7 +125,7 @@ class BaseFDEMProblem(BaseEMProblem):
for rx in src.rxList:
PTv = rx.evalDeriv(src, self.mesh, f, v[src, rx], adjoint=True) # wrt f, need possibility wrt m
df_duTFun = getattr(f, '_%sDeriv'%rx.projField, None)
df_duTFun = getattr(f, '_{0}Deriv'.format(rx.projField), None)
df_duT, df_dmT = df_duTFun(src, None, PTv, adjoint=True)
ATinvdf_duT = ATinv * df_duT
@@ -137,9 +137,9 @@ class BaseFDEMProblem(BaseEMProblem):
df_dmT = df_dmT + du_dmT
# TODO: this should be taken care of by the reciever?
if rx.real_or_imag is 'real':
if rx.component is 'real':
Jtv += np.array(df_dmT, dtype=complex).real
elif rx.real_or_imag is 'imag':
elif rx.component is 'imag':
Jtv += - np.array(df_dmT, dtype=complex).real
else:
raise Exception('Must be real or imag')
+24 -24
View File
@@ -7,15 +7,15 @@ class BaseRx(SimPEG.Survey.BaseRx):
:param numpy.ndarray locs: receiver locations (ie. :code:`np.r_[x,y,z]`)
:param string orientation: receiver orientation 'x', 'y' or 'z'
:param string real_or_imag: real or imaginary component 'real' or 'imag'
:param string component: real or imaginary component 'real' or 'imag'
"""
def __init__(self, locs, orientation=None, real_or_imag=None):
def __init__(self, locs, orientation=None, component=None):
assert(orientation in ['x','y','z']), "Orientation %s not known. Orientation must be in 'x', 'y', 'z'. Arbitrary orientations have not yet been implemented."%orientation
assert(real_or_imag in ['real', 'imag']), "'real_or_imag' must be 'real' or 'imag', not %s"%real_or_imag
assert(component in ['real', 'imag']), "'component' must be 'real' or 'imag', not %s"%component
self.projComp = orientation
self.real_or_imag = real_or_imag
self.component = component
SimPEG.Survey.BaseRx.__init__(self, locs, rxType=None) #TODO: remove rxType from baseRx
@@ -36,7 +36,7 @@ class BaseRx(SimPEG.Survey.BaseRx):
P = self.getP(mesh, self.projGLoc(f))
f_part_complex = f[src, self.projField]
f_part = getattr(f_part_complex, self.real_or_imag) # get the real or imag component
f_part = getattr(f_part_complex, self.component) # get the real or imag component
return P*f_part
@@ -56,13 +56,13 @@ class BaseRx(SimPEG.Survey.BaseRx):
if not adjoint:
Pv_complex = P * v
Pv = getattr(Pv_complex, self.real_or_imag)
Pv = getattr(Pv_complex, self.component)
elif adjoint:
Pv_real = P.T * v
if self.real_or_imag == 'imag':
if self.component == 'imag':
Pv = 1j*Pv_real
elif self.real_or_imag == 'real':
elif self.component == 'real':
Pv = Pv_real.astype(complex)
else:
raise NotImplementedError('must be real or imag')
@@ -70,57 +70,57 @@ class BaseRx(SimPEG.Survey.BaseRx):
return Pv
class eField(BaseRx):
class Point_e(BaseRx):
"""
Electric field FDEM receiver
:param numpy.ndarray locs: receiver locations (ie. :code:`np.r_[x,y,z]`)
:param string orientation: receiver orientation 'x', 'y' or 'z'
:param string real_or_imag: real or imaginary component 'real' or 'imag'
:param string component: real or imaginary component 'real' or 'imag'
"""
def __init__(self, locs, orientation=None, real_or_imag=None):
def __init__(self, locs, orientation=None, component=None):
self.projField = 'e'
BaseRx.__init__(self, locs, orientation, real_or_imag)
super(Point_e, self).__init__(locs, orientation, component)
class bField(BaseRx):
class Point_b(BaseRx):
"""
Magnetic flux FDEM receiver
:param numpy.ndarray locs: receiver locations (ie. :code:`np.r_[x,y,z]`)
:param string orientation: receiver orientation 'x', 'y' or 'z'
:param string real_or_imag: real or imaginary component 'real' or 'imag'
:param string component: real or imaginary component 'real' or 'imag'
"""
def __init__(self, locs, orientation=None, real_or_imag=None):
def __init__(self, locs, orientation=None, component=None):
self.projField = 'b'
BaseRx.__init__(self, locs, orientation, real_or_imag)
super(Point_b, self).__init__(locs, orientation, component)
class hField(BaseRx):
class Point_h(BaseRx):
"""
Magnetic field FDEM receiver
:param numpy.ndarray locs: receiver locations (ie. :code:`np.r_[x,y,z]`)
:param string orientation: receiver orientation 'x', 'y' or 'z'
:param string real_or_imag: real or imaginary component 'real' or 'imag'
:param string component: real or imaginary component 'real' or 'imag'
"""
def __init__(self, locs, orientation=None, real_or_imag=None):
def __init__(self, locs, orientation=None, component=None):
self.projField = 'h'
BaseRx.__init__(self, locs, orientation, real_or_imag)
super(Point_h, self).__init__(locs, orientation, component)
class jField(BaseRx):
class Point_j(BaseRx):
"""
Current density FDEM receiver
:param numpy.ndarray locs: receiver locations (ie. :code:`np.r_[x,y,z]`)
:param string orientation: receiver orientation 'x', 'y' or 'z'
:param string real_or_imag: real or imaginary component 'real' or 'imag'
:param string component: real or imaginary component 'real' or 'imag'
"""
def __init__(self, locs, orientation=None, real_or_imag=None):
def __init__(self, locs, orientation=None, component=None):
self.projField = 'j'
BaseRx.__init__(self, locs, orientation, real_or_imag)
super(Point_j, self).__init__(locs, orientation, component)
+1 -1
View File
@@ -26,7 +26,7 @@ def getFDEMProblem(fdemType, comp, SrcList, freq, useMu=False, verbose=False):
x = np.array([np.linspace(-5.*cs,-2.*cs,3),np.linspace(5.*cs,2.*cs,3)]) + cs/4. #don't sample right by the source, slightly off alignment from either staggered grid
XYZ = Utils.ndgrid(x,x,np.linspace(-2.*cs,2.*cs,5))
Rx0 = getattr(EM.FDEM.Rx, comp[0] + 'Field')
Rx0 = getattr(EM.FDEM.Rx, 'Point_' + comp[0])
if comp[2] == 'r':
real_or_imag = 'real'
elif comp[2] == 'i':
+1 -1
View File
@@ -43,7 +43,7 @@ def run(plotIt=True):
rxOffset=10.
bzi = EM.FDEM.Rx.bField(np.array([[rxOffset, 0., 1e-3]]), orientation='z', real_or_imag='imag')
bzi = EM.FDEM.Rx.Point_b(np.array([[rxOffset, 0., 1e-3]]), orientation='z', component='imag')
freqs = np.logspace(1,3,10)
srcLoc = np.array([0., 0., 10.])
+1 -1
View File
@@ -28,7 +28,7 @@ class FDEM_analyticTests(unittest.TestCase):
x = np.linspace(-10,10,5)
XYZ = Utils.ndgrid(x,np.r_[0],np.r_[0])
rxList = EM.FDEM.Rx.eField(XYZ, orientation='x', real_or_imag='imag')
rxList = EM.FDEM.Rx.Point_e(XYZ, orientation='x', component='imag')
Src0 = EM.FDEM.Src.MagDipole([rxList],loc=np.r_[0.,0.,0.], freq=freq)
survey = EM.FDEM.Survey([Src0])