Fishpack Software Upgraded Via Fortran 90 Methods

John Adams and Steve Gombosi collaborated to improve the functionality of Fishpack, a solver of second- and fourth-order finite difference approximations to separable elliptic partial differential equations. John has worked as a mathematician in SCD for more than 30 years, and he now consults for SCD's Computational Science Section. Steve is a software engineer and user consultant in SCD's Consulting Services. John Adams (left) and Steve Gombosi collaborated to modernize the operation of Fishpack, a package of solvers for elliptic partial differential equations. The screen in the background shows the Fishpack home page. Photo: Brian Bevirt, NCAR/SCD
Fishpack is a legacy code written in the early 1970s by Paul Swarztrauber and Roland Sweet of SCD. In the mid 1970s, John Adams began adding solvers to the suite of routines. All of this work was done in Fortran 77. Some of this code is now archaic and was causing problems. Steve contributed ideas for using derived data types with pointers to implement dynamically allocated workspace. John inserted some Fortran 90 code to eliminate a mixed mode problem (workspace being used as both real and complex) and to dynamically allocate workspace in all solvers. John also changed the test programs to show results from 32-bit and 64-bit floating-point platforms and updated all the Fishpack documentation to reflect the Fortran 90 upgrades. The original test programs showed results from the CDC 7600 computer. Fishpack is still not a Fortran 90 package. The code contains arithmetic if statements, goto statements, and lots of statement labels. However, the most important upgrades have been made. John and Steve will continue to investigate if it's reasonable to go further in converting the package to Fortran 90.