Revision Summary of Changes Date

2.0

LISF Public 7.5.0 release

Jan 11, 2024

1.1

LISF 557WW 7.5.0 release

Nov 30, 2022

1.0

LISF Public 7.4.0 release

Jun 14, 2022

1. Introduction

This document provides guidance on installing the Land Information System Framework (LISF) and its dependencies. It also provides technical information regarding supported environments.

Please see the LDT Users’ Guide, the LIS Users’ Guide, and/or the LVT Users’ Guide for specific information regarding installing LDT, LIS, and/or LVT, respectively.

Important

LISF is developed on Linux/Unix platforms. Its build process expects a case sensitive file system. Please make sure that you unpack and/or git clone the LISF source code into a directory within a case sensitive file system. In particular, if you are using LISF within a Linux-based virtual machine hosted on a Windows or Macintosh system, do not compile/run LISF from within a shared folder. Move the LISF source code into a directory within the virtual machine.

Warning

The above may be true for some of LISF’s dependencies. It is recommended to install LISF’s dependencies within a case sensitive file system.

2. Development Environments

2.1. Supported systems

LISF and its dependencies have been compiled and run on Linux PC (Intel/AMD based) systems, Cray systems, and IBM Power9 systems.

These instructions expect that you are using such a system. In particular you need:

2.1.1. Linux

Compilers
  • Intel Fortran Compiler versions 2021 or 2022 with corresponding Intel C Compiler along with GNU’s Compiler Collection version 11.2.0 or 12.1.0.

  • or GNU’s Compiler Collection version 11.2.0, both gfortran and gcc.

Tools
  • GNU’s make, gmake, version 3.77 or 3.81

  • Perl, version 5.10

  • Python, version 3.6

Important
The use of Python 2.7 for building LISF is now deprecated. See Section Python support.

2.1.2. Cray/Linux

Compilers
  • Intel Fortran Compiler version 2021 or 2022 with corresponding Intel C Compiler, along with GNU’s Compiler Collection version 11.2.0 or 12.1.0.

  • or Cray Compiler Environment (cce) version 14.0.0, along with GNU’s Compiler Collection version 11.2.0.

Tools
  • GNU’s make, gmake, version 3.77 or 3.81

  • Perl, version 5.10

  • Python, version 3.6

Important
The use of Python 2.7 for building LISF is now deprecated. See Section Python support.

2.1.3. IBM/Linux

Compilers
  • GNU’s Compiler Collection version 11.0, both gfortan and gcc.

Tools
  • GNU’s make, gmake, version 3.77 or 3.81

  • Perl, version 5.10

  • Python, version 3.6

Important
The use of Python 2.7 for building LISF is now deprecated. See Section Python support.

2.1.4. Python support

The use of Python 2.7 for building LISF is now deprecated. If you only have Python 2.7, then edit the following four files

  • ldt/make/makedep.py

  • lis/make/makedep.py

  • lis/make/plugins.py

  • lvt/make/makedep.py

changing

#!/usr/bin/env python3

to

#!/usr/bin/env python

Future releases will depend on Python 3 only.

3. Dependencies

This section documents the required and optional libraries needed to build LISF (LDT, LIS, and LVT).

3.1. Required Software Libraries

3.1.1. Message Passing Interface (MPI)

Note
LIS-only dependency

LIS may be compiled and run serially for small experiments, but, in general, you will want to run LIS with multiple processes (i.e., in parallel), making MPI support a practical requirement.

Note
LIS does not support OpenMP style parallelization. There is some experimental support within LIS, but you should not enable it.
Note
LDT does not fully support running in parallel with MPI.
Note
LVT does not support running in parallel with MPI.

3.1.2. Earth System Modeling Framework (ESMF) version 8.1.1 (or higher)

Please read the ESMF User’s Guide for details on installing ESMF with MPI support and without MPI support (“mpiuni”).

3.1.3. ecCodes version 2.19.0 (or higher)

Note
ecCodes is a requirement for LVT, but, given that many of the datasets used in LTD and LIS are in GRIB format, this library is a practical requirement for LISF.

3.1.4. NetCDF either version 3.6.3 or version 4.7.4 (or higher)

Please read the on-line documentation for details on installing NetCDF.

Additional notes for NetCDF 4:

