这张图描述了 GFDL 模型(FV3 动力核心) 的工作流程,展示了从初始化到动力学求解、物理量计算和最终输出的完整过程。以下是对各个模块和流程的详细解释。
-
总体结构
• 左侧:初始化与调整模块
• 处理物理量的初始化和微调,确保输入数据合理性,为动力学核心计算做好准备。
• 中间:动力学核心
• 包括浅水动力学、裂变求解器、拉格朗日坐标系重映射等核心计算模块,是模拟大气动力学的关键。
• 动力学核心的核心思想是通过交替使用 C 网格 和 D 网格,完成对物理量(如温度、湿度、风速)的计算更新。
• 右侧:事务处理
• 包括文件读写、性能分析和通信等,为整个计算提供辅助支持。
• 底部:物理参数化
• 在动力学计算完成后,处理物理过程(如云物理、降水等)的模拟,为整体模型提供完整的气象输出。 -
初始化与调整
物理量微调
• 在模拟开始时,根据输入的数据(如观测或历史数据),对物理量(如温度、湿度、风速等)进行初始化。
• 如果发现异常数据,模型会对其进行调整,以避免对后续计算产生负面影响。
诊断重更新
• 在每个时间步或特定阶段,诊断模型中物理量是否合理,并根据需要对其重新更新。
- 动力学核心(核心部分)
(1) 瑞利阻尼
• 在模拟过程中,瑞利阻尼(Rayleigh Damping)用于消除数值模拟中的高频振荡或非物理的波动,从而提高计算的稳定性。
(2) D 网格到 C 网格的转换
• 动力学求解交替使用 C 网格和 D 网格:
• D 网格 更适合描述涡度等矢量特性。
• C 网格 更适合计算梯度、通量等。
• 通过转换,将两种网格的优势结合起来,确保计算精度和稳定性。
(3) C 网格浅水动力学
• 在 C 网格中,求解浅水方程,计算水平方向的流体动力学特性(如速度、压强)。
(4) C 网格裂变求解器
• 处理气体分布和流动中的非线性特征,解决网格内部物理量的分布问题。
(5) D 网格浅水动力学
• 在 D 网格中,重新计算基于矢量分量(如风速)的动力学特性。
(6) D 网格裂变求解器
• 类似 C 网格裂变求解器,但针对 D 网格中的特性进行调整。
(7) 示踪物对流
• 计算大气中示踪物(如水汽、气溶胶、污染物等)在不同网格中的输送,保证这些物质的分布连续性和守恒性。
(8) 拉格朗日坐标系重映射
• FV3 使用拉格朗日垂直坐标(随气块移动的坐标),在每一步计算后,将气块的位置重新映射回固定的网格坐标,保证计算的物理一致性。
(9) 经纬转换
• 将计算结果从立方体网格的坐标系统转换为标准的经纬度系统,便于输出和后续处理。
-
物理参数化模块
• 模拟物理过程(如云物理、降水、辐射等),这些过程通常通过参数化的方式表示。
• 物理参数化为动力学核心提供反馈(如加热率、冷却率),影响下一步的动力学计算。 -
事务处理
文件读写
• 处理模型运行的输入数据和输出结果。
性能分析
• 监控计算的性能,优化并行计算效率。
通信
• 在分布式计算中,不同处理器之间需要进行通信,交换边界数据,确保计算一致性。
-
模型工作流总结
- 初始化:
• 输入数据并对物理量进行初始化和微调。 - 动力学核心:
• 使用 D 网格和 C 网格交替计算,处理大气的动力学特性。
• 包括浅水动力学求解、裂变处理、示踪物传输和坐标系重映射。 - 物理参数化:
• 模拟降水、云、辐射等物理过程,为动力学计算提供反馈。 - 事务处理:
• 确保文件的输入输出、通信和性能分析等辅助功能顺利进行。
- 初始化:
通俗比喻
可以把整个工作流想象成一个复杂的交通模拟系统:
1. 初始化:
• 加载初始交通状况(比如车流、红绿灯设置)。
2. 动力学核心:
• C 网格负责计算每个路口的交通流量变化。
• D 网格负责整体车流的方向分布。
• 交通状况的变化(如新红绿灯设置)不断反馈到路网中。
3. 物理参数化:
• 考虑天气、道路条件等外部因素对交通的影响。
4. 事务处理:
• 保存交通模拟结果(输出文件),分析系统性能。
这个流程既有精确的核心计算(动力学求解),又有辅助模块(物理过程、文件处理),共同完成复杂的全球大气模拟任务。
显式时间步和半隐式时间步的区别
显式时间步和半隐式时间步是数值方法中常用的两种时间积分策略,用于求解偏微分方程中的时间变化项(比如描述物理量如何随时间演化)。这两种方法的区别主要在于时间步的选择、稳定性以及计算复杂度。
- 显式时间步
(1) 定义
显式时间步方法直接使用当前时间步的物理量值计算下一时间步的物理量值。
公式一般为:

