Latest: GEIHIT v4.00 (09AUG18)
This needs updating for HITRAN 2020!


GEIHIT is a Fortran program to convert GEISA 2015 spectroscopic data into the 160-character HITRAN .par format (described in the
2004 HITRAN paper)

GEISA 2015 data is available from

Since most of the essential parameters for radiative transfer modelling are the same in GEISA and HITRAN the conversion doesn't require anything too complicated [Details...], but the following adjustments are made by GEIHIT

The GEISA 2015 data contains 5 067 351 records and, having excluded lines for reasons as described above, this program will generate HITRAN-format output files of either 4 932 591 or 5 048 278 records, depending on whether the non-HITRAN molecules and isotopes are excluded or included.

Installing GEIHIT

Download the source code: [geihit.f90]

Compile with any generic FORTRAN compiler, eg

gfortran geihit.f90 -o geihit
In this example the gfortran compiler is used [More...] and the executable is given the name geihit.

(Note: GEIHIT makes use of the intrinsic MOVE_ALLOC subroutine introduced with FORTRAN 2003, but any generic FORTRAN compiler should cope with this.)

Running GEIHIT

To run the program, type geihit and respond to the prompts.

A typical run might be (user responses, <CR> indicates Return/Enter key)

geihit R-GEIHIT: Running program GEIHIT v4.00 [1] GEISA 2015 input file: line_GEISA2015_asc_gs08_v1.0_all [2] HITRAN output file: geisa.par Include non-HITRAN mol/iso? (Y/N) [=N]: Y I-HITMOL: Assign HITRAN Mol,Iso ID=62 1 to GEISA Mol,Iso=HNC 142 [3] I-HITMOL: Assign HITRAN Mol,Iso ID=23 4 to GEISA Mol,Iso=HCN 224 I-GEIHIT: Line# 100000 6.996648 cm-1 I-GEIHIT: Line# 200000 10.781763 cm-1 I-GEIHIT: Line# 300000 14.669723 cm-1 ... I-HITMOL: Assign HITRAN Mol,Iso ID=51 1 to GEISA Mol,Iso=C3H4 341 ... I-HITMOL: Assign HITRAN Mol,Iso ID=63 1 to GEISA Mol,Iso=C6H6 266 ... I-HITMOL: Assign HITRAN Mol,Iso ID=61 1 to GEISA Mol,Iso=C3H8 221 ... I-HITMOL: Assign HITRAN Mol,Iso ID= 4 8 to GEISA Mol,Iso=N2O 556 ... I-GEIHIT: Line#3400000 1792.480720 cm-1 I-HITMOL: Assign HITRAN Mol,Iso ID=60 1 to GEISA Mol,Iso=GeH4 411 I-HITMOL: Assign HITRAN Mol,Iso ID=19 6 to GEISA Mol,Iso=OCS 634 I-GEIHIT: Line#3500000 1982.129400 cm-1 I-GEIHIT: Line#3600000 2111.540140 cm-1 I-HITMOL: Assign HITRAN Mol,Iso ID= 4 6 to GEISA Mol,Iso=N2O 458 I-HITMOL: Assign HITRAN Mol,Iso ID= 4 7 to GEISA Mol,Iso=N2O 548 I-GEIHIT: Line#3700000 2270.603842 cm-1 ... I-GEIHIT: Line#5000000 11437.821300 cm-1 W-GEIHIT: Summary of excluded lines ... H2CO 10 lines from 0.000 - 0.000 cm-1: invalid wavenumber NH3 12281 lines from 0.327 - 1515.168 cm-1: no air half-width data H2O 504 lines from 247.760 - 6676.146 cm-1: no T.Coeff data PH3 264 lines from 866.468 - 3490.690 cm-1: no air half-width data H2S 153 lines from 1100.120 - 4195.623 cm-1: no air half-width data SO2 5861 lines from 1301.624 - 1397.007 cm-1: no air half-width data STOP R-GEIHIT: Successful completion [4]
The program takes a few minutes to complete.


  1. The first line tells you which version (4.00) of the program is being executed
  2. Then follows the dialogue which asks for
    1. GEISA filename.
    2. HITRAN-type output filename
    3. Whether you want to include additional molecules and isotopologues in the output which are not standard in HITRAN 2016 (type 'Y' or 'y' if 'yes'; anything else, including <CR> in this case, interpreted as 'no').
  3. The program then prints a series of progress messages which will be one of the following
    I-GEIHIT: Line# ...
    a progress message every 100 000 input lines, with the associated wavenumber
    I-HITMOL: Assign HITRAN Mol,Iso ID= ... (only if non-HITRAN mol/iso selected for inclusion)
    Notification of assignment of non-standard HITRAN molecular,isotopic ID on first occurrence
    W-GEIHIT: Summary of excluded lines ...
    Then follows a summary for each molecule of number of lines excluded, wavenumber range spanned by excluded lines, and reason for exclusion.
  4. The program should end with the statement: STOP R-GEIHIT: Successful completion

