[SciPy-dev] Uploading attachments in scipy.org

Sturla Molden sturla@molden...
Wed Nov 18 06:21:15 CST 2009


Ramon Crehuet skrev:
> Hi all,
> I few days ago I posted a question and I have not received any answer. I
> have modified the Performance Python page, introducing new examples with
> fortran 90.

I think the Performance Python page needs a Cython version as well.

Sturla Molden





import numpy as np
cimport numpy as np
cimport cython
import laplace

cdef extern from "math.h":
    double sqrt(double)

class LaplaceSolver(laplace.LaplaceSolver):

    @cython.wraparound(False)
    @cython.boundscheck(False)
    def cythonTimeStep(self, dt=0.0):

        cdef np.ndarray[double, ndim=2, mode="c"] u
        cdef double dx2, dy2, dnr_inv, diff, tmp, err
        cdef int nx, ny, i, j

        g = self.grid
        u = g.u
        nx = u.shape[0]
        ny = u.shape[1]
        dx2 = g.dx**2
        dy2 = g.dy**2
        dnr_inv = 0.5/(dx2 + dy2)

        err = 0.0
        for i in range(1, nx-1):
            for j in range(1, ny-1):
                tmp = u[i,j]
                u[i,j] = ((u[i-1, j] + u[i+1, j])*dy2 +
                    (u[i, j-1] + u[i, j+1])*dx2)*dnr_inv
                diff = u[i,j] - tmp
                err += diff*diff

        return float(sqrt(err))





More information about the Scipy-dev mailing list