diff --git a/SimPEG/EM/FDEM/FDEM.py b/SimPEG/EM/FDEM/FDEM.py index f2167fd8..3d6c88a7 100644 --- a/SimPEG/EM/FDEM/FDEM.py +++ b/SimPEG/EM/FDEM/FDEM.py @@ -78,10 +78,10 @@ class BaseFDEMProblem(BaseEMProblem): for rx in src.rxList: df_duFun = getattr(f, '_%sDeriv_u'%rx.projField, None) - df_dudu_dm = df_duFun(src, du_dm, adjoint=False) + df_dudu_dm = df_duFun(src, du_dm, u_src, adjoint=False) df_dmFun = getattr(f, '_%sDeriv_m'%rx.projField, None) - df_dm = df_dmFun(src, v, adjoint=False) + df_dm = df_dmFun(src, v, u_src, adjoint=False) Df_Dm = np.array(df_dudu_dm + df_dm,dtype=complex) diff --git a/SimPEG/EM/FDEM/FieldsFDEM.py b/SimPEG/EM/FDEM/FieldsFDEM.py index fb05b8c6..e7d96dbe 100644 --- a/SimPEG/EM/FDEM/FieldsFDEM.py +++ b/SimPEG/EM/FDEM/FieldsFDEM.py @@ -32,10 +32,9 @@ class Fields_e(Fields): self._edgeCurl = self.survey.prob.mesh.edgeCurl self._aveE2CCV = self.survey.prob.mesh.aveE2CCV self._aveF2CCV = self.survey.prob.mesh.aveF2CCV - self._sigma = self.survey.prob.curModel.sigma - self._sigmaDeriv = self.survey.prob.curModel.sigmaDeriv - self._mui = self.survey.prob.curModel.mui self._nC = self.survey.prob.mesh.nC + self._MeSigma = self.survey.prob.MeSigma + self._MeSigmaDeriv = self.survey.prob.MeSigmaDeriv def _GLoc(self,fieldType): if fieldType == 'e': @@ -60,10 +59,10 @@ class Fields_e(Fields): def _e(self, eSolution, srcList): return self._ePrimary(eSolution,srcList) + self._eSecondary(eSolution,srcList) - def _eDeriv_u(self, src, v, adjoint = False): + def _eDeriv_u(self, src, v, eSolution, adjoint = False): return Identity()*v - def _eDeriv_m(self, src, v, adjoint = False): + def _eDeriv_m(self, src, v, eSolution, adjoint = False): # assuming primary does not depend on the model return Zero() @@ -83,13 +82,13 @@ class Fields_e(Fields): b[:,i] = b[:,i]+ 1./(1j*omega(src.freq)) * S_m return b - def _bSecondaryDeriv_u(self, src, v, adjoint = False): + def _bSecondaryDeriv_u(self, src, v, eSolution, adjoint = False): C = self._edgeCurl if adjoint: return - 1./(1j*omega(src.freq)) * (C.T * v) return - 1./(1j*omega(src.freq)) * (C * v) - def _bSecondaryDeriv_m(self, src, v, adjoint = False): + def _bSecondaryDeriv_m(self, src, v, eSolution, adjoint = False): S_mDeriv, _ = src.evalDeriv(self.prob, adjoint) S_mDeriv = S_mDeriv(v) return 1./(1j * omega(src.freq)) * S_mDeriv @@ -97,27 +96,50 @@ class Fields_e(Fields): def _b(self, eSolution, srcList): return self._bPrimary(eSolution, srcList) + self._bSecondary(eSolution, srcList) - def _bDeriv_u(self, src, v, adjoint=False): + def _bDeriv_u(self, src, v, eSolution, adjoint = False): # Primary does not depend on u return self._bSecondaryDeriv_u(src, v, adjoint) - def _bDeriv_m(self, src, v, adjoint=False): + def _bDeriv_m(self, src, v, eSolution, adjoint = False): # Assuming the primary does not depend on the model return self._bSecondaryDeriv_m(src, v, adjoint) def _j(self, eSolution, srcList): - sigma = self._sigma aveE2CCV = self._aveE2CCV n = int(aveE2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy - # Sigma = sdiag(np.kron(np.ones(n), sigma)) - Sigma = self.prob.MeSigma + Sigma = self._MeSigma VI = sdiag(1./np.kron(np.ones(n), self.prob.mesh.vol)) e = self._e(eSolution, srcList) - return VI * (aveE2CCV * (Sigma *e) ) - def _h(self, eolution, srcList): + def _jDeriv_u(self, src, eSolution, v, adjoint = False): + aveE2CCV = self._aveE2CCV + n = int(aveE2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy + Sigma = self._MeSigma + + VI = sdiag(1./np.kron(np.ones(n), self.prob.mesh.vol)) + + if not adjoint: + return VI * (aveE2CCV * (Sigma * (self._eDeriv_u(src, v, adjoint) ) ) ) + return self._eDeriv_u(src, Sigma.T * (aveE2CCV.T * (VI.T * v) ), adjoint) + + def _jDeriv_m(self, src, v, eSolution, adjoint = False): + aveE2CCV = self._aveE2CCV + Sigma = self._MeSigma + SigmaDeriv = self._MeSigmaDeriv + e = self._e(eSolution, [src]) + + n = int(aveE2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy + + VI = sdiag(1./np.kron(np.ones(n), self.prob.mesh.vol)) + + if not adjoint: + return VI * (aveE2CCV * ( SigmaDeriv(e) * v + self._eDeriv_m(src, v, adjoint) )) + return SigmaDeriv(aveE2CCV.T * (VI.T * e), adjoint) * v + self._eDeriv_m(src, aveE2CCV.T * (VI.T * v), adjoint) + + + def _h(self, eSolution, srcList): b = self._b(eSolution, srcList) Mui = self.survey.prob.MfMui aveF2CCV = self._aveF2CCV @@ -129,30 +151,6 @@ class Fields_e(Fields): return VI * (aveF2CCV * (Mui * b)) - def _jDeriv_u(self, src, v, adjoint=False): - raise NotImplementedError - sigma = self._sigma - aveE2CCV = self._aveE2CCV - n = int(aveE2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy - Sigma = sdiag(sp.kron(np.ones(n), sigma)) - - if not adjoint: - return Sigma * (aveE2CCV * (v + self._eDeriv_u(src, v, adjoint))) - return aveE2CCV.T * Sigma.T * v - - def _jDeriv_m(self, src, v, adjoint=False): - raise NotImplementedError - sigma = self._sigma - aveE2CCV = self._aveE2CCV - n = int(aveE2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy - Sigma = sdiag(sp.kron(np.ones(n), sigma)) - - if not adjoint: - dsigma_dm = self._sigmaDeriv(v) - dSigma_dm = sdiag(sp.kron(np.ones(n), dsigma_dm)) - - - class Fields_b(Fields): knownFields = {'bSolution':'F'} diff --git a/SimPEG/EM/Utils/testingUtils.py b/SimPEG/EM/Utils/testingUtils.py index 9979417d..ae2b7321 100644 --- a/SimPEG/EM/Utils/testingUtils.py +++ b/SimPEG/EM/Utils/testingUtils.py @@ -4,6 +4,13 @@ from SimPEG import EM import sys from scipy.constants import mu_0 +FLR = 1e-20 # "zero", so if residual below this --> pass regardless of order +CONDUCTIVITY = 1e1 +MU = mu_0 +freq = 5e-1 +addrandoms = False + + def getFDEMProblem(fdemType, comp, SrcList, freq, verbose=False): cs = 10. ncx, ncy, ncz = 0, 0, 0 @@ -72,4 +79,43 @@ def getFDEMProblem(fdemType, comp, SrcList, freq, verbose=False): except ImportError, e: prb.Solver = SolverLU - return prb \ No newline at end of file + return prb + +def crossCheckTest(SrcList, fdemType1, fdemType2, comp, TOL=1e-5, verbose=False): + + l2norm = lambda r: np.sqrt(r.dot(r)) + + prb1 = getFDEMProblem(fdemType1, comp, SrcList, freq, verbose) + mesh = prb1.mesh + print 'Cross Checking Forward: %s, %s formulations - %s' % (fdemType1, fdemType2, comp) + m = np.log(np.ones(mesh.nC)*CONDUCTIVITY) + mu = np.log(np.ones(mesh.nC)*MU) + + if addrandoms is True: + m = m + np.random.randn(mesh.nC)*np.log(CONDUCTIVITY)*1e-1 + mu = mu + np.random.randn(mesh.nC)*MU*1e-1 + + # prb1.PropMap.PropModel.mu = mu + # prb1.PropMap.PropModel.mui = 1./mu + survey1 = prb1.survey + d1 = survey1.dpred(m) + + if verbose: + print ' Problem 1 solved' + + + prb2 = getFDEMProblem(fdemType2, comp, SrcList, freq, verbose) + + # prb2.mu = mu + survey2 = prb2.survey + d2 = survey2.dpred(m) + + if verbose: + print ' Problem 2 solved' + + r = d2-d1 + l2r = l2norm(r) + + tol = np.max([TOL*(10**int(np.log10(l2norm(d1)))),FLR]) + print l2norm(d1), l2norm(d2), l2r , tol, l2r < tol + return l2r < tol diff --git a/tests/em/fdem/forward/test_FDEM_forward.py b/tests/em/fdem/forward/test_FDEM_forward.py index da22c950..da446675 100644 --- a/tests/em/fdem/forward/test_FDEM_forward.py +++ b/tests/em/fdem/forward/test_FDEM_forward.py @@ -3,7 +3,7 @@ from SimPEG import * from SimPEG import EM import sys from scipy.constants import mu_0 -from SimPEG.EM.Utils.testingUtils import getFDEMProblem +from SimPEG.EM.Utils.testingUtils import getFDEMProblem, crossCheckTest testEB = True testHJ = True @@ -15,215 +15,63 @@ TOLEBHJ = 1e-5 TOLEJHB = 1 # averaging and more sensitive to boundary condition violations (ie. the impact of violating the boundary conditions in each case is different.) #TODO: choose better testing parameters to lower this -FLR = 1e-20 # "zero", so if residual below this --> pass regardless of order -CONDUCTIVITY = 1e1 -MU = mu_0 -freq = 5e-1 -addrandoms = False - SrcList = ['RawVec', 'MagDipole_Bfield', 'MagDipole', 'CircularLoop'] -def crossCheckTest(fdemType1, fdemType2, comp, TOL=TOLEBHJ): - - l2norm = lambda r: np.sqrt(r.dot(r)) - - prb1 = getFDEMProblem(fdemType1, comp, SrcList, freq, verbose) - mesh = prb1.mesh - print 'Cross Checking Forward: %s, %s formulations - %s' % (fdemType1, fdemType2, comp) - m = np.log(np.ones(mesh.nC)*CONDUCTIVITY) - mu = np.log(np.ones(mesh.nC)*MU) - - if addrandoms is True: - m = m + np.random.randn(mesh.nC)*np.log(CONDUCTIVITY)*1e-1 - mu = mu + np.random.randn(mesh.nC)*MU*1e-1 - - # prb1.PropMap.PropModel.mu = mu - # prb1.PropMap.PropModel.mui = 1./mu - survey1 = prb1.survey - d1 = survey1.dpred(m) - - if verbose: - print ' Problem 1 solved' - - - prb2 = getFDEMProblem(fdemType2, comp, SrcList, freq, verbose) - - # prb2.mu = mu - survey2 = prb2.survey - d2 = survey2.dpred(m) - - if verbose: - print ' Problem 2 solved' - - r = d2-d1 - l2r = l2norm(r) - - tol = np.max([TOL*(10**int(np.log10(l2norm(d1)))),FLR]) - print l2norm(d1), l2norm(d2), l2r , tol, l2r < tol - return l2r < tol - - class FDEM_CrossCheck(unittest.TestCase): if testEB: def test_EB_CrossCheck_exr_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'exr')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'exr', verbose=verbose)) def test_EB_CrossCheck_eyr_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'eyr')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'eyr', verbose=verbose)) def test_EB_CrossCheck_ezr_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'ezr')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'ezr', verbose=verbose)) def test_EB_CrossCheck_exi_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'exi')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'exi', verbose=verbose)) def test_EB_CrossCheck_eyi_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'eyi')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'eyi', verbose=verbose)) def test_EB_CrossCheck_ezi_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'ezi')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'ezi', verbose=verbose)) def test_EB_CrossCheck_bxr_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'bxr')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'bxr', verbose=verbose)) def test_EB_CrossCheck_byr_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'byr')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'byr', verbose=verbose)) def test_EB_CrossCheck_bzr_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'bzr')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'bzr', verbose=verbose)) def test_EB_CrossCheck_bxi_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'bxi')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'bxi', verbose=verbose)) def test_EB_CrossCheck_byi_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'byi')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'byi', verbose=verbose)) def test_EB_CrossCheck_bzi_Eform(self): - self.assertTrue(crossCheckTest('e', 'b', 'bzi')) + self.assertTrue(crossCheckTest(SrcList, 'e', 'b', 'bzi', verbose=verbose)) if testHJ: def test_HJ_CrossCheck_jxr_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'jxr')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'jxr', verbose=verbose)) def test_HJ_CrossCheck_jyr_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'jyr')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'jyr', verbose=verbose)) def test_HJ_CrossCheck_jzr_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'jzr')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'jzr', verbose=verbose)) def test_HJ_CrossCheck_jxi_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'jxi')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'jxi', verbose=verbose)) def test_HJ_CrossCheck_jyi_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'jyi')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'jyi', verbose=verbose)) def test_HJ_CrossCheck_jzi_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'jzi')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'jzi', verbose=verbose)) def test_HJ_CrossCheck_hxr_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'hxr')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'hxr', verbose=verbose)) def test_HJ_CrossCheck_hyr_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'hyr')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'hyr', verbose=verbose)) def test_HJ_CrossCheck_hzr_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'hzr')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'hzr', verbose=verbose)) def test_HJ_CrossCheck_hxi_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'hxi')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'hxi', verbose=verbose)) def test_HJ_CrossCheck_hyi_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'hyi')) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'hyi', verbose=verbose)) def test_HJ_CrossCheck_hzi_Jform(self): - self.assertTrue(crossCheckTest('j', 'h', 'hzi')) - - if testEJ: - def test_EJ_CrossCheck_jxr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'jxr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_jyr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'jyr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_jzr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'jzr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_jxi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'jxi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_jyi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'jyi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_jzi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'jzi', TOL=TOLEJHB)) - - def test_EJ_CrossCheck_exr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'exr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_eyr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'eyr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_ezr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'ezr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_exi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'exi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_eyi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'eyi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_ezi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'ezi', TOL=TOLEJHB)) - - def test_EJ_CrossCheck_bxr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'bxr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_byr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'byr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_bzr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'bzr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_bxi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'bxi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_byi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'byi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_bzi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'bzi', TOL=TOLEJHB)) - - def test_EJ_CrossCheck_hxr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'hxr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_hyr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'hyr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_hzr_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'hzr', TOL=TOLEJHB)) - def test_EJ_CrossCheck_hxi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'hxi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_hyi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'hyi', TOL=TOLEJHB)) - def test_EJ_CrossCheck_hzi_Jform(self): - self.assertTrue(crossCheckTest('e', 'j', 'hzi', TOL=TOLEJHB)) - - if testBH: - def test_BH_CrossCheck_jxr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'jxr', TOL=TOLEJHB)) - def test_BH_CrossCheck_jyr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'jyr', TOL=TOLEJHB)) - def test_BH_CrossCheck_jzr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'jzr', TOL=TOLEJHB)) - def test_BH_CrossCheck_jxi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'jxi', TOL=TOLEJHB)) - def test_BH_CrossCheck_jyi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'jyi', TOL=TOLEJHB)) - def test_BH_CrossCheck_jzi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'jzi', TOL=TOLEJHB)) - - def test_BH_CrossCheck_exr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'exr', TOL=TOLEJHB)) - def test_BH_CrossCheck_eyr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'eyr', TOL=TOLEJHB)) - def test_BH_CrossCheck_ezr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'ezr', TOL=TOLEJHB)) - def test_BH_CrossCheck_exi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'exi', TOL=TOLEJHB)) - def test_BH_CrossCheck_eyi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'eyi', TOL=TOLEJHB)) - def test_BH_CrossCheck_ezi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'ezi', TOL=TOLEJHB)) - - def test_BH_CrossCheck_bxr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'bxr', TOL=TOLEJHB)) - def test_BH_CrossCheck_byr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'byr', TOL=TOLEJHB)) - def test_BH_CrossCheck_bzr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'bzr', TOL=TOLEJHB)) - def test_BH_CrossCheck_bxi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'bxi', TOL=TOLEJHB)) - def test_BH_CrossCheck_byi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'byi', TOL=TOLEJHB)) - def test_BH_CrossCheck_bzi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'bzi', TOL=TOLEJHB)) - - def test_BH_CrossCheck_hxr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'hxr', TOL=TOLEJHB)) - def test_BH_CrossCheck_hyr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'hyr', TOL=TOLEJHB)) - def test_BH_CrossCheck_hzr_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'hzr', TOL=TOLEJHB)) - def test_BH_CrossCheck_hxi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'hxi', TOL=TOLEJHB)) - def test_BH_CrossCheck_hyi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'hyi', TOL=TOLEJHB)) - def test_BH_CrossCheck_hzi_Jform(self): - self.assertTrue(crossCheckTest('b', 'h', 'hzi', TOL=TOLEJHB)) + self.assertTrue(crossCheckTest(SrcList, 'j', 'h', 'hzi', verbose=verbose)) if __name__ == '__main__': unittest.main() \ No newline at end of file diff --git a/tests/em/fdem/forward/test_FDEM_forwardEJHB.py b/tests/em/fdem/forward/test_FDEM_forwardEJHB.py new file mode 100644 index 00000000..be389282 --- /dev/null +++ b/tests/em/fdem/forward/test_FDEM_forwardEJHB.py @@ -0,0 +1,76 @@ +import unittest +from SimPEG import * +from SimPEG import EM +import sys +from scipy.constants import mu_0 +from SimPEG.EM.Utils.testingUtils import getFDEMProblem, crossCheckTest + +testEB = True +testHJ = True +testEJ = True +testBH = True +verbose = False + +TOLEBHJ = 1e-5 +TOLEJHB = 1 # averaging and more sensitive to boundary condition violations (ie. the impact of violating the boundary conditions in each case is different.) +#TODO: choose better testing parameters to lower this + +SrcList = ['RawVec', 'MagDipole_Bfield', 'MagDipole', 'CircularLoop'] + + +class FDEM_CrossCheck(unittest.TestCase): + if testEJ: + def test_EJ_CrossCheck_jxr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'jxr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_jyr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'jyr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_jzr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'jzr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_jxi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'jxi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_jyi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'jyi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_jzi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'jzi', verbose=verbose, TOL=TOLEJHB)) + + def test_EJ_CrossCheck_exr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'exr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_eyr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'eyr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_ezr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'ezr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_exi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'exi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_eyi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'eyi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_ezi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'ezi', verbose=verbose, TOL=TOLEJHB)) + + def test_EJ_CrossCheck_bxr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'bxr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_byr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'byr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_bzr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'bzr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_bxi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'bxi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_byi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'byi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_bzi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'bzi', verbose=verbose, TOL=TOLEJHB)) + + def test_EJ_CrossCheck_hxr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hxr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_hyr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hyr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_hzr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hzr', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_hxi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hxi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_hyi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hyi', verbose=verbose, TOL=TOLEJHB)) + def test_EJ_CrossCheck_hzi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hzi', verbose=verbose, TOL=TOLEJHB)) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/em/fdem/forward/test_FDEM_forwardHB.py b/tests/em/fdem/forward/test_FDEM_forwardHB.py new file mode 100644 index 00000000..78b3e376 --- /dev/null +++ b/tests/em/fdem/forward/test_FDEM_forwardHB.py @@ -0,0 +1,76 @@ +import unittest +from SimPEG import * +from SimPEG import EM +import sys +from scipy.constants import mu_0 +from SimPEG.EM.Utils.testingUtils import getFDEMProblem, crossCheckTest + +testEB = True +testHJ = True +testEJ = True +testBH = True +verbose = False + +TOLEBHJ = 1e-5 +TOLEJHB = 1 # averaging and more sensitive to boundary condition violations (ie. the impact of violating the boundary conditions in each case is different.) +#TODO: choose better testing parameters to lower this + +SrcList = ['RawVec', 'MagDipole_Bfield', 'MagDipole', 'CircularLoop'] + + +class FDEM_CrossCheck(unittest.TestCase): + if testBH: + def test_BH_CrossCheck_jxr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'jxr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_jyr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'jyr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_jzr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'jzr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_jxi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'jxi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_jyi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'jyi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_jzi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'jzi', verbose=verbose, TOL=TOLEJHB)) + + def test_BH_CrossCheck_exr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'exr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_eyr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'eyr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_ezr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'ezr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_exi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'exi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_eyi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'eyi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_ezi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'ezi', verbose=verbose, TOL=TOLEJHB)) + + def test_BH_CrossCheck_bxr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'bxr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_byr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'byr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_bzr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'bzr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_bxi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'bxi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_byi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'byi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_bzi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'bzi', verbose=verbose, TOL=TOLEJHB)) + + def test_BH_CrossCheck_hxr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'hxr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_hyr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'hyr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_hzr_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'hzr', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_hxi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'hxi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_hyi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'hyi', verbose=verbose, TOL=TOLEJHB)) + def test_BH_CrossCheck_hzi_Jform(self): + self.assertTrue(crossCheckTest(SrcList, 'b', 'h', 'hzi', verbose=verbose, TOL=TOLEJHB)) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/tests/em/fdem/inverse/adjoint/test_FDEM_adjointEB.py b/tests/em/fdem/inverse/adjoint/test_FDEM_adjointEB.py new file mode 100644 index 00000000..f917845a --- /dev/null +++ b/tests/em/fdem/inverse/adjoint/test_FDEM_adjointEB.py @@ -0,0 +1,130 @@ +import unittest +from SimPEG import * +from SimPEG import EM +import sys +from scipy.constants import mu_0 +from SimPEG.EM.Utils.testingUtils import getFDEMProblem + +testE = True +testB = False + +verbose = False + +TOL = 1e-5 +FLR = 1e-20 # "zero", so if residual below this --> pass regardless of order +CONDUCTIVITY = 1e1 +MU = mu_0 +freq = 1e-1 +addrandoms = True + +SrcType = 'RawVec' #or 'MAgDipole_Bfield', 'CircularLoop', 'RawVec' + +def adjointTest(fdemType, comp): + prb = getFDEMProblem(fdemType, comp, [SrcType], freq) + print 'Adjoint %s formulation - %s' % (fdemType, comp) + + m = np.log(np.ones(prb.mapping.nP)*CONDUCTIVITY) + mu = np.ones(prb.mesh.nC)*MU + + if addrandoms is True: + m = m + np.random.randn(prb.mapping.nP)*np.log(CONDUCTIVITY)*1e-1 + mu = mu + np.random.randn(prb.mesh.nC)*MU*1e-1 + + survey = prb.survey + # prb.PropMap.PropModel.mu = mu + # prb.PropMap.PropModel.mui = 1./mu + u = prb.fields(m) + + v = np.random.rand(survey.nD) + w = np.random.rand(prb.mesh.nC) + + vJw = v.dot(prb.Jvec(m, w, u)) + wJtv = w.dot(prb.Jtvec(m, v, u)) + tol = np.max([TOL*(10**int(np.log10(np.abs(vJw)))),FLR]) + print vJw, wJtv, vJw - wJtv, tol, np.abs(vJw - wJtv) < tol + return np.abs(vJw - wJtv) < tol + +class FDEM_AdjointTests(unittest.TestCase): + if testE: + # def test_Jtvec_adjointTest_exr_Eform(self): + # self.assertTrue(adjointTest('e', 'exr')) + # def test_Jtvec_adjointTest_eyr_Eform(self): + # self.assertTrue(adjointTest('e', 'eyr')) + # def test_Jtvec_adjointTest_ezr_Eform(self): + # self.assertTrue(adjointTest('e', 'ezr')) + # def test_Jtvec_adjointTest_exi_Eform(self): + # self.assertTrue(adjointTest('e', 'exi')) + # def test_Jtvec_adjointTest_eyi_Eform(self): + # self.assertTrue(adjointTest('e', 'eyi')) + # def test_Jtvec_adjointTest_ezi_Eform(self): + # self.assertTrue(adjointTest('e', 'ezi')) + + # def test_Jtvec_adjointTest_bxr_Eform(self): + # self.assertTrue(adjointTest('e', 'bxr')) + # def test_Jtvec_adjointTest_byr_Eform(self): + # self.assertTrue(adjointTest('e', 'byr')) + # def test_Jtvec_adjointTest_bzr_Eform(self): + # self.assertTrue(adjointTest('e', 'bzr')) + # def test_Jtvec_adjointTest_bxi_Eform(self): + # self.assertTrue(adjointTest('e', 'bxi')) + # def test_Jtvec_adjointTest_byi_Eform(self): + # self.assertTrue(adjointTest('e', 'byi')) + # def test_Jtvec_adjointTest_bzi_Eform(self): + # self.assertTrue(adjointTest('e', 'bzi')) + + def test_Jtvec_adjointTest_exr_Eform(self): + self.assertTrue(adjointTest('e', 'jxr')) + # def test_Jtvec_adjointTest_eyr_Eform(self): + # self.assertTrue(adjointTest('e', 'jyr')) + # def test_Jtvec_adjointTest_ezr_Eform(self): + # self.assertTrue(adjointTest('e', 'jzr')) + # def test_Jtvec_adjointTest_exi_Eform(self): + # self.assertTrue(adjointTest('e', 'jxi')) + # def test_Jtvec_adjointTest_eyi_Eform(self): + # self.assertTrue(adjointTest('e', 'jyi')) + # def test_Jtvec_adjointTest_ezi_Eform(self): + # self.assertTrue(adjointTest('e', 'jzi')) + + # def test_Jtvec_adjointTest_bxr_Eform(self): + # self.assertTrue(adjointTest('e', 'hxr')) + # def test_Jtvec_adjointTest_byr_Eform(self): + # self.assertTrue(adjointTest('e', 'hyr')) + # def test_Jtvec_adjointTest_bzr_Eform(self): + # self.assertTrue(adjointTest('e', 'hzr')) + # def test_Jtvec_adjointTest_bxi_Eform(self): + # self.assertTrue(adjointTest('e', 'hxi')) + # def test_Jtvec_adjointTest_byi_Eform(self): + # self.assertTrue(adjointTest('e', 'hyi')) + # def test_Jtvec_adjointTest_bzi_Eform(self): + # self.assertTrue(adjointTest('e', 'hzi')) + + if testB: + def test_Jtvec_adjointTest_exr_Bform(self): + self.assertTrue(adjointTest('b', 'exr')) + def test_Jtvec_adjointTest_eyr_Bform(self): + self.assertTrue(adjointTest('b', 'eyr')) + def test_Jtvec_adjointTest_ezr_Bform(self): + self.assertTrue(adjointTest('b', 'ezr')) + def test_Jtvec_adjointTest_exi_Bform(self): + self.assertTrue(adjointTest('b', 'exi')) + def test_Jtvec_adjointTest_eyi_Bform(self): + self.assertTrue(adjointTest('b', 'eyi')) + def test_Jtvec_adjointTest_ezi_Bform(self): + self.assertTrue(adjointTest('b', 'ezi')) + + def test_Jtvec_adjointTest_bxr_Bform(self): + self.assertTrue(adjointTest('b', 'bxr')) + def test_Jtvec_adjointTest_byr_Bform(self): + self.assertTrue(adjointTest('b', 'byr')) + def test_Jtvec_adjointTest_bzr_Bform(self): + self.assertTrue(adjointTest('b', 'bzr')) + def test_Jtvec_adjointTest_bxi_Bform(self): + self.assertTrue(adjointTest('b', 'bxi')) + def test_Jtvec_adjointTest_byi_Bform(self): + self.assertTrue(adjointTest('b', 'byi')) + def test_Jtvec_adjointTest_bzi_Bform(self): + self.assertTrue(adjointTest('b', 'bzi')) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/em/fdem/inverse/adjoint/test_FDEM_adjoint.py b/tests/em/fdem/inverse/adjoint/test_FDEM_adjointHJ.py similarity index 60% rename from tests/em/fdem/inverse/adjoint/test_FDEM_adjoint.py rename to tests/em/fdem/inverse/adjoint/test_FDEM_adjointHJ.py index f77f2131..68224e34 100644 --- a/tests/em/fdem/inverse/adjoint/test_FDEM_adjoint.py +++ b/tests/em/fdem/inverse/adjoint/test_FDEM_adjointHJ.py @@ -45,58 +45,6 @@ def adjointTest(fdemType, comp): return np.abs(vJw - wJtv) < tol class FDEM_AdjointTests(unittest.TestCase): - if testEB: - def test_Jtvec_adjointTest_exr_Eform(self): - self.assertTrue(adjointTest('e', 'exr')) - def test_Jtvec_adjointTest_eyr_Eform(self): - self.assertTrue(adjointTest('e', 'eyr')) - def test_Jtvec_adjointTest_ezr_Eform(self): - self.assertTrue(adjointTest('e', 'ezr')) - def test_Jtvec_adjointTest_exi_Eform(self): - self.assertTrue(adjointTest('e', 'exi')) - def test_Jtvec_adjointTest_eyi_Eform(self): - self.assertTrue(adjointTest('e', 'eyi')) - def test_Jtvec_adjointTest_ezi_Eform(self): - self.assertTrue(adjointTest('e', 'ezi')) - - def test_Jtvec_adjointTest_bxr_Eform(self): - self.assertTrue(adjointTest('e', 'bxr')) - def test_Jtvec_adjointTest_byr_Eform(self): - self.assertTrue(adjointTest('e', 'byr')) - def test_Jtvec_adjointTest_bzr_Eform(self): - self.assertTrue(adjointTest('e', 'bzr')) - def test_Jtvec_adjointTest_bxi_Eform(self): - self.assertTrue(adjointTest('e', 'bxi')) - def test_Jtvec_adjointTest_byi_Eform(self): - self.assertTrue(adjointTest('e', 'byi')) - def test_Jtvec_adjointTest_bzi_Eform(self): - self.assertTrue(adjointTest('e', 'bzi')) - - def test_Jtvec_adjointTest_exr_Bform(self): - self.assertTrue(adjointTest('b', 'exr')) - def test_Jtvec_adjointTest_eyr_Bform(self): - self.assertTrue(adjointTest('b', 'eyr')) - def test_Jtvec_adjointTest_ezr_Bform(self): - self.assertTrue(adjointTest('b', 'ezr')) - def test_Jtvec_adjointTest_exi_Bform(self): - self.assertTrue(adjointTest('b', 'exi')) - def test_Jtvec_adjointTest_eyi_Bform(self): - self.assertTrue(adjointTest('b', 'eyi')) - def test_Jtvec_adjointTest_ezi_Bform(self): - self.assertTrue(adjointTest('b', 'ezi')) - def test_Jtvec_adjointTest_bxr_Bform(self): - self.assertTrue(adjointTest('b', 'bxr')) - def test_Jtvec_adjointTest_byr_Bform(self): - self.assertTrue(adjointTest('b', 'byr')) - def test_Jtvec_adjointTest_bzr_Bform(self): - self.assertTrue(adjointTest('b', 'bzr')) - def test_Jtvec_adjointTest_bxi_Bform(self): - self.assertTrue(adjointTest('b', 'bxi')) - def test_Jtvec_adjointTest_byi_Bform(self): - self.assertTrue(adjointTest('b', 'byi')) - def test_Jtvec_adjointTest_bzi_Bform(self): - self.assertTrue(adjointTest('b', 'bzi')) - if testHJ: def test_Jtvec_adjointTest_jxr_Jform(self): diff --git a/tests/em/fdem/inverse/derivs/test_FDEM_derivs.py b/tests/em/fdem/inverse/derivs/test_FDEM_derivs.py index 52108c4e..9831d279 100644 --- a/tests/em/fdem/inverse/derivs/test_FDEM_derivs.py +++ b/tests/em/fdem/inverse/derivs/test_FDEM_derivs.py @@ -6,8 +6,9 @@ from scipy.constants import mu_0 from SimPEG.EM.Utils.testingUtils import getFDEMProblem testDerivs = True -testEB = True -testHJ = True +testE = True +testB = False +testHJ = False verbose = False @@ -43,33 +44,60 @@ def derivTest(fdemType, comp): class FDEM_DerivTests(unittest.TestCase): - if testEB: + if testE: + # def test_Jvec_exr_Eform(self): + # self.assertTrue(derivTest('e', 'exr')) + # def test_Jvec_eyr_Eform(self): + # self.assertTrue(derivTest('e', 'eyr')) + # def test_Jvec_ezr_Eform(self): + # self.assertTrue(derivTest('e', 'ezr')) + # def test_Jvec_exi_Eform(self): + # self.assertTrue(derivTest('e', 'exi')) + # def test_Jvec_eyi_Eform(self): + # self.assertTrue(derivTest('e', 'eyi')) + # def test_Jvec_ezi_Eform(self): + # self.assertTrue(derivTest('e', 'ezi')) + + # def test_Jvec_bxr_Eform(self): + # self.assertTrue(derivTest('e', 'bxr')) + # def test_Jvec_byr_Eform(self): + # self.assertTrue(derivTest('e', 'byr')) + # def test_Jvec_bzr_Eform(self): + # self.assertTrue(derivTest('e', 'bzr')) + # def test_Jvec_bxi_Eform(self): + # self.assertTrue(derivTest('e', 'bxi')) + # def test_Jvec_byi_Eform(self): + # self.assertTrue(derivTest('e', 'byi')) + # def test_Jvec_bzi_Eform(self): + # self.assertTrue(derivTest('e', 'bzi')) + def test_Jvec_exr_Eform(self): - self.assertTrue(derivTest('e', 'exr')) - def test_Jvec_eyr_Eform(self): - self.assertTrue(derivTest('e', 'eyr')) - def test_Jvec_ezr_Eform(self): - self.assertTrue(derivTest('e', 'ezr')) - def test_Jvec_exi_Eform(self): - self.assertTrue(derivTest('e', 'exi')) - def test_Jvec_eyi_Eform(self): - self.assertTrue(derivTest('e', 'eyi')) - def test_Jvec_ezi_Eform(self): - self.assertTrue(derivTest('e', 'ezi')) + self.assertTrue(derivTest('e', 'jxr')) + # def test_Jvec_eyr_Eform(self): + # self.assertTrue(derivTest('e', 'jyr')) + # def test_Jvec_ezr_Eform(self): + # self.assertTrue(derivTest('e', 'jzr')) + # def test_Jvec_exi_Eform(self): + # self.assertTrue(derivTest('e', 'jxi')) + # def test_Jvec_eyi_Eform(self): + # self.assertTrue(derivTest('e', 'jyi')) + # def test_Jvec_ezi_Eform(self): + # self.assertTrue(derivTest('e', 'jzi')) - def test_Jvec_bxr_Eform(self): - self.assertTrue(derivTest('e', 'bxr')) - def test_Jvec_byr_Eform(self): - self.assertTrue(derivTest('e', 'byr')) - def test_Jvec_bzr_Eform(self): - self.assertTrue(derivTest('e', 'bzr')) - def test_Jvec_bxi_Eform(self): - self.assertTrue(derivTest('e', 'bxi')) - def test_Jvec_byi_Eform(self): - self.assertTrue(derivTest('e', 'byi')) - def test_Jvec_bzi_Eform(self): - self.assertTrue(derivTest('e', 'bzi')) + # def test_Jvec_bxr_Eform(self): + # self.assertTrue(derivTest('e', 'hxr')) + # def test_Jvec_byr_Eform(self): + # self.assertTrue(derivTest('e', 'hyr')) + # def test_Jvec_bzr_Eform(self): + # self.assertTrue(derivTest('e', 'hzr')) + # def test_Jvec_bxi_Eform(self): + # self.assertTrue(derivTest('e', 'hxi')) + # def test_Jvec_byi_Eform(self): + # self.assertTrue(derivTest('e', 'hyi')) + # def test_Jvec_bzi_Eform(self): + # self.assertTrue(derivTest('e', 'hzi')) + if testB: def test_Jvec_exr_Bform(self): self.assertTrue(derivTest('b', 'exr')) def test_Jvec_eyr_Bform(self):