WRF模式簡(jiǎn)易操作-中文指南_第1頁(yè)
WRF模式簡(jiǎn)易操作-中文指南_第2頁(yè)
WRF模式簡(jiǎn)易操作-中文指南_第3頁(yè)
WRF模式簡(jiǎn)易操作-中文指南_第4頁(yè)
WRF模式簡(jiǎn)易操作-中文指南_第5頁(yè)
已閱讀5頁(yè),還剩116頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.z.--.--考試資料WRF模式操作指南TheInstituteofAtmosphericPhysics,ChineseAcademyofSciencesNortheastInstituteofGeographyandAgroecology,ChineseAcademyofSciences中國(guó)科學(xué)院大氣物理研究所中國(guó)科學(xué)院東北地理與農(nóng)業(yè)生態(tài)研究所二○一七年三月二十日.z.目錄1.WRF模式簡(jiǎn)介……………………..12.WRF模式的安裝……………..……..22.1安裝環(huán)境….……..22.2模式源程序…...…………………..22.3NetCDF函數(shù)庫(kù)的安裝……………22.4標(biāo)準(zhǔn)初始化〔SI〕的安裝…………62.5WRF模式的安裝……………….……………….….…………..…93.WRF模式與T213模式嵌套…………….…………...173.1嵌套方案……….173.2嵌套程序設(shè)計(jì)………………….173.3編譯嵌套程序…………………..213.4嵌套的實(shí)現(xiàn)…………………….224.WRF模式系統(tǒng)的運(yùn)行……………...………………..294.1理想大氣方案………………..….294.2真實(shí)大氣方案………………….325.WRF模式系統(tǒng)作業(yè)卡……………...………………..475.1源程序………..….475.2真實(shí)大氣方案………………….486.模式結(jié)果的顯示處理……………….……………..616.1Vis5D格式……….…….………..616.2MICAPS格式……………….……626.2GrADS格式……….…….……...65附錄1.WRF模式參數(shù)配置說(shuō)明…….……………….68附錄2.T213場(chǎng)庫(kù)參數(shù)表……………..78WRF模式系統(tǒng)安裝/調(diào)試技術(shù)報(bào)告1.WRF模式簡(jiǎn)介WRF(WeatherResearchForecast)模式系統(tǒng)是由許多美國(guó)研究部門(mén)及大學(xué)的科學(xué)家共同參與進(jìn)展開(kāi)發(fā)研究的新一代中尺度預(yù)報(bào)模式和同化系統(tǒng)。WRF模式系統(tǒng)的開(kāi)發(fā)方案是在1997年由NCAR中小尺度氣象處、NCEP的環(huán)境模擬中心、FSL的預(yù)報(bào)研究處和奧克拉荷馬大學(xué)的風(fēng)暴分析預(yù)報(bào)中心四部門(mén)聯(lián)合發(fā)起建立的,并由國(guó)家自然科學(xué)基金和NOAA共同支持?,F(xiàn)在,這項(xiàng)方案,得到了許多其他研究部門(mén)及大學(xué)的科學(xué)家共同參與進(jìn)展開(kāi)發(fā)研究。WRF模式系統(tǒng)具有可移植、易維護(hù)、可擴(kuò)大、高效率、方便的等諸多特性,將為新的科研成果運(yùn)用于業(yè)務(wù)預(yù)報(bào)模式更為便捷,并使得科技人員在大學(xué)、科研單位及業(yè)務(wù)部門(mén)之間的交流變得更加容易。WRF模式系統(tǒng)將成為改進(jìn)從云尺度到天氣尺度等不同尺度重要天氣特征預(yù)報(bào)精度的工具。重點(diǎn)考慮1-10公里的水平網(wǎng)格。模式將結(jié)合先進(jìn)的數(shù)值方法和資料同化技術(shù),采用經(jīng)過(guò)改進(jìn)的物理過(guò)程方案,同時(shí)具有多重嵌套及易于定位于不同地理位置的能力。它將很好的適應(yīng)從理想化的研究到業(yè)務(wù)預(yù)報(bào)等應(yīng)用的需要,并具有便于進(jìn)一步加強(qiáng)完善的靈活性。WRF模式作為一個(gè)公共模式,由NCAR負(fù)責(zé)維護(hù)和技術(shù)支持,免費(fèi)對(duì)外發(fā)布。第一版的發(fā)布在2000年11月30日。隨后在2001年5月8日,第二次發(fā)布了WRF模式,版本號(hào)為1.1。2001年11月6日,很快進(jìn)展了模式的第三次發(fā)布,只是改了兩個(gè)錯(cuò)誤,沒(méi)有很大的改動(dòng),因此版本號(hào)定為1.1.1。直到2002年4月24日,才正式第四次發(fā)布,版本號(hào)為1.2。同樣,在稍微修改一些錯(cuò)誤后,2002年5月22日第五次版發(fā)布模式系統(tǒng),版本號(hào)為1.2.1。原定于2002年10月份左右的第六次發(fā)布,直到2003年3月20才推出,版本號(hào)為1.3。2003年11月21日進(jìn)展了更新。2004年5月21日推出了嵌套版本V2.0。2004年6月3日進(jìn)展了更新。到2006年1月30日為止最新版本為2.1.2。2.WRF模式的安裝2.1安裝環(huán)境2.1.1硬件環(huán)境WRF模式是一個(gè)多機(jī)型、跨平臺(tái)、標(biāo)準(zhǔn)化的模式。可以在IBMAI*,SGIIRI*,PCLINU*等機(jī)型上運(yùn)行。2.1.2軟件環(huán)境WRF模式的運(yùn)行系統(tǒng)中的一般需要的安裝軟件環(huán)境包括:UNI*〔LINU*〕操作系統(tǒng)Perl5.003以上Fortran程序編輯器〔包括Fortran90和Fortran77編譯器〕C程序編譯器NetCDF函數(shù)庫(kù),版本在3.3.1以上〔必須包含F(xiàn)ortran77,Fortran90以及C的程序調(diào)用接口〕MICAPS圖形顯示系統(tǒng)、VIS5D圖形顯示系統(tǒng)、GrADS或者RIP等2.2模式源程序WRF模式系統(tǒng)運(yùn)行所需要的程序包括:標(biāo)準(zhǔn)初始化〔SI〕:WRF模式的數(shù)據(jù)前處理局部??蓮膶?xiě)成GRIB碼的AVN數(shù)據(jù)文件中讀取模式區(qū)域所需的數(shù)據(jù),并插值成WRF所需的變量場(chǎng)。WRF模式:WRF模式的初始場(chǎng)/邊界條件生成以及模式積分計(jì)算局部。2.3NetCDF函數(shù)庫(kù)的安裝2.3.1文件獲取目前,由于WRF模式的數(shù)據(jù)處理格式主要是應(yīng)用較為常見(jiàn)的NetCDF數(shù)據(jù)格式。因此,在安裝WRF模式的標(biāo)準(zhǔn)初始化以及WRF主模式前,必須在操作系統(tǒng)環(huán)境中先安裝NetCDF程序包,生成NetCDF函數(shù)庫(kù)。在運(yùn)行的系統(tǒng)環(huán)境中,如果沒(méi)有安裝NetCDF函數(shù)庫(kù),則必須自己安裝。NetCDF程序包的下載地址為從網(wǎng)站中,可以獲得NetCDF的壓縮程序包netcdf.zip或者netcdf.tar.Z。2.3.2安裝環(huán)境不同平臺(tái)要求也不一樣,但必需有25兆的可用空間用來(lái)解壓、編譯和運(yùn)行測(cè)試。由于WRF模式的程序采用了C,F(xiàn)ortran77和Fortran90編寫(xiě),所以也要求操作平臺(tái)具有FORTRAN77,F(xiàn)ORTRAN90和標(biāo)準(zhǔn)C〔或C++〕編譯器。netCDF將會(huì)編譯并測(cè)試相應(yīng)的語(yǔ)言接口。2.3.3指定編譯環(huán)境首先要選擇并指定一個(gè)恰當(dāng)?shù)木幾g環(huán)境。如果需要,可設(shè)置CC,CFLAGS,F(xiàn)C,F(xiàn)FLAGS,C**,C**FLAGS,F(xiàn)90和F90FLAGS中任何環(huán)境變量,以指明相應(yīng)的編譯環(huán)境。環(huán)境變量也就是用戶外殼程序〔shell〕管理的參數(shù),并被shell程序用于運(yùn)行應(yīng)用程序〔例如設(shè)置腳本程序〕。一些環(huán)境變量的說(shuō)明可參見(jiàn)下表〔表1〕。表1編譯NetCDF的一些環(huán)境變量及其說(shuō)明變量描述NotesCCC編譯器如果未指定,設(shè)置腳本程序?qū)⒃噲D找出適宜的C編譯器,如:cc,c89,*lc,orgcc。FCFortran編譯器(如果存在)如果未指定,設(shè)置腳本程序?qū)⒃噲D找出適宜的Fortran90orFortran77編譯器。如果不需要Fortran接口,則可將FC設(shè)置為""。F90Fortran90編譯器(如果存在)如果未指定,設(shè)置腳本程序?qū)⒃噲D找出適宜的Fortran90編譯器。如果指定了Fortran90編譯器,則不需要FC參數(shù)。如果不需要Fortran90接口,則可將F90設(shè)置為""。C**C++編譯器如果未指定,設(shè)置腳本程序?qū)⒃噲D找出適宜的C++編譯器。不需要C++接口時(shí),可將C**設(shè)置為""。CFLAGSC編譯器參數(shù)選項(xiàng)例如"-0"或"-g"CPPFLAGSC預(yù)處理參數(shù)選項(xiàng)例如"-DNDEBUG"是忽略聲明局部的檢測(cè)〔assertion〕FFLAGSFortran編譯器參數(shù)選項(xiàng)例如"-O"或"-g"F90FLAGSFortran90編譯器參數(shù)選項(xiàng)例如"-O"或"-g"。如果未指定,則采用FFLAGS的值。C**FLAGSC++編譯器標(biāo)志例如"-O"或"-g"ARFLAGS

