cbin_avrg(cn) - sinotec2/CAMx_utility GitHub Wiki

目的

將2個斷續的CAMx模擬結果檔案連起來,成為一個獨立檔頭、時間連續的大檔。由於CAMx分月執行,下一個月的開始時間,必須要和上一個月結束的時間完全一致,然而為配合MM5格林威治標準時間的設定,在跨月的當下,可能不是正好切在0:00,而是20:00,因此在計算日均值、移動平均值、甚至月均值,都會出現困難。需要連接的工具。 (combination of avrg files)

使用方式

cbin_avrg file1 file2 file_out    
(檔名必須含附加檔名)    

使用範例

將三個月的執行結果連結成一個大檔

combination of month results in certain season 冬季與春季,整併後可以做全季平均或其他統計分析:

$ for i in Hs 4G 6C4G;do nohup cbin_avrg.ser con01/1001_$i.S.grd01 con02/1002_$i.S.grd01 con12/1012_$i.S.grd01 ./Winter/DJF_$i.S.grd02L;done&
$ for i in Hs 4G 6C4G;do nohup cbin con03/1003_$i.S.grd02 con04/1004_$i.S.grd02 con04/1004_$i.S.grd02 ../Spring/MAM_$i.S.grd02L;done&

將符合條件的所有avrg檔案集結成一大檔(cbin_all)

兩個引數:

  1. 檔案名稱,可以包含目錄、萬用卡(*、?、[...]等)條件,引數1必須用引號圍住。
  2. 結果檔名稱。

[kuang@master bin]$ cat cbin_all
# note! the argument must be quoted as "$1"
first=1
for i in $(ls -l $1|awk8);do
if [ "$first" == "1" ]; then
cp -f $i cbin_all.result
first=0
else
cbin_avrg.ser cbin_all.result $i tmp
mv tmp cbin_all.result
fi
echo $first" "$i
done
mv cbin_all.result $2

將全年12個月執行結果串連成一大檔

重複執行各個排放量方案:

for i in Hs 4G 6C4G;do export a="con??/10??"$i".S.grd02DM";export b="Annual/10AL"$i".S.grd02DM";cbin_all "$a" "$b">&cbin.out.$i;done&

如何確認avrg檔案的起迄時間以及檔案的完整性?

  1. 由ROOT.out檔案的最末三行,可以知道程式是否完整執行完。
  2. 使用指令tmavrg file若表頭的起迄時間與檔案尾端時間不一致,會在螢幕上顯示訊息。
  3. 執行cbin會出現時間,可以逐一出現。

序列與平行版本

序列版cbin_avrg.ser

此版本雖然序列執行,相對比較平行版本慢,但因記憶體需求較低,比較不容易出錯,且cbin_all檔案越加越大,記憶體越開越多,適用序列版。

平行版cbin_avrg.par

適用在日期較短、資料筆數較少的檔案。


類似程式over_avrg

概要

此一程式基本上由cbin_avrg進一步修改,cbin_avrg是聯接2個接續的avrg檔案,而over_avrg是針對2個有重疊時間的avrg檔案,將file1蓋過file2的值,再接續file2的時間。over_avrg只有serial 版本。

使用

over_avrg file1 file2 ... file_out    
(檔名必須含附加檔名,至少3個檔,最多300個檔)    

注意

  1. file1有可能是不完整的紀錄,也沒有關係,有多少數據程式就讀多少,matrix不足的部分,就以file2的內容代替。所以在此不完整的紀錄,是參雜2個檔案的內容,有可能會出現錯誤。
  2. avrg檔頭時間可能會與實質內容有落差,可能是cbin_avrg所造成的。在over_avrg時會先巡過一遍,修正此一情形。