Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / test / README.ETKF
blob32b32473efef33056618c4284c783645c379c2bb
1 ETKF Data Assimilation in WRFDA
3 The ETKF system updates the ensemble perturbations.
5 Please refer to Bishop et al. (2001) and Wang et al. (2003) for a detailed description of the methodology. 
7 a. Source Code
9 Three executables are used in the ETKF system:
11 WRFDA/var/build/gen_be_etkf.exe
12    -Used to update the ensemble perturbations
14 WRFDA/var/build/gen_be_addmean.exe
15    -Used to combine the emsemble mean (can be updated by Hybrid)
17 WRFDA/var/build/da_wrfvar.exe
18    -Main WRFDA executable, used to create filtered observations and prepare formatted omb files for ETKF.
20 If one or more of these programs is missing, check your compilation log.
22 b. Running The ETKF System
24 A set of initial ensemble members must be prepared before the ETKF application can be started; this ensemble 
25 can be obtained from previous ensemble forecast. A tutorial case with a test ensemble can be found at 
26 http://www2.mmm.ucar.edu/wrf/users/wrfda/download/wrfda_hybrid_etkf_testdata.tar.gz. In this example, the 
27 ensemble forecasts were initialized at 2006102712 and valid 2006102800. ETKF will be performed using the 
28 ensemble valid 2006102800 as input. Once you have the initial ensemble, the ensemble perturbations can be 
29 updated by following the steps below:
31   1)   Set an environment variable for your working directory and your data directory
33   > setenv WORK_DIR_ETKF your_etkf_path
34   > setenv DAT_DIR your_data_path
35   > cd $WORK_DIR_ETKF
37   2)   Prepare filtered observations
39     a)   In your ETKF working directory, make a subdirectory to prepare the filtered observations and link 
40          all the necessary files and directories as follows: 
41          
42          > mkdir obs_filter
43          > cd obs_filter
44          > ln -fs $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.mean ./fg  (first guess is the ensemble mean)
45          > ln -fs $WRFDA_DIR/run/LANDUSE.TBL .
46          > ln -fs $DAT_DIR/Hybrid/ob/2006102800/ob.ascii ./ob.ascii (or ob.bufr)
47          > ln -fs $DAT_DIR/Hybrid/be/be.dat ./be.dat 
48          > ln -fs $WRFDA_DIR/var/build/da_wrfvar.exe .
49          > cp $DAT_DIR/ETKF/namelist.input .
51     b)   Edit namelist.input, paying special attention to the following 'QC-OBS'-related settings:
53          &wrfvar17
54            analysis_type                       = 'QC-OBS',
56     c)   Execute the WRFDA file, running in QC-OBS mode
58          > ./da_wrfvar.exe >&! wrfda.log
60     d)   Check the output files. The output file lists are the same as for running WRFDA-3DVAR, and 
61          'filtered_obs_01' is a file containing the filtered observations.
63   3)   Prepare omb files for ETKF
65     a)   In your ETKF working directory, make a sub directory to prepare the omb files for each ensemble 
66          member and link all the necessary files and directories as follows:
67          
68          > cd $WORK_DIR_ETKF
69          > mkdir -p omb/working.e001
70          > cd omb/working.e001
71          > ln -fs $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.e001 ./fg  (first guess is the ensemble member) 
72          > ln -fs $WRFDA_DIR/run/LANDUSE.TBL .
73          > ln -fs $WORK_DIR_ETKF/obs_filter/filtered_obs_01 ./ob.ascii 
74          > ln -fs $DAT_DIR/Hybrid/be/be.dat ./be.dat 
75          > ln -fs $WRFDA_DIR/var/build/da_wrfvar.exe .
76          > cp $DAT_DIR/ETKF/namelist.input .
78     b)   Edit namelist.input, paying special attention to the following 'VERIFY'-related settings:
80          &wrfvar17
81            analysis_type                       = 'VERIFY',
83     c)   Execute the WRFDA file, running in VERIFY mode
85          > ./da_wrfvar.exe >&! wrfda.log
87     d)   Check the output files. Again, the output file lists are the same as for running WRFDA-3DVAR/ The 
88          'ob.etkf.0*' files contain the filtered observations.
90     e)   Combine the ob.etkf.0* files and add the number index in the head of ob.etkf.e0*
92          > cat ob.etkf.0* > ob.all
93          > wc -l ob.all > ob.etkf.e001
94          > cat ob.all >> ob.etkf.e001
96     f)   Likewise, prepare ob.etkf.e0* files for other ensemble members
98   4)   Run ETKF
100     a)   Copy or link the ensemble mean and forecasts and ob.etkf.e0* files to your working directory.
101          and make a directory to save the parameter files.
102          > setenv PAR_DIR_ETKF your_parameter_path
103          > cd $WORK_DIR_ETKF
104          > ln -sf $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.mean ./etkf_input
105          > ln -sf $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.e001 ./etkf_input.e001
106            ...
107          > ln -sf $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.e010 ./etkf_input.e010
109          > ln -sf omb/working.e001/ob.etkf.e001 .
110            ...
111          > ln -sf omb/working.e010/ob.etkf.e010 .
113     b)   Provide template files. These files will be overwritten with the ensemble perturbations.
115          > cp $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.e001 ./etkf_output.e001
116            ...
117          > cp $DAT_DIR/Hybrid/fc/2006102712/wrfout_d01_2006-10-28_00:00:00.e010 ./etkf_output.e010
119     c)   Copy gen_be_etkf_nl.nl (cp $DAT_DIR/ETKF/gen_be_etkf_nl.nl .) 
120          You will need to set the information in this script as follows:
122          &gen_be_etkf_nl
123            num_members = 10,
124            nv = 7,
125            cv = 'U', 'V', 'W', 'PH', 'T', 'QVAPOR', 'MU',
126            naccumt1 = 20,
127            naccumt2 = 20,
128            nstartaccum1 = 1,
129            nstartaccum2 = 1,
130            nout = 1,
131            tainflatinput = 1,
132            rhoinput = 1,
133            infl_fac_file = '$PAR_DIR_ETKF/inflation_factor.dat',
134            infl_let_file = '$PAR_DIR_ETKF/inflation_letkf.dat',
135            eigen_val_file = '$PAR_DIR_ETKF/eigen_value.dat',
136            inno2_val_file = '$PAR_DIR_ETKF/innovation_value.dat',
137            proj2_val_file = '$PAR_DIR_ETKF/projection_value.dat',
138            infl_fac_TRNK = .false.,
139            infl_fac_WG03 = .false.,
140            infl_fac_WG07 = .true.,
141            infl_fac_BOWL = .false.,
142            letkf_flg=.false.,
143            rand_filt = .false.,
144            rnd_seed = 2006102800,
145            rnd_nobs = 5000
146            etkf_erro_max = 20.
147            etkf_erro_min = .00001
148            etkf_inno_max = 20.
149            etkf_inno_min = .00001
150            etkf_erro_flg = .true.
151            etkf_inno_flg = .true.
152            etkf_wrfda = .false.
154          'num_members' is the ensemble size (number of ensemble members)
155          'nv' is the number of variables
156          'cv' is a vector of strings containing the names of variables
157          'naccumt1' and 'naccumt2' are number of previous cycles used to account for inflation and rho factor.
158          'nstartaccum1' is the cycle from which naccumt1 cycle starts.
159          'nstartaccum2' is the cycle from which naccumt2 cycle starts.
160          'nout' is the cycle index. 
161          'tainflatinput' and 'rhoinput' are prescribeld factors for inflation and rho factor.
162          'infl_let_file', 'eigen_val_file', 'inno2_val_file', and 'proj2_val_file' are files to save template parameters
163          'infl_fac_TRNK', 'infl_fac_WG03', 'nfl_fac_WG07', and 'nfl_fac_BOWL' are options for different adaptive 
164            inflation schemes.
165          'rand_filt', 'rnd_seed', and 'rnd_nobs' are options for using filtered and random observations.
166          'etkf_erro_max', 'etkf_erro_min', 'etkf_inno_max', 'etkf_inno_min', 'etkf_erro_flg', 'etkf_inno_flg', and 
167            'etkf_wrfda' are options to conduct further observation filtering. 
169     d)   Link gen_be_etkf.exe to your working directory and run it.
171          > ln -sf  $WRFDA_DIR/var/build/gen_be_etkf.exe . 
172          > ./gen_be_etkf.exe
174     e)   Check the output files. etkf_output.* files are updated ensemble pertubations.
178   5)   Add updated ensemble perturbations to ensemble mean get new emsemble members
179        > cd $WORK_DIR_ETKF
181     a)   Copy add_mean_nl.nl (cp $DAT_DIR/ETKF/add_mean_nl.nl .) 
182          You will need to set the information in this script as follows for each member:
183          &add_mean_nl
184            num_members = 10
185            cv          = 'U', 'V', 'W', 'PH', 'T', 'QVAPOR', 'MU'
186            nv          = 7
187            path        = '$WORK_DIR_ETKF'
188            file_mean   = 'etkf_input' 
189            file_pert   = 'etkf_output.e001' (for each member, etkf_output.e0*...)
191     b)   Run gen_add_mean.exe.
193          > ln -sf WRFDA/var/build/gen_add_mean.exe  .
194          > ./gen_add_mean.exe 
196     c)   Check the output files. etkf_output.e0* files are the new ensemble members.