From 32f83322ca2d1eb0dab23a055b0334f3924dc3c4 Mon Sep 17 00:00:00 2001 From: Lindsey Heagy Date: Tue, 16 Jun 2015 11:32:53 -0700 Subject: [PATCH] specified that A and RHS derivs are wrt m --- simpegEM/FDEM/FDEM.py | 43 ++++++++++++------------------------------- 1 file changed, 12 insertions(+), 31 deletions(-) diff --git a/simpegEM/FDEM/FDEM.py b/simpegEM/FDEM/FDEM.py index 036a6af0..5e465f36 100644 --- a/simpegEM/FDEM/FDEM.py +++ b/simpegEM/FDEM/FDEM.py @@ -49,8 +49,8 @@ class BaseFDEMProblem(BaseEMProblem): for src in self.survey.getSrcByFreq(freq): ftype = self._fieldType + 'Solution' u_src = f[src, ftype] - dA_dm = self.getADeriv(freq, u_src, v) - dRHS_dm = self.getRHSDeriv(src, v) + dA_dm = self.getADeriv_m(freq, u_src, v) + dRHS_dm = self.getRHSDeriv_m(src, v) if dRHS_dm is None: du_dm = dA_duI * ( - dA_dm ) else: @@ -104,9 +104,9 @@ class BaseFDEMProblem(BaseEMProblem): else: dA_duIT = ATinv * PTv - dA_dmT = self.getADeriv(freq, u_src, dA_duIT, adjoint=True) + dA_dmT = self.getADeriv_m(freq, u_src, dA_duIT, adjoint=True) - dRHS_dmT = self.getRHSDeriv(src, dA_duIT, adjoint=True) + dRHS_dmT = self.getRHSDeriv_m(src, dA_duIT, adjoint=True) if dRHS_dmT is None: du_dmT = - dA_dmT @@ -118,17 +118,6 @@ class BaseFDEMProblem(BaseEMProblem): if dfT_dm is not None: du_dmT += dfT_dm - - # fPTv = self.calcFields(PTv, freq, rx.projField, adjoint=True) - - # w = ATinv * fPTv - # Jtv_rx = - self.getADeriv(freq, u_src, w, adjoint=True) - - # df_dm = self.calcFieldsDeriv(u_src, freq, rx.projField, PTv, adjoint=True) - - # if df_dm is not None: - # Jtv_rx += df_dm - real_or_imag = rx.projComp if real_or_imag == 'real': Jtv += du_dmT.real @@ -210,7 +199,7 @@ class ProblemFDEM_e(BaseFDEMProblem): return C.T*MfMui*C + 1j*omega(freq)*MeSigma - def getADeriv(self, freq, u, v, adjoint=False): # getADeriv_m + def getADeriv_m(self, freq, u, v, adjoint=False): dsig_dm = self.curModel.sigmaDeriv dMe_dsig = self.MeSigmaDeriv(u) @@ -234,7 +223,7 @@ class ProblemFDEM_e(BaseFDEMProblem): return RHS - def getRHSDeriv(self, src, v, adjoint=False): #getRHSDeriv_m + def getRHSDeriv_m(self, src, v, adjoint=False): C = self.mesh.edgeCurl MfMui = self.MfMui S_mDeriv, S_eDeriv = src.evalDeriv(self, adjoint) @@ -292,7 +281,7 @@ class ProblemFDEM_b(BaseFDEMProblem): return MfMui.T*A return A - def getADeriv(self, freq, u, v, adjoint=False): + def getADeriv_m(self, freq, u, v, adjoint=False): MfMui = self.MfMui C = self.mesh.edgeCurl @@ -330,7 +319,7 @@ class ProblemFDEM_b(BaseFDEMProblem): return RHS - def getRHSDeriv(self, src, v, adjoint=False): + def getRHSDeriv_m(self, src, v, adjoint=False): C = self.mesh.edgeCurl S_m, S_e = self.getSourceTerm(src.freq) MfMui = self.MfMui @@ -436,7 +425,7 @@ class ProblemFDEM_j(BaseFDEMProblem): return A - def getADeriv(self, freq, u, v, adjoint=False): + def getADeriv_m(self, freq, u, v, adjoint=False): """ In this case, we assume that electrical conductivity, \(\\sigma\) is the physical property of interest (i.e. \(\sigma\) = model.transform). Then we want .. math:: @@ -478,7 +467,7 @@ class ProblemFDEM_j(BaseFDEMProblem): return RHS - def getRHSDeriv(self, src, v, adjoint=False): + def getRHSDeriv_m(self, src, v, adjoint=False): C = self.mesh.edgeCurl MeMuI = self.MeMuI S_mDeriv, S_eDeriv = src.evalDeriv(self, adjoint) @@ -562,7 +551,7 @@ class ProblemFDEM_h(BaseFDEMProblem): return C.T * MfRho * C + 1j*omega(freq)*MeMu - def getADeriv(self, freq, u, v, adjoint=False): + def getADeriv_m(self, freq, u, v, adjoint=False): MeMu = self.MeMu C = self.mesh.edgeCurl @@ -587,19 +576,11 @@ class ProblemFDEM_h(BaseFDEMProblem): return RHS - def getRHSDeriv(self, src, v, adjoint=False): - # raise NotImplementedError('getRHSDeriv not implemented yet') - # return None + def getRHSDeriv_m(self, src, v, adjoint=False): _, S_e = self.getSourceTerm(src.freq) C = self.mesh.edgeCurl MfRho = self.MfRho MfRhoDeriv = self.MfRhoDeriv(S_e) - - # if not adjoint: - MfRhoDeriv_m = self.MfRhoDeriv(S_e) - # elif adjoint: - # MfRhoDeriv_m = self.MfRhoDeriv - S_mDeriv, S_eDeriv = src.evalDeriv(self, adjoint) if not adjoint: