測站模擬值之讀取
前言/背景
- CMAQ系統提供的後處理程序中,按照執行程序有combine.exe及wsite.exe,前者於綜合空品項目之計算詳述,後者則於此處說明。
腳本說明
- 腳本名稱:run_wsiteMM_DM.csh
引數及環境變數
- 引數為月份(01~12)、層數(d02或d04)
- 各案相關環境變數
- $STKCASEE:排放方案之標記,每次執行前要注意設定
- $START_DATE 、$END_DATE :程式是用開始與結束的日期來控制範圍,如果有別於全月8個RUN的設定,可以修改此2值
輸入文字檔
- $SITE_FILE :此檔案內有測站座標
- $TZFILE :測站之時差資訊
SITE_FILE 範例
kuang@master /nas1/cmaqruns/2016base/data/sites
$ head sites.txt
1,121.76,25.129166666666666
2,121.64055555555555,25.065555555555555
3,121.68972222222223,25.179444444444453
4,121.53777777777779,24.977222222222217
5,121.45166666666668,24.9825
6,121.45861111111113,25.01277777777777
7,121.4325,25.03777777777778
8,121.48083333333334,25.06888888888889
9,121.36555555555556,25.07833333333333
10,121.44916666666668,25.16444444444444
TZFILE 範例:
kuang@master /nas1/cmaqruns/2016base/data/sites
$ head tz.csv
78, 8.0,Taiwan
121.76,25.129166666666666
121.64055555555555,25.065555555555555
121.68972222222223,25.179444444444453
121.53777777777779,24.977222222222217
121.45166666666668,24.9825
121.45861111111113,25.01277777777777
121.4325,25.03777777777778
121.48083333333334,25.06888888888889
121.36555555555556,25.07833333333333
輸入及輸出檔位置
- CCTM_COMB檔案放在
$POSTDIR
即可 - 程式將會輸出MDL_*csv檔案,也是在
$POSTDIR
內出現,這些檔案會進一步與測站數據比較,並進行性能評估。
CMAQ的測站比對
- 使用cat_mdl.cs連結逐日MDL*.csv結果
- 此腳本將wsite逐日之結果予以整併,與環保署測站測值(在CAMx系統中整理成ovm.dat),進行比較及性能評估。
abi_inp.txt檔案之定義及產生
abi_inp.txt檔案中指定比對起迄的時間點
- 格式:%y%m%d%H共8碼,中間空1格
- LST,非UTC
- 如以模擬時間為準,起於8:00、迄於7:00
- 如以全月為準:起於前月最後日之20時,迄於本月最後日的23時
- 各批次之起迄時間:由mk_inp.cs計算、置換、產生abi_inp$RUN.txt檔案備用
- $POST :COMBINE及WRITE_SITE結果目錄
- $ROOT :網格層數(d02/d04)
- head.txt:
- 即為MDL.csv的標頭。
- 因為在run_wsiteMM_DM.csh將表頭關閉了(setenv PRTHEAD N,line 98~99),所以此處要將其還原。
- MDL*csv分成2個群組,以cat程式將逐日檔予以組合,以避免排序時,含有run10等字元的檔名排在run5的前面。
kuang@node03 /nas1/cmaqruns/2016base/data/sites
$ cat cat_mdl.cs
yymm=$(echo $PWD|cut -d'/' -f7)
yy=$(echo $yymm|cut -c1-2)
POST=/nas1/cmaqruns/20${yy}base/data/output_CCTM_v53_gcc_${yymm}/POST
test $yy == 16 && TEDS=10
test $yy == 19 && TEDS=11
ROOT=$1
test $ROOT == 'd04' && GRID='TWN_3X3'
test $ROOT == 'd01' && GRID='EAsia_81K'
test $ROOT == 'd02' && GRID='sChina_27k'
FRST=20$(head -n2 abi_inp.txt|tail -n1|awkk 1|cut -c1-6)
YM=$(date -ud "20${yymm}01 -1 day" +%Y%m)
BEGD=$(date -ud "${YM}15 + 16 day" +%Y%m%d)
if [ $FRST -lt $BEGD ];then
for ((d=$FRST;d<=$BEGD;d=$(date -ud "${d} + 1 day" +%Y%m%d)));do
if ! [ -e $POST/MDL_v53_gcc_${yymm}_run5_${d}_${GRID}_${TEDS}.csv ];then
PYM=$(date -ud "20${yymm}01 -1 month" +%y%m)
PPST=/nas1/cmaqruns/20${yy}base/data/output_CCTM_v53_gcc_${PYM}/POST
ln -sf $PPST/MDL_v53_gcc_${PYM}_run12_${d}_${GRID}_${TEDS}.csv \
$POST/MDL_v53_gcc_${yymm}_run5_${d}_${GRID}_${TEDS}.csv
fi
done
fi
cat ../head.txt \
$POST/MDL_v53_gcc_${yymm}_run[5-9]*_${GRID}_${TEDS}.csv \
$POST/MDL_v53_gcc_${yymm}_run1[012]*_${GRID}_${TEDS}.csv \
> MDL.csv
#filtering the dates wanted
../datesIn.py
~/bin/abi/abi_cmaq.x $ROOT
MDL.csv檔案之讀取
- 使用datesIn.py
- 讀取abi_inp.txt的起迄時間、
- sta_ll.csv的測站編號-名稱對照表,
- 修減全月結果(MDL.csv及ovm.dat)到指定的時間範圍內。
- 詳見datesIN.py程式說明
模擬及時測值之比對
- 使用abi_cmaq.f程式。
- 程式設計與abi_camx.f類似
- 引數:$ROOT 將會出現在結果檔名中
- 結果檔:abi_d04.txt
kuang@master /nas1/cmaqruns/2019base/data/wsites
$ head 1912/abi_d04.txt
STA NAME MB_O3 OB_O3 GE_O3 OB_PMT GE_PMT OB_PMf GE_PMf OB_NO2 GE_NO2 OB_HC GE_HC OB_SO2 GE_SO2
1 ▒▒ 0.24 0.16 0.18* -0.55 0.59* -0.42* 0.62* -0.38* 0.64* -0.36* 0.51* -0.01* 0.73*
2 ▒▒▒ 0.25 0.20 0.22* -0.54 0.59* -0.47* 0.63* -0.66 0.70* NaN NaN -0.22* 0.59*
3 ▒U▒▒ 0.23 0.17 0.19* -0.65 0.74* -0.66 0.72* -0.09* 0.66* NaN NaN -0.35* 0.55*
...
69 ▒ˤs 0.08* 0.16 0.22* -0.43* 0.53* -0.35* 0.51* -0.04* 0.40* NaN NaN -0.40* 0.54*
101 all 0.20 0.17 0.21* -0.47* 0.57* -0.38* 0.56* -0.25* 0.54* 0.12* 0.50* -0.36* 0.60*
Attainment MB_O3 OB_O3 GE_O3 OB_PMT GE_PMT OB_PMf GE_PMf OB_NO2 GE_NO2 OB_HC GE_HC OB_SO2 GE_SO2
68.3% 17.2% 31.0% 100.0% 53.4% 100.0% 84.5% 100.0% 67.2% 94.8% 88.9% 92.6% 56.9% 93.1%