NMFLAGS

FPP

M4FLAGS

LIBS

FLIBS混合參數(shù)選項(xiàng)在一些操作平臺(tái)中可能用到這些參數(shù)中的一個(gè)或幾個(gè)。值得注意的是,如果不設(shè)置環(huán)境變量,則配置腳本程序?qū)?huì)試圖找出相應(yīng)合理的設(shè)置值。但在IBMSP機(jī)器上,如果用戶不設(shè)置Fortran90的編譯和編譯選項(xiàng),則配置腳本往往找不到正確的Fortran90編譯器和編譯選項(xiàng),從而造成NetCDF函數(shù)庫(kù)中沒(méi)有Fortran90的程序接口。環(huán)境變量也就是用戶外殼程序〔shell〕管理的參數(shù),并被shell程序用于運(yùn)行應(yīng)用程序〔例如設(shè)置腳本程序〕。典型的環(huán)境變量有: 環(huán)境變量名變量值USER steveHOME /home/stevePATH /bin:/usr/bin:/home/steve/bin執(zhí)行命令行命令"env〞,可得到當(dāng)前環(huán)境中的環(huán)境變量列表。定義和設(shè)置環(huán)境變量的方式取決于用戶所用的外殼〔Shell〕類型。Csh類shell〔如csh、tcsh〕用戶設(shè)置方式如下:setenvCCc89setenvCPPFLAGS"-0-DNDEBUG〞而標(biāo)準(zhǔn)UNI*shell〔例如sh、ksh、bash〕用戶要設(shè)置上面同樣的環(huán)境變量,可如下設(shè)置:e*portCC=c89e*portCPPFLAGS=〞-0-DNDEBUG〞以上兩種方式中,參數(shù)值中帶有將值的各局局部開(kāi)的空格分隔符時(shí),雙引號(hào)不能省略。否則,參數(shù)值只是設(shè)置為所要取值得一局部。標(biāo)準(zhǔn)shell用戶還有一種額外的快捷方式為單一命令定義和設(shè)置環(huán)境變量。環(huán)境變量可在命令行中定義和設(shè)置,并只在這一行中生效。例如:e*portFOO=fooenv|grepFOOFOO=fooFOO=barenv|grepFOOFOO=barenv|grepFOOFOO=foo測(cè)試系統(tǒng)時(shí),環(huán)境變量及其賦值可列表式給出。標(biāo)準(zhǔn)UNI*shell用戶可直接使用標(biāo)準(zhǔn)語(yǔ)法。例如,標(biāo)準(zhǔn)shell用戶可以用〔以IBMSPAI*為例〕:e*portCC=*lcCPPFLAGS=-DNDEBUGCFLAGS=-OFC=f77\FFLAGS=-OC**=*lCF90=*lf90F90FLAGS=-qsuffi*=f=f90在IBMAI*SP環(huán)境下,編譯NetCDF所需要的一些相應(yīng)的系統(tǒng)環(huán)境變量有:CC=/bin/*lcCPPFLAGS=-DNDEBUGCFLAGS=-OFC=/bin/*lfFFLAGS=-OF90=/bin/*lf90F90FLAGS=-qsuffi*=f=f90#Note:no"-O"optionC**=/bin/*lCC**FLAGS=-O因?yàn)橛行C(jī)器的AI*系統(tǒng)在用F90編譯器編譯時(shí),選用"-O〞優(yōu)化編譯會(huì)產(chǎn)生錯(cuò)誤信息為"1501-229Compilationendedduetolackofspace〞的錯(cuò)誤。通常是由于編譯時(shí)優(yōu)化消耗內(nèi)存太多,以至于超出計(jì)算機(jī)內(nèi)存。解決方法之一是用ulimit命令將數(shù)據(jù)段〔data〕、堆棧段〔stack〕以及內(nèi)存段〔memory〕設(shè)置成足夠大或者設(shè)置成無(wú)限制〔unlimited〕。另一種解決方法就是,在設(shè)置F90編譯選項(xiàng)時(shí),不要用"-O〞優(yōu)化選項(xiàng)。另外,如果要用64位模式編譯程序,則除了在C和Fortran編譯選項(xiàng)中添加"-q64〞外,還要設(shè)置以下環(huán)境變量:ARFLAGS='-*64cru'NMFLAGS='-*64'2.3.4編譯和安裝NetCDF要生成編譯netCDF所需的Makefile文件,必須先運(yùn)行配置腳本程序(configure)。它存放在netCDF目錄的src子目錄中。首先,選擇安裝的目錄。用這個(gè)目錄作為配置腳本程序參數(shù)"――prefi*=〞的指定值。程序默認(rèn)的安裝目錄〔prefi*參數(shù)值〕是"..〞,即將程序包安裝在../bin,../lib和../man,這些目錄是相對(duì)于netCDF的src/目錄。執(zhí)行設(shè)置腳本格式如下:./configure--prefi*=目錄名這里"--prefi*=...〞是可選的;如果省略的話,程序?qū)⒛J(rèn)地將當(dāng)前目錄的父目錄"..〞設(shè)為安裝目錄。運(yùn)行配置腳本程序時(shí),程序會(huì)檢測(cè)系統(tǒng)的與編譯netCDF程序包相關(guān)的屬性設(shè)置。檢測(cè)結(jié)果將會(huì)顯示在標(biāo)準(zhǔn)輸出設(shè)備上〔如顯示器〕。配置腳本程序還會(huì)創(chuàng)立一個(gè)記錄文件"config.log〞。它包含了配置腳本程序檢測(cè)系統(tǒng)屬性設(shè)置時(shí)發(fā)現(xiàn)的錯(cuò)誤信息。由于系統(tǒng)檢測(cè)可能會(huì)導(dǎo)致一些錯(cuò)誤,因此在記錄文件中可能會(huì)記錄一些錯(cuò)誤信息。這些錯(cuò)誤信息未必說(shuō)明是有問(wèn)題〔嚴(yán)重的錯(cuò)誤標(biāo)志會(huì)導(dǎo)致下一步編譯"make〞程序失敗〕。不過(guò),記錄文件中的編譯器不能啟動(dòng)的錯(cuò)誤信息例外,這是一個(gè)編譯環(huán)境的嚴(yán)重錯(cuò)誤,必須改正,否則不會(huì)產(chǎn)生相應(yīng)編譯環(huán)境的程序接口。運(yùn)行編譯命令"make〞。此命令將創(chuàng)立一個(gè)或多個(gè)netCDF庫(kù)。它包括根本的netCDF庫(kù)"libsrc/libnetcdf.a〞。如果系統(tǒng)有Fortran77或者Fortran90編譯器,則Fortran接口程序會(huì)包含在此庫(kù)中。如果系統(tǒng)有C++編譯器,則C++接口程序會(huì)創(chuàng)立在庫(kù)"c**/libnetcdf_c++.a〞中。命令創(chuàng)立的庫(kù)還包括netCDF應(yīng)用程序庫(kù)ncgen和ncdump。如果第一步的編譯通過(guò),則可以用命令"maketest〞來(lái)檢驗(yàn)netCDF庫(kù)和可執(zhí)行程序創(chuàng)立得正確與否。系統(tǒng)會(huì)建立和運(yùn)行各種測(cè)試C、Fortran和C++的程序,以及應(yīng)用程序"ncdump〞和"ncgen〞。以"***〞開(kāi)頭的輸出顯示行中,列出了測(cè)試成功與否的信息。任何錯(cuò)誤都會(huì)明確列出,并終止程序的運(yùn)行。測(cè)試過(guò)程中的編譯器和連接器警告會(huì)被忽略掉。如果編譯和測(cè)試都正確,這時(shí)就可以安裝程序庫(kù)和可執(zhí)行程序了。安裝時(shí),運(yùn)行命令"makeinstall〞即可,它將連接系統(tǒng)的函數(shù)庫(kù)和應(yīng)用程序,安裝到指定的目錄中。在進(jìn)展編譯安裝的時(shí)候,可以編寫(xiě)一個(gè)shell腳本程序。這樣,在安裝的時(shí)候,只需執(zhí)行這個(gè)批處理命令就行。這里給出一個(gè)在AI*系統(tǒng)上編譯安裝的例子,比方取名為install.nc:makedistcleane*portCC='/usr/bin/*lc'e*portCPPFLAGS=-DNDEBUGe*portCFLAGS=-Oe*portFC='/usr/bin/*lf90'e*portFFLAGS='-O3-qfi*ed'e*portF90FLAGS='-O3-qfree-qsuffi*=f=f90'e*portF90='/usr/bin/*lf90'e*portC**='/usr/bin/*lC'e*portC**FLAGS=-Oconfigure--prefi*=/u/wrf_*p/netcdfmakemaketestmakeinstall2.3.5問(wèn)題處理(1)詳細(xì)閱讀本安裝文檔。(2)轉(zhuǎn)到netCDF的頂級(jí)目錄下的源程序目錄SRC。(3)執(zhí)行命令"makedistclean〞,即使執(zhí)行失敗也不會(huì)造成什么錯(cuò)誤。(4)如果存在"config.cache〞文件,則將它刪除。(5)按上面描述的方法設(shè)置相應(yīng)的環(huán)境變量。(6)重新執(zhí)行配置腳本程序。(7)執(zhí)行命令"make〞。(8)執(zhí)行命令"maketest〞。(9)執(zhí)行命令"makeinstall〞。值得注意的是,設(shè)置和編譯系統(tǒng)應(yīng)該具有較新的"sh〞shell、"make〞程序以及C和Fortran編譯器。在曙光機(jī)器上,就存在Fortran90編譯器版本比較陳舊,不能編譯后綴名為".F90〞的程序,導(dǎo)致運(yùn)行配置腳本時(shí),無(wú)法通過(guò)對(duì)Fortran90編譯器的檢測(cè),故不能生成Fortran90程序接口。2.4標(biāo)準(zhǔn)初始化〔SI〕的安裝2.4.1文件和資料的獲取標(biāo)準(zhǔn)初始化是WRF模式的數(shù)據(jù)前處理局部,也是WRF模式的三維變分系統(tǒng)建立使用之前為WRF模式提供初/邊值的局部。SI主要的具有兩大功能:(1)模式區(qū)域的定義和創(chuàng)立在這里,用戶可以定義計(jì)算區(qū)域〔投影參數(shù),范圍大小,區(qū)域位置等〕。根據(jù)這些定義設(shè)置,SI的"gridgen_model.e*e〞程序會(huì)產(chǎn)生一個(gè)名為"static〞的文件。它是NetCDF格式的文件,包含模式格點(diǎn)定義信息和一些靜態(tài)數(shù)據(jù)場(chǎng)〔如地形、土地利用、土壤類型、月葉面積指數(shù)、經(jīng)度和緯度等〕。(2)將數(shù)據(jù)插值到WRF模式的計(jì)算格點(diǎn)〔包括水平方向和垂直方向〕上,為WRF模式提供初始場(chǎng)和邊界條件。這項(xiàng)功能是由"hinterp.e*e〞和"vinterp.e*e〞程序來(lái)完成。另外,"gribprep.e*e〞程序是將標(biāo)準(zhǔn)的GRIB碼格式的數(shù)據(jù)文件轉(zhuǎn)換成"hinterp.e*e〞程序能識(shí)別的格式。也可以不用"gribprep.e*e〞程序,而是直接將其他數(shù)據(jù)格式的數(shù)據(jù)寫(xiě)成"hinterp.e*e〞所能識(shí)別的格式即可。安裝之前,首先需從WRF模式的提供網(wǎng)站〔.〕下載標(biāo)準(zhǔn)初始化〔SI〕的壓縮程序包、AVN模式的試驗(yàn)數(shù)據(jù)AVN.TAR以及模式所需的靜態(tài)數(shù)據(jù)〔如地形、土地利用類型、土壤溫度等〕:WRFSI.TAR.gzAVN.TAR greenfrac_10m.tar.gz-10分的植被指數(shù)數(shù)據(jù) pctland_10m.tar.gz-10分的土地利用數(shù)據(jù) soiltemp_1deg.tar.gz-1度的全球深層土壤溫度數(shù)據(jù) topo_10m.tar.gz-10分的地形數(shù)據(jù)另外,還應(yīng)該下載如下四個(gè)文件夾及其其中的數(shù)據(jù)文件: -landuse_30s/USGS24-categorylandusefractions -soiltype_bot_30s/WMO/FAO16-category2-layersoiltypes -soiltype_top_30s/ -topo_30s/解壓這些文件后,應(yīng)該得到八個(gè)目錄:greenfrac_10m/pctland_10m/topo_10m/soiltemp_1deg/landuse_30s/soiltype_bot_30s/soiltype_top_30s/topo_30s/解壓后的各目錄中所得到的數(shù)據(jù)文件大多數(shù)都是10°×10°的數(shù)據(jù)塊文件。用戶大約需要1.8Gb的磁盤(pán)空間來(lái)存儲(chǔ)這些數(shù)據(jù)。其目錄在WRFSI的參數(shù)配置文件中需要做相應(yīng)的設(shè)定。2.4.2安裝環(huán)境編譯時(shí),要求系統(tǒng)裝有Perl〔5.003以上的版本〕和make〔3.75以上的版本〕。由于WRFSI模式的程序采用了C,F(xiàn)ortran77和Fortran90編寫(xiě),所以也要求操作平臺(tái)具有FORTRAN77,F(xiàn)ORTRAN90和標(biāo)準(zhǔn)C〔或C++〕編譯器。SI的數(shù)據(jù)格式采用了NetCDF的格式,要求系統(tǒng)安裝了NetCDF函數(shù)庫(kù)。2.4.3SI的目錄構(gòu)造在進(jìn)展編譯和運(yùn)行SI前,有必要先熟悉SI的目錄構(gòu)造。在SI的編譯和運(yùn)行當(dāng)中,有四個(gè)"頂級(jí)〞路徑環(huán)境變量。這里"頂級(jí)〞的意思是指每一個(gè)路徑都是一個(gè)總的路徑,在其下面,編譯和運(yùn)行時(shí)可能會(huì)創(chuàng)立許多子目錄。從這個(gè)意義上來(lái)說(shuō),這四個(gè)目錄分別相當(dāng)于他們的子目錄的頂級(jí)目錄。這四個(gè)"頂級(jí)〞目錄分別為:(1)SRCROOT這個(gè)目錄在編譯和安裝SI時(shí)要用到,它是包含SI源程序代碼的目錄,也就是在用戶解壓tar源程序包時(shí)所創(chuàng)立的目錄。比方用戶解壓文件時(shí),最終會(huì)創(chuàng)立一個(gè)名為wrfsi_20020328的SRCROOT目錄。當(dāng)然,用戶也可以根據(jù)自己的喜好,將其改為自己喜歡的名稱。通常,SRCROOT目錄中包含用perl寫(xiě)成的安裝腳本文件"install_wrfsi.pl〞。編譯和安裝時(shí),應(yīng)該提供大約10兆空間給SRCROOT目錄。(2)INSTALLROOT這個(gè)目錄是在編譯和安裝SI時(shí)用到。它是指定SI的安裝目錄,存放SI的可執(zhí)行程序〔包括可執(zhí)行的二進(jìn)制文件和可執(zhí)行的perl腳本〕。在INSTALLROOT目錄下,安裝后會(huì)創(chuàng)立三個(gè)目錄:bin、data和etc。子目錄bin中存放可執(zhí)行的二進(jìn)制文件;data存放相關(guān)的配置信息文件;etc存放可執(zhí)行的perl腳本文件。INSTALLROOT和SRCROOT可以一樣,這樣的話,INSTALLROOT目錄下的三個(gè)子目錄會(huì)創(chuàng)立在SRCROOT的目錄下。如果INSTALLROOT目錄缺省,則系統(tǒng)會(huì)認(rèn)為INSTALLROOT與SRCROOT一樣。INSTALLROOT需要的空間大約為5兆。(3)MOAD_DATAROOT這個(gè)目錄在運(yùn)行SI時(shí)使用。"MOAD〞的意思是"所有計(jì)算區(qū)域之源〔MotherofAllDomains〕〞,當(dāng)然也包括以后嵌套技術(shù)實(shí)現(xiàn)后的粗/細(xì)網(wǎng)格。MOAD_DATAROOT可以和INSTALLROOT以及SRCROOT一樣,但將MOAD_DATAROOT與這二者區(qū)分開(kāi)來(lái)是非常有用的。它可以使用戶在一次編譯后,處理不同的模式區(qū)域。MOAD_DATAROOT的默認(rèn)目錄為INSTALLROOT/data。如果要設(shè)置不同路徑時(shí),只需將INSTALLROOT/data目錄下的cdl和static兩個(gè)子目錄拷貝到新的目錄下即可。(4)E*T_DATAROOT這個(gè)目錄在運(yùn)行SI時(shí)使用。它是用來(lái)存放一些所謂的"外部〞數(shù)據(jù)。數(shù)據(jù)前處理程序grib_prep.e*e產(chǎn)生的結(jié)果文件就是存放的在這個(gè)目錄的子目錄e*tprd目錄下,而運(yùn)行g(shù)rib_prep.e*e程序時(shí)所創(chuàng)立的記錄文件也放在這個(gè)目錄的子目錄log下面。同樣,當(dāng)用戶不用個(gè)grib_prep.e*e程序處理數(shù)據(jù),而是自定義生成hinterp.e*e程序所能識(shí)別的數(shù)據(jù)文件時(shí),用戶所生成的數(shù)據(jù)文件也應(yīng)該放在這個(gè)目錄的e*tprd子目錄下,插值程序hinterp.e*e則從這個(gè)子目錄下讀取輸入數(shù)據(jù)。對(duì)于1.3版本的SI來(lái)說(shuō),則這個(gè)目錄已經(jīng)被提供初始場(chǎng)(ANALPATH)和邊界條件(LBCPATH)的路徑所代替。并且,在1.3版本中,初始場(chǎng)和邊界條件可以分開(kāi),使用兩個(gè)不同的路徑。2.4.4編譯和安裝SI編譯和安裝前,需查看一下"src/include/makefile_ibm.inc.in〞文件。比方查看編譯器的名字〔如FC〕,cpp選項(xiàng)〔CPPFLAGS特殊情況下為-DFORTRANDOUBLEUNDERSCORE,而有些計(jì)算機(jī)〔比方AlphaUni*工作站〕則要求為-DFORTRANUNDERSCORE〕。用戶還需為gcc庫(kù)函數(shù)指定確切的路徑。同時(shí),用戶還可以根據(jù)需要,設(shè)定一些相應(yīng)的編譯選項(xiàng)。 要求用戶找到計(jì)算機(jī)安裝netCDF和perl的路徑。沒(méi)有的話,則需必須下載正確的版本進(jìn)展安裝。 找到正確的netCDF和perl的安裝路徑后,SI最簡(jiǎn)單的安裝就是在安裝在當(dāng)前源代碼一樣目錄下。這時(shí)只需設(shè)置一下環(huán)境變量NETCDF,將其指到包含netCDF庫(kù)函數(shù)的正確目錄,例如: setenvNETCDF/usr/local/netcdf-3.4然后,輸入以下安裝命令: perlinstall_wrfsi.pl上面是最為簡(jiǎn)單的安裝方式,但是如果用戶沒(méi)有找到netCDF和Perl的安裝目錄的話,則會(huì)退出安裝。因此,還可以根據(jù)用戶選擇配置來(lái)安裝。執(zhí)行安裝命令時(shí),其他的一些參數(shù)選項(xiàng)如下: perlinstall_wrfsi.pl\ --srcroot=/u/denglt/wrfsi_src\ --installroot=/u/denglt/wrfsi\ --dataroot=/u/denglt/wrfsi/data\ --path_to_netcdf=/usr/local/netcdf\ --path_to_perl=/usr/local/perl\ --machine=ibm>log其中,srcroot是指提供安裝WRFSI源代碼的目錄,installroot是指將要承受安裝WRFSI的目錄,dataroot是以后運(yùn)行SI程序的輸出結(jié)果存放目錄,如果用戶沒(méi)有指定dataroot的目錄,則會(huì)在安裝目錄〔$installroot〕中創(chuàng)立一個(gè)"/data〞目錄。特別注意的是,在perl命令行的續(xù)行符"\〞前,最好留一個(gè)空格。因?yàn)?,如果不留空格,而在后續(xù)行的第一列也沒(méi)有空格的話,則程序會(huì)將兩行不留空格地合并起來(lái),造成語(yǔ)法錯(cuò)誤。 成功安裝后,在安裝目錄下會(huì)創(chuàng)立一個(gè)名為"/bin〞的目錄,并且創(chuàng)立有如下四個(gè)可執(zhí)行文件:-rw*r-*r-*1wrfhelpusers458752Apr1715:36grib_prep.e*e-rw*r-*r-*1wrfhelpusers647168Apr1715:36gridgen_model.e*e-rw*r-*r-*1wrfhelpusers614400Apr1715:37hinterp.e*e-rw*r-*r-*1wrfhelpusers63120Apr1715:37siscan-rw*r-*r-*1wrfhelpusers630221Apr1715:37staticpost.e*e(v2.0以上才有)-rw*r-*r-*1wrfhelpusers188416Apr1715:37vinterp.e*e其中,"grib_prep.e*e〞文件是讀取GRIB碼數(shù)據(jù)文件,并將數(shù)據(jù)輸出成"hinterp.e*e〞所能識(shí)別的數(shù)據(jù)格式。"gribgen_model.e*e〞是模式區(qū)域定義和創(chuàng)立的文件。在這里,用戶可以定義計(jì)算區(qū)域〔投影參數(shù),范圍大小,區(qū)域位置等〕。"hinterp.e*e〞和"vinterp.e*e〞文件分別是水平和垂直插值程序,它們將用戶的輸入場(chǎng)插值到"gridgen_model.e*e〞所創(chuàng)立的模式區(qū)域格點(diǎn)上,為WRF模式的運(yùn)行準(zhǔn)備初始場(chǎng)和邊條件。"siscan〞是一個(gè)調(diào)試程序,它可以查看"hinterp.e*e〞和"vinterp.e*e〞所產(chǎn)生的文件的詳細(xì)信息。"staticpost.e*e〞將"gridgen_model.e*e〞的運(yùn)行結(jié)果static.wrfsi.d01提取其中一些物理量按照NetCDF的格式重新寫(xiě)了一遍成wrfstatic_d01。在進(jìn)展編譯安裝的時(shí)候,可以編寫(xiě)一個(gè)shell腳本程序。這樣,在安裝的時(shí)候,只需執(zhí)行這個(gè)批處理命令就行。這里給出一個(gè)在AI*系統(tǒng)上編譯安裝的例子,比方取名為install.si:#!/bin/shmy_homeroot=/u/wrf_*p/denglt/wrfsysmy_dataroot=/dgpfs/fs2/wrf_*p/ddeng/wrfsyse*portNETCDF="/u/wrf_*p/denglt/netcdf"e*portSOURCE_ROOT="$my_homeroot/sisrc"e*portINSTALLROOT="$my_homeroot/wrfsi"e*portDATAROOT="$my_dataroot/moad"e*portE*T_DATAROOT="$my_dataroot/moad/e*troot"e*portTEMPLATES="$my_dataroot/moad/temp"e*portGEOG_DATAROOT="$my_dataroot/geog"install_wrfsi.pl--install_ui=y2.4.5問(wèn)題處理(1)如果失敗,則可以用makerealclean來(lái)去除失敗的安裝程序。(2)進(jìn)入到src目錄下的各個(gè)子目錄〔如grib_prep、hinterp、vinterp以及grid等〕下,輸入make命令對(duì)單個(gè)目錄進(jìn)展編譯。這樣就相對(duì)容易找出編譯安裝時(shí)的錯(cuò)誤所在。2.5WRF模式的安裝2.5.1安裝環(huán)境 編譯時(shí),要求系統(tǒng)裝有Perl〔5.003以上的版本〕和make〔3.75以上的版本〕。由于WRFSI模式的程序采用了C,F(xiàn)ortran77和Fortran90編寫(xiě),所以也要求操作平臺(tái)具有FORTRAN77,F(xiàn)ORTRAN90和標(biāo)準(zhǔn)C〔或C++〕編譯器。SI的數(shù)據(jù)格式采用了NetCDF的格式,要求系統(tǒng)安裝了NetCDF函數(shù)庫(kù)。因此,在編譯WRF代碼之前,應(yīng)檢查一下系統(tǒng)有沒(méi)有安裝netCDF。WRF輸入/輸出〔I/O〕模塊需要使用netCDF的數(shù)據(jù)格式。如果netCDF安裝的目錄不是常用的系統(tǒng)目錄〔如/usr/local/〕,則必須指明netCDF函數(shù)庫(kù)以及引用〔include/〕函數(shù)庫(kù)的路徑。如果未安裝,則必須先下載安裝netCDF。2.5.2安裝程序的獲取WRF模式的安裝程序是一個(gè)壓縮程序包,可從WRF模式網(wǎng)站獲得〔.〕。1.2版的WRF壓縮程序包名稱為;最近發(fā)布的2.1.2版的WRF壓縮程序包名稱為。壓縮程序包包括兩局部,一局部是將輸入數(shù)據(jù)生成WRF模式的輸入場(chǎng);另一局部則是模式的積分計(jì)算。2.5.3編譯環(huán)境配置WRF模式的頂級(jí)目錄中包含配置腳本文件"configure〞〔使用標(biāo)準(zhǔn)shell:sh〕和一個(gè)編譯腳本"compile〞〔使用Csh類shell:csh〕。配置腳本在配置系統(tǒng)的時(shí)候,也用到在arch目錄中的Perl腳本〔arch/Configure.pl〕,還用到了UNI*系統(tǒng)的應(yīng)用程序"make〞。在arch子目錄中包含了大量不同構(gòu)造和設(shè)置選項(xiàng)的設(shè)置模板文件"configure.defaults〞。這些配置模板在配置腳本運(yùn)行時(shí)用于在不同的運(yùn)行平臺(tái)上創(chuàng)立"configure.wrf〞文件。在IBMAI*SP機(jī)器上,會(huì)啟用設(shè)置模板文件中的關(guān)于AI*的十一個(gè)配置模塊:############################################################ARCHAI*(single-threaded)#FC=*lf_rCC=*lc_r############################################################ARCHAI*(single-threaded)(NONETCDF)#FC=*lf_rCC=*lc_r############################################################ARCHAI*SM(OpenMP)#OMP=-qsmp=noauto-qthreadedOMPCPP=-D_OPENMP############################################################ARCH AI*DM(RSL-IO,IBM-MPI)#DMPARALLEL=1OMP=SFC = *lf_r############################################################ARCH AI*DM(RSL-IO,IBM-MPI)(NONETCDF)#DMPARALLEL=1############################################################ARCH AI*DM/SM(RSL-IO,IBM-MPI,OpenMP)#DMPARALLEL=1OMP=-qsmp=noauto-qthreaded這十一個(gè)配置模塊分別對(duì)應(yīng)著不可嵌套串行編譯、不可嵌套OpenMP并行編譯、可嵌套帶RSL_LITE庫(kù)MPI方式并行編譯、可嵌套帶RSL庫(kù)MPI方式并行編譯、帶RSL和HDF5庫(kù)可嵌套MPI方式并行編譯、帶RSL庫(kù)可嵌套MPI和OpenMP方式并存的并行編譯、帶RSL和MCEL庫(kù)MPI并行編譯、帶RSL庫(kù)與ESMF耦合不可嵌套MPI方式編譯、不用MPI但帶RSL庫(kù)可嵌套串行編譯以及帶RSL庫(kù)可嵌套OpenMP方式并行編譯。每一個(gè)模塊都設(shè)置了對(duì)應(yīng)的WRF模式的編譯器配置、編譯選項(xiàng)、編譯規(guī)則等。進(jìn)展WRF的編譯環(huán)境配置時(shí),進(jìn)入WRF模式的頂級(jí)目錄中,鍵入"./configure〞。假設(shè)設(shè)置腳本可以找到相應(yīng)版本〔5.004或更高版本〕的Perl程序,則設(shè)置文件"arch/configure.defaults〞中的模板將會(huì)被掃描檢測(cè),提取相應(yīng)的配置模塊信息,并且會(huì)列出一個(gè)選擇菜單共用戶選擇:$configurecheckingforperl5...nocheckingforperl...found/usr/bin/perl(perl)WilluseNETCDFindir:/usr/local/netcdfPleaseselectfromamongthefollowingsupportedplatforms.1.AI*(single-threaded,nonesting)2.AI*SM(OpenMP,nonesting)3.AI*DM-Parallel(RSL_LITE,IBM-MPI,Allowsnesting)4.AI*DM-Parallel(RSL,IBM-MPI,allowsnesting)5.AI*DM-Parallel(RSL,IBM-MPI,allowsnesting)(PARALLELHDF5)6.AI*DM-Parallel(RSL_LITE,IBM-MPI,Allowsnesting)(PARALLELHDF5)7.AI*DM-Parallel/SM-Parallel(notrecommended)(RSL,IBM-MPI,OpenMP,allowsnesting)8.AI*DM-Parallel(RSL,IBM-MPI,MCEL)May2003,E*PERIMENTAL9.AI*DM-ParallelESMF(RSL,IBM-MPI,ESMFcoupling,nonesting)E*PERIMENTAL10.AI*(single-threaded,nestingusingRSLwithoutMPI)11.AI*(OpenMP,nestingusingRSLwithoutMPI)Enterselection[1-11]:用戶輸入一個(gè)1~11的整數(shù),然后按回車。如果選擇有效,則所作的選擇和提示符會(huì)顯示出來(lái)。用戶選擇完畢后,正常運(yùn)行腳本程序時(shí),會(huì)在頂級(jí)目錄中創(chuàng)立文件"configure.wrf〞,并退出程序,回到操作系統(tǒng)。如果在選擇時(shí)要退出設(shè)置腳本程序,用shell的中斷命令即可〔如按"Control-C〞〕。配置腳本"configure〞會(huì)試圖在編譯主機(jī)上查找netCDF函數(shù)庫(kù)以及引用文件。也可通過(guò)設(shè)置環(huán)境變量NETCDF來(lái)強(qiáng)制定義到系統(tǒng)中安裝netCDF的正確目錄。如果沒(méi)有設(shè)置環(huán)境變量,而設(shè)置腳本也沒(méi)有找到netCDF,則程序?qū)?huì)要求用戶輸入一個(gè)路徑。如果所有這些嘗試都失敗的話,程序?qū)L試以沒(méi)有netCDF的狀態(tài)來(lái)進(jìn)展編譯;不過(guò),由于當(dāng)前版本的程序只能用netCDF的輸出/輸入接口,所以必然會(huì)造成程序的運(yùn)行失敗。模式目錄中還提供了用于卸載的去除程序clean〔Csh類shell腳本〕。安裝失敗時(shí),可以使用這一程序來(lái)恢復(fù)到最初的狀態(tài)。當(dāng)未指定任何參數(shù)時(shí),去除程序"clean〞將刪除src目錄中的目標(biāo)文件〔*.o〕以及編譯時(shí)產(chǎn)生的一些中間文件,文件"configure.wrf〞會(huì)保存。當(dāng)指定"-a〞為"clean〞的參數(shù)時(shí),則會(huì)連同文件"configure〞以及一些在"e*ternal〞目錄中的庫(kù)函數(shù)一起刪除。所以,用帶參數(shù)"-a〞的去除命令,則會(huì)將模式恢復(fù)到模式的安裝最原始的狀態(tài),而文件"configure.wrf〞中的一些修改信息都會(huì)喪失。〔注意,去除程序并不會(huì)將run或test子目錄中的數(shù)據(jù)文件或可執(zhí)行文件刪除掉〕。在"configure.wrf〞創(chuàng)立后,還可以根據(jù)需要來(lái)修改編譯選項(xiàng)。值得注意的是,WRF模式可實(shí)時(shí)配置計(jì)算范圍大小,處理器數(shù)量,以及其他選項(xiàng),并且僅需要在運(yùn)行程序之前通過(guò)修改文件"namelist.input〞即可。而針對(duì)這些選項(xiàng)設(shè)置,并沒(méi)有修改文件"configure.wrf〞的必要。只是在編譯器、編譯選項(xiàng)或者編譯規(guī)則需要變動(dòng)時(shí),才有必要對(duì)"configure.wrf〞文件進(jìn)展修改。在WRF模式調(diào)試運(yùn)行過(guò)程中,發(fā)現(xiàn)由于WRF模式采用動(dòng)態(tài)分配數(shù)組的方式來(lái)分配模式中的數(shù)組單元,因此對(duì)計(jì)算機(jī)的邏輯內(nèi)存、堆棧段內(nèi)存以及數(shù)據(jù)段內(nèi)存開(kāi)銷較大。在IBMSP上編譯時(shí),默認(rèn)的內(nèi)存設(shè)置可能滿足不了模式計(jì)算時(shí)的內(nèi)存需求。而"configure.wrf〞中沒(méi)有設(shè)置內(nèi)存編譯選項(xiàng)(-bma*data,-bma*stack和-qma*mem),這就需要用戶對(duì)其進(jìn)展修改。通常將他們的限制值設(shè)置的稍微大些比較好。例如,可以將"configure.wrf〞的原始設(shè)置:FCBASEOPTS=-qarch=auto-qfree=f90-qzerosize-qnosave-qma*mem=-1-qspill=20000$(FCDEBUG)$(OMP)......LDFLAGS=......wrfio_nf:(cd../e*ternal/io_netcdf;makeNETCDFPATH=/u/denglt/netcdfFC="$(SFC)$(FCDEBUG)-qarch=auto-qfree=f90-qzerosize-qnosave";/bin/cpwrf_io_flags.hwrf_status_codes.h../../inc)wrfio_int:(cd../e*ternal/io_int;\makeCC=$(CC)FC="$(SFC)$(FCDEBUG)-qarch=auto-qfree=f90-qzerosize-qnosave"alldiffwrf)solve_interface.o:solve_interface.F$(RM)$$(CPP)-I../inc$(CPPFLAGS)$*.F>$*.f$(FC)-c-qfree=f90-qspillsize=32767-I.$(MODULE_DIRS)$*.f修改為:FCBASEOPTS=-qarch=auto-qfree=f90-bma*data:0*80000000-bma*stack:0*10000000-qzerosize-qnosave-qma*mem=-1-qspill=20000$(FCDEBUG)$(OMP)......LDFLAGS=-bma*data:0*80000000-bma*stack:0*10000000-qma*mem=-1......wrfio_nf:(cd../e*ternal/io_netcdf;makeNETCDFPATH=/u/denglt/netcdfFC="$(SFC)$(FCDEBUG)-qarch=auto-qfree=f90-bma*data:0*80000000-bma*stack:0*10000000-qma*mem=-1-qzerosize-qnosave";/bin/cpwrf_io_flags.hwrf_status_codes.h../../inc)wrfio_int:(cd../e*ternal/io_int;\makeCC=$(CC)FC="$(SFC)$(FCDEBUG)-qarch=auto-qfree=f90-bma*data:0*80000000-bma*stack:0*10000000-qma*mem=-1-qzerosize-qnosave"alldiffwrf)solve_interface.o:solve_interface.F$(RM)$$(CPP)-I../inc$(CPPFLAGS)$*.F>$*.f$(FC)-c-qfree=f90-bma*data:0*80000000-bma*stack:0*80000000-qma*mem=-1-qspillsize=32767-I.$(MODULE_DIRS)$*.f由于以上的修改,在運(yùn)行去除程序clean后會(huì)被自動(dòng)刪除掉,造成修改信息喪失。有鑒于此,用戶除了修改configure.wrf外,還可以直接修改arch子目錄中的configure.defaults文件。找到configure.defaults文件中與AI*相關(guān)的十一個(gè)配置模塊,按在configure.wrf中的修改方法一樣修改。這樣做好修改后,以后的每次去除編譯環(huán)境重新配置編譯環(huán)境時(shí),都不會(huì)喪失修改好的信息。在編譯1.3版時(shí),發(fā)現(xiàn)有些程序在選用"優(yōu)化〞編譯時(shí),往往會(huì)編譯很慢,甚至?xí)捎趦?yōu)化消耗內(nèi)存,造成內(nèi)存缺乏后而導(dǎo)致編譯失敗。因此,一種解決方法是可以在編譯選項(xiàng)中去掉優(yōu)化選項(xiàng)"-O2〞;另一種解決方法就是將優(yōu)化編譯時(shí)耗時(shí)很長(zhǎng)或者耗內(nèi)存很大的程序參加到優(yōu)化的編譯規(guī)則中。這一修改,也可以在arch子目錄中的configure.defaults中進(jìn)展。在IBMSP2機(jī)器上,要添加的的目標(biāo)文件有:module_io_mm5.omodule_si_io.omodule_io_wrf.omodule_domain.o\module_start.omodule_initialize.omodule_initialize_b_wave.o\module_initialize_hill2d_*.omodule_initialize_quarter_ss.o\module_initialize_squall2d_*.omodule_initialize_squall2d_y.o\module_initialize_real.omodule_dm.ostart_domain.o\mediation_force_domain.omediation_interp_domain.o\mediation_feedback_domain.osolve_interface.o當(dāng)configure.wrf文件中的ARCHFLAG標(biāo)志參數(shù)包含-DDM_PARALLEL參數(shù)值,并且連接好相應(yīng)的消息傳遞庫(kù)函數(shù)時(shí),可用分布式內(nèi)存并行機(jī)制進(jìn)展編譯。目前連接庫(kù)只有一種可供選擇:e*ternal/RSL/RSL/librsl.a。此時(shí),其他一些必須設(shè)置生效的參數(shù)值包括:-DWRF_RSL_IO和_DRSL。CFLAGS參數(shù)必須取有-DWRF_RSL_IO,-DMA*DOM_MAKE=$(MA*_DOMAINS),DMA*PROC_MAKE=$(MA*_PROC),DMA*PROC_MAKE=$(MA*_PROC),-I../e*ternal/RSL/RSL。在設(shè)置文件arch/configure.defaults的用于設(shè)置分布式內(nèi)存并行編譯的模板中包含了上面這些參數(shù)值。而在configure.wrf文件中設(shè)置相應(yīng)的編譯標(biāo)志參數(shù)時(shí),就可以用共享式內(nèi)存并行機(jī)制來(lái)進(jìn)展編譯。內(nèi)存共享式并行機(jī)制采用OpenMP線程形式。2.5.4編譯代碼在配置完編譯環(huán)境變量之后,就可以輸入編譯命令"compile〞進(jìn)展程序代碼編譯了。首先,輸入"compile〞,則會(huì)出現(xiàn)以下幫助選項(xiàng):Usage:compilewrfcompilewrfinrundirtestcases(seeREADME_test_cases):compileem_b_wave (歐拉質(zhì)量坐標(biāo)斜壓波方案)compileem_grav2d_*(歐拉質(zhì)量坐標(biāo)重力波方案)compileem_hill2d_* (歐拉質(zhì)量坐標(biāo)二維鐘形山體方案)compileem_quarter_ss (歐拉質(zhì)量坐標(biāo)三維超級(jí)單體云體方案)compileem_real (歐拉質(zhì)量坐標(biāo)真實(shí)大氣方案)compileem_squall2d_* (歐拉質(zhì)量坐標(biāo)*-z平面二維飚線方案)compileem_squall2d_y (歐拉質(zhì)量坐標(biāo)y-z平面二維飚線方案)compilee*p_real(真實(shí)大氣試驗(yàn)方案)compilenmm_real(歐拉高度坐標(biāo)真實(shí)大氣方案)compile-h〔幫助信息〕上面的幫助信息里,列出了目前WRF模式中可以編譯運(yùn)行的方案選擇。其中em表示"歐拉質(zhì)量坐標(biāo)〞模式動(dòng)力框架。當(dāng)模式從一個(gè)方案轉(zhuǎn)到其他方案時(shí),必須重新編譯。重新編譯后,wrf.e*e不變,但初始化程序〔比方real.e*e和ideal.e*e〕會(huì)有所不同。除了"nmm_real〞和"em_real〞兩個(gè)編譯方案是真實(shí)大氣方案外,其他方案都是用理想數(shù)據(jù)進(jìn)展大氣模擬試驗(yàn)的方案。編譯時(shí),輸入帶參數(shù)的編譯命令"compile〞,命令格式為:$compilecase_name比方說(shuō)要編譯質(zhì)量動(dòng)力框架下的二維飚線方案時(shí),則可鍵入命令: $compileem_squall2d_* 然后,編譯程序啟用注冊(cè)機(jī)制:在"tools/directory〞目錄中的c程序會(huì)根據(jù)文件Registry/Registry中的列表內(nèi)容創(chuàng)立文件,放在inc目錄中。然后,編譯程序會(huì)編譯一些源程序目錄中的源代碼,產(chǎn)生目標(biāo)文件".o〞以及一些中間文件〔如".f〞〕。注意,其中目錄"frame/〞中的一個(gè)源代碼文件〔"frame/module_state_description.F〞〕不是隨模型源程序一起發(fā)布的,而是在編譯時(shí)由注冊(cè)機(jī)制自動(dòng)創(chuàng)立的。如果想要在下一次編譯時(shí)強(qiáng)制重新運(yùn)行注冊(cè)機(jī)制,則將文件"frame/module_state_description.F〞移除掉即可。 成功編譯后,會(huì)產(chǎn)生兩個(gè)可執(zhí)行文件"ideal.e*e〞和"wrf.e*e〞,放置目錄為"main/〞,并且在目錄"test/em_squall2d_*〞中有他們的連接文件。對(duì)于每一個(gè)不同理想大氣試驗(yàn)方案,ideal.e*e都會(huì)不同,這是因?yàn)樗鼈兘⒎桨笗r(shí)是編譯了不同的模塊"module_initialize〞。如果用戶想修改試驗(yàn)方案,則需對(duì)目錄"dyn_em/〞或者"dyn_eh/〞中的"module_initialize〞進(jìn)展修改??梢愿淖兯鼈兊某跏紶顟B(tài),比方邊界環(huán)境、熱力湍流〔thermalbubble〕、模式層數(shù)以及地形等。如果模式動(dòng)力框架不同,則"ideal.e*e〞也會(huì)不同。當(dāng)編譯失敗或者要重新編譯時(shí),可用模式提供的去除命令clean來(lái)進(jìn)展。當(dāng)未指定任何參數(shù)時(shí),去除程序"clean〞將刪除源程序目錄中的目標(biāo)文件〔*.o〕以及編譯時(shí)產(chǎn)生的一些中間文件,文件"configure.wrf〞會(huì)保存。當(dāng)指定"-a〞為"clean〞的參數(shù)時(shí),則會(huì)連同文件"configure〞以及一些在"e*ternal〞目錄中的庫(kù)函數(shù)一起刪除。所以,用帶參數(shù)"-a〞的去除命令,則會(huì)將模式恢復(fù)到模式的安裝最原始的狀態(tài),而文件"configure.wrf〞中的一些修改信息都會(huì)喪失。〔注意,去除程序并不會(huì)將run或test子目錄中的數(shù)據(jù)文件或可執(zhí)行文件刪除掉〕。對(duì)發(fā)布的原始代碼或運(yùn)行了去除程序"clean-a〞后的代碼進(jìn)展第一次編譯時(shí),編譯程序會(huì)在"e*ternal〞目錄中創(chuàng)立一些庫(kù)函數(shù)。另外,編譯錯(cuò)誤時(shí)顯示的行號(hào)是中間文件".f〞的對(duì)應(yīng)行號(hào),但不一定都是源程序目錄中的".F〞文件的對(duì)應(yīng)行號(hào)。這可能會(huì)給查找錯(cuò)誤所在地位置帶來(lái)一些麻煩。F90編譯器允許在向外部子程序傳遞實(shí)參時(shí),產(chǎn)生f90型偽形〔assumed-shape〕數(shù)組的副本。一些F90編譯器即使整個(gè)數(shù)組〔無(wú)需分割成子集〕被作為實(shí)參傳遞時(shí)也會(huì)產(chǎn)生這種副本。這樣的話,產(chǎn)生副本是非常浪費(fèi)內(nèi)存的。-DDEREF_KLUDGE指示注冊(cè)機(jī)制在構(gòu)建調(diào)用子程序的實(shí)參列表時(shí)創(chuàng)立一個(gè)額外標(biāo)志信息,從而使編譯器認(rèn)為僅僅是傳遞數(shù)組的第一個(gè)元素,防止了創(chuàng)立副本。3.WRF模式與T213模式嵌套3.1嵌套方案T213模式是一個(gè)全球譜模式,而WRF模式是一個(gè)區(qū)域格點(diǎn)模式。目前,要實(shí)現(xiàn)WRF模式與T213模式的完全嵌套,在理論上和實(shí)踐上都還有許多困難。因此,根據(jù)WRF模式當(dāng)前只處于調(diào)試階段的實(shí)際情況,我們僅將WRF模式與T213模式作簡(jiǎn)單地嵌套。簡(jiǎn)單嵌套的根本思路就是以T213模式的預(yù)報(bào)場(chǎng)或者客觀分析場(chǎng)為WRF模式的背景場(chǎng),并為WRF模式提供邊界條件。具體實(shí)現(xiàn)的方法有兩種,一種是從T213場(chǎng)庫(kù)獲取要素場(chǎng),然后修改WRFSI源程序,讀取T213要素場(chǎng),處理后生成WRF模式的輸入場(chǎng);另一種是利用從T213場(chǎng)庫(kù)獲取要素場(chǎng),然后利用MM5的前處理程序TERRAIN、REGRID以及INTERPF等程序,生成MM5的初始場(chǎng)及邊界條件,再利用MM52WRF程序,將其轉(zhuǎn)換成WRF模式的輸入要素場(chǎng)。第一種方法簡(jiǎn)捷方便,易于操作;第二種方法相對(duì)繁雜些,但由于MM5模式有比較完善的資料同化方案,可以解決目前WRF模式?jīng)]有資料同化方案的缺乏。3.2嵌套程序設(shè)計(jì)3.2.1T213場(chǎng)庫(kù)資料的通用接口程序IBMSP機(jī)器中T213場(chǎng)庫(kù)的水平分辨率為0.5625*0.5625〔度〕。目前,由于T213場(chǎng)庫(kù)資料的檢索已經(jīng)模塊化,用戶根據(jù)檢索時(shí),可直接調(diào)用通用場(chǎng)庫(kù)〔T213〕檢索接口程序"gdbrck〞。調(diào)用通用場(chǎng)庫(kù)接口程序時(shí),用戶只必須設(shè)置好程序的各個(gè)接口參數(shù)。具體各接口參數(shù)說(shuō)明如下:callgdbrck(ftype,idate,iftime,ielemcd,level,ii,jj,kk,record,data,inde*_dic,iret)ftype:character*4,場(chǎng)類型,例:暴雨系統(tǒng)為'BJLP',t213系統(tǒng)為'BJGL’idate:integeridate(4),日期數(shù)組,年〔四位〕、月、日、時(shí)次iftime:integer,時(shí)效ielemcd:integer,要素代碼level:integerlevel(n+1),層次數(shù)組,第一元為調(diào)用的總層數(shù)n,2到n+1元為具體的調(diào)用層次,如level(3),datalevel/2,500,700/ii:integer,緯度格點(diǎn)數(shù)jj:integer,經(jīng)度格點(diǎn)數(shù)kk:integer,調(diào)用層數(shù)nrecord:integer,本場(chǎng)最大ii*jj。T213系統(tǒng)為:640*321data:real*8dimensiondata(ii,jj,kk),符點(diǎn)數(shù)組,數(shù)據(jù)區(qū)inde*_dic:character*80,字符串,模式字典文件全名iret:integer,返回碼0:正常6:場(chǎng)沒(méi)生成或記錄不存在9:其他錯(cuò)值得注意的是,由于場(chǎng)庫(kù)資料中整數(shù)和浮點(diǎn)數(shù)都是以64位格式存儲(chǔ)的,也就是8個(gè)字節(jié)。因此,在程序的聲明局部注意場(chǎng)庫(kù)調(diào)用參數(shù)的存儲(chǔ)長(zhǎng)度;或者在編譯程序的時(shí)候,選用64位編譯方式編譯。當(dāng)然,也可以在編譯的時(shí)候,用編譯選項(xiàng)-qintsize=8和-qrealsize=8兩個(gè)選項(xiàng)來(lái)進(jìn)展編譯。inde*_dic是模式字典文件全名,在調(diào)用前必須指定。在IBMSP上,場(chǎng)庫(kù)在SP:/gpfs/fs2/nwp/gdbt213目錄下用inde*_dic(1:28)='/u/nwp/gdbt213/dic/inde*_dic';在場(chǎng)庫(kù)在盤(pán)陣庫(kù)/asm2/nwpgdb/t213gdb目錄下用inde*_dic(1:32)='/u/nwp/gdbt213/dic/inde*_nfs_dic’。3.2.2讀取T213場(chǎng)庫(kù)資料的程序設(shè)計(jì)讀取T213場(chǎng)庫(kù)資料的根本思路是首先設(shè)置好相應(yīng)的氣象要素場(chǎng)的具體調(diào)用參數(shù);然后利用T213場(chǎng)庫(kù)提供的通用接口程序讀取場(chǎng)庫(kù)資料,保存在內(nèi)存變量中;再將內(nèi)存變量中的相應(yīng)氣象要素場(chǎng)數(shù)據(jù)按不同的要求輸出為不同的數(shù)據(jù)文件格式。根據(jù)這一思想,可以得到讀取T213場(chǎng)庫(kù)資料的程序流程圖〔見(jiàn)圖10〕。實(shí)現(xiàn)讀取T213場(chǎng)庫(kù)資料的程序名稱為readt213.F。程序開(kāi)場(chǎng)調(diào)用子程序parse_table來(lái)變量列表Vtable文件中的變量信息。Vtable的格式如下:GRIBCode|LevelCode|Level1|Level2|REGRIDName|REGRIDUnits|REGRIDDescription|+++++++80|1|0||SST|K|SeaSurfaceTemperature|1|1|0||PSFC|Pa|SurfacePressure|2|102|0||PMSL|Pa|Sea-levelPressure|7|1|0||HGT|m|Height|TerrainHeight211|1|0||SKINTEMP|K|Skintemperature(canuseforSSTalso)|229|105|2||T|K|Temperature|At2m230|105|2||RH|%|RelativeHumidity|At2m202|105|10||U|ms{-1}|U|At10m203|105|10||V|ms{-1}|V|At10m7|100|||HGT|m|Height|11|100|*||T|K|Temperature|33|100|*||U|ms{-1}|U|34|100|*||V|ms{-1}|V|52|100|*||RH|%|RelativeHumidity|+++++++變量列表Vtable文件中,第一行是說(shuō)明信息,調(diào)用parse_table子程序時(shí),會(huì)忽略這些信息。而parse_table子程序識(shí)別這些信息與有用的變量信息的重要標(biāo)志就是第一列包含中畫(huà)線"-〞的第二行。也就是說(shuō),程序?qū)⒑雎缘谝淮纬霈F(xiàn)中畫(huà)線的那一行以前的所有信息,然后讀取第一次出現(xiàn)中畫(huà)線到第二次出現(xiàn)中畫(huà)線之間的所有變量信息。如果在第二次出現(xiàn)中畫(huà)線的那一行后面還有信息,則將忽略第二次出現(xiàn)中畫(huà)線的那一行之后的所有信息,直到第三次出現(xiàn)中畫(huà)線的那一行,同時(shí)必須有第四次出現(xiàn)中畫(huà)線的行。第三和第四次之間有沒(méi)有變量信息不重要,重要的是第三次和第四次必須同時(shí)配套出現(xiàn)。T213場(chǎng)庫(kù)讀取要從T213場(chǎng)庫(kù)中讀取的變量列表讀取時(shí)間參數(shù)及輸出格式參數(shù)初始化計(jì)算時(shí)間T213場(chǎng)庫(kù)讀取要從T213場(chǎng)庫(kù)中讀取的變量列表讀取時(shí)間參數(shù)及輸出格式參數(shù)初始化計(jì)算時(shí)間變量循環(huán):當(dāng)1≤loopj≤變量總數(shù)時(shí)間循環(huán):當(dāng)計(jì)算時(shí)間在起止時(shí)間之內(nèi)文件翻開(kāi)標(biāo)志賦值flopen=.true.要讀取的變量為地形?否讀取場(chǎng)庫(kù)氣象場(chǎng)是翻開(kāi)地形文件:t213_terrain.dat讀取地形數(shù)據(jù)、設(shè)置場(chǎng)的相關(guān)信息關(guān)閉地形文件要讀取的變量為SST?callproc_sst否是氣象場(chǎng)是否為高斯格點(diǎn)場(chǎng)"否callGAUSS2LATLON是1讀取參數(shù)列表文件namelist.input調(diào)用子程序parse_table,讀取變量列表文件Vtable讀取SST場(chǎng)數(shù)據(jù),并按要求格式輸出完畢f(xié)lopen為真(.true.)"否完畢f(xié)lopen為真(.true.)"否callproc_landsea設(shè)置輸出區(qū)域范圍1輸出類型="是=3=1=2創(chuàng)立文本格式輸出文件創(chuàng)立AVN第4類格式輸出文件創(chuàng)立AVN第3類格式輸出文件變量為地形?是輸出類型="=3=1=2callout_hinterpcallout_mm5callget_sec1callget_sec2callget_gridinfo設(shè)置地形場(chǎng)相關(guān)輸出信息callout_pregrid否完畢:變量循環(huán)完畢:時(shí)間循環(huán)圖1.讀取T213場(chǎng)庫(kù)資料程序流程圖讀取landsea文件,截取計(jì)算區(qū)域范圍中的水陸標(biāo)志信息,并按要求格式輸出在變量列表Vtable文件中,這些變量信息設(shè)計(jì)程表格形式,其中第一列是變量的GRIB碼,這些GRIB碼是T213場(chǎng)庫(kù)中規(guī)定的編碼〔詳見(jiàn)附錄2〕。當(dāng)要使用WRFSI的prep_grib.e*e程序時(shí),還必須將T213場(chǎng)庫(kù)的GRIB編碼轉(zhuǎn)換成AVN的編碼形式。第二列是氣象要是變量所處的垂直層的GRIB編碼。其中100指氣壓層,105指特定的垂直層,102是指海平面層,1是指包括海面與陸面的地球外表層。第三、四列是相應(yīng)于具體的次類型的垂直層的值。比方垂直層類型為100,則第三列就是去各個(gè)等壓面的值,如1000、950、850等等,則第三列用通配符"*〞表示,而第四列為空;如果垂直層類型為105,則第三列則為具體指定的垂直層面的值,如10米高度的風(fēng)速則用10米等高面的值,第三列為10,而第四列為空;如果垂直層類型為102或1,則第三列取為0,第四列為空。第五列為變量名稱,按照GRIB編碼的標(biāo)準(zhǔn)進(jìn)展變量命名。第六列為變量單位,采用GRIB編碼的單位標(biāo)準(zhǔn)。第七列為變量文字描述信息,不超過(guò)42個(gè)字符。在表格中,每一列都是用豎線"|〞分隔。第一列的起始處不要加分隔符"|〞,但最后一列也就是第七列必須以分隔符完畢。后面可以跟一些說(shuō)明文字信息,但這些信息會(huì)被忽略掉。程序讀完變量列表信息后,緊接著便翻開(kāi)參數(shù)設(shè)置文件"namelist.input〞,讀取用戶調(diào)用場(chǎng)庫(kù)的起止時(shí)間、輸出區(qū)域的范圍以及輸出文件的格式。例如:&filetimespecSTART_YEAR=2003START_MONTH=04START_DAY=07START_HOUR=00START_MINUTE=00START_SECOND=00END_YEAR=2003END_MONTH=04END_DAY=10END_HOUR=00END_MINUTE=00END_SECOND=00INTERVAL=21600START_*=1START_Y=1DELTA_*=320DELTA_Y=160/!OUT_TYPEISAOUTPUTTYPE,THEVALIDVALUEIS:!1:PREGRIDFORMAT!2:HINTERPFORMAT!3:MM5FORMAT&typespecOUT_TYPE=2/獲取調(diào)用場(chǎng)庫(kù)的起止時(shí)間后,就可以初始化計(jì)算時(shí)間。初始化時(shí)間時(shí),調(diào)用子程序build_hdate。每一次調(diào)用后都會(huì)返回一個(gè)格式為"yyyy-mm-dd_hh:mm:ss〞的時(shí)間串。以起始時(shí)間為開(kāi)場(chǎng),在場(chǎng)庫(kù)中找符合條件的時(shí)次,進(jìn)展場(chǎng)庫(kù)資料的讀取,直到用戶定義的調(diào)用終止時(shí)間為止。在每一個(gè)要讀取場(chǎng)庫(kù)資料的有效時(shí)次內(nèi),遍歷從變量列表中獲取得每一個(gè)變量。但由于地形、海溫和水陸標(biāo)志信息特殊,要進(jìn)展特殊處理。另外,由于T213場(chǎng)庫(kù)中,有一些要素場(chǎng)保存的量仍為高斯格點(diǎn)場(chǎng)資料,故要求將其內(nèi)插轉(zhuǎn)換到經(jīng)緯網(wǎng)格點(diǎn)上。這局部功能是調(diào)用子程序GAUSS2LATLON來(lái)完成的〔這個(gè)子程序是在陳啟英、姚明明提供的轉(zhuǎn)換程序的根底上修改而成〕。最后模式的輸出是根據(jù)用于定義的輸出格式來(lái)輸出的。在namelist.input文件中定義的OUT_TYPE就是定義輸出格式的量。當(dāng)OUT_PUT=1時(shí),輸出為SI程序中g(shù)rib_prep.e*e能識(shí)別處理的格式,當(dāng)然,grib_prep.e*e的程序源代碼要稍加修改,這在后面將會(huì)講到。輸出時(shí)調(diào)用子程序out_pregrid,輸出文件名為"avn_*〞;當(dāng)OUT_TYPE=2時(shí),輸出為SI程序中hinterp.e*e能識(shí)別處理的格式,調(diào)用輸出子程序out_hinterp,輸出文件名為"AVN_FILE:*〞;當(dāng)OUT_TYPE=3時(shí),輸出為MM5的前處理程序能識(shí)別處理的格式。輸出時(shí)調(diào)用子程序out_mm5來(lái)輸出,輸出文件名為"MM5_FILE:*〞。3.3嵌套的實(shí)現(xiàn)根據(jù)嵌套方案設(shè)計(jì)以及程序設(shè)計(jì)的具體實(shí)施,嵌套過(guò)程的實(shí)現(xiàn)可以通過(guò)三種具體方案來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)的流

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論