【发布时间】:2015-09-09 17:33:47
【问题描述】:
我正在尝试使用 Cython 为偏微分方程加速有限差分积分器。我不确定我需要做什么才能让 Cython 正确使用 numpy 数组。
我使用的扩散项函数是
def laplacian(var, dh2):
""" (1D array, dx^2) -> laplacian(1D array)
periodic_laplacian_1D_4th_order
Implementing the 4th order 1D laplacian with periodic condition
"""
lap = numpy.zeros_like(var)
lap[1:] = (4.0/3.0)*var[:-1]
lap[0] = (4.0/3.0)*var[1]
lap[:-1] += (4.0/3.0)*var[1:]
lap[-1] += (4.0/3.0)*var[0]
lap += (-5.0/2.0)*var
lap[2:] += (-1.0/12.0)*var[:-2]
lap[:2] += (-1.0/12.0)*var[-2:]
lap[:-2] += (-1.0/12.0)*var[2:]
lap[-2:] += (-1.0/12.0)*var[:2]
return lap / dh2
模型方程的rhs为
from derivatives import laplacian
def dbdt(b,w,p,m,d,dx2):
""" db/dt of Modified Klausmeier """
return w*b**2 - m*b + laplacian(b,dx2)
def dwdt(b,w,p,m,d,dx2):
""" dw/dt of Modified Klausmeier """
return p - w - w*b**2 + d*laplacian(b,dx2)
如何使用 Cython 优化这些功能?
我的工作代码在 Github 上有一个存储库,它集成了 Gray-Scott 模型 - Gray-Scott model integrator。
【问题讨论】:
-
你试过什么?如果您在实施
cython版本时遇到具体问题,您将获得更多帮助。