Fields Object functioning again. A bit of an ugly fix though... involves a Utils.mkvc on the knownFields for each

This commit is contained in:
Lindsey
2015-05-07 16:00:50 -07:00
parent 569d22bf6a
commit 35d56655f5
2 changed files with 10 additions and 17 deletions
+6 -9
View File
@@ -20,19 +20,16 @@ class FieldsFDEM_e(FieldsFDEM):
def startup(self):
self._edgeCurl = self.survey.prob.mesh.edgeCurl
# self._getSource = self.survey.prob.getSource
# self._getSourceDeriv = self.survey.prob.getSourceDeriv
def _b_sec(self, e, src): #adjoint=False
return - 1./(1j*omega(src.freq)) * (self._edgeCurl * e)
def _b_sec(self, e, src):
return - 1./(1j*omega(src.freq)) * (self._edgeCurl * Utils.mkvc(e))
def _b_secDeriv(self, e, src, v, adjoint=False):
return None
def _b(self, e, src): #adjoint=False
def _b(self, e, src):
b = self._b_sec(e,src)
S_m = src._getS_m(self.survey.prob)
print S_m.shape
if S_m is not None:
b += 1./(1j*omega(src.freq)) * S_m
return b
@@ -68,7 +65,7 @@ class FieldsFDEM_b(FieldsFDEM):
# self._getSourceDeriv = self.survey.prob.getSourceDeriv
def _e_sec(self, b, src):
return self._MeSigmaI * ( self._edgeCurl.T * ( self._MfMui * b) )
return self._MeSigmaI * ( self._edgeCurl.T * ( self._MfMui * Utils.mkvc(b)))
def _e_secDeriv(self, b, src, v, adjoint=False):
return None
@@ -113,7 +110,7 @@ class FieldsFDEM_j(FieldsFDEM):
self._curModel = self.survey.prob.curModel
def _h_sec(self, j, src): #v, adjoint=False
return - 1./(1j*omega(src.freq)) * self._MeMuI * (self._edgeCurl.T * (self._MfSigmai * j) )
return - 1./(1j*omega(src.freq)) * self._MeMuI * (self._edgeCurl.T * (self._MfSigmai * Utils.mkvc(j)) )
def _h_secDeriv(self, j, src, v, adjoint=False):
MeMuI = self._MeMuI
@@ -166,7 +163,7 @@ class FieldsFDEM_h(FieldsFDEM):
# self._getSourceDeriv = self.survey.prob.getSourceDeriv
def _j_sec(self, h, src): # adjoint=False
return self._edgeCurl*h
return self._edgeCurl*Utils.mkvc(h)
def _j_secDeriv(self, h, src, v, adjoint=False):
return None
+4 -8
View File
@@ -11,7 +11,7 @@ testAdjoint = False
testEB = True
testHJ = True
verbose = True
verbose = False
TOL = 1e-4
FLR = 1e-20 # "zero", so if residual below this --> pass regardless of order
@@ -35,7 +35,7 @@ def getProblem(fdemType, comp):
x = np.array([np.linspace(-30,-15,3),np.linspace(15,30,3)]) #don't sample right by the source
XYZ = Utils.ndgrid(x,x,np.r_[0.])
Rx0 = EM.FDEM.RxFDEM(XYZ, comp)
Src0 = EM.FDEM.SrcFDEM_MagDipole([Rx0],freq=freq, loc=np.r_[0.,0.,0.])
Src0 = EM.FDEM.SrcFDEM_MagDipole([Rx0], loc=np.r_[0.,0.,0.], freq=freq)
survey = EM.FDEM.SurveyFDEM([Src0])
@@ -123,9 +123,7 @@ def crossCheckTest(fdemType, comp):
prb1.mu = mu
survey1 = prb1.survey
u1 = prb1.fields(m)
d1 = Utils.mkvc(survey1.projectFields(u1))
d1 = survey1.dpred(m)
if verbose:
print ' Problem 1 solved'
@@ -143,9 +141,7 @@ def crossCheckTest(fdemType, comp):
prb2.mu = mu
survey2 = prb2.survey
u2 = prb2.fields(m)
d2 = Utils.mkvc(survey2.projectFields(u2))
d2 = survey2.dpred(m)
if verbose:
print ' Problem 2 solved'