e,b,h,j from j formulation

This commit is contained in:
Lindsey Heagy
2016-02-20 14:30:55 -08:00
parent 0646a930ab
commit f1527f994b
4 changed files with 338 additions and 139 deletions
+150 -82
View File
@@ -774,8 +774,12 @@ class Fields_j(Fields):
'h' : ['jSolution','E','_h'],
'hPrimary' : ['jSolution','E','_hPrimary'],
'hSecondary' : ['jSolution','E','_hSecondary'],
'e' : ['jSolution','C','_e'],
'b' : ['jSolution','C','_b'],
'e' : ['jSolution','CCV','_e'],
'ePrimary' : ['jSolution','CCV','_ePrimary'],
'eSecondary' : ['jSolution','CCV','_eSecondary'],
'b' : ['jSolution','CCV','_b'],
'bPrimary' : ['jSolution','CCV','_bPrimary'],
'bSecondary' : ['jSolution','CCV','_bSecondary'],
}
def __init__(self,mesh,survey,**kwargs):
@@ -784,10 +788,10 @@ class Fields_j(Fields):
def startup(self):
self.prob = self.survey.prob
self._edgeCurl = self.survey.prob.mesh.edgeCurl
self._MeMu = self.survey.prob.MeMu
self._MeMuI = self.survey.prob.MeMuI
self._MfRho = self.survey.prob.MfRho
self._MfRhoDeriv = self.survey.prob.MfRhoDeriv
self._Me = self.survey.prob.Me
self._rho = self.survey.prob.curModel.rho
self._mu = self.survey.prob.curModel.mui
self._aveF2CCV = self.survey.prob.mesh.aveF2CCV
@@ -907,60 +911,9 @@ class Fields_j(Fields):
return h
def _hSecondaryDeriv_u(self, src, du_dm_v, adjoint=False):
"""
Derivative of the secondary magnetic field with respect to the thing we solved for
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray du_dm_v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the derivative of the secondary magnetic field with respect to the field we solved for with a vector
"""
if not adjoint:
return -1./(1j*omega(src.freq)) * self._MeMuI * (self._edgeCurl.T * (self._MfRho * du_dm_v) )
elif adjoint:
return -1./(1j*omega(src.freq)) * self._MfRho.T * (self._edgeCurl * ( self._MeMuI.T * du_dm_v))
def _hSecondaryDeriv_m(self, src, v, adjoint=False):
"""
Derivative of the secondary magnetic field with respect to the inversion model
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the derivative of the secondary magnetic field with respect to the model with a vector
"""
jSolution = self[[src],'jSolution']
MeMuI = self._MeMuI
C = self._edgeCurl
MfRho = self._MfRho
MfRhoDeriv = self._MfRhoDeriv
Me = self._Me
if not adjoint:
hDeriv_m = -1./(1j*omega(src.freq)) * MeMuI * (C.T * (MfRhoDeriv(jSolution)*v ) )
elif adjoint:
hDeriv_m = -1./(1j*omega(src.freq)) * MfRhoDeriv(jSolution).T * ( C * (MeMuI.T * v ) )
S_mDeriv,_ = src.evalDeriv(self.prob, adjoint = adjoint)
if not adjoint:
S_mDeriv = S_mDeriv(v)
hDeriv_m = hDeriv_m + 1./(1j*omega(src.freq)) * MeMuI * (Me * S_mDeriv)
elif adjoint:
S_mDeriv = S_mDeriv(Me.T * (MeMuI.T * v))
hDeriv_m = hDeriv_m + 1./(1j*omega(src.freq)) * S_mDeriv
return hDeriv_m
def _hDeriv_u(self, src, du_dm_v, adjoint=False):
"""
Partial derivative of the total magnetic field with respect to the thing we solved for
Derivative of the magnetic field with respect to the thing we solved for
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray du_dm_v: vector to take product with
@@ -969,50 +922,165 @@ class Fields_j(Fields):
:return: product of the derivative of the magnetic field with respect to the field we solved for with a vector
"""
return self._hSecondaryDeriv_u(src, du_dm_v, adjoint)
if not adjoint:
return -1./(1j*omega(src.freq)) * self._MeMuI * (self._edgeCurl.T * (self._MfRho * du_dm_v) )
return -1./(1j*omega(src.freq)) * self._MfRho.T * (self._edgeCurl * ( self._MeMuI.T * du_dm_v))
def _hDeriv_m(self, src, v, adjoint=False):
"""
Partial derivative of the total magnetic field density with respect to the inversion model.
Derivative of the magnetic field with respect to the inversion model
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the magnetic field derivative with respect to the inversion model with a vector
:return: product of the derivative of the magnetic field with respect to the model with a vector
"""
# assuming the primary doesn't depend on the model
return self._hSecondaryDeriv_m(src, u, v, adjoint)
jSolution = Utils.mkvc(self[[src],'jSolution'])
MeMuI = self._MeMuI
C = self._edgeCurl
MfRho = self._MfRho
MfRhoDeriv = self._MfRhoDeriv
S_mDeriv,_ = src.evalDeriv(self.prob, adjoint = adjoint)
def _e(self, jSolution, srcList):
rho = self._rho
aveF2CCV = self._aveF2CCV
n = int(aveF2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy
if not adjoint:
hDeriv_m = -1./(1j*omega(src.freq)) * MeMuI * (C.T * (MfRhoDeriv(jSolution)*v ) )
S_mDeriv = S_mDeriv(v)
hDeriv_m = hDeriv_m + 1./(1j*omega(src.freq)) * MeMuI * ( S_mDeriv)
elif adjoint:
hDeriv_m = -1./(1j*omega(src.freq)) * MfRhoDeriv(jSolution).T * ( C * (MeMuI.T * v ) )
S_mDeriv = S_mDeriv(MeMuI.T * v)
hDeriv_m = hDeriv_m + 1./(1j*omega(src.freq)) * S_mDeriv
Rho = self.prob.MfRho
return hDeriv_m
def _ePrimary(self, jSolution, srcList):
"""
Primary electric field
:param numpy.ndarray hSolution: field we solved for
:param list srcList: list of sources
:rtype: numpy.ndarray
:return: primary electric field as defined by the sources
"""
n = int(self._aveF2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
return VI * (self._aveF2CCV * (self._MfRho * self._jPrimary(jSolution, srcList)))
def _eSecondary(self, jSolution, srcList):
"""
Secondary electric field from jSolution
:param numpy.ndarray hSolution: field we solved for
:param list srcList: list of sources
:rtype: numpy.ndarray
:return: secondary electric field
"""
n = int(self._aveF2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
return VI * (self._aveF2CCV * (self._MfRho * self._jSecondary(jSolution, srcList)))
def _eDeriv_u(self, src, du_dm_v, adjoint=False):
"""
Derivative of the electric field with respect to the thing we solved for
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray du_dm_v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the derivative of the electric field with respect to the field we solved for with a vector
"""
n = int(self._aveF2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
if adjoint:
return self._MfRho.T * ( self._aveF2CCV.T * ( VI.T * du_dm_v ) )
return VI * (self._aveF2CCV * (self._MfRho * du_dm_v))
def _eDeriv_m(self, src, v, adjoint=False):
"""
Derivative of the electric field with respect to the inversion model
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the derivative of the electric field with respect to the model with a vector
"""
jSolution = Utils.mkvc(self[src,'jSolution'])
n = int(self._aveF2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
if adjoint:
return self._MfRhoDeriv(jSolution).T * ( self._aveF2CCV.T * ( VI.T * v ) )
return VI * (self._aveF2CCV * (self._MfRhoDeriv(jSolution) * v))
def _bPrimary(self, jSolution, srcList):
"""
Primary magnetic flux density
:param numpy.ndarray hSolution: field we solved for
:param list srcList: list of sources
:rtype: numpy.ndarray
:return: primary magnetic flux density
"""
hPrimary = self._hPrimary(jSolution, srcList)
n = int(self._aveE2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
return VI * (self._aveE2CCV * (self._MeMu * hPrimary))
j = self._j(jSolution, srcList)
def _bSecondary(self, jSolution, srcList):
"""
Secondary magnetic flux density from jSolution
return VI * (aveF2CCV * (Rho * j))
def _eDeriv_u(self, src, u, v, adjoint=False):
raise NotImplementedError
def _eDeriv_m(self, src, u, v, adjoint=False):
raise NotImplementedError
def _b(self, jSolution, srcList):
h = self._h(jSolution, srcList)
Mu = self.prob.MeMu
aveE2CCV = self._aveE2CCV
n = int(aveE2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy
# Mu = sdiag(sp.kron(np.ones(n), mu))
:param numpy.ndarray hSolution: field we solved for
:param list srcList: list of sources
:rtype: numpy.ndarray
:return: secondary magnetic flux density
"""
n = int(self._aveE2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
return VI * (aveE2CCV * (Mu * h))
return VI * (self._aveE2CCV * (self._edgeCurl.T * (self._MfRho * jSolution)))
def _bDeriv_u(self, src, du_dm_v, adjoint=False):
"""
Derivative of the magnetic flux density with respect to the thing we solved for
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray du_dm_v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the derivative of the magnetic flux density with respect to the field we solved for with a vector
"""
n = int(self._aveF2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
if adjoint:
return self._MfRho.T * ( self._edgeCurl * ( self._aveE2CCV.T * (VI.T * du_dm_v) ) )
return VI * (self._aveE2CCV * (self._edgeCurl.T * (self._MfRho * du_dm_v)))
def _bDeriv_m(self, src, v, adjoint=False):
"""
Derivative of the magnetic flux density with respect to the inversion model
:param SimPEG.EM.FDEM.Src src: source
:param numpy.ndarray v: vector to take product with
:param bool adjoint: adjoint?
:rtype: numpy.ndarray
:return: product of the derivative of the magnetic flux density with respect to the model with a vector
"""
jSolution = self[src,'jSolution']
n = int(self._aveE2CCV.shape[0] / self._nC) # number of components
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
if adjoint:
return self._MfRhoDeriv(jSolution).T * ( self._edgeCurl * (self._aveE2CCV.T * ( VI.T * v)) )
return VI * (self._aveE2CCV * (self._edgeCurl.T * (self._MfRhoDeriv(jSolution) * v )))
class Fields_h(Fields):
@@ -1208,7 +1276,7 @@ class Fields_h(Fields):
def _e(self, hSolution, srcList):
rho = self._rho
aveF2CCV = self._aveF2CCV
n = int(aveF2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy
n = int(self._aveF2CCV.shape[0] / self._nC) #TODO: This is a bit sloppy
Rho = self.prob.MfRho
VI = sdiag(np.kron(np.ones(n), 1./self.prob.mesh.vol))
+55 -5
View File
@@ -5,12 +5,9 @@ import sys
from scipy.constants import mu_0
from SimPEG.EM.Utils.testingUtils import getFDEMProblem, crossCheckTest
testEB = False
testHJ = False
testEJ = False
testBH = False
testEJ = True
testBH = True
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
@@ -71,5 +68,58 @@ class FDEM_CrossCheck(unittest.TestCase):
def test_EJ_CrossCheck_hzi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'e', 'j', 'hzi', TOL=TOLEJHB))
if testBH:
def test_HB_CrossCheck_jxr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'jxr', TOL=TOLEJHB))
def test_HB_CrossCheck_jyr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'jyr', TOL=TOLEJHB))
def test_HB_CrossCheck_jzr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'jzr', TOL=TOLEJHB))
def test_HB_CrossCheck_jxi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'jxi', TOL=TOLEJHB))
def test_HB_CrossCheck_jyi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'jyi', TOL=TOLEJHB))
def test_HB_CrossCheck_jzi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'jzi', TOL=TOLEJHB))
def test_HB_CrossCheck_exr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'exr', TOL=TOLEJHB))
def test_HB_CrossCheck_eyr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'eyr', TOL=TOLEJHB))
def test_HB_CrossCheck_ezr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'ezr', TOL=TOLEJHB))
def test_HB_CrossCheck_exi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'exi', TOL=TOLEJHB))
def test_HB_CrossCheck_eyi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'eyi', TOL=TOLEJHB))
def test_HB_CrossCheck_ezi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'ezi', TOL=TOLEJHB))
def test_HB_CrossCheck_bxr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'bxr', TOL=TOLEJHB))
def test_HB_CrossCheck_byr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'byr', TOL=TOLEJHB))
def test_HB_CrossCheck_bzr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'bzr', TOL=TOLEJHB))
def test_HB_CrossCheck_bxi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'bxi', TOL=TOLEJHB))
def test_HB_CrossCheck_byi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'byi', TOL=TOLEJHB))
def test_HB_CrossCheck_bzi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'bzi', TOL=TOLEJHB))
def test_HB_CrossCheck_hxr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'hxr', TOL=TOLEJHB))
def test_HB_CrossCheck_hyr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'hyr', TOL=TOLEJHB))
def test_HB_CrossCheck_hzr_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'hzr', TOL=TOLEJHB))
def test_HB_CrossCheck_hxi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'hxi', TOL=TOLEJHB))
def test_HB_CrossCheck_hyi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'hyi', TOL=TOLEJHB))
def test_HB_CrossCheck_hzi_Jform(self):
self.assertTrue(crossCheckTest(SrcList, 'h', 'b', 'hzi', TOL=TOLEJHB))
if __name__ == '__main__':
unittest.main()
@@ -71,33 +71,59 @@ class FDEM_AdjointTests(unittest.TestCase):
def test_Jtvec_adjointTest_hyi_Jform(self):
self.assertTrue(adjointTest('j', 'hyi'))
def test_Jtvec_adjointTest_hzi_Jform(self):
self.assertTrue(adjointTest('j', 'hzi'))
self.assertTrue(adjointTest('j', 'hzi'))
def test_Jtvec_adjointTest_hxr_Hform(self):
self.assertTrue(adjointTest('h', 'hxr'))
def test_Jtvec_adjointTest_hyr_Hform(self):
self.assertTrue(adjointTest('h', 'hyr'))
def test_Jtvec_adjointTest_hzr_Hform(self):
self.assertTrue(adjointTest('h', 'hzr'))
def test_Jtvec_adjointTest_hxi_Hform(self):
self.assertTrue(adjointTest('h', 'hxi'))
def test_Jtvec_adjointTest_hyi_Hform(self):
self.assertTrue(adjointTest('h', 'hyi'))
def test_Jtvec_adjointTest_hzi_Hform(self):
self.assertTrue(adjointTest('h', 'hzi'))
def test_Jtvec_adjointTest_exr_Jform(self):
self.assertTrue(adjointTest('j', 'exr'))
def test_Jtvec_adjointTest_eyr_Jform(self):
self.assertTrue(adjointTest('j', 'eyr'))
def test_Jtvec_adjointTest_ezr_Jform(self):
self.assertTrue(adjointTest('j', 'ezr'))
def test_Jtvec_adjointTest_exi_Jform(self):
self.assertTrue(adjointTest('j', 'exi'))
def test_Jtvec_adjointTest_eyi_Jform(self):
self.assertTrue(adjointTest('j', 'eyi'))
def test_Jtvec_adjointTest_ezi_Jform(self):
self.assertTrue(adjointTest('j', 'ezi'))
def test_Jtvec_adjointTest_hxr_Hform(self):
self.assertTrue(adjointTest('h', 'jxr'))
def test_Jtvec_adjointTest_hyr_Hform(self):
self.assertTrue(adjointTest('h', 'jyr'))
def test_Jtvec_adjointTest_hzr_Hform(self):
self.assertTrue(adjointTest('h', 'jzr'))
def test_Jtvec_adjointTest_hxi_Hform(self):
self.assertTrue(adjointTest('h', 'jxi'))
def test_Jtvec_adjointTest_hyi_Hform(self):
self.assertTrue(adjointTest('h', 'jyi'))
def test_Jtvec_adjointTest_hzi_Hform(self):
self.assertTrue(adjointTest('h', 'jzi'))
def test_Jtvec_adjointTest_bxr_Jform(self):
self.assertTrue(adjointTest('j', 'bxr'))
def test_Jtvec_adjointTest_byr_Jform(self):
self.assertTrue(adjointTest('j', 'byr'))
def test_Jtvec_adjointTest_bzr_Jform(self):
self.assertTrue(adjointTest('j', 'bzr'))
def test_Jtvec_adjointTest_bxi_Jform(self):
self.assertTrue(adjointTest('j', 'bxi'))
def test_Jtvec_adjointTest_byi_Jform(self):
self.assertTrue(adjointTest('j', 'byi'))
def test_Jtvec_adjointTest_bzi_Jform(self):
self.assertTrue(adjointTest('j', 'bzi'))
# def test_Jtvec_adjointTest_hxr_Hform(self):
# self.assertTrue(adjointTest('h', 'hxr'))
# def test_Jtvec_adjointTest_hyr_Hform(self):
# self.assertTrue(adjointTest('h', 'hyr'))
# def test_Jtvec_adjointTest_hzr_Hform(self):
# self.assertTrue(adjointTest('h', 'hzr'))
# def test_Jtvec_adjointTest_hxi_Hform(self):
# self.assertTrue(adjointTest('h', 'hxi'))
# def test_Jtvec_adjointTest_hyi_Hform(self):
# self.assertTrue(adjointTest('h', 'hyi'))
# def test_Jtvec_adjointTest_hzi_Hform(self):
# self.assertTrue(adjointTest('h', 'hzi'))
# def test_Jtvec_adjointTest_hxr_Hform(self):
# self.assertTrue(adjointTest('h', 'jxr'))
# def test_Jtvec_adjointTest_hyr_Hform(self):
# self.assertTrue(adjointTest('h', 'jyr'))
# def test_Jtvec_adjointTest_hzr_Hform(self):
# self.assertTrue(adjointTest('h', 'jzr'))
# def test_Jtvec_adjointTest_hxi_Hform(self):
# self.assertTrue(adjointTest('h', 'jxi'))
# def test_Jtvec_adjointTest_hyi_Hform(self):
# self.assertTrue(adjointTest('h', 'jyi'))
# def test_Jtvec_adjointTest_hzi_Hform(self):
# self.assertTrue(adjointTest('h', 'jzi'))
if __name__ == '__main__':
@@ -5,10 +5,11 @@ import sys
from scipy.constants import mu_0
from SimPEG.EM.Utils.testingUtils import getFDEMProblem
testDerivs = True
testE = True
testB = True
testHJ = False
testH = True
testJ = True
verbose = False
@@ -98,31 +99,31 @@ class FDEM_DerivTests(unittest.TestCase):
self.assertTrue(derivTest('e', 'hzi'))
if testB:
# def test_Jvec_exr_Bform(self):
# self.assertTrue(derivTest('b', 'exr'))
# def test_Jvec_eyr_Bform(self):
# self.assertTrue(derivTest('b', 'eyr'))
# def test_Jvec_ezr_Bform(self):
# self.assertTrue(derivTest('b', 'ezr'))
# def test_Jvec_exi_Bform(self):
# self.assertTrue(derivTest('b', 'exi'))
# def test_Jvec_eyi_Bform(self):
# self.assertTrue(derivTest('b', 'eyi'))
# def test_Jvec_ezi_Bform(self):
# self.assertTrue(derivTest('b', 'ezi'))
def test_Jvec_exr_Bform(self):
self.assertTrue(derivTest('b', 'exr'))
def test_Jvec_eyr_Bform(self):
self.assertTrue(derivTest('b', 'eyr'))
def test_Jvec_ezr_Bform(self):
self.assertTrue(derivTest('b', 'ezr'))
def test_Jvec_exi_Bform(self):
self.assertTrue(derivTest('b', 'exi'))
def test_Jvec_eyi_Bform(self):
self.assertTrue(derivTest('b', 'eyi'))
def test_Jvec_ezi_Bform(self):
self.assertTrue(derivTest('b', 'ezi'))
# def test_Jvec_bxr_Bform(self):
# self.assertTrue(derivTest('b', 'bxr'))
# def test_Jvec_byr_Bform(self):
# self.assertTrue(derivTest('b', 'byr'))
# def test_Jvec_bzr_Bform(self):
# self.assertTrue(derivTest('b', 'bzr'))
# def test_Jvec_bxi_Bform(self):
# self.assertTrue(derivTest('b', 'bxi'))
# def test_Jvec_byi_Bform(self):
# self.assertTrue(derivTest('b', 'byi'))
# def test_Jvec_bzi_Bform(self):
# self.assertTrue(derivTest('b', 'bzi'))
def test_Jvec_bxr_Bform(self):
self.assertTrue(derivTest('b', 'bxr'))
def test_Jvec_byr_Bform(self):
self.assertTrue(derivTest('b', 'byr'))
def test_Jvec_bzr_Bform(self):
self.assertTrue(derivTest('b', 'bzr'))
def test_Jvec_bxi_Bform(self):
self.assertTrue(derivTest('b', 'bxi'))
def test_Jvec_byi_Bform(self):
self.assertTrue(derivTest('b', 'byi'))
def test_Jvec_bzi_Bform(self):
self.assertTrue(derivTest('b', 'bzi'))
def test_Jvec_jxr_Bform(self):
self.assertTrue(derivTest('b', 'jxr'))
@@ -150,7 +151,7 @@ class FDEM_DerivTests(unittest.TestCase):
def test_Jvec_hzi_Bform(self):
self.assertTrue(derivTest('b', 'hzi'))
if testHJ:
if testJ:
def test_Jvec_jxr_Jform(self):
self.assertTrue(derivTest('j', 'jxr'))
def test_Jvec_jyr_Jform(self):
@@ -177,6 +178,34 @@ class FDEM_DerivTests(unittest.TestCase):
def test_Jvec_hzi_Jform(self):
self.assertTrue(derivTest('j', 'hzi'))
def test_Jvec_exr_Jform(self):
self.assertTrue(derivTest('j', 'exr'))
def test_Jvec_eyr_Jform(self):
self.assertTrue(derivTest('j', 'eyr'))
def test_Jvec_ezr_Jform(self):
self.assertTrue(derivTest('j', 'ezr'))
def test_Jvec_exi_Jform(self):
self.assertTrue(derivTest('j', 'exi'))
def test_Jvec_eyi_Jform(self):
self.assertTrue(derivTest('j', 'eyi'))
def test_Jvec_ezi_Jform(self):
self.assertTrue(derivTest('j', 'ezi'))
def test_Jvec_bxr_Jform(self):
self.assertTrue(derivTest('j', 'bxr'))
def test_Jvec_byr_Jform(self):
self.assertTrue(derivTest('j', 'byr'))
def test_Jvec_bzr_Jform(self):
self.assertTrue(derivTest('j', 'bzr'))
def test_Jvec_bxi_Jform(self):
self.assertTrue(derivTest('j', 'bxi'))
def test_Jvec_byi_Jform(self):
self.assertTrue(derivTest('j', 'byi'))
def test_Jvec_bzi_Jform(self):
self.assertTrue(derivTest('j', 'bzi'))
if testH:
def test_Jvec_hxr_Hform(self):
self.assertTrue(derivTest('h', 'hxr'))
def test_Jvec_hyr_Hform(self):
@@ -203,6 +232,32 @@ class FDEM_DerivTests(unittest.TestCase):
def test_Jvec_hzi_Hform(self):
self.assertTrue(derivTest('h', 'jzi'))
def test_Jvec_exr_Hform(self):
self.assertTrue(derivTest('h', 'exr'))
def test_Jvec_eyr_Hform(self):
self.assertTrue(derivTest('h', 'eyr'))
def test_Jvec_ezr_Hform(self):
self.assertTrue(derivTest('h', 'ezr'))
def test_Jvec_exi_Hform(self):
self.assertTrue(derivTest('h', 'exi'))
def test_Jvec_eyi_Hform(self):
self.assertTrue(derivTest('h', 'eyi'))
def test_Jvec_ezi_Hform(self):
self.assertTrue(derivTest('h', 'ezi'))
def test_Jvec_bxr_Hform(self):
self.assertTrue(derivTest('h', 'bxr'))
def test_Jvec_byr_Hform(self):
self.assertTrue(derivTest('h', 'byr'))
def test_Jvec_bzr_Hform(self):
self.assertTrue(derivTest('h', 'bzr'))
def test_Jvec_bxi_Hform(self):
self.assertTrue(derivTest('h', 'bxi'))
def test_Jvec_byi_Hform(self):
self.assertTrue(derivTest('h', 'byi'))
def test_Jvec_bzi_Hform(self):
self.assertTrue(derivTest('h', 'bzi'))
if __name__ == '__main__':
unittest.main()