You must also choose whether to compile with compression enabled. Compiling with compression enabled requires HDF 5 and zlib libraries. To enable compression, add --enable-netcdf-4 to the configure options. To disable compression, add --disable-netcdf-4 to the configure options.

An example of installing NetCDF 4 without compression:

% ./configure --prefix=$HOME/local/netcdf-4.7.4 --disable-netcdf-4
% gmake
% gmake install

An example of installing NetCDF 4 with compression:

% CPPFLAGS=-I$HOME/local/hdf5/1.12.0/include \
> LDFLAGS=-L$HOME/local/hdf5/1.12.0/lib \
> ./configure --prefix=$HOME/local/netcdf/4.7.4 --enable-netcdf-4
% gmake
% gmake install

You must also download the netcdf-fortran-4.5.3.tar.gz file. First install the NetCDF C library, then install the NetCDF Fortran library. Again, please read the on-line documentation for more details.

An example of installing the NetCDF 4 Fortran library:

% LD_LIBRARY_PATH=$HOME/local/netcdf/4.7.4/lib:$LD_LIBRARY_PATH \
> CPPFLAGS=-I$HOME/local/netcdf/4.7.4/include \
> LDFLAGS=-L$HOME/local/netcdf/4.7.4/lib \
> ./configure --prefix=$HOME/local/netcdf/4.7.4
% gmake
% gmake install

3.2. Optional Software Libraries

The following libraries are not required to compile LISF. They are used to extend the functionality of LISF.

3.2.1. HDF

You may choose either HDF version 4, HDF version 5, or both.

HDF is used to support a number of remote sensing datasets.

If you wish to use MODIS snow cover area observations or NASA AMSR-E soil moisture observations, then you need HDF 4 support.

If you wish to use ANSA snow cover fraction observations, then you need HDF 5 support.

If you wish to use PMW snow observations, then you need both HDF 4 and HDF 5 support.

HDF4 4.2.15 (or higher)

If you choose to have HDF version 4 support, please download the HDF source from https://portal.hdfgroup.org/display/support/Download+HDF4 and compile the source to generate the HDF library. Make sure that you configure the build process to include the Fortran interfaces by adding the --enable-fortran option to the configure command.

Note that HDF4 contains its own embedded version of NetCDF. You must disable this support by adding the --disable-netcdf option to the configure command.

HDF5 1.12.0

If you choose to have HDF version 5 support, please download the HDF source from http://www.hdfgroup.org/HDF5/ and compile the source to generate the HDF library. Make sure that you configure the build process to include the Fortran interfaces by adding the --enable-fortran option to the configure command.

3.2.2. HDF-EOS2 version 2.20v1.00 (or higher)

Note
This library depends on HDF4.

3.2.3. GDAL version 2.4.4

Note
LDT and LVT dependency
Important
When installing the GDAL library, you must also install FortranGIS version 2.6 (or higher) from http://fortrangis.sourceforge.net. This library provides Fortran interfaces to the GDAL library.

3.2.4. GeoTIFF version 1.6.0 (or higher)

Note
LDT-only dependency

3.2.5. JCSDA CRTM version 2.0.2

Note
LIS-only dependency

If you wish to enable LIS’ RTM support, then you must install the CRTM library from the Joint Centers for Satellite Data Assimilation (JCSDA). First go to http://ftp.emc.ncep.noaa.gov/jcsda/CRTM/Repository/ and fill out the CRTM.Subversion_Account_Request.pdf form. Once you have access to their Subversion repository, checkout revision 9604 of the trunk.

Please create a directory outside of the LIS source code to checkout the CRTM library into. Then, within that new directory, run:

% svn checkout -r 9604 https://svnemc.ncep.noaa.gov/projects/crtm/trunk

Then you must copy the LIS specific updates into this checked out CRTM code. See $WORKING/lib/lis-crtm/README.

Next compile and install the CRTM library:

% source Set_CRTM_Environment.sh
% cd src
% source configure/ifort.setup
# Of course, choose the setup script that is appropriate
# for your environment.
% gmake
% gmake install

3.2.6. LIS-CMEM library

Note
LIS-only dependency

If you wish to enable LIS’ RTM support, then you must manually compile an included library.

% cd $WORKING/lib/lis-cmem3
% LIS_ARCH=linux_ifc make
Note
If using the GNU compilers, set LIS_ARCH to linux_gfortran.
Important
linux_ifc and linux_gfortran are the only supported architectures.

