The Local Ensemble Transform Kalman Filter

The Local Ensemble Transform Kalman Filter (LETKF) is a state-of-the-art approach to data assimilation. It is the result of a collaboration between ASU researcher Eric Kostelich and the Weather Chaos team at the University of Maryland.

This page provides links to download a version of the code that works with the April 2004 version of the Global Forecast System, which is the global weather forecast model of the National Centers for Environmental Prediction.

About the code

There are two versions of the code. The "reference" version uses shell scripts to distribute the work among the processors. We have found it to be useful for development and testing, as an MPI-aware debugger is not required. The "production" version uses MPI.

Attribution requests

If you use this code or derivatives thereof for research purposes, I would appreciate being acknowledged in resulting research papers and would like to receive a PDF or paper copy. (At the least, please let me know the citation. This information is helpful to me and to our funding agencies.)

Compiling and running the code

The codes are written in Fortran 95 with TR 15581 (allocatable array components) extensions. The latter is a part of the current Fortran 2003 standard, and the code as a whole should be fully compliant with the Fortran 2003 standard with minor exceptions as noted in the source code.

The code is known to compile and run with the following Fortran compilers:

The following Fortran compilers are known not to work because they encounter internal errors: I have not tested the Pathscale or Absoft compilers.

Reports of compilation problems and incorrect or inconsistent results are appreciated.

LETKF source code (MPI version, updated July 1, 2008)

See comments below regarding attribution.

LETKF source code (MPI version, updated June 15, 2008)

See comments below regarding attribution.

LETKF source code (Older reference version)

The source code is provided as gzipped tar files. There are two sets:

Edit make.inc first to uncomment the lines that are approprite for your compiler and comment out all other lines. Then build the software with make -r.