如何在ubuntu16.04上安装编译WRF-Hydro5.2.0

如何在ubuntu16.04上安装WRF-Hydro

1. 安装包下载

WRF-Hydro使用单独从WRF-Hydro官网的进行安装,不使用WRF目录下的hydro模块进行处理,原因是后者相比之下会少一些提供的模板和数据等。

软件下载地址

  1. github下载:https://github.com/NCAR/wrf_hydro_nwm_public/releases/v5.2.0

  2. 官网下载:https://github.com/NCAR/wrf_hydro_nwm_public/archive/refs/tags/v5.2.0.tar.gz

提示:在安装WRF-Hydro5.2.0之前,需要先安装WRF4.5.0和WPS4.5.2。此外这里为了方便安装,这里已经打包整理好了教程中所有可能使用到的数据、软件和所需库,可点击百度网盘分享链接进行下载,这里下载完成后教程后面提到的下载可无需进行再次下载。
百度网盘分享链接:https://pan.baidu.com/s/1PMmrUYXGhvfm8jhYl4SJ1Q
提取码:6zwu

2. 所需库下载

在教程如何在ubuntu16.04上安装编译WRF4.5.2和WPS4.5.0 中netcdf安装版本为v4.1.3,该版本可通过一个安装包netcdf就将两者同时安装。安装更高版本的netcdf需要将c和fortran分开,先装netcdf-c才能装netcdf-fortran。所需安装库如下。

zlib-1.2.13

hdf5-1.14.3

curl-7.77.0

netcdf-c-4.9.2

netcdf-fortran-4.6.1

3. 安装及环境配置

3.1 环境预配置及说明

运用教程如何在ubuntu16.04上安装编译WRF4.5.2和WPS4.5.0中的netcdf环境版本为v4.1.3太低,不能运行WRF-Hydro,因此需要新建另一个netcdf环境。这里列出教程安装WRF后设置的有关WRF的环境,,作为参照。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
############################################################## WRF BEGIN ################################
export DIR=/home/root123/coding/WRF/Build_WRF/LIBRARIES
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64
export CFLAGS=-m64

## --------------- grib2 ----------------------------------------
# 安装WRF库时设置变量LDFLAGS和CPPFLAGS如下两行,安装完成后可注释
#export LDFLAGS=-L$DIR/grib2/lib
#export CPPFLAGS=-I$DIR/grib2/include
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include

## -------------- MPICH 3.0.4--------------------------------------
export PATH=$DIR/mpich/bin:$DIR/mpich/lib:$DIR/mpich/include:$PATH

## -------------- NETCDF BEGIN -----------------------
## ------------WRF 4.5.2 | WPS -----&& -----netcdf 4.1.3---------
export NETCDF=$DIR/netcdf
# 安装WRF库时设置变量LDFLAGS和CPPFLAGS如上设置,安装完成后注释,这里设置的变量
# LDFLAGS和CPPFLAGS主要用于运行WRF脚本使用,在安装库时请注释
export LDFLAGS=-L$NETCDF/lib
export CPPFLAGS=-I$NETCDF/include

export PATH=$DIR/netcdf/bin:$PATH
export PATH=$NETCDF:$NETCDF/bin:$PATH
export LIBS="-lnetcdf -lz"
export PATH=$NETCDF/lib/:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:${LD_LIBRARY_PATH}
export NETCDF_INC="$NETCDF/include"
export NETCDF_LIB="$NETCDF/lib"
export PATH=$NETCDF_LIB:$NETCDF_INC:$PATH

## ------------NETCDF END --------------------------------

export HDF5PATH=$NETCDF
export WRF_DIR=~/coding/WRF/Build_WRF/WRFV4.5.2
export WRFIO_NCD_NO_LARGE_FILE_SUPPORT=1


################################################ WRF END #########################################

本教程仅针对WRF-Hydro的安装教程和环境配置,所对应的netcdf版本为v4.9.2。

