wrf-hydro环境部署

wrf-hydro环境实现

项目的编译器检查

该项目将使用到三种编译器gcc,g++,gfortran

原因是:WRF-Hydro模型是使用Fortran语言开发的。而环境中对依赖库使用到了C、Fortran和C++。

which gcc
which g++
which gfortran

使用which来检查自己是否安装了相关的编译器。

没有返回结果的可以使用包管理器安装

apt-get install xxx

接着安装依赖项

主要有三个依赖大项需要安装:MPI,Fortran netCDF,CMake

MPI:一种通信标准,相关依赖项用于实现mpi程序在多计算结点环境下的正确执行和高效通信

Fortran netCDF:Fortran接口,使得Fortran程序能够方便地使用NetCDF数据格式(一种能够高效组织多维数据的数据格式)

1、CMake好说,可以用包管理器简单搞定。

2、对于剩下的两个依赖项,主要步骤

  • 下载对应依赖项的压缩包
  • 解压进入对应文件目录
  • make编译,install安装
  • vim编辑器添加环境变量(将可执行文件的根目录添加到环境变量PATH)

MPI依赖项的安装

wget https://www.mpich.org/static/downloads/4.2.2/mpich-4.2.2.tar.gz
tar zxvf mpich-4.2.2.tar.gz
cd mpich-4.2.2
./config --prefix=/xxx/mpich   %检查编译是否满足编译条件,选择安装路径

xxx指安装mpich的路径,可以创建一个lib来存放依赖项。

网络下载的依赖项可能特别慢,可以通过远程连接或者先下好直接用U盘拷贝。

配置好后,编译+安装:

sudo make
make make install 

修改环境变量,将生成的可执行目录的根目录添加进环境变量

vim ~/.bashrc
export PATH=xxx/mpich/bin:$PATH %这个xxx就是上面安装mpich的目录
#保存退出后
source ~/.bashrc #刷新环境变量

接着是Fortran netCDF依赖项的安装

安装该依赖项需要先后安装其他的小的依赖项,分别是zlib、hdf5、netcdf-c、netcdf-fortran

zlib用于提供无损高效的压缩和解压缩算法

hdf5是一种数据存储和管理库,能够实现大量数据、不同类型数据的处理,并提供封装使用接口。

netcdf-c提供一种组织管理多维数据的方法以高效处理科学数据。

netcdf-fortran同理于netcdf-c

依赖项的安装大同小异:下载、解压、检查编译环境、编译、安装、配置环境变量,本次直接下好依赖项的安装包,一口气传到虚拟机里开始安装。

zlib:

tar zxvf zlib-1.2.7.tar.gz
cd ./zlib-1.2.7
./configure --prefix=/xxx/zlib   %同理于前面,都安装在lib目录下
make
make install

hdf5:

tar zxvf hdf5-1.12.2.tar.gz
cd ./hdf5-1.12.2
./configure --prefix=/xxx/hdf5 --with-zlib=/xxx/zlib --enable-fortran --enable-cxx
make
make install
vim ~/.bashrc
export PATH=/xxx/hdf5/bin:$PATH
export LD_LIBRARY_PATH=/xxx/hdf5/lib:$LD_LIBRARY_PATH
%第二个环境配置的路径,会让程序在运行时,会在该目录下寻找所需对应的动态链接库文件

这里出现过一些失败的情况,鉴于网上的经验分享,升级为最高版本就能解决了。
netcdf-c:

tar zxvf netcdf-4.4.1.1.tar.gz
cd ./netcdf-4.4.1.1
export LD_LIBRARY_PATH=/xxx/zlib/lib:/xxx/hdf5/lib:$LD_LIBRARY_PATH
export CPPFLAGS="-I/xxx/zlib/include -I/xxx/hdf5/include"
%包含了两个-I选项,分别指向zlib和HDF5的头文件目录。
export LDFLAGS="-L/xxx/zlib/lib -L/xxx/hdf5/lib"
%包含了两个-L选项,分别指向zlib和HDF5的库文件目录。
./configure --prefix=/xxx/netcdf --disable-dap--enable-netcdf4 --enable-shared
%禁用DAP,启用NetCDF-4格式,编译和安装共享库
make
make install
netcdf-fortran:
tar zxvf netcdf-fortran-4.4.4.tar.gz
cd ./netcdf-fortran-4.4.4
export LD_LIBRARY_PATH=/xxx/netcdf/lib:/xxx/zlib/lib:/xxx/hdf5/lib:$LD_LIBRARY_PATH
%将/xxx/netcdf/lib、/xxx/zlib/lib和/xxx/hdf5/lib这三个目录添加到LD_LIBRARY_PATH环境变量中,以便在运行时系统能够在这几个目录下搜索动态链接库
CPPFLAGS="-I/xxx/netcdf/include" LDFLAGS="-L/xxx/netcdf/lib" 
%它告诉编译器在编译时包含/xxx/netcdf/include目录下的头文件
%它告诉链接器在链接时搜索/xxx/netcdf/lib目录下的库文件.
./configure --prefix=/xxx/netcdf
make
make install

