working on deBugging

This commit is contained in:
Lindsey
2015-04-15 09:50:28 -07:00
parent 903a418a11
commit dbf3175c39
2 changed files with 98 additions and 45 deletions
+63 -23
View File
@@ -4,32 +4,32 @@ from simpegEM.Utils.EMUtils import omega
class FieldsFDEM(Problem.Fields):
"""Fancy Field Storage for a FDEM survey."""
knownFields = {'b': 'F', 'e': 'E', 'j': 'F', 'h': 'E'} # TODO: a, phi
# knownFields = {'b': 'F', 'e': 'E', 'b_sec' : 'F', 'e_sec':'E' ,'j': 'F', 'h': 'E'} # TODO: a, phi
dtype = complex
def calcFields(self,sol,tx,fieldType):
if fieldType == 'e':
return self._e(sol,tx)
elif fieldType == 'e_sec':
return self._e_sec(sol,tx)
elif fieldType == 'b':
return self._b(sol,tx)
elif fieldType == 'b_sec':
return self._b_sec(sol,tx)
else:
raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
# def calcFields(self,sol,tx,fieldType):
# if fieldType == 'e':
# return self._e(sol,tx)
# elif fieldType == 'e_sec':
# return self._e_sec(sol,tx)
# elif fieldType == 'b':
# return self._b(sol,tx)
# elif fieldType == 'b_sec':
# return self._b_sec(sol,tx)
# else:
# raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
def calcFieldsDeriv(self,sol,tx,fieldType,adjoint=False):
if fieldType == 'e':
return self._eDeriv(sol,tx,adjoint)
elif fieldType == 'e_sec':
return self._e_secDeriv(sol,tx,adjoint)
elif fieldType == 'b':
return self._bDeriv(sol,tx,adjoint,adjoint)
elif fieldType == 'b_sec':
return self._b_secDeriv(sol,tx,adjoint,adjoint)
else:
raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
# def calcFieldsDeriv(self,sol,tx,fieldType,adjoint=False):
# if fieldType == 'e':
# return self._eDeriv(sol,tx,adjoint)
# elif fieldType == 'e_sec':
# return self._e_secDeriv(sol,tx,adjoint)
# elif fieldType == 'b':
# return self._bDeriv(sol,tx,adjoint)
# elif fieldType == 'b_sec':
# return self._b_secDeriv(sol,tx,adjoint)
# else:
# raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
@@ -48,6 +48,26 @@ class FieldsFDEM_e(FieldsFDEM):
self.getSource = self.survey.prob.getSource
self.getSourceDeriv = self.survey.prob.getSourceDeriv
def calcFields(self,sol,tx,fieldType):
if fieldType == 'e':
return self._e(sol,tx)
elif fieldType == 'b':
return self._b(sol,tx)
elif fieldType == 'b_sec':
return self._b_sec(sol,tx)
else:
raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
def calcFieldsDeriv(self,sol,tx,fieldType,adjoint=False):
if fieldType == 'e':
return self._eDeriv(sol,tx,adjoint)
elif fieldType == 'b':
return self._bDeriv(sol,tx,adjoint)
elif fieldType == 'b_sec':
return self._b_secDeriv(sol,tx,adjoint)
else:
raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
def _e(self, e, tx):
return e
@@ -90,6 +110,26 @@ class FieldsFDEM_b(FieldsFDEM):
self.getSource = self.survey.prob.getSource
self.getSourceDeriv = self.survey.prob.getSourceDeriv
def calcFields(self,sol,tx,fieldType):
if fieldType == 'e':
return self._e(sol,tx)
elif fieldType == 'e_sec':
return self._e_sec(sol,tx)
elif fieldType == 'b':
return self._b(sol,tx)
else:
raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
def calcFieldsDeriv(self,sol,tx,fieldType,adjoint=False):
if fieldType == 'e':
return self._eDeriv(sol,tx,adjoint)
elif fieldType == 'e_sec':
return self._e_secDeriv(sol,tx,adjoint)
elif fieldType == 'b':
return self._bDeriv(sol,tx,adjoint)
else:
raise NotImplementedError('fieldType "%s" is not implemented.' % fieldType)
def _b(self, b, tx):
return b
+35 -22
View File
@@ -10,6 +10,8 @@ testAdjoint = False
testEB = True
testHJ = False
verbose = True
TOL = 1e-4
FLR = 1e-20 # "zero", so if residual below this --> pass regardless of order
CONDUCTIVITY = 1e1
@@ -37,6 +39,9 @@ def getProblem(fdemType, comp):
survey = EM.FDEM.SurveyFDEM([Tx0])
if verbose:
print ' Fetching %s problem' % (fdemType)
if fdemType == 'e':
prb = EM.FDEM.ProblemFDEM_e(mesh, mapping=mapping)
elif fdemType == 'b':
@@ -82,7 +87,9 @@ def adjointTest(fdemType, comp):
print vJw, wJtv, vJw - wJtv, tol, np.abs(vJw - wJtv) < tol
return np.abs(vJw - wJtv) < tol
def derivTest(fdemType, comp):
prb = getProblem(fdemType, comp)
print '%s formulation - %s' % (fdemType, comp)
x0 = np.log(np.ones(prb.mesh.nC)*CONDUCTIVITY)
@@ -119,6 +126,9 @@ def crossCheckTest(fdemType, comp):
u1 = prb1.fields(m)
d1 = Utils.mkvc(survey1.projectFields(u1))
if verbose:
print ' Problem 1 solved'
prb1.unpair
if fdemType == 'e':
@@ -138,6 +148,9 @@ def crossCheckTest(fdemType, comp):
u2 = prb2.fields(m)
d2 = Utils.mkvc(survey2.projectFields(u2))
if verbose:
print ' Problem 2 solved'
r = d2-d1
l2r = l2norm(r)
@@ -368,29 +381,29 @@ class FDEM_DerivTests(unittest.TestCase):
if testEB:
def test_EB_CrossCheck_exr_Eform(self):
self.assertTrue(crossCheckTest('e', 'exr'))
def test_EB_CrossCheck_eyr_Eform(self):
self.assertTrue(crossCheckTest('e', 'eyr'))
def test_EB_CrossCheck_ezr_Eform(self):
self.assertTrue(crossCheckTest('e', 'ezr'))
def test_EB_CrossCheck_exi_Eform(self):
self.assertTrue(crossCheckTest('e', 'exi'))
def test_EB_CrossCheck_eyi_Eform(self):
self.assertTrue(crossCheckTest('e', 'eyi'))
def test_EB_CrossCheck_ezi_Eform(self):
self.assertTrue(crossCheckTest('e', 'ezi'))
# def test_EB_CrossCheck_eyr_Eform(self):
# self.assertTrue(crossCheckTest('e', 'eyr'))
# def test_EB_CrossCheck_ezr_Eform(self):
# self.assertTrue(crossCheckTest('e', 'ezr'))
# def test_EB_CrossCheck_exi_Eform(self):
# self.assertTrue(crossCheckTest('e', 'exi'))
# def test_EB_CrossCheck_eyi_Eform(self):
# self.assertTrue(crossCheckTest('e', 'eyi'))
# def test_EB_CrossCheck_ezi_Eform(self):
# self.assertTrue(crossCheckTest('e', 'ezi'))
def test_EB_CrossCheck_bxr_Eform(self):
self.assertTrue(crossCheckTest('e', 'bxr'))
def test_EB_CrossCheck_byr_Eform(self):
self.assertTrue(crossCheckTest('e', 'byr'))
# def test_EB_CrossCheck_bzr_Eform(self):
# self.assertTrue(crossCheckTest('e', 'bzr')) # Doesn't make sense to test this for p-s approach
def test_EB_CrossCheck_bxi_Eform(self):
self.assertTrue(crossCheckTest('e', 'bxi'))
def test_EB_CrossCheck_byi_Eform(self):
self.assertTrue(crossCheckTest('e', 'byi'))
def test_EB_CrossCheck_bzi_Eform(self):
self.assertTrue(crossCheckTest('e', 'bzi'))
# def test_EB_CrossCheck_bxr_Eform(self):
# self.assertTrue(crossCheckTest('e', 'bxr'))
# def test_EB_CrossCheck_byr_Eform(self):
# self.assertTrue(crossCheckTest('e', 'byr'))
# # def test_EB_CrossCheck_bzr_Eform(self):
# # self.assertTrue(crossCheckTest('e', 'bzr')) # Doesn't make sense to test this for p-s approach
# def test_EB_CrossCheck_bxi_Eform(self):
# self.assertTrue(crossCheckTest('e', 'bxi'))
# def test_EB_CrossCheck_byi_Eform(self):
# self.assertTrue(crossCheckTest('e', 'byi'))
# def test_EB_CrossCheck_bzi_Eform(self):
# self.assertTrue(crossCheckTest('e', 'bzi'))
if testHJ:
def test_HJ_CrossCheck_jxr_Jform(self):