Link Search Menu Expand Document

bcon檔案之視覺化(bcon2icon.py)

Table of contents

背景

  • BCON檔案與一般5維的ioapi.nc檔案有很大的出入,除了維度的差異,方向上也有很大的不同。需特別加以處理。
  • BCON的成果圖可以參考沙塵暴案例、或美國西北太平洋區域空品預報系統(AIRPACT)之邊界條件
  • 程式檔:bcon2icon.py

程式說明

IO’s

  • 引數:邊界條件檔案名稱(必須含有網格名稱,res={'CWBWRF_45k', 'SECN_9k', 'TWEPA_3k'} 3者其中一個)
  • 模版檔案:'/nas1/cmaqruns/2022fcst/data/bcon/template'+tpl[i]+'_'+ext+'.nc' 其中的字尾對照表tpl={0:'SN',1:'WE',2:'SN',3:'WE'}
  • 程式會將template置換成today,另存新檔備用。

4邊迴圈的規則

  • 4邊的順序依序是南、東、北、西邊界。按照nbnd維度的逆時針行進方向
  • 改成icon格式後,垂直軸變成圖面的y方向,圖面的x軸先設定為自西向東、或自南向北。
    • y方向放大3倍,因此需要進行高度的內插。此處因不處理非等間距高度的問題,故以簡單的線型內插即可。
    • 北面與西面邊界x方向與檔案原來的nbnd維度相反,此處以一字典(drn[i])來取代if區段的做法。
    • 最後要儲存前,北、西邊界再將x軸進行一次性反轉(np.flip())。
    • 此4個圖向右排列,即為BCON檔案的逆時針次序。
for i in range(4):
...
  for v in V1[3]:
    nc1[v][:]=0.
    if v not in Vb[2]:continue
    nc1v=np.zeros(shape=nc1[v].shape)
    nc1[v][:,0,1::3,i1s[i]:i2s[i]]=nc[v][:,:,ibnd[i][0]:ibnd[i][1]:drn[i]]
    nc1[v][:,0,0,:] =nc1[v][:,0,1,:]
    nc1[v][:,0,-1,:]=nc1[v][:,0,-2,:]
    nc1[v][:,0,2:-1:3,:]=(nc1[v][:,0,1:-2:3,:]*2+nc1[v][:,0,4::3,:]  )/3
    nc1[v][:,0,3:-1:3,:]=(nc1[v][:,0,1:-2:3,:]  +nc1[v][:,0,4::3,:]*2)/3
    if i>=2:
      nc1[v][:]=np.flip(nc1[v][:],axis=3)
  nc1.close()

程式下載