上一篇已经将所有WRF-DA模块所需要的依赖库都编译安装成功。接下来的步骤就是WRF-DA模块的编译与安装。笔者已经事先从WRF官网下载了该模块的源码(版本为最新的3.8.1)。
首先在设置个目录专门来存放WRF的主程序。选择在Home下面新建一个mode。命令如下:
$ sudo mkdir mode
先进入管理员模式(sudo su命令),然后将WRFDA的压缩包全部复制到刚刚建好的文件夹中。
cp -r WRFDA_V3.8.1.tar.gz /home/mode/
到刚刚建好的WRF文件夹里,同样进入管理员模式,并解压文件夹,到WRFDA目录中,配置环境变量,并设置编译类型。其中,rttov看是否需要,也可以不考虑安装。如若要安装,环境变量配置的路径为可以找到lib/librttov11.*.a的文件目录。
tar zxf WRFDA_V3.8.1.tar.gz
cd WRFDA
export NETCDF=/usr/local/NETCDF/
export hdf5=/usr/local/hdf5/
export rttov=/usr/rttov/
./configure wrfda
然后出现了很多选项。
选择 x86_64 Linux, gfortran compiler with gcc (serial),键入32,回车。
32到35分别代表
32为serial 表示串行计算; 33为smpar 表示内存共享并行计算(shared memory option),即使用openMP,大部分多核电脑都支持这项功能; 34为dmpar 表示分布式并行计算(distributed memory option),即使用MPI 进行并行计算,主要用在计算集群,单个电脑就没必要用了; 35为dm+sm 表示同时使用openMP与MPI两种并行方式. 根据实际需要选择即可,最保险的方法就是选择 serial,不过这样编译出来的程序运行最慢(引自xg1990的博客)。笔者初步测试,选择串行计算的版本,而且根据官方文档和编译结果,其他模式还需要有其他相关的依赖库。选择完编译选项后,会出现提示选择嵌套选项,一般就选 basic 选项即可。当然,这边编译器不同的话,序号也有所不同。同时官方文档已声明3.8.1版本不支持dm和dm+sm版本。
搞定之后,看到一条振奋人心的消息。
接下来,就输入如下命令:
./compile all_wrfvar>&checkwrfda.log
然后等它编译完成就好了。
当然,到这一步我还是有问题,因为我只编译安装了43个exe,完全成功应该有44个exe。并且发现这个缺少的exe是主程序,da_wfrda.exe。
查看生成exe的命令。
ls -l var/build/*exe var/obsproc/src/obsproc.exe
接着就回头去看log文件以及官方编译要求。
发现大部分是路径错误。于是重新配置安装依赖库,并将WRF所需的其他库一并安装,重新编译。终于成功。
以上就是WRF-DA模块的编译与安装。
后面会更新WRF主程序的编译与安装方面的内容(具体时间待定)。
最后再次感谢以下博客文档的帮助。
https://wenku.baidu.com/view/58851bc269eae009591bec0a.html
https://nwpsaf.eu/site/software/rttov/rttov-v12/
http://www2.mmm.ucar.edu/wrf/users/wrfda/updates-3.8.1.html
https://xg1990.com/blog/archives/190
http://blog.csdn.net/luoying_1993/article/details/53228473
https://wenku.baidu.com/view/57e27fd14a7302768e9939f4.html?re=view
http://www2.mmm.ucar.edu/wrf/users/wrfda/Docs/user_guide_V3.8.1/users_guide_chap6.htm#_Installing_WRF-Var