In [1]:
%matplotlib inline
%load_ext autoreload
%autoreload 2
In [2]:
import numpy as np
import matplotlib.pyplot as plt
from testsolvers import *
In [3]:
nx = 100
L = 2*np.pi
dx = L/nx
k = 20
x, s = problem_setup_1d(0, nx, dx, k)
solve1d(x, L)
print np.linalg.norm(x - s)
In [4]:
ny = 100
nx = 2*ny
L = 2*np.pi
dy = L/ny
dx = L/nx
k = 20
x, s = problem_setup_2d(0, ny, dy, 0, nx, dx, k)
x0 = x.copy()
solve2d(x, L, L)
print np.linalg.norm(x - s)
In [5]:
%%file tmp.py
import numpy as np
from testsolvers import *
from mpi4py import MPI
N0 = N1 = 100
k = 10
L = 2*np.pi
dy = L/N0
dx = L/N1
solver = PyFFTWPoisson2DMPI(N0, L, N1, L)
ny = solver.ny
nx = solver.nx
y0 = solver.y0
x, s = problem_setup_2d(y0, ny, dy, 0, nx, dx, k)
solver.solve(x)
print np.linalg.norm(x-s)
In [6]:
!mpirun -n 2 python tmp.py
In [7]:
%%file tmp.py
import numpy as np
from testsolvers import *
from mpi4py import MPI
N0 = N1 = 100
k = 10
L = 2*np.pi
dy = L/(N0+1)
dx = L/(N1+1)
solver = PyHypreSolver2D(N0, L, N1, L)
ny = solver.ny
nx = solver.nx
y0 = solver.y0
x, s = problem_setup_2d(y0+1, ny, dy, 1, nx, dx, k)
solver.solve(x)
print np.max(np.abs(x-s))
In [8]:
!mpirun -n 2 python tmp.py
In [9]:
nz = ny = nx = 100
nx = 2*ny
L = 2*np.pi
dz = L/nz
dy = L/ny
dx = L/nx
k = 10
x, s = problem_setup_3d(0, nz, dz, 0, ny, dy, 0, nx, dx, k)
x0 = x.copy()
solve3d(x, L, L, L)
print np.linalg.norm(x - s)
In [10]:
%%file tmp.py
import numpy as np
from testsolvers import *
from mpi4py import MPI
N0 = N1 = N2 = 100
k = 10
L = 2*np.pi
dz = L/N0
dy = L/N1
dx = L/N2
solver = PyFFTWPoisson3DMPI(N0, L, N1, L, N2, L)
nz = solver.nz
ny = solver.ny
nx = solver.nx
z0 = solver.z0
x, s = problem_setup_3d(z0, nz, dz, 0, ny, dy, 0, nx, dx, k)
solver.solve(x)
print np.linalg.norm(x-s)
In [11]:
!mpirun -n 2 python tmp.py
In [12]:
%%file tmp.py
import numpy as np
from testsolvers import *
from mpi4py import MPI
N0 = N1 = N2 = 100
k = 10
L = 2*np.pi
dz = L/(N0+1)
dy = L/(N1+1)
dx = L/(N2+1)
solver = PyHypreSolver3D(N0, L, N1, L, N2, L)
nz = solver.nz
ny = solver.ny
nx = solver.nx
z0 = solver.z0
x, s = problem_setup_3d(z0+1, nz, dz, 1, ny, dy, 1, nx, dx, k)
solver.solve(x)
print np.max(np.abs(x-s))
In [13]:
!mpirun -n 2 python tmp.py
In [13]: