Notes on Upgrading to Fortran 90

(Learning just a little Fortran-90 can help you a lot)

As I have looked into Fortran 90, I've collected a few notes and pointers to web sites which may be of use to others who are learning Fortran 90. Fortran 90 is now widely available on most scientific supercomputers and workstations (and available for desktop computers). Cray froze their Fortran-77 compiler a while back and has made Fortran-90 the new standard. Fortran 90 is a superset of Fortran77, and so allows an upward compatible development path for a large body of Fortran programs and programmers to incorporate modern computing techniques.

By using just a few new features, such as run-time allocation of arrays, array object features, and converting include files of common blocks to modules, it is possible to greatly "modernize" our coding techniques and produce more manageable code. An excellent paper which makes this clear is:

For example, they show how fortran-77 subroutine calls of the form: can be simplifed in Fortran-90 to the the form: This is possible because the Fortran-90 subroutine can allocate its own work space and can figure out the size of arrays passed to it.

My notes on a few nice F90 features
Subtle differences between "assumed size" (f77) and "assumed shape" (f90) arrays.

Other useful web sites include:

Charles Karney's clear notes on upgrading from f77 to f90
A fairly well written overview of fortran-90 (in html).
Web page on High-Performance Object-oriented programing in Fortran-90, by one of Decyk's co-authors.

Michael Metcalf's Fortran 90 CNL Articles
A well written f77 to f90 conversion course for f77 programmers (in postscript).

An online f90 course for the f77 programmer, with a useful reference section Intrinsic Functions In Fortan 90.
A more detailed list of f90 tutorials.
The National Energy Research Supercomputer Center has a lot of good online documentation.
Another list of f90 sites.

An introduction to Fortran 90 for beginners.

C++ is another language to consider:

A comparison of C++ and Fortran90 for Object-Oriented Scientific Programming

C++ Programming for Scientists

And a final suggestion: for quick development of code which doesn't need hours on a supercomputer to run (such as post-processing, graphics, etc.) consider high level interpretive languages like IDL, Matlab, Python, PV-Wave, Maple, Mathematica, etc...