Link Search Menu Expand Document

mcip結果初始小時值的延伸

Table of contents

背景

  • mcipwrfout時間的解讀有所不同,會差1個小時。指定CMAQ模式自0時開始模擬,而同樣批次範圍內這個時間並沒有wrfout的模擬結果。
  • 此處並沒有自前批次結果的最後小時讀取,乃以本批次頭一小時替代,以降低模式初始化的衝擊。
  • 影響到的檔案:
    • 沒有時間序列的檔案:GRIDBDY2DGRIDCRO2DGRIDDOT2DLUFRAC_CRO
    • 具有時間維度的檔案:METBDY3DMETCRO2DMETCRO3DMETDOT3DSOI_CRO

腳本與程式

執行腳本

  • 對那些沒有時間序列的檔案
    • 直接將起算時間更改為0時(00Z),執行add_firstHr.py
  • 具有時間維度的檔案
    • 先用ncks切割出第一小時(01Z)的片段檔案
    • 將片段時間更改為0時(00Z)
    • ncrcat將檔案按照時間連起來,覆蓋原來檔案
#!/bin/bash
for i in $(ls [GL]*.nc);do python ~/bin/add_firstHr.py ${i};done
for i in $(ls [MS]*.nc);do ncks -O -d TSTEP,0,0 $i ${i}_1; python ~/bin/add_firstHr.py ${i}_1;ncrcat -O ${i}_1 ${i} a;mv a ${i};rm ${i}_1;done

add_firstHr.py

import netCDF4
import sys
fname=sys.argv[1]
nc = netCDF4.Dataset(fname,'r+')
nc.variables['TFLAG'][0,:,1]=[0 for i in range(nc.NVARS)]
nc.STIME=0
nc.close()

all_in_one version

  • 在csh腳本中使用bash腳本是一件很尷尬的事情,比較好的方式是包裝在python程式內。
  • 以下版本是在國網上運作的方案
#!/opt/ohpc/pkg/rcec/pkg/python/wrfpost/bin/python
import netCDF4
import sys,os
fname=sys.argv[1]
fnameO=fname+'_1'
nc = netCDF4.Dataset(fname,'r')
if nc.variables['TFLAG'][0,0,1]==0:sys.exit()
nc.close()
os.system('/work/sinotec2/opt/cmaq_recommend/bin/ncks -O -d TSTEP,0,0 '+fname+' '+fnameO)
nc = netCDF4.Dataset(fnameO,'r+')
nc.variables['TFLAG'][0,:,1]=[0 for i in range(nc.NVARS)]
nc.STIME=0
nc.close()
os.system('/work/sinotec2/opt/cmaq_recommend/bin/ncrcat -O '+fnameO+' '+fname+' a;rm -f '+fnameO+';mv a '+fname)