当前位置:首页 >> 能源/化工 >>

WRF模式运行指南


WRF 模式运行指南
(2007.8.24~2007.8.30)

国家气象中心数值预报室
(内部资料 请勿扩散)

二○○七年八月二十四日

目录
1. WRF 模式简介 ……………………………………………………..1 2. WRF 模式的安装 ……………..……………………………………..2 2.1 安装环境 ………………….……………………………………..2 2.2 模式源程序…………………...…………………………………..2 2.3 NetCDF 函数库的安装……………………………………………2 2.4 WRF 模式的安装…………………………………………………6 2.5 资料前处理系统(WPS)的安装……………….….…………..…9 3. WRF 模式与 T213 模式连接…………………………….…………...17 3.1 连接方案 ……………………………………………………….17 3.2 连接程序设计 ………………………………………………….17 3.3 编译连接程序 …………………………………………………..21 3.4 连接的实现 …………………………………………………….22 4. WRF 模式系统的运行……………...………………………………..29 4.1 理想大气方案………………………………………………..….29 4.2 真实大气方案 ………………………………………………….32 5. WRF 模式系统作业卡……………...………………………………..47 5.1 源程序………………………………………………………..….47 5.2 真实大气方案 ………………………………………………….48 6. 模式结果的显示处理 ……………………………….……………..61 6.1 Vis5D 格式 ……….…………………….………………………..61 6.2 MICAPS 格式……………………………….……………………62 6.2 GrADS 格式 ……….…………………….……………………...65 附录 1. WRF 模式参数配置说明 …………………….……………….68 附录 2. T213 场库参数表 ……………………………………………..78

1

WRF 模式系统安装/调试技术报告
数值预报室 邓莲堂
1. WRF 模式简介 WRF(Weather Research Forecast)模式系统是由许多美国研究部门及大学的 科学家共同参与进行开发研究的新一代中尺度预报模式和同化系统。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 版。

2

2.WRF 模式的安装 2.1 硬件环境 WRF 模式是一个多机型、跨平台、标准化的模式。可以在 IBM AIX,SGI IRIX,PC LINUX 等机型上运行。 2.2 软件环境 WRF 模式的运行系统中的一般需要的安装软件环境包括: UNIX(LINUX)操作系统 Perl5.003 以上 Fortran 程序编辑器(包括 Fortran90 和 Fortran77 编译器) C 程序编译器 NetCDF 函数库,版本在 3.3.1 以上(必须包含 Fortran77,Fortran90 以及 C 的程序调用接口) MICAPS 图形显示系统、VIS5D 图形显示系统、GrADS 或者 RIP 等 2.2.1 UNIX 环境 计算机系统是有计算机硬件和软件构成。操作系统是系统软件的核心,它控 制程序的执行和提供资源分配、 调度、 输入/输出控制和数据管理服务。 IX 系 UN 统是一种多用户多任务的分时的操作系统, 由于其安全可靠、开放性和可移植性 良好等优点, 迅速成为小型机和工作站上普遍使用的一种主流操作系统。 UNIX 系统大致分为三层:最里层是 UNIX 内核,即 UNIX 操作系统常驻内 存部分,它直接附着在硬件上;中间层是 shell,即命令解释程序,这是用户与 系统和核心的接口;最外层是应用层,它包含众多的应用软件、实用程序和除 UNIX 操作系统之外的其他系统软件。 在 UNIX 操作系统中, 通常提供三种不同的 shell, Bourne shell 简称 sh) 即 ( 、 C-shell(简称 csh)和 Korn shell(检查 ksh) 。Bourne shell 是 AT&T Bell 试验室 的 Slephen Bourne 为 AT&T 的 UNIX 开发的,它室其它 shell 的开发基础,也是 各种 UNIX 系统上最常用、 最基本的 shell。 C-shell 是加州伯克利大学的 Bill Joy 为 BSD UNIX 开发的, 它与 sh 不同, 主要是模拟 C 语言。 Korn shell 是 AT&T Bell 实验室的 David Korn 开发的,它与 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 系统自从诞生到现在已有三十多年的历史了,产生了很种版本,如 IBM 公司的 AIX、DEC 公司的 Ultrix、Sun Microsystems 公司的 SunOS/solaris 等。值得一提的是自由软件 Linux 近十年来得到迅速的发展。Linux 系统是遵循 UNIX 相同的同一标准的操作系统,它不仅可以在 Intel、AMD 及 Cyrix 系列个 人机上,还可以用在许多工作站上。它继承了 UNIX 系统的主要特征,使中尺度 数值模式在个人微机上运行成为可能。
3

为了是数值模式本身的维护和发展, 大多数数值模式开发是都尽量保持程序 的可移植性,使模式可以运行在多种版本的 UNIX 操作系统上。例如,新一代中 尺度天气模式 ARW 就可以运行在多种 UNIX 系统平台上,具体包括:
开发商 Cray HP/Compaq HP/Compaq HP/Compaq IBM SGI SGI Sun COTS* COTS Mac 硬件平台 X1 alpha IA64 (Intel) IA64 Power Series IA64 MIPS UltraSPARC IA32/AMD32 IA64/Opteron G5 操作系统 UniCOS Tru64 Linux HPUX AIX Linux Irix SunOS Linux Linux Darwin 编译器 vendor vendor vendor vendor xlf Intel vendor vendor Intel / PGI Intel / PGI xlf

PERL 环境 Perl 是 Practical Extraction and Report Language 的缩写,是由 Larrt Wall 融 合了 awk/sed/cut/grep 等 unix 上常见的工具与 C language 的语法所创造的一种 language。Perl 是一种解译式的语言,在速度上并没有 C 这类编译式的语言来 得快,不过 Perl 在执行时事实上是先将原始档实时编译后再执行,所以速度其 实并不慢。 Perl 极为适合处理用来处理一些用 C 处理并不方便,用 shell 处理又嫌太 复杂的工作. Perl 强大的文字处理能力,使得它极为适合作为 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 模式,经常用 perl 来初始化模式运行的参数环境,以 及运行一些程序。 2.2.2 2.2.3 MPI 并行环境 MPI 是一种消息传递编程模型, 目的是实现进程间的通信。MPI 不是一门 语言, 而是一个运行库, 可以由 Fortran77/Fortran90/C/C++语言调用, 在语法上, 他完全以库的形式呈现, 因此很好地融入了宿主语言中。 MPI 已经在很多科研领 域被广泛地使用。作为一种消息传递式的并行编程环境, MPI 并行程序要求将任 务分块, 同时启动多个进程并发执行, 各进程之间通过调用 MPI 的库函数实现 消息传递。 由于其消息传递并行编程模型的特点, MPI 程序的各个参与计算的进程可 以被容易的分布在不同的计算节点上, 这使得 MPI 程序具有很强的可扩展性。 为 了支持异构环境编程, MPI 定义了一些数据类型, 使得进程之间可以跨平台交
4

互。这些数据类型与语种中的数据类型对应, 但是又中立于语言。 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.4 Open MP 并行环境 在常用的并行方法中, MPI 要求程序员将数据结构按不同的处理区分开, 并 且不支持增量并行,因而 MPI 编程较为困难。OpenMP 是由 OpenMP 标准委员 会( OpenMPARB , OpenMP Architecture Review Board) 于 1997 年 10 月推出的 支持共享存储并行编程的工业标准。 OpenMP 标准通过定义编译制导、 库例程和 环境变量规范的方法,为程序员提供了支持 Fortran 和 C/ C + +语言的一组功能强 大的高层并行结构,而且支持增量并行。OpenMP[2 ]是共享存储体系结构的并行 编程标准,其特点是易于编程且支持增量并行,但是不易扩展. OpenMP 应用于共享内存的并行计算平台,它是一组编译指导语句和可调用 运行时库函数的集合,可被直接嵌入源程序而无需作较大的修改,编程简单,适合 将现有的程序并行化。 OpenMP 是一组编译指导语句、一组库函数和环境变量的集合,能用来表示 共享内存并行,可支持粗、细粒度的并行。它包括 3 部分:控制结构、数据环境 和同步机制。 另外还包括了一个可调用运行时库及相应的环境变量。下面看一个 简单的例子,了解一下 OpenMP 具体是如何工作的。
program main integer 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) enddo c$omp end parallel do print *, ?1+2+3+ … + 99+100=?,sum stop end

上面的程序中以 c$omp 开头的语句即为并行指导语句,一般串行编译时,
5

被识别为注释语句。程序首先以一个进程开始,当我们第一次遇到 PARALLEL 语句时,则产生一个或多个进程,同时对应于每一个进程的数据环境也被产生。 每一个进程的数据环境包括一个私有变量 i 和一个归约变量 sum,在并行区中对 i 和 sum 的引用都是私有的。而归约变量意味着在并行区结束时,将各个进程的 sum 变量以操作符+归约到主进程的 sum 变量中。 在程序的执行过程中, 处理器 负责将任务分配到不同的进程, 编程者不需要知道到底能用多少各处理器。从上 面的例子可以看到,用 OpenMP 实现并行,简单易行,基本上不必对原来的串 行程序做额外的改动。 在应用 OpenMP 并行程序时,应用程序员往往缺乏对程序并行性的分析(如 数据相关性分析和通信分析等),许多 OpenMP 程序的性能也并不理想,并行效 率较低; 另一方面, 如果要求程序员在编写并行程序时进行深入的程序分析就会 增加程序设计的难度,违背 OpenMP 的易用性原则,也是不现实的。因此,有 时可以考虑在编译过程中实现 OpenMP 程序的优化。 (张平,2006 OpenMP 并 行程序的编译器优化) 2.3 数据接口 2.3.1 NETCDF 格式 近年来,越来越多的气象模式输入输出格式采用了 NetCDF 格式,如 WRF 模式, GRAPES 模式等。 在科研中比较常用的 NCEP 再分析资料也是采用 NetCDF 格式。所谓 NetCDF(Network Common Data Form)就是在美国国家自然科学基 金为资助的计划——Unidata 下开发的一套软件。NetCDF 的软件本质是一个 I/O 函数库, 现在 NetCDF 已经可以应用在从微型机到超级计算机的各种计算机平台 上。它提供了 C、Fortran77、Fortran90、Java、C++、Perl 等语言的调用接口。 利用 NetCDF 函数库,可以存储和检索具有自描述性,且不依赖于计算机的数据 集。 每个 NetCDF 数据集里可以包含多维的变量, 每个变量都可以有辅助性数据, 例如变量的单位、数据类型等。它的优点首先在于资料是自描述的,即在数据集 中包含了描述这个数据集内部数据的信息;其次,NetCDF 数据集的数据可以直 接存取,可以省去很多不必要的读取时间;另外,NetCDF 数据集的文件格式可 以跨平台读取,数据不依赖于机器,例如在 UNIX 平台上用 C 创建的数据可以 在另一台 Linux 系统的计算机上用 Fortran 语言来读取,中间不需要任何转换。 2.3.2 GRIB 码(GRIB1 和 GRIB2) 随着气象科学的不断发展,庞大的气象数据不但对计算机提出更高的要求, 而且国际间的数据交换也要求能形成一种有效的、统一的、标准的数据存储和流 通格式。 因此, 世界气象组织 (WMO) 1984 年首先推荐并定义了 GRIB 在 (GRIdded Binary)码数据格式。GRIB 码就是一种基于“位”的,与计算机无关的压缩的 网格二进制编码数据格式, 适用于表示各种数值天气预报的分析和预报的格点场 产品。GRIB 通过把各种相关数据信息大包压缩,是信息的组织方式比起基于字 符的形式要紧凑得多,因此有利于资料得存储和加快计算机之间得传输速度。 现行的 GRIB 码版本有 GRIB1 和 GRIB2 两种格式。GRIB 是在 1990 年 WMO 确定得数据结构相对稳定的 GRIB 数据格式。GRIB 的优点主要表现为: 1. 数据是二进制格式,与计算机无关;2. 数据压缩效率高;3. 数据具有完整的 描述信息,数据表示能力强。GRIB1 码格式也逐渐显示出了它的不足:1. 缺乏 对谱数据的支持和对图象数据的有限支持;2. 不能对一些集合预报等新产品进
6

行处理;3. 只能定义一个产品模版和网格描述模版。 GRIB2 是对 GRIB1 的功能扩充版,弥补了 GRIB 的大部分不足:1. GRIB2 码能够表达多个网格场数据, 也能描述在时间和空间方面的多维网格数据; 提 2. 供更多的描述模版, 可以表达集合预报系统产品等一些新的产品数据,并维扩展 和增加新产品提供方便的途径;3. 数据压缩方式更多,并包含了 JPEG2000 和 PNG 等图象压缩方式; GRIB2 码有些数据可以采用了 IEEE 标准浮点表示方法。 4. 在了解了 GRIB1 码和 GRIB2 码资料的结构后,即编写解码程序进行解码工 作。一般来说,如果数值模式产品包含了 GRIB1 码或 GRIB2 码格式的数据,则 模式的源代码中必然有 GRIB1 码或者 GRIB2 码的压/解码程序。 2.3.3 T213 场库 T213 场库是国家气象中心新一代数值预报业务系统的重要组成部分之一。 在实时业务运行中, 格点场库系统存储和管理数值预报的客观分析、模式预报后 处理所产生的结果数据,以场(即一层资料)为单位,经过处理和压缩,按照一 定的要求分门别类地保存,供绘图、检验、归档、远程网产品等实时预报业务和 科研使用。 IBM SP 机器中 T213 场库的水平分辨率为 0.5625*0.5625(度) 。目前,由于 T213 场库资料的检索已经模块化, 用户根据检索时, 可直接调用通用场库 (T213) 检索接口程序“gdbrck” 。调用通用场库接口程序时,用户只必须设置好程序的 各个接口参数。具体各接口参数说明如下:
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), 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 个字节。因此,在程序的声明部分注意场库调用参数的存储长度;或者在 编译程序的时候,选用 64 位编译方式编译。当然,也可以在编译的时候,用编 译选项 -qintsize=8 和 -qrealsize=8 两个选项来进行编译。 index_dic 是模式字典文件全名,在调用前必须指定。在 IBM SP 上,场库在 SP:/gpfs/fs2/nwp/gdbt213 目录下用 index_dic(1:28)='/u/nwp/gdbt213/dic/index_dic';
7

在场库在盘阵库/asm2/nwpgdb/t213gdb 目录下用 index_dic(1:32)='/u/nwp/gdbt213 /dic/index_nfs_dic?。 2.4 NetCDF 函数库的安装 2.4.1 文件获取 目前,由于 WRF 模式的数据处理格式主要是应用较为常见的 NetCDF 数据 格式。因此,在安装 WRF 模式的标准初始化以及 WRF 主模式前,必须在操作 系统环境中先安装 NetCDF 程序包, 生成 NetCDF 函数库。 在运行的系统环境中, 如果没有安装 NetCDF 函数库,则必须自己安装。NetCDF 程序包的下载地址为 http://www.unidata.ucar.edu/packages/netcdf/ 从网站中,可以获得 NetCDF 的压缩程序包 netcdf.zip 或者 netcdf.tar.Z。 2.4.2 安装环境 不同平台要求也不一样,但必需有 25 兆的可用空间用来解压、编译和运行 测试。由于 WRF 模式的程序采用了 C,Fortran77 和 Fortran90 编写,所以也要 求操作平台具有 FORTRAN77,FORTRAN90 和标准 C(或 C++)编译器。 netCDF 将会编译并测试相应的语言接口。 2.4.3 指定编译环境 首先要选择并指定一个恰当的编译环境。如果需要,可设置 CC,CFLAGS, FC, FFLAGS, CXX, CXXFLAGS, F90 和 F90FLAGS 中任何环境变量, 以指明相应的编译环境。环境变量也就是用户外壳程序(shell)管理的参数,并 被 shell 程序用于运行应用程序(例如设置脚本程序) 。一些环境变量的说明可参 见下表(表 1) 。

表 1 编译 NetCDF 的一些环境变量及其说明
变量
CC

描述
C 编译器

Notes 如果未指定,设置脚本程序将试图找出合适的 C 编译器,如: cc, c89, xlc, or gcc。

FC

Fortran 编译 如果未指定,设置脚本程序将试图找出合适的 Fortran 90 or 器 Fortran 77 编译器。 如果不需要 Fortran 接口,则可将 FC 设 (如果存在) 置为""。 Fortran 90 编 如果未指定, 设置脚本程序将试图找出合适的 Fortran 90 编译 译器 器。 如果指定了 Fortran 90 编译器,则不需要 FC 参数。如果 (如果存在) 不需要 Fortran 90 接口,则可将 F90 设置为""。 C++编译器 如果未指定, 设置脚本程序将试图找出合适的 C++编译器。 不 需要 C++接口时,可将 CXX 设置为 ""。

F90

CXX

CFLAGS

C 编译器参 例如 "-0" 或 "-g" 数选项

8

CPPFLAGS

C 预处理参 例如"-DNDEBUG" 是忽略声明部分的检测(assertion) 数选项 Fortran 编译 例如"-O" 或 "-g" 器参数选项 Fortran 90 编 译 器 参 数 例如"-O" 或 "-g"。如果未指定,则采用 FFLAGS 的值。 选项 C++ 编 译 器 例如"-O" 或 "-g" 标志

FFLAGS

F90FLAGS

CXXFLAGS ARFLAGS NMFLAGS FPP M4FLAGS LIBS FLIBS

混合参数选 在一些操作平台中可能用到这些参数中的一个或几个。 项

值得注意的是, 如果不设置环境变量,那么配置脚本程序将会试图找出相应 合理的设置值。但在 IBM SP 机器上,如果用户不设置 Fortran90 的编译和编译 选项,那么配置脚本往往找不到正确的 Fortran90 编译器和编译选项,从而造成 NetCDF 函数库中没有 Fortran90 的程序接口。 环境变量也就是用户外壳程序(shell)管理的参数,并被 shell 程序用于运行应 用程序(例如设置脚本程序) 。典型的环境变量有: 环境变量名 USER HOME PATH 变量值 denglt /home/denglt /bin:/usr/bin:/home/steve/bin

