From b5b8b5fae68ae74109ffc91d6d793d929844506e Mon Sep 17 00:00:00 2001 From: Lindsey Heagy Date: Sun, 5 Jul 2015 21:58:14 -0500 Subject: [PATCH] - added check is S_e is zero in getRHSDeriv of FDEM.py - deleted code that has been commented out --- simpegEM/FDEM/FDEM.py | 31 +++++++++++++++++++++---------- simpegEM/FDEM/FieldsFDEM.py | 4 ---- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/simpegEM/FDEM/FDEM.py b/simpegEM/FDEM/FDEM.py index dde77f15..c54137fd 100644 --- a/simpegEM/FDEM/FDEM.py +++ b/simpegEM/FDEM/FDEM.py @@ -354,8 +354,9 @@ class ProblemFDEM_b(BaseFDEMProblem): elif SrcDeriv is not None: RHSderiv = SrcDeriv - if self._makeASymmetric is True and not adjoint: - return MfMui.T * RHSderiv + if RHSderiv is not None: + if self._makeASymmetric is True and not adjoint: + return MfMui.T * RHSderiv return RHSderiv @@ -576,20 +577,30 @@ class ProblemFDEM_h(BaseFDEMProblem): _, S_e = src.eval(self) C = self.mesh.edgeCurl MfRho = self.MfRho - MfRhoDeriv = self.MfRhoDeriv(S_e) - S_mDeriv, S_eDeriv = src.evalDeriv(self, adjoint) - if not adjoint: - RHSDeriv = C.T * (MfRhoDeriv * v) - elif adjoint: - RHSDeriv = MfRhoDeriv.T * (C * v) + RHSDeriv = None + + if S_e is not None: + MfRhoDeriv = self.MfRhoDeriv(S_e) + if not adjoint: + RHSDeriv = C.T * (MfRhoDeriv * v) + elif adjoint: + RHSDeriv = MfRhoDeriv.T * (C * v) + + S_mDeriv, S_eDeriv = src.evalDeriv(self, adjoint) S_mDeriv = S_mDeriv(v) S_eDeriv = S_eDeriv(v) if S_mDeriv is not None: - RHSDeriv += S_mDeriv(v) + if RHSDeriv is not None: + RHSDeriv += S_mDeriv(v) + else: + RHSDeriv = S_mDeriv(v) if S_eDeriv is not None: - RHSDeriv += C.T * (MfRho * S_e) + if RHSDeriv is not None: + RHSDeriv += C.T * (MfRho * S_e) + else: + RHSDeriv = C.T * (MfRho * S_e) return RHSDeriv diff --git a/simpegEM/FDEM/FieldsFDEM.py b/simpegEM/FDEM/FieldsFDEM.py index 46b67fa7..99866bc3 100644 --- a/simpegEM/FDEM/FieldsFDEM.py +++ b/simpegEM/FDEM/FieldsFDEM.py @@ -25,10 +25,6 @@ class FieldsFDEM_e(FieldsFDEM): self.prob = self.survey.prob self._edgeCurl = self.survey.prob.mesh.edgeCurl - # def getDeriv_u(self, fieldsList, src, v, adjoint=False): - - # def getDeriv_m(self, fieldsList, src, v, adjoint=False): - def _ePrimary(self, eSolution, srcList): ePrimary = np.zeros_like(eSolution) for i, src in enumerate(srcList):