Kspectrum - molecular absorption spectra for arbitrary gas mixtures.

Download Kspectrum 1.3

Kspectrum computes the synthetic absorption spectrum for a gas mixture in arbitrary thermodynamic conditions (pressure, temperature and molar composition) from public spectroscopic databases. The main and only purpose of the code is to produce high-resolution absorption spectra for a given set of thermodynamic conditions; in particular, Kspectrum will NOT perform the following tasks:

k001
Absorption spectrum for terrestrial air, at ground level, for a Mid-Latitude Summer standard atmospheric profile. The absorption coefficient is also provided for each one of the three molecular species used in the gas mixture (logscale).

Spectroscopic databases

Kspectrum uses the HITRAN spectroscopic database in order to retrieve transition parameters (versions 2004, 2008 and 2012). Additionally, it can use the HITEMP-2010 and CDSD-4000 databases (respectively for water and carbon dioxide) at high-temperature levels. Further development would be required for additional databases (HITRAN-2016 ? GEISA ?)

Reference results

The main idea behind Kspectrum was initially to develop a code that would not need to use numerical simplifications such as a line profile truncation (assuming the distant line-wing profile is well known, which is obviously not the case). The resulting code was therefore capable of adding the contribution of every known transition at every wavenumber, in order to produce a value of the absorption coefficient with a known accuracy; also, a custom spectral discretisation algorithm was implemented in order to produce a non-uniform spectral grid according to a second accuracy criteria. Further versions quickly acquired the possibility to perform a line-wings truncation and use a specified constant spectral step, but the original algorithms that give the possibility to compute reference results (in the sense that a numerical accuracy is provided over resulting spectra) are still available.

tau-cumul
Plot of the atmospheric cumulated optical depth as a function of wavenumber, for a clear-sky Mid-Latitude Summer standard terrestrial atmospheric profile. Two kspectrum results are provided: using a 25 inverse centimeters truncation of the line profile, and without any truncation. The same result (with a truncation) obtained from the 4A code is also presented.

Physical models

This code can take into account the Lorentz and the Voigt line profiles, as well as common sub-lorentzian corrective profiles. The isotopic composition can be specified, making this code suitable for non-terrestrial applications. The code was mainly thought for thermal infrared applications, but absorption spectra can be produced for any spectral range as long as transition parameters are available. As a general rule, Kspectrum was designed to remain as polyvalent as possible; one immediate disadvantage is that special sources of opacity, such as collision-induced absorption or continua, should be computed separately for any given application. Also, line-mixing processes have not yet been taken into consideration, and require further developments.

Some neat features

Every time-consuming step of the computation has been parallelised, even though the parallel architecture is far from optimal and should require a major revision: the computation time does not scale very well with the number of processes because of inter-processes communication, and also it was not thought for multi-node clusters. But at least Kspectrum will run faster on a reasonably good single node (approx. 20 cores). Also, the code has been implemented with the obsessions of:

Installation

You will have to download both the .tgz file and the installation script, and place both files in the same directory. Then run the installation script. This will uncompress the archive, compile and run a small program that will generate an example composition file (for Venus' atmosphere). The installation script will also try to link Line-by-Line spectroscopic databases to your new installation of Kspectrum, but will most probably fail if you are not a frequent Kspectrum user, and you will have to read the documentation in order to link LBL databases yourself (and probably download then first if you have not already done so). Please contact us if you want a specific setup script for your machine so that the linking step is performed when you download the next version.

Prerequisites: all you need is a fortran compiler. We are using gfortran for development, but it should also work with other fortran compilers (ifort, pgfortran, etc.). You should export the name of your fortran compiler into the F77 environment variable; for instance, using the bash interpreter:

export F77=gfortran

Then you can try to compile Kspectrum: go to the main Kspectrum directory, then use the make all command to compile. The most common sources of failure can be fixed by editing the "Makefile" file in order to check compilation options (and more specifically options related to the target architecture and optimisations). Whenever you modify a source file, you can re-compile using the make all command. But in the case you have to modify an include file, you will have to erase all existing object files first using the make clean command, before recompiling from scratch using the make all command again.

License

Kspectrum is free software released under the CeCILL v2.1 license. You are welcome to redistribute it under certain conditions; refer to the license for details.