Latest: GEIXSC v2.00 (16NOV18) [Download]


GEIXSC is a Fortran90 program to convert
GEISA molecular cross-section data to HITRAN format (described in Table 1 of the 2004 HITRAN paper)

Although both represent tabulations of the same quantity (absorption cross-section) in the same units (cm2 molec-1), the main issue in the conversion is that

GEISA cross-section files are freely available from

I haven't tested this with all the GEISA cross-section data so if you find problems with converting any particular files, let me know (

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

Installing GEIXSC

Download the source code: [geixsc.f90]

Then compile with any generic Fortran compiler, eg

gfortran geixsc.f90 -o geixsc
This will create a local executable 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 e.g. n2o5.lst using the following:

tar -xzf N2O5_all_files.tar.gz ls N2O5*.asc > ! n2o5.lst
The file n2o5.lst then contains 5 filenames, representing tabulations of absorption cross-section at 5 different (p,T) conditions.
N2O5_Unknown_[22]_205.40_Unknown.asc N2O5_Unknown_[22]_215.10_Unknown.asc N2O5_Unknown_[22]_225.00_Unknown.asc N2O5_Unknown_[22]_254.10_Unknown.asc N2O5_Unknown_[22]_293.50_Unknown.asc
(The 'Unknown' strings in the GEISA N2O5 filenames refer to the fact that the spectral resolution and pressure of the data are indeterminate).

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

geixsc R-GEIXSC: Running program GEIXSC v2.00 File containing list of GEISA filenames: n2o5.lst I-GEIXSC: Reading file: ./n2o5/N2O5_Unknown_[22]_205.40_Unknown.asc I-GEIXSC: Writing file: N2O5_205.4_0.0_540.1-1380.0.xsc I-GEIXSC: Reading file: ./n2o5/N2O5_Unknown_[22]_215.10_Unknown.asc I-GEIXSC: Writing file: N2O5_215.1_0.0_540.1-1380.0.xsc I-GEIXSC: Reading file: ./n2o5/N2O5_Unknown_[22]_225.00_Unknown.asc I-GEIXSC: Writing file: N2O5_225.0_0.0_540.1-1380.0.xsc I-GEIXSC: Reading file: ./n2o5/N2O5_Unknown_[22]_254.10_Unknown.asc I-GEIXSC: Writing file: N2O5_254.1_0.0_540.1-1380.0.xsc I-GEIXSC: Reading file: ./n2o5/N2O5_Unknown_[22]_293.50_Unknown.asc I-GEIXSC: Writing file: N2O5_293.5_0.0_540.1-1380.0.xsc STOP R-GEIXSC: Successful completion

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

This is an unusually simple case. Generally the GEISA data will be split into separate files for individual bands, and some sort regridding may be required. For example:

I-GEIXSC: Reading file: ./f11/CFC-11_00.01_[8]_190.10_002999.76.asc W-REGRID: Interpolating 810.0026 880.0000 from 23229 to 23231 points at 0.003013 [cm-1] spacing I-GEIXSC: Writing file: CFC-11_190.1_22.5_810.0-880.0.xsc I-GEIXSC: Writing file: CFC-11_190.1_22.5_1050.0-1120.0.xsc
In this case, apart from splitting the original data into two spectral bands (810–880 cm-1 and 1050–1120 cm-1) the program has detected two 'missing' points on an otherwise regular spectral axis and so inserted interpolated values.

Identifying Bands

The GEISA format allows discontinuities in the spectral axis so different bands can be concatenated within the same file (although still with monotonically increasing wavenumbers)

The HITRAN format only permits a regular spectral grid within each file, so the GEIXSC program has to make some decisions on how to divide up the GEISA data into individual spectral bands for HITRAN output files. Spectral bands are identified as follows:


Given that all these cross-section measurements come from FTS instruments you might naively have 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 (at least in the previous version, I haven't checked whether this still applies to any of the 2015 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 REGRID 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
  3. Identify if most of the grid is is on one regular spacing while some points are at a different regular spacing, in which case convert to the regular spacing of most points, issuing a message
    'W-REGRID: Adjusting ...'
  4. Identify if most of the grid is regular with a few missing points which can be interpolated (as in the CFC-11 example earlier), issuing a message
    'W-REGRID: Interpolating ...'
  5. 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-REGRID: Re-interpolating ...'.

Version History

v2.00 (16NOV18)
Convert to F90, modified GEISA 2015 format, and simplify by creating single HITRAN files for each spectral band and (p,T).
v1.21 (05AUG15)
Change '$' in WRITE statements to avoid gfortran warnings
v1.00 (25SEP13)
Original code