The program pFFT++ computes single-layer potential, double-layer potential and their gradients on N panels due to sources on N panels in nearly O(N) time and with O(N) memory. Combined with an iterative solver (such as GMRES or QMR), pFFT++ could be used to efficiently solve the integral equations commonly seen in many engineering applications. It was written in C++ and developed on Linux platform. The generic programming technique and the standard template library (STL) are extensively used in pFFT++.


The underlining algorithm of pFFT++, the pre-corrected FFT algorithm, is applicable to any kernels that are reciprocal and shift invariant. Three panel integration routines are included. Theses routines could calculate the integration of 1/r, eikr/r and ekr/r (k is real) and their gradients over a flat panel. These kernels are the Green’s functions of 3D Poisson equation, 3D Helmholtz equation and 3D Poisson Boltzmann equation, respectively. The program pFFT++ itself, however, is entirely independent of the panel integration routine. So user could add new integration routines to accommodate new kernels. The package also includes an iterative solver routine GMRES and a c++ interface to the sparse matrix solver SuperLU. With pFFT++ as the acceleration engine, GMRES as the iterative solver and a sparse matrix as pre-conditioner (stored and LU factored by SuperLU), one could easily construct a fast integral equation solver for a specific application problem.


        Download softwares:

o       pFFT++: source code and documentation in a tgz file (v1.0 1.2Mb, v1.1 1.2Mb, v1.2 1.2Mb)

o       fftcap++: source code and documentation in a tgz file (v1.0 4.9Mb)

This is a simple fast capacitance extraction code. It is used to demonstrate how to construct a fast integral equation solver using pFFT++, gmres and superLU. For your convenience, pFFT++ 1.2 is also included, along with some FastCap input files.

o       Copyright and disclaimer


        These are a series of lectures on the algorithms and the implementation of pFFT++.

o       Overview 01/14/03 (handout)

o       Projection and Interpolation 01/16/03 (handout)

o       More on projection and interpolation 01/23/03 (handout)

o       Direct matrix, pre-correction and grid selection 01/28/03 (handout)

        These are some of the applications of pFFT++

o       Computational biology (handout)

o       Computational aerodynamics (handout)

        This paper (PDF, PS) describes the algorithm and the performance of pFFT++.

        I gave this talk at a weekly seminar at the Math department of University of North Carolina in April 2002.

        These are the outside libraries included in pFFT++

o       FFTW

o       clapack

o       SuperLU

o       TNT

        Release note

o       Nov, 2001 version alpha

o       February, 2002 version beta

o       January, 2003 version 1.0

o       February, 2003 version 1.1.

o       February, 2007 version 1.2. I fixed two minor problems and now the binary compiled with gcc 3.2 and 3.3 have passed all tests.

Zhenhai Zhu