3.2.7. LIS-CRTM-PROFILE-UTILITY library

Note
LIS-only dependency

If you wish to enable LIS’ RTM support, then you must manually compile an included library.

% cd $WORKING/lib/lis-crtm-profile-utility
% LIS_ARCH=linux_ifc make
% LIS_ARCH=linux_ifc make install
Note
If using the GNU compilers, set LIS_ARCH to linux_gfortran.
Important
linux_ifc and linux_gfortran are the only supported architectures.

3.3. Second order dependencies

3.3.1. OpenJPEG version 2.4.0 (or higher)

Note
Required by ecCodes and GDAL.

3.3.2. SQLite3 version 3.35.0 (or higher)

Note
Required by PROJ.

3.3.3. PROJ 7.1

Note
Required by GeoTIFF and GDAL.

3.3.4. PETSc 3.16.1

Note
Required by RAPID router

3.4. Notes

To install these libraries, follow the instructions provided at the various URL listed above. These libraries have their own dependencies, which should be documented in their respective documentation.

Please note that your system may have several different compilers installed. You must verify that you are building these libraries with the correct compiler. You should review the output from the configure, make, etc. commands. If the wrong compiler is being used, you may have to correct your $PATH environment variable, or set the $CC and $FC environment variables, or pass additional settings to the configure scripts. Please consult the installation instructions provided at the various URL listed above for each library.

If you wish to install all the libraries (required and optional, excluding JCSDA CRTM, LIS-CMEM, and LIS-CRTM-PROFILE-UTILITY), here is the recommended order:

  1. MPI (optional)
    ESMF has an optional dependency on MPI.

  2. HDF 5 (optional)
    NetCDF has an optional dependency on HDF 5.

  3. NetCDF (required)
    ESMF has an optional dependency on NetCDF.
    ecCodes has an optional dependency on NetCDF.

  4. openJPEG (required)
    ecCodes depends on openJPEG.

  5. ecCodes (required)

  6. ESMF (required)

  7. HDF 4 (optional)
    HDF-EOS2 depends on HDF 4.

  8. HDF-EOS2 (optional)

  9. SQLite3 (optional)
    PROJ depends on SQLite3

  10. PROJ (optional)
    GeoTIFF and GDAL depend on PROJ

  11. GeoTIFF (optional)

  12. GDAL (optional)

  13. FortranGIS (optional)
    Required to use GDAL

  14. PETSc (optional)
    Required to use RAPID router

Note that due to the mix of programing languages (Fortran and C) used by LIS, you may run into linking errors when building the LIS executable. This is often due to (1) the Fortran compiler and the C compiler using different cases (upper case vs. lower case) for external names, and (2) the Fortran compiler and C compiler using a different number of underscores for external names.

4. Platforms

The following tables provide some specific platforms with compiler and library versions that LISF has been tested with. See Appendix Additional platforms for more.

Table 1. SUSE Linux Enterprise Server 12.3
Library Version

GNU compiler

11.2.0

Intel compiler

2021.4.0

Intel MPI

2021.4.0

HDF 5

1.12.1

NetCDF

4.8.1

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.23.0

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00

SQLite3

3.35.0

PROJ

9.1.0

GeoTIFF

1.7.0

GDAL

3.5.2

FortranGIS

2.6

PETSc

3.16.1

JPEG

8d

Table 2. SUSE Linux Enterprise Server 12.3
Library Version

GNU compiler

11.2.0

Intel MPI

2021.4.0

HDF 5

1.12.1

NetCDF

4.8.1

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.23.0

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

3.0

SQLite3

3.35.0

PROJ

9.1.0

GeoTIFF

1.7.0

GDAL

3.5.2

FortranGIS

2.6

PETSc

3.16.1

JPEG

8d

Table 3. Cray/SUSE Linux Enterprise Server 15.2
Library Version

GNU compiler

7.5.0

Intel compiler

2021.1

Cray MPI

8.1.5

HDF 5

1.12.0

NetCDF

4.7.4

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.19.1

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00

SQLite3

3.35.0

PROJ

7.1.1

GeoTIFF

1.6.0

GDAL

2.4.4

FortranGIS

2.6

Table 4. Cray/SUSE Linux Enterprise Server 15.2
Library Version

GNU compiler

11.2.0

Cray compiler

12.0.3

Cray MPI

