逐日循序執行bcon.exe
Table of contents
背景
策略面之考量
- 大型、多層網格、連日的CMAQ執行結果,要接續執行bcon.exe會遭遇到龐大濃度檔(ACONC)的問題。雖然如大型網格系統切割邊界濃度文中所述,可以python程式來執行內插與切割,但仍然不夠快速、簡潔。
- 由於CMAQ結果是逐日輸出,因此發展逐日執行bcon.exe還是比較合理的作法,唯一的困難,是bcon程式內設會從METBDY3D讀取相對應的起始時間,會需要:
- 將執行批次的METBDY3D檔案切割成逐日
- 逐日METBDY3D檔案的SDATE需配合ACONC濃度檔案的內容。
- 前述2項作業在brk_day2.cs中已經妥善處理好了,只需執行即可(還好METBDY3D檔案並不太大,即使重複儲存也還能容忍)。
- 此一策略對逐日CMAQ預報系統中減省檔案容量有非常重要的關鍵性角色。
- 雖然bcon.exe也可以同步執行,但因速度還可以接受,此處就循序進行,
- 最後用ncrcat將其連成一個大檔,還要加上最後一個小時值的bc就完成了。
...
dates=()
for id in {0..4};do
dates=( ${dates[@]} $(date -d "$BEGD +${id}days" +%Y%m%d) )
done
for i in 0 1 2;do
ii=$(echo ${GRD[$i]}|cut -c5-)
cd $fcst/grid$ii/smoke
../../mk_emis.py $BEGD
cd $fcst
csh ./run.cctm.${ii}.csh >&/dev/null
# nest down BCON and ICON
test $i -eq 2 && continue
for id in {0..4};do
nc=$fcst/grid$ii/cctm.fcst/daily/CCTM_ACONC_v532_intel_${DOM[$i]}_${dates[$id]}.nc
csh ./run_bcon_NC.csh $nc >&/dev/null
done
cd $fcst/grid$ii/bcon #(same bcon pool)
j=$(( $i + 1))
f=()
for id in {0..4};do
f=( ${f[@]} BCON_${dates[id]}_${DOM[$j]} )
done
ncrcat -O ${f[@]} BCON_today_${DOM[$j]}
cd $fcst
csh ./run_icon_NC.csh $fcst/grid$ii/icon/ICON_yesterday_${DOM[$i]} >&/dev/null
done
...
腳本內容
引數
- 1個引數:上層CCTM執行成果(CCTM_ACONC檔案)
- 檔案需含網格系統名稱的目錄,對照關係如下
- 如
/nas2/cmaqruns/2022fcst/grid45/cctm.fcst/daily/CCTM_ACONC_v532_intel_Taiwan_20220828.nc
, - 腳本會自檔案目錄的第5欄找到網格名稱,以對應到mcip檔案、開啟下一層的輸出檔。
序號 | 公版模式習慣 | 網格系統名稱 | 說明 |
---|
1 | grid45 | CWBWRF_45k | |
2 | grid09 | SECN_9k | |
3 | grid03 | TWEAP_3k | |
- 說明:公版模式的GDNAM全部設成’Taiwan’,因此無從辨識其網格系統內容。
日期的辨識與應用
- 由輸入之CCTM_ACONC檔案中以ncdump讀取,不需要從別處取得資訊。
- Julian day轉成日曆天:使用
date
指令計算。 - y, j分別為年代及julian day
set nc = $argv[1]
...
set DATE = `/usr/bin/ncdump -h $nc|grep SDATE|awk '{print $3}'`
set y = `echo $DATE|cut -c1-4`
set j = `echo $DATE|cut -c5-`
set NDAYS = 1
set YYYYJJJ = ${DATE} #> Convert YYYY-MM-DD to YYYYJJJ
set YYYYMMDD = `date -d "${y}-01-01 +${j}days -1days" +%Y%m%d` #> Convert YYYY-MM-DD to YYYYMMDD
set YYMMDD = `echo $YYYYMMDD|cut -c3-` #> Convert YYYY-MM-DD to YYMMDD
檔名的設定
- 應用前述計算出來的日期,找到對應的MET_BDY_3D_FIN檔案
- 設定輸出檔名,以便後續處理(ncrcat連結)
setenv CTM_CONC_1 $nc
setenv MET_CRO_3D_CRS $CMAQ_HOME/$DM/mcip/METCRO3D.nc
setenv MET_BDY_3D_FIN $CMAQ_DATA/mcip/nc/METBDY3D.${YYYYMMDD}
setenv BNDY_CONC_1 "$OUTDIR/BCON_${YYYYMMDD}_${GRID_NAME} -v"
腳本下載點