Bootstrap

小白学超算之WRF-Hydro的环境部署与模型测试

目录

一、检查编译器

二、依赖安装

(1)创建目录 

(2)下载依赖

(3)安装依赖 

①mpich安装

②zlib安装

③hdf5安装

④netcdf_c安装

⑤netcdf_fortran安装

三、WRF-Hydro的安装

四、WRF-Hydro的运行 

参考


这是第一个实战项目,我们将安装编译 WRF-Hydro 模型,并用官网测试数据集运行模型。在此,也默认虚拟机等必要环境都已配备完毕,接下来我将以VMware虚拟机环境下的 CentOS 7 系统为例,并搭配 MobaXterm 远程计算工具箱进行 WRF-Hydro 的环境部署与模型测试。

一、检查编译器

WRF需要用到 gcc  g++ gfortran ,使用下面的三个指令来检查是否已安装。

which gcc
which g++
which gfortran

如果已安装则会回显指令所在位置, 若提示无法找到该命令,则用以下命令进行安装。

yum -y install gcc gcc-c++ gcc-gfortran

所有的指令都默认位于 /usr/bin 目录下,如下图。

二、依赖安装

(1)创建目录 

首先我们在用户home目录下创建一个名为 wrf 的父文件夹,用于存储本项目的所有文件,并在此基础上下设两个子文件夹: libraries 用于存储依赖, src 用于存储源码。

mkdir wrf
mkdir /wrf/libraries
mkdir /wrf/src

(2)下载依赖

接下来,我们进入 libraries 文件夹,下载我们需要的依赖。

cd /wrf/libraries

 我们所需要的五个依赖为:mpich、zlib、hdf5、netcdf_c、netcdf_fortran

直接通过官网下载安装包文件即可。

wget https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.2/src/hdf5-1.12.2.tar.gz
wget https://codeload.github.com/Unidata/netcdf-c/tar.gz/refs/tags/v4.9.2
wget https://codeload.github.com/Unidata/netcdf-fortran/tar.gz/refs/tags/v4.6.1

最后我们的 libraries 目录下应该有如下五个安装包。 

之后,依次解压这五个压缩包以方便下面进行安装。 

tar zxvf mpich-4.1.2.tar.gz 
tar zxvf zlib-1.2.7.tar.gz
tar zxvf hdf5-1.12.2.tar.gz
tar zxvf netcdf-c-4.9.2.tar.gz
tar zxvf netcdf-fortran-4.6.1.tar.gz

(3)安装依赖 

①mpich安装

 首先进入解压后的文件夹,并指定安装路径。

cd mpich-4.1.2
./configure --prefix=/home/barbedcotton/wrf/libraries/mpich

执行完该指令后,出现下图所示报错。

因此我们需要补安装 python 3 ,以便mpich可以正常安装,我们回到家目录中进行全局安装即可。 

cd ~
yum -y install python3

 之后重新进入 mpich-4.1.2 文件夹,并指定安装路径,最后出现下图的情况即代表定向成功。

 接着我们执行 make make install 指令进行mpich的安装。

make
make install

 安装完成后,我们还需要对环境变量进行修改和更新。

vim ~/.bash_profile
#进入编辑模式后,在最后一行输入:
export PATH=/home/barbedcotton/wrf/libraries/mpich/bin:$PATH
#注意,这里最好用绝对路径!
#退出到指令模式保存后,再更新一下环境变量
source ~/.bash_profile

最后我们通过which指令来验证mpich的安装是否成功,回显该指令地址即代表安装成功。

 

②zlib安装

  首先进入解压后的文件夹,并指定安装路径。

cd zlib-1.2.7
./configure --prefix=/home/barbedcotton/wrf/libraries/zlib

 之后同样执行 make make install 指令进行zlib的安装。

make
make install

③hdf5安装

  首先进入解压后的文件夹,并指定安装路径。

cd hdf5-1.12.2
./configure --prefix=/home/barbedcotton/wrf/libraries/hdf5 --with-zlib=/home/barbedcotton/wrf/libraries/zlib --enable-fortran --enable-cxx

 之后同样执行 make make install 指令进行hdf5的安装。

make
make install

 安装完成后,我们同样需要对环境变量进行修改和更新。

vim ~/.bash_profile
#进入编辑模式后,在最后一行输入:
export PATH=/home/barbedcotton/wrf/libraries/hdf5/bin:$PATH
export LD_LIBRARY_PATH=/home/barbedcotton/wrf/libraries/hdf5/lib:$LD_LIBRARY_PATH
#注意,这里最好用绝对路径!
#退出到指令模式保存后,再更新一下环境变量
source ~/.bash_profile

④netcdf_c安装

  首先进入解压后的文件夹。

cd netcdf-c-4.9.2/

之后需要设置几个必需的临时变量。

export LD_LIBRARY_PATH=/home/barbedcotton/wrf/libraries/zlib/lib:/home/barbedcotton/wrf/libraries/hdf5/lib:$LD_LIBRARY_PATH
export CPPFLAGS="-I/home/barbedcotton/wrf/libraries/zlib/include -I/home/barbedcotton/wrf/libraries/hdf5/include"
export LDFLAGS="-L/home/barbedcotton/wrf/libraries/zlib/lib -L/home/barbedcotton/wrf/libraries/hdf5/lib"

 然后照常执行安装配置。

./configure --prefix=/home/barbedcotton/wrf/libraries/netcdf --disable-dap --enable-netcdf-4 --enable-netcdf4 --enable-shared

 执行完该指令后,出现下图所示报错。

因此我们需要补安装libxml2库,以便可以解析XML文档,我们回到家目录中进行全局安装即可。 

