前言
RTTOV v12 官網(wǎng) https://www.nwpsaf.eu/site/software/rttov/rttov-v12/
RTTOV 是EUMETSAT (European Organisation for the Exploitation of Meteorological Satellites)旗下的NWP/SAF (Numerical Weather Prediction / Satellite Application Facilities)開發(fā)的一款快速輻射傳輸模式軟件包栏渺,引用官網(wǎng)Overview的原話:
RTTOV (Radiative Transfer for TOVS) is a very fast radiative transfer model for passive visible, infrared and microwave downward-viewing satellite radiometers, spectrometers and interferometers. It is a FORTRAN 90 code for simulating satellite radiances, designed to be incorporated within user applications.
RTTOV 目前廣泛應(yīng)用于各類數(shù)值的同化模塊杰刽, 主要用于被動探測的衛(wèi)星的可見光相种、紅外囱嫩、微波通道的衛(wèi)星數(shù)據(jù)的同化媚朦。
筆者安裝RTTOV主要是為了了解RTTOV-SCATT模塊對微波通道的水凝物(包括冰晶计螺,云滴懂盐, 液態(tài)和固態(tài)降水粒子)相關(guān)的輻射傳輸特性的模擬脉顿。接下來幾篇文章會介紹一個粒子光學(xué)特性數(shù)據(jù)庫——ARTS, 主要是ARTS數(shù)據(jù)庫和RTTOV-SCATT的接口拔第。
RTTOV目前主要支持類Unix系統(tǒng)咕村, 目前網(wǎng)上幾乎沒有現(xiàn)成的預(yù)編譯版本,安裝必須要手動編譯蚊俺,由于其安裝依賴的庫包關(guān)系相對比較復(fù)雜懈涛, 加之筆者先前對于Linux系統(tǒng)不夠熟悉,自然踩了不少坑泳猬。因此特意記錄下來以備忘批钠。
本文主要參考一篇安裝WRF的文章:http://www.reibang.com/p/b0d1a39b0c5c
廢話少說,開始動手吧得封。
一. 基本環(huán)境配置
1.1 系統(tǒng)環(huán)境
這一部分是面向WSL小白的埋心,大佬可以直接忽略
筆者使用的是自己的win10微機上通過UWP應(yīng)用商店下載的最新的Ubuntu長期維護版本 Ubuntu LTS 18.04。強烈推薦安裝最新的LTS 18.04忙上, 因為這個WSL發(fā)行版本解決了之前的應(yīng)用商店版本中終端滾動距離過短拷呆,無法查看之前的記錄的問題。代碼高亮的功能也做了優(yōu)化晨横,使用體驗有明顯的提升洋腮。
筆者的主系統(tǒng)和子系統(tǒng)之間使用Xmanager旗下的Xshell/Xftp進行文件通信,Xming顯示圖形窗口手形,配置方案如下:
1.1.1 Ubuntu 下搭建 SSH 服務(wù)器
重新安裝openssh-server
$ sudo apt-get remove openssh-server
$ sudo apt-get install openssh-server
修改ssh server 配置
$ sudo vim /etc/ssh/sshd_config
修改一下ssh配置文件
Port 2222 #默認(rèn)的是22啥供,但是windows有自己的ssh服務(wù),也是監(jiān)聽的22端口库糠,所以這里要改一下
UsePrivilegeSeparation no
PasswordAuthentication yes
AllowUsers youusername # 這里改成你登陸WSL用的
配置完成后每次需要使用Xshell或Xftp連接子系統(tǒng)前伙狐,在終端中輸入:
$ sudo service ssh --full-restart
需要注意,重啟openssh-server后配置文件方才生效瞬欧,現(xiàn)在就可以通過Xftp連接本機的子系統(tǒng)服務(wù)端口127.0.0.1:2222. 如果Xftp/Xshell連接失敗贷屎,很大可能是因為你的Xmanager版本太低,不支持最新的openssh-server的加密協(xié)議艘虎,需要下載最新的openssh-server
如果覺得每次啟動子系統(tǒng)時都要輸入一次open-ssh 啟動命令比較麻煩唉侄,可以把openssh的啟動命令加入 ~/.bashrc 文件
1.1.1 WSL 搭建圖形界面顯示窗口Xming
之所以要搭建圖形界面顯示窗口, 是因為RTTOV12.2有一個依賴 wxpython 的 GUI野建,可以實時可視化輻射傳輸模式的結(jié)果(當(dāng)然你可以選擇不依賴python GUI編譯)WSL目前只支持字符界面属划,如果想要顯示圖形界面恬叹,目前最簡單的辦法就是配置一下Xming了。
Xming的配置相對比較簡單
Xming for windows 官網(wǎng):https://sourceforge.net/projects/xming/
下載安裝成功后同眯, 每次啟動時設(shè)置一下Xming 的 Display Number绽昼,其他啟動配置選擇缺省值即可。
筆者這里Display Number沒有選擇缺省值须蜗,是因為Xmanager Suite有一個自帶的閹割版圖形顯示工具Xserver的缺省Display Number就是0硅确,如果把Xming的缺省值也設(shè)置為0,兩者可能會引起沖突明肮。
接下來要配置一下子系統(tǒng)的Display number:
$ vim ~/.bashrc
在末尾加入一行:
export DISPLAY=:3 # 把這個數(shù)字設(shè)置為之前給Xming設(shè)置的Display number即可
使之生效
$ source ~/.bashrc
OK菱农,現(xiàn)在所有子系統(tǒng)中的GUI都會映射到主系統(tǒng)的Xming上顯示。
如果覺得不放心可以下一個Grads運行一下試試看
$ sudo apt-get install grads
$ grads
1.2 編譯環(huán)境
現(xiàn)在我們關(guān)注一下官網(wǎng)上這個 Requests for RTTOV12
Requirements for RTTOV v12
- Computer running Linux/Unix or Apple Mac OS X
- Fortran 90 compiler (e.g. gfortran)
- gzip compression utility
- GNU make utility
- 500+ MB free disk space required for full install (including bundled coefficients and test and reference data). Additional space is required for larger coefficient files that are not included with the RTTOV package.
- RTTOV can be compiled and run without any external dependencies, but some features require external libraries or software.
- Optionally RTTOV can be compiled against the HDF5 library (v1.8.8 or later) which enables reading of HDF5-format coefficients, emissivity/BRDF atlases and use of the RTTOV GUI.
- To use the RTTOV GUI and/or Python wrapper you must have f2py (part of NumPy) installed.
- To run the HTFRTC fast model through RTTOV requires the NetCDF v4 library.
現(xiàn)在我們先重點關(guān)注第二條和第四條晤愧,這兩條關(guān)系到編譯環(huán)境
*. Fortran 90 compiler (e.g. gfortran)
*. GNU make utility
首先大莫,我們要明白,RTTOV是一款快速傳輸模式官份,也就是說,這個軟件包并不是走傳統(tǒng)的物理模型模擬光學(xué)厚度的計算方法烙丛,整個軟件的核心是coefficient文件舅巷,也就是通過機器學(xué)習(xí)生成的回歸架構(gòu)的因子和回歸系數(shù)(當(dāng)然學(xué)習(xí)的樣本是通過物理模型計算得到的)在快速傳輸模式中不需要引入物理模型,只需要用現(xiàn)成的回歸模型提取大氣廓線的因子河咽,就可以直接通過矩陣運算得到大氣的光學(xué)厚度钠右。這樣的大規(guī)模矩陣運算就體現(xiàn)出Fortran的優(yōu)勢了。因此為了保證大規(guī)模矩陣運算的效率主要的源碼是由Fortran編寫的忘蟹,當(dāng)然RTTOV也為不熟悉Fortran的使用者提供了python和C++的wrapper飒房。 筆者在之后的文章中也許會提到。
因此媚值,我們下一步編譯RTTOV時需要 fortran語言, C語言, C++語言的編譯器
當(dāng)前Linux平臺下的主流的Fortran, C++編譯器套件有GCC(GNU Compiler Collection, 包括gcc, gfortran)和 Intel的 ICFC(Intel C++ & Fortran compiler, 包括 icc, ifortran).兩者相比各有優(yōu)缺點:
- 首先GCC是為GNU系統(tǒng)開發(fā)的自由軟件狠毯, 而ICFC是要收費的, 但是學(xué)生的郵箱可以申請到學(xué)生版的 Parallel Studio XE(至少筆者的浙大郵箱可以)
學(xué)生認(rèn)證URL:https://software.intel.com/en-us/parallel-studio-xe/choose-download#students - 然而褥芒,值得注意的是GNU作為一款自由軟件嚼松,對于Fortran編譯的優(yōu)化做得不是非常到位, 相比之下 ICFC 的 ifortran 對 fortran 對自家芯片做過指令級的優(yōu)化锰扶,在運行速度上比gfortran要快上很多献酗。尤其在用Intel自家芯片的機器上,在對運行速度有要求的情況下坷牛,推薦可以試試ifortran; 至于icc, 口碑不是非常好罕偎, 各方褒貶不一,可以參考一下知乎上的討論京闰。
- 不過筆者目前知識用RTTOV做一些初步的研究颜及,對運行速度要求不高甩苛,就偷個懶簡單安裝gcc和gfortran吧 ==.. (其實GCC包括了C、C++器予、fortran浪藻、Objective C、java乾翔、ada爱葵、go 語言的前端,再裝一個gfortran和g++只是一個用戶接口而已)
另外不要忘記安裝make工具, 它的作用是確定編譯時各個對象文件的依賴關(guān)系反浓,在使用RTTOV時編譯自己的Fortran程序也需要用到Make工具萌丈,以確定和依賴的RTTOV庫、HDF5庫雷则、NETCDF庫的依賴關(guān)系辆雾。
$ sudo apt-get install gcc
$ sudo apt-get install gfortran
$ sudo apt-get install g++
$ sudo apt-get install make
二. 依賴庫的編譯和安裝
我們來看一下 User-guide.pdf 文檔中關(guān)于安裝依賴庫關(guān)系的描述
- UNIX or Linux operating system
- Fortran 90 compiler
- Perl v5.6 or later
- make utilities
- gzip and gunzip
- About 100 Mbytes of free disk space is the minimum required (although more is necessary for hyperspectral IR sounder coefficient files and atlas data files).
- Memory requirements are strongly dependent on the instrument being simulated and the kind of simulations being performed: the simplest clear-sky direct model simulations require of the order of 10Mbytes.
- It is recommended to compile RTTOV against the HDF5 library (v1.8.8 or higher) so that all RTTOV features are available (see section 5.2 below).
- The Python interface and the RTTOV GUI require that f2py is installed. The GUI has additional requirements: see the GUI user guide in the docs/ directory.
- HTFRTC requires RTTOV to be compiled against the NetCDF v4 library.
- 推薦編譯時依賴HDF5庫,這樣可以激活RTTOV讀取高光譜紅外通道系數(shù)文件的.H5文件功能月劈,否則只能讀取ASCII系數(shù)文件度迂,缺點是比較慢,系數(shù)文件會比較大
- 推薦編譯時依賴NETCDF庫猜揪, 這樣可以激活RTTOV的HTFRTC功能
- 有條件可以安裝 f2py, 并在Miniconda環(huán)境下配置圖形界面的python環(huán)境惭墓, 需要安裝幾個科學(xué)計算和繪圖有關(guān)的python庫,這樣可以激活RTTOV的GUI功能
我這里用一張PPT截圖總結(jié)一下就是:
放出這幾個庫的下載連接
zlib-1.2.11: http://www.zlib.net/
hdf5-1.8.20: https://support.hdfgroup.org/HDF5/
netcdf-4.6.1(C/fortran): http://www.unidata.ucar.edu/downloads/netcdf/index.jsp
創(chuàng)建一個目錄用來放壓縮包和編譯中的文件 /usr/package, 把下載的五個壓縮包(包括RTTOV12.2)上傳到該目錄下:
$ sudo mkdir /usr/packge/
$ cd /usr/package
$ sudo chmod o+w ../package # 放開這個文件夾的寫權(quán)限而姐, 方便接下來編譯操作
筆者這里是
- zlib-1.2.11.tar.gz
- hdf5-1.8.20.tar.gz
- netcdf-4.6.1.tar.gz
- netcdf-fortran-4.4.4.tar.gz
- rttov122.tar.gz
好了腊凶,了解依賴庫之間的拓?fù)浣Y(jié)構(gòu)后,我們可以開始安裝了:
2.1 zlib-1.2.11
$ tar -zxvf zlib-1.2.11.tar.gz
$ cd -zxvf zlib-1.2.11/
--prefix 配置安裝路徑拴念,筆者安裝在 /usr/local/zlib下
$ ./configure --prefix=/usr/local/zlib
$ make
$ make check
$ sudo make install
將編譯好的二進制動態(tài)鏈接庫添加到環(huán)境變量中列表中
$ vim ~/.bashrc
加入一行:
$ export LD_LIBRARY_PATH=/usr/local/zlib/lib:$LD_LIBRARY_PATH
每次改動 ~/.bashrc不要忘記 source 使之生效
再安裝一個附屬工具zlib*
$ sudo apt-get install zlib*
2.2 hdf5-1.8.20
$ tar -zxvf hdf5-1.8.20.tar.gz
$ cd hdf5-1.8.20/
需要幾點特別注意:
- hdf5庫需要依賴zlib庫編譯
- hdf5庫要把C++和fortran的編譯器都打開钧萍,否則編譯出來的庫只有c庫,
之后安裝NETCDF和RTTOV會報錯顯示動態(tài)鏈接庫缺失U蟆风瘦!
$ ./configure --with-zlib=/usr/local/zlib --prefix=/usr/local/hdf5 FC=gfortran CC=gcc --enable-fortran --enable-cxx
$ make
$ make check
$ sudo make install
再強調(diào)一遍漾峡!務(wù)必確保configure結(jié)果顯示 g++ 和 gfortran 編譯器都被打開后再make
這個庫編譯時間會有點長...
編譯完成后檢查一下fortran cpp的動態(tài)鏈接庫是不是都裝上了
HDF5庫make check時的確會出現(xiàn)很多warning, 相關(guān)論壇上有有關(guān)討論边琉,開發(fā)者也只給出了一些模棱兩可的答復(fù)仆抵,一般認(rèn)為不予理睬沒有什么問題根资。
配置環(huán)境變量 注意第二刺彩、三兩行是配置NETCDF的編譯依賴晨逝,編譯完 NETCDF后最好注釋掉缎岗,以后編譯有需要依賴時再加上
$ gedit ~/.bashrc
$ export CPPFLAGS=-I/usr/local/hdf5/include # 編譯完NETCDF后注釋掉
$ export LDFLAGS=-L/usr/local/hdf5/lib # 編譯完NETCDF后注釋掉
$ export LD_LIBRARY_PATH=/usr/local/hdf5/lib
$ source ~/.bashrc
2.3 netcdf-4.6.1 C
先裝一下一個小工具m4
$ sudo apt-get install m4
$ tar -zxvf netcdf-4.6.1.tar.gz
$ cd netcdf-4.6.1/
--enable-netcdf-4 表示依賴HDF5和zlib庫編譯
$ ./configure --prefix=/usr/local/NETCDF --enable-netcdf-4
$ make
$ make check
$ sudo make install
make 時可能會提示錯誤:
fatal error: curl/curl.h: No such file or directory
這時候要用apt命令安裝一個curl庫
$ sudo apt-get install libcurl4-openssl-dev
參考 stackoverflow : https://stackoverflow.com/questions/11471690/curl-h-no-such-file-or-directory
Makecheck 時有幾個需要網(wǎng)絡(luò)資源的make check會無法通過哈打,參考了論壇里的一些討論遏佣,屬于網(wǎng)絡(luò)和遠(yuǎn)程資源的問題挖炬,可以忽略
安裝成功后添加環(huán)境變量
$ gedit ~/.bashrc
$ export CPPFLAGS=-I/usr/local/NETCDF/include #編譯完NETCDF fortran后注釋掉
$ export LDFLAGS=-L/usr/local/NETCDF/lib #編譯完NETCDF fortran后注釋掉
$ export LD_LIBRARY_PATH=/usr/local/hdf5/lib
$ source ~/.bashrc
2.4 netcdf-4.6.1 Fortran
$ tar -zxvf netcdf-fortran-4.4.4.tar.gz
$ cd netcdf-fortran-4.4.4/
FC指定你使用的Fortran編譯器
$ $ ./configure --prefix=/usr/local/NETCDF FC=gfortran
$ make
$ make check
$ sudo make install
安裝完后確認(rèn)一下 目標(biāo)庫中有C庫和Fortran庫
因為Fortran的庫的位置和C庫位置一樣,就不需要重復(fù)再添加環(huán)境變量了
這一期講完了基本環(huán)境配置和依賴庫的安裝状婶,下一期講RTTOV的安裝和GUI的配置
Reference:
https://blog.csdn.net/raoweijian/article/details/65661302
http://www.reibang.com/p/b0d1a39b0c5c
http://bbs.06climate.com/forum.php?mod=viewthread&tid=44072
https://www.unidata.ucar.edu/support/help/MailArchives/netcdf/msg12453.html
https://bbs.csdn.net/topics/392256783
第二期已更新
RTTOV12.2 (Radiative Transfer for TOVS) 研究環(huán)境搭建(二)on WSL Ubuntu LTS 18.04