diff --git a/simpegEM/TDEM/SurveyTDEM.py b/simpegEM/TDEM/SurveyTDEM.py index 34bbfe42..845cb515 100644 --- a/simpegEM/TDEM/SurveyTDEM.py +++ b/simpegEM/TDEM/SurveyTDEM.py @@ -6,13 +6,17 @@ from simpegEM.Utils import Sources class RxTDEM(Survey.BaseTimeRx): knownRxTypes = { - 'ex':['e', 'Ex'], - 'ey':['e', 'Ey'], - 'ez':['e', 'Ez'], + 'ex':['e', 'Ex', 'N'], + 'ey':['e', 'Ey', 'N'], + 'ez':['e', 'Ez', 'N'], - 'bx':['b', 'Fx'], - 'by':['b', 'Fy'], - 'bz':['b', 'Fz'], + 'bx':['b', 'Fx', 'N'], + 'by':['b', 'Fy', 'N'], + 'bz':['b', 'Fz', 'N'], + + 'dbxdt':['b', 'Fx', 'CC'], + 'dbydt':['b', 'Fy', 'CC'], + 'dbzdt':['b', 'Fz', 'CC'], } def __init__(self, locs, times, rxType): @@ -28,6 +32,24 @@ class RxTDEM(Survey.BaseTimeRx): """Grid Location projection (e.g. Ex Fy ...)""" return self.knownRxTypes[self.rxType][1] + @property + def projTLoc(self): + """Time Location projection (e.g. CC N)""" + return self.knownRxTypes[self.rxType][2] + + def getTimeP(self, timeMesh): + """ + Returns the time projection matrix. + + .. note:: + + This is not stored in memory, but is created on demand. + """ + if self.rxType in ['dbxdt','dbydt','dbzdt']: + return timeMesh.getInterpolationMat(self.times, self.projTLoc)*timeMesh.faceDiv + else: + return timeMesh.getInterpolationMat(self.times, self.projTLoc) + def projectFields(self, tx, mesh, timeMesh, u): P = self.getP(mesh, timeMesh) u_part = Utils.mkvc(u[tx, self.projField, :]) @@ -88,7 +110,7 @@ class TxTDEM(Survey.BaseTx): return {"b": mesh.edgeCurl*MVP} - def getJs(self, time): + def getJs(self, mesh, time): return None class SurveyTDEM(Survey.BaseSurvey): diff --git a/simpegEM/Tests/test_TDEM_combos.py b/simpegEM/Tests/test_TDEM_combos.py index c63fbcdd..17526758 100644 --- a/simpegEM/Tests/test_TDEM_combos.py +++ b/simpegEM/Tests/test_TDEM_combos.py @@ -68,8 +68,14 @@ class TDEM_bDerivTests(unittest.TestCase): def test_Jvec_bxbzbz(self): self.assertTrue(dotestJvec(*getProb(rxTypes='bx,bz,bz'))) def test_Adjoint_bxbzbz(self): self.assertLess(*dotestAdjoint(*getProb(rxTypes='bx,bz,bz'))) - # def test_Jvec_ey(self): self.assertTrue(dotestJvec(*getProb(rxTypes='ey'))) - # def test_Adjoint_ey(self): self.assertLess(*dotestAdjoint(*getProb(rxTypes='ey'))) + def test_Jvec_dbxdt(self): self.assertTrue(dotestJvec(*getProb(rxTypes='dbxdt'))) + def test_Adjoint_dbxdt(self): self.assertLess(*dotestAdjoint(*getProb(rxTypes='dbxdt'))) + + def test_Jvec_dbzdt(self): self.assertTrue(dotestJvec(*getProb(rxTypes='dbzdt'))) + def test_Adjoint_dbzdt(self): self.assertLess(*dotestAdjoint(*getProb(rxTypes='dbzdt'))) + + def test_Jvec_dbxdtbz(self): self.assertTrue(dotestJvec(*getProb(rxTypes='dbxdt,bz'))) + def test_Adjoint_dbxdtbz(self): self.assertLess(*dotestAdjoint(*getProb(rxTypes='dbxdt,bz'))) if __name__ == '__main__': diff --git a/simpegEM/Tests/test_TDEM_inversion.py b/simpegEM/Tests/test_TDEM_inversion.py index aca1e06c..12613ad5 100644 --- a/simpegEM/Tests/test_TDEM_inversion.py +++ b/simpegEM/Tests/test_TDEM_inversion.py @@ -1,6 +1,6 @@ from SimPEG import * import simpegEM as EM -from simpegem1d import Utils1D +# from simpegem1d import Utils1D from scipy.constants import mu_0 import matplotlib.pyplot as plt