背景
- CAMx的光解係數是一個很大的對照表,由網格所在位置的臭氧垂直濃度(參見[[2022-07-01-TOMS]]1)、返照率、也考慮到地形及離地高度,範例如下所示。
kuang@master /nas1/camxruns/2021/inputs/tuv/tuv4.8.camx7.00
$ head tuv.do_CB6.210101.d1
TUV4.8CAMx7.00
O3 Column = 278. Albedo= 0.040 Terrain = 0.000
0.000 km above surface
5.661E-01 5.613E-01 5.458E-01 5.190E-01 4.766E-01 4.137E-01 3.244E-01 2.045E-01 1.002E-01 2.616E-02
2.587E-02 2.575E-02 2.533E-02 2.461E-02 2.347E-02 2.172E-02 1.902E-02 1.458E-02 8.975E-03 1.862E-03
2.592E-03 2.507E-03 2.255E-03 1.879E-03 1.408E-03 9.090E-04 4.699E-04 1.681E-04 4.967E-05 8.365E-06
4.772E-04 4.694E-04 4.451E-04 4.056E-04 3.488E-04 2.754E-04 1.894E-04 1.006E-04 4.365E-05 1.042E-05
1.153E+01 1.149E+01 1.136E+01 1.111E+01 1.070E+01 1.002E+01 8.857E+00 6.783E+00 4.066E+00 8.031E-01
1.442E+00 1.438E+00 1.424E+00 1.397E+00 1.352E+00 1.276E+00 1.146E+00 9.031E-01 5.666E-01 1.134E-01
3.022E-03 2.975E-03 2.830E-03 2.594E-03 2.252E-03 1.803E-03 1.268E-03 6.959E-04 3.098E-04 7.596E-05
- 處理過程會讀取臭氧垂直濃度,即TOMS數據處理的結果,必須配套處理。
- 每層網格系統有個自的臭氧垂直濃度,因此也必須一一處理其TUV檔案
程式下載編譯
- TUV與CAMx版本間的關係如下表
TUV與CAMx版本關係表
CAMx版本 | 重要改變 | tuv版本及下載點 |
---|---|---|
v6.3-v6.5 | 增加SAPRC07TC、更改對照方式 | tuv4.8.camx6.30.8apr16.tgz |
v7.00 | 臭氧改Dobson值 | tuv4.8.camx7.00.31may20.tgz |
v7.10 | +CB6r5 | tuv4.8.camx7.10.15dec20.tgz |
v7.20 | +CB7 | tuv4.8.camx7.20.30apr22.tgz |
編譯
- 使用Makefile
- 3種編譯器可供選擇
# Linux PC with Portland Group 64-bit compiler (PGF90)
#FFLAGS = -O2 -Mextend -Kieee
#FC = pgf90
#EXC = tuv
# Linux PC with Intel compiler (IFORT)
FFLAGS = -O2 -mieee-fp -extend_source
FC = ifort
EXC = tuv
# Linux PC with GNU compiler (GFORTRAN)
#FFLAGS = -O2 -frecord-marker=4 -ffixed-line-length-0
#FC = gfortran
#EXC = tuv
- 如需執行tuvcompr,需另外分別編譯(也有Makefile)
執行腳本
- 由於C shell腳本會改變環境變數,無法多批次同步處理,同時程式也沒有設計成平行化或多工處理方式,需循序一一執行。
執行選項
環境變數 | 內容 | 選項 |
---|---|---|
MECH | 化學機制 | CB05, CB6, SAPRC07 |
SCHEME | 計算方法 | 1 = pseudo spherical 2-stream/2 = discrete ordinates(recommended) |
RUN_TUVCOMPR | 是否執行比較 | ‘YES’, ‘NO’ |
number of vert levels | 垂直層數 | 11層或15層 |
tuv.inp 輸入變數內容
變數 | 內容 | 範例 |
---|---|---|
program version | 程式版本 | TUV4.8CAMx7.00 |
output file name | 輸出檔名稱 | ./$OUTFILE |
o3map file name | o3map檔名 | ../../toms/o3map.20$1.d$DOM |
number of vert levels | 垂直層數 | 11 |
levels, km agl | 各層離地高Km | 0. 0.15 0.35 0.60 1.00 2.00 3.00 4.00 6.00 8.00 10.0 |
date (YYMMDD) | 日期 | $yymmdd |
rad transfer scheme | 自由基傳輸方式 | $SCHEME |
num of phot reactions | 光化反應數 | $RXNUM |
TUV reaction #s | 光解反應式 | $RXLST |
輸入檔案連結
- 需將程式包中的參數檔目錄(DATA*),連結到工作目錄,以利程式讀取
- 這些數據與反應機制有關,必須保持版本一致。
tree ./tuv/tuv4.8.camx7.00/src
|-- DATAE1
| |-- ATM
| |-- GRIDS
| |-- NO2
| |-- O2
| |-- O3
| |-- SO2
| |-- SUN
| `-- wmo85
|-- DATAJ1
| |-- ABS
| |-- BROMINE
| |-- C2H5CHO
| |-- CB6
| |-- CH2O
| |-- CH3CHO
| |-- CH3COCH3
| |-- CH3COCHO
| |-- CH3OOH
| |-- CHLORINE
| |-- CHOCHO
| |-- IODINE
| |-- IUPAC04
| |-- RONO2
| |-- SAPRC07
| |-- SAPRC99
| `-- YLD
|-- DATAJ2
| `-- KFA
|-- DATAS1
執行批次
- 按年月依序呼叫執行腳本
- 程式碼在m3mapN.cs內。(N為層數,N=1,2,3,4)
(unresp)
kuang@master /nas1/camxruns/2019/inputs/toms
$ tail -n11 m3mapd1.cs
# doing the tuv job
cd /home/camxruns/2016_v7/inputs/tuv/tuv4.8.camx7.00
for Y in 16;do
for i in {01..12};do
cb6.job $Y${i}01 1
done
done
腳本內容
- 引數為
- 年月日(yymmdd format)
- 層數N=1,2,3,4
#!/bin/csh -f
set MECH = CB6 # [CB05|CB6|SAPRC07]
set SCHEME = 2 # 1 = pseudo spherical 2-stream
# 2 = discrete ordinates (recommended)
set yymmdd = $1 # YYMMDD format
set DOM = $2 # 1,2,3,4format
set RUN_TUVCOMPR = 'NO' # Run TUV comparison
if ($SCHEME == 1) set SCM = 'ps2str'
if ($SCHEME == 2) set SCM = 'do'
set TUVINP = tuv.${SCM}_${MECH}.inp
set TUVOUT = tuv.${SCM}_${MECH}.diag
set OUTFILE = tuv.${SCM}_${MECH}.$yymmdd.d$DOM
if ($MECH == 'CB6') then
set RXNUM = 23
set RXLST = '94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 114, 115, 116, 111, 112, 113'
endif
if ($MECH == 'CB05') then
set RXNUM = 19
set RXLST = '77, 84, 83, 79, 78, 87, 66, 88, 89, 90, 91, 63, 68, 67, 62, 92, 61, 93, 82'
endif
if ($MECH == 'SAPRC07') then
set RXNUM = 29
set RXLST = '168 169 170 172 173 161 158 159 155 175 157 156 149 148 143 165 152 154 153 166 146 147 145 164 167 163 160 144 174'
endif
cat << EOF >! ./tuv.inp
program version |TUV4.8CAMx7.00
output file name |./$OUTFILE
o3map file name |../../toms/o3map.20$1.d$DOM
# of vert levels | 11
levels, km agl | 0. 0.15 0.35 0.60 1.00 2.00 3.00 4.00 6.00 8.00 10.0
date (YYMMDD) | $yymmdd
rad transfer scheme| $SCHEME
# of phot reactions| $RXNUM
TUV reaction #s | $RXLST
EOF
/cluster/src/CAMx/tuv/tuv4.8.camx7.00/src/tuv
mv -f tuv.inp $TUVINP
mv -f tuv_diag.out $TUVOUT
# Do a quick comparison of CAMx photolysis rate files
# and report the ratios in a flat ASCII format
# Note: Number of reactions in the two files have to be the same.
if ( $RUN_TUVCOMPR == 'YES' ) then
/cluster/src/CAMx/tuv/tuv4.8.camx7.00/tuvcompr/tuvcompr << EOF
rates file 1 |./tuv.do_${MECH}.$yymmdd.d$DOM
rates file 2 |./tuv.ps2str_${MECH}.$yymmdd
summary output file|./compare.${MECH}_do_ps2str
number of reactions| $RXNUM
number of altitudes| 15
EOF
endif
-
https://sinotec2.github.io/FAQ/2022/07/01/TOMS.html “ 臭氧垂直濃度之處理 “ ↩