WRF模式运行指南(2007.8.24~2007.8.30)国家气象中心数值预报室(内部资料请勿扩散)二○○七年八月二十四日1目录1.WRF模式简介……………………………………………………..12.WRF模式的安装……………..……………………………………..22.1安装环境………………….……………………………………..22.2模式源程序…………………...…………………………………..22.3NetCDF函数库的安装……………………………………………22.4WRF模式的安装…………………………………………………62.5资料前处理系统(WPS)的安装……………….….…………..…93.WRF模式与T213模式连接…………………………….…………...173.1连接方案……………………………………………………….173.2连接程序设计………………………………………………….173.3编译连接程序…………………………………………………..213.4连接的实现…………………………………………………….224.WRF模式系统的运行……………...………………………………..294.1理想大气方案………………………………………………..….294.2真实大气方案………………………………………………….325.WRF模式系统作业卡……………...………………………………..475.1源程序………………………………………………………..….475.2真实大气方案………………………………………………….486.模式结果的显示处理……………………………….……………..616.1Vis5D格式……….…………………….………………………..616.2MICAPS格式……………………………….……………………626.2GrADS格式……….…………………….……………………...65附录1.WRF模式参数配置说明…………………….……………….68附录2.T213场库参数表……………………………………………..782WRF模式系统安装/调试技术报告数值预报室邓莲堂1.WRF模式简介WRF(WeatherResearchForecast)模式系统是由许多美国研究部门及大学的科学家共同参与进行开发研究的新一代中尺度预报模式和同化系统。WRF模式系统的开发计划是在1997年由NCAR中小尺度气象处、NCEP的环境模拟中心、FSL的预报研究处和奥克拉荷马大学的风暴分析预报中心四部门联合发起建立的,并由国家自然科学基金和NOAA共同支持。现在,这项计划,得到了许多其他研究部门及大学的科学家共同参与进行开发研究。WRF模式系统具有可移植、易维护、可扩充、高效率、方便的等诸多特性,将为新的科研成果运用于业务预报模式更为便捷,并使得科技人员在大学、科研单位及业务部门之间的交流变得更加容易。WRF模式系统将成为改进从云尺度到天气尺度等不同尺度重要天气特征预报精度的工具。重点考虑1-10公里的水平网格。模式将结合先进的数值方法和资料同化技术,采用经过改进的物理过程方案,同时具有多重嵌套及易于定位于不同地理位置的能力。它将很好的适应从理想化的研究到业务预报等应用的需要,并具有便于进一步加强完善的灵活性。WRF模式作为一个公共模式,由NCAR负责维护和技术支持,免费对外发布。第一版的发布在2000年11月30日。随后在2001年5月8日,第二次发布了WRF模式,版本号为1.1。2001年11月6日,很快进行了模式的第三次发布,只是改了两个错误,没有很大的改动,因此版本号定为1.1.1。直到2002年4月24日,才正式第四次发布,版本号为1.2。同样,在稍微修改一些错误后,2002年5月22日第五次版发布模式系统,版本号为1.2.1。原定于2002年10月份左右的第六次发布,直到2003年3月20才推出,版本号为1.3。2003年11月21日进行了更新。2004年5月21日推出了嵌套版本V2.0。2004年6月3日进行了更新。2006年1月30日升级为新版本2.1.2。2006年11月22日升级为2.2版。32.WRF模式的安装2.1硬件环境WRF模式是一个多机型、跨平台、标准化的模式。可以在IBMAIX,SGIIRIX,PCLINUX等机型上运行。2.2软件环境WRF模式的运行系统中的一般需要的安装软件环境包括:UNIX(LINUX)操作系统Perl5.003以上Fortran程序编辑器(包括Fortran90和Fortran77编译器)C程序编译器NetCDF函数库,版本在3.3.1以上(必须包含Fortran77,Fortran90以及C的程序调用接口)MICAPS图形显示系统、VIS5D图形显示系统、GrADS或者RIP等2.2.1UNIX环境计算机系统是有计算机硬件和软件构成。操作系统是系统软件的核心,它控制程序的执行和提供资源分配、调度、输入/输出控制和数据管理服务。UNIX系统是一种多用户多任务的分时的操作系统,由于其安全可靠、开放性和可移植性良好等优点,迅速成为小型机和工作站上普遍使用的一种主流操作系统。UNIX系统大致分为三层:最里层是UNIX内核,即UNIX操作系统常驻内存部分,它直接附着在硬件上;中间层是shell,即命令解释程序,这是用户与系统和核心的接口;最外层是应用层,它包含众多的应用软件、实用程序和除UNIX操作系统之外的其他系统软件。在UNIX操作系统中,通常提供三种不同的shell,即Bourneshell(简称sh)、C-shell(简称csh)和Kornshell(检查ksh)。Bourneshell是AT&TBell试验室的SlephenBourne为AT&T的UNIX开发的,它室其它shell的开发基础,也是各种UNIX系统上最常用、最基本的shell。C-shell是加州伯克利大学的BillJoy为BSDUNIX开发的,它与sh不同,主要是模拟C语言。Kornshell是AT&TBell实验室的DavidKorn开发的,它与sh兼容,但功能更强大。在Linux系统中使用的Bash(代表GNU的BourneAgainshell),他是由Bourneshell发展而来。Bash与sh稍有不同,它还包含了csh和ksh的特色。不过,大多数sh脚本可以不加修改地在Bash上运行。在UNIX系统的应用层,通常可以提供十几种常用的程序设计语言的编译和解释程序。如C、FORTRAN、BASIC、PASCAL、Ada、COBOL和Perl等。UNIX系统丰富的核外系统程序为用户提供了一个实用的软件运行和开发环境。这正是目前中尺度数值模式大多数都运行在UNIX系统平台上的主要原因之一。UNIX系统自从诞生到现在已有三十多年的历史了,产生了很种版本,如IBM公司的AIX、DEC公司的Ultrix、SunMicrosystems公司的SunOS/solaris等。值得一提的是自由软件Linux近十年来得到迅速的发展。Linux系统是遵循UNIX相同的同一标准的操作系统,它不仅可以在Intel、AMD及Cyrix系列个人机上,还可以用在许多工作站上。它继承了UNIX系统的主要特征,使中尺度数值模式在个人微机上运行成为可能。4为了是数值模式本身的维护和发展,大多数数值模式开发是都尽量保持程序的可移植性,使模式可以运行在多种版本的UNIX操作系统上。例如,新一代中尺度天气模式ARW就可以运行在多种UNIX系统平台上,具体包括:开发商硬件平台操作系统编译器CrayX1UniCOSvendorHP/CompaqalphaTru64vendorHP/CompaqIA64(Intel)LinuxvendorHP/CompaqIA64HPUXvendorIBMPowerSeriesAIXxlfSGIIA64LinuxIntelSGIMIPSIrixvendorSunUltraSPARCSunOSvendorCOTS*IA32/AMD32LinuxIntel/PGICOTSIA64/OpteronLinuxIntel/PGIMacG5Darwinxlf2.2.2PERL环境Perl是PracticalExtractionandReportLanguage的缩写,是由LarrtWall融合了awk/sed/cut/grep等unix上常见的工具与Clanguage的语法所创造的一种language。Perl是一种解译式的语言,在速度上并没有C这类编译式的语言来得快,不过Perl在执行时事实上是先将原始档实时编译后再执行,所以速度其实并不慢。Perl极为适合处理用来处理一些用C处理并不方便,用shell处理又嫌太复杂的工作.Perl强大的文字处理能力,使得它极为适合作为CGI程序所用的language。事实上,针对许多的应用,已经有现成的Perlmodule可供使用,因此perl也很适合作为应用程序的发展语言。配合Perl/Tk,Perl也能用来发展窗口程序。Perl目前支持极多种操作系统,包含大部份的Unix操作系统及其它如Mac.VMS,BeOS,OS2,WindowsNT,Windows95甚至MsDos。在不同的操作系统上,支持大部份相同的功能,因为Perl的创造者LarryWall坚持Perl必须是“一种”语言。这意味着用Perl所写的程序有极佳的可移植性。数值模式中,比如WRF模式,经常用perl来初始化模式运行的参数环境,以及运行一些程序。2.2.3MPI并行环境MPI是一种消息传递编程模型,目的是实现进程间的通信。MPI不是一门语言,而是一个运行库,可以由Fortran77/Fortran90/C/C++语言调用,在语法上,他完全以库的形式呈现,因此很好地融入了宿主语言中。MPI已经在很多科研领域被广泛地使用。作为一种消息传递式的并行编程环境,MPI并行程序要求将任务分块,同时启动多个进程并发执行,各进程之间通过调用MPI的库函数实现消息传递。由于其消息传递并行编程模型的特点,MPI程序的各个参与计算的进程可以被容易的分布在不同的计算节点上,这使得MPI程序具有很强的可扩展性。为了支持异构环境编程,MPI定义了一些数据类型,使得进程之间可以跨平台交5互。这些数据类型与语种中的数据类型对应,但是又中立于语言。MPI不同于PVM,他的各个进程运行相同的源代码,一般地,根据自己不同的进程号,进入到程序中的不同分支进行运行,既可以使用对等模式来编程,也可以使用主从模式来编程。对等模式中程序的各个部分使用相同的代码来处理不同的数据,主从模式中则是由一个主进程来控制其它进程的运行,体现了依赖的关系。MPI-1提供了128个调用接口,MPI-2提供了287个调用接口,但是最基本的MPI调用只有6个。用以下的6个函数,可以实现基本的并行编程:(1)MPI_Init():初始化MPI程序(2)MPI_Finalize():结束MPI程序,做清理工作(3)MPI_COMM_Size():确定参与计算的进程数(4)MPI_COMM_Rank():确定当前进程的进程号(5)MPI_Send():发送消息(阻塞式)(6)MPI_Recv():接受消息(阻塞式)2.2.4OpenMP并行环境在常用的并行方法中,MPI要求程序员将数据结构按不同的处理区分开,并且不支持增量并行,因而MPI编程较为困难。OpenMP是由OpenMP标准委员会(OpenMPARB,OpenMPArchitectureReviewBoard)于1997年10月推出的支持共享存储并行编程的工业标准。OpenMP标准通过定义编译制导、库例程和环境变量规范的方法,为程序员提供了支持Fortran和C/C++语言的一组功能强大的高层并行结构,而且支持增量并行。OpenMP[2]是共享存储体系结构的并行编程标准,其特点是易于编程且支持增量并行,但是不易扩展.OpenMP应用于共享内存的并行计算平台,它是一组编译指导语句和可调用运行时库函数的集合,可被直接嵌入源程序而无需作较大的修改,编程简单,适合