xref: /petsc/src/binding/petsc4py/demo/legacy/kspsolve/test_mat_ksp.py (revision 5a48edb989d3ea10d6aff6c0e26d581c18691deb)
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