In [1]:
%matplotlib inline
%load_ext autoreload
%autoreload 2

In [2]:
import numpy as np
import matplotlib.pyplot as plt
from testsolvers import *

Check 1D


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)


1.16947769399e-15

Check 2D


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)


4.68674527635e-16

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)


Overwriting tmp.py

In [6]:
!mpirun -n 2 python tmp.py


2.54502582487e-16
4.07981109816e-16

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))


Overwriting tmp.py

In [8]:
!mpirun -n 2 python tmp.py


0.000164382373362
0.000164380437532

Check 3D


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)


3.70521225153e-15

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)


Overwriting tmp.py

In [11]:
!mpirun -n 2 python tmp.py


1.36781930186e-15
1.86707503934e-15

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))


Overwriting tmp.py

In [13]:
!mpirun -n 2 python tmp.py


0.000109574491058
0.000109574431979

In [13]: