xref: /petsc/src/binding/petsc4py/test/test_tao.py (revision 5808f68492579297331054bd8ff190489c3b8c20)
1*5808f684SSatish Balay# --------------------------------------------------------------------
2*5808f684SSatish Balay
3*5808f684SSatish Balayfrom petsc4py import PETSc
4*5808f684SSatish Balayimport unittest
5*5808f684SSatish Balay
6*5808f684SSatish Balay# --------------------------------------------------------------------
7*5808f684SSatish Balay
8*5808f684SSatish Balayclass BaseTestTAO(object):
9*5808f684SSatish Balay
10*5808f684SSatish Balay    COMM = None
11*5808f684SSatish Balay
12*5808f684SSatish Balay    def setUp(self):
13*5808f684SSatish Balay        self.tao = PETSc.TAO().create(comm=self.COMM)
14*5808f684SSatish Balay
15*5808f684SSatish Balay    def tearDown(self):
16*5808f684SSatish Balay        self.tao = None
17*5808f684SSatish Balay
18*5808f684SSatish Balay    def testSetRoutinesToNone(self):
19*5808f684SSatish Balay        tao = self.tao
20*5808f684SSatish Balay        objective, gradient, objgrad = None, None, None
21*5808f684SSatish Balay        constraint, varbounds = None, None
22*5808f684SSatish Balay        hessian, jacobian = None, None
23*5808f684SSatish Balay        tao.setObjective(objective)
24*5808f684SSatish Balay        tao.setGradient(gradient)
25*5808f684SSatish Balay        tao.setVariableBounds(varbounds)
26*5808f684SSatish Balay        tao.setObjectiveGradient(objgrad)
27*5808f684SSatish Balay        tao.setConstraints(constraint)
28*5808f684SSatish Balay        tao.setHessian(hessian)
29*5808f684SSatish Balay        tao.setJacobian(jacobian)
30*5808f684SSatish Balay
31*5808f684SSatish Balay    def testGetVecsAndMats(self):
32*5808f684SSatish Balay        tao = self.tao
33*5808f684SSatish Balay        x = tao.getSolution()
34*5808f684SSatish Balay        g = tao.getGradient()
35*5808f684SSatish Balay        l, u = tao.getVariableBounds()
36*5808f684SSatish Balay        r = None#tao.getConstraintVec()
37*5808f684SSatish Balay        H, HP = None,None#tao.getHessianMat()
38*5808f684SSatish Balay        J, JP = None,None#tao.getJacobianMat()
39*5808f684SSatish Balay        for o in [x, g, r, l, u ,H, HP, J, JP,]:
40*5808f684SSatish Balay            self.assertFalse(o)
41*5808f684SSatish Balay
42*5808f684SSatish Balay    def testGetKSP(self):
43*5808f684SSatish Balay        ksp = self.tao.getKSP()
44*5808f684SSatish Balay        self.assertFalse(ksp)
45*5808f684SSatish Balay
46*5808f684SSatish Balay# --------------------------------------------------------------------
47*5808f684SSatish Balay
48*5808f684SSatish Balayclass TestTAOSelf(BaseTestTAO, unittest.TestCase):
49*5808f684SSatish Balay    COMM = PETSc.COMM_SELF
50*5808f684SSatish Balay
51*5808f684SSatish Balayclass TestTAOWorld(BaseTestTAO, unittest.TestCase):
52*5808f684SSatish Balay    COMM = PETSc.COMM_WORLD
53*5808f684SSatish Balay
54*5808f684SSatish Balay# --------------------------------------------------------------------
55*5808f684SSatish Balay
56*5808f684SSatish Balayimport numpy
57*5808f684SSatish Balayif numpy.iscomplexobj(PETSc.ScalarType()):
58*5808f684SSatish Balay    del BaseTestTAO
59*5808f684SSatish Balay    del TestTAOSelf
60*5808f684SSatish Balay    del TestTAOWorld
61*5808f684SSatish Balay
62*5808f684SSatish Balayif __name__ == '__main__':
63*5808f684SSatish Balay    unittest.main()
64