WRFDA学习记录

因为试验需要,开始学习安装和运行WRFDA。

安装WRFDA

不需要单独下载WRFDA的安装包,现在WRFDA、WRFPLUS都是内置于一开始安装的WRF安装包中了。但是不可以在已经安装好的WRF目录下编译WRFDA。需要将WRF的压缩包重新解压,并重命名为WRFDA、WRFPLUS。
如果有4dVar的需求,需要先安装WRFPLUS,不需要4Dvar则不需要安装。

官方的教程在以下网址中:

https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.4/users_guide_chap6.html#_Obtaining_WRFDA_Source

安装WRFDA for 3DVAR Run

1
2
3
4
5
6
7
8
9
10
解压WRF安装包
gunzip <filename>.tar.gz
tar -xvf <filename>.tar
mv WRF WRFDA
cd WRFDA
./configure wrfda
15 # 与WRF的安装中选择相同
./compile all_wrfvar >& compile.out # 大概13分钟左右
ls -l var/build/*exe var/obsproc/src/obsproc.exe
# 生成44个.exe文件表示成功

以上,安装之后,3Dvar就安装成功了。

可以为安装好的WRFDA添加一条路径:

1
export WRFDA_DIR=${your_source_code_dir}/WRFDA

(非必要)安装WRFPLUS and WRFDA for 4DVAR Run

!!! 如果不需要使用4DVAR则不需要安装,我安装到一半才发现。

安装WRFPLUS:

As with 3D-Var, “serial” means single-processor, and “dmpar” means Distributed Memory Parallel (MPI). Be sure to select the same option for WRFPLUS as you will use for WRFDA.

安装或者编译WRFDA和WRFPLUS的时候,都要选择相同的’serial’或者‘dmpar’的选项,代表单线程或者多线程。

1
2
3
4
5
6
Download the desired WRFPLUS archive
gunzip <filename>.tar.gz
tar -xvf <filename>.tar
cd WRFPLUSV3
./configure wrfplus
./compile em_real

安装好WRFPLUS后,要把它加入到路径当中:

1
2
3
setenv WRFPLUS_DIR ${your_source_code_dir}/WRFPLUS
或者
export WRFPLUS_DIR=${your_source_code_dir}/WRFPLUS

运行OBSPROC(for 3Dvar)

Observation Preprocessor (OBSPROC)

这一部分是将同化需要使用的观测资料处理成WRFDA可以使用的形式。

笔者暂时没有同化观测资料的需求,此处待开发。。。

运行WRFDA

手册示例(3Dvar)

数据准备:

  • 初猜场:nc格式,使用WPS+real.exe产生,或者直接是WRF运行的结果。

  • 观测资料:ASCII格式,或者PREPBUFR格式,使用OBSPROC产生。

  • 背景场误差数据:二进制数据(.dat),通过WRFDA_gen_be_utility或者generic CV3.

将这些WRFDA需要读入的文件存放在任意的可读文件夹中,将该文件夹的路径设置为DAT_DIR

1
export DAT_DIR=.....

创建一个同化工作文件夹,比如WRFDA_DIR/workdir,将这个路径设置为WORK_DIR

1
export WORK_DIR=$WRFDA_DIR/workdir

然后运行以下命令,在创建的工作目录中,软连接所有需要的数据文件和可执行程序,创建一个namelist.input文件:

1
2
3
4
5
6
cd $WORK_DIR
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 $WRFDA_DIR/var/da/da_wrfvar.exe

对namelist.input文件进行修改,根据需要设置参数。

修改之后运行程序

1
./da_wrfvar.exe >& wrfda.log

namelist.input文件解读

专指WRFDA的namelist.input文件。

wrfvar1: 关于输出文件的细节,关于是否开启4dvar。

wrfvar2: 如果分析场和初猜场的时间差,大于analysis_accu的话,模式会终止;关于三维风场的一些设置。

wrfvar3: 读入文件的格式等。

wrfvar4: 关于读入的观测资料选择的一些设置。

wrfvar5: 关于观测资料质量控制标准的一些设置。

put_rand_seed false For RANDOMCV: setting to “true” allows you to enter your own seed numbers (see &wrfvar11) to generate random background perturbations.

wrfvar6: 关于极小化的一些选项。

wrfvar7: 关于一些背景误差协方差尺度参数的设置,针对1-流函数,2-不平衡位势,3-不平衡温度,4-假相对湿度,5-不平衡表面气压。

cv_options 5 3: NCEP Background Error model5: NCAR Background Error model (default)6: Use of moisture-multivariate background error statistics (CV6)7: New NCAR Background Error model (CV7)
CV option Data source Control variables cv_options =
CV3 Provided be.dat file ψ, χu, Tu, q, Ps,u 3
CV5 GEN_BE ψ, χu, Tu, RHs, Ps,u 5
CV6 GEN_BE ψ, χu, Tu, RHs,u, Ps,u 6
CV7 GEN_BE u, v, T, RHs, Ps 7

wrfvar8: 未开发使用。

wrfvar9: 追踪程序运行中的一些细节。

wrfvar10: 提供给程序开发者,对伴随模式和梯度计算进行测试。

wrfvar11:

seed_array1 1 For RANDOMCV when put_rand_seed=true, first integer for seeding the random function
seed_array2 1 For RANDOMCV when put_rand_seed=true, second integer for seeding the random function

这两个参数控制着产生的随机样本,一般将试验时间写成整数形式作为seed1,将想要产生的集合成员数目作为seed2。注意:一般不设置seed为0.

wrfvar12: 关于WPEC动力学设置。

wrfvar13: 不懂。

wrfvar14: 关于辐射。

wrfvar15: 关于伪观测的坐标设置,需要和wrfvar19一起设置。

wrfvar16: 混合DA的选项。

alphacv_method 2 1: ensemble perturbations in control variable space2: ensemble perturbations in model variable space

wrfvar17: 关于做什么。

analysis_type “3D-VAR” “3D-VAR”: 3D-VAR mode (default); “QC-OBS”: 3D-VAR mode plus extra filtered_obs output;”VERIFY”: verification mode. WRFDA resets check_max_iv=.false. and ntmax=0;”RANDOMCV”: for creating ensemble perturbations
n_randomcv 1 number of ensemble to be generated in one run. New in version 4.2.

wrfvar18: 就一个变量。

analysis_date “2002-08-03_00:00:00.0000” specify the analysis time. It should be consistent with the first guess time; if time difference between analysis_date and date info read in from first guess is larger than the &wrfvar2 setting “analysis_accu”, WRFDA will abort.

wrfvar19: 与wrfvar15配合,设置伪变量是什么。

wrfvar20: 网址。

wrfvar21,22: 同化时间窗。

perturbation: 关于4Dvar的选项。

radar_da: 关于雷达的选项。

RANDOMCV产生初始扰动

control variable space (“psi”,”chi_u”,”t_u”,”rh”,”ps_u”)

除了前面提到的变分方法外,WRFDA系统还支持集成和混合集成/变分同化方法。为了利用这些方法,有一个整体的预测是必要的。WRFDA有一个内置的方法来生成集合初始条件,称为RANDOMCV。RANDOMCV的工作原理是在控制变量空间的分析中加入随机噪声。

1
2
3
4
5
6
7
8
9
&wrfvar5
put_rand_seed true: enter your own seed numbers to generate random background perturbations. The advantage of this setting is that the same seed numbers will always produce the same perturbation
false: (default behavior) perturbations will be generated “randomly” and give new perturbations each time
&wrfvar11
seed_array1 First integer for seeding the random function (default: 1)
seed_array2 Second integer for seeding the random function (default: 1) It is not necessary to change both seeds to get different perturbations
&wrfvar17
analysis_type Set this to ‘RANDOMCV’ to use the RANDOMCV capability
n_randomcv 1 (default), number of ensemble to be generated in one run. New in version 4.2.

由于扰动是在控制变量空间中进行的,所以扰动的一般模式将取决于背景误差。您应该能够使用随机cv (CV3, CV5, CV6或CV7)的任何背景错误选项。此外,这意味着你可以通过分别修改背景误差方差和长度缩放变量来控制它们的大小和长度尺度:在wrfvar7中修改。

3DEnVar产生初始扰动

要进行3DEnVar,需要提供集合平均和扰动数据,这些在hybird中不会产生,需要提前提供,或许还是要按照RANDOMCV的方式产生。

1
2
3
export WORK_DIR=your_hybrid_path
export DAT_DIR=your_data_path
cd $WORK_DIR