mpich库在教程如何在ubuntu16.04上安装编译WRF4.5.2和WPS4.5.0中已经安装并设置好环境变量,环境变量CC、CXX、FC、FCFLAGS、F77、FFLAGS、CFLAGS已经设置完成。其他相关变量也保持不变。因此仅需针对环境变量中的netcdf部分进行修改更新即可,安装库和配置环境变量前请将环境变量中的netcdf4.1.3部分注释,也就是将下面所示部分注释掉。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## ------------WRF 4.5.2 | WPS -----&& -----netcdf 4.1.3---------
export NETCDF=$DIR/netcdf
# 安装WRF库时设置变量LDFLAGS和CPPFLAGS如上设置,安装完成后注释,这里设置的变量
# LDFLAGS和CPPFLAGS主要用于运行WRF脚本使用,在安装库时请注释
export LDFLAGS=-L$NETCDF/lib
export CPPFLAGS=-I$NETCDF/include

export PATH=$DIR/netcdf/bin:$PATH
export PATH=$NETCDF:$NETCDF/bin:$PATH
export LIBS="-lnetcdf -lz"
export PATH=$NETCDF/lib/:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:${LD_LIBRARY_PATH}
export NETCDF_INC="$NETCDF/include"
export NETCDF_LIB="$NETCDF/lib"
export PATH=$NETCDF_LIB:$NETCDF_INC:$PATH

将WRF部分的netcdf4.1.3部分的环境变量设置完成后,即可开始安装。本次安装netcdf安装路径为/usr/local/netcdf4

3.2 安装zlib

将下载好的zlib压缩包拖入/usr/local/netcdf4/中进行解压,进入解压后的zlib文件夹,打开终端,输入以下命令进行安装。

1
2
3
4
./configure --prefix=/usr/local/netcdf4
make
make check
make install

安装完成后会在/usr/local/netcdf4这个目录下生成三个文件夹,lib,include,share

3.3 安装hdf5

将下载好的hdf5压缩包拖入/usr/local/netcdf4/中进行解压,进入解压后的hdf5文件夹,打开终端,输入以下命令进行安装。

1
2
3
4
./configure --prefix=/usr/local/netcdf4
make
make check
make install

3.4 安装curl

打开文件~/.bashrc,设置环境变量信息。设置以下两个环境变量前请将前面出现过的这两个变量注释掉。

1
2
3
# 设置以下两个环境变量前请将前面出现过的这两个变量注释掉
export LDFLAGS=-L/usr/local/netcdf4/lib
export CPPFLAGS=-I/usr/local/netcdf4/include

将下载好的curl压缩包拖入/usr/local/netcdf4/中进行解压,进入解压后的curl文件夹,打开终端,输入以下命令进行安装。

1
2
3
4
./configure --prefix=/usr/local/netcdf4
make
make check
make install

3.5 安装netcdf-c

将下载好的netcdf-c压缩包拖入/usr/local/netcdf4/中进行解压,进入解压后的netcdf-c文件夹,打开终端,输入以下命令进行安装。

1
2
3
4
./configure --prefix=/usr/local/netcdf4 --disable-dap
make
make check
make install

3.6 安装netcdf-fortran

打开文件~/.bashrc,设置环境变量信息。设置以下环境变量前请将前面出现过的该变量注释掉。

1
2
# 设置以下两个环境变量前请将前面出现过的这两个变量注释掉
export LD_LIBRARY_PATH=/usr/local/netcdf4/lib:${LD_LIBRARY_PATH}

将下载好的netcdf-fortran压缩包拖入/usr/local/netcdf4/中进行解压,进入解压后的netcdf-fortran文件夹,打开终端,输入以下命令进行安装。

1
2
3
4
./configure --prefix=/usr/local/netcdf4 --disable-dap
make
make check
make install

3.7 环境变量设置

添加环境变量如下。

1
2
export NETCDF=/usr/local/netcdf4
export PATH=$NETCDF:$NETCDF/bin:$PATH

此时netcdf v4.9.2安装完毕。通过source ~/.bashrc命令更新环境变量。通过nc-config --all查看安装信息和netcdf版本。该环境可支持WRF-Hydro的运行,也似乎支持WRF的运行。

*3.8环境变量代码优化

通过本教程安装了netcdf4.9.2用以编译运行WRF-Hydro,但是通过教程如何在ubuntu16.04上安装编译WRF4.5.2和WPS4.5.0可以知道系统中还存在netcdf4.1.3用于WRF的运行,为了方便两者的切换而不是频繁注释,特此定义了一个bool变量NETCDF_TYPE用以切换。NETCDF_TYPE变量控制netcdf版本,如果NETCDF_TYPE=1,则对应netcdf4.1.3;如果NETCDF_TYPE=2,则对应netcdf4.9.2。

