目录
- 一、准备阶段:下载并解压测试数据
- 二、运行 3DVAR 教学实验
- 日志分析(wrfda.log)
- 进阶实验建议:对比不同设置的影响
- 输出文件说明
- 三、运行 4DVAR 教学实验
- 步骤1:准备工作目录与环境变量
- 步骤2:链接可执行文件与输入数据
- 步骤3:配置 namelist.input
- 步骤4:可选-使用边界条件控制变量(var4d_lbc)
- 如果使用 PREPBUFR 格式观测数据
- 运行 WRFDA 4DVAR
- 输出文件说明
- 另:运行建议与调试技巧
- 参考
观测预处理程序(OBSPROC)的详细介绍可参见另一博客-【WRFDA运行第一期】运行观测预处理程序(OBSPROC)。
本博客针对 WRFDA 教程中 “运行WRFDA”章节进行详细介绍。
一、准备阶段:下载并解压测试数据
WRFDA 运行需要 3 个主要输入文件:
输入数据类型 | 格式 | 生成方式 |
---|---|---|
第一猜测场(初始场) | NetCDF | WPS + real.exe 或 wrfout 输出 |
观测数据 | ASCII 或 PREPBUFR | OBSPROC |
背景误差统计文件 | 二进制 | gen_be 工具 或 通用 CV3 |
步骤一:设置数据目录环境变量
setenv DAT_DIR /your/path/to/data
步骤二:下载并解压测试数据
从 测试数据下载页面 获取 WRFDAV4.0-testdata.tar.gz,存入 $DAT_DIR,然后:
cd $DAT_DIR
gunzip WRFDAV4.0-testdata.tar.gz
tar -xvf WRFDAV4.0-testdata.tar
解压后应看到以下文件:
ob/2008020512/ob.2008020512 # LITTLE_R 格式观测数据
rc/2008020512/wrfinput_d01 # 第一猜测场
rc/2008020512/wrfbdy_d01 # 边界条件文件
be/be.dat # 背景误差统计文件
二、运行 3DVAR 教学实验
步骤一:创建工作目录并设置环境变量
mkdir -p $WRFDA_DIR/workdir
cd $WRFDA_DIR/workdir
setenv WORK_DIR $WRFDA_DIR/workdir
步骤二:准备文件和链接
cp $DAT_DIR/namelist.input.3dvar namelist.input
ln -sf $WRFDA_DIR/run/LANDUSE.TBL .
ln -sf $DAT_DIR/rc/2008020512/wrfinput_d01 ./fg
ln -sf $DAT_DIR/ob/2008020512/obs_gts_2008-02-05_12:00:00.3DVAR ./ob.ascii
ln -sf $DAT_DIR/be/be.dat .
ln -sf $WRFDA_DIR/var/da/da_wrfvar.exe .
步骤三:编辑 namelist.input(如无特殊需求可不修改)
关键设置如下:
&wrfvar1var4d = false,
/&wrfvar3ob_format = 2, # 2 表示 ASCII 格式观测数据
/&wrfvar6max_ext_its = 1,ntmax = 50,orthonorm_gradient = true,
/&wrfvar7cv_options = 5, # 使用 CV5 背景误差选项
/&wrfvar18analysis_date="2008-02-05_12:00:00.0000",
/&wrfvar21time_window_min="2008-02-05_11:00:00.0000",
/&wrfvar22time_window_max="2008-02-05_13:00:00.0000",
/&domainse_we=90, e_sn=60, e_vert=41,dx=60000, dy=60000,
/&physicsmp_physics=3,ra_lw_physics=1,ra_sw_physics=1,bl_pbl_physics=1,cu_physics=1,
/
📝 若使用 PREPBUFR 观测数据,请将 ob_format=1,并链接 ob.bufr 文件。
步骤四:执行 WRFDA
./da_wrfvar.exe >& wrfda.log
成功运行后:
- 会生成 wrfvar_output(WRFDA 分析场,即新的 wrfinput)
- 会生成 namelist.output.da(完整 namelist 输出)
- 日志文件为 wrfda.log 或 rsl.out.0000
日志分析(wrfda.log)
日志中包含:
- 观测数据类型统计(如 METAR、SHIP、GPSPW 等)
- 成本函数最小化过程(CG 迭代)
- 最终分析结果:
Final value of J = 29185.68177
Final value of Jo = 23086.99122 # 观测项
Final value of Jb = 6098.69056 # 背景项
Total number of obs. = 37570
表示 WRFDA 成功完成,并对观测与背景信息进行最优化融合。
进阶实验建议:对比不同设置的影响
1️⃣ 收敛性测试(更严格的收敛条件)
&wrfvar6eps = 0.0001,
/
2️⃣ 激活外循环(outer loop)
&wrfvar6max_ext_its = 2,
/
⚠️ 若启用 outer loop 且使用 CV3,需要指定 as1~as5 缩放因子。
3️⃣ 控制观测类型参与同化
在 &wrfvar4 中关闭某类观测,例如关闭 SYNOP:
use_synopobs = false,
输出文件说明
文件名 | 说明 |
---|---|
wrfvar_output | 同化分析结果,可作为 WRF 初始场 |
namelist.output.da | 最终 namelist 设置 |
wrfda.log / rsl.out.0000 | 日志信息 |
其他 *.txt / *.dat 文件 | 诊断结果(如增量、误差、创新向量等) |
三、运行 4DVAR 教学实验
目标:使用 WRFDA 4DVAR 运行 2008 年 2 月 5 日 12UTC 的教学案例, assimilate 6 小时窗口内(12UTC–18UTC) 的常规观测数据。
步骤1:准备工作目录与环境变量
setenv WRFDA_DIR /your/path/to/WRFDA
mkdir -p $WRFDA_DIR/workdir
cd $WRFDA_DIR/workdir
setenv WORK_DIR $WRFDA_DIR/workdir
setenv DAT_DIR /your/path/to/testdata
测试数据中应包含如下子目录:
$DAT_DIR/
├── ob/2008020512/
├── ob/2008020513/
├── ob/2008020514/
├── ob/2008020515/
├── ob/2008020516/
├── ob/2008020517/
├── ob/2008020518/
├── rc/2008020512/
└── be/
步骤2:链接可执行文件与输入数据
1. 链接 da_wrfvar.exe 执行文件:
ln -fs $WRFDA_DIR/var/da/da_wrfvar.exe .
2. 链接 7 个小时槽(slots)内的观测数据(ASCII 格式)
ln -fs $DAT_DIR/ob/2008020512/ob01.ascii ob01.ascii
ln -fs $DAT_DIR/ob/2008020513/ob02.ascii ob02.ascii
ln -fs $DAT_DIR/ob/2008020514/ob03.ascii ob03.ascii
ln -fs $DAT_DIR/ob/2008020515/ob04.ascii ob04.ascii
ln -fs $DAT_DIR/ob/2008020516/ob05.ascii ob05.ascii
ln -fs $DAT_DIR/ob/2008020517/ob06.ascii ob06.ascii
ln -fs $DAT_DIR/ob/2008020518/ob07.ascii ob07.ascii
3. 链接第一猜测 wrfinput、边界条件、背景误差文件等
ln -fs $DAT_DIR/rc/2008020512/wrfinput_d01 .
ln -fs $DAT_DIR/rc/2008020512/wrfbdy_d01 .
ln -fs wrfinput_d01 fg
ln -fs $DAT_DIR/be/be.dat .
4. 链接运行所需的静态表格文件
ln -fs $WRFDA_DIR/run/LANDUSE.TBL .
ln -fs $WRFDA_DIR/run/GENPARM.TBL .
ln -fs $WRFDA_DIR/run/SOILPARM.TBL .
ln -fs $WRFDA_DIR/run/VEGPARM.TBL .
ln -fs $WRFDA_DIR/run/RRTM_DATA_DBL RRTM_DATA
ln -fs $WRFDA_DIR/run/CAMtr_volume_mixing_ratio .
⚠️ CAMtr_volume_mixing_ratio 是从 WRFDA v4.4 开始进行 4DVAR 所需文件。
步骤3:配置 namelist.input
cp $DAT_DIR/namelist.input.4dvar namelist.input
✏️ 修改以下关键参数:
1. 开启 4DVAR 功能
&wrfvar1var4d = true,var4d_lbc = false, ! 若不处理边界条件,请设为 falsevar4d_bin = 3600, ! 每小时一个槽 slot
/
2. 时间设置(必须一致)
&wrfvar18analysis_date="2008-02-05_12:00:00.0000",
/&wrfvar21time_window_min="2008-02-05_12:00:00.0000",
/&wrfvar22time_window_max="2008-02-05_18:00:00.0000",
/&time_controlrun_hours = 6,start_year = 2008, start_month = 02, start_day = 05, start_hour = 12,end_year = 2008, end_month = 02, end_day = 05, end_hour = 18,interval_seconds = 21600,debug_level = 0,
/
✅ analysis_date、time_window_min、start_hour 必须一致,time_window_max = end_hour,run_hours 为时间窗口长度(单位小时)。
步骤4:可选-使用边界条件控制变量(var4d_lbc)
如需启用边界控制变量,请:
1、设置 var4d_lbc = true
2、链接时间窗口末尾的 wrfinput_d01 文件:
ln -fs $DAT_DIR/rc/2008020518/wrfinput_d01 fg02
⚠️ 初学者建议关闭该功能(false),直到完全理解其原理。
如果使用 PREPBUFR 格式观测数据
1、设置:
&wrfvar3ob_format = 1,
/
2、链接数据文件:
ln -fs $DAT_DIR/ob/2008020512/gdas1.t12z.prepbufr.nr ob01.bufr
ln -fs $DAT_DIR/ob/2008020518/gdas1.t18z.prepbufr.nr ob02.bufr
运行 WRFDA 4DVAR
单核运行:
./da_wrfvar.exe >& wrfda.log
并行运行(推荐):
mpirun -np 4 ./da_wrfvar.exe >& wrfda.log &
✅ MPI 命令依赖于平台,日志将输出至 rsl.out.0000、rsl.error.0000 等文件。
输出文件说明
文件名 | 说明 |
---|---|
wrfvar_output | 分析时间初始场(12UTC) |
ana02(可选) | 若启用 var4d_lbc,为 18UTC 的分析结果 |
namelist.output.da | 实际运行时使用的完整 namelist |
wrfda.log / rsl.out.#### | 日志文件,记录运行状态和诊断信息 |
其他 txt 文件 | 诊断数据、创新向量、代价函数等 |
另:运行建议与调试技巧
✅ 减少迭代次数(加快运行)
&wrfvar6ntmax = 30,
/
✅ 检查观测数据是否正确被读取
在日志中查找:
Observation summaryob time 1metar = xxxxship = xxxxpilot = xxxx...
✅ 代价函数最小化过程示例(日志中):
Starting outer iteration : 1
Starting cost function: 5.3E+04, Gradient= 8.1E+02
...
Final value of J = 2.91E+04