15808f684SSatish Balayfrom petsc4py import PETSc 25808f684SSatish Balayimport unittest 35808f684SSatish Balay 45808f684SSatish Balayimport numpy as N 55808f684SSatish Balayimport numpy as np 65808f684SSatish Balay 7*6f336411SStefano Zampini 85808f684SSatish Balaydef mkgraph(comm, m, n): 95808f684SSatish Balay start = m * n * comm.rank 105808f684SSatish Balay end = start + m * n 115808f684SSatish Balay idt = PETSc.IntType 125808f684SSatish Balay rows = [] 13*6f336411SStefano Zampini for gridI in range(start, end): 145808f684SSatish Balay rows.append([]) 155808f684SSatish Balay adj = rows[-1] 16*6f336411SStefano Zampini i = gridI // n 17*6f336411SStefano Zampini j = gridI - i * n 18*6f336411SStefano Zampini if i > 0: 19*6f336411SStefano Zampini gridJ = gridI - n 20*6f336411SStefano Zampini adj.append(gridJ) 21*6f336411SStefano Zampini if j > 0: 22*6f336411SStefano Zampini gridJ = gridI - 1 23*6f336411SStefano Zampini adj.append(gridJ) 24*6f336411SStefano Zampini adj.append(gridI) 25*6f336411SStefano Zampini if j < n - 1: 26*6f336411SStefano Zampini gridJ = gridI + 1 27*6f336411SStefano Zampini adj.append(gridJ) 28*6f336411SStefano Zampini if i < m - 1: 29*6f336411SStefano Zampini gridJ = gridI + n 30*6f336411SStefano Zampini adj.append(gridJ) 315808f684SSatish Balay nods = N.array(range(start, end), dtype=idt) 325808f684SSatish Balay xadj = N.array([0] * (len(rows) + 1), dtype=idt) 335808f684SSatish Balay xadj[0] = 0 345808f684SSatish Balay xadj[1:] = N.cumsum([len(r) for r in rows], dtype=idt) 35*6f336411SStefano Zampini if not rows: 36*6f336411SStefano Zampini adjy = N.array([], dtype=idt) 37*6f336411SStefano Zampini else: 38*6f336411SStefano Zampini adjy = N.concatenate(rows).astype(idt) 395808f684SSatish Balay return nods, xadj, adjy 405808f684SSatish Balay 415808f684SSatish Balay 42*6f336411SStefano Zampiniclass BaseTestMatAnyAIJ: 435808f684SSatish Balay COMM = PETSc.COMM_NULL 445808f684SSatish Balay TYPE = None 455808f684SSatish Balay GRID = 0, 0 465808f684SSatish Balay BSIZE = None 475808f684SSatish Balay 485808f684SSatish Balay def setUp(self): 495808f684SSatish Balay COMM = self.COMM 505808f684SSatish Balay GM, GN = self.GRID 515808f684SSatish Balay BS = self.BSIZE 525808f684SSatish Balay # 535808f684SSatish Balay try: 545808f684SSatish Balay rbs, cbs = BS 555808f684SSatish Balay rbs = rbs or 1 565808f684SSatish Balay cbs = cbs or 1 575808f684SSatish Balay except (TypeError, ValueError): 585808f684SSatish Balay rbs = cbs = BS or 1 59*6f336411SStefano Zampini sdt = PETSc.ScalarType 605808f684SSatish Balay self.rows, self.xadj, self.adjy = mkgraph(COMM, GM, GN) 615808f684SSatish Balay self.vals = N.array(range(1, 1 + len(self.adjy) * rbs * cbs), dtype=sdt) 625808f684SSatish Balay self.vals.shape = (-1, rbs, cbs) 635808f684SSatish Balay # 645808f684SSatish Balay m, n = GM, GN 655808f684SSatish Balay rowsz = (m * n * rbs, None) 665808f684SSatish Balay colsz = (m * n * cbs, None) 675808f684SSatish Balay A = self.A = PETSc.Mat().create(comm=COMM) 685808f684SSatish Balay A.setType(self.TYPE) 695808f684SSatish Balay A.setSizes([rowsz, colsz], BS) 705808f684SSatish Balay 715808f684SSatish Balay def tearDown(self): 725808f684SSatish Balay self.A.destroy() 735808f684SSatish Balay self.A = None 7462e5d2d2SJDBetteridge PETSc.garbage_cleanup() 755808f684SSatish Balay 765808f684SSatish Balay def testSetPreallocNNZ(self): 775808f684SSatish Balay nnz = [5, 2] 785808f684SSatish Balay self.A.setPreallocationNNZ(nnz) 795808f684SSatish Balay self._chk_bs(self.A, self.BSIZE) 805808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 815808f684SSatish Balay self.A.setOption(opt, True) 825808f684SSatish Balay ai, aj, av = self._set_values() 835808f684SSatish Balay self.A.assemble() 845808f684SSatish Balay self._chk_aij(self.A, ai, aj) 855808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 865808f684SSatish Balay self.A.setOption(opt, True) 875808f684SSatish Balay ai, aj, av = self._set_values_ijv() 885808f684SSatish Balay self.A.assemble() 895808f684SSatish Balay self._chk_aij(self.A, ai, aj) 905808f684SSatish Balay 915808f684SSatish Balay def testSetPreallocNNZ_2(self): 925808f684SSatish Balay _, ai, _, _ = self._get_aijv() 935808f684SSatish Balay d_nnz = N.diff(ai) 945808f684SSatish Balay nnz = [d_nnz, 3] 955808f684SSatish Balay self.A.setPreallocationNNZ(nnz) 965808f684SSatish Balay self._chk_bs(self.A, self.BSIZE) 975808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 985808f684SSatish Balay self.A.setOption(opt, True) 995808f684SSatish Balay ai, aj, av = self._set_values() 1005808f684SSatish Balay self.A.assemble() 1015808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1025808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 1035808f684SSatish Balay self.A.setOption(opt, True) 1045808f684SSatish Balay ai, aj, av = self._set_values_ijv() 1055808f684SSatish Balay self.A.assemble() 1065808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1075808f684SSatish Balay 1085808f684SSatish Balay def testSetPreallocCSR(self): 109*6f336411SStefano Zampini if 'is' in self.A.getType(): 110*6f336411SStefano Zampini return # XXX 1115808f684SSatish Balay _, ai, aj, _ = self._get_aijv() 1125808f684SSatish Balay csr = [ai, aj] 1135808f684SSatish Balay self.A.setPreallocationCSR(csr) 1145808f684SSatish Balay self._chk_bs(self.A, self.BSIZE) 1155808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1165808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 1175808f684SSatish Balay self.A.setOption(opt, True) 1185808f684SSatish Balay self._set_values() 1195808f684SSatish Balay self.A.assemble() 1205808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1215808f684SSatish Balay self._set_values_ijv() 1225808f684SSatish Balay self.A.assemble() 1235808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1245808f684SSatish Balay 1255808f684SSatish Balay def testSetPreallocCSR_2(self): 126*6f336411SStefano Zampini if 'is' in self.A.getType(): 127*6f336411SStefano Zampini return # XXX 1285808f684SSatish Balay _, ai, aj, av = self._get_aijv() 1295808f684SSatish Balay csr = [ai, aj, av] 1305808f684SSatish Balay self.A.setPreallocationCSR(csr) 1315808f684SSatish Balay self._chk_bs(self.A, self.BSIZE) 1325808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1335808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 1345808f684SSatish Balay self.A.setOption(opt, True) 1355808f684SSatish Balay self._set_values() 1365808f684SSatish Balay self.A.assemble() 1375808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1385808f684SSatish Balay self._set_values_ijv() 1395808f684SSatish Balay self.A.assemble() 1405808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1415808f684SSatish Balay 1425808f684SSatish Balay def testSetValues(self): 1435808f684SSatish Balay self._preallocate() 1445808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 1455808f684SSatish Balay self.A.setOption(opt, True) 1465808f684SSatish Balay ai, aj, av = self._set_values() 1475808f684SSatish Balay self.A.assemble() 1485808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1495808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 1505808f684SSatish Balay self.A.setOption(opt, True) 1515808f684SSatish Balay ai, aj, av = self._set_values() 1525808f684SSatish Balay self.A.assemble() 1535808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1545808f684SSatish Balay 1555808f684SSatish Balay def testSetValuesIJV(self): 1565808f684SSatish Balay self._preallocate() 1575808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 1585808f684SSatish Balay self.A.setOption(opt, True) 1595808f684SSatish Balay ai, aj, av = self._set_values_ijv() 1605808f684SSatish Balay self.A.assemble() 1615808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1625808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 1635808f684SSatish Balay self.A.setOption(opt, True) 1645808f684SSatish Balay ai, aj, av = self._set_values_ijv() 1655808f684SSatish Balay self.A.assemble() 1665808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1675808f684SSatish Balay 1685808f684SSatish Balay def testGetValuesCSR(self): 169*6f336411SStefano Zampini if 'is' in self.A.getType(): 170*6f336411SStefano Zampini return # XXX 1715808f684SSatish Balay self._preallocate() 1725808f684SSatish Balay self._set_values_ijv() 1735808f684SSatish Balay A = self.A 1745808f684SSatish Balay A.assemble() 1755808f684SSatish Balay if 'sbaij' in A.getType(): 1765808f684SSatish Balay opt = PETSc.Mat.Option.GETROW_UPPERTRIANGULAR 1775808f684SSatish Balay self.A.setOption(opt, True) 1785808f684SSatish Balay ai, aj, av = A.getValuesCSR() 1795808f684SSatish Balay rstart, rend = A.getOwnershipRange() 1805808f684SSatish Balay for row in range(rstart, rend): 1815808f684SSatish Balay cols, vals = A.getRow(row) 1825808f684SSatish Balay i = row - rstart 1835808f684SSatish Balay self.assertTrue(N.allclose(aj[ai[i] : ai[i + 1]], cols)) 1845808f684SSatish Balay self.assertTrue(N.allclose(av[ai[i] : ai[i + 1]], vals)) 1855808f684SSatish Balay 1865808f684SSatish Balay def testConvertToSAME(self): 1875808f684SSatish Balay self._preallocate() 1885808f684SSatish Balay self._set_values_ijv() 1895808f684SSatish Balay A = self.A 1905808f684SSatish Balay A.assemble() 1915808f684SSatish Balay A.convert('same') 1925808f684SSatish Balay 1935808f684SSatish Balay def testConvertToDENSE(self): 1945808f684SSatish Balay self._preallocate() 1955808f684SSatish Balay self._set_values_ijv() 1965808f684SSatish Balay A = self.A 1975808f684SSatish Balay A.assemble() 1985808f684SSatish Balay x, y = A.getVecs() 1995808f684SSatish Balay x.setRandom() 2005808f684SSatish Balay z = y.duplicate() 2015808f684SSatish Balay A.mult(x, y) 202*6f336411SStefano Zampini if A.type.endswith('sbaij'): 203*6f336411SStefano Zampini return 2045808f684SSatish Balay B = PETSc.Mat() 2055808f684SSatish Balay A.convert('dense', B) # initial 2065808f684SSatish Balay B.mult(x, z) 2075808f684SSatish Balay self.assertTrue(np.allclose(y.array, z.array)) 2085808f684SSatish Balay A.convert('dense', B) # reuse 2095808f684SSatish Balay B.mult(x, z) 2105808f684SSatish Balay self.assertTrue(np.allclose(y.array, z.array)) 2115808f684SSatish Balay A.convert('dense') # inplace 2125808f684SSatish Balay A.mult(x, z) 2135808f684SSatish Balay self.assertTrue(np.allclose(y.array, z.array)) 2145808f684SSatish Balay 2155808f684SSatish Balay def testConvertToAIJ(self): 2165808f684SSatish Balay self._preallocate() 2175808f684SSatish Balay self._set_values_ijv() 2185808f684SSatish Balay A = self.A 2195808f684SSatish Balay A.assemble() 2205808f684SSatish Balay x, y = A.getVecs() 2215808f684SSatish Balay x.setRandom() 2225808f684SSatish Balay z = y.duplicate() 2235808f684SSatish Balay A.mult(x, y) 224*6f336411SStefano Zampini if A.type.endswith('sbaij'): 225*6f336411SStefano Zampini return 2265808f684SSatish Balay B = PETSc.Mat() 2275808f684SSatish Balay A.convert('aij', B) # initial 2285808f684SSatish Balay B.mult(x, z) 2295808f684SSatish Balay self.assertTrue(np.allclose(y.array, z.array)) 2305808f684SSatish Balay A.convert('aij', B) # reuse 2315808f684SSatish Balay B.mult(x, z) 2325808f684SSatish Balay self.assertTrue(np.allclose(y.array, z.array)) 2335808f684SSatish Balay A.convert('aij') # inplace 2345808f684SSatish Balay A.mult(x, z) 2355808f684SSatish Balay self.assertTrue(np.allclose(y.array, z.array)) 2365808f684SSatish Balay 2375808f684SSatish Balay def testGetDiagonalBlock(self): 238*6f336411SStefano Zampini if 'is' in self.A.getType(): 239*6f336411SStefano Zampini return # XXX 2405808f684SSatish Balay self._preallocate() 2415808f684SSatish Balay self._set_values_ijv() 2425808f684SSatish Balay self.A.assemble() 2435808f684SSatish Balay B = self.A.getDiagonalBlock() 2445808f684SSatish Balay self.assertEqual(self.A.getLocalSize(), B.getSize()) 2455808f684SSatish Balay B.destroy() 2465808f684SSatish Balay 2475808f684SSatish Balay def testInvertBlockDiagonal(self): 248*6f336411SStefano Zampini if 'is' in self.A.getType(): 249*6f336411SStefano Zampini return # XXX 2505808f684SSatish Balay try: 2515808f684SSatish Balay _ = len(self.BSIZE) 2525808f684SSatish Balay return 2535808f684SSatish Balay except (TypeError, ValueError): 2545808f684SSatish Balay pass 2555808f684SSatish Balay self._preallocate() 2565808f684SSatish Balay rbs, cbs = self.A.getBlockSizes() 257*6f336411SStefano Zampini if rbs != cbs: 258*6f336411SStefano Zampini return 2595808f684SSatish Balay self._set_values_ijv() 2605808f684SSatish Balay self.A.assemble() 2615808f684SSatish Balay self.A.shift(1000) # Make nonsingular 2625808f684SSatish Balay ibdiag = self.A.invertBlockDiagonal() 2635808f684SSatish Balay bs = self.A.getBlockSize() 2645808f684SSatish Balay m, _ = self.A.getLocalSize() 2655808f684SSatish Balay self.assertEqual(ibdiag.shape, (m // bs, bs, bs)) 2665808f684SSatish Balay tmp = N.empty((m // bs, bs, bs), dtype=PETSc.ScalarType) 2675808f684SSatish Balay rstart, rend = self.A.getOwnershipRange() 2685808f684SSatish Balay s, e = rstart // bs, rend // bs 2695808f684SSatish Balay for i in range(s, e): 2705808f684SSatish Balay rows = cols = N.arange(i * bs, (i + 1) * bs, dtype=PETSc.IntType) 2715808f684SSatish Balay vals = self.A.getValues(rows, cols) 2725808f684SSatish Balay tmp[i - s, :, :] = N.linalg.inv(vals) 2735808f684SSatish Balay self.assertTrue(N.allclose(ibdiag, tmp)) 2745808f684SSatish Balay 2755808f684SSatish Balay def testCreateSubMatrix(self): 276*6f336411SStefano Zampini if 'baij' in self.A.getType(): 277*6f336411SStefano Zampini return # XXX 2785808f684SSatish Balay self._preallocate() 2795808f684SSatish Balay self._set_values_ijv() 2805808f684SSatish Balay self.A.assemble() 2815808f684SSatish Balay # 2825808f684SSatish Balay rs, re = self.A.getOwnershipRange() 2835808f684SSatish Balay cs, ce = self.A.getOwnershipRangeColumn() 2845808f684SSatish Balay rows = N.array(range(rs, re), dtype=PETSc.IntType) 2855808f684SSatish Balay cols = N.array(range(cs, ce), dtype=PETSc.IntType) 2865808f684SSatish Balay rows = PETSc.IS().createGeneral(rows, comm=self.A.getComm()) 2875808f684SSatish Balay cols = PETSc.IS().createGeneral(cols, comm=self.A.getComm()) 2885808f684SSatish Balay # 2895808f684SSatish Balay S = self.A.createSubMatrix(rows, None) 2905808f684SSatish Balay S.zeroEntries() 2915808f684SSatish Balay self.A.createSubMatrix(rows, None, S) 2925808f684SSatish Balay S.destroy() 2935808f684SSatish Balay # 2945808f684SSatish Balay S = self.A.createSubMatrix(rows, cols) 2955808f684SSatish Balay S.zeroEntries() 2965808f684SSatish Balay self.A.createSubMatrix(rows, cols, S) 2975808f684SSatish Balay S.destroy() 2985808f684SSatish Balay 2995808f684SSatish Balay def testCreateSubMatrices(self): 300*6f336411SStefano Zampini if 'baij' in self.A.getType(): 301*6f336411SStefano Zampini return # XXX 302*6f336411SStefano Zampini if 'is' in self.A.getType(): 303*6f336411SStefano Zampini return # XXX 3045808f684SSatish Balay self._preallocate() 3055808f684SSatish Balay self._set_values_ijv() 3065808f684SSatish Balay self.A.assemble() 3075808f684SSatish Balay # 3085808f684SSatish Balay rs, re = self.A.getOwnershipRange() 3095808f684SSatish Balay cs, ce = self.A.getOwnershipRangeColumn() 3105808f684SSatish Balay rows = N.array(range(rs, re), dtype=PETSc.IntType) 3115808f684SSatish Balay cols = N.array(range(cs, ce), dtype=PETSc.IntType) 3125808f684SSatish Balay rows = PETSc.IS().createGeneral(rows, comm=self.A.getComm()) 3135808f684SSatish Balay cols = PETSc.IS().createGeneral(cols, comm=self.A.getComm()) 3145808f684SSatish Balay # 3155808f684SSatish Balay (S,) = self.A.createSubMatrices(rows, cols) 3165808f684SSatish Balay S.zeroEntries() 3175808f684SSatish Balay self.A.createSubMatrices(rows, cols, submats=[S]) 3185808f684SSatish Balay S.destroy() 3195808f684SSatish Balay # 3205808f684SSatish Balay (S1,) = self.A.createSubMatrices([rows], [cols]) 3215808f684SSatish Balay (S2,) = self.A.createSubMatrices([rows], [cols]) 3225808f684SSatish Balay self.assertTrue(S1.equal(S2)) 3235808f684SSatish Balay S2.zeroEntries() 3245808f684SSatish Balay self.A.createSubMatrices([rows], [cols], [S2]) 3255808f684SSatish Balay self.assertTrue(S1.equal(S2)) 3265808f684SSatish Balay S1.destroy() 3275808f684SSatish Balay S2.destroy() 3285808f684SSatish Balay # 329*6f336411SStefano Zampini if 'seq' not in self.A.getType(): 330*6f336411SStefano Zampini return # XXX 3315808f684SSatish Balay S1, S2 = self.A.createSubMatrices([rows, rows], [cols, cols]) 3325808f684SSatish Balay self.assertTrue(S1.equal(S2)) 3335808f684SSatish Balay S1.zeroEntries() 3345808f684SSatish Balay S2.zeroEntries() 3355808f684SSatish Balay self.A.createSubMatrices([rows, rows], [cols, cols], [S1, S2]) 3365808f684SSatish Balay self.assertTrue(S1.equal(S2)) 3375808f684SSatish Balay S1.destroy() 3385808f684SSatish Balay S2.destroy() 3395808f684SSatish Balay 3405808f684SSatish Balay def testGetRedundantMatrix(self): 341*6f336411SStefano Zampini if 'aijcrl' in self.A.getType(): 342*6f336411SStefano Zampini return # duplicate not supported 343*6f336411SStefano Zampini if 'mpisbaij' in self.A.getType(): 344*6f336411SStefano Zampini return # not working 345*6f336411SStefano Zampini if 'is' in self.A.getType(): 346*6f336411SStefano Zampini return # XXX 3475808f684SSatish Balay self._preallocate() 3485808f684SSatish Balay self._set_values_ijv() 3495808f684SSatish Balay self.A.assemble() 3505808f684SSatish Balay # Test the most simple case 3515808f684SSatish Balay sizecommA = self.A.getComm().getSize() 3525808f684SSatish Balay Ared = self.A.getRedundantMatrix(sizecommA) 3535808f684SSatish Balay sizecommAred = Ared.getComm().getSize() 3545808f684SSatish Balay self.assertEqual(1, sizecommAred) 3555808f684SSatish Balay Ared.destroy() 3565808f684SSatish Balay 3575808f684SSatish Balay def testCreateTranspose(self): 3585808f684SSatish Balay self._preallocate() 3595808f684SSatish Balay self._set_values_ijv() 3605808f684SSatish Balay self.A.assemble() 3615808f684SSatish Balay A = self.A 3625808f684SSatish Balay AT = PETSc.Mat().createTranspose(A) 3635808f684SSatish Balay x, y = A.createVecs() 3645808f684SSatish Balay xt, yt = AT.createVecs() 3655808f684SSatish Balay # 3665808f684SSatish Balay y.setRandom() 3675808f684SSatish Balay A.multTranspose(y, x) 3685808f684SSatish Balay y.copy(xt) 3695808f684SSatish Balay AT.mult(xt, yt) 3705808f684SSatish Balay self.assertTrue(yt.equal(x)) 3715808f684SSatish Balay # 3725808f684SSatish Balay x.setRandom() 3735808f684SSatish Balay A.mult(x, y) 3745808f684SSatish Balay x.copy(yt) 3755808f684SSatish Balay AT.multTranspose(yt, xt) 3765808f684SSatish Balay self.assertTrue(xt.equal(y)) 3775808f684SSatish Balay 3785808f684SSatish Balay def _get_aijv(self): 379*6f336411SStefano Zampini return ( 380*6f336411SStefano Zampini self.rows, 381*6f336411SStefano Zampini self.xadj, 382*6f336411SStefano Zampini self.adjy, 383*6f336411SStefano Zampini self.vals, 384*6f336411SStefano Zampini ) 3855808f684SSatish Balay 3865808f684SSatish Balay def _preallocate(self): 3875808f684SSatish Balay self.A.setPreallocationNNZ([5, 2]) 3885808f684SSatish Balay 3895808f684SSatish Balay def _set_values(self): 3905808f684SSatish Balay import sys 391*6f336411SStefano Zampini 3925808f684SSatish Balay if hasattr(sys, 'gettotalrefcount'): 3935808f684SSatish Balay return self._set_values_ijv() 3945808f684SSatish Balay # XXX Why the code below leak refs as a beast ??? 3955808f684SSatish Balay row, ai, aj, av = self._get_aijv() 3965808f684SSatish Balay if not self.BSIZE: 3975808f684SSatish Balay setvalues = self.A.setValues 3985808f684SSatish Balay else: 3995808f684SSatish Balay setvalues = self.A.setValuesBlocked 4005808f684SSatish Balay for i, r in enumerate(row): 4015808f684SSatish Balay s, e = ai[i], ai[i + 1] 4025808f684SSatish Balay setvalues(r, aj[s:e], av[s:e]) 4035808f684SSatish Balay return ai, aj, av 4045808f684SSatish Balay 4055808f684SSatish Balay def _set_values_ijv(self): 4065808f684SSatish Balay row, ai, aj, av = self._get_aijv() 4075808f684SSatish Balay if not self.BSIZE: 4085808f684SSatish Balay setvalues = self.A.setValuesIJV 4095808f684SSatish Balay else: 4105808f684SSatish Balay setvalues = self.A.setValuesBlockedIJV 4115808f684SSatish Balay setvalues(ai, aj, av, rowmap=row) 4125808f684SSatish Balay setvalues(ai, aj, av, rowmap=None) 4135808f684SSatish Balay return ai, aj, av 4145808f684SSatish Balay 4155808f684SSatish Balay def _chk_bs(self, A, bs): 4165808f684SSatish Balay self.assertEqual(A.getBlockSize(), bs or 1) 4175808f684SSatish Balay 4185808f684SSatish Balay def _chk_bsizes(self, A, bsizes): 4195808f684SSatish Balay try: 4205808f684SSatish Balay rbs, cbs = bsizes 4215808f684SSatish Balay except (TypeError, ValueError): 4225808f684SSatish Balay rbs = cbs = bsizes 4235808f684SSatish Balay self.assertEqual(A.getBlockSizes(), (rbs, cbs)) 4245808f684SSatish Balay 4255808f684SSatish Balay def _chk_aij(self, A, i, j): 4265808f684SSatish Balay compressed = bool(self.BSIZE) 4275808f684SSatish Balay ai, aj = A.getRowIJ(compressed=compressed) 4285808f684SSatish Balay if ai is not None and aj is not None: 4295808f684SSatish Balay self.assertTrue(N.all(i == ai)) 4305808f684SSatish Balay self.assertTrue(N.all(j == aj)) 4315808f684SSatish Balay ai, aj = A.getColumnIJ(compressed=compressed) 4325808f684SSatish Balay if ai is not None and aj is not None: 4335808f684SSatish Balay self.assertTrue(N.all(i == ai)) 4345808f684SSatish Balay self.assertTrue(N.all(j == aj)) 4355808f684SSatish Balay 436*6f336411SStefano Zampini 4375808f684SSatish Balay# -- AIJ --------------------- 4385808f684SSatish Balay 439*6f336411SStefano Zampini 4405808f684SSatish Balayclass BaseTestMatAIJ(BaseTestMatAnyAIJ, unittest.TestCase): 4415808f684SSatish Balay COMM = PETSc.COMM_WORLD 4425808f684SSatish Balay TYPE = PETSc.Mat.Type.AIJ 4435808f684SSatish Balay GRID = 0, 0 4445808f684SSatish Balay BSIZE = None 4455808f684SSatish Balay 446*6f336411SStefano Zampini 4475808f684SSatish Balay# -- Seq AIJ -- 4485808f684SSatish Balay 449*6f336411SStefano Zampini 4505808f684SSatish Balayclass TestMatSeqAIJ(BaseTestMatAIJ): 4515808f684SSatish Balay COMM = PETSc.COMM_SELF 4525808f684SSatish Balay TYPE = PETSc.Mat.Type.SEQAIJ 453*6f336411SStefano Zampini 454*6f336411SStefano Zampini 4555808f684SSatish Balayclass TestMatSeqAIJ_G23(TestMatSeqAIJ): 4565808f684SSatish Balay GRID = 2, 3 457*6f336411SStefano Zampini 458*6f336411SStefano Zampini 4595808f684SSatish Balayclass TestMatSeqAIJ_G45(TestMatSeqAIJ): 4605808f684SSatish Balay GRID = 4, 5 461*6f336411SStefano Zampini 462*6f336411SStefano Zampini 4635808f684SSatish Balayclass TestMatSeqAIJ_G89(TestMatSeqAIJ): 4645808f684SSatish Balay GRID = 8, 9 4655808f684SSatish Balay 466*6f336411SStefano Zampini 4675808f684SSatish Balay# -- MPI AIJ -- 4685808f684SSatish Balay 469*6f336411SStefano Zampini 4705808f684SSatish Balayclass TestMatMPIAIJ(BaseTestMatAIJ): 4715808f684SSatish Balay COMM = PETSc.COMM_WORLD 4725808f684SSatish Balay TYPE = PETSc.Mat.Type.MPIAIJ 473*6f336411SStefano Zampini 474*6f336411SStefano Zampini 4755808f684SSatish Balayclass TestMatMPIAIJ_G23(TestMatMPIAIJ): 4765808f684SSatish Balay GRID = 2, 3 477*6f336411SStefano Zampini 478*6f336411SStefano Zampini 4795808f684SSatish Balayclass TestMatMPIAIJ_G45(TestMatMPIAIJ): 4805808f684SSatish Balay GRID = 4, 5 481*6f336411SStefano Zampini 482*6f336411SStefano Zampini 4835808f684SSatish Balayclass TestMatMPIAIJ_G89(TestMatMPIAIJ): 4845808f684SSatish Balay GRID = 8, 9 4855808f684SSatish Balay 4865808f684SSatish Balay 4875808f684SSatish Balay# -- Block AIJ --------------- 4885808f684SSatish Balay 489*6f336411SStefano Zampini 4905808f684SSatish Balayclass BaseTestMatBAIJ(BaseTestMatAnyAIJ, unittest.TestCase): 4915808f684SSatish Balay COMM = PETSc.COMM_WORLD 4925808f684SSatish Balay TYPE = PETSc.Mat.Type.BAIJ 4935808f684SSatish Balay GRID = 0, 0 4945808f684SSatish Balay BSIZE = 1 4955808f684SSatish Balay 496*6f336411SStefano Zampini 4975808f684SSatish Balay# -- Seq Block AIJ -- 4985808f684SSatish Balay 499*6f336411SStefano Zampini 5005808f684SSatish Balayclass TestMatSeqBAIJ(BaseTestMatBAIJ): 5015808f684SSatish Balay COMM = PETSc.COMM_SELF 5025808f684SSatish Balay TYPE = PETSc.Mat.Type.SEQBAIJ 503*6f336411SStefano Zampini 504*6f336411SStefano Zampini 5055808f684SSatish Balay# bs = 1 5065808f684SSatish Balayclass TestMatSeqBAIJ_G23(TestMatSeqBAIJ): 5075808f684SSatish Balay GRID = 2, 3 508*6f336411SStefano Zampini 509*6f336411SStefano Zampini 5105808f684SSatish Balayclass TestMatSeqBAIJ_G45(TestMatSeqBAIJ): 5115808f684SSatish Balay GRID = 4, 5 512*6f336411SStefano Zampini 513*6f336411SStefano Zampini 5145808f684SSatish Balayclass TestMatSeqBAIJ_G89(TestMatSeqBAIJ): 5155808f684SSatish Balay GRID = 8, 9 516*6f336411SStefano Zampini 517*6f336411SStefano Zampini 5185808f684SSatish Balay# bs = 2 5195808f684SSatish Balayclass TestMatSeqBAIJ_G23_B2(TestMatSeqBAIJ_G23): 5205808f684SSatish Balay BSIZE = 2 521*6f336411SStefano Zampini 522*6f336411SStefano Zampini 5235808f684SSatish Balayclass TestMatSeqBAIJ_G45_B2(TestMatSeqBAIJ_G45): 5245808f684SSatish Balay BSIZE = 2 525*6f336411SStefano Zampini 526*6f336411SStefano Zampini 5275808f684SSatish Balayclass TestMatSeqBAIJ_G89_B2(TestMatSeqBAIJ_G89): 5285808f684SSatish Balay BSIZE = 2 529*6f336411SStefano Zampini 530*6f336411SStefano Zampini 5315808f684SSatish Balay# bs = 3 5325808f684SSatish Balayclass TestMatSeqBAIJ_G23_B3(TestMatSeqBAIJ_G23): 5335808f684SSatish Balay BSIZE = 3 534*6f336411SStefano Zampini 535*6f336411SStefano Zampini 5365808f684SSatish Balayclass TestMatSeqBAIJ_G45_B3(TestMatSeqBAIJ_G45): 5375808f684SSatish Balay BSIZE = 3 538*6f336411SStefano Zampini 539*6f336411SStefano Zampini 5405808f684SSatish Balayclass TestMatSeqBAIJ_G89_B3(TestMatSeqBAIJ_G89): 5415808f684SSatish Balay BSIZE = 3 542*6f336411SStefano Zampini 543*6f336411SStefano Zampini 5445808f684SSatish Balay# bs = 4 5455808f684SSatish Balayclass TestMatSeqBAIJ_G23_B4(TestMatSeqBAIJ_G23): 5465808f684SSatish Balay BSIZE = 4 547*6f336411SStefano Zampini 548*6f336411SStefano Zampini 5495808f684SSatish Balayclass TestMatSeqBAIJ_G45_B4(TestMatSeqBAIJ_G45): 5505808f684SSatish Balay BSIZE = 4 551*6f336411SStefano Zampini 552*6f336411SStefano Zampini 5535808f684SSatish Balayclass TestMatSeqBAIJ_G89_B4(TestMatSeqBAIJ_G89): 5545808f684SSatish Balay BSIZE = 4 555*6f336411SStefano Zampini 556*6f336411SStefano Zampini 5575808f684SSatish Balay# bs = 5 5585808f684SSatish Balayclass TestMatSeqBAIJ_G23_B5(TestMatSeqBAIJ_G23): 5595808f684SSatish Balay BSIZE = 5 560*6f336411SStefano Zampini 561*6f336411SStefano Zampini 5625808f684SSatish Balayclass TestMatSeqBAIJ_G45_B5(TestMatSeqBAIJ_G45): 5635808f684SSatish Balay BSIZE = 5 564*6f336411SStefano Zampini 565*6f336411SStefano Zampini 5665808f684SSatish Balayclass TestMatSeqBAIJ_G89_B5(TestMatSeqBAIJ_G89): 5675808f684SSatish Balay BSIZE = 5 5685808f684SSatish Balay 5695808f684SSatish Balay 5705808f684SSatish Balay# -- MPI Block AIJ -- 5715808f684SSatish Balay 572*6f336411SStefano Zampini 5735808f684SSatish Balayclass TestMatMPIBAIJ(BaseTestMatBAIJ): 5745808f684SSatish Balay COMM = PETSc.COMM_WORLD 5755808f684SSatish Balay TYPE = PETSc.Mat.Type.MPIBAIJ 576*6f336411SStefano Zampini 577*6f336411SStefano Zampini 5785808f684SSatish Balay# bs = 1 5795808f684SSatish Balayclass TestMatMPIBAIJ_G23(TestMatMPIBAIJ): 5805808f684SSatish Balay GRID = 2, 3 581*6f336411SStefano Zampini 582*6f336411SStefano Zampini 5835808f684SSatish Balayclass TestMatMPIBAIJ_G45(TestMatMPIBAIJ): 5845808f684SSatish Balay GRID = 4, 5 585*6f336411SStefano Zampini 586*6f336411SStefano Zampini 5875808f684SSatish Balayclass TestMatMPIBAIJ_G89(TestMatMPIBAIJ): 5885808f684SSatish Balay GRID = 8, 9 589*6f336411SStefano Zampini 590*6f336411SStefano Zampini 5915808f684SSatish Balay# bs = 2 5925808f684SSatish Balayclass TestMatMPIBAIJ_G23_B2(TestMatMPIBAIJ_G23): 5935808f684SSatish Balay BSIZE = 2 594*6f336411SStefano Zampini 595*6f336411SStefano Zampini 5965808f684SSatish Balayclass TestMatMPIBAIJ_G45_B2(TestMatMPIBAIJ_G45): 5975808f684SSatish Balay BSIZE = 2 598*6f336411SStefano Zampini 599*6f336411SStefano Zampini 6005808f684SSatish Balayclass TestMatMPIBAIJ_G89_B2(TestMatMPIBAIJ_G89): 6015808f684SSatish Balay BSIZE = 2 602*6f336411SStefano Zampini 603*6f336411SStefano Zampini 6045808f684SSatish Balay# bs = 3 6055808f684SSatish Balayclass TestMatMPIBAIJ_G23_B3(TestMatMPIBAIJ_G23): 6065808f684SSatish Balay BSIZE = 3 607*6f336411SStefano Zampini 608*6f336411SStefano Zampini 6095808f684SSatish Balayclass TestMatMPIBAIJ_G45_B3(TestMatMPIBAIJ_G45): 6105808f684SSatish Balay BSIZE = 3 611*6f336411SStefano Zampini 612*6f336411SStefano Zampini 6135808f684SSatish Balayclass TestMatMPIBAIJ_G89_B3(TestMatMPIBAIJ_G89): 6145808f684SSatish Balay BSIZE = 3 615*6f336411SStefano Zampini 616*6f336411SStefano Zampini 6175808f684SSatish Balay# bs = 4 6185808f684SSatish Balayclass TestMatMPIBAIJ_G23_B4(TestMatMPIBAIJ_G23): 6195808f684SSatish Balay BSIZE = 4 620*6f336411SStefano Zampini 621*6f336411SStefano Zampini 6225808f684SSatish Balayclass TestMatMPIBAIJ_G45_B4(TestMatMPIBAIJ_G45): 6235808f684SSatish Balay BSIZE = 4 624*6f336411SStefano Zampini 625*6f336411SStefano Zampini 6265808f684SSatish Balayclass TestMatMPIBAIJ_G89_B4(TestMatMPIBAIJ_G89): 6275808f684SSatish Balay BSIZE = 4 628*6f336411SStefano Zampini 629*6f336411SStefano Zampini 6305808f684SSatish Balay# bs = 5 6315808f684SSatish Balayclass TestMatMPIBAIJ_G23_B5(TestMatMPIBAIJ_G23): 6325808f684SSatish Balay BSIZE = 5 633*6f336411SStefano Zampini 634*6f336411SStefano Zampini 6355808f684SSatish Balayclass TestMatMPIBAIJ_G45_B5(TestMatMPIBAIJ_G45): 6365808f684SSatish Balay BSIZE = 5 637*6f336411SStefano Zampini 638*6f336411SStefano Zampini 6395808f684SSatish Balayclass TestMatMPIBAIJ_G89_B5(TestMatMPIBAIJ_G89): 6405808f684SSatish Balay BSIZE = 5 6415808f684SSatish Balay 642*6f336411SStefano Zampini 6435808f684SSatish Balay# -- SymmBlock AIJ --------------- 6445808f684SSatish Balay 645*6f336411SStefano Zampini 6465808f684SSatish Balayclass BaseTestMatSBAIJ(BaseTestMatAnyAIJ, unittest.TestCase): 6475808f684SSatish Balay COMM = PETSc.COMM_WORLD 6485808f684SSatish Balay TYPE = PETSc.Mat.Type.SBAIJ 6495808f684SSatish Balay GRID = 0, 0 6505808f684SSatish Balay BSIZE = 1 651*6f336411SStefano Zampini 652*6f336411SStefano Zampini def testInvertBlockDiagonal(self): 653*6f336411SStefano Zampini pass 654*6f336411SStefano Zampini 6555808f684SSatish Balay def _chk_aij(self, A, i, j): 6565808f684SSatish Balay ai, aj = A.getRowIJ(compressed=True) 6575808f684SSatish Balay if ai is not None and aj is not None: 6585808f684SSatish Balay if 0: # XXX Implement 6595808f684SSatish Balay self.assertTrue(N.all(i == ai)) 6605808f684SSatish Balay self.assertTrue(N.all(j == aj)) 6615808f684SSatish Balay ai, aj = A.getColumnIJ(compressed=True) 6625808f684SSatish Balay if ai is not None and aj is not None: 6635808f684SSatish Balay if 0: # XXX Implement 6645808f684SSatish Balay self.assertTrue(N.all(i == ai)) 6655808f684SSatish Balay self.assertTrue(N.all(j == aj)) 6665808f684SSatish Balay 667*6f336411SStefano Zampini 6685808f684SSatish Balay# -- Seq SymmBlock AIJ -- 6695808f684SSatish Balay 670*6f336411SStefano Zampini 6715808f684SSatish Balayclass TestMatSeqSBAIJ(BaseTestMatSBAIJ): 6725808f684SSatish Balay COMM = PETSc.COMM_SELF 6735808f684SSatish Balay TYPE = PETSc.Mat.Type.SEQSBAIJ 674*6f336411SStefano Zampini 675*6f336411SStefano Zampini 6765808f684SSatish Balay# bs = 1 6775808f684SSatish Balayclass TestMatSeqSBAIJ_G23(TestMatSeqSBAIJ): 6785808f684SSatish Balay GRID = 2, 3 679*6f336411SStefano Zampini 680*6f336411SStefano Zampini 6815808f684SSatish Balayclass TestMatSeqSBAIJ_G45(TestMatSeqSBAIJ): 6825808f684SSatish Balay GRID = 4, 5 683*6f336411SStefano Zampini 684*6f336411SStefano Zampini 6855808f684SSatish Balayclass TestMatSeqSBAIJ_G89(TestMatSeqSBAIJ): 6865808f684SSatish Balay GRID = 8, 9 687*6f336411SStefano Zampini 688*6f336411SStefano Zampini 6895808f684SSatish Balay# bs = 2 6905808f684SSatish Balayclass TestMatSeqSBAIJ_G23_B2(TestMatSeqSBAIJ_G23): 6915808f684SSatish Balay BSIZE = 2 692*6f336411SStefano Zampini 693*6f336411SStefano Zampini 6945808f684SSatish Balayclass TestMatSeqSBAIJ_G45_B2(TestMatSeqSBAIJ_G45): 6955808f684SSatish Balay BSIZE = 2 696*6f336411SStefano Zampini 697*6f336411SStefano Zampini 6985808f684SSatish Balayclass TestMatSeqSBAIJ_G89_B2(TestMatSeqSBAIJ_G89): 6995808f684SSatish Balay BSIZE = 2 700*6f336411SStefano Zampini 701*6f336411SStefano Zampini 7025808f684SSatish Balay# bs = 3 7035808f684SSatish Balayclass TestMatSeqSBAIJ_G23_B3(TestMatSeqSBAIJ_G23): 7045808f684SSatish Balay BSIZE = 3 705*6f336411SStefano Zampini 706*6f336411SStefano Zampini 7075808f684SSatish Balayclass TestMatSeqSBAIJ_G45_B3(TestMatSeqSBAIJ_G45): 7085808f684SSatish Balay BSIZE = 3 709*6f336411SStefano Zampini 710*6f336411SStefano Zampini 7115808f684SSatish Balayclass TestMatSeqSBAIJ_G89_B3(TestMatSeqSBAIJ_G89): 7125808f684SSatish Balay BSIZE = 3 713*6f336411SStefano Zampini 714*6f336411SStefano Zampini 7155808f684SSatish Balay# bs = 4 7165808f684SSatish Balayclass TestMatSeqSBAIJ_G23_B4(TestMatSeqSBAIJ_G23): 7175808f684SSatish Balay BSIZE = 4 718*6f336411SStefano Zampini 719*6f336411SStefano Zampini 7205808f684SSatish Balayclass TestMatSeqSBAIJ_G45_B4(TestMatSeqSBAIJ_G45): 7215808f684SSatish Balay BSIZE = 4 722*6f336411SStefano Zampini 723*6f336411SStefano Zampini 7245808f684SSatish Balayclass TestMatSeqSBAIJ_G89_B4(TestMatSeqSBAIJ_G89): 7255808f684SSatish Balay BSIZE = 4 726*6f336411SStefano Zampini 727*6f336411SStefano Zampini 7285808f684SSatish Balay# bs = 5 7295808f684SSatish Balayclass TestMatSeqSBAIJ_G23_B5(TestMatSeqSBAIJ_G23): 7305808f684SSatish Balay BSIZE = 5 731*6f336411SStefano Zampini 732*6f336411SStefano Zampini 7335808f684SSatish Balayclass TestMatSeqSBAIJ_G45_B5(TestMatSeqSBAIJ_G45): 7345808f684SSatish Balay BSIZE = 5 735*6f336411SStefano Zampini 736*6f336411SStefano Zampini 7375808f684SSatish Balayclass TestMatSeqSBAIJ_G89_B5(TestMatSeqSBAIJ_G89): 7385808f684SSatish Balay BSIZE = 5 7395808f684SSatish Balay 7405808f684SSatish Balay 7415808f684SSatish Balay# -- MPI SymmBlock AIJ -- 7425808f684SSatish Balay 743*6f336411SStefano Zampini 7445808f684SSatish Balayclass TestMatMPISBAIJ(BaseTestMatSBAIJ): 7455808f684SSatish Balay COMM = PETSc.COMM_WORLD 7465808f684SSatish Balay TYPE = PETSc.Mat.Type.MPISBAIJ 747*6f336411SStefano Zampini 748*6f336411SStefano Zampini 7495808f684SSatish Balay# bs = 1 7505808f684SSatish Balayclass TestMatMPISBAIJ_G23(TestMatMPISBAIJ): 7515808f684SSatish Balay GRID = 2, 3 752*6f336411SStefano Zampini 753*6f336411SStefano Zampini 7545808f684SSatish Balayclass TestMatMPISBAIJ_G45(TestMatMPISBAIJ): 7555808f684SSatish Balay GRID = 4, 5 756*6f336411SStefano Zampini 757*6f336411SStefano Zampini 7585808f684SSatish Balayclass TestMatMPISBAIJ_G89(TestMatMPISBAIJ): 7595808f684SSatish Balay GRID = 8, 9 760*6f336411SStefano Zampini 761*6f336411SStefano Zampini 7625808f684SSatish Balay# bs = 2 7635808f684SSatish Balayclass TestMatMPISBAIJ_G23_B2(TestMatMPISBAIJ_G23): 7645808f684SSatish Balay BSIZE = 2 765*6f336411SStefano Zampini 766*6f336411SStefano Zampini 7675808f684SSatish Balayclass TestMatMPISBAIJ_G45_B2(TestMatMPISBAIJ_G45): 7685808f684SSatish Balay BSIZE = 2 769*6f336411SStefano Zampini 770*6f336411SStefano Zampini 7715808f684SSatish Balayclass TestMatMPISBAIJ_G89_B2(TestMatMPISBAIJ_G89): 7725808f684SSatish Balay BSIZE = 2 773*6f336411SStefano Zampini 774*6f336411SStefano Zampini 7755808f684SSatish Balay# bs = 3 7765808f684SSatish Balayclass TestMatMPISBAIJ_G23_B3(TestMatMPISBAIJ_G23): 7775808f684SSatish Balay BSIZE = 3 778*6f336411SStefano Zampini 779*6f336411SStefano Zampini 7805808f684SSatish Balayclass TestMatMPISBAIJ_G45_B3(TestMatMPISBAIJ_G45): 7815808f684SSatish Balay BSIZE = 3 782*6f336411SStefano Zampini 783*6f336411SStefano Zampini 7845808f684SSatish Balayclass TestMatMPISBAIJ_G89_B3(TestMatMPISBAIJ_G89): 7855808f684SSatish Balay BSIZE = 3 786*6f336411SStefano Zampini 787*6f336411SStefano Zampini 7885808f684SSatish Balay# bs = 4 7895808f684SSatish Balayclass TestMatMPISBAIJ_G23_B4(TestMatMPISBAIJ_G23): 7905808f684SSatish Balay BSIZE = 4 791*6f336411SStefano Zampini 792*6f336411SStefano Zampini 7935808f684SSatish Balayclass TestMatMPISBAIJ_G45_B4(TestMatMPISBAIJ_G45): 7945808f684SSatish Balay BSIZE = 4 795*6f336411SStefano Zampini 796*6f336411SStefano Zampini 7975808f684SSatish Balayclass TestMatMPISBAIJ_G89_B4(TestMatMPISBAIJ_G89): 7985808f684SSatish Balay BSIZE = 4 799*6f336411SStefano Zampini 800*6f336411SStefano Zampini 8015808f684SSatish Balay# bs = 5 8025808f684SSatish Balayclass TestMatMPISBAIJ_G23_B5(TestMatMPISBAIJ_G23): 8035808f684SSatish Balay BSIZE = 5 804*6f336411SStefano Zampini 805*6f336411SStefano Zampini 8065808f684SSatish Balayclass TestMatMPISBAIJ_G45_B5(TestMatMPISBAIJ_G45): 8075808f684SSatish Balay BSIZE = 5 808*6f336411SStefano Zampini 809*6f336411SStefano Zampini 8105808f684SSatish Balayclass TestMatMPISBAIJ_G89_B5(TestMatMPISBAIJ_G89): 8115808f684SSatish Balay BSIZE = 5 8125808f684SSatish Balay 813*6f336411SStefano Zampini 8145808f684SSatish Balay# -- AIJ + Block --------------- 8155808f684SSatish Balay 816*6f336411SStefano Zampini 8175808f684SSatish Balayclass BaseTestMatAIJ_B(BaseTestMatAnyAIJ, unittest.TestCase): 8185808f684SSatish Balay COMM = PETSc.COMM_WORLD 8195808f684SSatish Balay TYPE = PETSc.Mat.Type.AIJ 8205808f684SSatish Balay GRID = 0, 0 8215808f684SSatish Balay BSIZE = 1 8225808f684SSatish Balay 823*6f336411SStefano Zampini def testSetPreallocNNZ(self): 824*6f336411SStefano Zampini pass 825*6f336411SStefano Zampini 826*6f336411SStefano Zampini def testSetPreallocNNZ_2(self): 827*6f336411SStefano Zampini pass 828*6f336411SStefano Zampini 829*6f336411SStefano Zampini def testSetPreallocCSR(self): 830*6f336411SStefano Zampini pass 831*6f336411SStefano Zampini 832*6f336411SStefano Zampini def testSetPreallocCSR_2(self): 833*6f336411SStefano Zampini pass 834*6f336411SStefano Zampini 8355808f684SSatish Balay def testSetValues(self): 8365808f684SSatish Balay self._preallocate() 8375808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 8385808f684SSatish Balay self.A.setOption(opt, True) 8395808f684SSatish Balay ai, aj, av = self._set_values() 8405808f684SSatish Balay self.A.assemble() 8415808f684SSatish Balay self._chk_aij(self.A, ai, aj) 8425808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 8435808f684SSatish Balay self.A.setOption(opt, True) 8445808f684SSatish Balay ai, aj, av = self._set_values() 8455808f684SSatish Balay self.A.assemble() 8465808f684SSatish Balay self._chk_aij(self.A, ai, aj) 847*6f336411SStefano Zampini 8485808f684SSatish Balay def testSetValuesIJV(self): 8495808f684SSatish Balay self._preallocate() 8505808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 8515808f684SSatish Balay self.A.setOption(opt, True) 8525808f684SSatish Balay ai, aj, av = self._set_values_ijv() 8535808f684SSatish Balay self.A.assemble() 8545808f684SSatish Balay self._chk_aij(self.A, ai, aj) 8555808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 8565808f684SSatish Balay self.A.setOption(opt, True) 8575808f684SSatish Balay ai, aj, av = self._set_values_ijv() 8585808f684SSatish Balay self.A.assemble() 8595808f684SSatish Balay self._chk_aij(self.A, ai, aj) 860*6f336411SStefano Zampini 8615808f684SSatish Balay def _preallocate(self): 8625808f684SSatish Balay self.A.setPreallocationNNZ([5 * self.BSIZE, 3 * self.BSIZE]) 8635808f684SSatish Balay self._chk_bs(self.A, self.BSIZE) 864*6f336411SStefano Zampini 8655808f684SSatish Balay def _chk_aij(self, A, i, j): 8665808f684SSatish Balay ai, aj = A.getRowIJ() 8675808f684SSatish Balay if ai is not None and aj is not None: ## XXX map and check !! 8685808f684SSatish Balay # self.assertTrue(N.all(i==ai)) 8695808f684SSatish Balay # self.assertTrue(N.all(j==aj)) 8705808f684SSatish Balay pass 8715808f684SSatish Balay ai, aj = A.getColumnIJ(compressed=bool(self.BSIZE)) 8725808f684SSatish Balay if ai is not None and aj is not None: ## XXX map and check !! 8735808f684SSatish Balay # self.assertTrue(N.all(i==ai)) 8745808f684SSatish Balay # self.assertTrue(N.all(j==aj)) 8755808f684SSatish Balay pass 8765808f684SSatish Balay 877*6f336411SStefano Zampini 8785808f684SSatish Balay# -- Seq AIJ + Block -- 8795808f684SSatish Balay 880*6f336411SStefano Zampini 8815808f684SSatish Balayclass TestMatSeqAIJ_B(BaseTestMatAIJ_B): 8825808f684SSatish Balay COMM = PETSc.COMM_SELF 8835808f684SSatish Balay TYPE = PETSc.Mat.Type.SEQAIJ 884*6f336411SStefano Zampini 885*6f336411SStefano Zampini 8865808f684SSatish Balay# bs = 1 8875808f684SSatish Balayclass TestMatSeqAIJ_B_G23(TestMatSeqAIJ_B): 8885808f684SSatish Balay GRID = 2, 3 889*6f336411SStefano Zampini 890*6f336411SStefano Zampini 8915808f684SSatish Balayclass TestMatSeqAIJ_B_G45(TestMatSeqAIJ_B): 8925808f684SSatish Balay GRID = 4, 5 893*6f336411SStefano Zampini 894*6f336411SStefano Zampini 8955808f684SSatish Balayclass TestMatSeqAIJ_B_G89(TestMatSeqAIJ_B): 8965808f684SSatish Balay GRID = 8, 9 897*6f336411SStefano Zampini 898*6f336411SStefano Zampini 8995808f684SSatish Balay# bs = 2 9005808f684SSatish Balayclass TestMatSeqAIJ_B_G23_B2(TestMatSeqAIJ_B_G23): 9015808f684SSatish Balay BSIZE = 2 902*6f336411SStefano Zampini 903*6f336411SStefano Zampini 9045808f684SSatish Balayclass TestMatSeqAIJ_B_G45_B2(TestMatSeqAIJ_B_G45): 9055808f684SSatish Balay BSIZE = 2 906*6f336411SStefano Zampini 907*6f336411SStefano Zampini 9085808f684SSatish Balayclass TestMatSeqAIJ_B_G89_B2(TestMatSeqAIJ_B_G89): 9095808f684SSatish Balay BSIZE = 2 910*6f336411SStefano Zampini 911*6f336411SStefano Zampini 9125808f684SSatish Balay# bs = 3 9135808f684SSatish Balayclass TestMatSeqAIJ_B_G23_B3(TestMatSeqAIJ_B_G23): 9145808f684SSatish Balay BSIZE = 3 915*6f336411SStefano Zampini 916*6f336411SStefano Zampini 9175808f684SSatish Balayclass TestMatSeqAIJ_B_G45_B3(TestMatSeqAIJ_B_G45): 9185808f684SSatish Balay BSIZE = 3 919*6f336411SStefano Zampini 920*6f336411SStefano Zampini 9215808f684SSatish Balayclass TestMatSeqAIJ_B_G89_B3(TestMatSeqAIJ_B_G89): 9225808f684SSatish Balay BSIZE = 3 923*6f336411SStefano Zampini 924*6f336411SStefano Zampini 9255808f684SSatish Balay# bs = 4 9265808f684SSatish Balayclass TestMatSeqAIJ_B_G23_B4(TestMatSeqAIJ_B_G23): 9275808f684SSatish Balay BSIZE = 4 928*6f336411SStefano Zampini 929*6f336411SStefano Zampini 9305808f684SSatish Balayclass TestMatSeqAIJ_B_G45_B4(TestMatSeqAIJ_B_G45): 9315808f684SSatish Balay BSIZE = 4 932*6f336411SStefano Zampini 933*6f336411SStefano Zampini 9345808f684SSatish Balayclass TestMatSeqAIJ_B_G89_B4(TestMatSeqAIJ_B_G89): 9355808f684SSatish Balay BSIZE = 4 936*6f336411SStefano Zampini 937*6f336411SStefano Zampini 9385808f684SSatish Balay# bs = 5 9395808f684SSatish Balayclass TestMatSeqAIJ_B_G23_B5(TestMatSeqAIJ_B_G23): 9405808f684SSatish Balay BSIZE = 5 941*6f336411SStefano Zampini 942*6f336411SStefano Zampini 9435808f684SSatish Balayclass TestMatSeqAIJ_B_G45_B5(TestMatSeqAIJ_B_G45): 9445808f684SSatish Balay BSIZE = 5 945*6f336411SStefano Zampini 946*6f336411SStefano Zampini 9475808f684SSatish Balayclass TestMatSeqAIJ_B_G89_B5(TestMatSeqAIJ_B_G89): 9485808f684SSatish Balay BSIZE = 5 9495808f684SSatish Balay 9505808f684SSatish Balay 9515808f684SSatish Balay# -- MPI AIJ + Block -- 9525808f684SSatish Balay 953*6f336411SStefano Zampini 9545808f684SSatish Balayclass TestMatMPIAIJ_B(BaseTestMatAIJ_B): 9555808f684SSatish Balay COMM = PETSc.COMM_WORLD 9565808f684SSatish Balay TYPE = PETSc.Mat.Type.MPIAIJ 957*6f336411SStefano Zampini 958*6f336411SStefano Zampini 9595808f684SSatish Balay# bs = 1 9605808f684SSatish Balayclass TestMatMPIAIJ_B_G23(TestMatMPIAIJ_B): 9615808f684SSatish Balay GRID = 2, 3 962*6f336411SStefano Zampini 963*6f336411SStefano Zampini 9645808f684SSatish Balayclass TestMatMPIAIJ_B_G45(TestMatMPIAIJ_B): 9655808f684SSatish Balay GRID = 4, 5 966*6f336411SStefano Zampini 967*6f336411SStefano Zampini 9685808f684SSatish Balayclass TestMatMPIAIJ_B_G89(TestMatMPIAIJ_B): 9695808f684SSatish Balay GRID = 8, 9 970*6f336411SStefano Zampini 971*6f336411SStefano Zampini 9725808f684SSatish Balay# bs = 2 9735808f684SSatish Balayclass TestMatMPIAIJ_B_G23_B2(TestMatMPIAIJ_B_G23): 9745808f684SSatish Balay BSIZE = 2 975*6f336411SStefano Zampini 976*6f336411SStefano Zampini 9775808f684SSatish Balayclass TestMatMPIAIJ_B_G45_B2(TestMatMPIAIJ_B_G45): 9785808f684SSatish Balay BSIZE = 2 979*6f336411SStefano Zampini 980*6f336411SStefano Zampini 9815808f684SSatish Balayclass TestMatMPIAIJ_B_G89_B2(TestMatMPIAIJ_B_G89): 9825808f684SSatish Balay BSIZE = 2 983*6f336411SStefano Zampini 984*6f336411SStefano Zampini 9855808f684SSatish Balay# bs = 3 9865808f684SSatish Balayclass TestMatMPIAIJ_B_G23_B3(TestMatMPIAIJ_B_G23): 9875808f684SSatish Balay BSIZE = 3 988*6f336411SStefano Zampini 989*6f336411SStefano Zampini 9905808f684SSatish Balayclass TestMatMPIAIJ_B_G45_B3(TestMatMPIAIJ_B_G45): 9915808f684SSatish Balay BSIZE = 3 992*6f336411SStefano Zampini 993*6f336411SStefano Zampini 9945808f684SSatish Balayclass TestMatMPIAIJ_B_G89_B3(TestMatMPIAIJ_B_G89): 9955808f684SSatish Balay BSIZE = 3 996*6f336411SStefano Zampini 997*6f336411SStefano Zampini 9985808f684SSatish Balay# bs = 4 9995808f684SSatish Balayclass TestMatMPIAIJ_B_G23_B4(TestMatMPIAIJ_B_G23): 10005808f684SSatish Balay BSIZE = 4 1001*6f336411SStefano Zampini 1002*6f336411SStefano Zampini 10035808f684SSatish Balayclass TestMatMPIAIJ_B_G45_B4(TestMatMPIAIJ_B_G45): 10045808f684SSatish Balay BSIZE = 4 1005*6f336411SStefano Zampini 1006*6f336411SStefano Zampini 10075808f684SSatish Balayclass TestMatMPIAIJ_B_G89_B4(TestMatMPIAIJ_B_G89): 10085808f684SSatish Balay BSIZE = 4 1009*6f336411SStefano Zampini 1010*6f336411SStefano Zampini 10115808f684SSatish Balay# bs = 5 10125808f684SSatish Balayclass TestMatMPIAIJ_B_G23_B5(TestMatMPIAIJ_B_G23): 10135808f684SSatish Balay BSIZE = 5 1014*6f336411SStefano Zampini 1015*6f336411SStefano Zampini 10165808f684SSatish Balayclass TestMatMPIAIJ_B_G45_B5(TestMatMPIAIJ_B_G45): 10175808f684SSatish Balay BSIZE = 5 1018*6f336411SStefano Zampini 1019*6f336411SStefano Zampini 10205808f684SSatish Balayclass TestMatMPIAIJ_B_G89_B5(TestMatMPIAIJ_B_G89): 10215808f684SSatish Balay BSIZE = 5 10225808f684SSatish Balay 1023*6f336411SStefano Zampini 10245808f684SSatish Balay# -- Non-square blocks -- 10255808f684SSatish Balayclass BaseTestMatAIJ_B(BaseTestMatAnyAIJ, unittest.TestCase): 10265808f684SSatish Balay COMM = PETSc.COMM_WORLD 10275808f684SSatish Balay TYPE = PETSc.Mat.Type.AIJ 10285808f684SSatish Balay GRID = 0, 0 10295808f684SSatish Balay BSIZE = 4, 2 10305808f684SSatish Balay 10315808f684SSatish Balay def _preallocate(self): 10325808f684SSatish Balay try: 10335808f684SSatish Balay rbs, cbs = self.BSIZE 10345808f684SSatish Balay except (TypeError, ValueError): 10355808f684SSatish Balay rbs = cbs = self.BSIZE 10365808f684SSatish Balay self.A.setPreallocationNNZ([5 * rbs, 3 * cbs]) 10375808f684SSatish Balay self._chk_bsizes(self.A, self.BSIZE) 1038*6f336411SStefano Zampini 1039*6f336411SStefano Zampini def testSetPreallocNNZ(self): 1040*6f336411SStefano Zampini pass 1041*6f336411SStefano Zampini 1042*6f336411SStefano Zampini def testSetPreallocNNZ_2(self): 1043*6f336411SStefano Zampini pass 1044*6f336411SStefano Zampini 1045*6f336411SStefano Zampini def testSetPreallocCSR(self): 1046*6f336411SStefano Zampini pass 1047*6f336411SStefano Zampini 1048*6f336411SStefano Zampini def testSetPreallocCSR_2(self): 1049*6f336411SStefano Zampini pass 1050*6f336411SStefano Zampini 10515808f684SSatish Balay def testSetValues(self): 10525808f684SSatish Balay self._preallocate() 10535808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 10545808f684SSatish Balay self.A.setOption(opt, True) 10555808f684SSatish Balay ai, aj, av = self._set_values() 10565808f684SSatish Balay self.A.assemble() 10575808f684SSatish Balay self._chk_aij(self.A, ai, aj) 10585808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 10595808f684SSatish Balay self.A.setOption(opt, True) 10605808f684SSatish Balay ai, aj, av = self._set_values() 10615808f684SSatish Balay self.A.assemble() 10625808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1063*6f336411SStefano Zampini 10645808f684SSatish Balay def testSetValuesIJV(self): 10655808f684SSatish Balay self._preallocate() 10665808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_ALLOCATION_ERR 10675808f684SSatish Balay self.A.setOption(opt, True) 10685808f684SSatish Balay ai, aj, av = self._set_values_ijv() 10695808f684SSatish Balay self.A.assemble() 10705808f684SSatish Balay self._chk_aij(self.A, ai, aj) 10715808f684SSatish Balay opt = PETSc.Mat.Option.NEW_NONZERO_LOCATION_ERR 10725808f684SSatish Balay self.A.setOption(opt, True) 10735808f684SSatish Balay ai, aj, av = self._set_values_ijv() 10745808f684SSatish Balay self.A.assemble() 10755808f684SSatish Balay self._chk_aij(self.A, ai, aj) 1076*6f336411SStefano Zampini 10775808f684SSatish Balay def _chk_aij(self, A, i, j): 10785808f684SSatish Balay ai, aj = A.getRowIJ() 10795808f684SSatish Balay if ai is not None and aj is not None: ## XXX map and check !! 10805808f684SSatish Balay # self.assertTrue(N.all(i==ai)) 10815808f684SSatish Balay # self.assertTrue(N.all(j==aj)) 10825808f684SSatish Balay pass 10835808f684SSatish Balay ai, aj = A.getColumnIJ() 10845808f684SSatish Balay if ai is not None and aj is not None: ## XXX map and check !! 10855808f684SSatish Balay # self.assertTrue(N.all(i==ai)) 10865808f684SSatish Balay # self.assertTrue(N.all(j==aj)) 10875808f684SSatish Balay pass 10885808f684SSatish Balay 1089*6f336411SStefano Zampini 10905808f684SSatish Balay# -- AIJCRL --------------------- 10915808f684SSatish Balay 1092*6f336411SStefano Zampini 10935808f684SSatish Balayclass BaseTestMatAIJCRL(BaseTestMatAIJ, unittest.TestCase): 10945808f684SSatish Balay TYPE = PETSc.Mat.Type.AIJCRL 10955808f684SSatish Balay 1096*6f336411SStefano Zampini 10975808f684SSatish Balay# -- Seq AIJCRL -- 10985808f684SSatish Balay 1099*6f336411SStefano Zampini 11005808f684SSatish Balayclass TestMatSeqAIJCRL(BaseTestMatAIJCRL): 11015808f684SSatish Balay COMM = PETSc.COMM_SELF 11025808f684SSatish Balay TYPE = PETSc.Mat.Type.SEQAIJCRL 1103*6f336411SStefano Zampini 1104*6f336411SStefano Zampini 11055808f684SSatish Balayclass TestMatSeqAIJCRL_G23(TestMatSeqAIJCRL): 11065808f684SSatish Balay GRID = 2, 3 1107*6f336411SStefano Zampini 1108*6f336411SStefano Zampini 11095808f684SSatish Balayclass TestMatSeqAIJCRL_G45(TestMatSeqAIJCRL): 11105808f684SSatish Balay GRID = 4, 5 1111*6f336411SStefano Zampini 1112*6f336411SStefano Zampini 11135808f684SSatish Balayclass TestMatSeqAIJCRL_G89(TestMatSeqAIJCRL): 11145808f684SSatish Balay GRID = 8, 9 11155808f684SSatish Balay 1116*6f336411SStefano Zampini 11175808f684SSatish Balay# -- MPI AIJCRL -- 11185808f684SSatish Balay 1119*6f336411SStefano Zampini 11205808f684SSatish Balayclass TestMatMPIAIJCRL(BaseTestMatAIJCRL): 11215808f684SSatish Balay COMM = PETSc.COMM_WORLD 11225808f684SSatish Balay TYPE = PETSc.Mat.Type.MPIAIJCRL 1123*6f336411SStefano Zampini 1124*6f336411SStefano Zampini 11255808f684SSatish Balayclass TestMatMPIAIJCRL_G23(TestMatMPIAIJCRL): 11265808f684SSatish Balay GRID = 2, 3 1127*6f336411SStefano Zampini 1128*6f336411SStefano Zampini 11295808f684SSatish Balayclass TestMatMPIAIJCRL_G45(TestMatMPIAIJCRL): 11305808f684SSatish Balay GRID = 4, 5 1131*6f336411SStefano Zampini 1132*6f336411SStefano Zampini 11335808f684SSatish Balayclass TestMatMPIAIJCRL_G89(TestMatMPIAIJCRL): 11345808f684SSatish Balay GRID = 8, 9 11355808f684SSatish Balay 1136*6f336411SStefano Zampini 11375808f684SSatish Balay# -- AIJCRL + Block ------------- 11385808f684SSatish Balay 1139*6f336411SStefano Zampini 11405808f684SSatish Balayclass BaseTestMatAIJCRL_B(BaseTestMatAIJ_B, unittest.TestCase): 11415808f684SSatish Balay TYPE = PETSc.Mat.Type.AIJCRL 11425808f684SSatish Balay 1143*6f336411SStefano Zampini 11445808f684SSatish Balay# -- Seq AIJCRL + Block -- 11455808f684SSatish Balay 1146*6f336411SStefano Zampini 11475808f684SSatish Balayclass TestMatSeqAIJCRL_B(BaseTestMatAIJCRL_B): 11485808f684SSatish Balay COMM = PETSc.COMM_SELF 11495808f684SSatish Balay TYPE = PETSc.Mat.Type.SEQAIJCRL 1150*6f336411SStefano Zampini 1151*6f336411SStefano Zampini 11525808f684SSatish Balay# bs = 1 11535808f684SSatish Balayclass TestMatSeqAIJCRL_B_G23(TestMatSeqAIJCRL_B): 11545808f684SSatish Balay GRID = 2, 3 1155*6f336411SStefano Zampini 1156*6f336411SStefano Zampini 11575808f684SSatish Balayclass TestMatSeqAIJCRL_B_G45(TestMatSeqAIJCRL_B): 11585808f684SSatish Balay GRID = 4, 5 1159*6f336411SStefano Zampini 1160*6f336411SStefano Zampini 11615808f684SSatish Balayclass TestMatSeqAIJCRL_B_G89(TestMatSeqAIJCRL_B): 11625808f684SSatish Balay GRID = 8, 9 1163*6f336411SStefano Zampini 1164*6f336411SStefano Zampini 11655808f684SSatish Balay# bs = 2 11665808f684SSatish Balayclass TestMatSeqAIJCRL_B_G23_B2(TestMatSeqAIJCRL_B_G23): 11675808f684SSatish Balay BSIZE = 2 1168*6f336411SStefano Zampini 1169*6f336411SStefano Zampini 11705808f684SSatish Balayclass TestMatSeqAIJCRL_B_G45_B2(TestMatSeqAIJCRL_B_G45): 11715808f684SSatish Balay BSIZE = 2 1172*6f336411SStefano Zampini 1173*6f336411SStefano Zampini 11745808f684SSatish Balayclass TestMatSeqAIJCRL_B_G89_B2(TestMatSeqAIJCRL_B_G89): 11755808f684SSatish Balay BSIZE = 2 1176*6f336411SStefano Zampini 1177*6f336411SStefano Zampini 11785808f684SSatish Balay# bs = 3 11795808f684SSatish Balayclass TestMatSeqAIJCRL_B_G23_B3(TestMatSeqAIJCRL_B_G23): 11805808f684SSatish Balay BSIZE = 3 1181*6f336411SStefano Zampini 1182*6f336411SStefano Zampini 11835808f684SSatish Balayclass TestMatSeqAIJCRL_B_G45_B3(TestMatSeqAIJCRL_B_G45): 11845808f684SSatish Balay BSIZE = 3 1185*6f336411SStefano Zampini 1186*6f336411SStefano Zampini 11875808f684SSatish Balayclass TestMatSeqAIJCRL_B_G89_B3(TestMatSeqAIJCRL_B_G89): 11885808f684SSatish Balay BSIZE = 3 1189*6f336411SStefano Zampini 1190*6f336411SStefano Zampini 11915808f684SSatish Balay# bs = 4 11925808f684SSatish Balayclass TestMatSeqAIJCRL_B_G23_B4(TestMatSeqAIJCRL_B_G23): 11935808f684SSatish Balay BSIZE = 4 1194*6f336411SStefano Zampini 1195*6f336411SStefano Zampini 11965808f684SSatish Balayclass TestMatSeqAIJCRL_B_G45_B4(TestMatSeqAIJCRL_B_G45): 11975808f684SSatish Balay BSIZE = 4 1198*6f336411SStefano Zampini 1199*6f336411SStefano Zampini 12005808f684SSatish Balayclass TestMatSeqAIJCRL_B_G89_B4(TestMatSeqAIJCRL_B_G89): 12015808f684SSatish Balay BSIZE = 4 1202*6f336411SStefano Zampini 1203*6f336411SStefano Zampini 12045808f684SSatish Balay# bs = 5 12055808f684SSatish Balayclass TestMatSeqAIJCRL_B_G23_B5(TestMatSeqAIJCRL_B_G23): 12065808f684SSatish Balay BSIZE = 5 1207*6f336411SStefano Zampini 1208*6f336411SStefano Zampini 12095808f684SSatish Balayclass TestMatSeqAIJCRL_B_G45_B5(TestMatSeqAIJCRL_B_G45): 12105808f684SSatish Balay BSIZE = 5 1211*6f336411SStefano Zampini 1212*6f336411SStefano Zampini 12135808f684SSatish Balayclass TestMatSeqAIJCRL_B_G89_B5(TestMatSeqAIJCRL_B_G89): 12145808f684SSatish Balay BSIZE = 5 12155808f684SSatish Balay 12165808f684SSatish Balay 12175808f684SSatish Balay# -- MPI AIJCRL + Block -- 12185808f684SSatish Balay 1219*6f336411SStefano Zampini 12205808f684SSatish Balayclass TestMatMPIAIJCRL_B(BaseTestMatAIJCRL_B): 12215808f684SSatish Balay COMM = PETSc.COMM_WORLD 12225808f684SSatish Balay TYPE = PETSc.Mat.Type.MPIAIJCRL 1223*6f336411SStefano Zampini 1224*6f336411SStefano Zampini 12255808f684SSatish Balay# bs = 1 12265808f684SSatish Balayclass TestMatMPIAIJCRL_B_G23(TestMatMPIAIJCRL_B): 12275808f684SSatish Balay GRID = 2, 3 1228*6f336411SStefano Zampini 1229*6f336411SStefano Zampini 12305808f684SSatish Balayclass TestMatMPIAIJCRL_B_G45(TestMatMPIAIJCRL_B): 12315808f684SSatish Balay GRID = 4, 5 1232*6f336411SStefano Zampini 1233*6f336411SStefano Zampini 12345808f684SSatish Balayclass TestMatMPIAIJCRL_B_G89(TestMatMPIAIJCRL_B): 12355808f684SSatish Balay GRID = 8, 9 1236*6f336411SStefano Zampini 1237*6f336411SStefano Zampini 12385808f684SSatish Balay# bs = 2 12395808f684SSatish Balayclass TestMatMPIAIJCRL_B_G23_B2(TestMatMPIAIJCRL_B_G23): 12405808f684SSatish Balay BSIZE = 2 1241*6f336411SStefano Zampini 1242*6f336411SStefano Zampini 12435808f684SSatish Balayclass TestMatMPIAIJCRL_B_G45_B2(TestMatMPIAIJCRL_B_G45): 12445808f684SSatish Balay BSIZE = 2 1245*6f336411SStefano Zampini 1246*6f336411SStefano Zampini 12475808f684SSatish Balayclass TestMatMPIAIJCRL_B_G89_B2(TestMatMPIAIJCRL_B_G89): 12485808f684SSatish Balay BSIZE = 2 1249*6f336411SStefano Zampini 1250*6f336411SStefano Zampini 12515808f684SSatish Balay# bs = 3 12525808f684SSatish Balayclass TestMatMPIAIJCRL_B_G23_B3(TestMatMPIAIJCRL_B_G23): 12535808f684SSatish Balay BSIZE = 3 1254*6f336411SStefano Zampini 1255*6f336411SStefano Zampini 12565808f684SSatish Balayclass TestMatMPIAIJCRL_B_G45_B3(TestMatMPIAIJCRL_B_G45): 12575808f684SSatish Balay BSIZE = 3 1258*6f336411SStefano Zampini 1259*6f336411SStefano Zampini 12605808f684SSatish Balayclass TestMatMPIAIJCRL_B_G89_B3(TestMatMPIAIJCRL_B_G89): 12615808f684SSatish Balay BSIZE = 3 1262*6f336411SStefano Zampini 1263*6f336411SStefano Zampini 12645808f684SSatish Balay# bs = 4 12655808f684SSatish Balayclass TestMatMPIAIJCRL_B_G23_B4(TestMatMPIAIJCRL_B_G23): 12665808f684SSatish Balay BSIZE = 4 1267*6f336411SStefano Zampini 1268*6f336411SStefano Zampini 12695808f684SSatish Balayclass TestMatMPIAIJCRL_B_G45_B4(TestMatMPIAIJCRL_B_G45): 12705808f684SSatish Balay BSIZE = 4 1271*6f336411SStefano Zampini 1272*6f336411SStefano Zampini 12735808f684SSatish Balayclass TestMatMPIAIJCRL_B_G89_B4(TestMatMPIAIJCRL_B_G89): 12745808f684SSatish Balay BSIZE = 4 1275*6f336411SStefano Zampini 1276*6f336411SStefano Zampini 12775808f684SSatish Balay# bs = 5 12785808f684SSatish Balayclass TestMatMPIAIJCRL_B_G23_B5(TestMatMPIAIJCRL_B_G23): 12795808f684SSatish Balay BSIZE = 5 1280*6f336411SStefano Zampini 1281*6f336411SStefano Zampini 12825808f684SSatish Balayclass TestMatMPIAIJCRL_B_G45_B5(TestMatMPIAIJCRL_B_G45): 12835808f684SSatish Balay BSIZE = 5 1284*6f336411SStefano Zampini 1285*6f336411SStefano Zampini 12865808f684SSatish Balayclass TestMatMPIAIJCRL_B_G89_B5(TestMatMPIAIJCRL_B_G89): 12875808f684SSatish Balay BSIZE = 5 12885808f684SSatish Balay 1289*6f336411SStefano Zampini 1290fc989267SStefano Zampini# -- MATIS -- 1291fc989267SStefano Zampini 1292*6f336411SStefano Zampini 1293fc989267SStefano Zampiniclass TestMatIS(BaseTestMatAIJ): 1294fc989267SStefano Zampini COMM = PETSc.COMM_WORLD 1295fc989267SStefano Zampini TYPE = PETSc.Mat.Type.IS 1296*6f336411SStefano Zampini 1297*6f336411SStefano Zampini 1298fc989267SStefano Zampiniclass TestMatIS_G23(TestMatIS): 1299fc989267SStefano Zampini GRID = 2, 3 1300*6f336411SStefano Zampini 1301*6f336411SStefano Zampini 1302fc989267SStefano Zampiniclass TestMatIS_G45(TestMatIS): 1303fc989267SStefano Zampini GRID = 4, 5 1304*6f336411SStefano Zampini 1305*6f336411SStefano Zampini 1306fc989267SStefano Zampiniclass TestMatIS_G89(TestMatIS): 1307fc989267SStefano Zampini GRID = 8, 9 1308fc989267SStefano Zampini 13095808f684SSatish Balay 1310*6f336411SStefano Zampini# ----- 13115808f684SSatish Balay 13125808f684SSatish Balay 13135808f684SSatish Balayif __name__ == '__main__': 13145808f684SSatish Balay unittest.main() 1315