try: range = xrange except NameError: pass import sys, petsc4py petsc4py.init(sys.argv) from petsc4py import PETSc m, n = 16, 32 A = PETSc.Mat().create(PETSc.COMM_WORLD) A.setSizes([m*n, m*n]) A.setFromOptions() A.setUp() Istart, Iend = A.getOwnershipRange() for I in range(Istart, Iend): A[I,I] = 4 i = I//n if i>0 : J = I-n; A[I,J] = -1 if i0 : J = I-1; A[I,J] = -1 if j