- 积分
- 111
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-8-31
- 最后登录
- 1970-1-1
|
发表于 2019-11-21 19:21:35
|
显示全部楼层
空气质量模型应用的核心难点就是清单的准备,两个途径:
1. 攻破smoke模型,毕竟这是cmaq模型体系的默认清单处理模型,但是由于SMOKE适应的是美国的清单数据体系,我国没有这样的体系,所以你需要根据他的文件特征解决IDA或者其他格式的排放清单文件编制(是个很简单的fortran问题,不同字段对应不同的格式,需要注意一些单位的转换),并完成相关的支撑文件,如COSTCY文件、时间索引、时间分配文件、物种分配文件、物种分配索引文件等,通常这些东西弄完你的smoke就算搞清楚三分之一了,这是个硬骨头,不要指望别的课题组会给你多少帮助,但是不是不可能完成的事情,毕竟SMOKE手册写得很清楚;
2. 跳过smoke,直接写成ioapi格式的数据,所谓的ioapi其实是一个特殊约定的netcdf格式文件,有一些特殊的attribute用来给ioapi读取用,相关的格式可以从cmaq示例文件里面找到,但是因为你跳过了smoke但是又不能不管smoke实现的功能,这些东西都需要你自己做,包括但不限于(默认你不是gis高手,因为gis高手会怎么做我不知道,我不懂gis):
a) 空间分配,你需要从griddot2d和gridcro2d文件里面读取经纬度信息,获得每个网格的中心经纬度和对应的边界经纬度,将你的网格化清单通过resample也好怎么也好放到对应的网格里面;
b) 物种分配,根据你选择的机制(如cb05、cb06、ae5、ae6)将VOCs、NOx、PM2.5分为必要的组分,涉及单位换算(气态污染物为mol/s,颗粒态为g/s,但是清单是t/a)
c) 垂直分配,针对点源你需要利用布里吉斯公式或者参考薛文博等的因子法将点源排放放到不同的高度里面,模型层对应的高度在metcro3d文件中获取;
d) 时间分配,你需要根据排放特征(从活动水平、在线监测等处获取),将年排放分成具有明显时间属性的月排放、日排放(结合周几来做)和小时排放;
e) 文件生成,上述内容可以说主要是编程技巧和简单数学的范畴,那么现在你需要自己编程生成cmaq所需的ioapi数据了,你可以用matlab、ncl、R等提供netcdf读写能力的程序手动实现ioapi的约定,也可以用c、fortran直接调用ioapi来写,到了这里的话就可以测试了,如果测试通过,这件事就成了。
回到开头,不管你用1还是2,都是很难的一件事情,除开技术本身,更多的是需要你专心研究这件事,从其他课题组或者人那里能够得到的帮助是很有限的,,每个课题组都有自己的处理方法。
至于我,当然是第一种和第二种都会咯,其中第二种打算最近开源出来,但是实在是没空写文档,估计只有来年了。
|
|