天气预报模型
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
天气预报模型:软件体系结构与性能J. MICHALAKES, J. DUDHIA, D. GILL, T. HENDERSON,
J. KLEMP, W. SKAMAROCK, W. WANG
中小尺度气象部门,国家大气研究中心,Boulder,美国科罗拉多80307 2004年5月第一个非测试版的天气研究和预报(WRF)建模系统是为大气研究和运行NWP用户设计和实施全功能的下一代建模系统的一个关键的里程碑社区。以效率,可移植性,可维护性和可扩展性作为基岩需求,WRF软件框架允许增量和合理的快速开发,同时保持总体一致性和坚持架构及其接口。 WRF 2.0版本支持该模型设想的全部功能,包括在一系列高性能计算平台,多个动态核心和物理选项上的高效可扩展性能,低开销双向交互嵌套,移动嵌套,模型耦合,以及与其他常见模型基础设施工作(如ESMF)的互操作性。
1.介绍
WRF项目已经开发了下一代中尺度预报模型和同化系统,以推进中尺度降水系统的理解和预测,并促进研究和运营预测社区之间的更紧密的联系。随着2004年5月向社区发布WRF 2.0版本,将WRF 建模系统广泛传播给大量用户,并将其应用于各种领域,包括风暴规模研究和预测,空气质量模拟,
图1 WRF系统示意图
野火模拟,飓风和热带风暴预测,区域气候和作战数字天气预报正在良好进行。2004年年底,注册下载次数超过2,500件。来自20个国家的93个机构的173名参与者于2004年6月在NCAR参加了年度WRF用户研讨会,并听取了28次涉及以WRF模式开展工作的科学报告。在NOAA国家环境预测中心和美国空军气象局,正在进行WRF的运行实施。已经形成了NOAA / NCAR / DoD联合发展试验中心,以促进研究界的新发展的持续测试,评估和过渡在NCEP,AFWA和美国海军通过在各中心建立的操作测试中心的操作。
如图1所示,WRF系统包括WRF模型本身,用于为理想化,实数据和单向嵌套预测产生初始和横向边界条件的预处理器,用于分析和可视化的后处理器,以及三维变化数据同化(3DVAR)程序。除了标准初始化(SI)程序之外,每个预处理器和3DVAR是使用WRF高级软件框架(ASF)实现的并行程序。程序之间的数据流通过ASF的I / O和模型耦合API输入和输出。 WRF模型(图中的大框)包含两个动态内核,为机构和应用程序提供额外的灵活性。 NCAR开发的高级研究WRF(ARW;最初的欧拉质量或“EM”核)使用时分高阶Runga-Kutta方法来整合可压缩非静力方程的保守公式[16]。 ARW 作为WRF第2版为研究界提供支持,正在美国空军气象局正在运行实施。 NOAA / NCEP的WRF的操作实现使用适应于来自非流体静力中尺度模型(NMM)的WRF ASF的动力学[3] [8] [9] [15]。
WRF ASF实现了WRF软件架构[11],是WRF模型和3DVAR系统开发的基础。它具有模块化的层次化软件组织,可以将科学代码与并行性以及其他架构,实现和安装相关的问题隔离开来。这种设计对于管理一系列用户,应用程序和平台的单源代码模型的复杂性也至关重要。
本文介绍WRF软件的实现和性能,包括WRF 2.0中提供的新功能:双向交互和移动嵌套,支持模型耦合,以及与新兴社区建模基础设施(如地球系统建模框架)的互操作性。
2.WRF高级软件框架
WRF ASF包括多个可分离层和支持组件:驱动器层,中介层,模型层,称为注册表的元编程实用程序,以及用于处理器间通信,数据格式的外部包的应用程序接口(API) I / O。 WRF ASF的好处是促进快速开发,易于扩展,充分利用WRF社区的开发工作,软件重用,以及适应社区模型基础设施(如ESMF)。
驱动层处理模型域数据结构的运行时分配和并行分解;组织,管理,交互和控制嵌套域,包括模型中的主时间循环;高级别接口到模型域上的I / O操作;以及当WRF是更大耦合的应用系统的一部分时与其他组件的接口。在驱动程序中,每个域都抽象地表示为单个对象:Fortran90派生数据类型,包含动态分配的状态数据,指向嵌套层次结构中的其他域。嵌套表示为根源于顶级(最粗糙分辨率)域的域的树。每个模型时间步长涉及递归深度优先遍历这棵树,推进每个节点及其子节点到下一个模型时间。强制,反馈和嵌套移动也在驱动程序中处理。
中介层包含单个模型域上的特定动态核心的一个时间步长。动态核心的求解例程包含对模型层例程的完整集合调用以及处理器间通信(晕轮更新,并行转置等)和多线程的调用。当前的WRF实现使用RSL通信库[12],而RSL通信库又使用消息传递接口(MPI)通信包。在使用OpenMP的求解例程中还规定了片上的共享存储器并行性 - 分布式内存补丁内的第二级域分解。
模型层包括构成模型的实际计算例程:平流,扩散,物理参数化等。模型层子程序通过标准模型层接口调用:所有状态数据作为参数,连同正在计算的图块的三个网格维度中的每一个中的起始和结束索引一起被传递。模型层子例程可以不包括I / O,停止语句,多线程或处理器间通信,确保它们可以针对任何瓦片分解或在瓦片上执行的顺序被连贯地执行。模型层接口是ASF与在模型层工作的程序员/科学家之间的合同。遵守接口确保结合到WRF中的模型层包将在框架本身被移植到的任何并行计算机上工作。具有数据依赖性的模型层例程依赖于中介层在它们被调用之前执行必要的处理器间通信。程序员通过向注册表添加条目来描述通信类型和模式,然后插入符号以在求解例程中的适当位置执行通信。
注册表是关于WRF数据结构的信息的简明数据库,以及用于从数据库中的符号自动生成大部分WRF
图2嵌套分解与通讯
代码的机制。注册表数据库是表的集合,列出并描述了WRF状态变量和数组及其属性,例如维度,时间级数,与特定动态核心的关联,与特定物理包的关联,输入的成员资格,输出,或重新启动数据集,对数据进行通信操作,以及一些描述性元数据,例如变量或数组表示的内容及其单位。从该数据库,注册表生成用于基础设施的层之间的接口的代码,用于通信和嵌套的打包和解包代码以及对于模型I / O代码的例程的逐字段调用,否则将极其耗时并且容易进行手动写入和管理。在WRF中添加或修改状态变量或数组是在注册表中修改一行或两行的问题。目前,注册管理机构自动生成总共250万条WRF代码中的60万条。
外部软件包的API也是WRF软件框架的一部分。这些允许WRF使用不同的软件包用于自描述数据格式,模型耦合工具包和库,以及通过简单地将外部软件包适配到接口来进行处理器间通信的库。清洁API还支持在其他方向重用;例如,地球系统建模框架开发人员正在调整WRF I / O API以在ESMF 软件中使用。
WRF基础设施的文档,包括注册表的参考文档,WRF I / O应用程序接口规范以及基于Web的WRF 代码和文档浏览器[6]在线维护。WRF的其他软件文档正在进行中。
3.巢和移动巢
嵌套是网格细化的一种形式,其允许将昂贵的较高分辨率计算集中在感兴趣区域上。 WRF 2.0包括对单向和双向交互嵌套域的支持。 WRF中的嵌套是非旋转和对齐的,使得父网格点与下面的嵌套上的点重合,这消除了对更复杂的广义重新格栅计算的需要。嵌套配置在运行时通过名称列表指定。WRF ASF支持在模拟期间的任何时间创建和删除嵌套,但是如果运行需要嵌套分辨率地形或其他下边界数据的输入,则WRF模型当前被限制为开始嵌套;这个限制将在不久的将来得到解决。巢可以伸缩(嵌套在巢内)到任意水平的细化水平。垂直细化尚未实现。精化比是整数,通常为1:3。在2.0.3版本中发布了移动嵌套的原型实现。这个版本用于4公里移动巢模拟飓风伊万(2004年9月)。可以在线查看动画。
高效和可扩展的嵌套实现是一个关键问题。嵌套模拟中的所有域都在同一组进程上分解,嵌套域与父进程同步运行。交换强制和反馈信息需要通信以在每个父时间步骤中跨进程散布和收集数据。此外,父域数据到嵌套点的插值是负载不平衡的,因为它仅在父域和嵌套共享的域的区域上发生。这通过首先将父域数据重新布置到存储对应的嵌套域点的过程而被部分地减轻,允许在本地和在更大数量的过程上执行内插。图2示出了覆盖嵌套边界(包括用于西北巢角的“a”和“b”)的过程的父域数据被传送到计算嵌套边界(包括过程“c”)的过程。通过同一组进程)。在重排父域数据之后,在嵌套边界处理上局部地执行父 - 嵌套网格插值。
嵌套开销通过将同等大小的父域和嵌套域运行为双向交互域,然后分别作为独立的单域运行来衡