fishpack


fishpack, a FORTRAN77 code which solves several forms of Poisson's equation, by John Adams, Paul Swarztrauber, Roland Sweet.

FISHPACK is a package of subroutines for solving separable partial differential equations in various coordinate systems. Such equations include the Laplace, Poisson and Helmholtz equations and have the form:


        Uxx + Uyy            = 0         (Laplace)
        Uxx + Uyy            = F(X,Y)    (Poisson)
        Uxx + Uyy + lambda*U = F(X,Y)    (Helmholtz)
      
in two dimensional cartesian coordinates.

FISHPACK is not limited to the 2D cartesian case. It can set up and solve the equations in coordinate systems including:

The algorithm uses 5 point finite differences and an evenly spaced grid. Other routines are included which solve related problems in which the derivative terms have coefficient functions.

In the documentation, the words "standard" and "staggered" grid are used. The difference between these grids is simple. In the one dimensional case, a standard grid of size H on the interval (A,B) would be (A, A+H, A+2*H, ..., B-H, B) whereas a staggered grid would be (A+H/2, A+3H/2, ..., B-3H/2, B-H/2). Versions of 2D solvers are offered below using both kinds of grids. Depending on the boundary conditions, or other singularities near the boundary, one or the other type of grid may be preferred.

The version of FISHPACK presented here has been altered and adapted somewhat. To obtain a clean and correct copy of the original version, go to http://www.netlib.org/fishpack/index.html

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

fishpack is available in a FORTRAN77 version.

Related Programs:

fishpack_test

BETIS, a FORTRAN77 program which solves Laplace's equation in a 2D region using the boundary element method.

FEM_50, a MATLAB program which solves Laplace's equation in an arbitrary region using the finite element method.

FEM2D_POISSON_RECTANGLE, a FORTRAN77 program which solves Poisson's equation in a 2D rectangle using the finite element method.

FFTPACK5, a FORTRAN90 library which computes Fast Fourier Transforms. A version of this library is included in FISHPACK.

SERBA, a FORTRAN77 program which solves problems in planar elasticity using the boundary element method.

SLATEC, a FORTRAN90 library which includes a copy of FISHPACK.

Author:

John Adams, Paul Swarztrauber, Roland Sweet.

Reference:

  1. Ulrich Schumann, Roland Sweet,
    A direct method for the solution of Poisson's equation with Neumann boundary conditions on a staggered grid of arbitrary size,
    Journal of Computational Physics,
    Volume 20, 1976, pages 171-182.
  2. Paul Swarztrauber,
    A direct method for the discrete solution of separable elliptic equations,
    SIAM Journal on Numerical Analysis,
    Volume 11, 1974, pages 1136-1150.
  3. Paul Swarztrauber, Roland Sweet,
    Efficient FORTRAN Subprograms for the Solution of Elliptic Equations,
    NCAR Technical Report TN/IA-109,
    National Center for Atmospheric Research, 1975.
  4. Roland Sweet,
    A cyclic reduction algorithm for solving block tridiagonal systems of arbitrary dimensions,
    SIAM Journal on Numerical Analysis,
    Volume 14, September 1977, pages 706-720.

Source Code:


Last revised on 05 October 2023.