9 class TestsLinearSolverSwig(unittest.TestCase):
11 def testClassLinearSolver(self):
20 self.assertEqual(A[0,0], 13)
21 self.assertEqual(A[0,1],-14)
22 self.assertEqual(A[1,0],-14)
23 self.assertEqual(A[1,1], 20)
31 self.assertEqual(B[0],-15)
32 self.assertEqual(B[1], 26)
34 LS=LinearSolver(A,B,500,1.E-10,"GMRES","LU");
36 self.assertTrue(abs(X[0]-Xana[0])<1.E-10);
37 self.assertTrue(abs(X[1]-Xana[1])<1.E-10);
38 self.assertEqual(LS.getStatus(),True);
40 self.assertEqual(LS.getNumberMaxOfIter(),500);
41 self.assertEqual(LS.getTolerance(),1.E-10);
42 self.assertEqual(LS.getNameOfMethod(),"GMRES");
43 self.assertEqual(LS.getNumberOfIter(),1);
44 self.assertEqual(LS.isMatrixSingular(),False);
45 self.assertEqual(LS.getNameOfPc(),"LU");
47 LS2 = LinearSolver(A, B, 500, 1.E-10, "CG")
48 A1 = SparseMatrixPetsc(2, 2,4)
58 LS2.setMatrix(A1 * -1.)
59 # LS2.setSndMember(B1 * -1)
60 # LS2.setTolerance(1.E-10)
61 # LS2.setNumberMaxOfIter(10)
62 # LS2.setMatrixIsSingular(True)
64 # self.assertTrue(abs(X2[0] - 1) < 1.E-10)
65 # self.assertTrue(abs(X2[1] - (-1)) < 1.E-10)
66 # self.assertEqual(LS2.getStatus(), True)
67 # self.assertEqual(LS2.getNumberOfIter(), 1)
68 # self.assertEqual(LS2.isMatrixSingular(), True)
69 # self.assertEqual(LS2.getNameOfMethod(), "CG")
71 # LS3 = LinearSolver(A, B, 500, 1.E-10, "BICG")
73 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
74 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
75 # self.assertEqual(LS3.getStatus(), True)
76 # self.assertEqual(LS3.getNameOfMethod(), "BICG")
78 # LS3 = LinearSolver(A, B, 500, 1.E-10, "CR")
80 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
81 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
82 # self.assertEqual(LS3.getStatus(), True)
83 # self.assertEqual(LS3.getNameOfMethod(), "CR")
85 # LS3 = LinearSolver(A, B, 500, 1.E-10, "CGS")
87 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
88 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
89 # self.assertEqual(LS3.getStatus(), True)
90 # self.assertEqual(LS3.getNameOfMethod(), "CGS")
92 # LS3 = LinearSolver(A, B, 500, 1.E-10, "GMRES")
94 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
95 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
96 # self.assertEqual(LS3.getStatus(), True)
97 # self.assertEqual(LS3.getNameOfMethod(), "GMRES")
99 # LS3=LinearSolver(A,B,500,1.E-10,"BICG","LU");
101 # self.assertTrue(abs(X3[0]-Xana[0])<1.E-10);
102 # self.assertTrue(abs(X3[1]-Xana[1])<1.E-10);
103 # self.assertEqual(LS3.getStatus(),True);
104 # self.assertEqual(LS3.getNameOfMethod(),"BICG");
105 # self.assertEqual(LS3.getNameOfPc(),"LU");
107 # LS3 = LinearSolver(A, B, 500, 1.E-10, "BICG")
109 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
110 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
111 # self.assertEqual(LS3.getStatus(), True)
112 # self.assertEqual(LS3.getNameOfMethod(), "BICG")
113 # self.assertEqual(LS3.getNameOfPc(),"");
115 # LS3 = LinearSolver(A, B, 500, 1.E-10, "GCR")
117 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
118 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
119 # self.assertEqual(LS3.getStatus(), True)
120 # self.assertEqual(LS3.getNameOfMethod(), "GCR")
122 # LS3 = LinearSolver(A, B, 500, 1.E-10, "LSQR")
124 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
125 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
126 # self.assertEqual(LS3.getStatus(), True)
127 # self.assertEqual(LS3.getNameOfMethod(), "LSQR")
129 # LS3 = LinearSolver(A, B, 500, 1.E-10, "CHOLESKY")
131 # self.assertTrue(abs(X3[0] - Xana[0]) < 1.E-10)
132 # self.assertTrue(abs(X3[1] - Xana[1]) < 1.E-10)
133 # self.assertEqual(LS3.getStatus(), True)
134 # self.assertEqual(LS3.getNameOfMethod(), "CHOLESKY")
136 # LS3=LinearSolver(A,B,500,1.E-10,"LU");
138 # self.assertTrue(abs(X3[0]-Xana[0])<1.E-10);
139 # self.assertTrue(abs(X3[1]-Xana[1])<1.E-10);
140 # self.assertEqual(LS3.getStatus(),True);
141 # self.assertEqual(LS3.getNameOfMethod(),"LU");
142 # self.assertEqual(LS3.getNameOfPc(),"");
144 A2 = SparseMatrixPetsc(6, 6, 16)
177 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "GMRES", "ILU")
179 for i in range(X11.getNumberOfRows()):
180 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
183 self.assertEqual(LS11.getStatus(), True)
185 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
186 self.assertEqual(LS11.getTolerance(), 1.E-10)
187 self.assertEqual(LS11.getNumberOfIter(), 1)
189 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "CG", "ILU")
191 for i in range(X11.getNumberOfRows()):
192 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
195 self.assertEqual(LS11.getStatus(), True)
197 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
198 self.assertEqual(LS11.getTolerance(), 1.E-10)
199 self.assertEqual(LS11.getNumberOfIter(), 1)
201 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "LGMRES", "ILU")
203 for i in range(X11.getNumberOfRows()):
204 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
207 self.assertEqual(LS11.getStatus(), True)
209 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
210 self.assertEqual(LS11.getTolerance(), 1.E-10)
211 self.assertEqual(LS11.getNumberOfIter(), 1)
213 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "BICG", "ILU")
215 for i in range(X11.getNumberOfRows()):
216 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
219 self.assertEqual(LS11.getStatus(), True)
221 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
222 self.assertEqual(LS11.getTolerance(), 1.E-10)
223 self.assertEqual(LS11.getNumberOfIter(), 1)
225 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "CR", "ILU")
227 for i in range(X11.getNumberOfRows()):
228 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
231 self.assertEqual(LS11.getStatus(), True)
233 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
234 self.assertEqual(LS11.getTolerance(), 1.E-10)
235 self.assertEqual(LS11.getNumberOfIter(), 1)
237 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "CGS", "ILU")
239 for i in range(X11.getNumberOfRows()):
240 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
243 self.assertEqual(LS11.getStatus(), True)
245 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
246 self.assertEqual(LS11.getTolerance(), 1.E-10)
247 self.assertEqual(LS11.getNumberOfIter(), 1)
249 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "BICG", "ILU")
251 for i in range(X11.getNumberOfRows()):
252 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
255 self.assertEqual(LS11.getStatus(), True)
257 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
258 self.assertEqual(LS11.getTolerance(), 1.E-10)
259 self.assertEqual(LS11.getNumberOfIter(), 1)
261 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "GCR", "ILU")
263 for i in range(X11.getNumberOfRows()):
264 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
267 self.assertEqual(LS11.getStatus(), True)
269 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
270 self.assertEqual(LS11.getTolerance(), 1.E-10)
271 self.assertEqual(LS11.getNumberOfIter(), 1)
273 LS11 = LinearSolver(A2, B2, 500, 1.E-10, "LSQR", "ILU")
275 for i in range(X11.getNumberOfRows()):
276 self.assertTrue(abs(X11[i] - Xana2[i]) < 1.E-10)
279 self.assertEqual(LS11.getStatus(), True)
281 self.assertEqual(LS11.getNumberMaxOfIter(), 500)
282 self.assertEqual(LS11.getTolerance(), 1.E-10)
283 self.assertEqual(LS11.getNumberOfIter(), 6)
286 if __name__ == """__main__""":