背景
- 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
Warning: 因NASA資料上架與實際時間會有約2天的延宕,如果要最新、即時的數據需等候2天
o3map轉檔
- 使用CAMx官網提供正確版本的o3map程式與腳本
- 套用正確的domain定義
程式下載及編譯
Download: 主程式及腳本範例:o3map.31may20.tgz
- 使用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 |
Warning: 原點座標、網格間距單位為公里
腳本範例
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