在数据同化系统中,产生集合预报初始场(Ensemble Initial Conditions) 是执行 集合同化(Ensemble DA) 或 混合集合-变分同化(Hybrid EnVar) 的前提。
WRFDA 提供了一种实用的工具来快速生成集合初始场,这就是 RANDOMCV 功能。
下面我们将基于 WRFDA教程,详细解释 RANDOMCV 的原理、实际操作过程、参数含义,并说明 为什么我们需要使用 RANDOMCV 来生成集合扰动。
一、什么是 RANDOMCV?
RANDOMCV(Random Control Variable Perturbation) 是 WRFDA 的一个功能模块,用于在 控制变量空间 中加入随机扰动,从而生成多个 随机扰动的分析场(Ensemble Members)。
这些扰动场被广泛应用于:
- Ensemble Kalman Filter (EnKF)
- Hybrid 3D/4D EnVar
- 背景误差估计(如生成流控 BE)
- 灵敏度分析、扰动增长研究等
二、如何使用 RANDOMCV 生成集合初始场
1. 修改 namelist.input
✅ 设置运行模式为 RANDOMCV:
&wrfvar17
analysis_type = 'RANDOMCV',
n_randomcv = 1, ! 每次运行生成多少个集合成员(V4.2新增)
/
✅ 是否使用用户自定义随机种子:
&wrfvar5
put_rand_seed = .true., ! 若为 false,每次运行都会不同
/
✅ 设置随机种子(建议使用起报时间和成员编号):
&wrfvar11
seed_array1 = 2024070400, ! 年月日时
seed_array2 = 1, ! 成员编号
/
2. 控制扰动的“幅度”和“空间尺度”
扰动是在控制变量空间中进行的,因此它们的形状和强度 由背景误差协方差(BE)定义,你可以通过以下参数调整:
✅ 示例(适用于 CV5 / CV6 / CV7):
&wrfvar7
! 方差缩放(控制扰动强度)
var_scaling1 = 0.25, ! ψ 扰动强度减小 75%
var_scaling2 = 0.25, ! χu 扰动强度减小 75%
var_scaling3 = 0.0, ! 禁用温度扰动
var_scaling4 = 2.0, ! 水汽扰动强度增加 100%
var_scaling5 = 1.0, ! 地面气压扰动保持原样
! 长度尺度缩放(控制扰动空间范围)
len_scaling1 = 0.5, ! ψ 水平尺度减小 50%
len_scaling2 = 0.5, ! χu 水平尺度减小 50%
len_scaling3 = 1.0, ! 温度扰动尺度不变
len_scaling4 = 2.0, ! 水汽扰动水平尺度扩大 100%
len_scaling5 = 1.5, ! Ps 扰动水平尺度扩大 50%
/
✅ 示例(CV3 用户):
CV3 用户可参考 CV3背景误差调节说明 设置 as1-as5 参数来控制扰动特性。
三、为什么要使用 RANDOMCV?
✔️ 1. 用于混合同化系统(Hybrid EnVar)
Hybrid EnVar 方法结合了:
- 传统变分同化(如 3DVAR / 4DVAR)
- 实时集合扰动(Ensemble perturbations)
而 RANDOMCV 提供了一种 快速、简便、不依赖实际EnKF系统 的方式来生成这些扰动,尤其适合研究和测试。
✔️ 2. 用于构建背景误差协方差(GEN_BE)
使用 gen_be 构建领域特定背景误差协方差时,需要多个扰动样本,RANDOMCV 可以轻松生成多个扰动 wrfinput,用于:
- CV5、CV6、CV7 的背景误差训练
- NMC方法或集合方法的背景误差估计
✔️ 3. 用于扰动敏感性分析、模型不确定性研究
RANDOMCV 生成的扰动物理合理、可控,是进行如下研究的理想选择:
- 预报灵敏度分析
- 初始扰动增长研究(e.g. Bred vectors, SV)
- 模型误差传播路径模拟
✔️ 4. 快速、高效、无须外部集合系统
相比 EnKF 系统,RANDOMCV:
- 运行速度快
- 配置简单
- 不依赖观测系统
- 适合初学者和教学演示
四、运行流程总结
步骤 | 操作 |
---|---|
1 | 配置 namelist.input,设置 analysis_type=‘RANDOMCV’ |
2 | 设置随机种子,确保可重复性 |
3 | 控制扰动强度与空间尺度(var_scaling 和 len_scaling) |
4 | 执行 da_wrfvar.exe |
5 | 输出为 wrfvar_output(即一个扰动后的 wrfinput_d01),多次运行可生成多个集合成员 |