mirror of
https://github.com/wassname/simpeg.git
synced 2026-06-27 21:08:35 +08:00
breaking up tests, also pass in u to df_dm
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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'}
|
||||
|
||||
@@ -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
|
||||
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
|
||||
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
@@ -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()
|
||||
-52
@@ -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):
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user