WRF-Hydro的安装与编译(Linux)

前言

1. 作为开始,在这里先简单介绍一下WRF-Hydro:

        WRF-Hydro是一个基于WRF(Weather Research and Forecasting Model)陆面过程部分独立发展起来的分布式水文模型,主要用于模拟大气和水文相互作用及过程。该模型采用FORTRAN90开发,具有良好的扩展性和支持大规模并行计算的能力,广泛应用于洪水预报、水资源管理、生态水文研究等多个领域。

2. 笔者使用的系统是Oracle VM VirtualBox软件创建的Ubuntu(64-bit)版本的Linux虚拟机。

系统配置是1 CPU,内存大小为3025 MB。

3. 在编译和安装过程中尽量保持并使用超级用户(root)权限。运行下述指令并输入密码。

su

当然你也可在需要权限的命令前添加sudo,但笔者建议保持root权限进行编译和安装过程。 

一、简单准备工作

1. 准备存储文件的目录文件夹

        一个sources存放压缩包等源文件,另一个hydro用于安装WRF-Hydro和依赖包等,可以再将它们放在同一个目录wrf中。

2. 准备依赖库的压缩包

        本次安装需要依赖库mpich, zlib, hdf5, netcdf-c, netcdf-fortran,

        其中netcdf-c,和netcdf-fortran分别是c和fortran版本的netcdf,

        这些依赖库的安装源文件压缩包,可在如下网址中下载:

mpich:

https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz

zlib:

https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz

hdf5:

https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.2/src/hdf5-1.12.2.tar.gz

netcdf4-c:

https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz

netcdf4-fortran:

https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz

        1)通过wget命令下载到sources文件夹中

wget -P ./wrf/sources URL

使用命令时将URL改成相应的下载网址即可。

        2)当然你也可以直接通过网址链接直接下载下来到sources文件夹中

        3)如果使用虚拟机的话你也可以通过原机下载再通过共享文件夹传到虚拟机中,最后再转移至sources文件夹

        博主在这里是通过第一种方式用wget命令将压缩包下载下来的。

过程较长,这里只展示了下载mpich的。 

二、检查编译所需软件的安装

1. WRF-Hydro的环境部署需要在编译器gcc,g++,gfortran下进行。

用which software_name命令检查是否安装了gcc g++ gfortran。

which gcc
which g++
whhich gfortran

1)若已安装则会显示文件路径,如下图所示:

2)若未安装则无显示,可用apt-get install xxx(在超级用户(root用户)的权限下)或直接用sudo apt-get install xxx命令安装。

sudo apt-get install gcc g++ gfortran

2.期间还需使用make和编辑器vim。需我们进行如上面的操作,先用which xxx命令进行检查,若未安装则用apt-get install xxx命令进行安装。

apt-get install make vim

三、安装依赖库

        主要是对mpich和netcdf4的安装,zlib和hdf5是netcdf4的依赖库。

        前面已经将所需依赖库的安装包下载到sources文件夹,下面对压缩包逐个进行解压安装。

1. 安装mpich

1)解压缩后进入对应目录

tar zxvf mpich-4.1.2.tar.gz
cd ./mpich-4.1.2

2)设置安装路径(一般要用绝对路径)

./configure --prefix=/home/king/wrf/hydro/mpich

3)make编译

make

运行部分截图 

4)make install安装

make install

运行部分截图

5)利用vim添加环境变量(最好用绝对路径)

vim ~/.bash_profile

 按i进入编辑模式,添加如下内容,再按Esc键,接着按:wq保存退出

export PATH=/home/linjunming/wrf-hydro/libraries/mpich/bin:$PATH

6)source 更新环境变量

source ~/.bash_profile

2. 安装zlib

与前面的操作相似:

解压缩进入对应文件目录

设置安装路径

./configure --prefix=/home/king/wrf/hydro/zlib

make编译

make install安装

3. 安装hdf5

解压缩进入对应文件目录

设置安装路径

./configure --prefix=/home/king/wrf/hydro/hdf5 --with-zlib=/home/king/wrf/hydro/zlib --enable-fortran --enable-cxx

make编译

make install安装

利用vim添加环境变量

vim ~/.bash_profile

 --添加如下内容,保存并退出

source 更新环境变量

source ~/.bash_profile

4. 安装netcdf-c

解压缩进入对应文件目录

然后需要设置一些必须的临时环境变量,

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

再接着进行配置,编译安装。

设置安装路径

./configure --prefix=/home/king/wrf/hydro/netcdf --disable-dap --enable-netcdf-4 --enable-netcdf4 --enable-shared

----期间如缺少某些库,比如libxml2库,m4,libcurl等,会有显示提示缺失的库,使用apt-get install xxx命令安装即可。直到出现如下输出即安装路径设置成功。

make编译

make install安装

5. 安装netcdf-fortran

解压缩进入对应文件目录

然后需要设置一些必须的临时环境变量,

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

再接着进行配置,编译安装。

设置安装路径 

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

make编译

make install安装

利用vim添加环境变量

