目录
这是第一个实战项目,我们将安装编译 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
完结撒花,感谢支持!!!
参考
-
WRF-Hydro环境部署与模型测试:WRF-Hydro环境部署与模型测试 | 睿蒙博客 (raymondhqr.top)
-
Linux如何安装并配置libxml2库:Linux如何安装并配置libxml2库?解决“libxml2 not found“问题_centos 未找到匹配的参数: libxml2-dev-CSDN博客
-
curl required for byte range support报错的解决办法:ubuntu - configure: error: curl required for remote access. Install curl or build with --disable-dap - Stack Overflow