版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WRF 模式运行指南(2007.8.242007.8.30)国家气象中心数值预报室 (内部资料 请勿扩散)二七年八月二十四日 目录1. WRF模式简介 .12. WRF模式的安装 .2 2.1 安装环境 .2 2.2 模式源程序.2 2.3 NetCDF函数库的安装2 2.4 WRF模式的安装6 2.5资料前处理系统(WPS)的安装.93. WRF模式与T213模式连接.17 3.1 连接方案 .17 3.2 连接程序设计 .17 3.3编译连接程序 .21 3.4 连接的实现 .224. WRF模式系统的运行.29 4.1 理想大气方案.29 4.2 真实大气方案 .325. WRF模式系统
2、作业卡.47 5.1 源程序.47 5.2 真实大气方案 .486. 模式结果的显示处理 .61 6.1 Vis5D格式 .61 6.2 MICAPS格式.62 6.2 GrADS格式 .65附录1. WRF模式参数配置说明 .68附录2. T213场库参数表 .78WRF模式系统安装/调试技术报告数值预报室 邓莲堂1. WRF模式简介 WRF(Weather Research Forecast)模式系统是由许多美国研究部门及大学的科学家共同参与进行开发研究的新一代中尺度预报模式和同化系统。WRF模式系统的开发计划是在1997年由NCAR中小尺度气象处、NCEP的环境模拟中心、FSL的预报研究
3、处和奥克拉荷马大学的风暴分析预报中心四部门联合发起建立的,并由国家自然科学基金和NOAA共同支持。现在,这项计划,得到了许多其他研究部门及大学的科学家共同参与进行开发研究。WRF模式系统具有可移植、易维护、可扩充、高效率、方便的等诸多特性,将为新的科研成果运用于业务预报模式更为便捷,并使得科技人员在大学、科研单位及业务部门之间的交流变得更加容易。 WRF模式系统将成为改进从云尺度到天气尺度等不同尺度重要天气特征预报精度的工具。重点考虑110公里的水平网格。模式将结合先进的数值方法和资料同化技术,采用经过改进的物理过程方案,同时具有多重嵌套及易于定位于不同地理位置的能力。它将很好的适应从理想化的
4、研究到业务预报等应用的需要,并具有便于进一步加强完善的灵活性。 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年1
5、1月21日进行了更新。2004年5月21日推出了嵌套版本V2.0。2004年6月3日进行了更新。2006年1月30日升级为新版本2.1.2。2006年11月22日升级为2.2版。2WRF模式的安装2.1 硬件环境 WRF模式是一个多机型、跨平台、标准化的模式。可以在IBM AIX,SGI IRIX,PC LINUX等机型上运行。2.2 软件环境 WRF模式的运行系统中的一般需要的安装软件环境包括:UNIX(LINUX)操作系统Perl5.003以上Fortran程序编辑器(包括Fortran90和Fortran77编译器)C程序编译器NetCDF函数库,版本在3.3.1以上(必须包含Fortr
6、an77,Fortran90 以及C的程序调用接口)MICAPS图形显示系统、VIS5D图形显示系统、GrADS或者RIP等2.2.1 UNIX环境计算机系统是有计算机硬件和软件构成。操作系统是系统软件的核心,它控制程序的执行和提供资源分配、调度、输入/输出控制和数据管理服务。UN IX 系统是一种多用户多任务的分时的操作系统, 由于其安全可靠、开放性和可移植性良好等优点, 迅速成为小型机和工作站上普遍使用的一种主流操作系统。UNIX系统大致分为三层:最里层是UNIX内核,即UNIX操作系统常驻内存部分,它直接附着在硬件上;中间层是shell,即命令解释程序,这是用户与系统和核心的接口;最外层
7、是应用层,它包含众多的应用软件、实用程序和除UNIX操作系统之外的其他系统软件。在UNIX操作系统中,通常提供三种不同的shell,即Bourne shell(简称sh)、Cshell(简称csh)和Korn shell(检查ksh)。Bourne shell是AT&T Bell试验室的Slephen Bourne为AT&T的UNIX开发的,它室其它shell的开发基础,也是各种UNIX系统上最常用、最基本的shell。Cshell是加州伯克利大学的Bill Joy为BSD UNIX开发的,它与sh不同,主要是模拟C语言。Korn shell是AT&T Bell实验室的David Korn开发
8、的,它与sh兼容,但功能更强大。在Linux系统中使用的Bash(代表GNU的Bourne Again shell),他是由Bourne shell发展而来。Bash与sh稍有不同,它还包含了csh和ksh的特色。不过,大多数sh脚本可以不加修改地在Bash上运行。在UNIX系统的应用层,通常可以提供十几种常用的程序设计语言的编译和解释程序。如C、FORTRAN、BASIC、PASCAL、Ada、COBOL和Perl等。UNIX系统丰富的核外系统程序为用户提供了一个实用的软件运行和开发环境。这正是目前中尺度数值模式大多数都运行在UN IX 系统平台上的主要原因之一。UNIX系统自从诞生到现在已
9、有三十多年的历史了,产生了很种版本,如IBM公司的AIX、DEC公司的Ultrix、Sun Microsystems公司的SunOS/solaris等。值得一提的是自由软件Linux近十年来得到迅速的发展。Linux系统是遵循UNIX相同的同一标准的操作系统,它不仅可以在Intel、AMD及Cyrix系列个人机上,还可以用在许多工作站上。它继承了UNIX系统的主要特征,使中尺度数值模式在个人微机上运行成为可能。为了是数值模式本身的维护和发展,大多数数值模式开发是都尽量保持程序的可移植性,使模式可以运行在多种版本的UNIX操作系统上。例如,新一代中尺度天气模式ARW就可以运行在多种UNIX系统平
10、台上,具体包括:开发商 硬件平台 操作系统 编译器 Cray X1 UniCOS vendorHP/Compaq alpha Tru64 vendorHP/Compaq IA64 (Intel) Linux vendorHP/Compaq IA64 HPUX vendorIBM Power Series AIX xlfSGI IA64 Linux IntelSGI MIPSIrix vendorSun UltraSPARC SunOS vendorCOTS* IA32/AMD32 Linux Intel / PGICOTS IA64/Opteron Linux Intel / PGIMac G
11、5 Darwin xlf2.2.2 PERL环境Perl 是 Practical Extraction and Report Language的缩写,是由 Larrt Wall 融合了 awk/sed/cut/grep等unix 上常见的工具与C language的语法所创造的一种 language。Perl 是一种解译式的语言,在速度上并没有 C 这类编译式的语言来得快,不过 Perl 在执行时事实上是先将原始档实时编译后再执行,所以速度其实并不慢。Perl 极为适合处理用来处理一些用 C 处理并不方便,用 shell 处理又嫌太复杂的工作. Perl 强大的文字处理能力,使得它极为适合作为
12、 CGI 程序所用的language。事实上,针对许多的应用,已经有现成的 Perl module 可供使用,因此 perl 也很适合作为应用程序的发展语言。配合 Perl/Tk, Perl 也能用来发展窗口程序。Perl 目前支持极多种操作系统,包含大部份的 Unix 操作系统及其它如 Mac. VMS,BeOS,OS2,Windows NT,Windows 95 甚至 MsDos。在不同的操作系统上,支持大部份相同的功能,因为 Perl 的创造者 Larry Wall坚持 Perl 必须是“一种”语言。这意味着用Perl所写的程序有极佳的可移植性。 数值模式中,比如WRF模式,经常用per
13、l来初始化模式运行的参数环境,以及运行一些程序。2.2.3 MPI并行环境MPI 是一种消息传递编程模型, 目的是实现进程间的通信。MPI 不是一门语言, 而是一个运行库, 可以由Fortran77/Fortran90/C/C+语言调用, 在语法上, 他完全以库的形式呈现, 因此很好地融入了宿主语言中。MPI 已经在很多科研领域被广泛地使用。作为一种消息传递式的并行编程环境, MPI 并行程序要求将任务分块, 同时启动多个进程并发执行, 各进程之间通过调用MPI 的库函数实现消息传递。由于其消息传递并行编程模型的特点, MPI 程序的各个参与计算的进程可以被容易的分布在不同的计算节点上, 这使
14、得MPI程序具有很强的可扩展性。为了支持异构环境编程, MPI 定义了一些数据类型, 使得进程之间可以跨平台交互。这些数据类型与语种中的数据类型对应, 但是又中立于语言。MPI 不同于PVM, 他的各个进程运行相同的源代码,一般地,根据自己不同的进程号, 进入到程序中的不同分支进行运行, 既可以使用对等模式来编程, 也可以使用主从模式来编程。对等模式中程序的各个部分使用相同的代码来处理不同的数据, 主从模式中则是由一个主进程来控制其它进程的运行, 体现了依赖的关系。MPI-1 提供了128 个调用接口, MPI-2 提供了287 个调用接口, 但是最基本的MPI 调用只有6 个。用以下的6 个
15、函数, 可以实现基本的并行编程:(1)MPI_Init(): 初始化MPI 程序(2)MPI_Finalize(): 结束MPI 程序, 做清理工作(3)MPI_COMM_Size(): 确定参与计算的进程数(4)MPI_COMM_Rank(): 确定当前进程的进程号(5)MPI_Send(): 发送消息( 阻塞式)(6)MPI_Recv(): 接受消息( 阻塞式)2.2.4 Open MP并行环境在常用的并行方法中,MPI要求程序员将数据结构按不同的处理区分开,并且不支持增量并行,因而MPI编程较为困难。OpenMP 是由OpenMP 标准委员会( OpenMPARB , OpenMP Ar
16、chitecture Review Board) 于1997 年10 月推出的支持共享存储并行编程的工业标准。OpenMP 标准通过定义编译制导、库例程和环境变量规范的方法,为程序员提供了支持Fortran 和C/ C + +语言的一组功能强大的高层并行结构,而且支持增量并行。OpenMP2 是共享存储体系结构的并行编程标准,其特点是易于编程且支持增量并行,但是不易扩展.OpenMP 应用于共享内存的并行计算平台,它是一组编译指导语句和可调用运行时库函数的集合,可被直接嵌入源程序而无需作较大的修改,编程简单,适合将现有的程序并行化。OpenMP是一组编译指导语句、一组库函数和环境变量的集合,能
17、用来表示共享内存并行,可支持粗、细粒度的并行。它包括3部分:控制结构、数据环境和同步机制。另外还包括了一个可调用运行时库及相应的环境变量。下面看一个简单的例子,了解一下OpenMP具体是如何工作的。program maininteger i, sum sum = 0 c1234567890 c$omp parallel do private(i)c$omp+reduction(+sum)do i=1,50 sum=sum+i+(100-i+1)enddoc$omp end parallel do print *, 1+2+3+ + 99+100=,sumstop end 上面的程序中以c$om
18、p开头的语句即为并行指导语句,一般串行编译时,被识别为注释语句。程序首先以一个进程开始,当我们第一次遇到PARALLEL语句时,则产生一个或多个进程,同时对应于每一个进程的数据环境也被产生。每一个进程的数据环境包括一个私有变量i和一个归约变量sum,在并行区中对i和sum的引用都是私有的。而归约变量意味着在并行区结束时,将各个进程的sum变量以操作符归约到主进程的sum变量中。在程序的执行过程中,处理器负责将任务分配到不同的进程,编程者不需要知道到底能用多少各处理器。从上面的例子可以看到,用OpenMP实现并行,简单易行,基本上不必对原来的串行程序做额外的改动。在应用OpenMP并行程序时,应
19、用程序员往往缺乏对程序并行性的分析(如数据相关性分析和通信分析等),许多OpenMP 程序的性能也并不理想,并行效率较低;另一方面,如果要求程序员在编写并行程序时进行深入的程序分析就会增加程序设计的难度,违背OpenMP的易用性原则,也是不现实的。因此,有时可以考虑在编译过程中实现OpenMP 程序的优化。(张平,2006 OpenMP 并行程序的编译器优化)2.3 数据接口2.3.1 NETCDF格式 近年来,越来越多的气象模式输入输出格式采用了NetCDF格式,如WRF模式,GRAPES模式等。在科研中比较常用的NCEP再分析资料也是采用NetCDF格式。所谓NetCDF(Network
20、Common Data Form)就是在美国国家自然科学基金为资助的计划Unidata下开发的一套软件。NetCDF的软件本质是一个I/O函数库,现在NetCDF已经可以应用在从微型机到超级计算机的各种计算机平台上。它提供了C、Fortran77、Fortran90、Java、C、Perl等语言的调用接口。利用NetCDF函数库,可以存储和检索具有自描述性,且不依赖于计算机的数据集。每个NetCDF数据集里可以包含多维的变量,每个变量都可以有辅助性数据,例如变量的单位、数据类型等。它的优点首先在于资料是自描述的,即在数据集中包含了描述这个数据集内部数据的信息;其次,NetCDF数据集的数据可以
21、直接存取,可以省去很多不必要的读取时间;另外,NetCDF数据集的文件格式可以跨平台读取,数据不依赖于机器,例如在UNIX平台上用C创建的数据可以在另一台Linux系统的计算机上用Fortran语言来读取,中间不需要任何转换。2.3.2 GRIB码(GRIB1和GRIB2)随着气象科学的不断发展,庞大的气象数据不但对计算机提出更高的要求,而且国际间的数据交换也要求能形成一种有效的、统一的、标准的数据存储和流通格式。因此,世界气象组织(WMO)在1984年首先推荐并定义了GRIB(GRIdded Binary)码数据格式。GRIB码就是一种基于“位”的,与计算机无关的压缩的网格二进制编码数据格式
22、,适用于表示各种数值天气预报的分析和预报的格点场产品。GRIB通过把各种相关数据信息大包压缩,是信息的组织方式比起基于字符的形式要紧凑得多,因此有利于资料得存储和加快计算机之间得传输速度。现行的GRIB 码版本有GRIB1 和GRIB2 两种格式。GRIB是在1990年WMO确定得数据结构相对稳定的GRIB数据格式。GRIB的优点主要表现为:1. 数据是二进制格式,与计算机无关;2. 数据压缩效率高;3. 数据具有完整的描述信息,数据表示能力强。GRIB1码格式也逐渐显示出了它的不足:1. 缺乏对谱数据的支持和对图象数据的有限支持;2. 不能对一些集合预报等新产品进行处理;3. 只能定义一个产
23、品模版和网格描述模版。GRIB2是对GRIB1的功能扩充版,弥补了GRIB的大部分不足:1. GRIB2码能够表达多个网格场数据,也能描述在时间和空间方面的多维网格数据;2. 提供更多的描述模版,可以表达集合预报系统产品等一些新的产品数据,并维扩展和增加新产品提供方便的途径;3. 数据压缩方式更多,并包含了JPEG2000和PNG等图象压缩方式;4. GRIB2码有些数据可以采用了IEEE标准浮点表示方法。在了解了GRIB1码和GRIB2码资料的结构后,即编写解码程序进行解码工作。一般来说,如果数值模式产品包含了GRIB1码或GRIB2码格式的数据,则模式的源代码中必然有GRIB1码或者GRI
24、B2码的压/解码程序。2.3.3 T213场库T213场库是国家气象中心新一代数值预报业务系统的重要组成部分之一。在实时业务运行中,格点场库系统存储和管理数值预报的客观分析、模式预报后处理所产生的结果数据,以场(即一层资料)为单位,经过处理和压缩,按照一定的要求分门别类地保存,供绘图、检验、归档、远程网产品等实时预报业务和科研使用。 IBM SP机器中T213场库的水平分辨率为0.5625*0.5625(度)。目前,由于T213场库资料的检索已经模块化,用户根据检索时,可直接调用通用场库(T213)检索接口程序“gdbrck”。调用通用场库接口程序时,用户只必须设置好程序的各个接口参数。具体各
25、接口参数说明如下: call gdbrck(ftype,idate,iftime,ielemcd,level,ii,jj,kk,record,data,index_dic,iret) ftype : character*4,场类型,例:暴雨系统为 BJLP,t213系统为 BJGL idate : integer idate(4), 日期数组,年(四位)、月、日、时次 iftime : integer, 时效 ielemcd : integer, 要素代码 level : integer level(n+1), 层次数组,第一元为调用的总层数n, 2到n+1元为具体的调用层次,如level(3
26、), data level/2,500,700/ ii : integer,纬度格点数 jj : integer, 经度格点数 kk : integer, 调用层数n record : integer,本场最大ii * jj。T213系统为: 640*321 data : real*8 dimension data(ii,jj,kk) ,符点数组,数据区 index_dic : character*80, 字符串,模式字典文件全名 iret : integer,返回码 0:正常 6:场没生成或记录不存在 9:其他错 值得注意的是,由于场库资料中整数和浮点数都是以64位格式存储的,也就是8个字节
27、。因此,在程序的声明部分注意场库调用参数的存储长度;或者在编译程序的时候,选用64位编译方式编译。当然,也可以在编译的时候,用编译选项 -qintsize=8 和 -qrealsize=8两个选项来进行编译。 index_dic是模式字典文件全名,在调用前必须指定。在IBM SP上,场库在SP:/gpfs/fs2/nwp/gdbt213目录下用index_dic(1:28)=/u/nwp/gdbt213/dic/index_dic;在场库在盘阵库/asm2/nwpgdb/t213gdb目录下用index_dic(1:32)=/u/nwp/gdbt213 /dic/index_nfs_dic。2
28、.4 NetCDF函数库的安装2.4.1 文件获取 目前,由于WRF模式的数据处理格式主要是应用较为常见的NetCDF数据格式。因此,在安装WRF模式的标准初始化以及WRF主模式前,必须在操作系统环境中先安装NetCDF程序包,生成NetCDF函数库。在运行的系统环境中,如果没有安装NetCDF函数库,则必须自己安装。NetCDF程序包的下载地址为 /packages/netcdf/ 从网站中,可以获得NetCDF的压缩程序包netcdf.zip或者netcdf.tar.Z。2.4.2 安装环境 不同平台要求也不一样,但必需有25兆的可用空间
29、用来解压、编译和运行测试。由于WRF模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C(或C)编译器。 netCDF将会编译并测试相应的语言接口。2.4.3 指定编译环境 首先要选择并指定一个恰当的编译环境。如果需要,可设置CC,CFLAGS, FC, FFLAGS, CXX, CXXFLAGS, F90和F90FLAGS中任何环境变量,以指明相应的编译环境。环境变量也就是用户外壳程序(shell)管理的参数,并被shell程序用于运行应用程序(例如设置脚本程序)。一些环境变量的说明可参见下表(表1)。表1 编译
30、NetCDF的一些环境变量及其说明变量描述NotesCCC编译器如果未指定,设置脚本程序将试图找出合适的C编译器,如:cc, c89, xlc, or gcc。FCFortran编译器(如果存在)如果未指定,设置脚本程序将试图找出合适的Fortran 90 or Fortran 77 编译器。 如果不需要Fortran接口,则可将FC设置为。 F90Fortran 90编译器(如果存在)如果未指定,设置脚本程序将试图找出合适的Fortran 90 编译器。 如果指定了Fortran 90编译器,则不需要FC参数。如果不需要Fortran 90接口,则可将F90设置为。 CXXC+编译器如果未指
31、定,设置脚本程序将试图找出合适的C+编译器。 不需要C+接口时,可将CXX 设置为 。CFLAGSC编译器参数选项例如 -0 或 -gCPPFLAGSC 预处理参数选项例如-DNDEBUG 是忽略声明部分的检测(assertion)FFLAGSFortran 编译器参数选项例如-O 或 -gF90FLAGSFortran 90 编译器参数选项例如-O 或 -g。如果未指定,则采用FFLAGS的值。CXXFLAGSC+ 编译器标志例如-O 或 -gARFLAGSNMFLAGSFPPM4FLAGSLIBSFLIBS 混合参数选项在一些操作平台中可能用到这些参数中的一个或几个。 值得注意的是,如果不
32、设置环境变量,那么配置脚本程序将会试图找出相应合理的设置值。但在IBM SP机器上,如果用户不设置Fortran90的编译和编译选项,那么配置脚本往往找不到正确的Fortran90编译器和编译选项,从而造成NetCDF函数库中没有Fortran90的程序接口。环境变量也就是用户外壳程序(shell)管理的参数,并被shell程序用于运行应用程序(例如设置脚本程序)。典型的环境变量有:环境变量名变量值USER dengltHOME /home/dengltPATH /bin:/usr/bin:/home/steve/bin 执行命令行命令“env”,可得到当前环境中的环境变量列表。定义和设置环境
33、变量的方式取决于用户所用的外壳(Shell)类型。Csh类shell(如csh、tcsh)用户设置方式如下: setenv CC c89 setenv CPPFLAGS “-0 -DNDEBUG”而标准UNIX shell(例如sh、ksh、bash)用户要设置上面同样的环境变量,可如下设置: export CC=c89 export CPPFLAGS=”-0 -DNDEBUG”以上两种方式中,参数值中带有将值的各部分分开的空格分隔符时,双引号不能省略。否则,参数值只是设置为所要取值得一部分。标准shell用户还有一种额外的快捷方式为单一命令定义和设置环境变量。环境变量可在命令行中定义和设置,
34、并只在这一行中生效。例如: export FOO=foo env | grep FOO FOO=foo FOO=bar env | grep FOO FOO=bar env | grep FOO FOO=foo 测试系统时,环境变量及其赋值可列表式给出。标准UNIX shell用户可直接使用标准语法。例如,标准shell用户可以用(以IBM SP AIX为例): export CC=xlc CPPFLAGS=-DNDEBUG CFLAGS=-O FC=f77 FFLAGS=-O CXX=xlC F90=xlf90 F90FLAGS=-qsuffix=f=f90 在IBM AIX SP环境下,编
35、译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-229 Compilation ended due to lack of space”的错误。通常是由于编译时优化消耗内存太多,以至于超出计算机内存。解决方法之一
36、是用ulimit命令将数据段(data)、堆栈段(stack)以及内存段(memory)设置成足够大或者设置成无限制(unlimited)。另一种解决方法就是,在设置F90编译选项时,不要用“-O”优化选项。另外,如果要用64位模式编译程序,则除了在C和Fortran编译选项中添加“-q64”外,还要设置以下环境变量: ARFLAGS=-X 64 cru NMFLAGS=-X 642.4.4 编译和安装NetCDF 要生成编译netCDF所需的Makefile文件,必须先运行配置脚本程序(configure)。 它存放在netCDF目录的src子目录中。 首先,选择安装的目录。用这个目录作为配
37、置脚本程序参数“prefix”的指定值。程序默认的安装目录(prefix参数值)是“. .”,即将程序包安装在 . . /bin,. ./lib和. ./man,这些目录是相对于netCDF的src/目录。 执行设置脚本格式如下: ./configure -prefix=目录名这里“- - prefix = . . .”是可选的;如果省略的话,程序将默认地将当前目录的父目录“. . ”设为安装目录。 运行配置脚本程序时,程序会检测系统的与编译netCDF程序包相关的属性设置。检测结果将会显示在标准输出设备上(如显示器)。 配置脚本程序还会创建一个记录文件“config.log”。它包含了配置脚
38、本程序检测系统属性设置时发现的错误信息。由于系统检测可能会导致一些错误,因此在记录文件中可能会记录一些错误信息。这些错误信息未必表明是有问题(严重的错误标志会导致下一步编译“make”程序失败)。不过,记录文件中的编译器不能启动的错误信息例外,这是一个编译环境的严重错误,必须改正,否则不会产生相应编译环境的程序接口。 运行编译命令“make”。此命令将创建一个或多个netCDF库。它包括基本的netCDF库“libsrc/libnetcdf.a”。如果系统有Fortran 77或者Fortran 90编译器,那么Fortran接口程序会包含在此库中。如果系统有C编译器,那么C接口程序会创建在库
39、“cxx/libnetcdf_c+.a”中。命令创建的库还包括netCDF应用程序库ncgen和ncdump。 如果第一步的编译通过,则可以用命令“make test (3.5.x或更早版本)”或者“make check” (3.6.2版本) 来检验netCDF库和可执行程序创建得正确与否。系统会建立和运行各种测试C、Fortran和C的程序,以及应用程序“ncdump”和“ncgen”。以“*”开头的输出显示行中,列出了测试成功与否的信息。任何错误都会明确列出,并终止程序的运行。测试过程中的编译器和连接器警告会被忽略掉。 如果编译和测试都正确,这时就可以安装程序库和可执行程序了。安装时,运行
40、命令“make install”即可,它将连接系统的函数库和应用程序,安装到指定的目录中。在进行编译安装的时候,可以编写一个shell脚本程序。这样,在安装的时候,只需执行这个批处理命令就行。这里给出一个在AIX系统上编译安装的例子,比如取名为install.nc:make distclean export CC=/usr/bin/xlc export CPPFLAGS=-DNDEBUG export CFLAGS=-O export FC=/usr/bin/xlf90 export FFLAGS=-O3 -qfixed export F90FLAGS=-O3 -qfree -qsuffix=
41、f=f90 export F90=/usr/bin/xlf90 export CXX=/usr/bin/xlC export CXXFLAGS=-O configure -prefix=/u/wrf_xp/netcdfmake make test ( 或者make check)make install2.4.5 问题处理 (1) 详细阅读本安装文档。 (2) 转到netCDF的顶级目录下的源程序目录SRC。 (3) 执行命令“make distclean”,即使执行失败也不会造成什么错误。 (4) 如果存在“config.cache”文件,则将它删除。 (5) 按上面描述的方法设置相应的环境变
42、量。 (6) 重新执行配置脚本程序。 (7) 执行命令“make”。 (8) 执行命令“make test” 或者 “make check”。 (9) 执行命令“make install”。 值得注意的是,设置和编译系统应该具有较新的“sh”shell、“make”程序以及C和Fortran编译器。在曙光机器上,就存在Fortran90编译器版本比较陈旧,不能编译后缀名为“.F90”的程序,导致运行配置脚本时,无法通过对Fortran90编译器的检测,故不能生成Fortran90程序接口。2.5 WRF模式的安装2.5.1 安装环境编译时,要求系统装有Perl(5.003以上的版本)和make
43、(3.75以上的版本)。由于WRF SI模式的程序采用了C,Fortran77和Fortran90编写,所以也要求操作平台具有FORTRAN77,FORTRAN90和标准C(或C)编译器。SI的数据格式采用了NetCDF的格式,要求系统安装了NetCDF函数库。 因此,在编译WRF代码之前,应检查一下系统有没有安装netCDF。WRF输入/输出(I/O)模块需要使用netCDF的数据格式。如果netCDF安装的目录不是常用的系统目录(如 /usr/local/),则必须指明netCDF函数库以及引用(include/)函数库的路径。如果未安装,则必须先下载安装netCDF。2.5.2 安装程序
44、的获取 WRF模式的安装程序是一个压缩程序包,可从WRF模式网站获得()。1.2版的WRF压缩程序包名称为WRFV1.TAR.gz;2.1.2版的WRF压缩程序包名称为WRFV2.1.2.TAR.gz;2.2版本的WRF压缩程序包名称为WRFV2.2.TAR.gz。 压缩程序包包括两部分,一部分是将输入数据生成WRF模式的输入场(real.exe或ideal.exe);另一部分则是模式的积分计算(wrf.exe)。2.5.3 编译环境配置WRF模式的顶级目录中包含配置脚本文件“configure”(使用标准shell:sh)和一个编译脚本“comp
45、ile”(使用Csh类shell:csh)。配置脚本在配置系统的时候,也用到在arch目录中的Perl脚本(arch/Configure.pl),还用到了UNIX系统的应用程序“make”。在arch子目录中包含了大量不同结构和设置选项的设置模板文件“configure.defaults”。这些配置模板在配置脚本运行时用于在不同的运行平台上创建“configure.wrf”文件。在IBM AIX SP机器上,会启用设置模板文件中的关于AIX的十一个配置模块。这十一个配置模块分别对应着不可嵌套串行编译、不可嵌套OpenMP并行编译、可嵌套带RSL_LITE库MPI方式并行编译、可嵌套带RSL库M
46、PI方式并行编译、带RSL和HDF5库可嵌套MPI方式并行编译、带RSL库可嵌套MPI和OpenMP方式并存的并行编译、带RSL和MCEL库MPI并行编译、带RSL库与ESMF耦合不可嵌套MPI方式编译、不用MPI但带RSL库可嵌套串行编译以及带RSL库可嵌套OpenMP方式并行编译。每一个模块都设置了对应的WRF模式的编译器配置、编译选项、编译规则等。进行WRF的编译环境配置时,进入WRF模式的顶级目录中,键入“./configure”。假设设置脚本可以找到相应版本(5.004或更高版本)的Perl程序,那么设置文件“arch/configure.defaults”中的模板将会被扫描检测,提
47、取相应的配置模块信息,并且会列出一个选择菜单共用户选择:$ configurechecking for perl5. nochecking for perl. found /usr/bin/perl (perl)Will use NETCDF in dir: /usr/local/netcdf-Please select from among the following supported platforms. 1. AIX (single-threaded, no nesting) 2. AIX SM (OpenMP, no nesting) 3. AIX DM-Parallel (RSL_
48、LITE, IBM-MPI, Allows nesting) 4. AIX DM-Parallel (RSL, IBM-MPI, allows nesting) 5. AIX DM-Parallel (RSL, IBM-MPI, allows nesting )(PARALLEL HDF5) 6. AIX DM-Parallel (RSL_LITE, IBM-MPI, Allows nesting )(PARALLEL HDF5) 7. AIX DM-Parallel/SM-Parallel (not recommended) (RSL, IBM-MPI, OpenMP, allows nes
49、ting) 8. AIX DM-Parallel (RSL, IBM-MPI, MCEL) May 2003, EXPERIMENTAL 9. AIX DM-Parallel ESMF (RSL, IBM-MPI, ESMF coupling, no nesting) EXPERIMENTAL 10. AIX (single-threaded, nesting using RSL without MPI) 11. AIX (OpenMP, nesting using RSL without MPI)Enter selection 1-11 :用户输入一个111的整数,然后按回车。如果选择有效,
50、则所作的选择和提示符会显示出来。用户选择结束后,正常运行脚本程序时,会在顶级目录中创建文件“configure.wrf”,并退出程序,回到操作系统。如果在选择时要退出设置脚本程序,用shell的中断命令即可(如按“Control-C”)。配置脚本“configure”会试图在编译主机上查找netCDF函数库以及引用文件。也可通过设置环境变量NETCDF来强制定义到系统中安装netCDF的正确目录。如果没有设置环境变量,而设置脚本也没有找到netCDF,那么程序将会要求用户输入一个路径。如果所有这些尝试都失败的话,程序将尝试以没有netCDF的状态来进行编译;不过,由于当前版本的程序只能用net
51、CDF的输出/输入接口,所以必然会造成程序的运行失败。模式目录中还提供了用于卸载的清除程序clean(Csh类shell脚本)。安装失败时,可以使用这一程序来恢复到最初的状态。当未指定任何参数时,清除程序“clean”将删除src目录中的目标文件(*.o)以及编译时产生的一些中间文件,文件“configure.wrf”会保留。当指定“-a”为“clean”的参数时,则会连同文件“configure”以及一些在“external”目录中的库函数一起删除。所以,用带参数“-a”的清除命令,则会将模式恢复到模式的安装最原始的状态,而文件“configure.wrf”中的一些修改信息都会丢失。(注意,
52、清除程序并不会将run或test子目录中的数据文件或可执行文件删除掉)。在“configure.wrf”创建后,还可以根据需要来修改编译选项。值得注意的是,WRF模式可实时配置计算范围大小,处理器数量,以及其他选项,并且仅需要在运行程序之前通过修改文件“namelist.input”即可。而针对这些选项设置,并没有修改文件“configure.wrf”的必要。只是在编译器、编译选项或者编译规则需要变动时,才有必要对“configure.wrf”文件进行修改。在WRF模式调试运行过程中,发现由于WRF模式采用动态分配数组的方式来分配模式中的数组单元,因此对计算机的逻辑内存、堆栈段内存以及数据段内
53、存开销较大。在IBM SP 上编译时,默认的内存设置可能满足不了模式计算时的内存需求。而“configure.wrf”中没有设置内存编译选项(-bmaxdata, -bmaxstack 和-qmaxmem),这就需要用户对其进行修改。通常将他们的限制值设置的稍微大些比较好。例如,可以将“configure.wrf”的原始设置:FCBASEOPTS = -qarch=auto -qfree=f90 -qzerosize -qnosave -qmaxmem=-1 -qspill=20000 $(FCDEBUG) $(OMP)LDFLAGS = wrfio_nf : ( cd ./external/io_netcdf ; make NETCDFPATH=/u/denglt/netcdf FC=$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -qzerosize -qnosave ; /bin/cp wrf_io_flags.h wrf_status_codes.h ././inc )wrfio_int : (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏海事职业技术学院《茶叶审评与检验实验》2023-2024学年第一学期期末试卷
- 华南理工大学《金蝶云ERP供应链管理》2023-2024学年第一学期期末试卷
- 湖北交通职业技术学院《地质与地貌学》2023-2024学年第一学期期末试卷
- 遵义职业技术学院《工程软件与程序设计》2023-2024学年第一学期期末试卷
- 珠海艺术职业学院《建筑师业务基础与实践》2023-2024学年第一学期期末试卷
- 重庆青年职业技术学院《摄影报道》2023-2024学年第一学期期末试卷
- 浙江同济科技职业学院《舞台表演化妆与发型》2023-2024学年第一学期期末试卷
- 重庆安全技术职业学院《模拟电子技术实验B》2023-2024学年第一学期期末试卷
- 中南财经政法大学《融媒体与节目策划》2023-2024学年第一学期期末试卷
- 郑州亚欧交通职业学院《装配式建筑识图与实务》2023-2024学年第一学期期末试卷
- 中考英语688高频词大纲词频表
- GB/T 2315-2017电力金具标称破坏载荷系列及连接型式尺寸
- 标准工时基础知识及应用 课件
- 咽旁间隙肿瘤课件
- (完整版)中职数学习题及答案
- 高中语文 苏轼导读 课件
- 府谷县恒阳阳建材有限公司-15万立方米-年混凝土搅拌站项目报告书
- 水中钢管桩施工方案
- 上交所期权投资者综合试卷考试及答案
- 超市日常工作检查表
- 电缆热稳定校验计算书
评论
0/150
提交评论