初始時段濃度模擬結果之均勻化
Table of contents
背景
- 在每日(或更小時距)的模擬作業結果中,初始時段的結果是一個尷尬的課題。
- 更新起始濃度有其必要性
- 新模擬結果與上一次舊的模擬結果之間一定存在有落差,導致在顯示時發生明顯的突兀變化
- 解決方案
- 將部分模擬結果納入起始濃度,以降低突變程度。(起始濃度的客觀性議題)
- 縮短作業時距。(要看電腦的速度。ECMWF的空品預報時距為12小時一次)
- 均勻化模擬結果,以使顯示流暢一些。(濃度與流場會出現落差)
- 均勻化作業插入點
- 風場進行均勻化(會對系統的守恒造成問題,似應加入舊模擬結果作為FDDA依據)
- ACONC及APMDIAG進行均勻化,join_nc.py版本,說明如下(會有儲存的問題,需備份大量數據,更動不必要的項目,非最後使用版本)
- 只修改繪圖的json檔。因目前earth套件顯示時距為3小時。僅需修改cmaq_json3.py將00及03等2筆結果進行修改即可,在寫入前進行均勻化,無需備份。(最後版本)
join_nc.py版本
程式說明
- 類似程式應用在cpuff模式預報系統中(nt=24)
for v in V[3]:
for t in range(nt):
var0=nc0[v][t,:,:,:]*(nt-t)/nt
var1=nc[v][t,:,:,:]*t/nt
nc[v][t,:,:,:]=var0+var1
fcst.cs中插入作業
- (deprecated)
path=$fcst/grid$ii/cctm.fcst/daily
for NAM in CONC PMDIAG;do
id=0
nc=$path/CCTM_A${NAM}_v532_intel_${DOM[$i]}_${dates[$id]}.nc
$fcst/join_nc.py $nc
id=1
nc=$path/CCTM_A${NAM}_v532_intel_${DOM[$i]}_${dates[$id]}.nc
/usr/bin/ncks -O -d TSTEP,0,5 $nc ${nc}_bak
done
cmaq_json3.py版本
作業方式與預期結果
- 沒有任何異動。不會儲存backup檔案
- 如果對同樣模擬結果(CCTM_ACONC/CCTM_APMDIAG)執行cmaq_json3.py
- 只會修改到第1天的03時結果,
- 會再更趨近新的模擬結果(r=1/2)
- 其他程式說明,詳見:earth套件展示wrfout與CCTM_ACONC結果及CMAQ粒狀物模擬結果之earth呈現。
程式因應修改
- 將輸出部分寫成副程式
- 判別式
- 模擬首日
- 0、3小時
- 如果已經有同樣檔名存在,即為舊模擬結果
- 予以線性內插。注意:
- json檔案的[‘data’]是個list,無法進行四則運算,必須先改成array才能計算。
- 最後儲存時:json檔案不接受array的型態,必須改成list,否則會破壞原來的json檔案而造成錯誤。
def wrtjson(day,t,fnameO,jsn):
if day==0 and t in [0,3] and os.path.isfile(fnameO):
with open(fnameO,'r+') as f:
bkp=json.load(f)
for i in range(len(bkp)):
data=np.array(bkp[i]['data'])*(6-t)/6+np.array(jsn[i]['data'])*(t)/6
jsn[i]['data']=list(data)
with open(fnameO,'w') as f:
json.dump(jsn,f)
return 'OK'
程式下載
Download: ACONC及APMDIAG進行均勻化版本:join_nc.py
Download: earth均勻化版本:cmaq_json3.py