Migration of ARPS to Fortran 90
Why?
We had been deliberately avoiding F77 incompatible features;
Fortran 90 compiler is now commonly available, 8 year after the standard was set
To use advanced features/functionalities offered by F90, including dynamics memory allocation, derived types, pointers. Many of the features can’t be effectively exploited until we take the first step to allow for F90 features
It’s the future. NCEP in no longer accepting F77 code. Cray is no longer supporting F77 compilers. Certain F77 features will eventually become obsolete
The MPP version of two-way nesting that we are starting to work on requires advanced features of memory allocations
We want to release ARPS Version 5.0 by the end of this year, in Fortran 90! Together with a User’s Guide the matches the new code
Implications:
- You can no longer use Fortran 77 compiler, such as the free g77 on Linux. We have f90 compilers on all of our Unix workstations/servers.
- You have to learn programming in F90.
- A good tutorial at: http://twister.ou.edu/f77tof90
- A good book: Programming in Fortran 90 by T.M.R. Ellis, I.R. Phillips and T.M. Lahey.
How do we plan to proceed?
- A new coding standard for ARPS has been set! The standard can be revised as we understand F90 features better.
- Key changes include the use of F90 free source format, and dynamic memory allocation.
- We will write converters to automate more of the tasks;
- We expect that ARPS 4.6.0 be the last Fortran 77 compatible version, which will be maintained from now till ARPS 5.0 is released.
- We expect the conversion be done in a relatively short period of time (about one month)
- Before the F90 version is released for local use, others can still write in F77 according to old coding standard. The code can then be converted with the assistance of the converters to F90 before being incorperated into the official version. After the release, all codes should be written according to the new standard.
What is the new standard anyway?
See http://www.caps.ou.edu/ARPS/coding.
Sample programs solvq.f90, globcst.f90.