WRF模式简易操作中文指南.docx
《WRF模式简易操作中文指南.docx》由会员分享,可在线阅读,更多相关《WRF模式简易操作中文指南.docx(112页珍藏版)》请在冰豆网上搜索。
WRF模式简易操作中文指南
WRF模式操作指南
TheInstituteofAtmosphericPhysics,ChineseAcademyofSciences
NortheastInstituteofGeographyandAgroecology,ChineseAcademyofSciences
中国科学院大气物理研究所
中国科学院东北地理与农业生态研究所
二○一七年三月二十日
1.WRF模式简介……………………………………………………..1
2.WRF模式的安装……………..……………………………………..2
安装环境………………….……………………………………..2
模式源程序…………………...…………………………………..2
NetCDF函数库的安装……………………………………………2
标准初始化(SI)的安装…………………………………………6
WRF模式的安装……………….……………….….…………..…9
3.WRF模式与T213模式嵌套…………………………….…………...17
嵌套方案……………………………………………………….17
嵌套程序设计………………………………………………….17
编译嵌套程序…………………………………………………..21
嵌套的实现…………………………………………………….22
4.WRF模式系统的运行……………...………………………………..29
理想大气方案………………………………………………..….29
真实大气方案………………………………………………….32
5.WRF模式系统作业卡……………...………………………………..47
源程序………………………………………………………..….47
真实大气方案………………………………………………….48
6.模式结果的显示处理……………………………….……………..61
Vis5D格式……….…………………….………………………..61
MICAPS格式……………………………….……………………62
GrADS格式……….…………………….……………………...65
附录1.WRF模式参数配置说明…………………….……………….68
附录2.T213场库参数表……………………………………………..78
WRF模式系统安装/调试技术报告
1.WRF模式简介
WRF(WeatherResearchForecast)模式系统是由许多美国研究部门及大学的科学家共同参与进行开发研究的新一代中尺度预报模式和同化系统。
WRF模式系统的开发计划是在1997年由NCAR中小尺度气象处、NCEP的环境模拟中心、FSL的预报研究处和奥克拉荷马大学的风暴分析预报中心四部门联合发起建立的,并由国家自然科学基金和NOAA共同支持。
现在,这项计划,得到了许多其他研究部门及大学的科学家共同参与进行开发研究。
WRF模式系统具有可移植、易维护、可扩充、高效率、方便的等诸多特性,将为新的科研成果运用于业务预报模式更为便捷,并使得科技人员在大学、科研单位及业务部门之间的交流变得更加容易。
WRF模式系统将成为改进从云尺度到天气尺度等不同尺度重要天气特征预报精度的工具。
重点考虑1-10公里的水平网格。
模式将结合先进的数值方法和资料同化技术,采用经过改进的物理过程方案,同时具有多重嵌套及易于定位于不同地理位置的能力。
它将很好的适应从理想化的研究到业务预报等应用的需要,并具有便于进一步加强完善的灵活性。
WRF模式作为一个公共模式,由NCAR负责维护和技术支持,免费对外发布。
第一版的发布在2000年11月30日。
随后在2001年5月8日,第二次发布了WRF模式,版本号为。
2001年11月6日,很快进行了模式的第三次发布,只是改了两个错误,没有很大的改动,因此版本号定为。
直到2002年4月24日,才正式第四次发布,版本号为。
同样,在稍微修改一些错误后,2002年5月22日第五次版发布模式系统,版本号为。
原定于2002年10月份左右的第六次发布,直到2003年3月20才推出,版本号为。
2003年11月21日进行了更新。
2004年5月21日推出了嵌套版本。
2004年6月3日进行了更新。
到2006年1月30日为止最新版本为。
2.WRF模式的安装
安装环境
硬件环境
WRF模式是一个多机型、跨平台、标准化的模式。
可以在IBMAIX,SGIIRIX,PCLINUX等机型上运行。
软件环境
WRF模式的运行系统中的一般需要的安装软件环境包括:
UNIX(LINUX)操作系统
以上
Fortran程序编辑器(包括Fortran90和Fortran77编译器)
C程序编译器
NetCDF函数库,版本在以上(必须包含Fortran77,Fortran90
以及C的程序调用接口)
MICAPS图形显示系统、VIS5D图形显示系统、GrADS或者RIP等
模式源程序
WRF模式系统运行所需要的程序包括:
标准初始化(SI):
WRF模式的数据前处理部分。
可从写成GRIB码的AVN数据文件中读取模式区域所需的数据,并插值成WRF所需的变量场。
WRF模式:
WRF模式的初始场/边界条件生成以及模式积分计算部分。
NetCDF函数库的安装
文件获取
目前,由于WRF模式的数据处理格式主要是应用较为常见的NetCDF数据格式。
因此,在安装WRF模式的标准初始化以及WRF主模式前,必须在操作系统环境中先安装NetCDF程序包,生成NetCDF函数库。
在运行的系统环境中,如果没有安装NetCDF函数库,则必须自己安装。
NetCDF程序包的下载地址为
从网站中,可以获得NetCDF的压缩程序包或者。
安装环境
不同平台要求也不一样,但必需有25兆的可用空间用来解压、编译和运行测试。
由于WRF模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C(或C++)编译器。
netCDF将会编译并测试相应的语言接口。
指定编译环境
首先要选择并指定一个恰当的编译环境。
如果需要,可设置CC,CFLAGS,FC,FFLAGS,CXX,CXXFLAGS,F90和F90FLAGS中任何环境变量,以指明相应的编译环境。
环境变量也就是用户外壳程序(shell)管理的参数,并被shell程序用于运行应用程序(例如设置脚本程序)。
一些环境变量的说明可参见下表(表1)。
表1编译NetCDF的一些环境变量及其说明
变量
描述
Notes
CC
C编译器
如果未指定,设置脚本程序将试图找出合适的C编译器,如:
cc,c89,xlc,orgcc。
FC
Fortran编译器
(如果存在)
如果未指定,设置脚本程序将试图找出合适的Fortran90orFortran77编译器。
如果不需要Fortran接口,则可将FC设置为""。
F90
Fortran90编译器
(如果存在)
如果未指定,设置脚本程序将试图找出合适的Fortran90编译器。
如果指定了Fortran90编译器,则不需要FC参数。
如果不需要Fortran90接口,则可将F90设置为""。
CXX
C++编译器
如果未指定,设置脚本程序将试图找出合适的C++编译器。
不需要C++接口时,可将CXX设置为""。
CFLAGS
C编译器参数选项
例如"-0"或"-g"
CPPFLAGS
C预处理参数选项
例如"-DNDEBUG"是忽略声明部分的检测(assertion)
FFLAGS
Fortran编译器参数选项
例如"-O"或"-g"
F90FLAGS
Fortran90编译器参数选项
例如"-O"或"-g"。
如果未指定,则采用FFLAGS的值。
CXXFLAGS
C++编译器标志
例如"-O"或"-g"
ARFLAGS
NMFLAGS
FPP
M4FLAGS
LIBS
FLIBS
混合参数选项
在一些操作平台中可能用到这些参数中的一个或几个。
值得注意的是,如果不设置环境变量,那么配置脚本程序将会试图找出相应合理的设置值。
但在IBMSP机器上,如果用户不设置Fortran90的编译和编译选项,那么配置脚本往往找不到正确的Fortran90编译器和编译选项,从而造成NetCDF函数库中没有Fortran90的程序接口。
环境变量也就是用户外壳程序(shell)管理的参数,并被shell程序用于运行应用程序(例如设置脚本程序)。
典型的环境变量有:
环境变量名变量值
USERsteve
HOME/home/steve
PATH/bin:
/usr/bin:
/home/steve/bin
执行命令行命令“env”,可得到当前环境中的环境变量列表。
定义和设置环境变量的方式取决于用户所用的外壳(Shell)类型。
Csh类shell(如csh、tcsh)用户设置方式如下:
setenvCCc89
setenvCPPFLAGS“-0-DNDEBUG”
而标准UNIXshell(例如sh、ksh、bash)用户要设置上面同样的环境变量,可如下设置:
exportCC=c89
exportCPPFLAGS=”-0-DNDEBUG”
以上两种方式中,参数值中带有将值的各部分分开的空格分隔符时,双引号不能省略。
否则,参数值只是设置为所要取值得一部分。
标准shell用户还有一种额外的快捷方式为单一命令定义和设置环境变量。
环境变量可在命令行中定义和设置,并只在这一行中生效。
例如:
exportFOO=foo
env|grepFOO
FOO=foo
FOO=barenv|grepFOO
FOO=bar
env|grepFOO
FOO=foo
测试系统时,环境变量及其赋值可列表式给出。
标准UNIXshell用户可直接使用标准语法。
例如,标准shell用户可以用(以IBMSPAIX为例):
exportCC=xlcCPPFLAGS=-DNDEBUGCFLAGS=-OFC=f77\
FFLAGS=-OCXX=xlCF90=xlf90F90FLAGS=-qsuffix=f=f90
在IBMAIXSP环境下,编译NetCDF所需要的一些相应的系统环境变量有:
CC=/bin/xlc
CPPFLAGS=-DNDEBUG
CFLAGS=-O
FC=/bin/xlf
FFLAGS=-O
F90=/bin/xlf90
F90FLAGS=-qsuffix=f=f90#Note:
no"-O"option
CXX=/bin/xlC
CXXFLAGS=-O
因为有些机器的AIX系统在用F90编译器编译时,选用“-O”优化编译会产生错误信息为“1501-229Compilationendedduetolackofspace”的错误。
通常是由于编译时优化消耗内存太多,以至于超出计算机内存。
解决方法之一是用ulimit命令将数据段(data)、堆栈段(stack)以及内存段(memory)设置成足够大或者设置成无限制(unlimited)。
另一种解决方法就是,在设置F90编译选项时,不要用“-O”优化选项。
另外,如果要用64位模式编译程序,则除了在C和Fortran编译选项中添加“-q64”外,还要设置以下环境变量:
ARFLAGS='-X64cru'
NMFLAGS='-X64'
编译和安装NetCDF
要生成编译netCDF所需的Makefile文件,必须先运行配置脚本程序(configure)。
它存放在netCDF目录的src子目录中。
首先,选择安装的目录。
用这个目录作为配置脚本程序参数“――prefix=”的指定值。
程序默认的安装目录(prefix参数值)是“..”,即将程序包安装在../bin,../lib和../man,这些目录是相对于netCDF的src/目录。
执行设置脚本格式如下:
./configure--prefix=目录名
这里“--prefix=...”是可选的;如果省略的话,程序将默认地将当前目录的父目录“..”设为安装目录。
运行配置脚本程序时,程序会检测系统的与编译netCDF程序包相关的属性设置。
检测结果将会显示在标准输出设备上(如显示器)。
配置脚本程序还会创建一个记录文件“”。
它包含了配置脚本程序检测系统属性设置时发现的错误信息。
由于系统检测可能会导致一些错误,因此在记录文件中可能会记录一些错误信息。
这些错误信息未必表明是有问题(严重的错误标志会导致下一步编译“make”程序失败)。
不过,记录文件中的编译器不能启动的错误信息例外,这是一个编译环境的严重错误,必须改正,否则不会产生相应编译环境的程序接口。
运行编译命令“make”。
此命令将创建一个或多个netCDF库。
它包括基本的netCDF库“libsrc/”。
如果系统有Fortran77或者Fortran90编译器,那么Fortran接口程序会包含在此库中。
如果系统有C++编译器,那么C++接口程序会创建在库“cxx/libnetcdf_c++.a”中。
命令创建的库还包括netCDF应用程序库ncgen和ncdump。
如果第一步的编译通过,则可以用命令“maketest”来检验netCDF库和可执行程序创建得正确与否。
系统会建立和运行各种测试C、Fortran和C++的程序,以及应用程序“ncdump”和“ncgen”。
以“***”开头的输出显示行中,列出了测试成功与否的信息。
任何错误都会明确列出,并终止程序的运行。
测试过程中的编译器和连接器警告会被忽略掉。
如果编译和测试都正确,这时就可以安装程序库和可执行程序了。
安装时,运行命令“makeinstall”即可,它将连接系统的函数库和应用程序,安装到指定的目录中。
在进行编译安装的时候,可以编写一个shell脚本程序。
这样,在安装的时候,只需执行这个批处理命令就行。
这里给出一个在AIX系统上编译安装的例子,比如取名为:
makedistclean
exportCC='/usr/bin/xlc'
exportCPPFLAGS=-DNDEBUG
exportCFLAGS=-O
exportFC='/usr/bin/xlf90'
exportFFLAGS='-O3-qfixed'
exportF90FLAGS='-O3-qfree-qsuffix=f=f90'
exportF90='/usr/bin/xlf90'
exportCXX='/usr/bin/xlC'
exportCXXFLAGS=-O
configure--prefix=/u/wrf_xp/netcdf
make
maketest
makeinstall
问题处理
(1)详细阅读本安装文档。
(2)转到netCDF的顶级目录下的源程序目录SRC。
(3)执行命令“makedistclean”,即使执行失败也不会造成什么错误。
(4)如果存在“”文件,则将它删除。
(5)按上面描述的方法设置相应的环境变量。
(6)重新执行配置脚本程序。
(7)执行命令“make”。
(8)执行命令“maketest”。
(9)执行命令“makeinstall”。
值得注意的是,设置和编译系统应该具有较新的“sh”shell、“make”程序以及C和Fortran编译器。
在曙光机器上,就存在Fortran90编译器版本比较陈旧,不能编译后缀名为“.F90”的程序,导致运行配置脚本时,无法通过对Fortran90编译器的检测,故不能生成Fortran90程序接口。
标准初始化(SI)的安装
文件和资料的获取
标准初始化是WRF模式的数据前处理部分,也是WRF模式的三维变分系统建立使用之前为WRF模式提供初/边值的部分。
SI主要的具有两大功能:
(1)模式区域的定义和创建
在这里,用户可以定义计算区域(投影参数,范围大小,区域位置等)。
根据这些定义设置,SI的“”程序会产生一个名为“static”的文件。
它是NetCDF格式的文件,包含模式格点定义信息和一些静态数据场(如地形、土地利用、土壤类型、月叶面积指数、经度和纬度等)。
(2)将数据插值到WRF模式的计算格点(包括水平方向和垂直方向)上,为WRF模式提供初始场和边界条件。
这项功能是由“”和“”程序来完成。
另外,“”程序是将标准的GRIB码格式的数据文件转换成“”程序能识别的格式。
也可以不用“”程序,而是直接将其他数据格式的数据写成“”所能识别的格式即可。
安装之前,首先需从WRF模式的提供网站()下载标准初始化(SI)的压缩程序包、AVN模式的试验数据以及模式所需的静态数据(如地形、土地利用类型、土壤温度等):
-10分的植被指数数据
-10分的土地利用数据
-1度的全球深层土壤温度数据
-10分的地形数据
另外,还应该下载如下四个文件夹及其其中的数据文件:
-landuse_30s/USGS24-categorylandusefractions
-soiltype_bot_30s/WMO/FAO16-category2-layersoiltypes
-soiltype_top_30s/
-topo_30s/
解压这些文件后,应该得到八个目录:
greenfrac_10m/
pctland_10m/
topo_10m/
soiltemp_1deg/
landuse_30s/
soiltype_bot_30s/
soiltype_top_30s/
topo_30s/
解压后的各目录中所得到的数据文件大多数都是10°×10°的数据块文件。
用户大约需要的磁盘空间来存储这些数据。
其目录在WRFSI的参数配置文件中需要做相应的设定。
安装环境
编译时,要求系统装有Perl(以上的版本)和make(以上的版本)。
由于WRFSI模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C(或C++)编译器。
SI的数据格式采用了NetCDF的格式,要求系统安装了NetCDF函数库。
SI的目录结构
在进行编译和运行SI前,有必要先熟悉SI的目录结构。
在SI的编译和运行当中,有四个“顶级”路径环境变量。
这里“顶级”的意思是指每一个路径都是一个总的路径,在其下面,编译和运行时可能会创建许多子目录。
从这个意义上来说,这四个目录分别相当于他们的子目录的顶级目录。
这四个“顶级”目录分别为:
(1)SRCROOT
这个目录在编译和安装SI时要用到,它是包含SI源程序代码的目录,也就是在用户解压tar源程序包时所创建的目录。
比如用户解压文件时,最终会创建一个名为wrfsi_的SRCROOT目录。
当然,用户也可以根据自己的喜好,将其改为自己喜欢的名称。
通常,SRCROOT目录中包含用perl写成的安装脚本文件“”。
编译和安装时,应该提供大约10兆空间给SRCROOT目录。
(2)INSTALLROOT
这个目录是在编译和安装SI时用到。
它是指定SI的安装目录,存放SI的可执行程序(包括可执行的二进制文件和可执行的perl脚本)。
在INSTALLROOT目录下,安装后会创建三个目录:
bin、data和etc。
子目录bin中存放可执行的二进制文件;data存放相关的配置信息文件;etc存放可执行的perl脚本文件。
INSTALLROOT和SRCROOT可以相同,这样的话,INSTALLROOT目录下的三个子目录会创建在SRCROOT的目录下。
如果INSTALLROOT目录缺省,则系统会认为INSTALLROOT与SRCROOT相同。
INSTALLROOT需要的空间大约为5兆。
(3)MOAD_DATAROOT
这个目录在运行SI时使用。
“MOAD”的意思是“所有计算区域之源(MotherofAllDomains)”,当然也包括以后嵌套技术实现后的粗/细网格。
MOAD_DATAROOT可以和INSTALLROOT以及SRCROOT相同,但将MOAD_DATAROOT与这二者区分开来是非常有用的。
它可以使用户在一次编译后,处理不同的模式区域。
MOAD_DATAROOT的默认目录为INSTALLROOT/data。
如果要设置不同路径时,只需将INSTALLROOT/data目录下的cdl和static两个子目录拷贝到新的目录下即可。
(4)EXT_DATAROOT
这个目录在运行SI时使用。
它是用来存放一些所谓的“外部”数据。
数据前处理程序产生的结果文件就是存放的在这个目录的子目录extprd目录下,而运行程序时所创建的记录文件也放在这个目录的子目录log下面。
同样,当用户不用个程序处理数据,而是自定义生成程序所能识别的数据文件时,用户所生成的数据文件也应该放在这个目录的extprd子目录下,插值程序则从这个子目录下读取输入数据。
对于版本的SI来说,则这个目录已经被提供初始场(ANALPATH)和边界条件(LBCPATH)的路径所代替。
并且,在版本中,初始场和边界条件可以分开,使用两个不同的路径。
编译和安装SI
编译和安装前,需查看一下“src/include/文件。
比如查看编译器的名字(如FC),cpp选项(CPPFLAGS特殊情况下为-DFORTRANDOUBLEUNDERSCORE,而有些计算机(比如AlphaUnix工作站)则要求为-DFORTRANUNDERSCORE)。
用户还需为gcc库函数指定确切的路径。
同时,用户还可以根据需要,设定一些相应的编译选项。
要求用户找到计算机安装netCDF和perl的路径。
没有的话,则需必须下载正确的版本进行安装。
找到正确的netCDF和perl的安装路径后,SI最简单的安装就是在安装在当前源代码相同目录下。
这时只需设置一下环境变量NETCDF,将其指到包含netCDF库函数的正确目录,例如:
setenvNETCDF/usr/local/
然后,输入以下安装命令:
perl
上面是最为简单的安装方式,但是如果用户没有找到netCDF和Perl的安装目录的话,则会退出安装。
因此,还可以根据用户选择配置来安装。
执行安装命令时,其他的一些参数选项如下:
perl\
--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源代码的目录,i