Revision | Summary of Changes | Date |
---|---|---|
2.1 |
LISF Public 7.5.1 release |
Jul 9, 2024 |
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 |
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.
-
vendor supplied (e.g., Intel MPI)
-
MPICH version 3.3 (https://www.mpich.org/)
-
Open MPI version 4 (https://www.open-mpi.org/)
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 |
URL: https://gdal.org
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.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:
-
MPI (optional)
ESMF has an optional dependency on MPI. -
HDF 5 (optional)
NetCDF has an optional dependency on HDF 5. -
NetCDF (required)
ESMF has an optional dependency on NetCDF.
ecCodes has an optional dependency on NetCDF. -
openJPEG (required)
ecCodes depends on openJPEG. -
ecCodes (required)
-
ESMF (required)
-
HDF 4 (optional)
HDF-EOS2 depends on HDF 4. -
HDF-EOS2 (optional)
-
SQLite3 (optional)
PROJ depends on SQLite3 -
PROJ (optional)
GeoTIFF and GDAL depend on PROJ -
GeoTIFF (optional)
-
GDAL (optional)
-
FortranGIS (optional)
Required to use GDAL -
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.
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 |
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 |
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 |
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 |
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
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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) |
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 |
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 |
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 |