Latest: GEIXSC v1.01 (05AUG15)




geixsc is the FORTRAN77 program to convert the
GEISA molecular cross-section data to HITRAN cross-section format (actual format is on p.4 of HITRAN 2004 paper)

Although both represent tabulations of the same quantity (absorption cross-section) in the same units (cm2 molec-1) there are two main problems in the conversion:

  1. HITRAN has one file per molecule, split into spectral ranges then further subdivided into cross-section tabulations for different pressure-temperature (pT) conditions, while GEISA has one file per molecule per pT, containing multiple spectral ranges (see Identifying Bands)
  2. HITRAN format is implicitly on a regular grid, ie the spectral range for each tabulation is defined by just the lower and upper wavenumbers, and the number of points, while the GEISA data tabulates both wavenumber and cross-section value for each point, allowing (in principle, at least) for an arbitrarily spaced grid (see Interpolation).

GEISA cross-section files are freely available from

This page contains the essentials on installing and running geixsc, subsequent sections are for information only.

Installing geixsc

First download the source code: [geixsc.f]

Then compile with any FORTRAN77 compiler, eg

f77 geixsc.f -o geixsc

Running geixsc

First, construct a file containing the names of all the GEISA data to be merged (e.g. all the files for a single molecule, but could also be a mix of different molecules, in no particular order). Even if you only have one GEISA file, you'll need to create another file containing the filename.

For example, in linux, if you've downloaded the GEISA file n2o5_all_files.tar.gz into the current directory, you can unpack it and create a list file n2o5.lst (say) using the following:

tar -xzf n2o5_all_files.tar.gz
ls ./Final_IR/Molecule_n2o5/* > ! n2o5.lst

The file n2o5.lst then contains 5 filenames, representing tabulations of absorption cross-section at 5 different pT conditions.


Then, to run the conversion program, type geixsc and provide the name of the list file. Using the above example, (user responses in bold)

geixsc R-GEIXSC: Running program GEIXSC v1.00 File containing list of GEISA filenames: n2o5.lst I-GEIXSC: Molecule=n2o5 No. GEISA files= 5 Band# 1 Wno range: 540.0189 1380.0109 No.pT sets: 5 I-GEIXSC: Writing file: n2o5.xsc STOP R-GEIXSC: Successful completion statement executed

In this case, the program runs almost instantaneously. In most cases you'll also get a number of information and/or warning messages and the program takes a little longer, but no further user-input is required.


  1. The first line tells you which version (1.0) of the program is being executed.
  2. The second line asks you to provide the name of the file containing the list of GEISA files to be merged (n2o5.lst)
  3. The third line shows the identified molecule (n2o5), extracted from the data file contents. This will also be the molecule name written in the header of the output files (eg 'cfc-11' rather than 'CCl3F' which is in the equivalent HITRAN file).
  4. The fourth line lists the different bands, ie spectral ranges, identified for this molecule (just one in this case) and the number of pT tabulations (5) for this spectral range.
  5. The fifth line gives the name of the HITRAN-format output file which the program is about to create, formed from the identified molecule name (here n2o5) plus .lst
  6. The final line indicates successful completion.
  7. In the case of multiple molecules in the list file, lines 3-5 are repeated.
This is an unusually simple case. Generally some sort of regridding will be performed, as described in the next section, and a number of diagnostic messages are printed before 'Successful completion'.

Identifying Bands

Conversion to HITRAN format requires separate spectral bands to be defined, but within the GEISA files spectral bands are only identifiable as discontinuities in the spectral axis.

Within the geixsc program the bands are identified as follows:

Note that this may result in overlapping bands, usually as a result of merging data from different sources (this also occurs in the HITRAN cross-section data), as shown in the following example for CFC-11 data

R-GEIXSC: Running program GEIXSC v1.00 File containing list of GEISA filenames: f11.lst I-GEIXSC: Molecule=cfc-11 No. GEISA files= 57 Band# 1 Wno range: 210.0234 1999.9405 No.pT sets: 1 Band# 2 Wno range: 499.9054 1600.9577 No.pT sets: 1 Band# 3 Wno range: 809.9975 880.0000 No.pT sets: 55 Band# 4 Wno range: 1049.9983 1120.0011 No.pT sets: 55 I-GEIXSC: Writing file: cfc-11.xsc ...
Here there are two (older) datasets each containing just one pT tabulation over a continuous wide spectral range, followed by a newer dataset containing 55 pT tabulations split into two distinct spectral ranges. The band numbering ('Band# 1' etc) is in increasing value of the lower wavenumber limit, which is the order in which the bands will be written in the HITRAN-format output file.


Given that all these cross-section measurements come from FTS instruments you might have naively imagined that the spectral grid would always be regular, and conversion to HITRAN is simply a matter of noting the lowest and highest wavenumbers and the number of points in the grid. But looking more closely at the GEISA data ... While it tempting simply to re-interpolate the GEISA data to a regular grid keeping the same end points and number of data points, that would lead to spurious minor differences between the original HITRAN and converted GEISA data which often come from the same source. Aiming to keep as many of the original data points as possible in the output file, the subroutine GETACS works as follows:
  1. Identify if the grid is regular and complete. If so, directly copy all data points to output and continue without any warning messages (as in the N2O5 example above)
  2. Identify if any consecutive grid points have the same wavenumber value, in which case issue a warning and retain only the second point, eg
    ... I-GEIXSC: Writing file: c2f6.xsc ./Final_IR/Molecule_c2f6/c2f6_00.03_[9]_273.00_000000.00.asc W-GEIXSC: Removing 2 duplicate spectral points from original 29866 ...
    The same piece of code also checks for decreasing wavenumber values, in which case a fatal error message would result, but no instances of this were found in the current GEISA data.
  3. Identify if most of the grid is regular with a few missing points which can be interpolated, or extra points which can be ignored, and issue a message eg
    ... ./Final_IR/Molecule_c2f6/c2f6_00.03_[9]_273.00_000000.00.asc W-GETACS: Interpolating 599.9948 1499.9869 from 29864 to 29869 points at .030132 [cm-1] spacing ...
  4. Decide that the grid is too irregular and just reinterpolate everything to a regular grid with the same end points and number of data values, issuing a warning message 'W-GETACS: Re-interpolating ...'.

Version History

v1.21 (05AUG15)
Change '$' in WRITE statements to avoid gfortran warnings
v1.00 (25SEP13)
Original code