mirror of
https://github.com/wassname/simpeg.git
synced 2026-07-24 13:20:06 +08:00
FieldsFDEM functioning with branch bug/FieldsObject of SimPEG (run test_FDEM.py)
This commit is contained in:
@@ -119,9 +119,9 @@ class BaseFDEMProblem(BaseEMProblem):
|
||||
for i, src in enumerate(Srcs):
|
||||
smi, sei = src.eval(self)
|
||||
if smi is not None:
|
||||
S_m[:,i] = smi
|
||||
S_m[:,i] = Utils.mkvc(smi)
|
||||
if sei is not None:
|
||||
S_e[:,i] = sei
|
||||
S_e[:,i] = Utils.mkvc(sei)
|
||||
|
||||
return S_m, S_e
|
||||
|
||||
|
||||
@@ -22,14 +22,14 @@ class FieldsFDEM_e(FieldsFDEM):
|
||||
self._edgeCurl = self.survey.prob.mesh.edgeCurl
|
||||
|
||||
def _b_sec(self, e, src):
|
||||
return - 1./(1j*omega(src.freq)) * (self._edgeCurl * Utils.mkvc(e))
|
||||
return - 1./(1j*omega(src.freq)) * (self._edgeCurl * e)
|
||||
|
||||
def _b_secDeriv(self, e, src, v, adjoint=False):
|
||||
return None
|
||||
|
||||
def _b(self, e, src):
|
||||
b = self._b_sec(e,src)
|
||||
S_m = src._getS_m(self.survey.prob)
|
||||
S_m, _ = src.eval(self.survey.prob)
|
||||
if S_m is not None:
|
||||
b += 1./(1j*omega(src.freq)) * S_m
|
||||
return b
|
||||
@@ -65,14 +65,14 @@ class FieldsFDEM_b(FieldsFDEM):
|
||||
# self._getSourceDeriv = self.survey.prob.getSourceDeriv
|
||||
|
||||
def _e_sec(self, b, src):
|
||||
return self._MeSigmaI * ( self._edgeCurl.T * ( self._MfMui * Utils.mkvc(b)))
|
||||
return self._MeSigmaI * ( self._edgeCurl.T * ( self._MfMui * b))
|
||||
|
||||
def _e_secDeriv(self, b, src, v, adjoint=False):
|
||||
return None
|
||||
|
||||
def _e(self, b, src):
|
||||
e = self._e_sec(b,src)
|
||||
S_e = src._getS_e(self.survey.prob)
|
||||
_,S_e = src.eval(self.survey.prob)
|
||||
if S_e is not None:
|
||||
e += S_e
|
||||
return e
|
||||
@@ -110,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 * Utils.mkvc(j)) )
|
||||
return - 1./(1j*omega(src.freq)) * self._MeMuI * (self._edgeCurl.T * (self._MfSigmai * j) )
|
||||
|
||||
def _h_secDeriv(self, j, src, v, adjoint=False):
|
||||
MeMuI = self._MeMuI
|
||||
@@ -128,7 +128,7 @@ class FieldsFDEM_j(FieldsFDEM):
|
||||
|
||||
def _h(self, j, src): #v, adjoint=False
|
||||
h = self._h_sec(j,src)
|
||||
S_m = src._getS_m(self.survey.prob)
|
||||
S_m,_ = src.eval(self.survey.prob)
|
||||
if S_m is not None:
|
||||
h += 1./(1j*omega(src.freq)) * self._MeMuI * S_m
|
||||
return h
|
||||
@@ -163,14 +163,14 @@ class FieldsFDEM_h(FieldsFDEM):
|
||||
# self._getSourceDeriv = self.survey.prob.getSourceDeriv
|
||||
|
||||
def _j_sec(self, h, src): # adjoint=False
|
||||
return self._edgeCurl*Utils.mkvc(h)
|
||||
return self._edgeCurl*h
|
||||
|
||||
def _j_secDeriv(self, h, src, v, adjoint=False):
|
||||
return None
|
||||
|
||||
def _j(self, h, src): # adjoint=False
|
||||
j = self._j_sec(h,src)
|
||||
S_e = src._getS_e(self.survey.prob)
|
||||
_,S_e = src.eval(self.survey.prob)
|
||||
if S_e is not None:
|
||||
j += -S_e
|
||||
return j
|
||||
|
||||
@@ -96,7 +96,14 @@ class SrcFDEM(Survey.BaseSrc):
|
||||
rxPair = RxFDEM
|
||||
|
||||
def eval(self, prob):
|
||||
return self._getS_m(prob), self._getS_e(prob)
|
||||
S_m = self._getS_m(prob)
|
||||
S_e = self._getS_e(prob)
|
||||
|
||||
if S_m is not None:
|
||||
if len(S_m.shape) == 1: S_m = Utils.mkvc(S_m,2)
|
||||
if S_e is not None:
|
||||
if len(S_e.shape) == 1: S_e = Utils.mkvc(S_e,2)
|
||||
return S_m, S_e
|
||||
|
||||
def evalDeriv(self, prob, v, adjoint=None):
|
||||
return self._getS_mDeriv(prob,v,adjoint), self._getS_eDeriv(prob,v,adjoint)
|
||||
|
||||
Reference in New Issue
Block a user