diff --git a/README.md b/README.md index 1015642a..26ea05de 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Tests: [https://travis-ci.org/simpeg/simpegpf](https://travis-ci.org/simpeg/simpegpf) Build Status: -[![Build Status](https://travis-ci.org/simpeg/simpegpf.png)](https://travis-ci.org/simpeg/simpegpf) +[![Build Status](https://travis-ci.org/simpeg/simpegpf.svg?branch=master)](https://travis-ci.org/simpeg/simpegpf) Bugs & Issues: [https://github.com/simpeg/simpegpf/issues](https://github.com/simpeg/simpegpf/issues) diff --git a/docs/index.rst b/docs/index.rst index bcd70591..e4a0a372 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,22 +20,15 @@ Potential fields api_PF - - Testing SimPEG ============== * Master Branch - .. image:: https://travis-ci.org/simpeg/simpegpf.png?branch=master + .. image:: https://travis-ci.org/simpeg/simpegpf.svg?branch=master :target: https://travis-ci.org/simpeg/simpegpf :alt: Master Branch :align: center -* Develop Branch - .. image:: https://travis-ci.org/simpeg/simpegpf.png?branch=develop - :target: https://travis-ci.org/simpeg/simpegpf - :alt: Develop Branch - :align: center Project Index & Search diff --git a/simpegPF/BaseMag.py b/simpegPF/BaseMag.py index 5be1198c..9cef01ec 100644 --- a/simpegPF/BaseMag.py +++ b/simpegPF/BaseMag.py @@ -1,4 +1,4 @@ -from SimPEG import Model, Survey, Utils, np, sp +from SimPEG import Maps, Survey, Utils, np, sp from scipy.constants import mu_0 @@ -115,11 +115,11 @@ class MagSurveyBx(object): return bfx -class BaseMagModel(Model.BaseModel): - """BaseMagModel""" +class BaseMagMap(Maps.IdentityMap): + """BaseMagMap""" def __init__(self, mesh, **kwargs): - Model.BaseModel.__init__(self, mesh) + Maps.IdentityMap.__init__(self, mesh) def transform(self, m): @@ -129,11 +129,11 @@ class BaseMagModel(Model.BaseModel): return mu_0*sp.identity(self.nP) -class BaseDepthModel(Model.BaseModel): +class BaseDepthMap(Maps.IdentityMap): """BaseDepthMagModel""" def __init__(self, mesh, **kwargs): - Model.BaseModel.__init__(self, mesh) + Maps.IdentityMap.__init__(self, mesh) self.mesh = mesh self.active_ind = kwargs['active_ind'] self.c = kwargs['c'] diff --git a/simpegPF/Magnetics.py b/simpegPF/Magnetics.py index 51b7932a..a19a6c82 100644 --- a/simpegPF/Magnetics.py +++ b/simpegPF/Magnetics.py @@ -11,10 +11,10 @@ class MagneticsDiffSecondary(Problem.BaseProblem): """ surveyPair = BaseMag.BaseMagSurvey - modelPair = BaseMag.BaseMagModel + modelPair = BaseMag.BaseMagMap - def __init__(self, model, **kwargs): - Problem.BaseProblem.__init__(self, model, **kwargs) + def __init__(self, model, mapping=None, **kwargs): + Problem.BaseProblem.__init__(self, model, mapping=mapping, **kwargs) Pbc, Pin, self._Pout = \ self.mesh.getBCProjWF('neumann', discretization='CC') @@ -33,12 +33,12 @@ class MagneticsDiffSecondary(Problem.BaseProblem): def MfMu0(self): return self._MfMu0 def makeMassMatrices(self, m): - mu = self.model.transform(m) - self._MfMui = self.mesh.getFaceMass(1./mu) + mu = self.mapping.transform(m) + self._MfMui = self.mesh.getFaceInnerProduct(1./mu)/self.mesh.dim # self._MfMui = self.mesh.getFaceInnerProduct(1./mu) #TODO: this will break if tensor mu self._MfMuI = Utils.sdiag(1./self._MfMui.diagonal()) - self._MfMu0 = self.mesh.getFaceMass(1/mu_0) + self._MfMu0 = self.mesh.getFaceInnerProduct(1./mu_0)/self.mesh.dim # self._MfMu0 = self.mesh.getFaceInnerProduct(1/mu_0) @Utils.requires('survey') @@ -61,7 +61,7 @@ class MagneticsDiffSecondary(Problem.BaseProblem): Dface = self.mesh.faceDiv Mc = Utils.sdiag(self.mesh.vol) - mu = self.model.transform(m) + mu = self.mapping.transform(m) chi = mu/mu_0-1 Bbc, Bbc_const = CongruousMagBC(self.mesh, self.survey.B0, chi) @@ -184,8 +184,8 @@ class MagneticsDiffSecondary(Problem.BaseProblem): u = self.fields(m) B, u = u['B'], u['u'] - mu = self.model.transform(m) - dmudm = self.model.transformDeriv(m) + mu = self.mapping.transform(m) + dmudm = self.mapping.transformDeriv(m) dchidmu = Utils.sdiag(1/mu_0*np.ones(self.mesh.nC)) vol = self.mesh.vol @@ -261,8 +261,8 @@ class MagneticsDiffSecondary(Problem.BaseProblem): u = self.fields(m) B, u = u['B'], u['u'] - mu = self.model.transform(m) - dmudm = self.model.transformDeriv(m) + mu = self.mapping.transform(m) + dmudm = self.mapping.transformDeriv(m) dchidmu = Utils.sdiag(1/mu_0*np.ones(self.mesh.nC)) vol = self.mesh.vol diff --git a/simpegPF/Tests/test_forward_PFproblem.py b/simpegPF/Tests/test_forward_PFproblem.py index 6d8d5bcf..18419fda 100644 --- a/simpegPF/Tests/test_forward_PFproblem.py +++ b/simpegPF/Tests/test_forward_PFproblem.py @@ -19,8 +19,8 @@ class MagFwdProblemTests(unittest.TestCase): chi = np.ones(M.nC)*chibkg sph_ind = PF.MagAnalytics.spheremodel(M, 0., 0., 0., 100) chi[sph_ind] = chiblk - model = PF.BaseMag.BaseMagModel(M) - prob = PF.Magnetics.MagneticsDiffSecondary(model) + model = PF.BaseMag.BaseMagMap(M) + prob = PF.Magnetics.MagneticsDiffSecondary(M, mapping=model) self.prob = prob self.M = M self.chi = chi diff --git a/simpegPF/Tests/test_sensitivity_PFproblem.py b/simpegPF/Tests/test_sensitivity_PFproblem.py index 6be19f43..63676579 100644 --- a/simpegPF/Tests/test_sensitivity_PFproblem.py +++ b/simpegPF/Tests/test_sensitivity_PFproblem.py @@ -26,7 +26,7 @@ class MagSensProblemTests(unittest.TestCase): b0 = PF.MagAnalytics.IDTtoxyz(Inc, Dec, Btot) sph_ind = PF.MagAnalytics.spheremodel(M, 0., 0., 0., 100) chi[sph_ind] = chiblk - model = PF.BaseMag.BaseMagModel(M) + model = PF.BaseMag.BaseMagMap(M) survey = BaseMag.BaseMagSurvey() @@ -40,7 +40,7 @@ class MagSensProblemTests(unittest.TestCase): - prob = PF.Magnetics.MagneticsDiffSecondary(model) + prob = PF.Magnetics.MagneticsDiffSecondary(M, mapping=model) prob.pair(survey) dpre = survey.dpred(chi) @@ -281,25 +281,21 @@ class MagSensProblemTests(unittest.TestCase): def test_Jvec(self): print ">> Derivative test for Jvec" - mu = self.model.transform(self.chi) d_chi = 10.0*self.chi #np.random.rand(mesh.nCz) d_sph_ind = PF.MagAnalytics.spheremodel(self.prob.mesh, 0., 0., -50., 50) d_chi[d_sph_ind] = 0.1 - a = self.prob.Jvec(self.chi, d_chi) - - derChk = lambda m: [self.survey.dpred(m), lambda mx: self.prob.Jvec(self.chi, mx)] + derChk = lambda m: (self.survey.dpred(m), lambda v: self.prob.Jvec(m, v)) # TODO: I am not sure why the order get worse as step decreases .. --; passed = Tests.checkDerivative(derChk, self.chi, num=2, dx = d_chi, plotIt=False) self.assertTrue(passed) def test_Jtvec(self): print ">> Derivative test for Jtvec" - mu = self.model.transform(self.chi) dobs = self.survey.dpred(self.chi) - def misfit (m, dobs): + def misfit(m): dpre = self.survey.dpred(m) misfit = 0.5*np.linalg.norm(dpre-dobs)**2 residual = dpre-dobs @@ -308,8 +304,7 @@ class MagSensProblemTests(unittest.TestCase): return misfit, dmisfit # TODO: I am not sure why the order get worse as step decreases .. --; - derChk = lambda m: misfit(m, dobs) - passed = Tests.checkDerivative(derChk, self.chi, num=4, plotIt=False) + passed = Tests.checkDerivative(misfit, self.chi, num=4, plotIt=False) self.assertTrue(passed) if __name__ == '__main__':