1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
# file: bratu2dnpy.py
def bratu2d(alpha, x, f):
# get 'exp' from numpy
from numpy import exp
# setup 5-points stencil
u = x[1:-1, 1:-1] # center
uN = x[1:-1, :-2] # north
uS = x[1:-1, 2: ] # south
uW = x[ :-2, 1:-1] # west
uE = x[2:, 1:-1] # east
# compute nonlinear function
nx, ny = x.shape
hx = 1.0/(nx-1) # x grid spacing
hy = 1.0/(ny-1) # y grid spacing
f[:,:] = x
f[1:-1, 1:-1] = \
(2*u - uE - uW) * (hy/hx) \
+ (2*u - uN - uS) * (hx/hy) \
- alpha * exp(u) * (hx*hy)
|