执行命令行命令“env” ,可得到当前环境中的环境变量列表。 定义和设置环境变量的方式取决于用户所用的外壳(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 用户还有一种额外的快捷方式为单一命令定义和设置环境变量。环境 变量可在命令行中定义和设置,并只在这一行中生效。例如:
9

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 环境下, 编译 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”的错误。通常是由 于编译时优化消耗内存太多,以至于超出计算机内存。解决方法之一是用 ulimit 命令将数据段(data) 、堆栈段(stack)以及内存段(memory)设置成足够大或 者设置成无限制(unlimited) 。另一种解决方法就是,在设置 F90 编译选项时, 不要用 “-O” 优化选项。 另外, 如果要用 64 位模式编译程序, 则除了在 C 和 Fortran 编译选项中添加“-q64”外,还要设置以下环境变量: ARFLAGS='-X 64 cru' NMFLAGS='-X 64' 编译和安装 NetCDF 要生成编译 netCDF 所需的 Makefile 文件,必须先运行配置脚本程序 (configure)。 它存放在 netCDF 目录的 src 子目录中。 首先,选择安装的目录。用这个目录作为配置脚本程序参数“――prefix=” 的指定值。程序默认的安装目录(prefix 参数值)是“. .” ,即将程序包安装在 . . /bin,. ./lib 和. ./man,这些目录是相对于 netCDF 的 src/目录。 执行设置脚本格式如下: ./configure --prefix=目录名 这里“- - prefix = . . .”是可选的;如果省略的话,程序将默认地将当前目录的父 目录“. . ”设为安装目录。 运行配置脚本程序时,程序会检测系统的与编译 netCDF 程序包相关的属性 设置。检测结果将会显示在标准输出设备上(如显示器) 。 配置脚本程序还会创建一个记录文件“config.log” 。它包含了配置脚本程序 2.4.4
10

检测系统属性设置时发现的错误信息。由于系统检测可能会导致一些错误,因此 在记录文件中可能会记录一些错误信息。这些错误信息未必表明是有问题(严重 的错误标志会导致下一步编译“make”程序失败) 。不过,记录文件中的编译器 不能启动的错误信息例外,这是一个编译环境的严重错误,必须改正,否则不会 产生相应编译环境的程序接口。 运行编译命令“make” 。此命令将创建一个或多个 netCDF 库。它包括基本 的 netCDF 库“libsrc/libnetcdf.a” 。如果系统有 Fortran 77 或者 Fortran 90 编译器, 那么 Fortran 接口程序会包含在此库中。如果系统有 C++编译器,那么 C++ 接口程序会创建在库“cxx/libnetcdf_c++.a”中。命令创建的库还包括 netCDF 应 用程序库 ncgen 和 ncdump。 如果第一步的编译通过,则可以用命令“make test (3.5.x 或更早版本)”或者 “make check” (3.6.2 版本) 来检验 netCDF 库和可执行程序创建得正确与否。 系统会建立和运行各种测试 C、 Fortran 和 C++的程序, 以及应用程序 “ncdump” 和“ncgen” 。以“***”开头的输出显示行中,列出了测试成功与否的信息。任 何错误都会明确列出, 并终止程序的运行。测试过程中的编译器和连接器警告会 被忽略掉。 如果编译和测试都正确,这时就可以安装程序库和可执行程序了。安装时, 运行命令“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=f=f90' export F90='/usr/bin/xlf90 ' export CXX='/usr/bin/xlC' export CXXFLAGS=-O configure --prefix=/u/wrf_xp/netcdf make make test ( 或者 make check) make install 2.4.5 (1) (2) (3) (4) (5) 问题处理 详细阅读本安装文档。 转到 netCDF 的顶级目录下的源程序目录 SRC。 执行命令“make distclean” ,即使执行失败也不会造成什么错误。 如果存在“config.cache”文件,则将它删除。 按上面描述的方法设置相应的环境变量。
11

(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 ( 和 (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 安装程序的获取 WRF 模 式 的 安 装 程 序 是 一 个 压 缩 程 序 包 , 可 从 WRF 模 式 网 站 获 得 (http://www.wrf-model.org) 。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) 和一个编译脚本“compile” (使用 Csh 类 shell:csh) 。配置脚本在配置系统的时 候,也用到在 arch 目录中的 Perl 脚本(arch/Configure.pl) ,还用到了 UNIX 系统 的应用程序“make” 。在 arch 子目录中包含了大量不同结构和设置选项的设置模 板文件“configure.defaults” 。这些配置模板在配置脚本运行时用于在不同的运行 平台上创建“configure.wrf”文件。在 IBM AIX SP 机器上,会启用设置模板文 件中的关于 AIX 的十一个配置模块。这十一个配置模块分别对应着不可嵌套串 行编译、不可嵌套 OpenMP 并行编译、可嵌套带 RSL_LITE 库 MPI 方式并行编 译、可嵌套带 RSL 库 MPI 方式并行编译、带 RSL 和 HDF5 库可嵌套 MPI 方式 并行编译、带 RSL 库可嵌套 MPI 和 OpenMP 方式并存的并行编译、带 RSL 和 MCEL 库 MPI 并行编译、 RSL 库与 ESMF 耦合不可嵌套 MPI 方式编译、 带 不用 MPI 但带 RSL 库可嵌套串行编译以及带 RSL 库可嵌套 OpenMP 方式并行编译。 每一个模块都设置了对应的 WRF 模式的编译器配置、编译选项、编译规则等。 进行 WRF 的编译环境配置时,进入 WRF 模式的顶级目录中,键入
12

“./configure” 。假设设置脚本可以找到相应版本(5.004 或更高版本)的 Perl 程 序,那么设置文件“arch/configure.defaults”中的模板将会被扫描检测,提取相 应的配置模块信息,并且会列出一个选择菜单共用户选择: $ configure checking for perl5... no checking for perl... found /usr/bin/perl (perl) Will use NETCDF in dir: /usr/local/netcdf -----------------------------------------------------------------------Please select from among the following supported platforms.
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. AIX AIX SM AIX DM-Parallel AIX DM-Parallel AIX DM-Parallel AIX DM-Parallel (single-threaded, no nesting) (OpenMP, no nesting) (RSL_LITE, IBM-MPI, Allows nesting) (RSL, IBM-MPI, allows nesting) (RSL, IBM-MPI, allows nesting )(PARALLEL HDF5) (RSL_LITE, IBM-MPI, Allows nesting )(PARALLEL HDF5) (RSL, IBM-MPI, OpenMP, allows nesting) May 2003, EXPERIMENTAL

AIX DM-Parallel/SM-Parallel (not recommended) AIX DM-Parallel AIX DM-Parallel ESMF AIX AIX

(RSL, IBM-MPI, MCEL)

(RSL, IBM-MPI, ESMF coupling, no nesting) EXPERIMENTAL (single-threaded, nesting using RSL without MPI) (OpenMP, nesting using RSL without MPI)

Enter selection [1-11] : 用户输入一个 1~11 的整数,然后按回车。如果选择有效,则所作的选择和 提示符会显示出来。用户选择结束后,正常运行脚本程序时,会在顶级目录中创 建文件“configure.wrf” ,并退出程序,回到操作系统。如果在选择时要退出设置 脚本程序,用 shell 的中断命令即可(如按“Control-C”。 ) 配置脚本“configure”会试图在编译主机上查找 netCDF 函数库以及引用文 件。 也可通过设置环境变量 NETCDF 来强制定义到系统中安装 netCDF 的正确目 录。如果没有设置环境变量,而设置脚本也没有找到 netCDF,那么程序将会要 求用户输入一个路径。 如果所有这些尝试都失败的话, 程序将尝试以没有 netCDF 的状态来进行编译; 不过, 由于当前版本的程序只能用 netCDF 的输出/输入接口, 所以必然会造成程序的运行失败。 模式目录中还提供了用于卸载的清除程序 clean (Csh 类 shell 脚本) 安装失 。 败时,可以使用这一程序来恢复到最初的状态。当未指定任何参数时,清除程序 “clean”将删除 src 目录中的目标文件(*.o)以及编译时产生的一些中间文件, 文件“configure.wrf”会保留。当指定“-a”为“clean”的参数时,则会连同文 件“configure”以及一些在“external”目录中的库函数一起删除。所以,用带 参数“-a”的清除命令,则会将模式恢复到模式的安装最原始的状态,而文件 “configure.wrf”中的一些修改信息都会丢失。 (注意,清除程序并不会将 run 或 test 子目录中的数据文件或可执行文件删除掉) 。 在“configure.wrf”创建后,还可以根据需要来修改编译选项。值得注意的 是,WRF 模式可实时配置计算范围大小,处理器数量,以及其他选项,并且仅 需要在运行程序之前通过修改文件“namelist.input”即可。而针对这些选项设置,
13

并没有修改文件“configure.wrf”的必要。只是在编译器、编译选项或者编译规 则需要变动时,才有必要对“configure.wrf”文件进行修改。 在 WRF 模式调试运行过程中,发现由于 WRF 模式采用动态分配数组的方 式来分配模式中的数组单元, 因此对计算机的逻辑内存、堆栈段内存以及数据段 内存开销较大。在 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 : ( cd ../external/io_int ; \ make CC=$(CC) FC="$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -qzerosize -qnosave" all diffwrf ) 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 -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qzerosize -qnosave -qmaxmem=-1 -qspill=20000 $(FCDEBUG) $(OMP) LDFLAGS = -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qmaxmem=-1 wrfio_nf : ( cd ../external/io_netcdf ; make NETCDFPATH=/u/denglt/netcdf FC="$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qmaxmem=-1 -qzerosize -qnosave" ; /bin/cp wrf_io_flags.h wrf_status_codes.h ../../inc ) wrfio_int : ( cd ../external/io_int ; \ make CC=$(CC) FC="$(SFC) $(FCDEBUG) -qarch=auto -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x10000000 -qmaxmem=-1 -qzerosize -qnosave" all diffwrf ) solve_interface.o : solve_interface.F
14

$(RM) $@ $(CPP) -I../inc $(CPPFLAGS) $*.F > $*.f $(FC) -c -qfree=f90 -bmaxdata:0x80000000 -bmaxstack:0x80000000 -qmaxmem=-1 -qspillsize=32767 -I. $(MODULE_DIRS) $*.f 由于以上的修改,在运行清除程序 clean 后会被自动删除掉,造成修改信息 丢失。有鉴于此,用户除了修改 configure.wrf 外,还可以直接修改 arch 子目录 中的 configure.defaults 文件。找到 configure.defaults 文件中与 AIX 相关的十一个 配置模块,按在 configure.wrf 中的修改方法一样修改。这样做好修改后,以后的 每次清除编译环境重新配置编译环境时,都不会丢失修改好的信息。 在编译 1.3 版时,发现有些程序在选用“优化”编译时,往往会编译很慢, 甚至会由于优化消耗内存,造成内存不足后而导致编译失败。因此,一种解决方 法是可以在编译选项中去掉优化选项 “-O2” 另一种解决方法就是将优化编译时 ; 耗时很长或者耗内存很大的程序加入到优化的编译规则中。这一修改,也可以在 arch 子目录中的 configure.defaults 中进行。在 IBM SP2 机器上,要添加的的目标 文件有: module_io_mm5.o module_si_io.o module_io_wrf.o module_domain.o\ module_start.o module_initialize.o module_initialize_b_wave.o \ module_initialize_hill2d_x.o module_initialize_quarter_ss.o \ module_initialize_squall2d_x.o module_initialize_squall2d_y.o \ module_initialize_real.o module_dm.o start_domain.o \ mediation_force_domain.o mediation_interp_domain.o \ mediation_feedback_domain.o solve_interface.o 当 configure.wrf 文件中的 ARCHFLAG 标志参数包含-DDM_PARALLEL 参 数值, 并且连接好相应的消息传递库函数时, 可用分布式内存并行机制进行编译。 目前连接库只有一种可供选择:external/RSL/RSL/librsl.a。此时,其他一些必须 设置生效的参数值包括:-DWRF_RSL_IO 和_DRSL。CFLAGS 参数必须取有 -DWRF_RSL_IO , -DMAXDOM_MAKE = $(MAX_DOMAINS) , DMAXPROC_MAKE= $(MAX_PROC ), DMAXPROC_MAKE = $(MAX_PROC), -I../external/RSL/RSL。在设置文件 arch/configure.defaults 的用于设置分布式内存 并行编译的模板中包含了上面这些参数值。 而在 configure.wrf 文件中设置相应的 编译标志参数时, 就可以用共享式内存并行机制来进行编译。内存共享式并行机 制采用 OpenMP 线程形式。 2.5.4 编译代码 在配置完编译环境变量之后,就可以输入编译命令“compile”进行程序代 码编译了。首先,输入“compile” ,则会出现以下帮助选项: Usage: compile wrf compile wrf in run dir test cases (see README_test_cases): compile em_b_wave (欧拉质量坐标斜压波方案) compile em_grav2d_x (欧拉质量坐标重力波方案) compile em_hill2d_x (欧拉质量坐标二维钟形山体方案)
15

compile em_quarter_ss compile em_real compile em_squall2d_x compile em_squall2d_y compile exp_real compile nmm_real compile -h

(欧拉质量坐标三维超级单体云体方案) (欧拉质量坐标真实大气方案) (欧拉质量坐标 x-z 平面二维飚线方案 ) (欧拉质量坐标 y-z 平面二维飚线方案 ) (真实大气试验方案 ) (欧拉高度坐标真实大气方案 ) (帮助信息)

上面的帮助信息里,列出了目前 WRF 模式中可以编译运行的方案选择。其 中 em 表示 “欧拉质量坐标” 模式动力框架。 当模式从一个方案转到其他方案时, 必须重新编译。重新编译后,wrf.exe 不变,但初始化程序(比如 real.exe 和 ideal.exe)会有所不同。除了“nmm_real”和“em_real”两个编译方案是真实大 气方案外,其他方案都是用理想数据进行大气模拟试验的方案。 编译时,输入带参数的编译命令“compile” ,命令格式为: $compile case_name 比如说要编译质量动力框架下的二维飚线方案时,则可键入命令: $compile em_squall2d_x 然后,编译程序启用注册机制:在“tools/directory”目录中的 c 程序会根据 文件 Registry/Registry 中的列表内容创建文件,放在 inc 目录中。然后,编译程 序会编译一些源程序目录中的源代码, 产生目标文件 “.o” 以及一些中间文件 (如 “ .f ”)。 注 意 , 其 中 目 录 “ frame/ ” 中 的 一 个 源 代 码 文 件 ( “frame/module_state_description.F” )不是随模型源程序一起发布的,而是在编 译时由注册机制自动创建的。如果想要在下一次编译时强制重新运行注册机制, 则将文件“frame/module_state_description.F”移除掉即可。 成功编译后,会产生两个可执行文件“ideal.exe”和“wrf.exe”,放置目录为 “main/” ,并且在目录“test/em_squall2d_x”中有他们的连接文件。对于每一个不 同理想大气试验方案,ideal.exe 都会不同,这是因为它们建立方案时是编译了不 同的模块 “module_initialize” 如果用户想修改试验方案, 。 则需对目录 “dyn_em/” 或者“dyn_eh/”中的“module_initialize”进行修改。可以改变它们的初始状态, 比如边界环境、热力湍流(thermal bubble) 、模式层数以及地形等。如果模式动 力框架不同,那么“ideal.exe”也会不同。 当编译失败或者要重新编译时,可用模式提供的清除命令 clean 来进行。当 未指定任何参数时,清除程序“clean”将删除源程序目录中的目标文件(*.o) 以及编译时产生的一些中间文件,文件“configure.wrf”会保留。当指定“-a” 为“clean”的参数时,则会连同文件“configure”以及一些在“external”目录 中的库函数一起删除。所以,用带参数“-a”的清除命令,则会将模式恢复到模 式的安装最原始的状态,而文件“configure.wrf”中的一些修改信息都会丢失。 (注意,清除程序并不会将 run 或 test 子目录中的数据文件或可执行文件删除 掉) 。 对发布的原始代码或运行了清除程序“clean -a”后的代码进行第一次编译 时,编译程序会在“external”目录中创建一些库函数。 另外,编译错误时显示的行号是中间文件“.f”的对应行号,但不一定都是 源程序目录中的“.F”文件的对应行号。这可能会给查找错误所在地位置带来一 些麻烦。
16

F90 编 译 器 允 许 在 向 外 部 子 程 序 传 递 实 参 时 , 产 生 f90 型 伪 形 (assumed-shape)数组的副本。一些 F90 编译器即使整个数组(无需分割成子 集)被作为实参传递时也会产生这种副本。这样的话,产生副本是非常浪费内存 的。 -DDEREF_KLUDGE 指示注册机制在构建调用子程序的实参列表时创建一个 额外标志信息, 从而使编译器认为仅仅是传递数组的第一个元素,避免了创建副 本。 2.7 资料前处理系统(WPS)的安装 2.6.1 文件和资料的获取 资料前处理系统是 WRF 模式的数据前处理部分,是为 WRF 模式提供初/边 值的部分。WPS 主要的具有两大功能: (1) 模式区域的定义和创建 在这里,用户可以定义计算区域(投影参数,范围大小,区域位置等) 。 根据这些定义设置,SI 的“gridgen_model.exe”程序会产生一个名为“static” 的文件。它是 NetCDF 格式的文件,包含模式格点定义信息和一些静态数据 场(如地形、土地利用、土壤类型、月叶面积指数、经度和纬度等) 。 (2) 将数据插值到 WRF 模式的计算格点 (只包括水平方向, 垂直方向插值在 real 程序部分实现)上,为 WRF 模式提供初始场和边界条件场。 这项功能是由“geo_grid.exe”和“met_grid.exe”程序来完成。另外, “ un_grib.exe ” 程 序 是 将 标 准 的 GRIB 码 格 式 的 数 据 文 件 转 换 成 “met_grid.exe”程序能识别的格式。也可以不用“un_grib.exe”程序,而是 直接将其他数据格式的数据写成“met_grid.exe”所能识别的格式即可。 安装之前,首先需从 WRF 模式的提供网站(http://www.wrf-model.org)下 载资料前处理系统(WPS)的压缩程序包 WPSV2.2.TAR.gz、AVN 模式的试验数 据 avn_data.tar.gz 以及模式所需的静态数据(如地形、土地利用类型、土壤温度 等) : WPSV2.2.TAR.gz avn_data.tar.gz geo.tar.gz 或者 geo_10m.tar.gz 解压 geo.tar.gz 这些文件后,应该得到以下目录: albedo_ncep/ greenfrac/ islope/ landuse_10m/ landuse_5m/ landuse_2m landuse_30s/ maxsnowlab soiltemp_1deg/ soiltype_bot_10m/ soiltype_bot_2m/ soiltype_bot_30s/ soiltype_bot_5m/
17

soiltype_top_10m/ soiltype_top_2m/ soiltype_top_30s/ soiltype_top_5m/ topo_10m/ topo_5m/ topo_2m/ topo_30s/ 解压后的各目录中所得到的数据文件大多数都是 10?,5?,2?和 30??的数据块文 件。用户大约需要 10Gb 的磁盘空间来存储这些数据。其目录在 WPS 的参数配 置文件中需要做相应的设定。 2.6.2 安装环境要求 编译时,要求系统装有 Perl(5.003 以上的版本)和 make(3.75 以上的版 本) 。由于 WPS 模式的程序采用了 C,Fortran77 和 Fortran90 编写,所以也要求 操作平台具有 FORTRAN77,FORTRAN90 和标准 C(或 C++)编译器。WPS 的数据格式采用了 NetCDF 的格式,要求系统安装了 NetCDF 函数库。 2.6.3 编译环境配置 编译安装 WPS 要求先安装 WRFV2 的主模式。在编译和安装前,还需要检 查 NetCDF 函数库的安装情况及其环境变量设置。找到正确的 netCDF,设置一 下环境变量 NETCDF,将其指到包含 netCDF 库函数的正确目录,例如: 在 c-shell 环境中:setenv NETCDF /usr/local/netcdf-3.4 在 sh(sh,bash 和 ksh)环境中:export NETCDF=/usr/local/netcdf-3.4 进行 WPS 编译环境配置时, 进入 WRF 模式的顶级目录中, “./configure” 键入 。 假设设置脚本可以找到相应版本(5.004 或更高版本)的 Perl 程序,那么设置文 件“arch/configure.defaults”中的模板将会被扫描检测,提取相应的配置模块信 息,并且会列出一个选择菜单共用户选择。 Will use NETCDF in dir: /u/wrf_xp/netcdf $JASPERLIB or $JASPERINC not found in environment, configuring to build without grib2 I/O... -----------------------------------------------------------------------Please select from among the following supported platforms. 1. 2. 3. 4. AIX AIX AIX AIX serial, NO GRIB2 serial DM parallel, NO GRIB2 DM parallel

Enter selection [1-4] :
18

用户输入一个 1~4 的整数,然后按回车。如果选择有效,则所作的选择和 提示符会显示出来。用户选择结束后,正常运行脚本程序时,会在顶级目录中创 建文件“configure.wps” ,并退出程序,回到操作系统。如果在选择时要退出设 置脚本程序,用 shell 的中断命令即可(如按“Control-C”。 ) 模式目录中还提供了用于卸载的清除程序 clean (Csh 类 shell 脚本) 安装失 。 败时,可以使用这一程序来恢复到最初的状态。当未指定任何参数时,清除程序 “clean”将删除 src 目录中的目标文件(*.o)以及编译时产生的一些中间文件, 文件“configure.wrf”会保留。当指定“-a”为“clean”的参数时,则会连同文 件“configure”以及一些在“external”目录中的库函数一起删除。所以,用带 参数“-a”的清除命令,则会将模式恢复到模式的安装最原始的状态,而文件 “configure.wps”中的一些修改信息都会丢失。 在“configure.wps”创建后,还可以根据需要来修改编译选项。在编译器、 编译选项或者编译规则需要变动时,可以对“configure.wps”文件进行修改。 2.6.4 编译代码 在配置完编译环境变量之后,就可以输入编译命令“compile”进行程序代 码编译了。首先,输入“compile -h” ,则会出现以下帮助选项: ***** Unrecognized compile target -h. Usage: compile [target] where target is one of wps util geogrid ungrib metgrid g1print g2print plotfmt rd_intermediate plotgrids mod_levs avg_tsfc or just run compile with no target to build everything. ***** 上面的帮助信息里,列出了目前 WPS 源代码中可以编译运行的方案选择。 编译时,输入带参数的编译命令“compile” ,命令格式为: compile wps 成功编译后,会产生可执行文件。当编译失败或者要重新编译时,可用模式 提供的清除命令 clean 来进行。当未指定任何参数时,清除程序“clean”将删除
19

源 程 序 目 录 中 的 目 标 文 件 ( *.o ) 以 及 编 译 时 产 生 的 一 些 中 间 文 件 , 文 件 “configure.wrf”会保留。当指定“-a”为“clean”的参数时,则会连同文件 “configure”以及一些在“external”目录中的库函数一起删除。

2.6.5 问题处理 (1) 如果失败,则可以用 clean 来清除失败的安装程序。 (2) 进入到目录下的各个子目录(如 ungrib、metgrid、geogrid 和 util 等)下, 输入 make 命令对单个目录进行编译。这样就相对容易找出编译安装时 的错误所在。

20

3. WRF 模式与 T213 模式连接 3.1 连接方案 T213 模式是一个全球谱模式,而 WRF 模式是一个区域格点模式。目前,要 实现 WRF 模式与 T213 模式的完全嵌套,在理论上和实践上都还有许多困难。 因此,根据 WRF 模式当前只处于调试阶段的实际情况,我们仅将 WRF 模式与 T213 模式作简单地连接。 简单连接的基本思路就是以 T213 模式的预报场或者客观分析场为 WRF 模 式的背景场,并为 WRF 模式提供边界条件。 具体实现的方法有两种,一种是从 T213 场库获取要素场,然后修改 WRFSI 源程序,读取 T213 要素场,处理后生成 WRF 模式的输入场;另一种是利用从 T213 场库获取要素场,然后利用 MM5 的前处理程序 TERRAIN、REGRID 以及 INTERPF 等程序,生成 MM5 的初始场及边界条件,再利用 MM52WRF 程序, 将其转换成 WRF 模式的输入要素场。第一种方法简捷方便,易于操作;第二种 方法相对繁杂些,但由于 MM5 模式有比较完善的资料同化方案,可以解决目前 WRF 模式没有资料同化方案的不足。 3.2 连接程序设计 3.2.1 T213 场库资料的通用接口程序 IBM SP 机器中 T213 场库的水平分辨率为 0.5625*0.5625(度) 。目前,由于 T213 场库资料的检索已经模块化, 用户根据检索时, 可直接调用通用场库 (T213) 检索接口程序“gdbrck” 。调用通用场库接口程序时,用户只必须设置好程序的 各个接口参数。具体各接口参数说明如下: 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), 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 个字节。因此,在程序的声明部分注意场库调用参数的存储长度;或者在
21

编译程序的时候,选用 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?。 3.2.2 读取 T213 场库资料的程序设计 读取 T213 场库资料的基本思路是首先设置好相应的气象要素场的具体调用 参数;然后利用 T213 场库提供的通用接口程序读取场库资料,保存在内存变量 中; 再将内存变量中的相应气象要素场数据按不同的要求输出为不同的数据文件 格式。根据这一思想,可以得到读取 T213 场库资料的程序流程图(见图 10) 。 实现读取 T213 场库资料的程序名称为 readt213.F。程序开始调用子程序 parse_table 来变量列表 Vtable 文件中的变量信息。Vtable 的格式如下:
GRIB Code| Level Code| Level 1 | Level 2 | REGRID Name | REGRID Units | REGRID Description | -----+------+---------+----+-----------+----------+----------------------------------------+ 80 | 1 | 0 | | SST |K | Sea Surface Temperature | 1 | 1 | 0 | | PSFC | Pa | Surface Pressure | 2 | 102 | 0 | | PMSL | Pa | Sea-level Pressure | 7 |1 | 0 | | HGT | m | Height |Terrain Height 211 | 1 | 0 | | SKINTEMP | K | Skin temperature | 229 | 105 | 2 | |T |K | Temperature | At 2 m 230 | 105 | 2 | | RH |% | Relative Humidity | At 2 m 202 | 105 | 10 | |U | m s{-1} | U | At 10 m 203 | 105 | 10 | |V | m s{-1} | V | At 10 m 7 | 100 | | | HGT | m | Height | 11 | 100 | * | |T |K | Temperature | 33 | 100 | * | |U | m s{-1} | U | 34 | 100 | * | |V | m s{-1} | V | 52 | 100 | * | | RH |% | Relative Humidity | -----+------+---------+----+-----------+----------+----------------------------------------+

变量列表 Vtable 文件中,第一行是说明信息,调用 parse_table 子程序时, 会忽略这些信息。 parse_table 子程序识别这些信息与有用的变量信息的重要标 而 志就是第一列包含中画线“-”的第二行。也就是说,程序将忽略第一次出现中 画线的那一行以前的所有信息, 然后读取第一次出现中画线到第二次出现中画线 之间的所有变量信息。 如果在第二次出现中画线的那一行后面还有信息,那么将 忽略第二次出现中画线的那一行之后的所有信息, 直到第三次出现中画线的那一 行, 同时必须有第四次出现中画线的行。第三和第四次之间有没有变量信息不重 要,重要的是第三次和第四次必须同时配套出现。

22

T213 场库

调用子程序 parse_table, 读取变量列表文件 Vtable

读取要从 T213 场库中读 取的变量列表

读取参数列表文件 namelist.input 读取时间参数及输出格式参数

初始化计算时间

时间循环:当计算时间在起止时间之内

文件打开标志赋值 flopen=.true.

变量循环:当 1≤loopj≤变量总数

读取 SST 场数据, 并按要求 格式输出

要读取的变量为地形? 否 是 要读取的变量为 SST? 否 call proc_sst 读取场库气象场

是 打开地形文件:t213_terrain.dat 读取地形数据、 设置场的相关信息 关闭地形文件

气象场是否为高斯格点场? 是 call GAUSS2LATLON



1

23

1

flopen 为真(.true.)? 是 =1 输出类型=? =2 创建文本格式 输出文件 创建 AVN 第 4 类格式输出文件 =3



创建 AVN 第 3 类格式输出文件

call proc_landsea 读取 landsea 文件,截取计 算区域范围中的水陆标志 信息,并按要求格式输出 否

设置输出区域范围 是

变量为地形?

call get_sec1 设置地形场相关 输出信息

call get_sec2

call get_gridinfo

=2

输出类型=?

=4

call out_hinterp

call out_wps

结束:变量循环

结束:时间循环

结束 图 1. 读取 T213 场库资料程序流程图
24

在变量列表 Vtable 文件中,这些变量信息设计程表格形式,其中第一列是变量的 GRIB 码, 这些 GRIB 码是 T213 场库中规定的编码 (详见附录 2)当要使用 WRF SI 的 prep_grib.exe 。 程序时, 还必须将 T213 场库的 GRIB 编码转换成 AVN 的编码形式。 第二列是气象要是变量 所处的垂直层的 GRIB 编码。其中 100 指气压层,105 指特定的垂直层,102 是指海平面层, 1 是指包括海面与陆面的地球表面层。第三、四列是相应于具体的次类型的垂直层的值。

比如垂直层类型为 100,则第三列就是去各个等压面的值,如 1000、950、850 等等,则第三列用通配符“*”表示,而第四列为空;如果垂直层类型为 105, 则第三列则为具体指定的垂直层面的值, 10 米高度的风速则用 10 米等高面的 如 值,第三列为 10,而第四列为空;如果垂直层类型为 102 或 1,则第三列取为 0, 第四列为空。第五列为变量名称,按照 GRIB 编码的标准进行变量命名。第六列 为变量单位,采用 GRIB 编码的单位标准。第七列为变量文字描述信息,不超过 42 个字符。在表格中,每一列都是用竖线“|”分隔。第一列的起始处不要加分 隔符“|” ,但最后一列也就是第七列必须以分隔符结束。后面可以跟一些说明文 字信息,但这些信息会被忽略掉。 程序读完变量列表信息后,紧接着便打开参数设置文件“namelist.input” , 读取用户调用场库的起止时间、输出区域的范围以及输出文件的格式。例如: &filetimespec START_YEAR = 2003 START_MONTH = 04 START_DAY = 07 START_HOUR = 00 START_MINUTE = 00 START_SECOND = 00 END_YEAR = 2003 END_MONTH = 04 END_DAY = 10 END_HOUR = 00 END_MINUTE = 00 END_SECOND = 00 INTERVAL = 21600 START_X = 1 START_Y = 1 DELTA_X = 320 DELTA_Y = 160 / ! OUT_TYPE IS A OUTPUT TYPE, THE VALID VALUE IS: ! 2 : HINTERP FORMAT ! 4 : WPS FORMAT &typespec OUT_TYPE=2 / 获取调用场库的起止时间后,就可以初始化计算时间。初始化时间时,调用

25

子程序 build_hdate。 每一次调用后都会返回一个格式为 “yyyy-mm-dd_hh:mm:ss” 的时间串。以起始时间为开始,在场库中找符合条件的时次,进行场库资料的读 取,直到用户定义的调用终止时间为止。 在每一个要读取场库资料的有效时次内, 遍历从变量列表中获取得每一个变 量。但由于地形、海温和水陆标志信息特殊,要进行特殊处理。另外,由于 T213 场库中, 有一些要素场保存的量仍为高斯格点场资料,故要求将其内插转换到经 纬网格点上。这部分功能是调用子程序 GAUSS2LATLON 来完成的(这个子程 序是在陈启英、姚明明提供的转换程序的基础上修改而成) 。 最后模式的输出是根据用于定义的输出格式来输出的。在 namelist.input 文 件中定义的 OUT_TYPE 就是定义输出格式的量。当 OUT_TYPE=2 时,输出为 SI 程序中 hinterp.exe 能识别处理的格式,调用输出子程序 out_hinterp,输出文件 名为“AVN_FILE:*” ;当 OUT_TYPE=4 时,输出为 WPS 的前处理程序能识别 处理的格式,调用输出子程序 out_wps,输出文件名为“FILE:*” 。 3.3 连接的实现 根据连接方案设计以及程序设计的具体实施,其流程示意图如图 11 所示。 运行 readt213.exe 程序,读取场库资料,将场库资料输出为 hinterp.exe 或 metgrid.exe 能够识别处理的格式,然后运行 WRFSI 或者 WPS,即可生成 WRF 模式所需要的初始场和边条件场。 readt213.exe 的输出文件为 Fortran 的顺序读取的无格式数据文件。 文件 中的数据都是记录头和一个二维数据块的形式存储。二维数据块总是二维 (nx,ny)实型数组。记录头是数据本身的描信息,MM5、WRFSI 和 WPS 三种 格式数据的记录头很相似。具体如下: MM5 的记录头格式: 记录 1:version 记录 2:hdate, xfcst, field, units, decription, level, nx, ny, proj_flag 如果 proj_flag=0 那么 记录 3:startlat, startlon, deltalat, deltalon 如果 proj_flag=1 那么 记录 3:startlat, startlon, dx, dy, truelat1 如果 proj_flag=3 那么 记录 3:startlat, startlon, dx, dy, orient, truelat1, truelat2 如果 proj_flag=5 那么 记录 3:startlat, startlon, dx, dy, orient, truelat1 WRFSI 记录头格式: 记录 1:version =4 记录 2:hdate, xfcst, source, field, units, decription, level, nx, ny, proj_flag 如果 proj_flag=0 那么 记录 3:startloc, startlat, startlon, deltalat, deltalon 如果 proj_flag=1 那么 记录 3:startloc, startlat, startlon, dx, dy, truelat1 如果 proj_flag=3 那么
26

记录 3:startloc, startlat, startlon, dx, dy, orient, truelat1, truelat2 如果 proj_flag=5 那么 记录 3:startloc, startlat, startlon, dx, dy, orient, truelat1 WPS 记录头格式: 记录 1:version=5 记录 2:hdate, xfcst, source, field, units, decription, level, nx, ny, proj_flag 如果 proj_flag=0 那么 记录 3:startloc, startlat, startlon, deltalat, deltalon, earth_radius 如果 proj_flag=1 那么 记录 3:startloc, startlat, startlon, dx, dy, truelat1, earth_radius 如果 proj_flag=3 那么 记录 3: startloc, startlat, startlon, dx, dy, orient, truelat1, truelat2,earth_radius 如果 proj_flag=4 那么 记录 3:startloc, startlat, startlon, nlats, deltalon, earth_radius 如果 proj_flag=5 那么 记录 3:startloc, startlat, startlon, dx, dy, orient, truelat1, earth_radius 记录 4:is_wind_grid_rel 记录 1: INTEGER*4 :: version 数据的版本号, 目前此版本号可为 3 (MM5) 4 , (WRFSI) 5 , (WPS) 。 记录 2: CHARACTER(LEN=24) :: hdate 数据的有效时间,格式为 YYYY-MM-DD-HH:mm:ss:ssss。 REAL*4 :: xfcst 数据块的预报时效,单位为小时。 CHARACTER(LEN=32) :: source 数据块的描述信息。 CHARACTER(LEN=9) :: field 气象要素场的变量名称。这个变量名为对应于变量列表文件 Vtable 中的变量名称,而且必须是模式能够识别的名称。 CHARACTER(LEN=25) :: units 数据块中气象要素的单位。此记录只是用于文本信息描述要素场的, 而模式本身不会根据此单位来实行自动转换。 CHARACTER(LEN=46) :: description 数据块中气象要素的详细描述信息。 REAL*4 :: level 数据块中气象要素所处的垂直等压面值,单位为帕。如果是地面气 象要素,则此记录值为 200100.0 帕;如果是海平面气象要素,则此 记录值为 201300.0 帕。 INTEGER*4 :: nx 二维数据块的 x 方向的范围大小。 INTEGER*4 :: ny
27

二维数据块的 x 方向的范围大小。 INTEGER*4 :: proj_flag 地图投影的标志变量。其中: 0:圆柱等距投影(经/纬格点) 1: 麦卡托投影 3:兰勃特等角投影 4:高斯投影 5:极射赤面投影 (Polar Stereographic) 记录 3: CHARACTER(LEN=8) :: startloc 描述数据块中气象要素的数据的经纬度的相对起始点位置。有效值 为: ?SWCORNER? : 经纬度相对起始点为左下角 ?CENTER? : 经纬度相对起始点为投影中心 REAL*4 :: startlat 起始点的纬度。 REAL*4 :: startlon 起始点的经度。 REAL*4 :: deltalat 经纬格点的纬度增量 REAL*4 :: deltalon 经纬格点的经度增量 REAL*4 :: dx x 方向的格距,指不投影变形处的格距。 REAL*4 :: dy y 方向的格距,指不投影变形处的格距。 REAL*4 :: orient 与 y 轴平行的经度值,通常为投影不变形的经度值。 REAL*4 :: truelat1 投影不变形的第一纬度值。 REAL*4 :: truelat2 投影不变形的第二纬度值,只有兰勃特投影时才有第二不变形纬度 值。 REAL*4 :: earth_radius 地球半径,单位为 km。 LOGICAL :: is_wind_grid_rel 风场是否需要旋转的标志。TRUE 表示风场是相对于模式格点, FALSE 表示风场是相对于地球坐标系。

28

T213场库数据

SI readt213 WPS

gridgen_model.exe hinterp.exe metgrid.exe

geogrid.exe

vinterp.exe

WRF 图 11. WRF 与 T213 连接实现流程示意图

3.4 编译连接程序 编译连接程序时, 目前必须用 64 位形式编译, 或者用编译选项 “-qintsize=8” 和“-qrealsize=8”来编译。另外,场库连接的库函数以及路径必须在编译连接时 指定。IBM SP 用户连接库为: ·场库在 SP:/gpfs/fs2/nwp/gdbt213 目录下 -L /u/nwp/gdbt213/lib -lpub index_dic(1:28)='/u/nwp/gdbt213/dic/index_dic' ·场库在盘阵库/asm2/nwpgdb/t213gdb 目录下 -L/u/nwp/gdbt213/lib -lpub_bx index_dic(1:32)='/u/nwp/gdbt213/dic/index_nfs_dic? 编译时,按照以下步骤进行: (1) 进入到 t213/mod 目录下,输入 make 命令编译连接程序所需的模块程序; (2) 进入到 t213/util 目录下,输入 make 命令编译一些辅助子程序; (3) 回到 t213/目录下,输入 make 命令编译主程序。 编译成功后,可产生一个可执行程序 readt213.exe。

29

4. WRF 模式系统的运行 4.1 理想大气方案 4.1.1 运行流程

运行WRF数据初始化程序ideal.exe

运行WRF模式主程序wrf.exe wrfout 后处理 图3. WRF模式系统理想大气方案的运行流程 4.1.2 运行步骤 有多种理想大气试验方案可供试验运行。在编译好理想大气试验方案后,可 以进入相应方案的目录下,如欧拉质量坐标 x-z 平面二维飚线方案对应的目录 为./test/em_squall2d_x。 1. 设置该目录下的参数配置文件 namelist.input;详细参数说明参见《WRF 模式 技术报告》中附录 1。通过编辑 namelist.input 文件,可以修改积分的长度, 输出的频次,计算范围的大小,时间步长,物理参数以前其他的一些参数。 一些参数(比如时间步长,积分时间和输出时间,一些变化参数等)的改变, 可以不需要重新执行“ideal.exe”程序。然而,当改变计算范围,边界条件, 以及物理参数时,则必须重新执行“ideal.exe”程序。 2. 运行 WRF 模式的数据初始化程序 ideal.exe。ideal.exe 是串行运行的。如果要 并行运行,则必须将并行节点和每个节点上的 CPU 数目都设置成 1。运行正 确后,可产生以下两个文件: wrfbdy_d01 : WRF 的边界条件 wrfinput_d01 : WRF 的输入场 3. 运行 WRF 模式的主程序 wrf.exe。wrf.exe 可串行运行,也可并行运行。运行 正确后,能产生以下形式的结果文件: wrfout_d01_2007-08-23_05:00:00 另外,还有一些程序运行时记录运行状态的中间记录文件。 4. WRF 模式后处理 目前,已经初步地将 WRF 模式的输出结果转换成 VIS5D、GrADS 以及 MICAPS 的数据格式,显示 WRF 模式的输出结果。详细说明参见第四部分。

30

4.1.3 运行个例 通过编辑 namelist.input 文件,可以修改积分的长度,输出的频次,计算范 围的大小, 时间步长, 物理参数以前其他的一些参数。 一些参数 (比如时间步长, 积分时间和输出时间, 一些变化参数等) 的改变, 可以不需要重新执行 “ideal.exe” 程序。然而,当改变计算范围,边界条件,以及物理参数时,则必须重新执行 “ideal.exe”程序。 编辑原始程序代码,比如编辑 dyn_eh/module_initialize_squall2d_x.F,已修 改山体或圆形障碍物,或修改外围环境时,应该在 WRF 的顶级目录下重新运行 “compile eh_squall2d_x” ,重新编译程序代码。然后再象前面讲述的一样,分别 执行“ideal.exe”和“wrf.exe” 。 试验方案中,欧拉质量坐标 x-z 平面二维飚线方案采用 Kessler 微物理过程, 粘性系数固定为 300m2/s。 并利用 y 方向的周期性边条件, 从而使用三维的 WRF 模式模拟二维的飚线系统实际可行。在 y 方向,速度应该为零,并且没有其他物 理量的计算输出。

31

4.2 真实大气方案 4.2.1 运行流程

数据前处理

运行WRF数据初始化程序real.exe

运行WRF模式主程序wrf.exe wrfout 后处理 图5. WRF模式系统真实大气方案的运行流程 4.2.2 运行步骤 4.2.2.1. 运行数据预处理 WPS WPS 的运行中主要包括三个步骤: 用 geogrid 定义模式格点; 用 ungrib 1. 2. 从 GRIB 码数据文件读出预报时段的气象场,不过对于 T213 模式的场库数据, 则需要用 readt213 程序;3. 用 metgrid 将气象场进行水平插值。

如果时在同一区域进行多个时次的模拟计算, 则第 1 步骤只需在第一次运行 即可,第二和第三个步骤则需每次都运行。 1. 用 geogrid 定义模式格点 在 WPS 的系统目录中,如果 WPS 安装正确的话,应该存在三个可执行文件 的连接,并且有一个参数配置文件 namelist.wps。在参数列表的“geogrid”部
32

分中定义了模式格点和嵌套信息。另外参数列表的公共部分“share”在运行 geogrid 时也是必须的。具体的参数格式如下: &share wrf_core = 'ARW', max_dom = 2, start_date = '2006-08-16_12:00:00','2006-08-16_12:00:00', end_date = '2006-08-16_18:00:00','2006-08-16_12:00:00', interval_seconds = 21600 io_form_geogrid = 2, opt_output_from_geogrid_path = './', debug_level = 0 / &geogrid parent_id = 1, 1, parent_grid_ratio = 1, 3, i_parent_start = 1, 31 j_parent_start = 1, 17 s_we = 1, 1, e_we = 74,112, s_sn = 1, 1, e_sn = 61,97, geog_data_res = '10m','2m', dx = 30000, dy = 30000, map_proj = 'lambert', ref_lat = 34.0 ref_lon = 102 truelat1 = 30.0, truelat2 = 60.0, stand_lon =102. geog_data_path = '/data3a/mp/gill/DATA/GEOG' opt_geogrid_tbl_path = 'geogrid/' / 用户首先应该指定模式的框架和区域的总个数, 还可以指定 geogrid 的结果输 出路径以及输出格式。在参数列表的“geogrid”部分,用户可以指定模式区域的 投影方式以及相关的投影参数。 设置好相应的参数后,即可运行 geogrid.exe 程序,运行正常时会产生文件名 格式为 geo_em_d0N.nc 的结果文件。其中 geo_em 前缀时 ARW 模式框架的输出 结果,而对应于 NMM 的结果时 geo_nmm 前缀。 “d0N”中 N 表示区域的编号。 而后最“nc”是依据输出格式(由 io_form_geogrid 指定)不同而不同。 2. 从 GRIB 数据中读出预报时段的气象场数据 如果提供的气象场是 WMO 的标准 GRIB 格式的数据,则可以用 ungrib 程序 进行解码, 读取预报时段的气象场数据。 首先还是应该修改参数列表的相应部分,
33

包括公共部分“share”和专用部分“ungrib” 下面给一个示例: 。 &share wrf_core = 'ARW', max_dom = 2, start_date = '2006-08-16_12:00:00','2006-08-16_12:00:00', end_date = '2006-08-16_18:00:00','2006-08-16_12:00:00', interval_seconds = 21600 io_form_geogrid = 2, opt_output_from_geogrid_path = './', debug_level = 0 / &ungrib out_format = 'WPS' / 在参数列表的公共部分“share”里,与 ungrib 有关的的参数包括资料的起止 时间和资料的时间间隔。而在“ungrib”部分只有一个参数,out_format,定义解 码程序的输出结果的数据格式。这里的输出结果文件也就是 metgrid 所能识别的 中间数据格式。目前,metgrid 能识别 ungrib 所支持的所有格式,包括“WPS” , “SI”和“MM5” 。 设置好相应的参数后,前面提到的变量列表 Vtable 也是必需的目前,WPS 提 供了多个气象场的变量列表文件,它们存放在 ungrib/Variable_tables/目录下。使 用是,主要作一个相应的连接即可,比如 GRIB 数据是 GFS 模式提供的,那么 就可以这么连接: ln –sf ungrib/Variable_Tables/Vtable.GFS Vtable 或者直接用拷贝命令,进行拷贝: cp ungrib/Variable_Tables/Vtable.GFS Vtable ungrib 程 序 解 码 GRIB 文 件 时 , 搜 索 文 件 名 格 式 为 GRIBFILE.AAA , GRIBFILE.AAB,… ,GRIBFILE.ZZZ。由于实际提供的数据文件名不是此格式 的文件名,程序则提供了一个连接程序,link_grib.csh,将实际的数据文件连接 成 ungrib 要求的文件名格式。比如用以下的命令格式能将带有“grib_”前缀的 数据文件连成要求的文件名格式: link_grib.csh grib_ 接下来就可以运行 ungrib.exe 程序进行数据解码, 生成 metgrid 所需要的中间 文件。中间文件名格式为“FILE:YYYY-MM-DD_HH” 。 3. 从 T213 场库中读出预报时段的气象场数据 如果输入数据是国家气象中心的 T213 场库,那么用户就不能用 ungrib 程序 进行成功解码。因为 T213 场库是国家气象中心的数据库,其数据格式与标准的 GRIB 有所不同, 需用国家气象中心的场库解码程序才能读取相应的气象场数据。 下面详细介绍一下读取 T213 场库的步骤: 第一步:设置变量列表文件“Vtable” 变量列表文件“Vtable”与 WPS 中的变量列表文件类似,它提供要从 T213 场库中提取得气象场的相关信息。其格式如下:

34

GRIB 码 | 层次代号 | 第一层 | 第二层 | 变量名称 | 变量单位|变量描述 | ----------+-------------+-----------+-----------+--------------+-------------+---------------------| 11 | 100 | * | | T |K | Temperature | 33 | 100 | * | | U | m s{-1} | U | 34 | 100 | * | | V | m s{-1} | V | 2 | 102 | 0 | | PMSL | Pa | Sea-level P | .. ..其他变量 .. -----------+-------------+-----------+-----------+---------------+------------+-------------------+ 变量列表 Vtable 文件中,第一行是说明信息。第二行是数据起始标志线,它 是以中划线“-”起始的行。自第三行开始是变量定义。第二次出现中划线标志 “-”的行即为数据结束行。 在变量列表 Vtable 文件中,这些变量信息设计程表格形式,其中第一列是 变量的 GRIB 码,这些 GRIB 码是 T213 场库中规定的编码(详见附录 2) 。第二 列是气象要是变量所处的垂直层的 GRIB 编码。其中 100 指气压层,105 指特定 的垂直层,102 是指海平面层,1 是指包括海面与陆面的地球表面层。第三、四 列是相应于具体的次类型的垂直层的值。比如垂直层类型为 100,则第三列就是 去各个等压面的值,如 1000、950、850 等等,则第三列用通配符“*”表示,而 第四列为空;如果垂直层类型为 105,则第三列则为具体指定的垂直层面的值, 如 10 米高度的风速则用 10 米等高面的值,第三列为 10,而第四列为空;如果 垂直层类型为 102 或 1,则第三列取为 0,第四列为空。第五列为变量名称,按 照 GRIB 编码的标准进行变量命名。第六列为变量单位,采用 GRIB 编码的单位 标准。第七列为变量文字描述信息,不超过 42 个字符。在表格中,每一列都是 用竖线“|”分隔。第一列的起始处不要加分隔符“|” ,但最后一列也就是第七列 必须以分隔符结束。后面可以跟一些说明文字信息,但这些信息会被忽略掉。 第二步:设置参数配置文件“namelist.input” 程序读完变量列表信息后,紧接着便打开参数设置文件“namelist.input” , 读取用户调用场库的起止时间、输出区域的范围以及输出文件的格式。例如: &filetimespec START_YEAR = 2003 START_MONTH = 04 START_DAY = 07 START_HOUR = 00 START_MINUTE = 00 START_SECOND = 00 END_YEAR = 2003 END_MONTH = 04 END_DAY = 10 END_HOUR = 00 END_MINUTE = 00 END_SECOND = 00 INTERVAL = 21600
35

START_X = 1 START_Y = 1 END_X = 320 END_Y = 160 / ! OUT_TYPE IS A OUTPUT TYPE, THE VALID VALUE IS: ! 2 : HINTERP FORMAT ! 4 : WPS FORMAT &typespec OUT_TYPE=4 / 在参数配置文件“namelist.input”中,&filetimespec 部分是定义获取资料的 起止时间、时间间隔和区域大小的。其中, START_YEAR,START_MONTH, START_DAY,START_HOUR,START_MINUTE,START_SECOND 分别是表 示起始年、月、日、时、分、秒;END_YEAR,END_MONTH,END_DAY, END_HOUR,END_MINUTE,END_SECOND 是表示终止年、月、日、时、分、 秒;INTERVAL 是表示时间间隔,以秒为单位;START_X 和 START_Y 分别表 示场库资料输出时 X 方向(纬向)和 Y 方向(经向)的起始格点;END_X 和 END_Y 分别表示输出时 X 方向 (纬向) Y 方向 和 (经向) 的终止格点数。 &tyepspec 部分是定义获取资料的输出类型。当 OUT_TYPE=2 时,输出为 SI 程序中 hinterp.exe 能识别处理的格式,调用输出子程序 out_hinterp,输出文件名为 “AVN_FILE:*” ;当 OUT_TYPE=4 时,输出为 ARW 的前处理程序 WPS 能识 别处理的格式。输出时调用子程序 out_wps 来输出,输出文件名为“FILE:*” 。 第三步:运行连接程序 readt213.exe 设置好变量列表文件以及参数配置文件后,就可运行 readt213.exe 文件。运 行正确后,可以生成 SI 所需要的数据文件 “AVN_FILE:*” ,或者生成 ARW 前 处理程序 WPS 所能识别的数据文件“FILE:*” 。 4. 运行 metgrid 程序,进行气象场水平插值 首先要修改参数配置文件 namelist.wps 中与 metgrid 有关的部分, 包括公共部 分“share”和“metgrid”部分。参数格式如下: &share wrf_core = 'ARW', max_dom = 2, start_date = '2006-08-16_12:00:00','2006-08-16_12:00:00', end_date = '2006-08-16_18:00:00','2006-08-16_12:00:00', interval_seconds = 21600 io_form_geogrid = 2, opt_output_from_geogrid_path = './', debug_level = 0 / &metgrid
36

fg_name = './FILE' io_form_metgrid = 2, opt_output_from_metgrid_path = './', opt_metgrid_ tbl_path = 'metgrid/', / 用户必须确认“share”部分的模式框架、区域数、资料起止时间以及模 式区域静态文件的存放路径的参数设置情况。在“metgrid”部分,fg_name 可以给出中间文件包含路径的前缀,还可以设置输出文件的存放路径和文 件格式,指定 METGRID.TBL 文件的存放路径。在设置好相应的参数配置 后,即可运行水平插值程序 metgrid。程序运行正确是,在指定的结果输出 路径(opt_outptu_from_metgrid_path)中可以看见 metgrid 的输出结果。输 出结果的文件名格式为“met_em.d0N.YYYY-MM-DD_HH:00:00” 。 4.2.2.2. 运行 WRF 的初始化程序 real.exe 真实数据运行时, 原始数据可能是 GRIB 格式的数据, 通过上面介绍的 WPS 运行步骤,生成 real 的输入数据。如: met_em.d01.2007-08-22_00:00:00.nc met_em.d01.2007-08-22_03:00:00.nc met_em.d01.2007-08-22_06:00:00.nc met_em.d01.2007-08-22_09:00:00.nc met_em.d01.2007-08-22_12:00:00.nc met_em.d01.2007-08-22_15:00:00.nc met_em.d01.2007-08-22_18:00:00.nc met_em.d01.2007-08-22_21:00:00.nc met_em.d01.2007-08-23_00:00:00.nc 在 WRF 的运行目录 (run 或者 test/em_real) 你可以找到 wrf.exe 和 real.exe 中, 的连接文件以及 namelist.input 文件。 (1)设置参数配置文件“namelist.input” 设置该目录下的参数配置文件 namelist.input;详细参数说明参见《WRF 模式技术报告》 中附录 1。 通过编辑 namelist.input 文件, 可以修改积分的长度, 输出的频次,计算范围的大小,时间步长,物理参数以前其他的一些参数。 一些参数(比如时间步长,积分时间和输出时间,一些变化参数等)的改变, 可以不需要重新执行“real.exe”程序。然而,当改变计算范围,边界条件, 以及物理参数时,则必须重新执行“real.exe”程序。 (2) 运行 WRF 模式的数据初始化程序 real.exe。 由于 real.exe 运行时读取和存放数据的默认目录为当前目录,运行时需将 输入数据拷贝和连接到当前目录下才能正确运行。 SP 上的主运行空间有限, 而 将数据拷贝到当前目录下是不合适的。因此,可以将参数列表中的文件存放 路径进行相应的设置,指定 real 的输入和输出文件路径。运行正确后,可产 生以下两个文件: wrfbdy_d01 : WRF 粗网格的边界条件 wrfinput_d0N: WRF 第 N 个区域的输入场

37

4.2.2.3. 运行 WRF 模式的主程序 wrf.exe wrf.exe 可串行运行,也可并行运行。同样,由于 wrf.exe 运行时读取和存 放数据的默认目录为当前目录, 运行时需将输入数据拷贝和连接到当前目录下才 能正确运行。因此,可以将参数列表中的文件存放路径进行相应的设置,指定 wrf 的输入和输出文件路径。 并行运行 wrf.exe 程序时, IBM 机器环境中用到 LoadLevel 环境来提交 在 并行作业卡。作业卡的后缀名为“.cmd” ,其创建如下: #!/bin/ksh # @ job_type = parallel #@ executable = wrf.exe # @ input = /dev/null # @ output = rst_wrf.out # @ error = rst_wrf.err # @ initialdir = /u/denglt/wrfv13/test/em_real # @ notify_user = denglt@cma.gov.cn # @ class = parallel # @ notification = complete # @ environment = MBX_SIZE=160000000; MP_SHARED_MEMORY=YES;
XLSMPOPTS="parthds=1:s tack=100000000: spins=0: yields=0: schedule=affinity"; MP_CSS_INTERRUPT=yes; export MP_EAGER_LIMIT=65536; IN_ROOT=/gpfs1/fs1/denglt/moaddata/extprd; OUT_ROOT=/gpfs1/fs1/denglt/moaddata/extprd

# @ checkpoint = no # @ restart = no # @ requirements = (Arch == "R6000") && (OpSys == "AIX51") # @ node = 2 # @ tasks_per_node = 4 # @ node_usage = not_shared # @ network.MPI = css0,shared,US # @ queue 提交作业卡是,用 Loadlevel 命令 llsubmit 提交。提交时,键入命令: llsubmit run_wrf.cmd 提交成功后会显示类似于以下的正确的提交信息: llsubmit: The job "sp02n05.12175" has been submitted. 作业运行正确后,在指定的模式输出路径(默认的路径是当前运行路径) 中,能产生以下形式的结果文件: wrfout_d01_2007-08-23_00:00:00 wrfout_d01_2007-08-23_01:00:00 wrfout_d01_2007-08-23_02:00:00 wrfout_d01_2007-08-23_03:00:00 wrfout_d01_2007-08-23_04:00:00 wrfout_d01_2007-08-23_05:00:00
38

wrfout_d01_2007-08-23_06:00:00 另外,还有类似于以下的一些程序运行时记录运行状态的中间记录文件: -rw-r--r-- 1 wrf_qu nwp_qu 72629 Aug 23 05:42 rsl.out.0008 -rw-r--r-- 1 wrf_qu nwp_qu 72633 Aug 23 05:42 rsl.out.0007 -rw-r--r-- 1 wrf_qu nwp_qu 72633 Aug 23 05:42 rsl.out.0006 -rw-r--r-- 1 wrf_qu nwp_qu 72633 Aug 23 05:42 rsl.out.0005 -rw-r--r-- 1 wrf_qu nwp_qu 72633 Aug 23 05:42 rsl.out.0004 -rw-r--r-- 1 wrf_qu nwp_qu 72633 Aug 23 05:42 rsl.out.0003 -rw-r--r-- 1 wrf_qu nwp_qu 72633 Aug 23 05:42 rsl.out.0002 -rw-r--r-- 1 wrf_qu nwp_qu 72631 Aug 23 05:42 rsl.out.0001 -rw-r--r-- 1 wrf_qu nwp_qu 326767 Aug 23 05:42 rsl.out.0000 -rw-r--r-- 1 wrf_qu nwp_qu 564 Aug 23 05:42 rsl.error.0008 -rw-r--r-- 1 wrf_qu nwp_qu 568 Aug 23 05:42 rsl.error.0007 -rw-r--r-- 1 wrf_qu nwp_qu 568 Aug 23 05:42 rsl.error.0006 -rw-r--r-- 1 wrf_qu nwp_qu 568 Aug 23 05:42 rsl.error.0005 -rw-r--r-- 1 wrf_qu nwp_qu 568 Aug 23 05:42 rsl.error.0004 -rw-r--r-- 1 wrf_qu nwp_qu 568 Aug 23 05:42 rsl.error.0003 -rw-r--r-- 1 wrf_qu nwp_qu 568 Aug 23 05:42 rsl.error.0002 -rw-r--r-- 1 wrf_qu nwp_qu 566 Aug 23 05:42 rsl.error.0001 -rw-r--r-- 1 wrf_qu nwp_qu 254702 Aug 23 05:42 rsl.error.0000 4.2.2.4. WRF 模式后处理 目前,已经初步地将 WRF 模式的输出结果转换成 VIS5D、GrADS 以及 MICAPS 的数据格式,显示 WRF 模式的输出结果。详细说明参见第 6 部分。

39

5 模式系统作业卡 为了便于新接触 WRF 模式的人员运行 WRF 模式,利用 perl 语言,编写了 运行 WRF 模式系统系统作业卡。实现了一个脚本命令自动运行包括读取 T213 场库,WRFSI 数据预处理,real.exe 数据初始化,WRF 3DVAR 以及 wrf.exe 模式 积分,结果后处理以及降水检验的模式系统整个过程。使 WRF 模式系统的运行 系统化,简化运行步骤,便于作业自动化。(在输入输出时指定路径的方法参阅文后的
特别提示)

5.1 源程序 运行时需要的文件包括: -----+ job |------------------------------+ package |-- clean |-- nl_3dvar.pm |-- llcmd.inc |-- job_deal.pm |-- modifydate.pl |-- job_driver.pm |-- namelist.bak |-- nl_driver.pm |-- namelist.inc |-- nl_post.pm |-- nodeget.sh |-- nl_si.pm |-- pbs.inc |-- nl_rdt213.pm |-- rsh.inc |-- nl_wrf.pm |-- run.pl |-- pbsub.pm |-- wrfmodel.pl |--wrftool.pm 运行脚本 run.pl 和 wrfmodel.pl 是用 perl 语言编写的 perl 脚本。支持运行的 perl 程序包放在 package 目录中,包括 nl_3dvar.pm, job_deal.pm, job_driveri.pm, nl_driver.pm, nl_post.pm, nl_si.pm, nl_rdt213.pm, nl_wrf.pm, psub.pm, wrftool.pm 等程序包。还有一些支持文件,包括 clean, llcmd.inc, modifydate.pl, namelist.bak, namelist.inc, nodeget.sh, pbs.inc, rsh.inc。clean 是清理作业卡目录的命令,此命令 会清除掉作业卡目录下其他的用户自定义的文件,因此用户在使用作业卡时,最 好不要将重要文件存放在作业卡目录下,否则很容易丢失。特别注意的是:如果 在作业运行过程中出错,则可能会留下一些错误信息,在下次运行时,必须清理 掉这些错误信息,否则作业无法正常运行。rsh.inc 也是 perl 脚本程序,它的用途 是用 shell 方式提交 WRF 模式系统的整个作业;namelist.inc 是总的参数配置文 件,包括读取场库 READT213,WRFSI,3DVAR 以及 WRF 模式积分的所有配 置参数,运行脚本前须设置好相应的参数;modifydate.pl 是 perl 本程序,它根据 run.pl 命令行参数来修改 namelist.inc 中的时间信息和模式信息; llcmd.inc 是 IBM AIX 上的总 Loadleveler 作业卡文件,包括 WRF 模式系统的各个运行步骤,用户 用户第一次配置好后,以后则无需改动,但这个文件必须要存在。pbs.inc 是神 威 PC Cluster 上的总 PBS 作业卡文件,包括 WRF 模式系统的各个运行步骤,用 户用户第一次配置好后,以后则无需改动,但这个文件必须要存在。namelist.bak 是 namelist.inc 的备份文件。nodeget.sh 是 PBS 系统上获取空闲节点资源的小程 序,供 pbs.inc 脚本使用,用来确定提交 PBS 作业节点资源。
40

5.2 系统作业卡运行步骤 5.2.1 编辑参数配置文件 namelist.inc (1) 公用参数块(COMMON BLOCK) 公用参数块指定 WRF 模式系统的步骤,提供 WRF 模式系统运行的起止时 间 以 及 计 算 区 域 大 小 信 息 。 包 括 三 个 部 分 : runmodelspec , filetimespec 和 domainspec。具体如下: (i)runmodelspec 部分:指定 WRF 模式系统运行的步骤。 READT213: 指定是否运行 readt213.exe 程序。0 表示不运行,1 表示运行。 WRFSI: 指定是否运行 WRFSI 程序。0 表示不运行 WRFSI 程序;1 表示运行全 部的 WRFSI 程序,包括 grib_prep.exe, gengrid_model.exe,hinterp.exe 和 vinterp.exe;2 表示跳过 grib_prep.exe 程序,只运行 gengrid_model.exe, hinterp.exe 和 vingerp.exe 程序;3 表示跳过 gridgen_model.exe,而运行 grib_prep.exe, hinterp.exe 和 vinterp.exe 程序; 表示只运行 grib_prep.exe 4 程序;5 表示只运行 gridgen_model.exe 程序;6 表示只运行 hinterp.exe 和 vinterp.exe 程序。 WRF3DVAR: 模块 wrf3dvar 标志参数,为小于等于 6 的非负整数。指定是否运行 WRF3DVAR 程序。缺省值为 0。0 表示不运行 WRF3DVAR 程序;1 表 示运行全部的 WRF3DVAR 程序,包括 UPFC, READOB,WRF3D and UPBC; 表示跳过 UPBC, 2 运行 UPFC, READOB and WRF3D;3 表示跳 过 UPFC, 运行 READOB,WRF3D, and UPBC;4 表示只运行 UPFC 程序;5 表示只运行 READOB and WRF3D 程序;6 表示只运行 UPBC 程序; WRFMODEL: 指定是否运行 WRF 模式的 real.exe 和 wrf.exe 程序。0 表示不运行;1 表示 real.exe 程序和 wrf.exe 程序两者都运行;2 表示只运行 real.exe 程 序;3 表示只运行 wrf.exe 程序。 POST: 指定是否运行后处理程序。0 表示不运行,1 表示运行。 VERIFY: 指定是否运行检验程序。0 表示不运行,1 表示运行。 WRF_CASE: 指定 WRF 模式的运行方案的名称。 例如: &runmodelspec READT213 = 1, WRFSI = 1, WRF3DVAR = 0, WRFMODEL = 1, POST= 0,
41

VERIFY = 0, WRF_CASE = 'em_real' / (ii)filetimespec 部分:指定 WRF 模式系统运行的起止时间。其具体的参数值 设置于 WRF 模式的设置一致。例如: &filetimespec RUN_DAYS = 1, RUN_HOURS = 0, RUN_MINUTES = 0, RUN_SECONDS = 0, START_YEAR = 2003 START_MONTH = 07 START_DAY = 21 START_HOUR = 00 START_MINUTE = 00 START_SECOND = 00 END_YEAR = 2003 END_MONTH = 07 END_DAY = 22 END_HOUR = 00 END_MINUTE = 00 END_SECOND = 00 INTERVAL = 21600 TIME_STEP = 300, TIME_STEP_FRACT_NUM = 0, TIME_STEP_FRACT_DEN = 1, / (iii)domainspec 部分:指定模式的计算区域的相关参数。其具体的参数值设置 于 WRF 模式的设置一致。例如: &domainspec NUM_DOMAINS = 3, XDIM = 105, YDIM = 85, GRID_ID = 1, 2, 3, PARENT_ID = 1, 1, 2, RATIO_TO_PARENT = 1, 3, 3, PARENT_TIME_STEP_RATIO = 1, 3, 3, DOMAIN_ORIGIN_LLI = 1, 53, 43, DOMAIN_ORIGIN_LLJ = 1, 35, 35, DOMAIN_ORIGIN_URI = 105, 88, 79, DOMAIN_ORIGIN_URJ = 85, 66, 69, MOAD_DELTA_X = 54000., MOAD_DELTA_Y = 54000., NUM_ACTIVE_SUBNESTS = 2,
42

ACTIVE_SUBNESTS PTOP_PA history_inname auxhist1_inname auxhist2_inname auxhist3_inname auxhist4_inname auxhist5_inname real_inname input_inname bdy_inname rst_inname history_outname auxhist1_outname auxhist2_outname auxhist3_outname auxhist4_outname auxhist5_outname input_outname bdy_outname rst_outname

= 2, 3, = 5000, = 'wrfout_d<domain>_<date>', = 'auxhist1_d<domain>_<date>', = 'auxhist2_d<domain>_<date>', = 'auxhist3_d<domain>_<date>', = 'auxhist4_d<domain>_<date>', = 'auxhist5_d<domain>_<date>', = 'wrf_real_input_em', = 'wrfinput_d<domain>', = 'wrfbdy_d<domain>', = 'wrfrst_d<domain>_<date>', = 'wrfhist_d<domain>_<date>', = 'auxhist1_d<domain>_<date>', = 'auxhist2_d<domain>_<date>', = 'auxhist3_d<domain>_<date>', = 'auxhist4_d<domain>_<date>', = 'auxhist5_d<domain>_<date>', = 'wrfinput_d<domain>', = 'wrfbdy_d<domain>', = 'wrfrst_d<domain>_<date>',

/ (2) 路径参数块(DIRECTORIES BLOCK) 路径参数块指定 WRF 模式系统的时所需要的各种路径参数。 包括两个部分: model_directories 和 data_directories。具体如下: (i)model_directories 部分:指定 WRF 模式系统的三个主要程序部分的安装目 录,即读 T213 场库程序安装的目录,WRFSI 安装的目录以及 WRF 模式安装的 目录。 T213ROOT: 指定读取 T213 场库的程序安装和运行目录,为绝对路径。 SIROOT: 指定 WRFSI 程序安装和运行目录,为绝对路径。 WRFROOT: 指定 WRF 模式程序运行目录,为绝对路径。 FCROOT: 指定 WRF 三维变分程序部分的更新初始场程序运行目录,为绝对路径。 WRF3DVROOT: 指定 WRF3DVAR 程序运行目录,为绝对路径。 OBROOT: 指定读观测资料程序运行目录,为绝对路径。 BCROOT 指定 WRF 三维变分程序部分的更新边条件程序运行目录,为绝对路径。 POSTROOT:
43

指定 WRF 模式后处理程序的安装和运行目录,为绝对路径。 VERIROOT: 指定 WRF 模式检验程序安装和运行目录,为绝对路径。 例如: &model_directories T213ROOT = '/pgpfs/fs1/ygcy_qu/run/readt213', SIROOT = '/pgpfs/fs1/ygcy_qu/run/wrfsi', WRFROOT = '/pgpfs/fs1/ygcy_qu/run/wrfrun00', FCROOT = '/pgpfs/fs1/ygcy_qu/run/upfc', WRF3DVROOT = '/pgpfs/fs1/ygcy_qu/run/3drun00', OBROOT = '/pgpfs/fs1/ygcy_qu/run/readob', BCROOT = '/pgpfs/fs1/ygcy_qu/run/upbc', POSTROOT = '/pgpfs/fs1/ygcy_qu/run/wrfpost', VERIROOT = '/pgpfs/fs1/ygcy_qu/run/verify', / (ii)data_directories 部分:指定 WRF 模式系统运行时的各个部分的程序的数据 存取相应路径。 MOADDATA: WRFSI 运行时的数据存放目录。 默认设置为 WRFSI 安装路径下的 data 子目录,但也可以为其他的新建的数据存放目录。在此路径下,必须 有 cdl 和 static 两个子目录。如果是新建的数据目录,则必须将安装路 径下 data 子目录中的 cdl 和 static 两个子目录拷贝到此目录下。程序运 行时还要新建 log 和 siprd 两个子目录。WRFSI 的区域生成程序 gengrid_model.exe 生成的静态数据存放在 static 子目录下,水平插值程 序 hinterp.exe 和垂直插值程序存取的数据放在 siprd 子目录下。他们的 状态记录文件存放在 log 子目录下。 WRFDATA: WRF 模式的 wrf.exe 程序运行时的输出结果数据存放目录。 TEMPLATE: WRFSI 程序运行时的模板路径,存放 wrfsi 的配置信息。 OB_ROOT: WRF3DVAR 程序运行时的观测资料存放路径。 BE_FILE: WRF3DVAR 程序运行时的背景场误差统计文件,包括全路径。 ANALPATH: 外部模式为 WRFSI 提供的初始场数据存放的路径。仅用于新版本的 WRFSI 1.3.1。 LBCPATH: 外部模式为 WRFSI 提供的边界场数据存放的路径。仅用于新版本的 WRFSI 1.3.1。 LSMPATH: 外部模式为 WRFSI 提供的陆面过程数据存放的路径。仅用于新版本的 WRFSI 1.3.1。 CONSTANTS_PATH:
44

外部模式为 WRFSI 提供的在模式积分过程中保持不变的气象场数据 (气候数据)存放的路径。 EXTDATAROOT: 外部模式(如 T213)为 WRFSI 提供的数据(如 readt213.exe 输出结果) 存放路径。此路径用于指定读取场库程序(readt213.exe)的数据存放 路径。 另外,在老版本的 WRFSI 20020328 程序中,此目录用于 grib_prep.exe 程序运行时的数据存放。 运行时, 程序将创建 log 和 extprd 两个子目录。 其中,log 子目录存放程序运行时的状态记录文件,extprd 子目录存放 grib_prep.exe 程序生成的结果数据。而水平插值程序 hinterp.exe 将从 extprd 子目录中读取数据。 PATH_TO_AVN 指定 AVN 模式为 WRFSI 提供的初始场和边界场数据(GRIB 码格式) 的存放路径。仅用于老版本的 WRFSI 20020328。 PATH_TO_ETA = 指定 ETA 模式为 WRFSI 提供的初始场和边界场数据(GRIB 码格式) 的存放路径。仅用于老版本的 WRFSI 20020328。 例如: &data_directories MOADDATA = '/pgpfs/fs1/ygcy_qu/moad/h00', WRFDATA = '/pgpfs/fs1/ygcy_qu/moad/h00', TEMPLATE = '', OB_DATA = '/pgpfs/fs1/ygcy_qu/moad/obdata', BE_FILE = '/pgpfs/fs1/ygcy_qu/run/be/be_original', ANALPATH = '/pgpfs/fs1/ygcy_qu/moad/extprd', LBCPATH = '/pgpfs/fs1/ygcy_qu/moad/extprd', LSMPATH = '', CONSTANTS_PATH = '/pgpfs/fs1/ygcy_qu/moad/extprd', EXTDATAROOT = '/pgpfs/fs1/ygcy_qu/moad/h00', PATH_TO_AVN = '/pgpfs/fs1/ygcy_qu/moad/h00', PATH_TO_ETA = '',/ (3) 读 T213 场库参数块(READ T213 BLOCK) 这一参数块是指定读取 T213 场库的区域大小以及数据输出格式。参数设置 与读取 T213 场库程序中的说明一致。详细设置参见读取 T213 场库的运行参数 配置说明(附录) 。 (4) WRFSI 参数块(WRFSI BLOCK) 这一参数块是指定 WRFSI 的相应参数。参数设置与 WRFSI 程序中的说明 一致。详细设置参 WRFSI 程序的运行参数配置说明(附录) 。 (5) WRF3DVAR 模式参数块(WRF3VAR BLOCK) 这一参数块是指定 WRF3DVAR 的相应参数。参数设置与 WRF3DVAR 程序 中的说明一致。详细设置参 WRF3DVAR 模式的运行参数配置说明(附录) 。 (6) WRF 模式参数块(WRFMODEL BLOCK)
45

这一参数块是指定 WRF 的相应参数。 参数设置与 WRF 程序中的说明一致。 详细设置参 WRF 模式的运行参数配置说明(附录) 。 5.2.2 运行 perl 脚本 (A) run.pl 功能:根据指定时间或者机器当前时间,修改模式参数配置文件 namelist.inc 中的运行时间参数,并根据指定的模块参数运行 WRF 模式系统。 输入文件:modifydate.pl wrfmodel.pl namelist.inc 输出文件:namelist.inc 用法: run.pl [选项] [参数] 选项:[-c] [-f forecast] [-h] [-i interval] [-m maxsteps] [-n jobname] [-o offset] [-q] [-s starttime] -c :拷贝标志。此选项设置是,则拷贝模式运行的最终结果 wrfout_d01_* 到$MOADDATA/fcst 目录下面。 -f forecast:预报时效长度,为正整数,单位为小时,缺省值为 24。 -h :在屏幕上显示帮助信息。 -i interval:模式循环的时间间隔,为小于等于 24 的正整数,单位为小时, 缺省值为 6。当设置了起始时间选项-s 时,此项不起作用,只有在缺省 模式起始时间选项-s 时起作用。比如当 interval=12,且 offset=0 时, 则确定模式的运行循环的时间间隔为 12 小时,即模式的起报时次为 00 时或者为 12 时。程序在运行时,根据当前的计算机时间来确定模式的 起报时间是为 00 时还是 12 时,当计算机的当前时间为 00~11 时,则 模式的起报时次为 00 时, 当计算机的当前时间为 12~23 时, 则模式时 次为 12 时。如果 offset 不等于 0,则在 offset=0 的基础上进行调整。 -m maxsteps:模式积分的最大步数,为非负整数。缺省时则根据起止时间 和积分步长计算出最大积分步数。WRFV2 中,此参数作为模式积分的 最大小时数。即使-f 指定了预报时效长度,此参数可以指定模式在运行 maxsteps 小时后终止运行。 -n jobname:PBS 作业的名称,为字符穿,缺省值为“wrf_xp” 。 -o offset:相对于指定的起始时间的偏移时间长度,为任意的整数,可以取 为负整数, 单位为小时, 缺省值为 0。 此选项设置时, 则将起报时间 (选 项-s 指定的起报时间 starttime 或者根据当前计算机时间确定的起报时 间 starttime)进行调整。 -p procs:并行运行的线程数,仅对并行程序起作用。其中 procs 为正整数, 指定线程的个数。 -q :运行方式的标志选项。设置此选项时,模式自动运行;不设置此选项 时,模式交互式运行,并显示相关的模式运行信息。缺省时为交互式。 -r:运行方式标志选项。设置此选项时,模式将按 shell 方式提交作业,而 不用 LoadLeveler 或者 PBS 等作业管理器。缺省此选项时,模式将利用 LoadLeveler 或者 PBS 等作业管理器进行作业管理。 -s starttime:预报起始时间,为数字型字符串,格式为 yyyymmddhh。其中, yyyy 为四位数字的年份,mm 为两位数字的月份,dd 为两位数字的日 期,hh 为两位数字的小时数。此参数缺省时,模式则更加计算机的当 前时间以及时间间隔选项”-i”指定的”interval”值来确定模式运行的起始 时间
46

参数:[ [ [ [readt213] wrfsi] wrf3dvar] wrfmodel] readt213:模块 readt213 标志参数,为小于等于 1 的非负整数。指定是否运 行 readt213.exe 程序。缺省值为 0。 0:不运行; 1:运行; wrfsi: 模块 wrfsi 标志参数, 为小于等于 6 的非负整数。 指定是否运行 WRFSI 程序。缺省值为 0。 0:不运行 WRFSI 程序; 1:运行全部的 WRFSI 程序,包括 grib_prep.exe, gridgen_model.exe, hinterp.exe 和 vinterp.exe; 2: 跳过 gridgen_model.exe, 运行 grib_prep.exe, hinterp.exe and vinterp.exe; 3: 跳过 grib_prep.exe, 运行 gridgen_model.exe, hinterp.exe and vinterp.exe; 4: 只运行 grib_prep.exe only; 5: 只运行 gridgen_model.exe 程序; 6: 只运行 hinterp.exe 和 vinterp.exe 程序; wrf3dvar:模块 wrf3dvar 标志参数,为小于等于 6 的非负整数。指定是否 运行 WRF3DVAR 程序。缺省值为 0。 0:不运行 WRF3DVAR 程序; 1:运行全部的 WRF3DVAR 程序,包括 UPFC, READOB,WRF3D and UPBC; 2: 跳过 UPBC,运行 UPFC, READOB and WRF3D; 3: 跳过 UPFC,运行 READOB,WRF3D, and UPBC; 4: 只运行 UPFC 程序; 5: 只运行 READOB and WRF3D 程序; 6: 只运行 UPBC 程序; wrfmodel:模块 wrfmodel 标志参数,为小于等于 3 的非负整数。指定是否 运行 WRF 模式的 real.exe 和 wrf.exe 程序。缺省值为 0。 0:不运行; 1:real.exe 程序和 wrf.exe 程序两者都运行; 2:只运行 real.exe 程序; 3:只运行 wrf.exe 程序。 post:模块 post 标志参数,为小于等于 1 的非负整数。指定是否运行 WRF 模式的后处理程序。缺省值为 0。 0:不运行; 1:运行后处理程序; verify:模块 verify 标志参数,为小于等于 1 的非负整数。指定是否运行 WRF 模式检验程序。缺省值为 0。 0:不运行; 1:运行检验程序; 示例: (1). 根据计算机当前时间,运行所有的模式步骤,模式积分 24 小时。设置模式 起报时间的“年月日”为当前计算机时间,时次为 00、06、12 或者 18 等时次之 一 (如当前时间为 2004-4-29_05:30:00,则起报时次为 2004-4-29_00:00:00) 。PBS
47

作业名称为“wrf_xp” 。 run.pl (2). 模式从 2004-4-29_00 时开始,跳过 readt213,grib_prep 和 UPFC,模式积分 48 小时。PBS 作业名称为“wrf_xp” 。 run.pl -s 2004042900 -f48 0 3 3 1 (3). 模式从 2004-4-28_12 时开始,跳过 readt213,grib_prep 和 gridgen_model, 模式积分 48 小时。PBS 作业名称为“wrfdeng” 。 run.pl -s 2004042900 -o-12 -f36 -nwrfdeng 0 6 1 1 (4). 根据计算机当前时间,跳过 readt213,grib_prep,gridgen_model 和 UPFC, 模式积分 36 小时。设置模式起报时间为当前计算机时间前推 12 小时,时次为 00 或者 12 等时次之一(如当前时间为 2004-4-29_05:30:00,则起报时次为 2004-4-28_12:00:00)时开始。PBS 作业名称为“wrfdeng” 。 run.pl -o-12 -i12 -f36 -nwrfdeng 0 6 3 1 (5). 根据计算机当前时间,跳过 readt213,grib_prep 和 gridgen_model,模式积分 36 小时。设置模式起报时间为当前计算机时间前推 12 小时,时次为 00,06,12 或 者 18 等 时 次 之 一 ( 如 当 前 时 间 为 2004-4-29_05:30:00 , 则 起 报 时 次 为 2004-4-28_12:00:00)时开始。PBS 作业名称为“wrf_xp” 。程序运行完后,将预 报结果文件拷贝到$MOADDATA/fcst 中。 run.pl -o-12 -f36 -c 0 6 1 1 (B) modifydate.pl 功能:根据指定时间或者机器当前时间,修改模式参数列表文件 namelist.inc 中的模式运行时间参数。 输入文件:namelist.inc 输出文件:namelist.inc 用法: modifydate.pl [选项] 选项: [-f forecast] [-h] [-i interval] [-m maxsteps][-o offset] [-s starttime] -f forecast:预报时效长度,为正整数,单位为小时,缺省值为 24。 -h :在屏幕上显示帮助信息。 (预留) -i interval:模式循环的时间间隔,为小于等于 24 的正整数,单位为小时, 缺省值为 6。当设置了起始时间选项-s 时,此项不起作用,只有在缺省 模式起始时间选项-s 时起作用。比如当 interval=12,且 offset=0 时, 则确定模式的运行循环的时间间隔为 12 小时,即模式的起报时次为 00 时或者 12 时。程序在运行时,根据当前的计算机时间来确定模式的起 报时间是为 00 时还是 12 时,当计算机的当前时间为 00~11 时,则模 式的起报时次为 00 时, 当计算机的当前时间为 12~23 时, 则模式时次 为 12 时。如果 offset 不等于 0,则在 offset=0 的基础上进行调整。 -m maxsteps:模式积分的最大步数,为非负整数。缺省时则根据起止时间 和积分步长计算出最大积分步数。WRFV2 中,此参数作为模式积分的 最大小时数。即使-f 指定了预报时效长度,此参数可以指定模式在运行 maxsteps 小时后终止运行。 -o offset:相对于指定的起始时间的偏移时间长度,为任意的整数,可以取 为负整数, 单位为小时, 缺省值为 0。 此选项设置时, 则将起报时间 (选 项-s 指定的起报时间 starttime 或者根据当前计算机时间确定的起报时
48

间 starttime)进行调整。 -s starttime:预报起始时间,为数字型字符串,格式为 yyyymmddhh。其中, yyyy 为四位数字的年份,mm 为两位数字的月份,dd 为两位数字的日 期,hh 为两位数字的小时数。此参数缺省时,模式则更加计算机的当 前时间以及时间间隔选项”-i”指定的”interval”值来确定模式运行的起始 时间 参数:无 备注: modifydate.pl 中调用到的函数&wrftool::compute_time()的时间计算中, 要将月份先减 1,计算完后再加上 1,否则会造成大小月错位,比如 4 月有 31 天,而 5 月可能只有 30 天。 示例: (1). 修改模式参数配置 namelist.inc 文件,设置模式起报时间的“年月日”为当 前计算机时间,时次为 00、06、12 或者 18 等时次之一(如当前时间为 2004-4-29_05:30:00,则起报时次为 2004-4-29_00:00:00) 。 modifydate.pl (2). 修改模式参数配置 namelist.inc 文件中模式起报时次为 2004-4-29_00,预报 时效为 48 小时。 modifydate.pl -s 2004042900 -f48 (3). 修改模式参数配置 namelist.inc 文件中模式起报时次为 2004-4-28_12,预报 时效为 36 小时。 modifydate.pl -s 2004042900 -o-12 -f36 (4). 修改模式参数配置 namelist.inc 文件,设置模式起报时间为当前时间前推 12 小时,时次为 00 或者 12 两时次之一(如当前时间为 2004-4-29_05:30:00,则起 报时次为 2004-4-28_12:00:00) 。 modifydate.pl -o-12 -i12 (C) wrfmodel.pl 功能:运行 WRF 模式系统。 输入文件:pbs.inc llcmd.inc rsh.inc namelist.inc $T213ROOT/namelist.input $MOADDATA/static/wrfsi.nl $MOADDATA/cdl/wrfsi.cdl $WRF3DVROOT/namelist.3dvar $WRFROOT/test/$casename/namelist.input 输出文件:jobcard.pl $T213ROOT/namelist.input $MOADDATA/static/wrfsi.nl $MOADDATA/cdl/wrfsi.cdl $WRF3DVROOT/namelist.3dvar $WRFROOT/test/$casename/namelist.input 用法: wrfmodel.pl [选项] 选项:[-c] [-h] [-n] [-q] [-r] -c :拷贝标志。此选项设置是,则拷贝模式运行的最终结果 wrfout_d01_* 到$MOADDATA/fcst 目录下面。 -h :在屏幕上显示帮助信息。 (预留) -n jobname:PBS 作业的名称,为字符穿,缺省值为“wrf_xp” 。
49

-p procs:并行运行的线程数,仅对并行程序起作用。其中 procs 为正整数, 指定线程的个数。 -q :运行方式的标志选项。设置此选项时,模式自动运行;缺省此选项时, 模式交互式运行,并显示相关的模式运行信息。 -r:运行方式标志选项。设置此选项时,模式将按 shell 方式提交作业,而 不用 LoadLeveler 或者 PBS 等作业管理器。缺省此选项时,模式将利用 LoadLeveler 或者 PBS 等作业管理器进行作业管理。 参数:无 脚本程序首先会检测参数配置文件里给出的路径设置, 然后根据参数配置设 置运行命令文件。当命令行不带参数-r 时,程序将修改 Loadleveler 作业卡文件 llcmd.inc; 当带有参数-r 时, 程序将修改 rsh.inc 文件, 并将结果输出到 jobcard.pl 文件中, 最后会将其作为作业卡文件来运行作业。 然后, 程序会根据运行的 WRF 系统程序块来修改相应目录的参数配置文件(namelist.input) 。比如当要运行 readt213.exe 程序, 则脚本程序会自动修改 readt213.exe 程序所在目录下的参数配 置 文 件 namelist.input , 否 则 将 跳 过 此 参 数 配 置 文 件 的 修 改 ; 当 运 行 gengrib_model.exe 或 hinterp.exe&vinterp.exe 程序时,则脚本程序会自动修改数 据路径 MOADDATA/data 下的参数配置文件 wrfsi.nl, 否则将跳过此文件的修改; 当运行 real.exe 或 wrf.exe 程序时, 脚本程序将自动修改 WRF 模式目录下的子目 录./test/$case_name/中的参数配置文件 namelist.input,否则将跳过此文件的修改。 自动修改完相应的作业卡以及参数配置文件后,脚本将提交作业卡(或者根据用 户交互信息决定是否提交作业卡)运行作业。 脚本运行后,如果要按 rsh 方式提交了作业卡运行作业,则在还必须在提交 作用前,在 WRF 模式运行的方案目录下创建一个名字为“host.list”的运行节点 信息文件,其格式为: sp01n05 denglt sp02n09 denglt sp02n09 denglt sp03n05 denglt sp04n01 denglt … 运行后,当前目录下生成两个状态记录文件: rst_wrfmodel.err:保存作业运行时产生的错误信息。 rst_wrfmodel.out:保存作业运行时产生的输出信息。 如果是按 Loadleveler 方式提交作业卡运行作业,在在相应的$MOADDATA/log 目录下产生相应的状态记录文件: rst_$model.err:保存作业运行时产生的错误信息。 rst_$model.out:保存作业运行时产生的输出信息。 其中,$model 表示相应的程序名称,有效名称为 readt213,gengrid,interp,real 以及 wrf。 示例: 1. 运用作业管理系统(PBS 或者 LoadLeveler)交互式运行 WRF 模式,PBS 作 业名称为“wrf_xp” 。
50

wrfmodel.pl 2. Shell 方式交互式提交 WRF 模式作业。 wrfmodel.pl -r 3. Shell 方式自动运行 WRF 模式。 wrfmodel.pl -r -q 4. 运用作业管理系统(LoadLeveler 或者 PBS)自动运行 WRF 模式,PBS 作业 名称为“wrfdeng” 。 wrfmodel.pl -q -nwrfdeng

特别提示:
1.脚本运行时,如果要按 rsh 方式提交了作业卡运行作业,则在还必须在提交 作用前, WRF 模式运行的方案目录 在 (如 em_real) 下创建一个名字为 “host.list” 的运行节点信息文件,其格式为: 节点名 用户名 举例如下: sp01n05 denglt sp02n09 denglt sp02n09 denglt sp03n05 denglt sp04n01 denglt … 2.运行时,由于机器型号和操作系统环境的不同,并行程序的运行方式也不同。 比如,有的机器是的运行方式是: mpirun -np 8 myprogram 而有些机器的运行方式是: myprogram -procs 8 这里的数字“8”是指定并行程序运行的线程数目。 因此, 在使用脚本程序提交作业时, 必须注意并行程序 (da-3dvar.exe 和 wrf.exe) 的运行方式。特别要注意用选项“-r”的 shell 方式提交时的运行方式,如果发现 并行程序提交失败,而串行程序正常的话,很可能时由于这个原因造成的。解决 的办法是弄清楚本机器的并行运行的命令行方式,然后修改 rsh.inc 文件中的并 行运行程序(da-3dvar.exe 和 wrf.exe)的命令行即可。比如将: $executable="da_3dvar.exe -procs $procs"; 修改成: $executable="mpirun -np $procs da_3dvar.exe"; 其中, $procs 是脚本程序中指定并行程序运行的线程数目的变量, 建议不要改动。 3.在 WRF 模式中,已经有输入输出文件名选项了,只是在 namelist 中未给出。 因此,只要在 WRF 的 namelist.input 文件中给出相应的关键词,就可以赋值。如 果带上路径的话,还可以指定输入输出文件路径。

51

6. 模式结果的显示处理 目前,已经初步地将 WRF 模式的输出结果转换成 VIS5D、GrADS 以及 MICAPS 的数据格式,显示 WRF 模式的输出结果。 6.1 Vis5D 格式 目前,将 WRF 数据结果转换成 Vis5D 数据格式的方法是采用 WRF 网站提 供的 WRF2Vis5D 的转换程序包。再运行 WRF2Vis5D 转换程序前,必须要求系 统中有 Vis5D 软件环境。如果系统中没有,则必须先进行安装。安装 Vis5D 的源 程 序 代 码 在 Vis5D 的 FTP 网 站 www.ssec.wisc.edu 中 下 载 , 文 件 名 为 vis5d-data.tar.Z。 将它解压到自己的一个目录中, 然后在 IBM SP 机器上可输入命 令“make ibm-x”进行编译。编译安装好 Vis5D 环境后,接下来就可以运行 WRF2Vis5D 程序,其操作步骤如下: (1) 从 WRF 网址下载 wrf2vis5d.tar 程序包; (2) 解压 wrf2vis5d.tar 文件 tar -xvmf wrf2vis5d.tar (3) 修改 makefile 文件; 首先,应该指定 NetCDF 和 Vis5D 的安装路径: LIBNETCDF = -L/usr/local/netcdf/lib -lnetcdf -lm LIBVIS5D = /usr/local/vis5d/src/binio.o /usr/local/vis5d/src/v5d.o INCLUDE = -I/usr/local/netcdf/include -I./ 其次,根据编译需要,必须指定编译的一些选项,比如: FC = xlf90 FCFLAGS = -g -C -qfree=f90 (4) 键入“make” 或者“make wrf_to_v5d”进行编译; (5) 修改 wrf_v5d_input 文件中的输出配置参数; 参数文件 wrf_v5d_input 中的数据格式如下: -1 ! number of times to put in vis5d file, negative means ignore the times 2000-01-24_18:00:00 U ! variable list for vis5d file, indent one space to skip V ! first five in list are special variables (diagnosed) W RAINC end_of_variable_list wrfout_01_000000 ! data files to pull fields from end_of_file_list -1 ! specify v5d vertical grid 0=cartesian, -1=interp to z from lowest h, >1 list levels (z) desired in vis5d file 1 0.8 2 2. 3 5..5 4 8. 5 10. 在 wrf_v5d_input 文件中,首先可以指定输出数据的时次和具体时间,也就是
52

让程序输出符合用户指定各个时次和指定具体时间的数据。WRF 模式结果数据 文件中的包含哪些时间的数据,可以用“ncdump”命令来看。例如: ncdump -h wrfout_d01_000000 > wrf.head 指定时次时,将配置参数文件 wrf_v5d_input 的第一行的第一个数据设置程用户 需要的时次数(大于零) 。设置具体每一时次的时间时,可以列出要输出的时间 字符串,形式为:yyyy-mm-dd_hh:mm:ss。y 表示年,m 表示月,d 表示天,h 表 示小时,m 表示分钟,s 表示秒。如果要将结果文件中包含的各个时次都输出的 话,可将时次数设置成-1,程序会自动地搜寻各个时次并输出。 wrf_v5d_input 文件中接下来的部分是设置要输出的变量名称列表。这些变 量名必须是 WRF 模式结果文件(NetCDF 格式)中包含的变量名。查看变量名 时,可以上面查看 ncdump 生成的头文件 wrf.head。在 wrf_v5d_input 中,包含一 些变量列表的例子。 如果不需要输出哪一个变量,只需在此变量名前面加一个空 格, 程序将会忽略这个变量。 另外, 在此文件中的前五个变量 (U,V,W,THETA,TK) 都是模式诊断量,而不是模式的直接输出量。变量列表的结束以 “end_of_variable_list”为标志。 wrf_v5d_input 的第三部分是文件列表部分。转换程序可以同时处理多个 WRF 模式的输出结果文件。只需将各个文件的名称列出即可。文件列表部分一 “end_of_file_list”为结束标志。 wrf_v5d_input 的最后一部分是指定输出量是否插值到等高面。 表示按模式 0 面直接输出; 表示输出量插值到模式层数相等的等高面上, -1 最低层为模式地形 的最低点的高度面, 最高层为模式层顶;大于 0 的整数表示插值到指定层数和各 层高度的等高面上。各层高度在指定层数后列出。 (6) 运行命令 wrf_to_v5d wrf_v5d_input wind.v5d 如果运行正确,即可得到 Vis5D 格式的输出文件 wind.v5d,当然也可以用 其他的文件名。 (7) 输入“vis5d wind.v5d” ,即可在 Vis5d 中进行显示。 6.2 MICAPS 格式 为了将 WRF 模式的 NetCDF 格式的结果转换成 MICAPS 系统所能识别的格 式,我进行了细致的程序设计,整个程序编写规范,具有很强的可移植,易于维 护。同时由于采用了 F90 的动态分配数组功能,对系统的内存开销要求非常小, 保证了以后高分辨率模式运行结果的处理能力。 6.2.1 程序设计 由于 MICAPS 系统的数据管理格式是各个变量的每个时次以及层次分别存 储为一个单独的文件,因此为了减少输入/输出的次数,提高后处理程序的效率, 在程序设计时采取以变量为单位, 即处理完一个变量的各个时次数据后再处理下 一个变量的思路。程序的流程示意图如图 11 所示。

53

开始

处理输入信息列表

变量循环:当1≤变量号≤变量总数

时间循环:当计算时间在起止时间内

获取变量信息

读取变量

去除耦合影响

去除跳点影响

按MICAPS格式输出变量

结束:变量循环

结束:时间循环

结束

图11. WRF后处理程序流程示意图 (WRF 到 MICAPS)

54

6.2.2 源程序 转换程序是在 WRF2Vis5D 和 WRF2GrADS 两个程序的基础上,采用 Fortran90 语句编写而成的。源程序文件包括: addmicaps.F cacul_time_util.F general_util.F makefile module_diagnostics.F module_map_utils.F module_wrf_getvar.F module_wrf_global_attr.F module_wrf_micaps_util.F module_wrf_var_nameinfo.F read_namelist_util.F wrf2micaps.F wrf_netcdf_util.F xy2latlon.F 另 外 , 除 了 源 程 序 代 码 外 , 还 有 编 译 规 则 文 件 makefile , 参 数 配 置 文 件 namelist.input,和参数配置预处理脚本文件 proc.sh。 6.2.3 转换程序的编译 编译时,只需键入“make micaps”命令,系统则会根据 makefile 中定义的 规则编译后处理程序。编译成功后,会产生一个可执行文件:wrf2micaps.exe 6.2.4 转换程序的运行 (1)编辑参数配置文件 namelist.input。 参数配置 namelist.input 中的信息包括指定输入文件、指定输出数据目录、 指定插值的等值面的类型、指定等值面的各层具体值、指定是否打印调试信息 以及指定各个输出变量。其格式如下: input_file = "/gpfs1/fs1/denglt/wrfdata/wrfv13/wrfout_20001116" DATA_ROOT = "/gpfs1/fs1/denglt/micaps" interp_horizonal = 1 ! 0: no interp, 1: 1:convert to Lat/Lon grids interp_vartical = 1 ! 0: no interp, 1: pressure levels, 2:height levels surface_levels = "1000., 925.,850.,700.,600.,500.,400.,300.,200.,150." !surface_levels = "0.8, 2.0, 3.0, 4.0, 5.5, 6.0, 7.0, 8.0, 9.0, 10.0" output_type =2 ! 1: to micaps, 2: to grads grid_x = 160 grid_y = 150 debug = .false. Model 3D Fields 3dmf=0|AL = "扰动密度倒数" ; 3dmf=0|P = "z@int(1-10:5.0),bold(1:1000.,2:925.,3:850.,5:500.,6-10:400.);\
55

a@5.0";"气压" ; 3dmf=0|PB = "z@int(1-10:5.0),bold(1:1000.,2:925.,3:850.,5:500.,6-10:400.);\ a@5.0";"静态气压" ; (半层) …… Post-Processed 3D fields 3dpf=0|ua = "z@int(1-10:4.0),bold(1-10:0.);p@int(1-10:4.0),bold(1-10:0.); \ a@4.0";"纬向风速" ; 3dpf=0|va = "z@int(1-10:4.0),bold(1-10:0.);p@int(1-10:4.0),bold(1-10:0.); \ a@4.0";"经向风速" ; …… Model Soil Fields slf=0|SMOIS = "a@5.0";"土壤湿度" ; slf=0|TSLB = "a@4.0";"土壤温度" ; Model 2D Fields 2dmf=1|HGT = "a@100,0.";"地形高度" ; 2dmf=0|RAINC = "a@5.0,0.";"累积总积云降水"; ACCUMULATED TOTAL CUMULUS \PRECIPITATION" ; …… Post-Processed 2D fields 2dpf=0|slvl = "a@4.0,0.";"海平面气压" ; 2dpf=0|TSK = "a@4.0,0.";"地表/海表温度" ; 其中,第一部分中 input_file 是指定输入数据的文件名,一次只能指定一个 结果文件名。 DATA_ROOT 是输出数据存放的目录, 可以任意指定用户具有读写 权限的路径名。 interp_horizonal 是指定是否将模式输出结果从模式的水平计算格 点转换到指定的经纬网格点范围中的标志量,0 表示不转换,1 表示转换到经纬 网格点。 interp_vertical 是指定插值面的类型的标志量,0 表示不插值, 直接按照模 式面输出,1 表示插值到指定的等压面输出,2 表示插值到指定的等高面输出。 surface_levels 是指定各插值面的具体值。当 interp_vertical=0 时程序将忽略此变 量;当 interp_vertical=1 时表示各等压面的值;当 interp_vertical=2 时表示各等高 面的值。output_type 是输出数据类型的标志量,1 表示输出为 MICAPS 类型,2 表示输出为 GrADS 类型。grid_x 和 grid_y 分别表示输出的经纬网格点的水平范 围。 debug 是程序是否输出调试信息的标志量,.true.” “ 表示输出调试信息;.false.” “ 表示不输出调试信息。 接下来的部分是指定程序输出变量信息的部分。程序将 WRF 模式的变量类 型分类为 5 种类型:二维的预报量,用“2dmf”标识;二维的诊断量,用“2dpf” 标识;三维预报量,用“3dmf”标识;三维诊断量,用“3dpf”标识;三维的土 壤变量,用“slf”标识。 变量指定信息可以续行写,续行标识用反斜杠“\” 。每一个变量的指定信息 中都一个“|”分隔符,它将信息分隔成两个部分。前一部分是指定变量是否要 输出,要输出时,他们的标识量等于 1,不要输出时,他们的标识量等于 0。后 一部是指定变量的具体相关信息,它包括变量名,变量的中文注释名,以及变量 在等高面或者等压面上的等值线间隔,加粗线等附加信息。变量名是等号右边部
56

分;等号左边的部分可能用引号括在一起,引号内的各部分用分号分隔开来。中 文注释部分为引号中的最后一部份;其他部分为变量的附加信息,其中,等高面 的信息用“z@”标识,等压面信息用“p@”标识,缺省时,用“a@”标识, 即任何一种等值面都采用的附加信息。附加信息的括号中的关键词“int”表示等 值线的间隔值,其后紧接各层取值,用小括号括起来;bold 表示 MICAPS 第四 类数据格式中的加粗线,其后紧接各层取值,用小括号括起来。括号中的各层取 值的规则是:层数值的范围为 1 到 n,对应于 surface_levels 中的各层,n 为 surface_levels 中的总层数;层数值之间可以用逗号连接,也可以用中画线“-” 连接一个范围,如 2-5 表示从第二到第五层。层数后面紧接间隔取值或加粗线取 值,他们之间用冒号分隔。 (2)运行 UNIX 的 shell 脚本 proc.sh。此脚本预处理输入参数配置文件 namelist.input, 将其中的信息写成标准的 Fortran90 的 namelist 数据格式。 并且可 以调用./wrf2micaps.exe 程序。运行正确后,会产生如下 MICAPS 数据格式的文 件,文件名具有以下的形式: ua_0850_2003041706.000 6.3 GrADS 格式 转换 GrADS 是在转换 MICAPS 格式的基础上实现的。 6.3.1 程序设计 由于 GrADS 系统的数据管理格式是依次存放每个变量的各层次在同一时次 的数据, 因此在程序设计时采取以时次为单位,即处理完一个时次的各个变量数 据后再处理下一个时次的思路。程序的流程示意图如图 12 所示。 开始 处理输入信息列表 变量循环:当1≤变量号≤变量总数 时间循环:当计算时间在起止时间内 获取变量信息 读取变量 去除耦合影响 去除跳点影响
57 按MICAPS格式输出变量

结束:变量循环

6.3.2 源程序文件包括: addmicaps.F cacul_time_util.F create_grads.F general_util.F makefile module_diagnostics.F module_map_utils.F module_wrf_getvar.F module_wrf_global_attr.F module_wrf_var_nameinfo.F read_namelist_util.F wrf2grads.F wrf_netcdf_util.F xy2latlon.F 同 样 , 除 了 源 代 码 文 件 外 , 还 有 编 译 规 则 文 件 makefile , 参 数 配 置 文 件 namelist.input,和参数配置预处理脚本文件 proc.sh。 6.3.3 转换程序的编译 编译时,键入命令, make grads 系统则会根据 makefile 中定义的规则编译后处理程序。编译成功后,会产生 一个可执行文件:wrf2grads.exe 6.3.4 转换程序的运行 (1)设置参数配置文件 namelist.input。 设置参数配置 namelist.input 中的信息与 WRF2MICAPS 中的设置方法相同。 (2)运行 UNIX 的 shell 脚本 proc.sh。 此脚本预处理输入参数配置文件 namelist.input,将其中的信息写成标准 的 Fortran90 的 namelist 数据格式。运行完 proc.sh 程序后,输入命令 wrf2grads.exe 运行正确后, 会产生如下 Grads 数据格式的文件和数据描述文件, 文件名 具有以下的形式: wrf2003041706_0000.ctl 描述文件 wrf2003041706_0000.dat 数据文件 (3) 运行 GrADS 软件,打开数据描述文件,即可显示 WRF 的结果。 grads -l -c “open wrf2003041706_0000.ctl”

58

附录 1

WRF 模式参数配置说明

注意,参数选项名称后跟的(max_dom)是表示此参数需定义成嵌套形式。 参数配置第一部分 这部分参数仅用于由真实大气方案的预处理程序产生的输入数据。 当输入数 据产生于理想大气试验方案时, 这部分参数将会被忽略。对于大多数真实大气方 案来说,起止时间的分和秒都应该设为 0。常用的小时和秒之间的换算关系有: 3 小时=10800 秒;6 小时=21600 秒;12 小时=43200 秒。 &time_control run_days 运行的天数 run_hours 运行的小时数 注意:如果模式积分时间大于 1 天,则可同时设置 run_days 和_run_hours,也可 设置 run_hours 一个参数。比如:模式运行的总时间长度为 36 小时,则可 设置 run_days=1, run_hours=12, 且 或者设置 run_days=0, run_hours=36。 且 run_minutes 运行的分钟数 run_seconds 运行的秒数 start_year(max_dom) =2001 四位数字表示的起始年份。 start_month(max_dom) =04 两位数字(01-12)表示的起始月份。 start_day(max_dom) =20 两位数字(01-31)表示的起始天数。 start_hour(max_dom) =12 两位数字(00-23)表示的起始小时数。 start_minute(max_dom) =00 两位数字(00-59)表示的起始分钟数。 start_second (max_dom) =00 两位数字(00-59)表示的起始秒数。
59

end_year(max_dom) =2001 四位数字表示的终止年份。 end_month(max_dom) = 04 两位数字(01-12)表示的终止月份。 end_day(max_dom) =21 两位数字(01-31)表示的终止天数。 end_hour =00 两位数字(00-23)表示的终止小时数。 end_minute =00 两位数字(00-59)表示的终止分钟数。 end_second =00 两位数字(00-59)表示的终止秒数。 说明:起止时间设置也可以用来控制模式的积分的起止。并且,real.exe 的时间 控制信息是用起止时间参数来设定的。 模 式 的 积 分 时 间 可 以 用 run_days 、 run_hours 等 来 控 制 , 也 可 以 用 end_year、end_month 等来控制。但前者 run_days 等优先与后者 end_year 等。而在 real.exe 中只用 end_year 等来控制时间信息。 interval_seconds =43200 前处理程序的两次分析时间之间的时间间隔,以秒为单位。也即模式的实时 输入数据的时间间隔,一般为输入边界条件的文件的时间间隔。 input_from_file (max_dom) =T 嵌套初始场输入选项。嵌套时,指定嵌套网格是否用不同的初始场文件。 fine_input_stream(max_dom) =0 选择从嵌套网格中的输入要素场,仅在嵌套网格时有用。0 表示选择从子嵌 套网格中输入的所有要素场,2 表示在子网格嵌套输入场中仅选择由通道 2 (在注册表中定义)所指定的那些要素场。 history_interval (max_dom) = 60 此参数指定模式结果输出的时间间隔,以分钟为单位。 frames_per_outfile (max_dom) = 1 此参数指定每一个结果文件中保存输出结果的次数,因此可以将模式结果 分成多个文件保存,默认值为 10。

60

restart =F 指定模式运行是否为断点重启方式。 restart_interval = 1440 此参数指定模式断点重启输出的时间间隔,以分钟为单位。 io_form_history =2 指定模式结果输出的格式, 2 为 netCDF 格式 io_form_restart =2 指定模式断点重启输出的格式, 2 为 netCDF 格式 io_form_initial =2 指定模式初始场数据的格式, 2 为 netCDF 格式 io_form_boundary =2 指定模式边界条件数据的格式, 2为netCDF格式, 4为PHD5格式, 5为GRIB1 格式(目前没有后处理程序),1为二进制格式(目前没有后处理程序)。 debug_level =0 此选项指定模式运行时的调试信息输出等级。 取值可为 0,50,100,200,300 , 数值越大,调试信息输出就越多,默认值为 0。 auxhist2_outname = "rainfall" 指定模式加密输出文件的文件名,缺省时取值为“auxhist2_d_” 。另外,需 要指出的是,加密输出变量需要修改注册表文件 Registry.EM。 auxhist2_interval = 10 此参数指定模式加密结果输出的时间间隔,以分钟为单位。 io_form_auxhist2 =2 指定模式加密输出文件的格式, 2 为 netCDF 格式 nocolons = .FALSE. 在输出文件名中是否用下划线“_”代替冒号“:” 。

运行 3DVAR 时需要的额外参数:
write_input

T 指定模式是否输出用于 3DVAR 的输入数据格式



inputout_interval

= 180 此参数指定模式结果输出用于 3DVAR 的输入数据的时间间隔,以分钟为 单位。

61

input_outname

= ?wrf_3dvar_input_d<domain>_<date>? 指 定 模 式 出 用 于 3DVAR 的 输 入 数 据 文 件 名 , 缺 省 时 取 值 为 “wrf_3dvar_input_d<domain>_<date>” 。 =

inputout_begin_y

0 四位数字表示输出 3DVAR 数据开始年份。 0 两位数字表示输出 3DVAR 数据开始月份。
= 0 两位数字表示输出 3DVAR 数据开始日期。 =

inputout_begin_mo

inputout_begin_d

inputout_begin_h

3 两位数字表示输出 3DVAR 数据开始时次。 0 两位数字表示输出 3DVAR 数据开始分钟数。 0 两位数字表示输出 3DVAR 数据开始秒数。 0 四位数字表示输出 3DVAR 数据终止年份。 0 两位数字表示输出 3DVAR 数据终止月份。 0 两位数字表示输出 3DVAR 数据终止日期。 12 两位数字表示输出 3DVAR 数据终止时次。 0 两位数字表示输出 3DVAR 数据终止分钟数。 0 两位数字表示输出 3DVAR 数据终止秒数。
= = = = = = = =



Inputout_begin_m

inputout_begin_s

inputout_end_y

inputout_end_mo

inputout_end_d

inputout_end_h

Inputout_end_m

inputout_end_s

说明:输出用于 3DVAR 输入数据的时间控制以上面的默认设置为例,模式将从 第 3 时次到第 12 时次每 180 分钟输出一次。

62

参数配置第二部分 &domains time_step = 60 积分的时间步长,为整型数,单位为秒。 time_step_fract_num =0 实数型时间步长的分子部分。 time_step_fract_den =1 实数型时间步长的分母部分。 说明:如果想以 60.3 秒作为积分时间步长,那么可以设置 time_step=60, time_step_fract_num=3,并且设置 time_step_fract_den=10。其中 time_step 对应与时间步长的整数部分,time_step_fract_num/time_step_fract_den 对应 于时间步长的小数部分。 max_dom =1 计算区域个数。计算区域默认值为 1,如果使用嵌套功能,则 max_dom 大 于 1。 s_we(max_dom) =1 x 方向(西-东方向)的起始格点值 (通常为 1). e_we(max_dom) =32 x 方向(西-东方向)的终止格点值 (通常为 x 方向的格点范围)。 s_sn (max_dom) =1 y 方向(南-北方向)的起始格点值 (通常为 1). e_sn (max_dom) =32 y 方向(南-北方向)的终止格点值 (通常为 y 方向的格点范围)。 s_vert (max_dom) =1 z 方向(垂直方向)的起始格点值。 e_vert (max_dom) =31 z 方向(垂直方向)的终止格点值,即全垂直 eta 层的总层数。垂直层数在各 嵌套网格中必须保持一致。 num_metgrid_levels =18 来自 WPS 的 metgrid 的输入数据的垂直层次数。 一般为 WPS 的三维变量的 层数加上一层地面量, 比如三维量是 17 层, 那么总数应该是 17+1=18 层。
63

eta_levels =1.0, 0.997, … , 0.0 模式的 eta 层数值,仅用于来自 WPS 的输入数据。此 eta 的数值个数要与 模式的垂直层数(e_vert)相一致。如果缺省,real 程序会自动生成一套 eta 数值。 force_sfc_in_vinterp =1 在垂直插值时,在边界层低层,使用地面量作为模式面量的层数。默认值 时只有 1 层,即最低层使用地面量作为模式面量。 p_top_requested =5000 模式的顶部气压,单位为帕。 interp_type =1 垂直插值的类型:1,气压线性插值;2,对数气压线性插值 lagrange_order =1 垂直插值的精度阶数:1,线性;2,二次 lowest_lev_form_sfc =.FALSE. 是否使用地面量作为模式最低层的值(u,v,t,q) 。.TRUE.:使用;.FALSE.: 利用通常的插值方法插值。 dx (max_dom) =10000 (单位为米) 指定 x 方向的格距。 在真实大气方案中,此参数值必须与输入数据中的 x 方向格距一致。 dy (max_dom) =10000 (单位为米) 指定 y 方向的格距。通常与 x 方向格距相同。 ztop (max_dom) =10000 (单位为米) 此参数指定模式顶的高度。通常取 20000 米。在真实大气方案中,用于高 度坐标动力框架模式, 此高度值必须与 WRF SI 的数据或其他输入数据中的 高度值相同。在质量坐标动力框架中,此高度值仅用于理想实验方案。 grid_id (max_dom) =1 计算区域的编号。一般是从 1 开始。 level (max_dom) =1 计算区域的嵌套等级。 主区域的嵌套等级为 1, 第一个嵌套区域的嵌套等级 为 2,以此类推。 parent_id (max_dom) =0 嵌套网格的上一级网格(母网格)的编号。一般是从 0 开始。 i_parent_start (max_dom) =0
64

嵌套网格的左下角(LLC)在上一级网格(母网格)中 x 方向的起始位置。 j_parent_start (max_dom) = 0 嵌套网格的左下角(LLC)在上一级网格(母网格)中 y 方向的起始位置。 parent_grid_ratio(max_dom) = 1 嵌套时,母网格相对于嵌套网格的水平网格比例。在真实大气方案中,此 比例必须为奇数;在理想大气方案中,如果将返馈选项 feedback 设置为 0 的话,则此比例也可以为偶数。 parent_time_step_ratio (max_dom) = 1 嵌套时,母网格相对于嵌套网格的时间步长比例。 feedback =1 嵌套时,嵌套网格向母网格得反馈作用。设置为 0 时,无反馈作用。而反 馈作用也只有在母网格和子网格的网格比例(parent_grid_ratio)为奇数时才 起作用。 smooth_option =0 向上一级网格(母网格)反馈的平滑选项,只有设置了反馈选项为 1 时才 起作用的。 0: 不平滑; 1: 1-2-1 平滑; 2: smoothing-desmoothing 移动网格控制参数说明:控制移动嵌套网格的方式有两种:1. 用户指定移动网 格,此方式是指嵌套网格的每一次移动都是由用户通过参数来指定;2. 自 动移动网格,此方式是指移动嵌套网格在启动后,根据模式的计算状态, 自动判断下一次的移动参数。 用户指定移动:编译时需要在 ARCHFLAGS 选项中添加“-D MOVE_NESTS” 来激活。允许的最大移动套网格移动次数为 50,不过也可以在源程序 frame/module_driver_constants.F 进行修改。) num_moves = 4 移动嵌套网格总移动次数。 move_id = 2,2,2,2, 每一次移动嵌套网格区域编号列表。 move_interval = 60,120,150,180, 每一次移动的启动时间列表,单位为分钟,自模式积分起始时刻算起。 move_cd_x = 1,1,0,-1, 在 i 方向(即东西方向)每一次相对于父网格移动格点数。 move_cd_y = 1,0,-1,1, 在 j 方向(即南北方向)每一次相对于父网格移动格点数。

65

正整数表示顺着 i/j 值增大的方向,负值表示顺着 i/j 值减小的方向。0 表示 不移动。目前移动距离限制只能为一个网格单元。 自动移动:编译时需要在 ARCHFLAGS 选项中添加“-D MOVE_NESTS”和 “-DVORTEX_CENTER”来激活。目前,这些参数是应用中等涡旋追随法 (mid-level vortex following algorithm)来确定嵌套网格的移动,还 在测试阶段。 vortex_interval = 15 经过多长时间计算一次涡旋的位置,单位为分钟 max_vortex_speed = 40 涡旋的最大移动速度,用于计算新涡旋位置的搜索半径 corral_dist =8 移动嵌套网格靠近粗网格边界允许的最大网格单元数, 此参数也就是规定了 移动网格靠近粗网格允许的最大距离。 参数配置第三部分 虽然不同的嵌套网格可以使用不同的物理方案, 但必须注意没中方案的使用 条件和范围。 &physics chem_opt 此选项指定是否使用化学过程方案,默认值为 0。目前还没实现。 mp_physics (max_dom) 此选项设置微物理过程方案,默认值为 0。目前的有效选择值为: = 0, 不采用微物理过程方案 = 1, Kessler 方案 (暖雨方案) = 2, Lin 等的方案 (水汽、雨、雪、云水、冰、冰雹) = 3, WSM 3 类简单冰方案 = 4, WSM 5 类方案 = 5, Ferrier(new Eta)微物理方案(水汽、云水) = 6, WSM 6 类冰雹方案 = 8, Thompson 等方案 = 98, NCEP 3 类简单冰方案 (水汽、云/冰和雨/雪) (将放弃) = 99, NCEP 5 类方案(水汽、雨、雪、云水和冰)(将放弃) 新添参数: mp_zero_out = 0, 选用微物理过程时,保证 Qv .GE. 0, 以及当其他一些水汽变量小于临界值 时,将其设置为 0。 = 0, 表示不控制,
66

= 1, 除了 Qv 外,所有的其他水汽变量当其小于临界值时,则设置为 0 = 2, 确保 Qv .GE. 0, 并且所有的其他水汽变量当其小于临界值时,则设 置为 0 。 mp_zero_out_thresh = 1.e-8 水汽变量(Qv 除外)的临界值,低于此值时,则设置为 0 (kg/kg)。 ra_lw_physics(max_dom) 此选项指定长波辐射方案,默认值为 0。有效选择值如下: = 0, 不采用长波辐射方案 = 1, rrtm 方案 = 99, GFDL (Eta) 长波方案 (semi-supported) ra_sw_physics (max_dom) 此选项指定短波辐射方案,默认值为 0。有效选择值如下: = 0, 不采用短波辐射方案 = 1, Dudhia 方案 = 2, Goddard 短波方案 = 99, GFDL (Eta) 短波方案 (semi-supported) radt (max_dom) 此参数指定调用辐散物理方案的时间间隔, 默认值为 0, 单位为分钟。 通常 比较合理的间隔值为 30 分钟。当网格水平分辨率提高时,则需将间隔时间 相应地缩短。建议为水平分辨率的 1 倍,如 dx=10km,则取 10 分钟。 nrads (max_dom) = 用于 NMM 版本 WRF。指定调用短波辐散过程的时间间隔,单位为粗网格 的时间步数。默认值在 Registry.NMM 进行设置,但也可在 namelist.input 文件中重新赋值。模式会根据此数值计算 radt 的值。 nradl (max_dom) = 用于 NMM 版本 WRF。指定调用长波辐散过程的时间间隔,单位为粗网格 的时间步数。默认值在 Registry.NMM 进行设置,但也可在 namelist.input 文件中重新赋值。模式会根据此数值计算 radt 的值。 co2tf = 0 CO2 的传输函数参数,用于 GFDL 辐射方案 = 0, 从预生成的数据文件中读取 CO2 函数数据 = 1, 模式自己生成 CO2 函数 sf_sfclay_physics (max_dom) 此选项指定近地面层 (surface-layer)方案, 默认值为 0。旧参数表中的 bl_sfclay_physics ,有效选择值有: = 0, 不采用近地面层方案 = 1, Monin-Obukhov 方案
67

= 2, MYJ Monin-Obukhov 方案 (仅用于 MYJ 边界层方案) = 3, NCEP Global Forecast System scheme sf_surface_physics(max_dom) 此选项指定陆面过程方案,默认值为 0。旧参数表中的 bl_surface_physics, 有效选择值有: = 0, 不采用陆面过程方案 = 1, 热量扩散方案 = 2, Noah 陆面过程方案 = 3, RUC 陆面过程方案 bl_pbl_physics (max_dom) 此选项指定边界层方案,默认值为 0。有效选择值有: = 0, 不采用边界层方案 = 1, YSU 方案 = 2, Eta Mellor-Yamada-Janjic TKE(湍流动能) 方案 = 3, NCEP Global Forecast System scheme = 99, MRF 方案(将放弃) bldt (max_dom) 此参数指定调用边界层物理方案的时间间隔,默认值为 0,单位为分钟。 0 (推荐值)表示每一个时间步长都调用边界层物理方案。 cu_physics (max_dom) 此选项指定积云参数化方案,默认值为 0。有效选择值有: = 0, 不采用积云参数化方案 = 1, 浅对流 Kain-Fritsch (new Eta)方案 = 2, Betts-Miller-Janjic 方案 = 3, Grell-Devenyi 集合方案 = 4, 简化 Arakawa-Schubert 方案 = 99, 老 Kain-Fritsch 方案

cudt(max_dom) 此参数设定积云参数化方案的调用时间间隔, 默认值为 0, 单位为分钟。一 般的积云参数化方案是每一步都要调用,但如果是用 Kain-Fritsch 方案 (cu_physics=1),则可以设 cudt=5。 ncnvc (max_dom) = 用于 NMM 版本 WRF。指定调用积云参数化过程的时间间隔,单位为粗网 格的时间步数。 默认值在 Registry.NMM 进行设置,但也可在 namelist.input 文件中重新赋值。模式会根据此数值计算 cudt 的值。

68

ISFFLX - 在使用扰动边界层时有效,即 sf_sfclay_physics = 1 此选项指定在选用扰动边界层和陆面物理过程时,是否考虑地面热量和水 汽通量,默认值为 1: 1 = 考虑地面通量 0 = 不考虑地面通量 IFSNOW 此选项指定是否考虑雪盖效应。考虑雪盖效应时,必须要有雪盖输入场。 默认值为 0,只有在利用扰动边界层 PBL 预报土壤温度是才有效,即 sf_surface_physics = 1。 1 = 考虑雪盖效应 0 = 不考虑雪盖效应 ICLOUD 此参数指定辐射光学厚度中是否考虑云的影响,默认值为 1。仅当 ra_sw_physics = 1 和 ra_lw_physics = 1 时有效。 1 = 考虑云的影响 0 = 不考虑云的影响 surface_input_source 此参数知道土地利用类型和土壤类型数据的来源格式,默认值为 1。 1 = SI/gridgen(由 SI 的 gridgen_model.exe 程序产生) 2 = 其他模式产生的 GRIB 码数据 (VEGCAT/SOILCAT 数据都在由 SI 产生的 wrf_real_input_em 文件中) num_soil_layers 指定陆面模式中的土壤层数,默认值为 5 =5: 热量扩散方案 = 4: Noah 陆面过程方案 = 6: RUC 陆面过程方案 maxiens 默认值为 1,仅用于积云参数化方案中的 Grell-Devenyi 集合方案 maxens 默认值为 3,仅用于积云参数化方案中的 Grell-Devenyi 集合方案 maxens2 默认值为 3,仅用于积云参数化方案中的 Grell-Devenyi 集合方案 maxens3 默认值为 16,仅用于积云参数化方案中的 Grell-Devenyi 集合方案 ensdim
69

默认值为 144, 仅用于积云参数化方案中的 Grell-Devenyi 集合方案 说明:以上这些用于 Grell-Devenyi 方案的默认值,都是一下推荐使用的数值。 如果要改变数值,请谨慎修改。

seaice_threshold = 271 海冰温度临界值。当 TSK 小于此临界值时,如果模式格点是水体,陆面过 程选用 5 层的 SLAB 方案,则将此模式格点设置为陆地,且为永久性冰体; 如果模式格点是水体,陆面过程选用 Noah 方案,则将此模式格点设置为陆 地,且为永久性冰体,并将设置 0~3 米的 TEMPS,以及设置 SMOIS 和 SH2O。 sst_update =0 时变海温控制参数。0 表示不用,1 表示使用。如果选择使用时变海温,则 real.exe 会从 wrflowinp_d01 文件中读取 SST 和 VEGFRA 数据,wrf.exe 则 会以更新边条件数据相同的时间间隔来更新这些数据。要使用此功能,则 在参数列表文件 namelist.input 的时间控制区还必须包含 auxinput5_interval, auxinput5_end_h, 和 auxinput5_inname = "wrflowinp_d<domain>"。 参数配置第四部分 &dynamics dyn_opt 模式框架配置选项,默认值为 2: 1 = 欧拉高度坐标 (已经放弃) 2 = 欧拉质量坐标 3 = 半拉格朗日 (目前还没完成) rk_ord 本参数定义 Runge-Kutta 时间积分方案阶数,默认值为 3: 2 = Runge-Kutta 二阶 3 = Runge-Kutta 三阶 (推荐) diff_opt 湍流和混合作用选项,默认值为 0: 0 = 没有湍流或者显式空间数值滤波(km_opt 将被忽略) (explicit spatial numerical filters) 1 = 老扩散方案, 计算坐标面上二阶扩散项。 如果没有指定 PBL 选项, 则用 kvdif 选项当作垂直扩散系数。 通常用于 km_opt=1 或者 4。 在 ( 真实大气方案的水平分辨率格距小于 10km 时,推荐使用 1) 2 = 新扩散方案, 计算物理空间(x,y,z)中的混合作用项(应力形式)。用 km_opt 来指明湍流参数化过程。
70

km_opt 湍涡系数选项,默认值为 1: 1 = 固 定 不 变 ( 用 参 数 配 置 第 三 部 分 的 khdif, kvdif 参 数 值 ) 与 diff_opt=1 的区别在于 km_opt 的水平扩散作用不在模式的 zeta 面上。因此,只有在没有地形的情况下,这两个选项的作用才是相 同的。 2 = 1.5 阶 TKE(湍流动能)闭合(3D) 3 = Smagorinsky 一阶闭合 说明:2 和 3 在水平格距大于 2km 时,不推荐使用。 4 =水平 Smagorinsky 一阶闭合 说明:4 在水平格距小于 10km 时,推荐使用。 damp_opt 顶层抽吸作用标志选项 (当 diff_opt = 1 时,此选项失效),默认值为。 同 时,必需在参数配置第三部分设置 zdamp 和 dampcoef 参数。 0 = 无抽吸作用 1 = 有抽吸作用 w_damping 默认值为 0。垂直速度拟制标志选项 (用于实际业务) 0 = 无拟制作用 1 = 有拟制作用 zdamp (max_dom) 只有在 damp_opt = 1 时,才使用此参数。 此参数设定模式顶部的抽吸厚度。推荐值为 5000 米,单位为米。如果选项 diff_opt=1,那么 zdamp 参数无效。 base_temp = 290., 用于真实数据,欧拉质量坐标方案。基准海平面气温(K)。 base_pres = 10^5 用于真实数据,欧拉质量坐标方案。基准海平面气压(Pa)。勿需改动。 base_lapse = 50., 用于真实数据,欧拉质量坐标方案。基准气温直减率(K)。勿需改动。 dampcoef (max_dom) (默认值为 0) 只有在 damp_opt = 1 时,才使用此参数。 此参数指定抽吸系数(dampcoef <= 0.2),并且与 zdamp 选项一起配合使用, 默认值为 0,使用时最好 dampcoef <= 0.15。 khdif (max_dom)
71

此参数设定水平扩散系数(单位为 m^2/s),默认值为 0。使用此参数时,必 须设定选项 diff_opt = 1 或者 km_opt = 1。 kvdif (max_dom) 此参数设定垂直扩散系数(单位为 m^2/s),默认值为 0。使用此参数时,必 须设定选项 diff_opt = 1 或者 km_opt = 1。 smdiv(max_dom) 此参数设定辐散抽吸(系数) (通常取为 0.1),默认值为 0。 此参数在时间分 裂 RK 方案中用于选择性地消除声波。 emdiv (max_dom) 此参数用于欧拉质量模式框架中指定额外模态滤波系数(external-mode filter coef),默认值为 0.01。 只用于欧拉质量坐标模式框架的真实大气方案中(通常取为 0.01)。 epssm (max_dom) 此参数指定垂直声波的离心时间(time off-centering), 默认值为 0.1。此参数 在时间分裂 RK 方案中用于选择性地消除声波。 non_hydrostatic(max_dom) 模式动力框架参数,指定模式动力框架是否是非静力模式,.true.为非静 力,.false.为静力,默认为.False.。 pert_coriolis (max_dom) = .false., 科氏参数,仅影响扰动风场 (适用于理想方案) mix_full_fields(max_dom) = .true., 与 diff_opt = 2 配合使用。除高分辨率的理想模拟外,推荐取值为".true.", 但 damp_opt 不能同时为 1。 当取”.false.”时,表示混合前扣除 1 维的静态廓 线(base-state profile) 。 h_mom_adv_order (max_dom) 此选项指定水平动量平流的阶数,默认值为 3。(例如 5=5 阶,等等) ,有 效值为 2~6,推荐值为 5。 v_mom_adv_order (max_dom) 此选项指定垂直动量平流的阶数,默认值为 3。有效值为 2~6,推荐值为 3。 h_sca_adv_order (max_dom) 此选项指定水平标量(scalar)平流的阶数,默认值为 3。有效值为 2~6,推 荐值为 5。

72

v_sca_adv_order (max_dom) 此选项指定垂直标量平流的阶数,默认值为 3。有效值为 2~6,推荐值为 3。 time_step_sound (max_dom) 每一时间步长中声波的步数(sound steps)。通常为 4,默认值为 10。如果 时间步长远大于 6×dx(公里) ,则需增加声波步数。 参数配置第五部分 &bc_control spec_bdy_width 此参数指定用于边界过渡的格点总行数, 默认值为 5。 此参数只用于真实大 气方案。参数的大小至少为 spec_zone 和 relax_zone 的和。 spec_zone 指定区域(specified zone)的格点数,默认值为 1。指定边条件时起作用。 relax_zone 指定松弛区域的格点数,默认值为 4。指定边条件时起作用。 specified (max_dom) 此选项指定是否使用特定边条件,逻辑型, 默认值为 .false.。 特定边条件 选项只用于真实大气方案的数值模拟中,并且要求多个时次的边条件数据 (文件 wrfbdy)。 periodic_x (max_dom) 此选项指定在 x 方向是否使用周期性边界条件。逻辑型, 默认值为 .false.。 通常只用于理想大气试验方案。 symmetric_xs (max_dom) 此选项指定在 x 方向的起始点(西边界)是否使用对称性边界条件。逻辑型, 默认值为 .false.。通常只用于理想大气试验方案。 symmetric_xe (max_dom) 此选项指定在 x 方向的终止点(东边界)是否使用对称性边界条件。逻辑型, 默认值为 .false.。通常只用于理想大气试验方案。 open_xs (max_dom) 此选项指定在 x 方向的起始点(西边界)是否使用自由边界条件。逻辑型, 默 认值为 .false.。通常只用于理想大气试验方案。 open_xe (max_dom)
73

此选项指定在 x 方向的终止点(东边界)是否使用自由边界条件。逻辑型, 默 认值为 .false.。通常只用于理想大气试验方案。 periodic_y (max_dom) 此选项指定在 y 方向是否使用周期性边界条件。 逻辑型, 默认值为 .false.。 通常只用于理想大气试验方案。 symmetric_ys (max_dom) 此选项指定在 y 方向的起始点(南边界)是否使用对称性边界条件。逻辑型, 默认值为 .false.。通常只用于理想大气试验方案。 symmetric_ye (max_dom) 此选项指定在 y 方向的终止点(北边界)是否使用对称性边界条件。逻辑型, 默认值为 .false.。通常只用于理想大气试验方案。 open_ys (max_dom) 此选项指定在 y 方向的起始点(南边界)是否使用自由边界条件。逻辑型, 默 认值为 .false.。通常只用于理想大气试验方案。 open_ye (max_dom) 此选项指定在 y 方向的终止点(北边界)是否使用自由边界条件。逻辑型, 默 认值为 .false.。通常只用于理想大气试验方案。 nested (max_dom) 此选项设定嵌套边条件。逻辑型, 默认值为 .false.。 参数配置第六部分 &namelist_quilt 参数列表的这一部分用于控制 MPI 异步通讯形式的输入/输出。 nio_tasks_per_group 此参数指定模式需要多少个 I/O 处理器: = 0, 不要求单独的 I/O 处理器。 = n, 如果 n>0, 表明需要 n 个 I/O 处理器。 如果指定需要单独的 I/O 处理器,那么模式要求的总的处理器数目必须大 于 n+模式计算的处理器数。例如,如果令 nio_tasks_per_group = 1,而用户 只申请了 5 个处理器来运行整个系统,那么只有 4 个处理器用于模式计算, 而有 1 个处理器仅用于输入/输出。 nio_groups 设置为 1,目前为预留参数,请勿改动。

74

tile_sz_x 在共享式内存进程中指定 x 方向计算的格点数,默认值为 0。 如果指定了 numtiles,则不需要此参数。 tile_sz_y 在共享式内存进程中指定 y 方向计算的格点数,默认值为 0。 如果指定了 numtiles,则不需要此参数。 numtiles 此参数在共享式内存进程中指定每个内存块中的内存片数,默认值为 1。 (或者是指定上面 tile_sz_x 和 tile_sz_y 两个参数) nproc_x 区域分解时,指定 x 方向上的上的线程数,默认值为-1。 nproc_y 区域分解时,指定 x 方向上的上的线程数,默认值为-1。 -1: 程序自动分解 >1: 用于分解的数目。

75

附录 2
要素名称 温度 高度 东西风 南北风 垂直速度 涡度 散度 比湿 要素 代码 11 (T) 7 (H) 33 (U) 34 (V) 40 (O) 41 (A) 42 (J) 51 (L) 52 (R) 211 (T) 1 (P) 202 (U10) 203 (V10) 2 (P) 229 (T2) 230 (R2) 单位 K 位势 米 米/秒 米/秒

T213 场库参数表
场类型: BJGF 层次号 数据区大小 时次 时效 层次 个数

表 1 T213 客观分析 SP(0.5625°x0.5625?)场库参数表 (一)

17 帕/秒 秒-1 00 秒
-1

10,20,30,50, 70,100, 150,200, 250,300, 400,500, 600,700, 850,925, 1000

BUF (640,321)

06
千克/千 克

00 12 14 18

相对湿度

%

50,70,100, 150,200, 250,300, 400,500, 600,700,850, 925,1000 9999 9999 9999 9999 9998 9999 9999

BUF (640,321)

地面温度 地面气压 10 米 U 10 米 V 海平面气 压 2 米温度 2 米相对 湿度

K 百帕 米/秒 米/秒 百帕 K %

1 1 1 1 1 1 1

BUF (640,320) BUF (640,321) BUF (640,320)

BUF (640,321) BUF (640,320)

注:BUF(640,321) BUF(640,320)

数组范围:经向 0?→360?,纬向 90?N→90?S,纬向等距。 数组范围:经向 0?→360?,纬向 89.57?N→89.57?S, 纬向高斯格点不等距,接近 0.5625?。

76

表 2 T213 客观分析 SP(0.5625×0.5625)场库参数表 (二) 要素名称 温度平流 涡度平流 温度露点差 水汽通量 水汽通量 散度 ?se K 指数 要素 代码 216 (Q) 241 (Y) 217 (D) 155 (F) 156 (G) 158 (B) 128 (K) 单位 10-6C/秒 6 10 /秒 10-1?C 10-1 克/
百帕?厘米?秒
-11 2

场类型: BJGF 层次号 200,500, 700,850, 925,1000 数据区大小

时次

时效

层次 个数

00 00 12 3 500,700, 850

BUF (321,161)
(导出量,仅东北半球)

10 克/
百帕?厘米?秒

-7

K ?C 1 9998

注:BUF(321,161) (对导出量)

数组范围:经向 0?→180?E,纬向 90?N→0?(赤道), 纬向等距。

表 3 T213 预报 SP(0.5625×0.5625)场库参数表 (一) 要素名称 温度 高度 东西风 南北风 垂直速度 比湿 要素 代码 11 (T) 7 (H) 33 (U) 34 (V) 40 (O) 51 (L) 单位 K 位势米 米/秒 米/秒 帕/秒
千克/千克

场类型:BJGL 层次 个数 层次号 数据区大 小

时次

时效

12

相对湿度

52 (R) 2 (P)

%

00,03,06, 09,12,15, 18,21,24, 27,30,33, 36,39,42, 45,48,51, 54,57,60, 63,66,69, 72, 84,96, 108,120, 144, 168 192 216 240

17

10,20, 30,50, 70,100, 150,200, 250,300, 400,500, 600,700, 850,925, 1000 50,70,100, 150,200, 250,300, 400,500, 600,700, 850,925, 1000 9998

BUF (640,321)

14

海平面气压

百帕

1

77

注:BUF(640,321) BUF(640,320) BUF(321,161) (对导出量)

数组范围:经向 0?→360?,纬向 90?N→90?S,纬向等距。 数组范围:经向 0?→360?,纬向 89.57?N→89.57?S, 纬向高斯格点不等距,接近 0.5625?。 数组范围:经向 0?→180?E,纬向 90?N→0?(赤道), 纬向等距。

表 4 T213 预报 SP(0.5625×0.5625)场库参数表 (二) 要素名称 涡度 散度 地面温度 地面气压 10 米 U 10 米 V 2 米温度 2 米相对 湿度 地面降水 要素 代码 41 (A) 42 (J) 211 (T) 1 (P) 202 (U10) 203 (V10) 229 (T2) 230 (R2) 54 (E) 63 (RC) 单位 秒-1 秒
-1

场类型:BJGL 层次 个数 17 层次号 10,20,30,50,70, 100,150,200,250, 300,400,500,600, 700,850,925,1000 9999 9999 9999 9999 9999 9999 9999 BUF (640,320) 数据区大 小 BUF (640,321) BUF (640,320) BUF (640,321)

时次

时效 00,03,06, 09,12,15, 18,21,24, 27,30,33, 36,39,42, 45,48,51, 54,57,60, 63,66,69, 72,84,96, 108,120, 144, 168 192 216 240 03,06,09, 12,15,18, 21,24,27, 30,33,36, 39,42,45, 48,51,54, 57,60,63, 66,69,72, 84,96,108 ,120,132

K 百帕 米/秒 米/秒 K % 毫米

12

1 1 1 1 1 1 1

对流降水

毫米

1

9999

BUF (640,320)

温度平流 涡度平流 温度露点差

216 (Q) 241 (Y) 217 (D)

10-6C/秒 6 10 /秒 10-1?C
-11 2

200,500 700,850 925,1000

00,06,12, 18,24,30, 36,42,48,

78

水汽通量 水汽通量 散度 ?se K 指数 变高 H 的预报 误差 T 的预报 误差 P 的预报 误差

155 (F) 156 (G) 158 (B) 128 (K) 207 208 212 201

10-1 克/
百帕?厘米?秒

60,72, 96, 120,144, 168

3

500,700 850

10-7 克/
百帕?厘米?秒

BUF (321,161)
(导出量,仅东北 半球)

K ?C 位势米 位势米 K 百帕 1 24,48, 72,96, 120,144, 168 1 1 5 200,500 700,850 1000 9998 9998 500

79


相关文章:
附录1 WRF模式参数配置说明
附录1 WRF模式参数配置说明_高等教育_教育专区。WRF模式参数附录1 WRF 模式参数...自 动移动网格,此方式是指移动嵌套网格在启动后,根据模式的计算状态, 自动判断...
BMB_Fang_WRF
WRF模式运行指南 83页 1财富值 WRF-CLM耦合模式 21页 免费 WRF目录文件说明 2页 免费 天气研究和预报模式 21页 免费 WRF 3DVAR同化系统介绍 27页 5财富值如...
我国天气预报业务
WRF模式运行指南 83页 1财富值 多普勒雷达资料在中尺度模... 12页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。...
WRF中namelist中参数意义
/ OBSGRID模式参数配置说明 WRF模式参数配置说明 注意,参数选项名称后跟的(max_...比如:模式运行的总时间长度为 36 小时,则可 设置 run_days=1, 且 run_...
wrf格式课件转wmv说明书
打开,该软件将自动转化 格式(将看到转化进度小窗口) 上面窗口进度走完后,该...WRF输出变量说明 29页 免费 WRF模式入门指南 42页 免费 WRF模式技术手册 121页...
WRFV3.1中文说明
下面是各个步骤的详细 说明: Step 1: 确定模式区域 如果 WPS 安装成功,会在...如果 WPS 要为 ARW(Advanced Research WRF)模拟而运行,那 wrf_core 就设成‘...
Run WPS
WRF模式运行指南 83页 1财富值 自己的WRF安装总结 16页 免费 穷举PIN码教程 8页 免费 用Minidwep-gtk来破解打开... 3页 10财富值 WPS-run 38页 1财富值如...
WRFv3.4.1并行版本安装说明
2.sysu.edu.cn) 樊琦 (eesfq@mail.sysu.edu.cn) 本说明适用于在 ubuntu(64 位)linux 系统中安装 WRFv3.4.1 并行版本, 内容包括 WRF 的安装、运行以及...
MM5地形中文文档
WRF模式运行指南 83页 1下载券M​M​5​地​形​中​文​文​档 暂无评价|0人阅读|0次下载|举报文档 M​M​5​地​形​中​文​...
WRFv3.4.1单机版本安装说明
数据模式所需要的数据是来自 NCEP 的 fnl 每 6 个小时一次的 GRIB1 或 GRIB...运行 real $ ./real.exe 运行成功后在当前文件夹生成边界场文件 wrfbdy_d01 ...
更多相关标签: