CMAQ是比较常用的多尺度空气质量建模系统,学习CMAQ也有小一年了,期间遇到了很多挑战和困难:安装困难,跑起来各种报错,误删文件等等。下面分享一下下经验,希望有机会帮到同样与CMAQ较劲的你。
一、安装部分:
CMAQ版本很多,本人安装过5.1,5.2,5.2.1,5.3四个版本,大体安装过程没有较大区别,但是花式报错各不相同,有时候真怀疑安装软件也是个玄学。(由于现在多用新版本,所以下面以5.3和5.2版本报错为主进行分享,安装过程具体参考CMAQ-5.2安装及测试数据运行和CMAQ-5.3安装及测试数据运行两篇博客,附上源代码官方下载链接:https://github.com/USEPA/CMAQ)
1.CMAQ中的lib文件不能正确链接netCDF、ioapi、mpi;
一般来说,出错主要是由于ioapi和netCDF。ioapi是由于CMAQ需要的include headers files,libraries,precompiled modules(5.3版本没有procompiled modules)与ioapi目录下的文件夹名字fixed_src,Linux2_x86_64ifort对应不是很清晰(netCDF夸,lib和include对应很清晰)。重点来啦,include headers files这一项需要写上ioapi目录下的fixed_src路径,libraries和precompiled modules需要写上ioapi目录下的Linux2_x86_64ifort路径。netCDF主要是由于版本引起的,version4.2之后,netCDF分为两部分:C和Fortran库,需要分开安装,分开链接。需要注意的是netcdf_lib需要写对,version4.2之前,setenv netcdf_lib "-lnetcdf",version4.2之后,setenv netcdf_lib "-lnetcdff -lnetcdf"。
2.编译CCTM、bcon、icon报错
CCTM,bcon,icon是同样的编译方式,用bldit_xxx.csh compiler脚本进行编译,会自动使用config_cmaq.csh中的编译配置。本人遇到过的报错:函数xxx在xxx中未定义,一般是lib链接不对,需要返回config_camq.csh,检查相关路径和FLAG是否出错。还有一个错误,找不到-lcurl,如果所用服务器未安装curl,那么在config_cmaq.csh一定要将extra_lib "-lcurl"注释掉。
3.编译mcip和wbdust报错
mcip和wbdust需要单独编译,进入src修改makefile的相关路径,然后用make命令进行编译。一般参考config_cmaq.csh修改makefile,即可编译成功,报错主要是没有写对相关路径和FC,需要根据自己情况进行排查修改。
二、运行部分:
CMAQ运行是先从测试数据开始的,测试数据几乎不需要修改cctm脚本,bcon、icon、mcip以及排放数据都包含在测试数据包,直接运行cctm脚本即可(如果需要并行,需要更改一下PROC,NPCOL,NPROW以及Execution Portion部分)。之后就需要自己准备输入数据:bcon、icon、emis、mcip、oceanfile、land等,bcon,icon,mcip,emis必须准备,其余是可选。
1.CCTM报错
(1)未能加载CGRID,一般是文件路径写错了,需要查看LOG文件确定具体错误。
(2)提醒找不到某个libraries,一般是CMAQ需要用到的mpi、ioapi、netCDF在环境变量中被不小心注释掉了,需要打开环境变量进行修改。
(3)提示mpi错误,也就是串行可以,并行出错,那么绝对是mpi设置不对,可能是mpi路径没有写对,也有可能是环境变量中存在多个mpi路径(openmpi、impi等),运行CMAQ时请保持环境变量中只有一个mpi路径,否则会出错。也有可能是提交作业方式不对,这个需要根据所用服务器的提交作业方式进行修改。
(4)提示ERROR ABORT in subroutine VPPM,CCTM脚本中的时间步长CTM_MAXSYNC=300设置过大导致模拟结果无法收敛,所以需要将改值调小。
(5)提示ERROR ABORT in subroutine AQCHEM on PE 005,AQCHEM不收敛则代表排放数据有问题,需要检查emis数据是否有问题。
2.mcip错误
(1)set IfTer = "F",如果设置为F,则生成的GRIDCRO2D缺少PURB变量,跑CCTM就可能会有问题,所以为了防止CCTM报错,需要修改为T。
(2)mcip的版本不一致,生成文件的个数也不一致,MCIPv4.4之后的版本,都会生成LUFRAC_CRO,SOI_CRO,相当于把原来数据中的某些变量单独储存在这两个文件中,所以跑CCTM需要注意,如果没有生成LUFRAC_CRO,SOI_CRO,需要注释掉相关语句。
3.wbdust错误
(1)运行wbdust需要注意两点,第一个是src文件夹中的dpp.csh需要打开可执行权限(chmod u+x dpp.csh),第二个需要添加如下环境变量:
export PATH=/net/20/tao/CMAQv5.2/PREP/wbdust/scripts/src:$PATH(一定要注意,是src或者dpp文件夹,而不是dpp.x的路径)
(2)monthly_to_daily.ncl.2017脚本运行报错(脚本只需要case、geo_em路径;如果需要修改时间,必须利用sed -i命令将所有的2017修改为2016,而且需要注意将365修改为366,2月份变成29天。一定要注意闰年和平年的区别)
(3)2.csh中的文件名太长不能被识别,运行过程可能会有交互,需要进行选择,其余都选择默认,LOCOL,HICOL,LOROW,HIROW的输入涉及到mcip中裁剪网格(本人习惯在wrf网格基础上上下左右各裁剪6个网格作为cmaq网格),所以LOCOL和LOROW均为7(6+1),HICOL和HIROW为裁剪后的网格行列数。生成的文件一定要ncdump查看,确认坐标和行列数与GRIDDESC一致。(wbdust文件一生成就是一年,不要在交互界面随意更改开始时间和时间步长)
4.icon,bcon比较简单,错误较少。emis制作各不相同,这里不做分享。最后提醒大家一定要及时备份脚本,少用rm -f,不然误删之后从头再来哈哈哈!
如果有小伙伴有其他问题或者报错,欢迎在评论下面分享交流,祝大家学习模型顺利~~~