1*55a74a43SLisandro Dalcintry: 2*55a74a43SLisandro Dalcin execfile 3*55a74a43SLisandro Dalcinexcept NameError: 4*55a74a43SLisandro Dalcin def execfile(file, globals=globals(), locals=locals()): 5*55a74a43SLisandro Dalcin fh = open(file, "r") 6*55a74a43SLisandro Dalcin try: exec(fh.read()+"\n", globals, locals) 7*55a74a43SLisandro Dalcin finally: fh.close() 8*55a74a43SLisandro Dalcin 9*55a74a43SLisandro Dalcinimport petsc4py, sys 10*55a74a43SLisandro Dalcinpetsc4py.init(sys.argv) 11*55a74a43SLisandro Dalcin 12*55a74a43SLisandro Dalcinfrom petsc4py import PETSc 13*55a74a43SLisandro Dalcin 14*55a74a43SLisandro Dalcinexecfile('petsc-mat.py') 15*55a74a43SLisandro Dalcinexecfile('petsc-ksp.py') 16*55a74a43SLisandro Dalcin 17*55a74a43SLisandro DalcinOptDB = PETSc.Options() 18*55a74a43SLisandro Dalcin 19*55a74a43SLisandro Dalcinif OptDB.getBool('plot', True): 20*55a74a43SLisandro Dalcin da = PETSc.DMDA().create([m,n]) 21*55a74a43SLisandro Dalcin u = da.createGlobalVec() 22*55a74a43SLisandro Dalcin x.copy(u) 23*55a74a43SLisandro Dalcin draw = PETSc.Viewer.DRAW() 24*55a74a43SLisandro Dalcin OptDB['draw_pause'] = 1 25*55a74a43SLisandro Dalcin draw(u) 26*55a74a43SLisandro Dalcin 27*55a74a43SLisandro Dalcinif OptDB.getBool('plot_mpl', False): 28*55a74a43SLisandro Dalcin try: 29*55a74a43SLisandro Dalcin from matplotlib import pylab 30*55a74a43SLisandro Dalcin except ImportError: 31*55a74a43SLisandro Dalcin print("matplotlib not available") 32*55a74a43SLisandro Dalcin else: 33*55a74a43SLisandro Dalcin from numpy import mgrid 34*55a74a43SLisandro Dalcin X, Y = mgrid[0:1:1j*m,0:1:1j*n] 35*55a74a43SLisandro Dalcin Z = x[...].reshape(m,n) 36*55a74a43SLisandro Dalcin pylab.figure() 37*55a74a43SLisandro Dalcin pylab.contourf(X,Y,Z) 38*55a74a43SLisandro Dalcin pylab.plot(X.ravel(),Y.ravel(),'.k') 39*55a74a43SLisandro Dalcin pylab.axis('equal') 40*55a74a43SLisandro Dalcin pylab.colorbar() 41*55a74a43SLisandro Dalcin pylab.show() 42