小白一枚,因为兴趣和业务需要,大概从四个月前开始自行摸索WRF-CMAQ,WRF安装的算是比较顺利,CSDN和B站上有大量教程,推荐最靠谱的几个:
天气预测软件系统WRF的保姆级安装_哔哩哔哩_bilibili
WRF安装和运行的技术教程_wrf模式安装与运行_ME1010的博客-CSDN博客
强调最重要的3点;1.降低gcc版本;2.先安装zlib并设置环境变量;3.如果出现错误提示/usr/bin/ld: 找不到 -lhdf5_fortran,需要创建软连接。
接下来开始介绍CMAQ的安装过程,我用的是5.2版本(WRF是3.9)
我的系统配置:Ubuntu20.04 x86_64 GNU/Linux,编译器gcc
首先是大家都知道的,CMAQ需要Netcdf库和IOAPI库,netcdf库在装WRF的时候已经装好,我安装的是netcdf4.1.3,netcdf4.1.3版本的c库和fortran库是合并在一起的,所以安装就少了netcdf-fortran安装这一步,因此就只需安装IOAPI了(高兴哈哈)
我琢磨着就这么一个库应该不费什么时间吧,就开始搜索教程了,结果卡了一周多。。最后成功安装了IOAPI3.2,教程是这个:CMAQ-5.2安装 IOAPI3.2安装,大家可自行参考
接下来介绍今天的主角——CMAQ5.2
在网上查了各种资料,卡了两周多的CMAQ5.2,简直头痛欲裂,最后还是得自己查bug,毕竟每个人遇到的错误都不同。。。
综合网上N多教程和自己的实践经历,总结CMAQ5.2的安装步骤如下:
1.首先获取源代码(这个不用说了吧,GitHub - USEPA/CMAQ at 5.2,PS这网站不稳定,有时候登不上去),选择5.2版本,下载压缩包CMAQ-5.0.2.zip,我的安装路径是:
/home/用户名/Build_CMAQ
进入csh命令,解压文件、进入文件夹,编辑bldit_project.csh文件
csh
unzip CMAQ-5.2.zip
cd CMAQ-5.2
vi bldit_project.csh
更改CMAQ主路径:set CMAQ_HOME = /home/用户名/Build_CMAQ/CMAQ_Project
执行文件、进入CMAQ_Project文件夹、编辑config_cmaq.csh文件
./bldit_project.csh
cd /home/用户名/Build_CMAQ/CMAQ_Project
gedit config_cmaq.csh
重点来了!!!更改库文件的路径和FLAG:
IOAPI_MOD_DIR:/home/用户名/ioapi32/Linux2_x86_64
IOAPI_INCL_DIR:/home/用户名/ioapi32/ioapi/fixed_src
IOAPI_LIB_DIR:/home/用户名/ioapi32/Linux2_x86_64
NETCDF_LIB_DIR:/home/用户名/Build_WRF/LIBRARIES/netcdf/lib
NETCDF_INCL_DIR:/home/用户名/Build_WRF/LIBRARIES/netcdf/include
MPI_LIB_DIR:/home/用户名/Build_WRF/LIBRARIES/mpich/lib
myLINK_FLAG:"-fopenmp"
mpi_lib: "-lmpich"(mpich选择-lmpich,openmpi选择-lmpi)
setenv netcdf_lib " -lnetcdff -lnetcdf"(netcdff的链接在前)
附文件改好的截图
记录一下,在gedit config_cmaq.csh这步卡了一周多(脑壳疼。。。),后面发现90%的错误都是由于此处的路径或FLAG设置不正确导致的,我遇到的error如下:
1.缺少mpi.h,解决办法是创建软连接sudo ln -s /usr/lib/x86_64-linux-gnu/libmpich.so /usr/lib/libmpich.so
2.Undefined reference to nc_open(对xxx未定义的引用),这也是我安装过程中出现的最多的error,而且总是绕不开这个错误,思考之后我感觉肯定是我的netcdf出了问题,于是又开始在网上找各种解决方法,终于在一个网站上找到了答案(好像是官方专门答疑的邮件),菩萨保佑!
附上官方链接[netCDF #NKM-505768]: help needed netcdf-4.1.3,这位老兄跟我遇到了同样的问题,官方给出的答案是要把setenv netcdf_lib的netcdff放在前面,原文是这样说的
但是config_cmaq.csh文件里就是反的啊,这谁能想到啊。。不管怎样,改变位置后运行config_cmaq.csh
./config_cmaq.csh gcc
开始编译CCTM,进入CCTM文件夹 ,将mpich和netcdf的头文件拷贝过来
cd CCTM/scripts/
mkdir BLD_CCTM_v52_gcc
cp -r /home/用户名/Build_WRF/LIBRARIES/mpich/include/* BLD_CCTM_v52_gcc/
cp -r /home/用户名/Build_WRF/LIBRARIES/netcdf-4.1.3/include/* BLD_CCTM_v52_gcc/
备份、执行build文件,编译结果保存在bldit.cctm.log文件中
cp bldit_cctm.csh bldit_cctm.csh.old
./bldit_cctm.csh gcc >& bldit.cctm.log
最后查看是否有可执行文件,有可执行文件表示编译成功
cd BLD_CCTM_v52_gcc/
ls -al CCTM_*.exe
可执行文件她终于出现了,喜极而泣。。
至此,CCTM安装成功!