AERMET 是 AERMOD 里面很重要的一环!因为气象参数的影响对于空品模式是相当重要的!
影响扩散模式最重要的一环,当然就是气象场数据。AERMOD 的气象场数据,主要是通过相关附属模块,也就是 AERMET 的协助来处理。 如前所述,AERMOD 运作时,需要一组地面风场数据,以及一组探空数据。然后将这两个数据丢进 AERMET 整理成为 AERMOD 可以读取的数据, 才能够开始进行模式的运作。就让我们来理解一下如何操作 AERMET 吧!
AERMET 对于 AERMOD 来说,是很重要的!因为气象条件不准确的话,后续的所有仿真与分析都是垃圾!
AERMET 模式是 AERMOD 的附属模块之一,主要的目的在提供 AERMOD 运作时,所需要的 (1)地面风场数据与 (2)探空数据等。 但是 AERMET 一开始是针对美国的气象场设计而来的,因此,读取的数据格式主要是美国国家气象服务 (National Weather Service, NWS) 所观测的气象数据格式。 NWS 主要提供两种数据,一个是每天两次的探空数据 (soundings),一个是地面的观测站数据。在取得上述的数据后,AERMET 可以进行如下的动作:
最终 AERMET 在完成上述的动作之后,会产生两个文件:
US EPA 指定了 AERMOD 作为法规标准的扩散模式,而 AERMOD 扩散模式主要在仿真近场的污染浓度扩散仿真,所谓的近场大致上范围就是 50 公里内。 为了要仿真扩散行为,AERMET 就被开发用来作为扩散仿真的气象场准备数据。AERMET 可以评估计算大气边界层 (ABL) 或者是所谓的行星边界层 (PBL) 的特征参数, 据以提供给 AERMOD 进行仿真。
AERMET 主要运作三种数据格式:
基本上的运作主要分为两种,一种是完全由观测值取得的地面与高空数据,就是上面的 1, 2 项数据。如果你手边有大气模式的输出档,例如 WRF 的全年输出数据, 那就可以通过 AERMET 的插件,亦即是 MMIF 这个模块,直接从已经网格化的气象场当中取出所需要的数据即可!因此,上述的第 3 项数据,其实就已经包含了全部所需要的地面与探空数据了。 而且数据可能比观测值还要更可靠!
因为 WRF 所输出的气象场数据非常庞大,除了原本就有在玩气象模式的朋友之外,大部分的朋友大概很难取这些数据。所以,US EPA 所提供的使用手册, 也只是针对上述的 1, 2 项数据来进行说明。整体的 AERMET 流程如下图所示:
因为 NWS 提供的数据数据相当庞大,因此地面观测数据与探空数据,就得要针对不同地点来截取 (extracted) 出来!你可以看到上图中, 从左而右的最上方两条线路,第一条就是取出地面风场数据 (surface observations),第二条就是探空数据 (soundings)。第一条跟第二条中间的一个小区块, 名称为『 1-min ASOS 』是比较新的数据,是一分钟一笔的数据数据,并不是小时数据!因为台湾似乎没有这方面的数据,所以,这一条 (1-min ASOS) 就可以先忽略。 至于最后一条『 Raw site-specific data 』则是针对测站的相关设置,则可以直接指定到设置档当中,也不用事先读出。
对于台湾这种非 NWS 数据格式的系统来说,比较讨厌的,就是得要事先将我们自己的观测数据格式转成 AERMET 可以处理的格式!也就是说, 要先将格式转为 NWS 的格式之后,后续就能直接使用 AERMET 的相关模式功能。否则,连开始都无法开始啊!
如上图所示,基本上, AERMET 共需要进行三个阶段 (stage),第一阶段就是在进行地面测站及探空数据的截取,一直到 QA 之后,都是属于第一阶段的工作范围。 第二阶段则是在整理 24 小时的数据,将数据汇整成为单一输出档,如上图中右侧数来的第二个字段:『 Merged Data: 24-h blocks 』就是这个阶段的数据。 第三阶段就是将刚刚的单一气象文件转成地面与 PBL 参数,还有垂直剖面文件两者。这三个阶段必需要分别进行,因为每个阶段都会产生下个阶段的输入数据! 所以,当然需要依序进行三次才行!
AERMET 可以读入的气象场参数数据主要格式为 TD-3280 与 CD-144 等,不过,咱们中央气象局的气象场数据,并不是这两种格式喔! 你可以自行到『大气水文研究数据库』(ps2)去查阅相关的气象局下载数据。因此,如果需要让 AERMET 可以读入气象场数据, 就得要将中央气象局的数据进行转换。不过,要转换也有点麻烦~因为 AERMET 有规定自己的读取格式!相关格式可以参考 AERMET 用户手册的附录 C (ps1),里面就有谈到相关的读取格式。
不过,光是从大气水文研究数据库下载数据,可能就花费许多时间了,更何况还得要参考上述的文档去转换成为 AERMET 可以认识的格式! 鸟哥考虑到大家的困难~就先根据上述的文档,编译好了一组可以在 Linux 系统上面运作的 cwb2aermet-static.exe 文件。这个文件只能在 Linux 底下运作! 不过运作之前还是得要注意输入数据的格式问题!基本上,就是直接从中央气象局的数据去分析就是了。
一般研究人员可以从大气水文数据库所提供的界面去申请下载,当然,您得要有所谓研究人员的资格,否则,可能就得要发文去给相关的单位申请。 在 2000 年以前,我们想要做这种研究,是得样向中央气象局申请购买,然后对方会寄光盘片来,一打开...里面都是图片档~然后一张一张打印出来, 再重复输入到类似 Excel 的文件里面后,才能做后续的分析。现在已经都有电子档,格式也都调整成固定的模式,已经改善非常非常多了。
上述的网站里面顺利的登录之后,点击『数据库』的『基本查找』之后,点击中央气象局的『局属逐时』、『探空』这两个格式就好, 往下拉动后,到达时间设置的部份。这次我们选择 2016 年的数据来解释的话,那就勾选 2016 年的 12 个月的数据。 之后就按下『送出查找』,你就会看到类似如下的画面:
如上图,按下『全选』然后再按下右上角的『产生压缩档』之后,过不多久,就可以下载压缩档了!这是因为数据量非常庞大,没有压缩的话,很耗带宽啊! 等到你下载之后,在将该文件解开,里面就有 2016 年全年的地面测站数据与探空数据。至于文件名的制定方式,通常是这样的:
最后,将下载的文件通过 zip 解压缩之后,就可以得到正确的文件了。在 Linux 系统底下,将 24 个文件通通放置到同一个目录去,假设为 cwb 目录好了, 那么就会有点像这样:
# 1. 假设用户名为 user,预计操作 AERMET 目录在家目录的 aermet 底下: [user@localhost ~]$ mkdir aermet [user@localhost ~]$ cd aermet [user@localhost aermet]$ mkdir cwb [user@localhost aermet]$ cd cwb # 2. 假设你通过各种方式,已经将名为 2018091217311031398.zip 放置到本目录中,并将他解压缩 [user@localhost cwb]$ ll -rw-rw-r-- 1 user user 55361553 7月 24 16:46 2018091217311031398.zip <==必须存在这个文件 [user@localhost cwb]$ unzip 2018091217311031398.zip <==进行解压缩! Archive: 2018091217311031398.zip inflating: 201601_upair.txt inflating: 201602_upair.txt ... [user@localhost cwb]$ ll -rw-rw-r-- 1 user user 7867084 7月 24 16:48 201601_cwb_hr.txt -rw-rw-r-- 1 user user 685822 7月 24 16:48 201601_upair.txt -rw-rw-r-- 1 user user 7359676 7月 24 16:48 201602_cwb_hr.txt -rw-rw-r-- 1 user user 700462 7月 24 16:48 201602_upair.txt -rw-rw-r-- 1 user user 7867084 7月 24 16:48 201603_cwb_hr.txt -rw-rw-r-- 1 user user 731511 7月 24 16:48 201603_upair.txt -rw-rw-r-- 1 user user 7613380 7月 24 16:48 201604_cwb_hr.txt -rw-rw-r-- 1 user user 811665 7月 24 16:48 201604_upair.txt -rw-rw-r-- 1 user user 7867084 7月 24 16:48 201605_cwb_hr.txt -rw-rw-r-- 1 user user 915487 7月 24 16:48 201605_upair.txt -rw-rw-r-- 1 user user 7466068 7月 24 16:48 201606_cwb_hr.txt -rw-rw-r-- 1 user user 816301 7月 24 16:48 201606_upair.txt -rw-rw-r-- 1 user user 7613380 7月 24 16:48 201607_cwb_hr.txt -rw-rw-r-- 1 user user 854182 7月 24 16:48 201607_upair.txt -rw-rw-r-- 1 user user 7613380 7月 24 16:48 201608_cwb_hr.txt -rw-rw-r-- 1 user user 844361 7月 24 16:48 201608_upair.txt -rw-rw-r-- 1 user user 7367860 7月 24 16:48 201609_cwb_hr.txt -rw-rw-r-- 1 user user 980635 7月 24 16:48 201609_upair.txt -rw-rw-r-- 1 user user 7613380 7月 24 16:48 201610_cwb_hr.txt -rw-rw-r-- 1 user user 1029069 7月 24 16:48 201610_upair.txt -rw-rw-r-- 1 user user 7367860 7月 24 16:48 201611_cwb_hr.txt -rw-rw-r-- 1 user user 839664 7月 24 16:48 201611_upair.txt -rw-rw-r-- 1 user user 7613380 7月 24 16:48 201612_cwb_hr.txt -rw-rw-r-- 1 user user 851132 7月 24 16:48 201612_upair.txt -rw-rw-r-- 1 user user 55361553 7月 24 16:46 2018091217311031398.zip [user@localhost cwb]$ rm 2018091217311031398.zip
这样就完成下载文件在 Linux 的解压缩工作了!如果你不熟 Linux 的话,那么,就先不要玩模式了!大部分的模式操作都是在 Linux 系统底下运作的! 如果不熟悉 Linux ,会很难入门啊!所以,基本功 (蹲马步) 是需要的!请在本站慢慢的先学习 Linux 基础吧!
因为 AERMET 只会分析一个地面测站以及一个高空测站的数据,但是中央气象局的数据,通常是全台的数据!所以,你得要先知道,你要取得的是哪一个县市的地面测站! 你可以参考底下的链接:
举例来说,我们可能想要知道高雄市附近的扩散仿真,因此,选择了高雄测站的『 467440 』这一个站址,然后,探空数据只有两个, 一个是台北 (466920) 一个是花莲 (466990),毕竟我们是在西岸,所以,探空数据也只能选择 466920 这一个测站地址。知道了测站信息之后, 接下来就可以通过底下的方式来截取所需要的探空与地面测站数据了!
# 先进入到刚刚创建的 aermet 目录中,并截取地面观测数据 [user@localhost ~]$ cd ~/aermet [user@localhost aermet]$ grep -h '^467440' ./cwb/2016*cwb*.txt | grep -v '\/\/\/' > cwb_2016_surface [user@localhost aermet]$ grep -h '^466920' ./cwb/2016*up*.txt | grep -v '\/\/\/' > cwb_2016_upair [user@localhost aermet]$ ll drwxrwxr-x 2 user user 4096 7月 24 16:49 cwb -rw-rw-r-- 1 user user 2995344 7月 24 17:07 cwb_2016_surface <==地面测站的观测数据 -rw-rw-r-- 1 user user 5035855 7月 24 17:07 cwb_2016_upair <==探空数据的观测
有兴趣的朋友可以使用 vim 去看一下每一个文件的内容,否则就直接略过~这样就已经处理好等等我们需要的中央气象局的数据了!
接下来就是转档!通过鸟站下载程序后,直接将刚刚取得的数据转档即可。转档程序在这里
[user@localhost ~]$ cd ~/aermet [user@localhost aermet]$ wget http://vbird.org.cn/enve/images/cwb2aermet-static.exe [user@localhost aermet]$ chmod a+x cwb2aermet-static.exe [user@localhost aermet]$ ./cwb2aermet-static.exe cwb_2016_surface cwb_2016_upair SF_2016_467440.EXT UP_2016_466920.FSL 22.5660 120.3157 2.3 地面测站文件名:cwb_2016_surface 探空测站文件名:cwb_2016_upair 完成探空数据 开始处理地面数据的读写 完成地面数据的处理 [user@localhost aermet]$ ll drwxrwxr-x 2 user user 4096 7月 24 16:49 cwb -rw-rw-r-- 1 user user 2995344 7月 24 17:34 cwb_2016_surface -rw-rw-r-- 1 user user 5020300 7月 24 17:34 cwb_2016_upair -rwxrwxr-x 1 user user 1116552 7月 24 11:54 cwb2aermet-static.exe -rw-rw-r-- 1 user user 1352736 7月 24 17:36 SF_2016_467440.EXT <==用于 AERMET 的地面测站数据 -rw-rw-r-- 1 user user 1020756 7月 24 17:36 UP_2016_466920.FSL <==用于 AERMET 的探空数据
转档程序的语法也挺单纯的:
[user@localhost ~]$ ./cwb2aermet-static.exe 地表观测值 探空观测值 地表输出档 探空输出档 测站纬度 测站精度 测站高度
这样就准备好了 AERMET 要读取的大气数据啰!
在 Linux 服务器上面运作模式有许多的好处,除了你能够让 aermet 的数据与所有同事共享之外 (只要有帐号), 也可以从任何地方取得同一份模式运作完的数据!此外,大家统一使用 Server 的资源,也可以不用担心会影响到你的 windows 工作用机器! 你也无须担心,如果你的 windows 死掉,或者是需要系统升级,会导致磁盘内的模式数据遗失!最后, Linux 系统的稳定性与资源分配都比 windows 来的好!因此,要跑模式,首选就是 Linux。
可惜的是, US EPA 编译完成的 AERMET 仅针对 Windows 系统,所以该代码无法在 Linux 上面运作。 为此,我们得要从 US EPA 下载原代码 (纯文本的代码文件),并且重新编译成为我们自己 Linux 可以运作的模样, 这样就能在我们的 Linux 上面运作了。整体流程也不难,鸟哥是以 CentOS 7 为范本进行编译, 你可以依据你的系统来进行重新改写的动作!
首先,你必须要取得管理员的身份才行!如果不清楚如何处理,请向你的 Linux server 管理员询问。 假设你的身份已经是管理员了,接下来可以这样进行任务:
# 直接使用 CentOS 的 yum 功能,直接安装所需要的软件即可 [root@localhost ~]# yum -y groupinstall "Development Tools" [root@localhost ~]# yum -y install libgfortran-static and glibc-static wget [root@localhost ~]# gfortran -v 使用内置 specs。 COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper 目的:x86_64-redhat-linux 配置为:../configure --prefix=/usr --mandir=/usr/share/man ..... 线程模型:posix gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
这样就搞定了我们编译过程中所需要的各项参数了!
你可以自己前往 US EPA 的官网下载所需要的软件,也可以通过底下的方式,直接使用你的 Linux server 在线直接下载原代码。 鸟哥这里使用的原代码为 v18081 这个版本~直接这样做即可:
# [user@localhost ~]$ cd ~/aermet [user@localhost aermet]$ mkdir build [user@localhost aermet]$ cd build [user@localhost build]$ wget https://www3.epa.gov/ttn/scram/7thconf/aermod/aermet_source.zip [user@localhost build]$ ll -rw-rw-r--. 1 user user 475062 4月 27 2018 aermet_source.zip [user@localhost build]$ unzip aermet_source.zip [user@localhost build]$ vim compile.sh #!/bin/bash COMPILE_FLAGS=" -fbounds-check -Wuninitialized -Ofast -static -march=native -ffast-math -funroll-loops" LINK_FLAGS=" -static -Ofast -march=native -ffast-math -funroll-loops" sources="mod_AsosCommDates.for AERMET.FOR AERSURF.FOR AERSURF2.FOR ASOSREC.FOR AUDIT.FOR AUTCHK.FOR AVGCRD.FOR BANNER.FOR BULKRI.FOR CALMS.FOR CBLHT.FOR CHRCRD.FOR CHRCRD2.FOR CHROND.FOR CLHT.FOR CLMCRD.FOR CLOUDS.FOR COMPDT.FOR CUBIC.FOR CVG.FOR D028LV.FOR D144HD.FOR D144LV.FOR D3280H.FOR D3280L.FOR D6201H.FOR D6201L.FOR DATCRD.FOR DATER.FOR DEF256.FOR DEFINE.FOR DOCLDS.FOR DTCRD.FOR EQ_CCVR.FOR ERRHDL.FOR FDKEY.FOR FDPATH.FOR FETCH.FOR FLIWK1.FOR FLIWK2.FOR FLOPEN.FOR FLOS.FOR FLSDG.FOR FLSFC.FOR FLWRK1.FOR FLWRK2.FOR FMTCRD.FOR FNDCOMDT.FOR GEO.FOR GET620.FOR GETASOS.FOR GETCCVR.FOR GETFIL.FOR GETFLD.FOR GETFSL.FOR GETSFC.FOR GETTEMP.FOR GETWRD.FOR GMTLST.FOR GREG.FOR HDPROC.FOR HEADER.FOR HEAT.FOR HGTCRD.FOR HR0024.FOR HTCALC.FOR HTKEY.FOR HUMID.FOR HUSWX.FOR ICHRND.FOR INCRAD.FOR INTEQA.FOR INTHF.FOR ISHWX.FOR JBCARD.FOR LATLON.FOR LOCCRD.FOR LWRUPR.FOR MANDEL.FOR MDCARD.FOR MERGE.FOR MIDNITE.FOR MODEL.FOR MPCARD.FOR MPFIN.FOR MPHEAD.FOR MPMET.FOR MPOUT.FOR MPPBL.FOR MPPROC.FOR MPTEST.FOR MRCARD.FOR MRHDR.FOR MRPATH.FOR NETRAD.FOR NR_ANG.FOR NWSHGT.FOR OAUDIT.FOR OSCARD.FOR OSCHK.FOR OSDTCD.FOR OSDUMP.FOR OSFILL.FOR OSFILL2.FOR OSHRAV.FOR OSNEXT.FOR OSPATH.FOR OSPRNT.FOR OSQACK.FOR OSQAST.FOR OSRANGE.FOR OSREAD.FOR OSSMRY.FOR OSSUMS.FOR OSSWAP.FOR OSTEST.FOR OSTRA.FOR OSWRTE.FOR OTHHDR.FOR P2MSUB.FOR PRESET.FOR PTAREA.FOR PTGRAD.FOR RDHUSW.FOR RDISHD.FOR RDLREC.FOR RDSAMS.FOR READRL.FOR REALQA.FOR RHOCAL.FOR RNGCRD.FOR SAMWX.FOR SAUDIT.FOR SBLHT.FOR SCNGEN.FOR SECCRD.FOR SECCRD2.FOR SETHUS.FOR SETSAM.FOR SETUP.FOR SFCARD.FOR SFCCH.FOR SFCCH2.FOR SFCCRD.FOR SFCCRD2.FOR SFCHK.FOR SFCWXX.FOR SFEXST.FOR SFEXT.FOR SFPATH.FOR SFQASM.FOR SFQAST.FOR SFQATM.FOR SFTRA.FOR SMTHZI.FOR STONUM.FOR SUBST.FOR SUMHF.FOR SUMRY1.FOR SUMRY2.FOR SUNDAT.FOR TDPEST.FOR TEST.FOR THRESH1MIN.FOR UACARD.FOR UACHK.FOR UAEXST.FOR UAEXT.FOR UAMOVE.FOR UAPATH.FOR UAQASM.FOR UAQAST.FOR UATRA.FOR UAUDIT.FOR UAWNDW.FOR UCALCO.FOR UCALST.FOR VALCRD.FOR VARCRD.FOR VRCARD.FOR WRTCRD.FOR YR2TOYR4.FOR YR4TOYR2.FOR XDTCRD.FOR XTNDUA.FOR" for file in ${sources} do gfortran -m64 -c ${COMPILE_FLAGS} ${file} done gfortran -m64 -o aermet.exe ${LINK_FLAGS} mod_AsosCommDates.o AERMET.o AERSURF.o AERSURF2.o ASOSREC.o AUDIT.o AUTCHK.o AVGCRD.o \ BANNER.o BULKRI.o CALMS.o CBLHT.o CHRCRD.o CHRCRD2.o CHROND.o CLHT.o CLMCRD.o CLOUDS.o \ COMPDT.o CUBIC.o CVG.o D028LV.o D144HD.o D144LV.o D3280H.o D3280L.o D6201H.o D6201L.o \ DATCRD.o DATER.o DEF256.o DEFINE.o DOCLDS.o DTCRD.o EQ_CCVR.o ERRHDL.o FDKEY.o FDPATH.o \ FETCH.o FLIWK1.o FLIWK2.o FLOPEN.o FLOS.o FLSDG.o FLSFC.o FLWRK1.o FLWRK2.o FNDCOMDT.o \ FMTCRD.o GEO.o GET620.o GETASOS.o GETCCVR.o GETFIL.o GETFLD.o GETFSL.o GETSFC.o GETTEMP.o GETWRD.o GMTLST.o GREG.o HDPROC.o HEADER.o HEAT.o \ HGTCRD.o HR0024.o HTCALC.o HTKEY.o HUMID.o HUSWX.o ICHRND.o INCRAD.o INTEQA.o INTHF.o ISHWX.o JBCARD.o \ LATLON.o LOCCRD.o LWRUPR.o MANDEL.o MDCARD.o MERGE.o MIDNITE.o MODEL.o MPCARD.o MPFIN.o MPHEAD.o MPMET.o \ MPOUT.o MPPBL.o MPPROC.o MPTEST.o MRCARD.o MRHDR.o MRPATH.o NETRAD.o NR_ANG.o NWSHGT.o OAUDIT.o OSCARD.o \ OSCHK.o OSDTCD.o OSDUMP.o OSFILL.o OSFILL2.o OSHRAV.o OSNEXT.o OSPATH.o OSPRNT.o OSQACK.o OSQAST.o OSRANGE.o OSREAD.o OSSMRY.o \ OSSUMS.o OSSWAP.o OSTEST.o OSTRA.o OSWRTE.o OTHHDR.o P2MSUB.o PRESET.o PTAREA.o PTGRAD.o RDHUSW.o RDISHD.o RDLREC.o \ RDSAMS.o READRL.o REALQA.o RHOCAL.o RNGCRD.o SAMWX.o SAUDIT.o SBLHT.o SCNGEN.o SECCRD.o SECCRD2.o SETHUS.o \ SETSAM.o SETUP.o SFCARD.o SFCCH.o SFCCH2.o SFCCRD.o SFCCRD2.o SFCHK.o SFCWXX.o SFEXST.o SFEXT.o SFPATH.o \ SFQASM.o SFQAST.o SFQATM.o SFTRA.o SMTHZI.o STONUM.o SUBST.o SUMHF.o SUMRY1.o SUMRY2.o SUNDAT.o TDPEST.o \ TEST.o THRESH1MIN.o UACARD.o UACHK.o UAEXST.o UAEXT.o UAMOVE.o UAPATH.o UAQASM.o UAQAST.o UATRA.o UAUDIT.o UAWNDW.o \ UCALCO.o UCALST.o VALCRD.o VARCRD.o VRCARD.o WRTCRD.o YR2TOYR4.o YR4TOYR2.o XDTCRD.o XTNDUA.o [user@localhost build]$ sh compile.sh [user@localhost build]$ ll aermet.exe -rwxrwxr-x. 1 user user 2900600 7月 25 00:16 aermet.exe [user@localhost build]$ cd ~/aermet/ [user@localhost aermet]$ ln -s build/aermet.exe . [user@localhost aermet]$ ll lrwxrwxrwx. 1 user user 16 7月 25 00:21 aermet.exe -> build/aermet.exe <==这就是重点! drwxrwxr-x. 2 user user 12288 7月 25 00:16 build drwxrwxr-x. 2 user user 4096 7月 24 16:49 cwb -rw-rw-r--. 1 user user 2995344 7月 24 23:57 cwb_2016_surface -rw-rw-r--. 1 user user 5020300 7月 24 23:57 cwb_2016_upair -rwxrwxr-x. 1 user user 1116552 7月 24 11:54 cwb2aermet-static.exe -rw-rw-r--. 1 user user 1352736 7月 24 23:57 SF_2016_467440.EXT -rw-rw-r--. 1 user user 1020756 7月 24 23:57 UP_2016_466920.FSL
这样就编译好了 AERMET 主代码!接下来的三个步骤,全部都需要用到这个家伙喔!
如同上述的数据,要完成 AERMET 的处理,需要有三个基本的阶段 (stage),第一个阶段是解析出我们需要的数据, 第二个阶段则是集成地面数据与探空数据成为唯一的一个气象档,第三个阶段则是处理出地面数据+探空数据两个 AERMOD ready 的文件。 全部的三个阶段都是使用刚刚我们编译成功的 aermet.exe 来运行的。那 aermet 怎么知道要处理那一个阶段呢?这就需要我们撰写设置档来处置了。
至于设置档的文件名,通常扩展名会指定为 .inp 就是了,而设置档内容大致分为 6 个部份,这 6 部份可称为设置关键字或路径 (pathway):
假设以我们这次仿真的 2016 年全年高雄地区的 AERMET stage1 的设置为例,它的设置内容,有点类似这样:
JOB MESSAGES MSG.STAGE1 REPORT RPT.STAGE1 UPPERAIR DATA UP_2016_466920.FSL FSL EXTRACT UP_2016_466920.EXT QAOUT UP_2016_466920.QA XDATES 2016/01/01 TO 2016/12/31 LOCATION 466920 25.04N 121.51E -8 AUDIT UAPR UAHT UATT UATD UAWD UAWS ** 这底下是关于地面测站,其中 SF_2016_467440.EXT 就是直接从气象局数据转换得来的文件 SURFACE EXTRACT SF_2016_467440.EXT QAOUT SF_2016_467440.QA XDATES 2016/01/01 TO 2016/12/31 LOCATION 467440 22.566N 120.316E 0 2.3
基本语法说明如下:
再回头来看一下,我们现在有的文件有两个,其中探空数据是尚未经过 QA 的类型,但是地面数据则已经是经过 QA 之后的类型了。 也就是说:
现在,让我们来创建这个 stage1.inp 的输入文件:
[user@localhost ~]$ cd ~/aermet [user@localhost aermet]$ vim stage1.inp ** 这个部份在说明整体工作的意思,消息输出在 MSG.STAGE1 的内容,报告则在 RPT.STAGE1 啰! JOB MESSAGES MSG.STAGE1 REPORT RPT.STAGE1 ** 这个部份在讲解地面观测值!其中 SF_2016_467440.EXT 是鸟哥程序转换过来的,AERMET 自动生成 SF_2016_467440.QA SURFACE EXTRACT SF_2016_467440.EXT QAOUT SF_2016_467440.QA XDATES 2016/01/01 TO 2016/12/31 LOCATION 467440 22.566N 120.316E 0 2.3 AUDIT PRCP SLVP PRES TMPD DPTP RHUM WDIR WSPD ** 这个部份在讲探空数据,其中 UP_2016_466920.FSL 是经过鸟哥程序转换过来的,AERMET 会主动生成 UP_2016_466920.EXT 与 UP_2016_466920.QA UPPERAIR DATA UP_2016_466920.FSL FSL EXTRACT UP_2016_466920.EXT QAOUT UP_2016_466920.QA XDATES 2016/01/01 TO 2016/12/31 LOCATION 466920 25.04N 121.51E -8 AUDIT UAPR UAHT UATT UATD UAWD UAWS
上述的文件中,除了 JOB 的内容大致上就是转档过程中的错误消息告知 (例如原始数据是否有缺值、是否有其他数值不合理而改变等等), 在地面观测值与探空数据的说明如下:
这个设置档设置妥当之后,接下来就是需要运行!运行过程也是很简单!下达这样的指令即可:
[user@localhost aermet]$ ./aermet.exe stage1.inp AERMET Version 18081 Pre-processing the Setup Information Processing the Setup Information ******************************************************** *** AERMET Setup Finished Successfully *** ******************************************************** + Stage 1: Extracting upper air data for month/day/year 01/01/16 + Stage 1: Extracting upper air data for month/day/year 01/01/16 ..... + Stage 1: Extracting upper air data for month/day/year 12/31/16 + Stage 1: Extracting upper air data for month/day/year 12/31/16 + Stage 1: QA'ing upper air data for month/day/year 01/01/16 + Stage 1: QA'ing upper air data for month/day/year 01/01/16 .... + Stage 1: QA'ing upper air data for month/day/year 12/31/16 + Stage 1: QA'ing upper air data for month/day/year 12/31/16 + Stage 1: QA'ing surface data for month/day/year 01/01/16 + Stage 1: QA'ing surface data for month/day/year 01/02/16 .... + Stage 1: QA'ing surface data for month/day/year 12/31/16 Processing completed; writing summary files ******************************************************** *** AERMET Data Processing Finished Successfully *** ******************************************************** The Summary Report Generated by AERMET Is In: RPT.STAGE1 # 对!这样就跑完了!过程会有相当相当多的信息,每天会跑出一个信息!所以要注意查看。 [user@localhost aermet]$ ll -rw-rw-r--. 1 user user 10346 7月 26 15:03 MSG.STAGE1 <==主要的消息输出档 -rw-rw-r--. 1 user user 13091 7月 26 15:03 RPT.STAGE1 <==成果报告档 -rw-rw-r--. 1 user user 1352736 7月 24 23:57 SF_2016_467440.EXT <==中央气象局地面观测转出档 -rw-rw-r--. 1 user user 1353656 7月 26 15:03 SF_2016_467440.QA <==AERMET QA 后的文件 -rw-rw-r--. 1 user user 987 7月 26 14:51 stage1.inp <==我们刚刚上头撰写的参数设置档 -rw-rw-r--. 1 user user 767656 7月 26 15:03 UP_2016_466920.EXT <==经由 FSL 转档过来的数据 -rw-rw-r--. 1 user user 1020756 7月 24 23:57 UP_2016_466920.FSL <==中央气象局取得的探空数据 -rw-rw-r--. 1 user user 767620 7月 26 15:03 UP_2016_466920.QA <==AERMET QA 后的文件
有兴趣的话,我个人建议你一定要去 MSG.STAGE1 看看,因为所有的可能错误消息都在里面!比较多的数据都是『缺值』! 例如中央气象局的探空数据,可能因为某些缘故有缺乏~缺乏数据时,AERMET 会略过啦!
Stage2 的流程很简单,就是要将刚刚创建好的经过 QA 的文件集成成为一个气象场文件数据!连设置档的内容都很单纯!
[user@localhost aermet]$ vim stage2.inp JOB MESSAGES MSG.STAGE2 REPORT RPT.STAGE2 UPPERAIR QAOUT UP_2016_466920.QA <==由 stage1 产生的 QA 文件 SURFACE QAOUT SF_2016_467440.QA <==由 stage1 产生的 QA 文件 MERGE OUTPUT MERGE.STAGE2 <==预计要创建的唯一气象场文件 XDATES 2016/01/01 TO 2016/12/31
比较重要的是 MERGE 这个 pathway,这个路径主要在处理 stage2 的集成工作!最重要的就是输出 (OUTPUT) 这个设置值就是了! 所以整体设置很单纯!接下来,你只要这样运行即可:
[user@localhost aermet]$ ./aermet.exe stage2.inp AERMET Version 18081 Pre-processing the Setup Information Processing the Setup Information ******************************************************** *** AERMET Setup Finished Successfully *** ******************************************************** + Stage 2: Merging month/day/year 01/01/16 + Stage 2: Merging month/day/year 01/02/16 ..... + Stage 2: Merging month/day/year 12/30/16 + Stage 2: Merging month/day/year 12/31/16 Processing completed; writing summary files ******************************************************** *** AERMET Data Processing Finished Successfully *** ******************************************************** The Summary Report Generated by AERMET Is In: RPT.STAGE2 [user@localhost aermet]$ ll -rw-rw-r--. 1 user user 4072136 7月 26 15:14 MERGE.STAGE2 -rw-rw-r--. 1 user user 543 7月 26 15:14 MSG.STAGE2 -rw-rw-r--. 1 user user 19539 7月 26 15:14 RPT.STAGE2 -rw-rw-r--. 1 user user 240 7月 26 15:14 stage2.inp
新产生的数据也不过就是上述的文件而已。比较重要的是第一个 MERGE.STAGE2 文件名!这个是等等 stage3 会用到的文件喔!
AERMET 的第三阶段,就是要产生 AERMOD 能够读取的气象数据了!而当中最重要的,大概就是 PBL 的相关信息!其中就以仿真区域的地表特征最重要! 我们在前一章节有提到流体力学的特性,在表面的时候,可能会有流速为 0 的情境发生!但是这个流体的情况与表面粗糙度有关! 因此,在设计仿真区域的特征时,就得要提供这方面的仿真表面数据才行。
基本上,仿真范围内的地表面,不可能都是一模一样的!因此,US EPA 有另外提供一个名为 AERSURFACE 的模块来处理! 不过,AERSURFACE 还是需要其他地形特征的输入参数才可以运作,因此,这里我们还是将仿真区域假设为单一样貌的地表特征! 这样比较好处理。
台湾地区的土地利用型态研究,通过环保署的项目计划结果,可以使用底下的数据来设置喔!
如果以我们这个案例当中想要仿真的高雄市区来说,应该是可以选择 7 号都市区的设置值。那么就来瞧一瞧 stage3.inp 的内容应该要有哪些设置吧!
[user@localhost aermod]$ vim stage3.inp JOB MESSAGES MSG.STAGE3 REPORT RPT.STAGE3 METPREP DATA MERGE.STAGE2 XDATES 2016/01/01 TO 2016/12/31 MODEL AERMOD METHOD WIND_DIR RANDOM METHOD REFLEVEL SUBNWS METHOD STABLEBL BULKRN METHOD ASOS_ADJ NO_ADJ METHOD UASELECT SUNRISE NWS_HGT WIND 14 OUTPUT aermet_2016_467440.SFC PROFILE aermet_2016_466920.PFL FREQ_SECT ANNUAL 1 SECTOR 1 0 360 SITE_CHAR 1 1 0.16 0.8 1.2
METPREP 这个 pathway 主要是在进行大气信息的评估计算,里面的设置值大概有这些:
设计妥当之后,自然就是开始跑啰!运行过程也是很简单:
[user@localhost aermet]$ ./aermet.exe stage3.inp AERMET Version 18081 Pre-processing the Setup Information Processing the Setup Information ******************************************************** *** AERMET Setup Finished Successfully *** ******************************************************** + Stage 3: Now processing month/day/year 01/01/16 + Stage 3: Now processing month/day/year 01/02/16 .... + Stage 3: Now processing month/day/year 12/30/16 + Stage 3: Now processing month/day/year 12/31/16 Processing completed; writing summary files ******************************************************** *** AERMET Data Processing Finished Successfully *** ******************************************************** The Summary Report Generated by AERMET Is In: RPT.STAGE3 [user@localhost aermet]$ ll -rw-rw-r--. 1 user user 579744 7月 27 00:48 AERMET_2016_466920.PFL <==这个是高空气象场 -rw-rw-r--. 1 user user 1554894 7月 27 00:48 AERMET_2016_467440.SFC <==这个是地面测站数据喔! -rw-rw-r--. 1 user user 60385 7月 27 00:48 MSG.STAGE3 -rw-rw-r--. 1 user user 23565 7月 27 00:48 RPT.STAGE3 -rw-rw-r--. 1 user user 572 7月 27 00:22 stage3.inp
如上所示,跑出来的最终两个文件,就是我们需要的 AERMOD 的输入参数了!就这么简单喔!
完成了 AERMET 的输出之后,再来就是最好拿个分析软件,探索一下风向变化是否符合实际的环境!毕竟,许多转换软件, 或者是自己撰写的软件,可能会有部份错误的数据转换。鸟哥写的第一版转档数据,也是出现过数据不符合的情况 (这是因为 AERMET 是给美国本土的数据处理,跟我们认知的中央气象局的数具有点不同!),跑完 AERMOD 害我吓一跳!所以, 还是分析一下比较好。最简单的分析,就是探索风向的风花图!
绘制风花图最简单的软件就是由 Lakes Environmental Software 所开发的 WRPLOT View 这个软件! 相关的链接位置在底下的超链接上面,请自行前往下载正确的文件来安装处理。不过, WRPLOT View 是 windows 的软件, 这意味着,您得要将刚刚在 Linux 上面产生的文件下载到你的 windows 系统上面才行。
软件下载完毕之后,先前往该上述链接去按下『 Registration 』,并进入到注册的页面,开始进行注册! 注册完毕之后,Lakes 公司会提供一组验证码给妳,该验证码可以让你的软件操作使用一年 (详细情况,请参考 Lakes 提供给您的认证信的说明)。之后就开始在你的 windows 上面点击两下刚刚下载的软件, 安装妥当之后,直接点击『 WRPLOT View 』,该软件会提醒『Do you want to register WRPLOT Viewer now?』, 点击『Yes』之后,输入刚刚收到的信件内容的启动码,这样就可以开始使用该软件了。
如果经过一年之后,还想使用这个软件呢?那就请再次的前往上述的网站注册 (register),然后再次的启动该软件, 就又可以再用一年喔!软件启动之后会有点像这样:
如上,选择『 Add File 』的按钮,并将刚刚我们创建好的 aermet 属于 SFC 的文件名加载即可!加载之后, 就会出现如下的图标!注意看到测站的代码以及日期有没有问题!同时,缺省的情况下,风花图会是全年的平均! 如果你只想要看某些日期 (不同的季节),就得要在底下的 Date Range 项目底下去指定了!
如果一切都 OK 没啥大问题,你就可以点击『 Wind Rose 』的按钮,即可看到如下的风花图的图标啰!相当有趣! 如果还想要知道其他的频率相关问题,就直接点击其他的页面查阅即可!
这个软件非常简单!希望大家用的开心!