CAMx點源格式說明
Table of contents
背景
- CAMx點源檔案的nc版本,已經有很多說明與列表。此處說明點源point_source格式(循序讀寫之二進位檔案)之內容。
- 其他面源、空品及沉降檔之uamiv格式、以及邊界條件檔案之lateral_boundary格式 ,可以詳見比較表。
pt-emis.f的輸出部分內容
- 循序輸出6筆表頭內容,此部分為常數,不隨時間改變。其後為每個時間段落的排放量數據
- 常數部分
OPEN(NUPTS, FILE='fortBE.14',FORM='UNFORMATTED'
, ,convert='BIG_ENDIAN',STATUS='UNKNOWN')
WRITE (NUPTS) MPTS, MFID, NSG, NSPEC, NBD, TBEG, NED, TEND
WRITE (NUPTS) XUTM, YUTM, NZONE, XORG, YORG, DELTAX, DELTAY,
$ NOXG, NOYG, NOZG
$, NVLOW, NVUP, DZSURF, DZMINL, DZMINU
WRITE (NUPTS) 1,1,NOXG,NOYG
WRITE (NUPTS) ((MSPEC(I,J),I=1,10),J=1,NSPEC)
WRITE (NUPTS) NSEG, NOPTS
WRITE (NUPTS) (X(K),Y(K),H(K),D(K),T(K),V(K),K=1,NOPTS)
- 時間變化部分
- 每個時間步階有3+NOSPEC筆數據
DO 680 IT=1,24
TB=IT-1
TE=mod(IT,24)
JED=NBD
if(TE.eq.0)JED=JED+1
WRITE ( *,* ) NBD, TB , JED, TE
WRITE (NUPTS) NBD, TB , JED, TE
WRITE (NUPTS) NSEG, NOPTS
...
WRITE (NUPTS)(ILOC(IP,IT),IJPS(IP,IT),KPTS(IP,IT),FLOW(IP,IT),
$ EFPLH(IP,IT), IP=1,NOPTS)
DO 500 I=1,NSPEC
WRITE (NUPTS) NSEG,(MSPEC(J,I),J=1,10),
$ (QPTS(I,IP), IP=1,NOPTS)
500 CONTINUE
680 CONTINUE
uamiv與point_source格式內容之比較表(fortran)
- CAMx的點源排放檔案格式有別於其他所有格式,除了4筆表頭內容一致外,增加了第5~6筆表頭內容,為煙囪個數及煙囪基本條件
- 時變部分,點源排放具有很大的彈性,每個時間段落的煙囪個數可以不一樣(not tried),也可以有隨時間改變的流量與煙囪有效高度。
項目 | [uamiv][uamiv] | point_source | 說明 |
---|---|---|---|
表頭1檔名標籤與起迄日期時間 | fname, note, NOSEG, NOSPEC, NDATE, TTIME, NDLAST, TTLAST | (same) | 前者內容為AIRQUALITY, AVERAGE, EMISSION後者為PTSOURCE |
表頭2網格系統 | XUTM, YUTM, NZONE, XORG, YORG, DELTAX, DELTAY, NOXG, NOYG, NOZ, idproj,istag,tlat1,tlat2,rdum | (same) | |
表頭3 4個整數 | (Itmp(j), J=1,4) | (same) | |
表頭4污染物名稱 | ((SPNAME(I,J), I=1,10), J=1,NOSPEC) | (same) | |
表頭5 段落數及點源個數 | (無) | NOSEG, NOPTS | NOSEG值為1 |
表頭6 點源基本參數 | (無) | (X(K), Y(K), H(K), D(K), T(K), V(K),K=1,NOPTS) | XYHD單位為公尺、T單位K,V單位m/Hr |
時變部分逐時之表頭1:啟迄日期時間 | jjj,btime, jjn,etime | (same) | |
時變部分逐時之表頭2 | (無) | NOSEG, NOPTS | 段落數及點源個數 |
時變部分逐時之表頭3 | (無) | (ILOC(IP,IT), IJPS(IP,IT), KPTS(IP,IT), FLOW(IP,IT), EFPLH(IP,IT), IP=1,NOPTS) | 點源位置之IJK排氣量與有效高 |
時變部分之量場 | DO L=1,NOSPEC DO K=1,NOZ WRITE (12) NOSEG, (SPNAME(I,L),I=1,10), ((C(I,J,K,L),I=1,NOX),J=1,NOY) enddo enddo | DO 500 I=1,NSPEC WRITE (NUPTS) NSEG,(MSPEC(J,I),J=1,10), $ (QPTS(I,IP), IP=1,NOPTS) 500 CONTINUE | 每筆基本單元前者為一矩陣、後者為一序列 |
- Fortran程式碼比較麻煩的是必須逐一給定字串變數的長度、整數、以及實數等等定義。這一方面,最有效的方式還是必須看程式碼範例,此處就不一一列表。