GEISA v HITRAN Molecules

(This needs to be updated for HITRAN2020)
In most cases the GEISA format contains the equivalent HITRAN molecular and isotopologue ID, with values of (-9, 0) for (molecules, isotopologues) which are not recognised by HITRAN.

However GEISA 2015 doesn't know about the new additions for HITRAN 2016 so the GEIHIT program (specifically the subroutine HITMOL) explicitly sets HITRAN indices for the molecule, isotopologue combinations listed in the table on the right.

Note the use of '0', 'A' and 'B' in the HITRAN .par format for isotopologue#10, 11 and 12.

List of HITRAN2016 Molecules/Isotopes not recognised in GEISA2015
Molec Iso Molec Iso
CO2 838 2 0
CO2 738 2 A
CO2 737 2 B
C2N2 224 48 1

If you type 'Y' to the prompt for non-HITRAN species the new assignments are listed in the table on the right (as well as in the I-HITMOL messages generated through the run).

The new molecule# assignments are somewhat arbitary: 51 was chosen for C3H4 since it is the number assigned to this number in the new Gamache TIPS data (which extends the HITRAN molecular numbering up to 53), and the other molecules, which are not in the TIPS data, just assigned #60 onwards.

Isotopologue assignments are more meaningful and represent decreasing order of abundance (#1 = most common isotopologue). For the new molecules, GEISA data only contains the main isotopologue.

Edit the subroutine HITMOL if you want to change these assignments.

List GEISA2015 Molecules/Isotopes not defined in HITRAN2016
GEISA Assigned
Molec Iso Molec Iso
N2O 458 4 6
N2O 548 4 7
N2O 556 4 8
OCS 634 19 6
HCN 224 23 4
C3H4 341 51 1
GeH4 411 60 1
C3H8 221 61 1
HNC 142 62 1
C6H6 266 63 1

Mapping from GEISA to HITRAN

The following table summarises how geihit derives the HITRAN fields [format] from GEISA data [format], including handling of GEISA missing data flags
Parameter Format GEISA Missing Notes
Molecule# I2 Field K Set in HITMOL See GEISA v HITRAN Molecules
Isotopologue# A1 Field L Set in HITMOL See GEISA v HITRAN Molecules
Wavenumber F12.6 Field A n/a Exclude line if value = 0.0
Intensity 1PE10.3 Field B n/a Truncate by 1 digit
Ein. A Coeff 1PE10.3 Field M Set to 0.0
Air Half-Width F5.3/F5.4 Field C Exclude Truncate by 1 digit if ≥ 1.0
Self Half-Width F5.4/F5.3/F5.2 Field N Set to Air Half-Width Truncate by 1,2 digits if ≥ 1,10
Lower Energy F10.4 Field D Set to -1.0
T-Coeff F4.2 Field F Exclude
Pressure Shift F8.6/F8.5 Field O Set to 0.0 Truncate by 1 digit if ≥ 10
Upper Vib A15 Field E1 Converted in GQFORM,NH3FORM
Lower Vib A15 Field E2 Converted in GQFORM,NH3FORM
Upper Rot A15 Field E3 Copied
Lower Rot A15 Field E4 Copied
Error Codes 6I1 Fields A',B',C',N',F',O' Set to 0 Converted in IDXACC
Ref Codes 12X undefined n/a set blank
Line Mixing 1X undefined n/a set blank
Upper Wgt F7.1 undefined n/a set 0.0
Lower Wgt F7.1 undefined n/a set 0.0

Version History

v4.00 (09AUG18)
Rewritten for GEISA 2015 to HITRAN 2016. Also converted from F77 to F90.
v3.11 (05AUG15)
Change '$' in WRITE statements to avoid gfortran warnings
v3.10 (30SEP13)
Add option to write non-standard HITRAN molecules, isotopologues
v3.00 (30AUG13)
Rewritten for GEISA 2011 to HITRAN 2012
v2.10 (15DEC09)
Also convert GEISA 2009 to HITRAN 2004
v2.00 (20DEC07)
Convert GEISA 2003 to HITRAN 2004
v1.00 (14OCT00)
Original code.