Link Search Menu Expand Document

CAMx地面排放量之調整

Table of contents

背景

  • 使用python來處理排放檔案,比傳統的fortran要方便很多。不論是nc檔案或者是uamiv檔案
  • 此處介紹一些案例供參

船舶排放之敏感性調整

  • 測試船舶排放硫氧化物之敏感性
    • 格式為uamiv
    • 程式內執行月份、pathway、domain等迴圈
#kuang@master /nas1/camxruns/2016_v7/emis
#$ cat SHIP0.1.py
from PseudoNetCDF.camxfiles.Memmaps import uamiv
import os, sys
V=['SO2']
paths=['ship']
for path in paths:
  for m in range(1,13):
    mo='{:02d}'.format(m)
    for d in ['4']: # ['1','2']:
      fname='fortBE.'+d+'13_STEAM.base'+mo
      fn=path+'/'+fname
      fnameO=fn+'S0.1'
      os.system('cp '+fn+' '+fnameO)
      nc= uamiv(fnameO, 'r+')
      for v in V:
        nc.variables[v][:]=nc.variables[v][:]/10.
      nc.close()

NO敏感性

  • 6月份地面源NO排放量併入NO2、完全歸0之敏感性測試。
  • 時間為中午前後4小時之白天時段(CAMx為local time)
#kuang@master /nas1/camxruns/2016_v7/emis
#$ cat NO0.py

import netCDF4
import os
import numpy as np

fnames=['/nas1/TEDS/teds10_camx/HourlyWeighted/area/fortBE.413_teds10.area06.nc',
'/nas1/TEDS/teds10_camx/HourlyWeighted/line/fortBE.413_teds10.line06.nc',
'/nas1/TEDS/teds10_camx/HourlyWeighted/ship/fortBE.413_teds10.51Ab06.nc',
'/nas1/TEDS/teds10_camx/HourlyWeighted/biog/fortBE.413_teds10.biog06.nc',
'/nas1/TEDS/teds10_camx/HourlyWeighted/ptse/fortBE.413_teds10.ptsG06.nc']
v='TFLAG'

for fname in fnames:
  fnameO=fname.replace('.nc','NO0.nc')
  os.system('cp '+fname+' '+fnameO)
  nc = netCDF4.Dataset(fnameO, 'r+')
  t=nc.variables[v][:,0,1]
  idx=np.where(abs(t-120000)<=40000)
  nc.variables['NO2'][idx[0],:,:,:]+=nc.variables['NO'][idx[0],:,:,:]
  nc.variables['NO'][idx[0],:,:,:]=0
  print(fnameO)
  nc.close()

境外排放粒狀物及SO2敏感性

  • 面源粒狀物減半、硫氧化物減8成
kuang@master /nas1/camxruns/2016_v7/emis
$ cat INDP0.5S0.1.py
from PseudoNetCDF.camxfiles.Memmaps import uamiv
import os, sys
Vs=['SO2']
Vp=['CCRS','FCRS','CPRM','FPRM']

paths=['area']
for path in paths:
  for m in range(1,13):
    mo='{:02d}'.format(m)
    for d in ['1','2']:
      fname='fortBE.'+d+'13_REAS3.base'+mo
      fn=path+'/'+fname
      fnameO=fn+'P0.5S0.2'
      os.system('cp '+fn+' '+fnameO)
      nc= uamiv(fnameO, 'r+')
      for v in Vs:
        nc.variables[v][:]=nc.variables[v][:]/5.
      for v in Vp:
        nc.variables[v][:]=nc.variables[v][:]/2.
      nc.close()

REAS排放特定分區之修正

  • mod11.py這支程式主要針對d1範圍REAS排放量進行分區修改
  • 除了面源之外,本程式也可以針對CAMx7版本的點源nc檔案進行修正
  • 分區方式為大陸官方的空氣質量預報區,本系列其他程式(mod28-41.py)也可以針對特定網格位置之點源進行修正。
  • 詳細程式分段說明,詳見REAS分區修正之程式說明

濃度差異轉成排放量

  • 使用測站或衛星反衍排放量時,假設濃度差異全部為局部排放量差異所造成,經由網格的箱形模式計算與單位轉換即可進行排放量修正。
  • 詳細程式說明詳見dc2em.py