RFM v5.0 Release Notes
Apart from requiring different compilation instructions, the inputs/outputs remain the same, at least within the limits of numerical significance, so mostly invisible to the user (see Differences, below).
For the user, the main advantage is the automatic array-allocation available with F90, meaning no more editing of rfmsiz.inc and recompiling whenever an array dimension has to be increased.
From my point of view it's a chance for a simplification which should make it easier for me to add/change/fix things (bearing in mind that the original code has evolved hapharzardly from its original incarnation in 1995 as a limb radiance simulator for MIPAS).
On the other hand, being almost entirely new code, it will have a whole new set of bugs.
From the RFM v4.3 user's viewpoint, these are the main changes
The following new features are implemented in RFM v5.0
Firstly, an acknowledgement for Clive Page (U.Leicester) for his valuable
The F77 version of the RFM was split into *.for and *.inc files, the latter containing common data or constants. In F90 these are all replaced by 'modules' with the extension *.f90, although I've added further information in the module names:
The new F90 RFM stores the full spectrum, with convolution and output
saved until completion of the spectral calculation.
This requires more memory but allows arbitrarily wide ILS
convolutions and only opens/writes/closes output files one at a time, using
the same logical unit number, rather than keeping a large number of files
open, so the LUN flag is no longer required.
Since F90 allows whole-array operations rather than element-by-element, it
ought to run faster. However, with compilers such as ifort, I can't say
I've noticed any significant improvement in speed. In fact, it takes longer
to compile, but this won't be something that has to be done often.
One of the features of F90 is that module interfaces are checked on
compilation, eg making sure the ordering and type of variables in the
argument list to a subroutine is consistent with the argument list that the
subroutine expects. This does, however, mean that the compilation has to
be performed in a particular order, creating *.mod files with the necessary
interface information. For this reason the F90 RFM comes with a 'make' file
(see F90 compilation).