GEIHIT

Latest: GEIHIT v4.20 (04AUG25) [Fortran90] [Python]
05DEC25
Contents

Introduction

I'm aware that there is a 2000 release of GEIHIT and, soon, a new release of HITRAN with additional molecules. I hope to get around to modifying these programs to work with the new data in the next month or so - 21SEP25.

GEIHIT is a Fortran program and Python function 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

Fortran: 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.)

Python: Download the self-contained source code [geihit.py]
See source code header for usage.

Running GEIHIT

To run the Fortran program, type geihit (or ./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 GEISA 2015 input file: line_GEISA2015_asc_gs08_v1.0_all 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 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
The program takes a few minutes to complete.

Notes

  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

  • HITRAN2024 defines line-transition parameters for 61 different molecules [List]
  • GEISA 2020 defines line-transition parameters for 58 molecules [List] of which 3 (CH3D, C2HD and HDO) are deuterium isotopologues, leaving 55 different molecules.
  • 49 molecules are common to both HITRAN2024 and GEISA 2020
  • For molecules common to both, there are often differences in the number of isotopologues.
If you type 'Y' to the prompt for non-HITRAN species then the molecules with ID=62 and higher (from the table on the right) will also be included with these indices.

In the case of GEISA isotopologues not defined in HITRAN2024, these are assigned sequential indices continuing from the end of the HITRAN list.

HITRAN v GEISA Molecules and updates
ID Molec HITRAN GEISA
34 O 1996 -
37 HOBr 1996 -
43 C4H2 2012 2011
44 HC3N 2012 2011
45 H2 2012 -
46 CS 2012 -
47 SO3 2012 2015
48 C2N2 2016 2011
49 COCl2 2016 -
50 SO 2020 -
51 CH3F 2020 2020
52 GeH4 2020 2011
53 CS2 2020 -
54 CH3I 2020 2020
55 NF3 2020 -
56 H3+ 2024 -
57 CH3 2024 -
58 S2 2024 -
59 COFCl 2024 2020
60 HONO 2024 2020
61 ClNO2 2024 -
62 C3H4 - 2011
70* C3H8 - 2011
71* HNC - 2011
72* C6H6 - 2011
73* RuO4 - 2020
74* H2C3H2 - 2020

Index used by TIPS & RFM
* Index used by RFM only

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, with the names of the Python methods/Fortran subroutines that handle specific conversions.
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.20 (04AUG25)
Allow for rounding errors when evaluating HITRAN error indices.
Python version added - results should be identical to Fortran version apart from error indices which occasionally differ by 1 from rounding errors.
v4.10 (31MAR25)
Updated for new molecules/isotopes in HITRAN 2020.
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.