RFM Installation

31JUL08

System Requirements

It should be possible to install the RFM on any Linux/Unix machine with a Fortran77 compiler. The RFM does include a few non-standard but commonly used F77 language extensions such as INCLUDE, IMPLICIT NONE, DO WHILE, ENDDO.

The memory requirement is largely dependent on the array sizes required. See RFM Memory Size for details.

Unpacking the RFM tar file

The source code is distributed as a compressed (with gzip) tar file. To unpack the code, place the tar file (eg named rfm_v4.28.tar.gz) into an empty directory and type
tar -xzf rfm_v4.28.tar.gz
This will expand to produce a single program module (rfm.for) plus about 250 subroutines (*.for) and include files (*.inc).

Compiling the RFM

There is a single machine-dependent part of the source code which is the RECL parameter in the FORTRAN OPEN statement required when opening the (direct access) HITRAN binary file. This usually has the value 88 although Alpha machines and the Intel FORTRAN compiler require a value 22. The appropriate value RECLEN is set in the include file reclen.inc. Check that this is set to the correct value for your machine before compiling (if in doubt, 88 is a good bet).

In most situations, all that is then needed to compile the RFM is to change to the directory containing the source code and then type

f77 *.for -o rfm
which will create an executable called rfm

While the above should always work, Gareth Thomas (Oxford) suggests the following for improved performance:

On a machine with sse2 (which will be one of the flags listed under /proc/cpuinfo), compiling the RFM with:
ifort -O3 -arch SSE2 -o rfm *.for
produces an executable which runs approximately twice as fast as that produced by "g77 -O2 *.for".

The version of ifort I'm using is 9.0.

ifort also has optimizations for other type CPU types (like SSE), and optimizes for "Pentium 4" processors by default. I think SSE and SSE2 are AMD specific extensions, but I'm not sure.

[NB: this compiler requires RECLEN=22]

The NAG compiler is known to have problems with a couple of features of the RFM source code. These have been changed in RFM v4.27 but in earlier versions you'll need to make the following changes yourself. Specifically, the use of the intrinsic function DFLOAT (which should be replaced by DBLE) and the use of 'X' in format fields (which should be replaced by '1X').

11FEB09: Martin Kaufmann (FZ Juelich) has investigated using RFM v4.25 with different compilers: [Report]

Making Local Modifications

There is a CHARACTER*11 field VERSN (set as the first executable statement in the main program module rfm.for) which is written as part of the output file headers. To allow traceability between spectra generated by different versions of the RFM code, any local modifications to the RFM code should be reflected in this field. E.g., to represent a local Oxford modification 13 to the standard version '4.25', a suggested change is:
VERSN = '4.25_OXF_13'

Queries & Bug Reports

A list of all reported bugs (and fixes) is maintained on www.atm.ox.ac.uk/RFM/rfm_bugs.html, and the descriptions of each Driver Table Section and Flag also include any related bugs.

Any queries or reports on possible new bugs should be addressed to:

A.Dudhia
AOPP, Clarendon Laboratory
Parks Rd, Oxford OX1 3PU
England
email: dudhia@atm.ox.ac.uk