臭氧垂直濃度之處理

 

背景

  • CAMx模式的垂直臭氧(OZ_COL)是個時間序列的2維整數指標矩陣文字檔,如下所示。每一層網格(d1~d4)都會需要。
  • 這個作法是沿襲UAM的習慣,方式沒有變,但是衛星數據、儲存方式、以及模式光解係數的持續進步,所以相關程式就一直進版,需要搭配CAMx的版本。
kuang@master /nas1/camxruns/2021/inputs/toms
$ head o3map.20210101.d1
Ozone column data     21010     21013
OZONE COL       278.      333.      388.      443.      499.
OZONE COL       2283      0.00      2283   2400.00
22222222222222222222222333333333334444443333333455544444444
22222222222222222222222333333333333334443333333444444444444
22222222222222222222222333333333333333343333333334444444443
22222222222222222222222233333333333333333333333333444443333
22212222222222222222222222233333333333333333333333333333333
22111111122222222222222222222233333333333332233333333333333
11111111122222222222222222222222222233333322222333333333322
...
  • 大致程序上是先從NASA下載臭氧垂直觀測的逐日數據、其次按照模式模擬的範圍解析度,轉成前述o3map檔案。

NASA數據庫之下載

  • 使用2個層次的批次檔

年月層次

  • 開創年月之目錄
  • 執行days_of_month這支小程式找到當月的日數,定出起迄日
  • 執行第2層批次檔
  • 由於是wget,NASA可以接受同個ip多緒同步執行下載。此處是12個月份同步下載,NASA尚能負荷。
kuang@master /nas1/camxruns/2021/inputs/toms/ozcol_data
$ cat gg.cs
year=`echo $PWD|cut -d'/' -f4`
for i in {01..12};do mkdir -p $year$i;done
for i in $(ls -d 20*) ;do
cd $i
yr=`echo $i|cut -c3-4`
mn=`echo $i|cut -c5-6`
DoM=`days_of_month $yr $mn`
../get_b_e.cs $yr $mn 1 $DoM &
cd ..
done
exit 0
for i in $(ls -d 20*) ;do
cat $i/*> L3_ozone_omi_$i"AL.txt"
done
exit 0
  • 由於是同步下載,何時結束並不一定(此處並不監控,待全部結束後一起執行總結也可以)。最後將年月($i)目錄下的所有檔案集中在上一層目錄的L3ozone_omi$iAL.txt檔案內。

逐日下載

  • 定義逐日全球的toms檔案、路徑
  • 依序以wget下載
kuang@master /nas1/camxruns/2021/inputs/toms/ozcol_data
$ cat get_b_e.cs
#!/bin/csh
#$1:yy
#$2:mm
#$3:dd_beg
#$4:dd_end
set j = $3
while ( $j <= $4 )
set Y = "Y20"$1
if ( $j < 10) then
set D = L3e_ozone_omi_20$1$2"0"$j".txt"
else
set D = L3e_ozone_omi_20$1$2$j".txt"
endif
wget -q https://acd-ext.gsfc.nasa.gov/anonftp/toms/omi/data/Level3e/ozone/$Y/$D
@ j++
end
exit 0

o3map轉檔

  • 使用CAMx官網提供正確版本o3map程式與腳本
  • 套用正確的domain定義

程式下載及編譯

  • 使用Makefile編譯

輸入變數

變數 內容 範例
Coordinate project 投影方式 LAMBERT
xo, yo, cln, clt, t1, t2 原點、中心經緯度、割線緯度 -124.500, -205.500, 120.99, 23.61, 10., 40.
dx,dy 網格間距 3., 3.
nx,ny 網格數 83,137,
Output filename 輸出檔名稱 $output
Numbr of TOMS files 逐日檔個數 $fn
TOMS filename 逐日TOMS檔案名稱 $BEG,$END,$dir/$FILE

腳本範例

kuang@master /nas1/camxruns/2021/inputs/toms
$ cat m3mapd4.cs

export EXE=/cluster/src/CAMx/toms/o3map-31may20/src_v3.1/o3map
year=`echo $PWD|cut -d'/' -f4`
j=$(echo $year|cut -c 3-4)
for i in {01..12};do

output="o3map.20"$j$i"01.d4"
FILE="./ozcol_data/L3_ozone_omi_20"$j$i"AL.txt"
dir="./ozcol_data/20"$j$i
export fn=`ls $dir |wc -l`
echo 'Coordinate project |LAMBERT' > input
echo 'xo,yo,cln,clt,t1,t2|-124.500, -205.500, 120.99, 23.61, 10., 40.' >> input
echo 'dx,dy              | 3., 3.' >> input
echo 'nx,ny              |83,137,' >> input
echo 'Output filename    |'$output >> input
echo 'Numbr of TOMS files|'$fn >> input
for FILE in $(ls $dir|grep -v old);do
export BEG=`echo $FILE|cut -c 17-22`
END=$BEG
echo 'TOMS filename      |'$BEG,$END,$dir/$FILE  >> input
done
nohup $EXE < input
done
# doing the tuv job
cd /nas1/camxruns/$year/inputs/tuv/tuv4.8.camx7.00
Y=$(echo $year|cut -c 3-4)
for i in {01..12};do
sub cb6.job $Y${i}01 4
sleep 3s
done