目錄
- 一、準備階段:下載并解壓測試數據
- 二、運行 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