Link Search Menu Expand Document

增添CAMx nc檔案所需之全域屬性

Table of contents

背景

  • CAMx過去很長一段時間是沿用uamiv格式做為主要格式,其內容與CAMx程式之變數已有良好對應,特別是常數部分,前4筆表頭更是所有檔案(包括邊界lateral_boundary、點源[point_source][ptse]等格式)所通用。
  • 其後CAMx增加了nc檔案讀寫的功能,過去這些常數則需以nc檔案的全域屬性方式進入程式。
  • 因此必須在執行程式前進行確認,如有不足,則需予增添,以避免程式停擺。
  • 由於這些屬性名稱在其他(如CMAQ)並未使用,因此也不致構成錯誤。

項目、範例及意義

項目CAMxCMAQ說明
pncgen 格式名稱lateral_boundary, uamiv, [point_source][ptse][ioapi][ioapi]pncgen格式詳[ncgen & pncgen][Xncgen]
FTYPE1(uamiv)1或2CMAQ以此辨識檔案性質1為一般4維檔、2為邊界3維檔
NAMECAMx_NAME10字元“BOUNDARY”, “EMISSION”, “AIRQUALITY”, “PTSOURCE” “AVERAGE”-CAMx以此辨識檔案性質
ITZON-8-CAMx以此計算太陽天頂角
IUTM0-UTM zone。如非UTM系統給0即可
CPROJ2-投影類別、即[GDTYP][GDTYP]
ISTAG0-是否差格(風速)
PLON, PLAT, TLAT1, TLAT2120.99, 23.61, 10.0, 40.0-蘭伯特投影參數

有關全域屬性NAME或CAMx_NAME

  • 7.10以前(不含7.10)舊版的CAMx模式在讀取nc檔案時,會嚴格檢查NAME全域屬性,以識別檔案的時間及屬性,需特別留意。
  • 因應netCDF v4.6.2的進版,nc檔內不再能新增NAME(大寫)的全域屬性
    • 修改相關fortran程式碼,將大寫的NAME改成小寫name
    • 使用舊版的netCDF與相依套件。RAMBOL公司[建議][oldnc]netCDF 4.6.1版
    • 將CAMx升級到7.10以上版本,屬性名稱NAME全數改成CAMx_NAME
  • 修改程式或升級方案影響到的程式如下
kuang@master /cluster/src/CAMx/camx710
$ grep -n CAMx_NAME */*.f
DDM/ncf_rdbcddm.f:110:      this_var = 'CAMx_NAME'
DDM/ncf_rdicddm.f:98:      this_var = 'CAMx_NAME'
DDM/ncf_rdpthdr_ddm.f:106:      this_var = 'CAMx_NAME'
DDM/ncf_rdtcddm.f:110:      this_var = 'CAMx_NAME'
IO_NCF/ncf_areaprep.f:88:      this_var = 'CAMx_NAME'
IO_NCF/ncf_bndprep.f:83:      this_var = 'CAMx_NAME'
IO_NCF/ncf_cncprep.f:101:      this_var = 'CAMx_NAME'
IO_NCF/ncf_luseprep.f:72:      this_var = 'CAMx_NAME'
IO_NCF/ncf_metprep.f:84:      this_var = 'CAMx_NAME'
IO_NCF/ncf_metprep.f:112:      this_var = 'CAMx_NAME'
IO_NCF/ncf_metprep.f:140:      this_var = 'CAMx_NAME'
IO_NCF/ncf_rdpthdr.f:87:         this_var = 'CAMx_NAME'
IO_NCF/ncf_topprep.f:83:      this_var = 'CAMx_NAME'
IO_NCF/ncf_wrt_global.f:234:      ierr = nf_put_att_text(iounit, NF_GLOBAL, 'CAMx_NAME',
OSAT/ncf_rdpthdr_sa.f:92:         this_var = 'CAMx_NAME'
RTRAC/ncf_empreprt.f:100:      this_var = 'CAMx_NAME'
RTRAC/ncf_empreprt.f:135:      this_var = 'CAMx_NAME'
RTRAC/ncf_rdbcrt.f:126:      this_var = 'CAMx_NAME'
RTRAC/ncf_rdicrt.f:111:      this_var = 'CAMx_NAME'
RTRAC/ncf_rdpthdr_rt.f:92:      this_var = 'CAMx_NAME'

add_ncatt.cs

Reference

[ptse]: https://sinotec2.github.io/Focus-on-Air-Quality/CAMx/ “needs edit” [ioapi]: https://sinotec2.github.io/Focus-on-Air-Quality/utilities/netCDF/ioapi/ “I/O API(Input/Output Applications Programming Interface)是美國環保署發展Models-3/EDSS時順帶產生的程式庫(cmascenter, I/O API concept),用來快速存取NetCDF格式檔案,尤其對Fortran等高階語言而言,是非常必須之簡化程序。” [Xncgen]: https://sinotec2.github.io/Focus-on-Air-Quality/utilities/netCDF/pncgen/#camx “ncgen & pncgen” [oldnc]: https://camx-wp.azurewebsites.net/download/netcdf/ “Build netCDF v4.6.1 from Source” [GDTYP]: https://sinotec2.github.io/Focus-on-Air-Quality/utilities/Graphics/VERDI/VERDI_Guide/#map-projection-type “Map projection type”