v6_to_v7.py程式說明

 

背景

  • CAMx6與CAMx7的點源nc檔案有很大的差異及更新,本程式即是將舊格式更新到新格式的轉接程式。
  • CAMx6與CAMx7的點源nc檔案內容的差異詳見比較表

程式之執行

檔案準備

CAMx7點源檔案模版

  • 檔案位置:/nas1/TEDS/teds10_camx/HourlyWeighted/ptse/template_v7.nc
  • 檔案內容
$ ncdump -h $nc|H
netcdf template_v7 {
dimensions:
        TSTEP = UNLIMITED ; // (2 currently)
        COL = 1 ;
        CPStrLen = 12 ;
        VAR = 25 ;
        DATE-TIME = 2 ;
variables:
        float ALD2(TSTEP, COL) ;
                ALD2:long_name = "ALD2            " ;
...
  • 只有一支煙囪(開發計畫之集束煙囪)
  • 時間可增加(unlimited)

CAMx6點源檔案

引數

  • 程式內執行月份之迴圈

執行程式

  • python v6-to-v7.py

程式說明

對時間維度進行開展

...
  tflag =nc.variables['TFLAG'][:,:nvs,:]
  etflag=nc.variables['ETFLAG'][:,:nvs,:]
...
  res=os.system('cp  template_v7.nc '+fnameO)
  nc = netCDF4.Dataset(fnameO, 'r+')
...
  for t in range(nt):
    nc.variables['TFLAG'][t,:,:]=tflag[t,:,:]
    nc.variables['ETFLAG'][t,:,:]=etflag[t,:,:]

建立2個版本的參數對照

  • 主要煙囪參數,為2個版本所共有部分
PRM='XYHDTV'
names={7:['xcoord','ycoord','stkheight','stkdiam','stktemp','stkspeed'],
       6:[v+'STK' for v in PRM]}
v2c6={PRM[i]:names[6][i] for i in range(6)}
v2c7={PRM[i]:names[7][i] for i in range(6)}
  • 以exec()在迴圈中將新檔案填滿
 for v in PRM:
    exec('nc.variables["'+v2c7[v]+'"][:]='+v)

程式下載

結果確認

  • 可以使用pt2em_d01.py以地面排放檔將點源nc檔網格化,再以VERDI檢視是否在開發計畫位置確有增加排放量。