xref: /petsc/src/binding/petsc4py/test/test_snes.py (revision 5808f68492579297331054bd8ff190489c3b8c20)
1*5808f684SSatish Balay# --------------------------------------------------------------------
2*5808f684SSatish Balay
3*5808f684SSatish Balayfrom petsc4py import PETSc
4*5808f684SSatish Balayimport unittest
5*5808f684SSatish Balayfrom sys import getrefcount
6*5808f684SSatish Balay
7*5808f684SSatish Balay# --------------------------------------------------------------------
8*5808f684SSatish Balay
9*5808f684SSatish Balayclass Function:
10*5808f684SSatish Balay    def __call__(self, snes, x, f):
11*5808f684SSatish Balay        f[0] = (x[0]*x[0] + x[0]*x[1] - 3.0).item()
12*5808f684SSatish Balay        f[1] = (x[0]*x[1] + x[1]*x[1] - 6.0).item()
13*5808f684SSatish Balay        f.assemble()
14*5808f684SSatish Balay
15*5808f684SSatish Balayclass Jacobian:
16*5808f684SSatish Balay    def __call__(self, snes, x, J, P):
17*5808f684SSatish Balay        P[0,0] = (2.0*x[0] + x[1]).item()
18*5808f684SSatish Balay        P[0,1] = (x[0]).item()
19*5808f684SSatish Balay        P[1,0] = (x[1]).item()
20*5808f684SSatish Balay        P[1,1] = (x[0] + 2.0*x[1]).item()
21*5808f684SSatish Balay        P.assemble()
22*5808f684SSatish Balay        if J != P: J.assemble()
23*5808f684SSatish Balay
24*5808f684SSatish Balay# --------------------------------------------------------------------
25*5808f684SSatish Balay
26*5808f684SSatish Balayclass BaseTestSNES(object):
27*5808f684SSatish Balay
28*5808f684SSatish Balay    SNES_TYPE = None
29*5808f684SSatish Balay
30*5808f684SSatish Balay    def setUp(self):
31*5808f684SSatish Balay        snes = PETSc.SNES()
32*5808f684SSatish Balay        snes.create(PETSc.COMM_SELF)
33*5808f684SSatish Balay        if self.SNES_TYPE:
34*5808f684SSatish Balay            snes.setType(self.SNES_TYPE)
35*5808f684SSatish Balay        self.snes = snes
36*5808f684SSatish Balay
37*5808f684SSatish Balay    def tearDown(self):
38*5808f684SSatish Balay        self.snes = None
39*5808f684SSatish Balay
40*5808f684SSatish Balay    def testGetSetType(self):
41*5808f684SSatish Balay        self.assertEqual(self.snes.getType(), self.SNES_TYPE)
42*5808f684SSatish Balay        self.snes.setType(self.SNES_TYPE)
43*5808f684SSatish Balay        self.assertEqual(self.snes.getType(), self.SNES_TYPE)
44*5808f684SSatish Balay
45*5808f684SSatish Balay    def testTols(self):
46*5808f684SSatish Balay        tols = self.snes.getTolerances()
47*5808f684SSatish Balay        self.snes.setTolerances(*tols)
48*5808f684SSatish Balay        tnames = ('rtol', 'atol','stol', 'max_it')
49*5808f684SSatish Balay        tolvals = [getattr(self.snes, t) for t in  tnames]
50*5808f684SSatish Balay        self.assertEqual(tuple(tols), tuple(tolvals))
51*5808f684SSatish Balay
52*5808f684SSatish Balay    def testProperties(self):
53*5808f684SSatish Balay        snes = self.snes
54*5808f684SSatish Balay        #
55*5808f684SSatish Balay        snes.appctx = (1,2,3)
56*5808f684SSatish Balay        self.assertEqual(snes.appctx, (1,2,3))
57*5808f684SSatish Balay        snes.appctx = None
58*5808f684SSatish Balay        self.assertEqual(snes.appctx, None)
59*5808f684SSatish Balay        #
60*5808f684SSatish Balay        snes.its = 1
61*5808f684SSatish Balay        self.assertEqual(snes.its, 1)
62*5808f684SSatish Balay        snes.its = 0
63*5808f684SSatish Balay        self.assertEqual(snes.its, 0)
64*5808f684SSatish Balay        #
65*5808f684SSatish Balay        snes.norm = 1
66*5808f684SSatish Balay        self.assertEqual(snes.norm, 1)
67*5808f684SSatish Balay        snes.norm = 0
68*5808f684SSatish Balay        self.assertEqual(snes.norm, 0)
69*5808f684SSatish Balay        #
70*5808f684SSatish Balay        rh, ih = snes.history
71*5808f684SSatish Balay        self.assertTrue(len(rh)==0)
72*5808f684SSatish Balay        self.assertTrue(len(ih)==0)
73*5808f684SSatish Balay        #
74*5808f684SSatish Balay        reason = PETSc.SNES.ConvergedReason.CONVERGED_ITS
75*5808f684SSatish Balay        snes.reason = reason
76*5808f684SSatish Balay        self.assertEqual(snes.reason, reason)
77*5808f684SSatish Balay        self.assertTrue(snes.converged)
78*5808f684SSatish Balay        self.assertFalse(snes.diverged)
79*5808f684SSatish Balay        self.assertFalse(snes.iterating)
80*5808f684SSatish Balay        reason = PETSc.SNES.ConvergedReason.DIVERGED_MAX_IT
81*5808f684SSatish Balay        snes.reason = reason
82*5808f684SSatish Balay        self.assertEqual(snes.reason, reason)
83*5808f684SSatish Balay        self.assertFalse(snes.converged)
84*5808f684SSatish Balay        self.assertTrue(snes.diverged)
85*5808f684SSatish Balay        self.assertFalse(snes.iterating)
86*5808f684SSatish Balay        reason = PETSc.SNES.ConvergedReason.CONVERGED_ITERATING
87*5808f684SSatish Balay        snes.reason = reason
88*5808f684SSatish Balay        self.assertEqual(snes.reason, reason)
89*5808f684SSatish Balay        self.assertFalse(snes.converged)
90*5808f684SSatish Balay        self.assertFalse(snes.diverged)
91*5808f684SSatish Balay        self.assertTrue(snes.iterating)
92*5808f684SSatish Balay        #
93*5808f684SSatish Balay        self.assertFalse(snes.use_ew)
94*5808f684SSatish Balay        self.assertFalse(snes.use_mf)
95*5808f684SSatish Balay        self.assertFalse(snes.use_fd)
96*5808f684SSatish Balay
97*5808f684SSatish Balay    def testGetSetFunc(self):
98*5808f684SSatish Balay        r, func = self.snes.getFunction()
99*5808f684SSatish Balay        self.assertFalse(r)
100*5808f684SSatish Balay        self.assertTrue(func is None)
101*5808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
102*5808f684SSatish Balay        func = Function()
103*5808f684SSatish Balay        refcnt = getrefcount(func)
104*5808f684SSatish Balay        self.snes.setFunction(func, r)
105*5808f684SSatish Balay        self.snes.setFunction(func, r)
106*5808f684SSatish Balay        self.assertEqual(getrefcount(func), refcnt + 1)
107*5808f684SSatish Balay        r2, func2 = self.snes.getFunction()
108*5808f684SSatish Balay        self.assertEqual(r, r2)
109*5808f684SSatish Balay        self.assertEqual(func, func2[0])
110*5808f684SSatish Balay        self.assertEqual(getrefcount(func), refcnt + 1)
111*5808f684SSatish Balay        r3, func3 = self.snes.getFunction()
112*5808f684SSatish Balay        self.assertEqual(r, r3)
113*5808f684SSatish Balay        self.assertEqual(func, func3[0])
114*5808f684SSatish Balay        self.assertEqual(getrefcount(func), refcnt + 1)
115*5808f684SSatish Balay
116*5808f684SSatish Balay    def testCompFunc(self):
117*5808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
118*5808f684SSatish Balay        func = Function()
119*5808f684SSatish Balay        self.snes.setFunction(func, r)
120*5808f684SSatish Balay        x, y = r.duplicate(), r.duplicate()
121*5808f684SSatish Balay        x[0], x[1] = [1, 2]
122*5808f684SSatish Balay        self.snes.computeFunction(x, y)
123*5808f684SSatish Balay        self.assertAlmostEqual(abs(y[0]), 0.0)
124*5808f684SSatish Balay        self.assertAlmostEqual(abs(y[1]), 0.0)
125*5808f684SSatish Balay
126*5808f684SSatish Balay    def testGetSetJac(self):
127*5808f684SSatish Balay        A, P, jac = self.snes.getJacobian()
128*5808f684SSatish Balay        self.assertFalse(A)
129*5808f684SSatish Balay        self.assertFalse(P)
130*5808f684SSatish Balay        self.assertTrue(jac is None)
131*5808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
132*5808f684SSatish Balay        J.setSizes([2,2])
133*5808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
134*5808f684SSatish Balay        J.setUp()
135*5808f684SSatish Balay        jac = Jacobian()
136*5808f684SSatish Balay        refcnt = getrefcount(jac)
137*5808f684SSatish Balay        self.snes.setJacobian(jac, J)
138*5808f684SSatish Balay        self.snes.setJacobian(jac, J)
139*5808f684SSatish Balay        self.assertEqual(getrefcount(jac), refcnt + 1)
140*5808f684SSatish Balay        J2, P2, jac2 = self.snes.getJacobian()
141*5808f684SSatish Balay        self.assertEqual(J, J2)
142*5808f684SSatish Balay        self.assertEqual(J2, P2)
143*5808f684SSatish Balay        self.assertEqual(jac, jac2[0])
144*5808f684SSatish Balay        self.assertEqual(getrefcount(jac), refcnt + 1)
145*5808f684SSatish Balay        J3, P3, jac3 = self.snes.getJacobian()
146*5808f684SSatish Balay        self.assertEqual(J, J3)
147*5808f684SSatish Balay        self.assertEqual(J3, P3)
148*5808f684SSatish Balay        self.assertEqual(jac, jac3[0])
149*5808f684SSatish Balay        self.assertEqual(getrefcount(jac), refcnt + 1)
150*5808f684SSatish Balay
151*5808f684SSatish Balay    def testCompJac(self):
152*5808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
153*5808f684SSatish Balay        J.setSizes([2,2])
154*5808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
155*5808f684SSatish Balay        J.setUp()
156*5808f684SSatish Balay        jac = Jacobian()
157*5808f684SSatish Balay        self.snes.setJacobian(jac, J)
158*5808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
159*5808f684SSatish Balay        x[0], x[1] = [1, 2]
160*5808f684SSatish Balay        self.snes.getKSP().getPC()
161*5808f684SSatish Balay        self.snes.computeJacobian(x, J)
162*5808f684SSatish Balay
163*5808f684SSatish Balay    def testGetSetUpd(self):
164*5808f684SSatish Balay        self.assertTrue(self.snes.getUpdate() is None)
165*5808f684SSatish Balay        upd = lambda snes, it: None
166*5808f684SSatish Balay        refcnt = getrefcount(upd)
167*5808f684SSatish Balay        self.snes.setUpdate(upd)
168*5808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt + 1)
169*5808f684SSatish Balay        self.snes.setUpdate(upd)
170*5808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt + 1)
171*5808f684SSatish Balay        self.snes.setUpdate(None)
172*5808f684SSatish Balay        self.assertTrue(self.snes.getUpdate() is None)
173*5808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt)
174*5808f684SSatish Balay        self.snes.setUpdate(upd)
175*5808f684SSatish Balay        self.assertEqual(getrefcount(upd), refcnt + 1)
176*5808f684SSatish Balay        upd2 = lambda snes, it: None
177*5808f684SSatish Balay        refcnt2 = getrefcount(upd2)
178*5808f684SSatish Balay        self.snes.setUpdate(upd2)
179*5808f684SSatish Balay        self.assertEqual(getrefcount(upd),  refcnt)
180*5808f684SSatish Balay        self.assertEqual(getrefcount(upd2), refcnt2 + 1)
181*5808f684SSatish Balay        tmp = self.snes.getUpdate()[0]
182*5808f684SSatish Balay        self.assertTrue(tmp is upd2)
183*5808f684SSatish Balay        self.assertEqual(getrefcount(upd2), refcnt2 + 2)
184*5808f684SSatish Balay        del tmp
185*5808f684SSatish Balay        self.snes.setUpdate(None)
186*5808f684SSatish Balay        self.assertTrue(self.snes.getUpdate() is None)
187*5808f684SSatish Balay        self.assertEqual(getrefcount(upd2), refcnt2)
188*5808f684SSatish Balay
189*5808f684SSatish Balay    def testGetKSP(self):
190*5808f684SSatish Balay        ksp = self.snes.getKSP()
191*5808f684SSatish Balay        self.assertEqual(ksp.getRefCount(), 2)
192*5808f684SSatish Balay
193*5808f684SSatish Balay    def testSolve(self):
194*5808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
195*5808f684SSatish Balay        J.setSizes([2,2])
196*5808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
197*5808f684SSatish Balay        J.setUp()
198*5808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
199*5808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
200*5808f684SSatish Balay        b = PETSc.Vec().createSeq(2)
201*5808f684SSatish Balay        self.snes.setFunction(Function(), r)
202*5808f684SSatish Balay        self.snes.setJacobian(Jacobian(), J)
203*5808f684SSatish Balay        x.setArray([2,3])
204*5808f684SSatish Balay        b.set(0)
205*5808f684SSatish Balay        self.snes.setConvergenceHistory()
206*5808f684SSatish Balay        self.snes.setFromOptions()
207*5808f684SSatish Balay        self.snes.solve(b, x)
208*5808f684SSatish Balay        rh, ih = self.snes.getConvergenceHistory()
209*5808f684SSatish Balay        self.snes.setConvergenceHistory(0, reset=True)
210*5808f684SSatish Balay        rh, ih = self.snes.getConvergenceHistory()
211*5808f684SSatish Balay        self.assertEqual(len(rh), 0)
212*5808f684SSatish Balay        self.assertEqual(len(ih), 0)
213*5808f684SSatish Balay        self.assertAlmostEqual(abs(x[0]), 1.0)
214*5808f684SSatish Balay        self.assertAlmostEqual(abs(x[1]), 2.0)
215*5808f684SSatish Balay        # XXX this test should not be here !
216*5808f684SSatish Balay        reason = self.snes.callConvergenceTest(1, 0, 0, 0)
217*5808f684SSatish Balay        self.assertTrue(reason > 0)
218*5808f684SSatish Balay
219*5808f684SSatish Balay    def testResetAndSolve(self):
220*5808f684SSatish Balay        self.snes.reset()
221*5808f684SSatish Balay        self.testSolve()
222*5808f684SSatish Balay        self.snes.reset()
223*5808f684SSatish Balay        self.testSolve()
224*5808f684SSatish Balay        self.snes.reset()
225*5808f684SSatish Balay
226*5808f684SSatish Balay    def testSetMonitor(self):
227*5808f684SSatish Balay        reshist = {}
228*5808f684SSatish Balay        def monitor(snes, its, fgnorm):
229*5808f684SSatish Balay            reshist[its] = fgnorm
230*5808f684SSatish Balay        refcnt = getrefcount(monitor)
231*5808f684SSatish Balay        self.snes.setMonitor(monitor)
232*5808f684SSatish Balay        self.assertEqual(getrefcount(monitor), refcnt + 1)
233*5808f684SSatish Balay        self.testSolve()
234*5808f684SSatish Balay        self.assertTrue(len(reshist) > 0)
235*5808f684SSatish Balay        reshist = {}
236*5808f684SSatish Balay        self.snes.cancelMonitor()
237*5808f684SSatish Balay        self.assertEqual(getrefcount(monitor), refcnt)
238*5808f684SSatish Balay        self.testSolve()
239*5808f684SSatish Balay        self.assertTrue(len(reshist) == 0)
240*5808f684SSatish Balay        self.snes.setMonitor(monitor)
241*5808f684SSatish Balay        self.snes.monitor(1, 7)
242*5808f684SSatish Balay        self.assertTrue(reshist[1] == 7)
243*5808f684SSatish Balay        ## Monitor = PETSc.SNES.Monitor
244*5808f684SSatish Balay        ## self.snes.setMonitor(Monitor())
245*5808f684SSatish Balay        ## self.snes.setMonitor(Monitor.DEFAULT)
246*5808f684SSatish Balay        ## self.snes.setMonitor(Monitor.SOLUTION)
247*5808f684SSatish Balay        ## self.snes.setMonitor(Monitor.RESIDUAL)
248*5808f684SSatish Balay        ## self.snes.setMonitor(Monitor.SOLUTION_UPDATE)
249*5808f684SSatish Balay
250*5808f684SSatish Balay    def testSetGetStepFails(self):
251*5808f684SSatish Balay        its = self.snes.getIterationNumber()
252*5808f684SSatish Balay        self.assertEqual(its, 0)
253*5808f684SSatish Balay        fails = self.snes.getNonlinearStepFailures()
254*5808f684SSatish Balay        self.assertEqual(fails, 0)
255*5808f684SSatish Balay        fails = self.snes.getMaxNonlinearStepFailures()
256*5808f684SSatish Balay        self.assertEqual(fails, 1)
257*5808f684SSatish Balay        self.snes.setMaxNonlinearStepFailures(5)
258*5808f684SSatish Balay        fails = self.snes.getMaxNonlinearStepFailures()
259*5808f684SSatish Balay        self.assertEqual(fails, 5)
260*5808f684SSatish Balay        self.snes.setMaxNonlinearStepFailures(1)
261*5808f684SSatish Balay        fails = self.snes.getMaxNonlinearStepFailures()
262*5808f684SSatish Balay        self.assertEqual(fails, 1)
263*5808f684SSatish Balay
264*5808f684SSatish Balay    def testSetGetLinFails(self):
265*5808f684SSatish Balay        its = self.snes.getLinearSolveIterations()
266*5808f684SSatish Balay        self.assertEqual(its, 0)
267*5808f684SSatish Balay        fails = self.snes.getLinearSolveFailures()
268*5808f684SSatish Balay        self.assertEqual(fails, 0)
269*5808f684SSatish Balay        fails = self.snes.getMaxLinearSolveFailures()
270*5808f684SSatish Balay        self.assertEqual(fails, 1)
271*5808f684SSatish Balay        self.snes.setMaxLinearSolveFailures(5)
272*5808f684SSatish Balay        fails = self.snes.getMaxLinearSolveFailures()
273*5808f684SSatish Balay        self.assertEqual(fails, 5)
274*5808f684SSatish Balay        self.snes.setMaxLinearSolveFailures(1)
275*5808f684SSatish Balay        fails = self.snes.getMaxLinearSolveFailures()
276*5808f684SSatish Balay        self.assertEqual(fails, 1)
277*5808f684SSatish Balay
278*5808f684SSatish Balay    def testEW(self):
279*5808f684SSatish Balay        self.snes.setUseEW(False)
280*5808f684SSatish Balay        self.assertFalse(self.snes.getUseEW())
281*5808f684SSatish Balay        self.snes.setUseEW(True)
282*5808f684SSatish Balay        self.assertTrue(self.snes.getUseEW())
283*5808f684SSatish Balay        params = self.snes.getParamsEW()
284*5808f684SSatish Balay        params['version'] = 1
285*5808f684SSatish Balay        self.snes.setParamsEW(**params)
286*5808f684SSatish Balay        params = self.snes.getParamsEW()
287*5808f684SSatish Balay        self.assertEqual(params['version'], 1)
288*5808f684SSatish Balay        params['version'] = PETSc.DEFAULT
289*5808f684SSatish Balay        self.snes.setParamsEW(**params)
290*5808f684SSatish Balay        params = self.snes.getParamsEW()
291*5808f684SSatish Balay        self.assertEqual(params['version'], 1)
292*5808f684SSatish Balay
293*5808f684SSatish Balay    def testMF(self):
294*5808f684SSatish Balay        #self.snes.setOptionsPrefix('MF-')
295*5808f684SSatish Balay        #opts = PETSc.Options(self.snes)
296*5808f684SSatish Balay        #opts['mat_mffd_type'] = 'ds'
297*5808f684SSatish Balay        #opts['snes_monitor']  = 'stdout'
298*5808f684SSatish Balay        #opts['ksp_monitor']   = 'stdout'
299*5808f684SSatish Balay        #opts['snes_view']     = 'stdout'
300*5808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
301*5808f684SSatish Balay        J.setSizes([2,2])
302*5808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
303*5808f684SSatish Balay        J.setUp()
304*5808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
305*5808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
306*5808f684SSatish Balay        b = PETSc.Vec().createSeq(2)
307*5808f684SSatish Balay        fun = Function()
308*5808f684SSatish Balay        jac = Jacobian()
309*5808f684SSatish Balay        self.snes.setFunction(fun, r)
310*5808f684SSatish Balay        self.snes.setJacobian(jac, J)
311*5808f684SSatish Balay        self.assertFalse(self.snes.getUseMF())
312*5808f684SSatish Balay        self.snes.setUseMF(False)
313*5808f684SSatish Balay        self.assertFalse(self.snes.getUseMF())
314*5808f684SSatish Balay        self.snes.setUseMF(True)
315*5808f684SSatish Balay        self.assertTrue(self.snes.getUseMF())
316*5808f684SSatish Balay        self.snes.setFromOptions()
317*5808f684SSatish Balay        x.setArray([2,3])
318*5808f684SSatish Balay        b.set(0)
319*5808f684SSatish Balay        self.snes.solve(b, x)
320*5808f684SSatish Balay        self.assertAlmostEqual(abs(x[0]), 1.0)
321*5808f684SSatish Balay        self.assertAlmostEqual(abs(x[1]), 2.0)
322*5808f684SSatish Balay
323*5808f684SSatish Balay    def testFDColor(self):
324*5808f684SSatish Balay        J = PETSc.Mat().create(PETSc.COMM_SELF)
325*5808f684SSatish Balay        J.setSizes([2,2])
326*5808f684SSatish Balay        J.setType(PETSc.Mat.Type.SEQAIJ)
327*5808f684SSatish Balay        J.setUp()
328*5808f684SSatish Balay        r = PETSc.Vec().createSeq(2)
329*5808f684SSatish Balay        x = PETSc.Vec().createSeq(2)
330*5808f684SSatish Balay        b = PETSc.Vec().createSeq(2)
331*5808f684SSatish Balay        fun = Function()
332*5808f684SSatish Balay        jac = Jacobian()
333*5808f684SSatish Balay        self.snes.setFunction(fun, r)
334*5808f684SSatish Balay        self.snes.setJacobian(jac, J)
335*5808f684SSatish Balay        self.assertFalse(self.snes.getUseFD())
336*5808f684SSatish Balay        jac(self.snes, x, J, J)
337*5808f684SSatish Balay        self.snes.setUseFD(False)
338*5808f684SSatish Balay        self.assertFalse(self.snes.getUseFD())
339*5808f684SSatish Balay        self.snes.setUseFD(True)
340*5808f684SSatish Balay        self.assertTrue(self.snes.getUseFD())
341*5808f684SSatish Balay        self.snes.setFromOptions()
342*5808f684SSatish Balay        x.setArray([2,3])
343*5808f684SSatish Balay        b.set(0)
344*5808f684SSatish Balay        self.snes.solve(b, x)
345*5808f684SSatish Balay        self.assertAlmostEqual(abs(x[0]), 1.0)
346*5808f684SSatish Balay        self.assertAlmostEqual(abs(x[1]), 2.0)
347*5808f684SSatish Balay
348*5808f684SSatish Balay# --------------------------------------------------------------------
349*5808f684SSatish Balay
350*5808f684SSatish Balayclass TestSNESLS(BaseTestSNES, unittest.TestCase):
351*5808f684SSatish Balay    SNES_TYPE = PETSc.SNES.Type.NEWTONLS
352*5808f684SSatish Balay
353*5808f684SSatish Balayclass TestSNESTR(BaseTestSNES, unittest.TestCase):
354*5808f684SSatish Balay    SNES_TYPE = PETSc.SNES.Type.NEWTONTR
355*5808f684SSatish Balay
356*5808f684SSatish Balay# --------------------------------------------------------------------
357*5808f684SSatish Balay
358*5808f684SSatish Balayif __name__ == '__main__':
359*5808f684SSatish Balay    unittest.main()
360