cd ~
yum -y install libxml2
yum -y install libxml2-devel

 之后重新进入 netcdf-c-4.9.2 文件夹,并指定安装路径,然后又出现下图的报错。

 同样的,我们补安装 m4 即可,回到家目录中进行全局安装。 

cd ~
yum -y install m4

再重新执行安装配置,喜提再次报错。

这里的报错,在csdn同站上,有人建议重新下载低版本netcdf_c,但这里只需要补安装 libcurl 即可

cd ~
yum install libcurl
yum install libcurl-devel

最后出现下图的情况,无任何报错,即代表定向成功。

最后依然是make make install 。 

⑤netcdf_fortran安装

  首先进入解压后的文件夹。

cd netcdf-fortran-4.6.1/

之后需要设置几个必需的临时变量。

export LD_LIBRARY_PATH=/home/barbedcotton/wrf/libraries/netcdf/lib:/home/barbedcotton/wrf/libraries/zlib/lib:/home/barbedcotton/wrf/libraries/hdf5/lib$LD_LIBRARY_PATH
export CPPFLAGS="-I/home/barbedcotton/wrf/libraries/netcdf/include"
export LDFLAGS="-L/home/barbedcotton/wrf/libraries/netcdf/lib"

 然后照常执行安装配置。

./configure --prefix=/home/barbedcotton/wrf/libraries/netcdf

之后同样执行 make make install 指令进行的netcdf_fortran的安装。

make
make install

 安装完成后,我们同样需要对环境变量进行修改和更新。

vim ~/.bash_profile
#进入编辑模式后,在最后一行输入:
export NETCDF=/home/barbedcotton/wrf/libraries/netcdf
export PATH=/home/barbedcotton/wrf/libraries/netcdf/bin:$PATH
export LD_LIBRARY_PATH=/home/barbedcotton/wrf/libraries/netcdf/lib:$LD_LIBRARY_PATH
#注意,这里最好用绝对路径!
#退出到指令模式保存后,再更新一下环境变量
source ~/.bash_profile

至此,所有依赖包已经配置完毕! 

三、WRF-Hydro的安装

首先回到wrf目录,再进行同样的下载解压。

cd ~/wrf
wget https://codeload.github.com/NCAR/wrf_hydro_nwm_public/tar.gz/refs/tags/v5.2.0
tar zxfv wrf_hydro_nwm_public-5.2.0.tar.gz

然后进入下面这个路径:

cd wrf_hydro_nwm_public-5.2.0/trunk/NDHMS

复制环境变量并进行环境变量的修改与更新。

cp template/setEnvar.sh ./
vim setEnvar.sh
#进入编辑模式后,在最后一行输入:
export WRFIO_NCD_LARGE_FILE_SUPPORT=1#允许大于2GB的NetCDF输入输出文件
#退出到指令模式保存后,再更新一下环境变量
source setEnvar.sh

 之后运行脚本,并选择选项2。

./configure

接着运行第二个脚本。

./compile_offline_NoahMP.sh setEnvar.sh

出现以下内容即代表编译成功:

查看该路径 RUN 下生成的exe文件:

ls -lah Run/*.exe

四、WRF-Hydro的运行 

回到 /wrf 下,创建用于存放数据集的文件夹。

cd ~/wrf
mkdir example_case && cd example_case
mkdir NWM
mkdir FORCING
mkdir Gridded_no_lakes
mkdir Reach
mkdir supplemental
mkdir Gridded && cd Gridded
mkdir DOMAIN
mkdir RESTART

回到/wrf 下,运行下面的指令:

cd ~/wrf
cp wrf_hydro_nwm_public-5.2.0/trunk/NDHMS/Run/*.TBL example_case/Gridded
cp wrf_hydro_nwm_public-5.2.0/trunk/NDHMS/Run/wrf_hydro.exe example_case/Gridded

然后进入 /src 子目录,进行数据集的下载和解压。

cd ./src
wget https://github.com/NCAR/wrf_hydro_nwm_public/releases/download/v5.2.0/croton_NY_training_example_v5.2.tar.gz
tar zxvf croton_NY_training_example_v5.2.tar.gz

接着我们复制驱动数据到Gridded文件夹下。 

cp -r example_case/FORCING/ /home/barbedcotton/wrf/example_case/Gridded
cp -r example_case/NWM/DOMAIN /home/barbedcotton/wrf/example_case/Gridded
cp -r example_case/NWM/RESTART /home/barbedcotton/wrf/example_case/Gridded
cp -r example_case/NWM/nudgingTimeSliceObs/ /home/barbedcotton/wrf/example_case/Gridded
cp -r example_case/NWM/namelist.hrldas /home/barbedcotton/wrf/example_case/Gridded
cp -r example_case/NWM/hydro.namelist /home/barbedcotton/wrf/example_case/Gridded

运行模型!

cd ~/wrf/example_case/Gridded
mpirun -np 2 ./wrf_hydro.exe

检查模型是否运行成功!!

tail -1 diag_hydro.00000

完结撒花,感谢支持!!! 


参考

  1. WRF-Hydro环境部署与模型测试:WRF-Hydro环境部署与模型测试 | 睿蒙博客 (raymondhqr.top)

  2. Linux如何安装并配置libxml2库:​​​​Linux如何安装并配置libxml2库?解决“libxml2 not found“问题_centos 未找到匹配的参数: libxml2-dev-CSDN博客

  3. curl required for byte range support报错的解决办法:ubuntu - configure: error: curl required for remote access. Install curl or build with --disable-dap - Stack Overflow

;