8.1.9

HDF 5

1.12.0

NetCDF

4.7.4

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.22.0

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00

SQLite3

3.35.0

PROJ

7.1.1

GeoTIFF

1.6.0

GDAL

2.4.4

FortranGIS

2.6

Table 5. IBM Power9/Red Hat Enterprise Linux Server 8.2
Library Version

GNU compiler

11.1.0

SPECTRUM MPI

10.4.0.3-20210112

HDF 5

1.12.1

NetCDF

4.8.1

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.23.0

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00

SQLite3

3.35.0

PROJ

7.1.1

GeoTIFF

1.7.0

GDAL

2.4.4

FortranGIS

2.6

JPEG

9d

Appendix A: Additional platforms

Table 6. SUSE Linux Enterprise Server 12.3
Library Version

GNU compiler

11.2.0

Intel compiler

2021.4.0

Intel MPI

2021.4.0

HDF 5

1.12.1

NetCDF

4.8.1

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.23.0

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00

SQLite3

3.35.0

PROJ

7.1.1

GeoTIFF

1.7.0

GDAL

2.4.4

FortranGIS

2.6

JPEG

8d

Table 7. SUSE Linux Enterprise Server 12.3
Library Version

GNU compiler

11.2.0

Intel MPI

2021.4.0

HDF 5

1.12.1

NetCDF

4.8.1

NetCDF-Fortran

4.5.3

openJPEG

2.4.0

ecCodes

2.23.0

ESMF

8.1.1

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00 Not installed; failed make check

SQLite3

3.35.0

PROJ

7.1.1

GeoTIFF

1.7.0

GDAL

2.4.4

FortranGIS

2.6

JPEG

8d

Table 8. Red Hat Enterprise Linux Server 7.8
Library Version

GNU compiler

9.2.0

Intel compiler

19.0.5.281 20190815 (2019.5.281)

HDF 5

1.12.0

NetCDF

4.7.4

NetCDF-Fortran

4.5.3

openJPEG

2.3.1

ecCodes

2.18.0

Intel MPI

2019.5.281

ESMF

7.1.0r

HDF 4

4.2.15

HDF-EOS2

2.20v.1.00

libgeotiff

1.6.0

GDAL

2.4.4

FortranGIS

2.6

sqlite3

3.33.0

tiff

4.1.0

proj

7.1.1

Table 9. Red Hat Enterprise Linux Server 7.8
Library Version

GNU compiler

7.3.0

Intel compiler

19.0.4.243 20190416 (2019.4.243)

HDF 5

1.10.5

NetCDF

4.6.3

NetCDF-Fortran

4.4.5

JasPer

2.0.14

ecCodes

2.12.0

Intel MPI

2019.4.243

ESMF

7.1.0r

HDF 4

4.2.14

HDF-EOS2

2.20v.1.00

libgeotiff

1.4.3

GDAL

2.4.1

FortranGIS

2.4

Table 10. Red Hat Enterprise Linux Server 7.8
Library Version

GNU compiler

7.3.0

Intel compiler

2019.2.057

HDF 5

1.10.5

NetCDF

4.6.3

NetCDF-Fortran

4.4.5

JasPer

2.0.14

ecCodes

2.12.0

Intel MPI

2019.2.057

ESMF

7.1.0r

HDF 4

4.2.14

HDF-EOS2

2.20v.1.00

libgeotiff

1.4.3

GDAL

2.4.1

FortranGIS

2.4

Table 11. SUSE Linux Enterprise Server 12.3
Library Version

GNU compiler

9.2.0

Intel compiler

19.1.3.304

HDF 5

1.10.1

NetCDF

4.5.0

NetCDF-Fortran

4.4.4

openJPEG

2.3.0

ecCodes

2.7.0

Intel MPI

20.0.0.166

ESMF

7.1.0r

HDF 4

4.2.13

HDF-EOS2

2.19v.1.00

JPEG

8d

GEOTIFF

1.4.3

GDAL

2.4.1

FortranGIS

2.4

Table 12. Cray XC40
Library Version

GNU compiler

7.3.0

Intel compiler

18.0.3 20180410 (18.0.3.222)

HDF 5

1.10.5

NetCDF

4.6.3

NetCDF-Fortran

4.4.5

JasPer

2.0.14

ecCodes

2.12.0

Cray MPICH

7.5.3

ESMF

