本文参考了另两位作者的环境安装过程
(http://t.csdnimg.cn/LD8Yv http://t.csdnimg.cn/wBjms)
安装前检查
which gfortran
which cpp
which gcc
检查虚拟机是否安装相关的编译器
安装系统指令
sudo apt-get install libcurl4-openssl-dev -y
sudo apt-get install gfortran cpp gcc g++ m4 libxml2 libxml2-dev libhdf5-dev -y
sudo apt-get install git -y
sudo apt-get install csh -y
sudo apt install make
sudo apt install vim -y
以管理员权限执行命令
设置好目录文件夹
测试编译器
export DIR=/home/用户名/Build_WRF
echo $DIR #返回结果应该为/home/xxx/Build_WRF
相关库和依赖的安装
进入依赖包目录,下载并解压
cd $DIR/LIBRARIES
wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz
wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.11.tar.gz
wget https://hdf-wordpress-1.s3.amazonaws.com/wp-content/uploads/manual/HDF5/HDF5_1_14_3/src/hdf5-1.14.3.tar.gz
wget https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz
tar xvf netcdf-c-4.9.2.tar.gz
tar xvf netcdf-fortran-4.6.1.tar.gz
tar xvf zlib-1.2.11.tar.gz
tar xvf libpng-1.2.50.tar.gz
tar xvf hdf5-1.14.3.tar.gz
tar xvf jasper-1.900.1.tar.gz
tar xvf mpich-4.1.2.tar.gz
配置环境变量
export DIR=/home/用户名/Build_WRF
export PATH=$DIR/LIBRARIES/mpich/bin:$PATH
export PATH=$DIR/LIBRARIES/netcdf/bin:$PATH
export NETCDF=$DIR/LIBRARIES/netcdf
export LD_LIBRARY_PATH=$DIR/LIBRARIES/netcdf/lib:$LD_LIBRARY_PATH
export JASPERLIB=$DIR/LIBRARIES/grib2/lib
export JASPERINC=$DIR/LIBRARIES/grib2/include
export LDFLAGS=-L$DIR/LIBRARIES/grib2/lib
export LD_LIBRARY_PATH=$DIR/LIBRARIES/grib2/lib:$DIR/LIBRARIES/hdf5/lib:$LD_LIBRARY_PATH
export CPPFLAGS=-I$DIR/LIBRARIES/grib2/include
terminal中输入vi ~/.bashrc进入环境变量配置页面,输入i进入插入模式,在最后一行输入以上代码后输入esc退出插入模式,输入wq保存并退出。
每次更改环境变量后需要在terminal中输入source ~/.bashrc使其生效
安装各依赖包(安装有顺序,如果没有并行运算需求可以不装mpich)
安装zlib
cd $DIR/LIBRARIES/zlib-1.2.11
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装libpng
cd $DIR/LIBRARIES/libpng-1.2.50
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装hdf5
cd $DIR/LIBRARIES/hdf5-1.14.3
./configure --prefix=$DIR/LIBRARIES/hdf5 --enable-fortran --enable-cxx --with-zlib=$DIR/LIBRARIES/grib2
make -j4 #加速编译
make install
安装jasper
cd $DIR/LIBRARIES/jasper-1.900.1
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装mpich
cd $DIR/LIBRARIES/mpich-4.1.2
./configure --prefix=$DIR/LIBRARIES/mpich
make -j4 #加速编译
make install
安装netcdf-c
cd $DIR/LIBRARIES/netcdf-c-4.9.2
./configure --prefix=$DIR/LIBRARIES/netcdf --enable-dap --enable-netcdf4 --enable-shared LDFLAGS="-L$DIR/LIBRARIES/hdf5/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/hdf5/include -I$DIR/LIBRARIES/grib2/include"
make
make install
安装netcdf-fortran
cd $DIR/LIBRARIES/netcdf-fortran-4.6.1
./configure --prefix=$DIR/LIBRARIES/netcdf --enable-shared LIBS="-lnetcdf -lz" LDFLAGS="-L$DIR/LIBRARIES/netcdf/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/netcdf/include -I$DIR/LIBRARIES/grib2/include"
make
make install
安装好后wrf_build文件夹下如图
依赖包测试
下载并解压
cd $DIR/TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_NETCDF_MPI_tests.tar
tar xvf Fortran_C_NETCDF_MPI_tests.tar
测试netcdf
cp ${NETCDF}/include/netcdf.inc .
gfortran -c 01_fortran+c+netcdf_f.f
gcc -c 01_fortran+c+netcdf_c.c
gfortran 01_fortran+c+netcdf_f.o 01_fortran+c+netcdf_c.o -L${NETCDF}/lib -lnetcdff -lnetcdf
./a.out
测试mpich
cp ${NETCDF}/include/netcdf.inc .
mpif90 -c 02_fortran+c+netcdf+mpi_f.f
mpicc -c 02_fortran+c+netcdf+mpi_c.c
mpif90 02_fortran+c+netcdf+mpi_f.o 02_fortran+c+netcdf+mpi_c.o -L${NETCDF}/lib -lnetcdff -lnetcdf
mpirun ./a.out
下载WRF-Hydro
进入build_wrf目录,开始下载压缩包并解压
cd ~/build_wrf
wget https://codeload.github.com/NCAR/wrf_hydro_nwm_public/tar.gz/refs/tags/v5.2.0
tar v5.2.0
进入以下路径
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
运行第二个脚本
./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
运行以下指令
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/scr,下载数据集并解压它
cd ~/wrf/src
wget https://files.hqr233.plus/hpc/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/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