From 493982e65d532813f80d1f14df092b2bd28b5b46 Mon Sep 17 00:00:00 2001 From: Lindsey Heagy Date: Thu, 10 Dec 2015 18:49:40 -0800 Subject: [PATCH] start of PrimSecSigma E-B source --- SimPEG/EM/FDEM/SrcFDEM.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/SimPEG/EM/FDEM/SrcFDEM.py b/SimPEG/EM/FDEM/SrcFDEM.py index b29768ac..395b8af4 100644 --- a/SimPEG/EM/FDEM/SrcFDEM.py +++ b/SimPEG/EM/FDEM/SrcFDEM.py @@ -313,4 +313,29 @@ class CircularLoop(BaseSrc): return -C.T * (MMui_s * self.bPrimary(prob)) +class PrimSecSigma(BaseSrc): + + # TODO: This will only work for E-B formulation + def __init__(self, rxList, freq, ePrimary, sigmaPrimary): + self.freq = float(freq) + self._ePrimary = ePrimary + self.sigmaPrimary = sigmaPrimary + self.integrate = False + BaseSrc.__init__(self, rxList) + + def ePrimary(self,prob): + return self._ePrimary + + def S_e(self,prob): + MeSigma = prob.MeSigma + MeSigmaPrimary = prob.mesh.getEdgeInnerProduct(self.sigmaPrimary) + + return (MeSigma - MeSigmaPrimary) * self._ePrimary + + def S_eDeriv(self, prob, v, adjoint = False): + MeSigmaDeriv = prob.MeSigmaDeriv + if adjoint is not True: + return MeSigmaDeriv(self.ePrimary) * v + return MeSigmaDeriv(self.ePrimary).T * v +