RaymondHuang
RaymondHuang
发布于 2023-09-18 / 690 阅读
0
0

WRF-Hydro环境部署与模型测试

前言

· 本文将介绍WRF-Hydro的安装流程以及如何使用官方的模型进行测试。

· 本文使用的操作系统是Ubuntu 22.04

编译器检查

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

which gcc
which g++
which gfortran

· 如果已安装会显示出对应的路径:

· 如果未安装请使用以下命令进行安装:

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

依赖准备

· 首先,我们在自己的home下创建一个名为wrf的文件夹用来存放本项目的所有文件,然后在里面创建一个libraries和src文件夹分别存放依赖和源码,这里我直接放在根目录了hhh

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

· 然后进入libraries文件夹,下载我们需要的依赖:

cd /wrf/libraries

· 首先我们下载mpich依赖:

wget https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz
# 如下载过慢可使用我的镜像~会快很多噢
wget https://files.raymondhqr.top/hpc/mpich-4.1.2.tar.gz

· 然后是zlib:

wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz 
# 如下载过慢可使用我的镜像~会快很多噢
wget https://files.raymondhqr.top/hpc/zlib-1.2.7.tar.gz

· 然后是hdf5-1.12:

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.2/src/hdf5-1.12.2.tar.gz
# 如下载过慢可使用我的镜像~会快很多噢
wget https://files.raymondhqr.top/hpc/hdf5-1.12.2.tar.gz

· 然后是netcdf_c,下完之后的文件名是v4.9.2,我们顺便改个名比较好识别:

wget https://codeload.github.com/Unidata/netcdf-c/tar.gz/refs/tags/v4.9.2
mv v4.9.2 netcdf-c-4.9.2.tar.gz
# 如果使用我的镜像就不需要改名了
wget https://files.raymondhqr.top/hpc/netcdf-c-4.9.2.tar.gz

· 最后是netcdf_fortran,下完之后文件名是v4.6.1,我们也改个名:

wget https://codeload.github.com/Unidata/netcdf-fortran/tar.gz/refs/tags/v4.6.1
mv v4.6.1 netcdf-fortran-4.6.1.tar.gz
# 如果使用我的镜像就不需要改名了
wget https://files.raymondhqr.top/hpc/netcdf-fortran-4.6.1.tar.gz

· 最后你的libraries文件夹下应该有这五个压缩包:

· 至此,依赖准备完成,我们要开始安装了。

依赖安装

mpich安装

· 首先,我们需要安装mpich。

· 首先在libraries下先解压刚刚下载的文件然后进入解压后的文件夹:

tar zxvf mpich-3.0.4.tar.gz
cd mpich-3.0.4

· 然后我们需要使用如下指令来指定安装路径

./configure --prefix=/wrf/libraries/mpich

· 等上面的指令跑完之后,会显示如下信息

· 然后我们执行make指令:

make

· make跑完之后执行make install:

make install

· 接下来需要修改环境变量:

vim ~/.bash_profile

· 在里面添加一行:

· 最后更新一下环境变量:

source ~/.bash_profile

· 然后我们用which来检查一下是否成功:

zlib安装

· 回到libraries文件夹,解压zlib的压缩包,然后进入对应文件夹:

tar zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7

· 同样的设置安装路径:

./configure --prefix=/home/huangqirui/wrf/libraries/zlib

· 运行完后使用make和make install:

make
make install

hdf5安装

· 回到libraries文件夹,解压hdf5的压缩包,然后进入对应文件夹:

tar zxvf hdf5-1.12.2.tar.gz
cd hdf5-1.12.2

· 同样的指定安装路径:

./configure --prefix=/home/huangqirui/wrf/libraries/hdf5 --with-zlib=/home/huangqirui/wrf/libraries/zlib --enable-fortran --enable-cxx

· 然后也是make和make install,说实话这一步我在make的时候看到一对warning,怪吓人的,可能是编译器版本问题吧QAQ,这次编译需要蛮久的,要有点耐心

make 
make install

· 添加环境变量:

vim ~/.bash_profile

· 最后更新一下环境变量:

source ~/.bash_profile


netcdf_c安装

· 回到libraries目录,解压netcdf_c,进入对应文件夹:

tar zxvf netcdf-c-4.9.2.tar.gz
cd netcdf-c-4.9.2/

· 设置几个临时变量:

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

· 然后执行安装配置:

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

· 最后依然是make和make install:

make
make install

netcdf_fortran安装

· 回到libraries目录,解压netcdf_fortran,进入对应文件夹:

tar zxvf netcdf-fortran-4.6.1.tar.gz 
cd netcdf-fortran-4.6.1/

· 设置几个临时变量(这里不知道为什么分开几个export写会报找不到export指令,所以这里写成一行了QAQ):

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

· 执行安装配置:

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

· 依然是make和make install

make
make install

· 编辑环境变量: 

vim ~/.bash_profile

· 更新环境变量:

source ~/.bash_profile

安装WRF-Hydro

· 回到/wrf文件夹,下载WRF-Hydro,然后重命名一下:

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

# 这里也提供我的镜像站,不需要手动重命名
wget https://files.raymondhqr.top/hpc/wrf_hydro_nwm_public-5.2.0.tar.gz

· 解压:

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

· 在最下面添加一行内容,意思是允许大于2GB的NetCDF输入输出文件:

export WRFIO_NCD_LARGE_FILE_SUPPORT=1

· 更新环境变量:

source setEnvar.sh

· 运行脚本:

./configure

出现选项,选择2:

· 运行第二个脚本:

./compile_offline_NoahMP.sh setEnvar.sh

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

· 查看一下/wrf/wrf_hydro_nwm_public-5.2.0/trunk/NDHMS/Run下生成的exe文件:

ls -lah Run/*.exe

运行WRF-Hydro

· 回到/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

· 然后我们进入/wrf/src下,下载数据集,然后解压它:

cd ~/wrf/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

# 这里也提供我的镜像站
wget https://files.hqr233.plus/hpc/croton_NY_training_example_v5.2.tar.gz

· 复制驱动数据到Gridded文件夹下:

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

· 运行模型:

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

· 检查模型是否运行成功:

tail -1 diag_hydro.00000



评论