FISHPACK

 

 

 

FISHPACK - Efficient FORTRAN Subprograms for the Solution of Separable Elliptic Partial Differential Equations

 

By John C. Adams (retired)
Paul N. Swarztrauber (deceased, August 2011)
and Roland Sweet (retired)

 

Figure provided by Jacque Marshall

Abstract

FISHPACK contains a collection of Fortran77 subroutines that solve second- and fourth-order finite difference approximations to separable elliptic Partial Differential Equations (PDEs). These include Helmholtz equations in cartesian, polar, cylindrical, and spherical coordinates, as well as more general separable elliptic equations. The solvers use the cyclic reduction algorithm. When the problem is singular, a least-squares solution is computed. Singularities induced by the coordinate system are handled, including at the origin r=0 in cylindrical coordinates, and at the poles in spherical coordinates.

Test programs are provided for the 19 solvers. Each serves two purposes: as a template to guide you in writing your own codes utilizing the FISHPACK solvers, and as a demonstration on your computer that you can correctly produce FISHPACK executables.

The FISHPACK library and programs are intended to be installed on your computer using the Makefile provided when you download the files in this distribution. The Makefile builds the library and driver executables under the compiler you specify when you run "make".

If your application requires solution of nonseparable elliptic PDEs, or a mix of separable and nonseparable ones, consider using the MUDPACK library instead of FISHPACK. MUDPACK uses multigrid iteration to approximate separable and nonseparable elliptic PDEs. The software is available on NCAR's web pages. If you are solving separable elliptic PDEs only, and prefer Fortran90 syntax, then you may want to use FISHPACK90, also available on NCAR's web pages. Both FISHPACK and FISHPACK90 have the same functionality.

CAVEAT: FISHPACK source code is known to break the Fortran77 Standard in various ways. In particular, some of the routines pass arguments of one type and use them as another. We have not compiled a comprehensive list of FISHPACK infractions. Prospective users who require complete adherence to the standard for their applications are advised that this package is not compliant.

FISHPACK, Copyright (C) 2004-2011, Computational Information Systems Laboratory, University Corporation for Atmospheric Research