【WRFDA教程第二期】运行WRFDA 3DVAR/4DVAR数据同化

发布于:2025-07-04 ⋅ 阅读:(14) ⋅ 点赞:(0)

观测预处理程序(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(如无特殊需求可不修改)

关键设置如下:

&wrfvar1
  var4d = false,
/

&wrfvar3
  ob_format = 2,   # 2 表示 ASCII 格式观测数据
/

&wrfvar6
  max_ext_its = 1,
  ntmax = 50,
  orthonorm_gradient = true,
/

&wrfvar7
  cv_options = 5,  # 使用 CV5 背景误差选项
/

&wrfvar18
  analysis_date="2008-02-05_12:00:00.0000",
/

&wrfvar21
  time_window_min="2008-02-05_11:00:00.0000",
/

&wrfvar22
  time_window_max="2008-02-05_13:00:00.0000",
/

&domains
  e_we=90, e_sn=60, e_vert=41,
  dx=60000, dy=60000,
/

&physics
  mp_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️⃣ 收敛性测试(更严格的收敛条件)

&wrfvar6
  eps = 0.0001,
/

2️⃣ 激活外循环(outer loop)

&wrfvar6
  max_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 功能

&wrfvar1
  var4d = true,
  var4d_lbc = false,   ! 若不处理边界条件,请设为 false
  var4d_bin = 3600,    ! 每小时一个槽 slot
/

2. 时间设置(必须一致)

&wrfvar18
  analysis_date="2008-02-05_12:00:00.0000",
/

&wrfvar21
  time_window_min="2008-02-05_12:00:00.0000",
/

&wrfvar22
  time_window_max="2008-02-05_18:00:00.0000",
/

&time_control
  run_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、设置:

&wrfvar3
  ob_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 文件 诊断数据、创新向量、代价函数等

另:运行建议与调试技巧

✅ 减少迭代次数(加快运行)

&wrfvar6
  ntmax = 30,
/

✅ 检查观测数据是否正确被读取
在日志中查找:

Observation summary
  ob time 1
    metar = xxxx
    ship  = xxxx
    pilot = xxxx
    ...

✅ 代价函数最小化过程示例(日志中):

Starting outer iteration : 1
Starting cost function: 5.3E+04, Gradient= 8.1E+02
...
Final value of J = 2.91E+04

参考