原來的官網(wǎng)已經(jīng)停更了,安裝包和手冊都無法下載。
現(xiàn)僅存的安裝包下載地址:philipan / cost733class-1.4 · GitLab (uni-augsburg.de)
手冊:(2) (PDF) COST733CLASS v1.2 User guide (researchgate.net)
安裝
因為我用的服務器,netcdf, hdf5等環(huán)境變量之前都是配置好的,所以解壓后直接一步安裝。
解壓
tar xzvf cost733class-1.4.tar.gz
進入解壓后的文件夾,執(zhí)行
intel處理器? ./configure FC=ifort CC=icc --disable-grib --disable-opengl && make
gnu處理器??./configure FC=gfortran CC=gcc --disable-grib --disable-opengl && make
然后進入src文件夾,檢查是否生成cost733class可執(zhí)行文件,生成即安裝成功。
使用
關于方法以及類型的選擇,更多的需要去讀用戶手冊或者參考已發(fā)表文獻,這里我只記錄一下自己基于ERA5的逐小時SLP的運行流程
1. 數(shù)據(jù)下載
勾取自己需要的時間和經(jīng)緯度范圍,下載對應的nc文件
ERA5 hourly data on single levels from 1959 to present (copernicus.eu)
2. 數(shù)據(jù)預處理
根據(jù)自己的研究需求,可以用日平均,也可以每天挑選一個時刻,放在一個nc文件里
3. 運行
進入安裝文件夾中的src文件,即cost733class可執(zhí)行文件所在的位置,運行以下命令
./cost733class -dat pth:/public/home/sunxiaoyun/datadir/ERA5/input4cost733/slp-daily.nc slo:100:125:0.25 sla:20:50:0.25 -met PCT -ncl 4 -cla ?output-PCT.txt??
./cost733class -dat pth:/student/sunxiaoyun/cal_4_cost733/input4cost733/slp-heavy.nc wgt:1.D0 -dat pth:/student/sunxiaoyun/cal_4_cost733/input4cost733/u-heavy.nc wgt:1.D0 -dat pth:/student/sunxiaoyun/cal_4_cost733/input4cost733/v-heavy.nc wgt:1.D0 slo:100:125:0.25 sla:20:50:0.25 -met PCT -ncl 4 -cla ./output/output-heavy-PCT04.txt? ? ? ? ?#用地面氣壓和風場共同進行分型
執(zhí)行時給出經(jīng)緯度范圍和分辨率,我選擇的是PCT方法,類型是4種,輸出至PCT.txt,這些都可以根據(jù)自己的需求進行修改。
到這一步就可以出運行結(jié)果了,生成的txt中幾列數(shù)據(jù)分別是年,月,日,時和type

4.分類結(jié)果評估
手冊中提供了一些分類結(jié)果評估的,目的是選出最合適的類型數(shù)。這里舉例最常用的方法止一:ECV
需要給出分類的input文件,分類的執(zhí)行結(jié)果以及方法的選擇。
./cost733class -dat pth:/student/sunxiaoyun/cal_4_cost733/input4cost733/slp-heavy-twice.nc? -clain pth:./output/output-heavy-twice-PCT04.txt dtc:4 ddt:1d -met ECV -idx clain-ECV
其中 dtc:4 (日期數(shù)據(jù)有四列的意思)這個命令需要加上,否則在讀入分類結(jié)果的時候會報錯。
其中關于分類及評估方法的選取,以及用多種變量分類時權(quán)重的分配等都有待研究。感興趣的可以自己去手冊里看看。手冊中還提供了后處理的一些命令,我用不慣,選擇自己畫圖分析了。
遇到的問題(好多問題/(ㄒoㄒ)/~~)及解決方案:
1. 關于input文件的時間單位
直接下載的數(shù)據(jù)去運行cost733報錯,找不到時間單位,但數(shù)據(jù)屬性顯示明明是有單位的


然后我去研究了一下代碼,發(fā)現(xiàn)對時間單位的幾種情況中,開始時間沒有1900-01-01 00:00:00.0這種情況,不敢隨意修改源代碼怕有連鎖反應,也不想通讀所有代碼,所以就寫了個腳本改了一下時間屬性(這一步自行發(fā)揮,我目前試了ncl和python都可以)。


更改后的時間單位如圖所示,是代碼中顯示的第三種case。然后我去試了一下就可以正常運行了。

2. input文件時間的連續(xù)性
這個分型模式只適用于連續(xù)的日期進行分型,例如我輸入的是2013-2020年每年的12月共8個月的數(shù)據(jù),最后運行完輸出的txt文件中顯示從2013年12月1日到2014年7月。目前找到的解決方案就是再另寫一個文件記錄正確的日期,最后分析的時候替換一下。
3.input文件日平均的處理
在我自己運行的時候,分析的時間序列比較長,所以用日均值比較合理。ERA5官方有提供一個calculator?Daily statistics calculated from ERA5 data (copernicus.eu),需要點點點,我選擇了python批量下載小時值,用cdo處理成日均值。cdo的安裝和使用我也進行過一些簡單的記錄。
安裝:?基于anaconda安裝cdo - 簡書 (jianshu.com)?使用:cdo的使用--數(shù)據(jù)的合并,剪裁,更改等,持更 - 簡書 (jianshu.com)
但是回來就發(fā)現(xiàn)這個cdo做的日均值在跨年數(shù)據(jù)作為input文件的時候會報錯。就是我用2013-2020年每年的12月共8個月沒問題,做每年冬季(12月-次年1-2月)就會報錯方差為0。方差為0不就是數(shù)據(jù)都一樣嗎,又去檢查了所有數(shù)據(jù)的方差明明沒有0,無法理解。
評論區(qū)有朋友說刪除使用cdo平均過程中新生成的time_bnds后可正常運行,我試了一下還是失敗了,有需要的朋友可以嘗試一下。


2023.02.10更新
原來執(zhí)行./cost733class 命令可以選擇讀入的變量! 這樣便可以解決方差為0的問題。
./cost733class pth:/public/home/sunxiaoyun/datadir/ERA5/input4cost733/slp-daily.nc var:z slo:100:125:0.25 sla:20:50:0.25 -met PCT -ncl 4 -cla ?output-PCT.txt??
2023.08.04更新
使用cdo的delete刪除time_bnds變量總是報錯找不到變量
用了python中del命令,變量依舊存在。。。
最后實現(xiàn)工具大融合,最終用nco刪除了這個變量
ncrcat -v varname?-x input.nc output.nc
2024.05.23更新
模式默認讀取日數(shù)據(jù),在做一天多個時次的時候可以嘗試更改一下nc文件的時間間隔,也可解決方差為0的問題
cdo settaxis, 2013-04-01, 00:00, 1 day test.nc test1.nc