*注意1:但是好像NETCDF_TYPE=1时,系统中的netcdf会指向/usr/include,netcdf v4.4,原因尚不清楚,但不影响使用。

*注意2:在编译运行WRF和WRF-Hydro时,可直接设置NETCDF_TYPE=2,也能保证二者运行。

完整WRF环境变量设置如下,与上面用以参照的环境变量相比,只更改了NETCDF部分的环境变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
############################################################## WRF BEGIN ################################
export DIR=/home/root123/coding/WRF/Build_WRF/LIBRARIES
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64
export CFLAGS=-m64

## --------------- grib2 ----------------------------------------
export LDFLAGS=-L$DIR/grib2/lib
export CPPFLAGS=-I$DIR/grib2/include
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include

## -------------- MPICH 3.0.4--------------------------------------
export PATH=$DIR/mpich/bin:$DIR/mpich/lib:$DIR/mpich/include:$PATH

## -------------- NETCDF BEGIN -----------------------
## 运行WRF和WPS时使用netcdf 4.1.3,运行WRF_Hydro时使用netcdf4.9.2。 !!!!!!只需要更改NETCDF_TYPE变量即可。
# 定义NETCDF_TYPE变量控制netcdf版本,如果NETCDF_TYPE=1,则对应netcdf4.1.3;如果NETCDF_TYPE=2,则对应netcdf4.9.2。
NETCDF_TYPE=1
if [ "$NETCDF_TYPE" -eq 1 ]; then
## ------------WRF 4.5.2 | WPS -----&& -----netcdf 4.1.3---------
export NETCDF=$DIR/netcdf
export LDFLAGS=-L$NETCDF/lib
export CPPFLAGS=-I$NETCDF/include
export PATH=$DIR/netcdf/bin:$PATH
export PATH=$NETCDF:$NETCDF/bin:$PATH
export LIBS="-lnetcdf -lz"
export PATH=$NETCDF/lib/:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:${LD_LIBRARY_PATH}
export NETCDF_INC="$NETCDF/include"
export NETCDF_LIB="$NETCDF/lib"
export PATH=$NETCDF_LIB:$NETCDF_INC:$PATH
fi
if [ "$NETCDF_TYPE" -eq 2 ]; then
## ------------WRF-Hydro 5.2.0 ------&& ----netcdf 4.9.2---------
export LDFLAGS=-L/usr/local/netcdf4/lib
export CPPFLAGS=-I/usr/local/netcdf4/include
export LD_LIBRARY_PATH=/usr/local/netcdf4/lib:${LD_LIBRARY_PATH}
export NETCDF=/usr/local/netcdf4
export PATH=$NETCDF:$NETCDF/bin:$PATH
export NETCDF_INC="$NETCDF/include"
export NETCDF_LIB="$NETCDF/lib"
fi

## ------------NETCDF END --------------------------------
# ---------------------------------------------------------------------------------

export HDF5PATH=$NETCDF
export WRF_DIR=~/coding/WRF/Build_WRF/WRFV4.5.2
export WRFIO_NCD_NO_LARGE_FILE_SUPPORT=1
################################################ WRF END #########################################

4. 构建、编译WRF-Hydro

根据下载安装包下中/wrf_hydro_nwm_public/trunk/NDHMS下的README.build.txt文件进行编译。

1
2
3
4
./configure
./compile_offline_Noah.sh setEnvar.sh
OR
./compile_offline_NoahMP.sh setEnvar.sh

输出结果包含Make was successful则说明编译运行成功。

参考文档

ubuntu学习_2:ubuntu中安装netcdf4教程

附加网址推荐

zlib官网
zlib github下载
curl官网下载
netcdf官网
netcdf-c github下载
netcdf-fortran github下载
hdf5官网下载


如何在ubuntu16.04上安装编译WRF-Hydro5.2.0
https://singyutang.github.io/2024/03/23/如何在ubuntu16-04上安装编译WRF-Hydro5-2-0/
作者
SingyuTang
发布于
2024年3月23日
许可协议