diff --git a/simpegDC/Tests/test_forward_DCproblem.py b/simpegDC/Tests/test_forward_DCproblem.py index bbcdc9e7..65fa7211 100644 --- a/simpegDC/Tests/test_forward_DCproblem.py +++ b/simpegDC/Tests/test_forward_DCproblem.py @@ -10,6 +10,7 @@ class DCProblemTests(unittest.TestCase): h1 = np.ones(20) h2 = np.ones(20) mesh = Mesh.TensorMesh([h1,h2]) + model = Model.BaseModel(mesh) # Create some parameters for the model sig1 = 1 @@ -19,7 +20,7 @@ class DCProblemTests(unittest.TestCase): p0 = [2, 2] p1 = [5, 5] condVals = [sig1, sig2] - mSynth = Utils.ModelBuilder.defineBlockConductivity(p0,p1,mesh.gridCC,condVals) + mSynth = Utils.ModelBuilder.defineBlockConductivity(mesh.gridCC,p0,p1,condVals) # Set up the projection nelec = 10 @@ -29,36 +30,37 @@ class DCProblemTests(unittest.TestCase): elecend = 0.5+spacelec*(nelec-1) elecLocR = np.linspace(elecini, elecend, nelec) rxmidLoc = (elecLocR[0:nelec-1]+elecLocR[1:nelec])*0.5 - q, Q, rxmidloc = genTxRxmat(nelec, spacelec, surfloc, elecini, mesh) + q, Q, rxmidloc = simpegDC.genTxRxmat(nelec, spacelec, surfloc, elecini, mesh) P = Q.T + Q = Q.toarray() # Create some data - problem = DCProblem(mesh) - problem.P = P - problem.RHS = q - data = problem.createSyntheticData(mSynth, std=0.05) + prob = simpegDC.DCProblem(mesh, model) + data = prob.createSyntheticData(mSynth, std=0.05, P=P, RHS=Q) # Now set up the problem to do some minimization - opt = inverse.InexactGaussNewton(maxIterLS=20, maxIter=10, tolF=1e-6, tolX=1e-6, tolG=1e-6, maxIterCG=6) - reg = inverse.Regularization(mesh) - inv = inverse.Inversion(problem, reg, opt, data, beta0=1e4) + opt = Optimization.InexactGaussNewton(maxIterLS=20, maxIter=10, tolF=1e-6, tolX=1e-6, tolG=1e-6, maxIterCG=6) + reg = Regularization.Tikhonov(model) + objFunc = ObjFunction.BaseObjFunction(data, reg, beta=1e4) + inv = Inversion.BaseInversion(objFunc, opt) self.inv = inv self.reg = reg - self.p = problem + self.p = prob self.mesh = mesh self.m0 = mSynth self.data = data + self.objFunc = objFunc def test_misfit(self): - derChk = lambda m: [self.p.dpred(m), lambda mx: self.p.J(self.m0, mx)] - passed = checkDerivative(derChk, self.m0, plotIt=False) + derChk = lambda m: [self.data.dpred(m), lambda mx: self.p.J(self.m0, mx)] + passed = Tests.checkDerivative(derChk, self.m0, plotIt=False) self.assertTrue(passed) def test_adjoint(self): # Adjoint Test - u = np.random.rand(self.mesh.nC*self.p.RHS.shape[1]) + u = np.random.rand(self.mesh.nC*self.data.RHS.shape[1]) v = np.random.rand(self.mesh.nC) w = np.random.rand(self.data.dobs.shape[0]) wtJv = w.dot(self.p.J(self.m0, v, u=u)) @@ -67,12 +69,8 @@ class DCProblemTests(unittest.TestCase): self.assertTrue(passed) def test_dataObj(self): - derChk = lambda m: [self.inv.dataObj(m), self.inv.dataObjDeriv(m)] - checkDerivative(derChk, self.m0, plotIt=False) - - def test_modelObj(self): - derChk = lambda m: [self.reg.modelObj(m), self.reg.modelObjDeriv(m)] - checkDerivative(derChk, self.m0, plotIt=False) + derChk = lambda m: [self.objFunc.dataObj(m), self.objFunc.dataObjDeriv(m)] + Tests.checkDerivative(derChk, self.m0, plotIt=False) if __name__ == '__main__':