RTTOV12.2 (Radiative Transfer for TOVS) 研究環(huán)境搭建(一)on WSL Ubuntu LTS 18.04

RTTOV依賴庫關(guān)系

前言

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

Xftp成功建立連接

如果覺得每次啟動子系統(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绽昼,其他啟動配置選擇缺省值即可。


Xming.PNG

筆者這里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)系的描述

  1. UNIX or Linux operating system
  2. Fortran 90 compiler
  3. Perl v5.6 or later
  4. make utilities
  5. gzip and gunzip
  6. 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).
  7. 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.
  8. 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).
  9. 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.
  10. 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é)一下就是:

2018-08-30.png

放出這幾個庫的下載連接

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)限而姐, 方便接下來編譯操作

筆者這里是

  1. zlib-1.2.11.tar.gz
  2. hdf5-1.8.20.tar.gz
  3. netcdf-4.6.1.tar.gz
  4. netcdf-fortran-4.4.4.tar.gz
  5. 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)鏈接庫是不是都裝上了


CPP/Fortran/C

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
netcdf c 配置.PNG

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庫


NETCDF C&Fortran.PNG

因為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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末意敛,一起剝皮案震驚了整個濱河市馅巷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌草姻,老刑警劉巖钓猬,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異撩独,居然都是意外死亡敞曹,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門综膀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來澳迫,“玉大人,你說我怎么就攤上這事剧劝¢系牵” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵讥此,是天一觀的道長拢锹。 經(jīng)常有香客問我,道長萄喳,這世上最難降的妖魔是什么面褐? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮取胎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘湃窍。我一直安慰自己闻蛀,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布您市。 她就那樣靜靜地躺著觉痛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茵休。 梳的紋絲不亂的頭發(fā)上薪棒,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機與錄音榕莺,去河邊找鬼俐芯。 笑死,一個胖子當(dāng)著我的面吹牛钉鸯,可吹牛的內(nèi)容都是我干的吧史。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼唠雕,長吁一口氣:“原來是場噩夢啊……” “哼贸营!你這毒婦竟也來了吨述?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤钞脂,失蹤者是張志新(化名)和其女友劉穎揣云,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冰啃,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡邓夕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了亿笤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翎迁。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖净薛,靈堂內(nèi)的尸體忽然破棺而出汪榔,到底是詐尸還是另有隱情,我是刑警寧澤肃拜,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布痴腌,位于F島的核電站,受9級特大地震影響燃领,放射性物質(zhì)發(fā)生泄漏士聪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一猛蔽、第九天 我趴在偏房一處隱蔽的房頂上張望剥悟。 院中可真熱鬧,春花似錦曼库、人聲如沸区岗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽慈缔。三九已至,卻和暖如春种玛,著一層夾襖步出監(jiān)牢的瞬間藐鹤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工赂韵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娱节,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓右锨,卻偏偏與公主長得像括堤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351