其中:
•  表示当前时间步的物理量。
•  表示下一时间步的物理量。
•  是根据当前状态计算的物理变化率。
•  是时间步长。
(2) 特点
1. 优点:
• 简单,计算效率高。
• 不需要求解复杂的线性或非线性方程组。
2. 缺点:
• 稳定性受限:
• 显式方法的时间步必须满足 CFL 条件(Courant-Friedrichs-Lewy 条件):

其中, 是网格间距, 是系统中传播速度的最大值。
• 时间步过大时,解可能变得不稳定,出现数值振荡甚至崩溃。
• 对于具有快速变化或刚性(stiff)特性的系统(如重力波或声波),显式方法需要非常小的时间步,导致计算效率低下。
(3) 适用场景
• 对于变化较慢或无刚性特性的系统(如浅水波、热传导),显式方法效果较好。
• 在需要高效模拟大规模系统时,显式方法是首选。
- 半隐式时间步
(1) 定义
半隐式时间步方法部分使用当前时间步的物理量值,部分使用下一时间步的物理量值进行计算。特别地,刚性项(stiff terms,如重力波)通常用隐式处理,而非刚性项(non-stiff terms)用显式处理。
公式一般为:

例如:

其中:
•  是需要隐式处理的刚性项(如高频波动)。
•  是可以显式处理的非刚性项。
(2) 特点
1. 优点:
• 更稳定:
• 隐式处理的部分不受 CFL 条件限制,因此可以使用较大的时间步。
• 适合具有快速变化或刚性特性的系统(如重力波)。
• 在较大的时间步下仍然保持稳定。
2. 缺点:
• 计算复杂:
• 隐式部分通常需要解线性或非线性方程组(例如用迭代法或矩阵求解方法)。
• 计算成本高,尤其在大规模并行计算中。
(3) 适用场景
• 适用于刚性方程(stiff equations),如含有重力波的动力学模型。
• 在天气预报和气候模拟中,半隐式方法常用于动力学方程求解,以提高效率。
- 显式与半隐式方法的对比
特性 显式方法 半隐式方法
稳定性 受 CFL 条件限制,时间步长必须较小,否则会不稳定。 更稳定,不受 CFL 条件限制,可以使用较大的时间步长。
计算成本 计算简单,单步开销较小,但需要更多步数才能完成模拟。 计算复杂,需解线性/非线性方程组,但单步可以覆盖更长时间。
适用场景 适合变化较慢、无刚性特性的系统(如热传导、缓慢的大气现象)。 适合具有刚性特性(如重力波、声波)的大气动力学模拟。
并行性 易于并行化,计算效率高。 隐式部分难以并行化,计算效率相对较低。
- FV3 中的应用
在 FV3(GFDL 的动力核心)中,这两种方法通常结合使用:
1. 显式方法:
• 用于非刚性项的计算(如对流、热传导)。
• 在浅水动力学计算中,显式方法更适合处理网格间物理量的通量交换。
2. 半隐式方法:
• 用于处理刚性项(如重力波和声波)。
• FV3 动力核心中使用半隐式方法来允许较大的时间步,从而减少总的时间迭代次数,提高计算效率。
- 通俗比喻
你可以将显式和半隐式时间步方法类比为驾驶中的两种方式:
1. 显式方法:
• 就像手动驾驶,每秒都需要观察路况(当前状态)并立即做出反应(计算下一步)。
• 如果开得太快(时间步过大),可能会失控(解不稳定)。
2. 半隐式方法:
• 更像自动驾驶,提前预测可能出现的复杂情况(未来状态)并适当调整车速。
• 虽然需要更复杂的计算,但更加安全(稳定),且适合长时间驾驶(时间步较大)。
总结
• 显式时间步:简单高效,但时间步受到 CFL 条件限制,适合无刚性问题。
• 半隐式时间步:计算复杂,但更加稳定,可以使用较大的时间步,适合处理刚性问题(如重力波)。
• 在实际应用中,半隐式方法常用于大气动力学中,以兼顾精度和效率,而显式方法则多用于局部或非刚性过程的快速模拟。