由于筆者的研究需要用到數(shù)據(jù)同化技術(shù),所以開始學習WRF相關(guān)內(nèi)容(主要是WRF-DA模塊)。這里先解釋下WRF是什么東西。
WRF全稱Weather Research and Forecasting Model, 是一個天氣研究與預(yù)報模型.可以用來進行精細尺度的天氣模擬與預(yù)報。
二戰(zhàn)后,由于計算機技術(shù)的迅猛發(fā)展,氣象預(yù)報技術(shù)也隨之突飛猛進。短短的幾十年里,世界各地的氣象研究機關(guān)開發(fā)出了各自的相對獨立的氣象模式。這些模式之間缺少互換性,對科研及業(yè)務(wù)上的交流極其不便。從上世紀90年代后半開始,美國對這種亂立的模式狀況進行反省。最后由美國環(huán)境預(yù)測中心(NCEP),美國國家大氣研究中心(NCAR)等美國的科研機構(gòu)為中心開始著手開發(fā)一種統(tǒng)一的氣象模式。終于于2000 年開發(fā)出了WRF模式。同時,為使研究成果能夠迅速地應(yīng)用到現(xiàn)實的天氣預(yù)報當中去,WRF模式分為ARW(the Advanced Research WRF)和NMM(the Nonhydrostatic Mesoscale Model)兩種,即研究用和業(yè)務(wù)用兩種形式,分別由NCEP和NCAR管理維持著。
具體的可以見官網(wǎng):
WRF模擬系統(tǒng)主要包含WPS和WRF兩部分模塊: WPS模塊全稱為WRF Pre-processing System,即WRF預(yù)處理系統(tǒng),用來為WRF模型準備輸入數(shù)據(jù);如果只是做理想實驗(idealized modeling),就不需要用WPS處理真實數(shù)據(jù)。但是理想實驗不在本文介紹范圍內(nèi),本文介紹的是進行真實數(shù)據(jù)模擬的操作。 WRF模塊就是數(shù)值求解的模塊,它有兩個版本:ARW(Advanced Research WRF) 和 NMM(Nonhydrostatic Mesoscale Model)。大多數(shù)研究者主要用的都是ARW版本,本文所有的介紹也都基于ARW版本。 除了WPS與WRF兩大核心模塊外,WRF系統(tǒng)還有很多附加模塊:比如用于數(shù)據(jù)同化的WRF-DA,用于化學傳輸?shù)腤RF-chem,用于林火模擬的WRF-fire(該段文字引自xg1990的博客,具體地址文末貼出,感謝該位大神的分享)。
安裝運行WRF模擬系統(tǒng)必須在Linux系統(tǒng)。而筆者又無法放棄windows系統(tǒng),同時目前工作還處于前期測試階段,故決定選擇用VMware虛擬機搭建一個Linux系統(tǒng)來測試。
選用的VMware版本:12.5.2。
Linux系統(tǒng):Ubuntu 16.04
具體安裝過程不是本文重點。詳情可見
https://jingyan.baidu.com/article/c275f6ba07e269e33d756714.html
此外附上Ubuntu官網(wǎng)鏈接
WRF-DA編譯與安裝主要參照官方提供的ppt和文檔(地址文末會貼出)。
首先看下WRF-DA編譯與安裝的需求。
上面提到了需求如下:
1.Linux/Mac系統(tǒng),基于Unix或Linux的系統(tǒng)
2.(3DVAR)三維變分的案例內(nèi)存占用不大,大的(4DVAR)四維變分內(nèi)存消耗較大。
3.支持C和Fortran的編譯器(ifort/icc, gfortran/gcc,pgf90/pgcc)
4..需要的一些庫,類似于WRF。包括:Zlib,netCDF C/Fortran,MPI(MPICH),BUFR,CRTM,RTTOV,HDF5。
系統(tǒng)已經(jīng)安裝完畢,而內(nèi)存部分目前暫時不考慮。接下來看C和Fortran的編譯器。
Ubuntu內(nèi)置了gcc的編譯器。可以通過命令來查看。
~$ gcc -v
結(jié)果如下:
接下來安裝gfortran,也是通過命令進行安裝。
~$ sudo apt-get install gfortran
通過命令查看是否安裝成功。
~$ gfortran -v
接下來是幾個庫的下載與安裝。
zlib:
netCDF C/Fortran:
MPI(MPICH):
BUFR:包含在WRF源代碼中
CRTM:包含在WRF源代碼中
RTTOV:
需注冊,最好自備梯子。
HDF5:
將如上的幾個庫的安裝包通過共享文件夾放入虛擬機中(mnt/hgfs/Share)。
zlib和hdf5和netCDF 4相關(guān)。具體安裝步驟和教程借鑒了官方文檔
1.zlib的安裝:解壓到/usr/下
$ cp -r zlib-1.2.11.tar.gz /usr/
$ tar zvf zlib-1.2.11.tar.gz
然后進入解壓文件夾,并安裝
$ ./configure --prefix=/usr/local/zlib
$ make check
$ make install
修改環(huán)境變量。
gedit ~/.bashrc
# for zlib
export ZLIB_HOME=/usr/local/zlib export
LD_LIBRARY_PATH=$ZLIB_HOME/lib:$LD_LIBRARY_PATH
2.HDF5的安裝:解壓到/usr/下
$ tar -xvf hdf5-1.8.18.tar
然后進入解壓文件夾,并安裝
$ ./configure --with-zlib=/usr/local --prefix=/usr/local/hdf5
$ make
$ make check
$ make install
HDF5的安裝和檢驗參照:
./configure --prefix=/usr/local/hdf5 --with-zlib=/usr/local/zlib
HDF5還需配置一個環(huán)境變量,避免下面的netCDF C安裝報錯。
$ gedit ~/.bashrc
#for hd5
export CPPFLAGS=-I$PRO_PATH/usr/local/hdf5/include
export LDFLAGS=-L$PRO_PATH/usr/local/hdf5/lib
export LD_LIBRARY_PATH=$PRO_PATH/usr/local/hdf5/lib
$ source ~/.bashrc
3.netCDF C/Fortran安裝
先裝netCDF C:
$ export CPPFLAGS=-I$PRO_PATH/usr/local/hdf5/include
$ export LDFLAGS=-L$PRO_PATH/usr/local/hdf5/lib
$ export LD_LIBRARY_PATH=$PRO_PATH/usr/local/hdf5/lib
$ ./configure --prefix=/usr/local/NETCDF --enable-netcdf-4
$ make
$ make check
$ make install
接著裝netCDF Fortran:
先聲明環(huán)境變量:
$ export CPPFLAGS=-I/usr/local/NETCDF/include
$ export LDFLAGS=-L/usr/local/NETCDF/lib
然后進行下一步編譯。
$ ./configure --prefix=/usr/local/NETCDF FC=gfortran
4.mpich的安裝:
解壓之類的步驟同上,同樣放到usr下面。
解壓到指定路徑。
$ tar zxf mpich-3.2.tar.gz
$ ./configure -prefix=/usr/local/mpi/
5.rttov的安裝:
rttov解壓出來東西較多,同樣新建個path來存放。
$ tar zxf rttov121.tar.gz
$ cd src
$ ../build/rttov_compile.sh
打完收工。目前應(yīng)該就完成了WRF-DA編譯安裝前所有需要的依賴庫的編譯及安裝。下一篇更新WRF-DA具體的編譯與安裝。由于對Linux系統(tǒng)不熟悉,加上坑爹的rttov,博客寫了兩三天。從內(nèi)心堅持要提醒大家的一點,Linux編譯環(huán)境一定要注意環(huán)境變量?。?!
最后重點鳴謝幾位主要參考大神的博客以及相關(guān)文檔:
https://wenku.baidu.com/view/58851bc269eae009591bec0a.html
https://nwpsaf.eu/site/software/rttov/rttov-v12/
http://www2.mmm.ucar.edu/wrf/users/wrfda/updates-3.8.1.html
https://xg1990.com/blog/archives/190
http://blog.csdn.net/luoying_1993/article/details/53228473