xref: /petsc/src/binding/petsc4py/test/test_snes.py (revision 9be84c52375fa69a6481fcef8556b9a7b38e14a0)
15808f684SSatish Balay# --------------------------------------------------------------------
25808f684SSatish Balay
35808f684SSatish Balayfrom petsc4py import PETSc
45808f684SSatish Balayimport unittest
55808f684SSatish Balayfrom sys import getrefcount
6e0aaf7daSStefano Zampiniimport numpy
75808f684SSatish Balay
85808f684SSatish Balay# --------------------------------------------------------------------
95808f684SSatish Balay
105808f684SSatish Balayclass Function:
115808f684SSatish Balay    def __call__(self, snes, x, f):
125808f684SSatish Balay        f[0] = (x[0]*x[0] + x[0]*x[1] - 3.0).item()
135808f684SSatish Balay        f[1] = (x[0]*x[1] + x[1]*x[1] - 6.0).item()
145808f684SSatish Balay        f.assemble()
155808f684SSatish Balay
165808f684SSatish Balayclass Jacobian:
175808f684SSatish Balay    def __call__(self, snes, x, J, P):
185808f684SSatish Balay        P[0,0] = (2.0*x[0] + x[1]).item()
195808f684SSatish Balay        P[0,1] = (x[0]).item()
205808f684SSatish Balay        P[1,0] = (x[1]).item()
215808f684SSatish Balay        P[1,1] = (x[0] + 2.0*x[1]).item()
225808f684SSatish Balay        P.assemble()
235808f684SSatish Balay        if J != P: J.assemble()
245808f684SSatish Balay
255808f684SSatish Balay# --------------------------------------------------------------------
265808f684SSatish Balay
275808f684SSatish Balayclass BaseTestSNES(object):
285808f684SSatish Balay
295808f684SSatish Balay    SNES_TYPE = None
305808f684SSatish Balay
315808f684SSatish Balay    def setUp(self):
325808f684SSatish Balay        snes = PETSc.SNES()
335808f684SSatish Balay        snes.create(PETSc.COMM_SELF)
345808f684SSatish Balay        if self.SNES_TYPE:
355808f684SSatish Balay            snes.setType(self.SNES_TYPE)
365808f684SSatish Balay        self.snes = snes
375808f684SSatish Balay
385808f684SSatish Balay    def tearDown(self):
395808f684SSatish Balay        self.snes = None
4062e5d2d2SJDBetteridge        PETSc.garbage_cleanup()
415808f684SSatish Balay
425808f684SSatish Balay    def testGetSetType(self):
435808f684SSatish Balay        self.assertEqual(self.snes.getType(), self.SNES_TYPE)
445808f684SSatish Balay        self.snes.setType(self.SNES_TYPE)
455808f684SSatish Balay        self.assertEqual(self.snes.getType(), self.SNES_TYPE)
465808f684SSatish Balay
475808f684SSatish Balay    def testTols(self):
485808f684SSatish Balay        tols = self.snes.getTolerances()
495808f684SSatish Balay        self.snes.setTolerances(*tols)
505808f684SSatish Balay        tnames = ('rtol', 'atol','stol', 'max_it')
515808f684SSatish Balay        tolvals = [getattr(self.snes, t) for t in  tnames]
525808f684SSatish Balay        self.assertEqual(tuple(tols), tuple(tolvals))
535808f684SSatish Balay
545808f684SSatish Balay    def testProperties(self):
555808f684SSatish Balay        snes = self.snes
565808f684SSatish Balay        #
575808f684SSatish Balay        snes.appctx = (1,2,3)
585808f684SSatish Balay        self.assertEqual(snes.appctx, (1,2,3))
595808f684SSatish Balay        snes.appctx = None
605808f684SSatish Balay        self.assertEqual(snes.appctx, None)
615808f684SSatish Balay        #
625808f684SSatish Balay        snes.its = 1
635808f684SSatish Balay        self.assertEqual(snes.its, 1)
645808f684SSatish Balay        snes.its = 0
655808f684SSatish Balay        self.assertEqual(snes.its, 0)
665808f684SSatish Balay        #
675808f684SSatish Balay        snes.norm = 1
685808f684SSatish Balay        self.assertEqual(snes.norm, 1)
695808f684SSatish Balay        snes.norm = 0
705808f684SSatish Balay        self.assertEqual(snes.norm, 0)
715808f684SSatish Balay        #
725808f684SSatish Balay        rh, ih = snes.history
735808f684SSatish Balay        self.assertTrue(len(rh)==0)
745808f684SSatish Balay        self.assertTrue(len(ih)==0)
755808f684SSatish Balay        #
765808f684SSatish Balay        reason = PETSc.SNES.ConvergedReason.CONVERGED_ITS
775808f684SSatish Balay        snes.reason = reason
785808f684SSatish Balay        self.assertEqual(snes.reason, reason)
795808f684SSatish Balay        self.assertTrue(snes.converged)
805808f684SSatish Balay        self.assertFalse(snes.diverged)
815808f684SSatish Balay        self.assertFalse(snes.iterating)
825808f684SSatish Balay        reason = PETSc.SNES.ConvergedReason.DIVERGED_MAX_IT
835808f684SSatish Balay        snes.reason = reason
845808f684SSatish Balay        self.assertEqual(snes.reason, reason)
855808f684SSatish Balay        self.assertFalse(snes.converged)
865808f684SSatish Balay        self.assertTrue(snes.diverged)
875808f684SSatish Balay        self.assertFalse(snes.iterating)
885808f684SSatish Balay        reason = PETSc.SNES.ConvergedReason.CONVERGED_ITERATING
895808f684SSatish Balay        snes.reason = reason
905808f684SSatish Balay        self.assertEqual(snes.reason, reason)
915808f684SSatish Balay        self.assertFalse(snes.converged)
925808f684SSatish Balay        self.assertFalse(snes.diverged)
935808f684SSatish Balay        self.assertTrue(snes.iterating)
945808f684SSatish Balay        #
955808f684SSatish Balay        self.assertFalse(snes.use_ew)
965808f684SSatish Balay        self.assertFalse(snes.use_mf)
975808f684SSatish Balay        self.assertFalse(snes.use_fd)
985808f684SSatish Balay
995808f684SSatish Balay    def testGetSetFunc(self):
1005808f684SSatish Balay        r, func = self.snes.getFunction()
1015808f684SSatish Balay        self.assertFalse(r)
1025808f684SSatish Balay        self.assertTrue(func is None)
1035808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
1045808f684SSatish Balay        func = Function()
1055808f684SSatish Balay        refcnt = getrefcount(func)
1065808f684SSatish Balay        self.snes.setFunction(func, r)
1075808f684SSatish Balay        self.snes.setFunction(func, r)
1085808f684SSatish Balay        self.assertEqual(getrefcount(func), refcnt + 1)
1095808f684SSatish Balay        r2, func2 = self.snes.getFunction()
1105808f684SSatish Balay        self.assertEqual(r, r2)
1115808f684SSatish Balay        self.assertEqual(func, func2[0])
1125808f684SSatish Balay        self.assertEqual(getrefcount(func), refcnt + 1)
1135808f684SSatish Balay        r3, func3 = self.snes.getFunction()
1145808f684SSatish Balay        self.assertEqual(r, r3)
1155808f684SSatish Balay        self.assertEqual(func, func3[0])
1165808f684SSatish Balay        self.assertEqual(getrefcount(func), refcnt + 1)
1175808f684SSatish Balay
1185808f684SSatish Balay    def testCompFunc(self):
1195808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
1205808f684SSatish Balay        func = Function()
1215808f684SSatish Balay        self.snes.setFunction(func, r)
1225808f684SSatish Balay        x, y = r.duplicate(), r.duplicate()
1235808f684SSatish Balay        x[0], x[1] = [1, 2]
1245808f684SSatish Balay        self.snes.computeFunction(x, y)
125e0aaf7daSStefano Zampini        self.assertAlmostEqual(abs(y[0]), 0.0, places=5)
126e0aaf7daSStefano Zampini        self.assertAlmostEqual(abs(y[1]), 0.0, places=5)
1275808f684SSatish Balay
1285808f684SSatish Balay    def testGetSetJac(self):
1295808f684SSatish Balay        A, P, jac = self.snes.getJacobian()
1305808f684SSatish Balay        self.assertFalse(A)
1315808f684SSatish Balay        self.assertFalse(P)
1325808f684SSatish Balay        self.assertTrue(jac is None)
1335808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
1345808f684SSatish Balay        J.setSizes([2,2])
1355808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
1365808f684SSatish Balay        J.setUp()
1375808f684SSatish Balay        jac = Jacobian()
1385808f684SSatish Balay        refcnt = getrefcount(jac)
1395808f684SSatish Balay        self.snes.setJacobian(jac, J)
1405808f684SSatish Balay        self.snes.setJacobian(jac, J)
1415808f684SSatish Balay        self.assertEqual(getrefcount(jac), refcnt + 1)
1425808f684SSatish Balay        J2, P2, jac2 = self.snes.getJacobian()
1435808f684SSatish Balay        self.assertEqual(J, J2)
1445808f684SSatish Balay        self.assertEqual(J2, P2)
1455808f684SSatish Balay        self.assertEqual(jac, jac2[0])
1465808f684SSatish Balay        self.assertEqual(getrefcount(jac), refcnt + 1)
1475808f684SSatish Balay        J3, P3, jac3 = self.snes.getJacobian()
1485808f684SSatish Balay        self.assertEqual(J, J3)
1495808f684SSatish Balay        self.assertEqual(J3, P3)
1505808f684SSatish Balay        self.assertEqual(jac, jac3[0])
1515808f684SSatish Balay        self.assertEqual(getrefcount(jac), refcnt + 1)
1525808f684SSatish Balay
1535808f684SSatish Balay    def testCompJac(self):
1545808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
1555808f684SSatish Balay        J.setSizes([2,2])
1565808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
1575808f684SSatish Balay        J.setUp()
1585808f684SSatish Balay        jac = Jacobian()
1595808f684SSatish Balay        self.snes.setJacobian(jac, J)
1605808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
1615808f684SSatish Balay        x[0], x[1] = [1, 2]
1625808f684SSatish Balay        self.snes.getKSP().getPC()
1635808f684SSatish Balay        self.snes.computeJacobian(x, J)
1645808f684SSatish Balay
1655808f684SSatish Balay    def testGetSetUpd(self):
1665808f684SSatish Balay        self.assertTrue(self.snes.getUpdate() is None)
1675808f684SSatish Balay        upd = lambda snes, it: None
1685808f684SSatish Balay        refcnt = getrefcount(upd)
1695808f684SSatish Balay        self.snes.setUpdate(upd)
1705808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt + 1)
1715808f684SSatish Balay        self.snes.setUpdate(upd)
1725808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt + 1)
1735808f684SSatish Balay        self.snes.setUpdate(None)
1745808f684SSatish Balay        self.assertTrue(self.snes.getUpdate() is None)
1755808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt)
1765808f684SSatish Balay        self.snes.setUpdate(upd)
1775808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt + 1)
1785808f684SSatish Balay        upd2 = lambda snes, it: None
1795808f684SSatish Balay        refcnt2 = getrefcount(upd2)
1805808f684SSatish Balay        self.snes.setUpdate(upd2)
1815808f684SSatish Balay        self.assertEqual(getrefcount(upd),  refcnt)
1825808f684SSatish Balay        self.assertEqual(getrefcount(upd2), refcnt2 + 1)
1835808f684SSatish Balay        tmp = self.snes.getUpdate()[0]
1845808f684SSatish Balay        self.assertTrue(tmp is upd2)
1855808f684SSatish Balay        self.assertEqual(getrefcount(upd2), refcnt2 + 2)
1865808f684SSatish Balay        del tmp
1875808f684SSatish Balay        self.snes.setUpdate(None)
1885808f684SSatish Balay        self.assertTrue(self.snes.getUpdate() is None)
1895808f684SSatish Balay        self.assertEqual(getrefcount(upd2), refcnt2)
1905808f684SSatish Balay
1915808f684SSatish Balay    def testGetKSP(self):
1925808f684SSatish Balay        ksp = self.snes.getKSP()
1935808f684SSatish Balay        self.assertEqual(ksp.getRefCount(), 2)
1945808f684SSatish Balay
1955808f684SSatish Balay    def testSolve(self):
1965808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
1975808f684SSatish Balay        J.setSizes([2,2])
1985808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
1995808f684SSatish Balay        J.setUp()
2005808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
2015808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
2025808f684SSatish Balay        b = PETSc.Vec().createSeq(2)
2035808f684SSatish Balay        self.snes.setFunction(Function(), r)
2045808f684SSatish Balay        self.snes.setJacobian(Jacobian(), J)
2055808f684SSatish Balay        x.setArray([2,3])
2065808f684SSatish Balay        b.set(0)
2075808f684SSatish Balay        self.snes.setConvergenceHistory()
2085808f684SSatish Balay        self.snes.setFromOptions()
2095808f684SSatish Balay        self.snes.solve(b, x)
2105808f684SSatish Balay        rh, ih = self.snes.getConvergenceHistory()
2115808f684SSatish Balay        self.snes.setConvergenceHistory(0, reset=True)
2125808f684SSatish Balay        rh, ih = self.snes.getConvergenceHistory()
2135808f684SSatish Balay        self.assertEqual(len(rh), 0)
2145808f684SSatish Balay        self.assertEqual(len(ih), 0)
215e0aaf7daSStefano Zampini        self.assertAlmostEqual(abs(x[0]), 1.0, places=5)
216e0aaf7daSStefano Zampini        self.assertAlmostEqual(abs(x[1]), 2.0, places=5)
2175808f684SSatish Balay        # XXX this test should not be here !
2185808f684SSatish Balay        reason = self.snes.callConvergenceTest(1, 0, 0, 0)
2195808f684SSatish Balay        self.assertTrue(reason > 0)
2205808f684SSatish Balay
22141e867a5SStefano Zampini        # test interface
22241e867a5SStefano Zampini        x = self.snes.getSolution()
22341e867a5SStefano Zampini        x.setArray([2,3])
22441e867a5SStefano Zampini        self.snes.solve()
22541e867a5SStefano Zampini        self.assertAlmostEqual(abs(x[0]), 1.0, places=5)
22641e867a5SStefano Zampini        self.assertAlmostEqual(abs(x[1]), 2.0, places=5)
22741e867a5SStefano Zampini
2285808f684SSatish Balay    def testResetAndSolve(self):
2295808f684SSatish Balay        self.snes.reset()
2305808f684SSatish Balay        self.testSolve()
2315808f684SSatish Balay        self.snes.reset()
2325808f684SSatish Balay        self.testSolve()
2335808f684SSatish Balay        self.snes.reset()
2345808f684SSatish Balay
2355808f684SSatish Balay    def testSetMonitor(self):
2365808f684SSatish Balay        reshist = {}
2375808f684SSatish Balay        def monitor(snes, its, fgnorm):
2385808f684SSatish Balay            reshist[its] = fgnorm
2395808f684SSatish Balay        refcnt = getrefcount(monitor)
2405808f684SSatish Balay        self.snes.setMonitor(monitor)
2415808f684SSatish Balay        self.assertEqual(getrefcount(monitor), refcnt + 1)
2425808f684SSatish Balay        self.testSolve()
2435808f684SSatish Balay        self.assertTrue(len(reshist) > 0)
2445808f684SSatish Balay        reshist = {}
2451dbd64e7SPierre Jolivet        self.snes.monitorCancel()
2465808f684SSatish Balay        self.assertEqual(getrefcount(monitor), refcnt)
2475808f684SSatish Balay        self.testSolve()
2485808f684SSatish Balay        self.assertTrue(len(reshist) == 0)
2495808f684SSatish Balay        self.snes.setMonitor(monitor)
2505808f684SSatish Balay        self.snes.monitor(1, 7)
2515808f684SSatish Balay        self.assertTrue(reshist[1] == 7)
2525808f684SSatish Balay        ## Monitor = PETSc.SNES.Monitor
2535808f684SSatish Balay        ## self.snes.setMonitor(Monitor())
2545808f684SSatish Balay        ## self.snes.setMonitor(Monitor.DEFAULT)
2555808f684SSatish Balay        ## self.snes.setMonitor(Monitor.SOLUTION)
2565808f684SSatish Balay        ## self.snes.setMonitor(Monitor.RESIDUAL)
2575808f684SSatish Balay        ## self.snes.setMonitor(Monitor.SOLUTION_UPDATE)
2585808f684SSatish Balay
2595808f684SSatish Balay    def testSetGetStepFails(self):
2605808f684SSatish Balay        its = self.snes.getIterationNumber()
2615808f684SSatish Balay        self.assertEqual(its, 0)
2625808f684SSatish Balay        fails = self.snes.getNonlinearStepFailures()
2635808f684SSatish Balay        self.assertEqual(fails, 0)
2645808f684SSatish Balay        fails = self.snes.getMaxNonlinearStepFailures()
2655808f684SSatish Balay        self.assertEqual(fails, 1)
2665808f684SSatish Balay        self.snes.setMaxNonlinearStepFailures(5)
2675808f684SSatish Balay        fails = self.snes.getMaxNonlinearStepFailures()
2685808f684SSatish Balay        self.assertEqual(fails, 5)
2695808f684SSatish Balay        self.snes.setMaxNonlinearStepFailures(1)
2705808f684SSatish Balay        fails = self.snes.getMaxNonlinearStepFailures()
2715808f684SSatish Balay        self.assertEqual(fails, 1)
2725808f684SSatish Balay
2735808f684SSatish Balay    def testSetGetLinFails(self):
2745808f684SSatish Balay        its = self.snes.getLinearSolveIterations()
2755808f684SSatish Balay        self.assertEqual(its, 0)
2765808f684SSatish Balay        fails = self.snes.getLinearSolveFailures()
2775808f684SSatish Balay        self.assertEqual(fails, 0)
2785808f684SSatish Balay        fails = self.snes.getMaxLinearSolveFailures()
2795808f684SSatish Balay        self.assertEqual(fails, 1)
2805808f684SSatish Balay        self.snes.setMaxLinearSolveFailures(5)
2815808f684SSatish Balay        fails = self.snes.getMaxLinearSolveFailures()
2825808f684SSatish Balay        self.assertEqual(fails, 5)
2835808f684SSatish Balay        self.snes.setMaxLinearSolveFailures(1)
2845808f684SSatish Balay        fails = self.snes.getMaxLinearSolveFailures()
2855808f684SSatish Balay        self.assertEqual(fails, 1)
2865808f684SSatish Balay
2875808f684SSatish Balay    def testEW(self):
2885808f684SSatish Balay        self.snes.setUseEW(False)
2895808f684SSatish Balay        self.assertFalse(self.snes.getUseEW())
2905808f684SSatish Balay        self.snes.setUseEW(True)
2915808f684SSatish Balay        self.assertTrue(self.snes.getUseEW())
2925808f684SSatish Balay        params = self.snes.getParamsEW()
2935808f684SSatish Balay        params['version'] = 1
2945808f684SSatish Balay        self.snes.setParamsEW(**params)
2955808f684SSatish Balay        params = self.snes.getParamsEW()
2965808f684SSatish Balay        self.assertEqual(params['version'], 1)
2975808f684SSatish Balay        params['version'] = PETSc.DEFAULT
2985808f684SSatish Balay        self.snes.setParamsEW(**params)
2995808f684SSatish Balay        params = self.snes.getParamsEW()
3005808f684SSatish Balay        self.assertEqual(params['version'], 1)
3015808f684SSatish Balay
3025808f684SSatish Balay    def testMF(self):
3035808f684SSatish Balay        #self.snes.setOptionsPrefix('MF-')
3045808f684SSatish Balay        #opts = PETSc.Options(self.snes)
3055808f684SSatish Balay        #opts['mat_mffd_type'] = 'ds'
3065808f684SSatish Balay        #opts['snes_monitor']  = 'stdout'
3075808f684SSatish Balay        #opts['ksp_monitor']   = 'stdout'
3085808f684SSatish Balay        #opts['snes_view']     = 'stdout'
3095808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
3105808f684SSatish Balay        J.setSizes([2,2])
3115808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
3125808f684SSatish Balay        J.setUp()
3135808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
3145808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
3155808f684SSatish Balay        b = PETSc.Vec().createSeq(2)
3165808f684SSatish Balay        fun = Function()
3175808f684SSatish Balay        jac = Jacobian()
3185808f684SSatish Balay        self.snes.setFunction(fun, r)
3195808f684SSatish Balay        self.snes.setJacobian(jac, J)
3205808f684SSatish Balay        self.assertFalse(self.snes.getUseMF())
3215808f684SSatish Balay        self.snes.setUseMF(False)
3225808f684SSatish Balay        self.assertFalse(self.snes.getUseMF())
3235808f684SSatish Balay        self.snes.setUseMF(True)
3245808f684SSatish Balay        self.assertTrue(self.snes.getUseMF())
3255808f684SSatish Balay        self.snes.setFromOptions()
3264a221d59SStefano Zampini        if self.snes.getType() != PETSc.SNES.Type.NEWTONTR:
3275808f684SSatish Balay            x.setArray([2,3])
3285808f684SSatish Balay            b.set(0)
3295808f684SSatish Balay            self.snes.solve(b, x)
330e0aaf7daSStefano Zampini            self.assertAlmostEqual(abs(x[0]), 1.0, places=5)
331e0aaf7daSStefano Zampini            self.assertAlmostEqual(abs(x[1]), 2.0, places=5)
3325808f684SSatish Balay
3335808f684SSatish Balay    def testFDColor(self):
3345808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
3355808f684SSatish Balay        J.setSizes([2,2])
3365808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
3375808f684SSatish Balay        J.setUp()
3385808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
3395808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
3405808f684SSatish Balay        b = PETSc.Vec().createSeq(2)
3415808f684SSatish Balay        fun = Function()
3425808f684SSatish Balay        jac = Jacobian()
3435808f684SSatish Balay        self.snes.setFunction(fun, r)
3445808f684SSatish Balay        self.snes.setJacobian(jac, J)
3455808f684SSatish Balay        self.assertFalse(self.snes.getUseFD())
3465808f684SSatish Balay        jac(self.snes, x, J, J)
3475808f684SSatish Balay        self.snes.setUseFD(False)
3485808f684SSatish Balay        self.assertFalse(self.snes.getUseFD())
3495808f684SSatish Balay        self.snes.setUseFD(True)
3505808f684SSatish Balay        self.assertTrue(self.snes.getUseFD())
3515808f684SSatish Balay        self.snes.setFromOptions()
3525808f684SSatish Balay        x.setArray([2,3])
3535808f684SSatish Balay        b.set(0)
3545808f684SSatish Balay        self.snes.solve(b, x)
3554a221d59SStefano Zampini        self.assertAlmostEqual(abs(x[0]), 1.0, places=4)
3564a221d59SStefano Zampini        self.assertAlmostEqual(abs(x[1]), 2.0, places=4)
3575808f684SSatish Balay
358*9be84c52SStefano Zampini    def testNPC(self):
359*9be84c52SStefano Zampini        self.snes.appctx = (1,2,3)
360*9be84c52SStefano Zampini        npc = self.snes.getNPC()
361*9be84c52SStefano Zampini        self.assertEqual(npc.appctx, (1,2,3))
362*9be84c52SStefano Zampini
3635808f684SSatish Balay# --------------------------------------------------------------------
3645808f684SSatish Balay
3655808f684SSatish Balayclass TestSNESLS(BaseTestSNES, unittest.TestCase):
3665808f684SSatish Balay    SNES_TYPE = PETSc.SNES.Type.NEWTONLS
3675808f684SSatish Balay
3685808f684SSatish Balayclass TestSNESTR(BaseTestSNES, unittest.TestCase):
3695808f684SSatish Balay    SNES_TYPE = PETSc.SNES.Type.NEWTONTR
3705808f684SSatish Balay
3715808f684SSatish Balay# --------------------------------------------------------------------
3725808f684SSatish Balay
3735808f684SSatish Balayif __name__ == '__main__':
3745808f684SSatish Balay    unittest.main()
375