RFM Memory Size

23MAR25

If the RFM fails while printing the progress messages, or particularly when writing the output spectra, it is likely to be because it has exceeded the computer's available memory size (or, if at the output stage, disk space/allocation).

The easiest test for this is just to decrease the spectral output range (*SPC section) and see if the problem recurs.

For large spectral ranges (output spectra spanning 100 cm-1 or more) the memory size is likely to be determined by the 2D arrays in module fulcom_dat.f90, e.g. TRAFUL(NFUL,MTAN), where

NFUL
is the total number of fine grid points across the entire spectral range (approx NFIN × output range in cm-1),
MTAN
is the total number of tangent rays, which is the product of the number of viewing directions specified in the *TAN section, the number of paths required for field-of-view convolution (*FOV) and the number of different Jacobians (*JAC).
The following arrays are likely to determine the overall memory requirements of the RFM.
ABSFIN(NFIN,NCLC) etc in fincom_dat.f90
NFIN is the number of fine grid points within a 1 cm-1 interval. The default value is 2000, but it can be altered by the *FIN section, and much larger values may be required to resolve Doppler widths in the microwave region.
NCLC is the number of 'calculated paths', which is approximately the product of (number of absorbers) × (number of atmospheric layers) × (number of tangent paths).

CYC(NCYC) in hitcom_dat.f90
This is the buffer which stores all spectroscopic lines within 1 cm-1 of the current interval being calculated. This starts with a size NCYC=1000 and is expanded as required (in increments of 50%), with messages in the rfm.log file
W-REACYC: NCYC being increased to NCYC=...
But for certain molecules with very dense line spectra this can get rather large.