vim ~/.bash_profile
#进入编辑模式后,在最后一行输入:
export NETCDF=/home/king/wrf/hydro/netcdf
export PATH=/home/king/wrf/hydro/netcdf/bin:$PATH
export LD_LIBRARY_PATH=/home/king/wrf/hydro/netcdf/lib:$LD_LIBRARY_PATH
#保存后退出

source 更新环境变量

source ~/.bash_profile

至此,所有所需的依赖包安装完毕:

1)检查一下hydro目录应包含如下内容

 若缺失哪个,需重新安装成功。

2).bash_profile文件中应包含如下环境变量

四、安装WRF-Hydro

1. 下载WRF-Hydro的源码(这里笔者下载的是5.2.0版本的WRF-Hydro)

cd /home/king/wrf/sources
wget https://codeload.github.com/NCAR/wrf_hydro_nwm_public/tar.gz/refs/tags/v5.2.0

改下文件名并解压,进入到解压目录下的trunk/NDHMS。

mv v5.2.0 wrf-hydro-5.2.0.tar.gz
tar zxvf wrf-hydro-5.2.0.tar.gz
cd wrf_hydro_nwm_public-5.2.0/trunk/NDHMS

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

cp template/setEnvar.sh ./
vim setEnvar.sh
#按i进入编辑模式后,在后面输入:
export WRFIO_NCD_LARGE_FILE_SUPPORT=1
#保存退出后,再更新一下环境变量
source setEnvar.sh

 ----在setEnvar.sh文件添加的指令的意思是“允许大于2GB的NetCDF输入输出文件”

----当然,你也可以找到对应文件进行手动拷贝和修改

3. 编译和安装

1)

./configure

 运行上述命令后出现:

这里是因为在编译和安装netcdf过程中缺少了对NETCDF_INC环境变量的定义,进行下述操作即可:

vim ~/.bash_profile
#进入编辑模式后,可在已定义的NETCDF下面添加:
export NETCDF_INC=/home/king/wrf/hydro/netcdf/include
#保存后退出,再更新一下环境变量
source ~/.bash_profile

重新运行:

./configure

选择选项2 

2) 最后进行安装

运行:

./compile_offline_NoahMP.sh setEnvar.sh

 出现如下内容则安装成功:

可在当前目录的Run目录看到生成的文件:

至此,WRF-Hydro安装完毕。 

五、其他遇到的一些问题

        编译和安装过程一般是不会那么一帆风顺的,除了过程中缺少一些库和一些环境变量外,笔者安装过程还遇到了一些其他小问题。

1. 其实,刚开始博主使用的Ubuntu虚拟机不是上面的虚拟机,在利用wget命令下载依赖包的压缩包时,显示“无法建立SSL连接”。

经过一番思考和查找资料,发现是博主在装这个虚拟机时,没有把较完整的功能成功安装,相当于没有建立真正完整的Ubuntu系统虚拟机。重新细致地装新的虚拟机后成功解决问题。

2. 另一个遇到的问题是,博主在编译安装zlib依赖包过程中,编写设置安装路径时尝试没有用绝对路径(其实博主知道应使用绝对路径,但好奇心作祟,想看看不是绝对路径会怎么样,行不行),运行编译安装没有,显示出现什么问题。

但在编译安装netcdf时出现无法将文件进行连接的错误,一番思考回想后意识到是在编译安装其依赖包zlib时没有用绝对路径的问题,导致没有将zlib真正成功装到想要的目录里。用绝对路径重装后解决了问题。
 

好的,我会认真回答你的问题。现在我先来解答你的第一个问题: 好的,我明白了。你想问关于WRF-DA模块的编译安装的问题。那么,我来给你讲一下。 WRF-DA是WRF数据同化系统,它可以将观测资料与数值模型的预报结果相结合,提高模型预报的准确性。WRF-DA的编译安装WRF模型的编译安装类似,只需要在编译WRF模型时加入WRF-DA的相关选项即可。 以下是WRF-DA模块的编译安装步骤: 1. 下载WRF-DA代码 首先,你需要从官方网站(http://www2.mmm.ucar.edu/wrf/users/download/get_sources_wrfda.html)下载最新版的WRF-DA代码。 2. 解压WRF-DA代码 将下载的WRF-DA代码解压到你想要安装的目录下。 3. 编译WRF-DA 进入WRF-DA代码目录,执行如下命令: ``` ./configure wrfda ``` 该命令会进入WRF-DA的配置界面,你需要按照提示进行配置。配置完成后,执行如下命令进行编译: ``` ./compile_wrfda_serial ``` 如果你想进行并行编译,可以使用如下命令: ``` ./compile_wrfda_parallel ``` 4. 安装WRF-DA 编译完成后,你需要将编译生成的可执行文件和数据文件复制到你想要安装的目录下。然后,将WRF-DA的可执行文件路径添加到系统的PATH环境变量中,以便在任意目录下都可以执行WRF-DA。 好了,以上就是WRF-DA模块的编译安装步骤。希望对你有帮助!如果你还有其他问题,可以继续问我。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值