7.1.0r

HDF 4

4.2.14

HDF-EOS2

2.20v.1.00

libgeotiff

1.4.3

GDAL

2.4.1

FortranGIS

2.4

libtiff

4.0.6

libjbig

2.1

liblzma

5.2.2

Table 13. Cray XC40
Library Version

Intel compiler

17.0.2.174

HDF 5

1.8.18

NetCDF

4.4.1.1

NetCDF-Fortran

4.4.4

JasPer

2.0.14

ecCodes

2.7.0

Cray-MPICH

7.5.3

ESMF

6.3.0rp1

HDF 4

4.2.12

HDF-EOS2

2.19v.1.00

Table 14. Cray XC40
Library Version

Intel compiler

16.0.2.181

HDF 5

1.8.18

NetCDF

4.4.1.1

NetCDF-Fortran

4.4.4

JasPer

1.900.19

GRIB-API

1.19.0

Cray-MPICH

7.2.4

ESMF

6.3.0rp1

HDF 4

4.2.12

HDF-EOS2

2.19v.1.00

Table 15. Cray XC40
Library Version

Intel compiler

15.0.2.164

Cray-HDF 5

1.8.14

Cray-NetCDF

4.3.3.1

JasPer

1.900.1

GRIB-API

1.14.0

Cray-MPICH

7.2.5

ESMF

6.2.0

HDF 4

4.2.11

HDF-EOS2

2.19v.1.00

Table 16. Red Hat Enterprise Linux Server 6.8
Library Version

Intel compiler

15.1.133

HDF 5

1.8.15

NetCDF

4.3.3.1

NetCDF-Fortran

4.4.2

JasPer

1.900.1

GRIB-API

1.12.3

Intel MPI

5.0.3.048

ESMF

5.2.0rp3

HDF 4

4.2.11

HDF-EOS2

2.19v.1.00

Table 17. Red Hat Enterprise Linux Server 6.7
Library Version

Intel compiler

14.0.2

HDF 5

1.8.14

NetCDF

4.3.1.1

NetCDF-Fortran

4.2

JasPer

1.900.1

GRIB-API

1.12.3

Open MPI

1.8.4

ESMF

5.2.0rp3

HDF 4

4.2.11

HDF-EOS2

2.19v.1.00

Table 18. Red Hat Enterprise Linux Server 6.7
Library Version

Intel compiler

14.0.2

HDF 5

1.8.14

NetCDF

4.3.1.1

NetCDF-Fortran

4.2

JasPer

1.900.1

GRIB-API

1.12.3

Intel MPI

4.1.3

ESMF

5.2.0rp3

HDF 4

4.2.11

HDF-EOS2

2.19v.1.00

Table 19. SUSE Linux Enterprise Server 11.3
Library Version

GNU compiler

7.3.0

HDF 5

1.10.1

NetCDF

4.5.0

NetCDF-Fortran

4.4.4

JasPer

2.0.14

ecCodes

2.7.0

Intel MPI

18.0.3.222

ESMF

7.1.0r

HDF 4

NA (does not compile)

HDF-EOS2

NA (does not compile)

Table 20. SUSE Linux Enterprise Server 11.3
Library Version

Intel compiler

18.0.3.222

HDF 5

1.10.1

NetCDF

4.5.0

NetCDF-Fortran

4.4.4

JasPer

2.0.14

ecCodes

2.7.0

Intel MPI

18.0.3.222

ESMF

7.1.0r

HDF 4

4.2.13

HDF-EOS2

2.19v.1.00

Table 21. SUSE Linux Enterprise Server 11.3
Library Version

GCC compiler

4.9.2

HDF 5

1.8.14

NetCDF

4.3.3.1

NetCDF-Fortran

4.2

JasPer

1.900.1

GRIB-API

1.12.3

Open MPI

1.8.4

ESMF

5.2.0rp3

HDF 4

4.2.11

HDF-EOS2

2.19v.1.00

Table 22. SUSE Linux Enterprise Server 11.3
Library Version

Intel compiler

14.0.3.174

HDF 5

1.8.14

NetCDF

4.3.3.1

NetCDF-Fortran

4.2

JasPer

1.900.1

GRIB-API

1.12.3

Intel MPI

5.0.3.048

ESMF

5.2.0rp3

HDF 4

4.2.11

HDF-EOS2

2.19v.1.00