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 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.
· These are a series of lectures on the algorithms and the implementation of pFFT++.
· These are some of the applications of pFFT++
· These are the outside libraries included in pFFT++
· 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.