添加环境变量:

vim ~/.bashrc
export NETCDF=/xxx/netcdf  %设置环境变量NETCDF
export PATH=/xxx/netcdf/bin:$PATH
export LD_LIBRARY_PATH=/xxx/netcdf/lib:$LD_LIBRARY_PATH
source ~/.bashrc

安装wrf-hydro

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 
%刷新,检查并编译
source setEnvar.sh   
./configure 
./compile_offline_NoahMP.sh setEnvar.sh

出现:

在这里插入图片描述

编译成功,生成可执行文件,在RUN目录下可以找到对应的可执行文件

测试:

下载测试数据包https://github.com/NCAR/wrf_hydro_nwm_public/releases/download/v5.2.0/croton_NY_training_example_v5.2.tar.gz

并对其进行解压,将其存放在xx(xxx目录即lib目录的父目录下)

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

在xxx的父目录(假设为xx,比lib少了个x)下创建测试数据存放目录

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

cp -r example_case/FORCING/ /xx/example_case/Gridded
cp -r example_case/NWM/DOMAIN /xx/example_case/Gridded
cp -r example_case/NWM/RESTART /xx/example_case/Gridded
cp -r example_case/NWM/nudgingTimeSliceObs/ /xx/example_case/Gridded
cp -r example_case/NWM/namelist.hrldas /xx/example_case/Gridded
cp -r example_case/NWM/hydro.namelist /xx/example_case/Gridded

在之前的run目录下,将所有TBL文件和wrf_hydro.exe这个可执行文件copy到Gridded文件夹

cd xx
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

运行:

cd ~/wrf/example_case/Gridded
mpirun -np 2 ./wrf_hydro.exe
%启用并行程序,指定处理器数量
tail -1 diag_hydro.00000
%显示文件 diag_hydro.00000 的最后一行内容即:
%The model finished successfully.......

将里面所有需要刷新的内容打包成一个脚本就不用一个个刷新了,每次开启就运行该脚本:

%netcdf-c:
export LD_LIBRARY_PATH=/xxx/zlib/lib:/xxx/hdf5/lib:$LD_LIBRARY_PATH
export CPPFLAGS="-I/xxx/zlib/include -I/xxx/hdf5/include"
export LDFLAGS="-L/xxx/zlib/lib -L/xxx/hdf5/lib"

%netcdf-fortran:
export LD_LIBRARY_PATH=/xxx/netcdf/lib:/xxx/zlib/lib:/xxx/hdf5/lib:$LD_LIBRARY_PATH
CPPFLAGS="-I/xxx/netcdf/include" LDFLAGS="-L/xxx/netcdf/lib" 

参考

wrf-hydro环境部署

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
wrf_hydro_arcgis-preprocessor是一个用于WRF-Hydro模型的预处理工具,它集成了WRF(Weather Research and Forecasting)模型和ArcGIS(地理信息系统软件),以便进行水文模拟和分析。 该预处理工具主要用于将大气和水文数据准备为WRF-Hydro模型所需的输入格式。它能够导入地理空间数据,包括高程(DEM)、土地利用、土壤类型等,并将这些数据转换为与WRF-Hydro模型所需的格式相匹配的GIS地图。此外,还可以导入大气数据,如降水、蒸发、风速等,并对其进行处理,以便在水文模拟中使用。 wrf_hydro_arcgis-preprocessor还提供了一些功能来帮助用户进行水文模拟的准备工作。例如,它可以生成网格参数文件,用于定义计算网格的空间分辨率和拓扑关系。它还可以根据用户的需求设置模型的时间和空间范围,并对输入数据进行剪切和插值。 另外,该工具还提供了一些可视化和分析功能,以帮助用户理解和评估模型的输出结果。用户可以使用ArcGIS中的地图工具来查看模拟结果,如地表径流、地下径流、土壤湿度等。此外,还可以通过绘制图表和统计数据来分析模拟结果,以便进行水资源管理和决策制定。 总之,wrf_hydro_arcgis-preprocessor是一个方便实用的工具,它能够帮助用户准备数据并进行水文模拟和分析。它的集成了WRF和ArcGIS的功能,使得用户可以更加便捷地进行水文研究和实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值