1 / 36

WRF-Var Namelists, Diagnostics, and Tools

WRF-Var Namelists, Diagnostics, and Tools. Please see other related detailed tutorial presentations available at. http://www.mmm.ucar.edu/wrf/users/tutorial/tutorial_presentation.htm. WRF-Var Namelist.

floria
Download Presentation

WRF-Var Namelists, Diagnostics, and Tools

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WRF-Var Namelists, Diagnostics, and Tools Please see other related detailed tutorial presentations available at http://www.mmm.ucar.edu/wrf/users/tutorial/tutorial_presentation.htm WRF-Var Namelist http://www.mmm.ucar.edu/wrf/users/tutorial/200807/VAR/WRF-Var2008JulyTutorial_wrfvarnamelist-HuiShao.pdf WRF-Var Tools and Verification http://www.mmm.ucar.edu/wrf/users/tutorial/200807/VAR/wrfvar_tools.pdf

  2. namelist.output namelist.input &WRFVAR1 WRITE_INCREMENTS=T, WRFVAR_MEM_MODEL=0, VAR4D=F, MULTI_INC=0, VAR4D_COUPLING=2, GLOBAL=F, PRINT_DETAI L_AIREP=F, PRINT_DETAIL_RADAR=F, PRINT_DETAIL_RAD=F, PRINT_DETAIL_XA=F, PRINT_DETAIL_XB=F, PRINT_DETAI L_OBS=F, PRINT_DETAIL_F_OBS=F, PRINT_DETAIL_MAP=F, PRINT_DETAIL_GRAD=F, PRINT_DETAIL_REGRESSION=F, PRI NT_DETAIL_SPECTRAL=F, PRINT_DETAIL_TESTING=F, PRINT_DETAIL_PARALLEL=F, PRINT_DETAIL_BE=F, PRINT_DETAIL _TIMING=F, CHECK_MAX_IV_PRINT=T / &WRFVAR2 ANALYSIS_ACCU=900, CALC_W_INCREMENT=F, DT_CLOUD_MODEL=F, WRITE_QCW=F, WRITE_QRN=F, WRITE_QCI=F, WRITE _QSN=F, WRITE_QGR=F, WRITE_FILTERED_OBS=F / &WRFVAR3 FG_FORMAT=1, OB_FORMAT=2, NUM_FGAT_TIME=1 / &WRFVAR4 USE_SYNOPOBS=T, USE_SHIPSOBS=T, USE_METAROBS=T, USE_SOUNDOBS=T, USE_MTGIRSOBS=T, USE_PILOTOBS=T, USE_ AIREPOBS=T, USE_GEOAMVOBS=T, USE_POLARAMVOBS=T, USE_BOGUSOBS=F, USE_BUOYOBS=T, USE_PROFILEROBS=F, USE_SATEMOBS=F, USE_GPSPWOBS=F, USE_GPSREFOBS=F, USE_SSMIRETRIEVALOBS=T, USE_SSMITBOBS=F, USE_SSMT1OBS=F, USE_SSMT2OBS=F, USE_QSCATOBS=F, &wrfvar1 write_increments=true, var4d=false, multi_inc=0, global=false, / &wrfvar2 / &wrfvar3 ob_format=2, num_fgat_time=1, / &wrfvar4 use_profilerobs=false, use_satemobs=false, use_gpspwobs=false, use_gpsrefobs=false, use_ssmiretrievalobs=true, use_qscatobs=false, /

  3. -rw-r--r-- 1 huishao ncar 43271476 Jul 7 16:27 analysis_increments lrwxrwxrwx 1 huishao ncar 32 Jul 7 16:27 be.dat -> /ptmp/huishao/tutorial/be/be.dat -rw-r--r-- 1 huishao ncar 1600 Jul 7 16:27 check_max_iv -rw-r--r-- 1 huishao ncar 313 Jul 7 16:27 cost_fn Namelist - WRFVAR1 • Write_increments • .false. : Default • .true. : Output analysis increment file “analysis_increments” (analysis-background). The file is a binary file, generated every time you run WRF-Var by using a FORTRAN code given inWRFVAR/da/da_setup_structures/da_write_increments.inc . • You could still produce your own analysis increment file by extracting first guess from analysis files (both in netcdf format). The advantage of using this “analysis_increment” is to avoid spurious increments (because it is generated directly from the code without including the first guess).

  4. Namelist - WRFVAR1 Example: print_detail_grad=.true. • Print_detail_* • .false. : Default • .true. : Output extra diagnostics Iteration 19 Iteration 0 Inner iteration stopped after 19 iterations jo_geoamv 0.985110326458E+02 jo%geoamv_u 0.292654551874E+02 jo%geoamv_v 0.692455774585E+02 jo%total 0.100697022398E+03 … Calculate grad_v(jo) iter= 19 cv_jb.cv_jb = 0.00000000000000E+00 cv_je.cv_je = 0.00000000000000E+00 xhat.xhat = 0.11886920460937E+02 j_grad.j_grad = 0.12125274158977E+02 Calculate grad_v(j) iter= 19 cv_jb.cv_jb = 0.00000000000000E+00 cv_je.cv_je = 0.00000000000000E+00 xhat_jb.xhat_jb = 0.11886920460937E+02 xhat_je.xhat_je = 0.00000000000000E+00 cv_xhat_jp.cv_xhat_jp = 0.00000000000000E+00 j_grad.j_grad = 0.66566955863646E-02 jo_geoamv 0.118917669698E+03 jo%geoamv_u 0.371704152820E+02 jo%geoamv_v 0.817472544158E+02 jo%total 0.120493680229E+03 … Calculate grad_v(jo) iter= 0 cv_jb.cv_jb = 0.00000000000000E+00 cv_je.cv_je = 0.00000000000000E+00 xhat.xhat = 0.00000000000000E+00 j_grad.j_grad = 0.93533513206338E+02 Calculate grad_v(j) iter= 0 cv_jb.cv_jb = 0.00000000000000E+00 cv_je.cv_je = 0.00000000000000E+00 xhat_jb.xhat_jb = 0.00000000000000E+00 xhat_je.xhat_je = 0.00000000000000E+00 cv_xhat_jp.cv_xhat_jp = 0.00000000000000E+00 j_grad.j_grad = 0.93533513206338E+02

  5. Namelist - WRFVAR2 • Analysis_accu • 900 (Sec): Default. If |analysis time - first guess time| > Analysis_accu, WRF-Var will give a warning like “Wrong xb time found???”. WRFDA/var/da/da_setup_structures/da_setup_firstguess_wrf.inc if ( num_fgat_time == 1 ) then write(unit=xb_date,fmt='(i4.4,2("-",i2.2),"_",i2.2,2(":",i2.2),".0000")') & grid%start_year, grid%start_month, grid%start_day, & grid%start_hour, grid%start_minute,grid%start_second len = len_trim(ANALYSIS_DATE) write(unit=an_date(1:len), fmt='(a)') trim(ANALYSIS_DATE) seconds = int(da_diff_seconds(an_date, xb_date)) if (seconds > ANALYSIS_ACCU) then write(unit=message(1),fmt='(A,A,A,A)') & "xb_date=",xb_date," an_date=", an_date write(unit=message(2),fmt='(A,I6,A,I6)') & "diff=",seconds," ANALYSIS_ACCU=",ANALYSIS_ACCU message(3)="=======> Wrong xb time found???" call da_warning(__FILE__,__LINE__,message(1:3)) end if end if

  6. Namelist - WRFVAR3 FG FG FG FG FG FG FG FG 09Z 10Z 11Z 12Z 13Z 14Z 15Z 09Z 10Z 11Z 12Z 13Z 14Z 15Z obs obs obs obs obs obs obs obs • Fg_format: The format of the first guess of WRF-Var. • 1 = WRF-ARW: Default (recommended). • Ob_format: The format of the conventional and satellite retrieval observation data going into WRF-Var. • 1 = BUFR (Please use this option with caution). • 2 = ASCII (ob.ascii): Default. • Both formats are supported by OBSPROC. • Num_fgat_time: number of data time window (slot) used in WRF-Var. • 1 = 3DVAR: Default. • >1 apply to FGAT and 4D-Var. Time window=3hr Num_fgat_time=1 Analysis time • First-Guess at Appropriate Time (FGAT): An option in WRF-3DVar that allows the observations to be applied at the correct time, rather than at the middle of the time window. Time window=3hr Num_fgat_time=7

  7. Namelist - WRFVAR4 • Use_obstype: Set to true to use particular observation types. • E.g, use_gpsrefobs=.true.: Assimilate GPS refractivity observations if any available in the data file. • Use_obs_errfac: Option for using tunedobservation error. • .false. : Default. At this moment, please use this option. • .true. : Use tuned observation error statistics (need to produce errfac.dat beforehand created by da_tune_obs_desrozier.f).

  8. Namelist - WRFVAR5 • Check_max_iv: Option for WRF-Var internal QC procedure, which is basically a maximum observation error check based on the innovations (Obs-Background). • .true. : default • .false: Use this option only if the observation data have been cleaned before going into WRF-Var. • Put_rand_seed: • Omb_set_rand: • Omb_add_noise: For observation error tuning.

  9. Namelist - WRFVAR5 (Cont.) • Obs_qc_pointer: • 0 : Default, Good data. • For ASCII observation files generated by OBSPROC, QC flag value ranges from -88 to 88 (please refer to the latest QC flags from OBSPROC). • qc = -88 : Missing data • qc = 0 : Good data • qc = -77 : Outside of horizontal domain • qc = -15 : Wind direction <0 or > 360 degrees • qc = -14 : Negative wind speed vector norm • qc = -13 : Null wind speed vector norm • qc = -12 : Spike in the wind profile • qc = -11 : Null temperature or dew point • qc = -10 : Superadiabatic temperature • qc = -9 : Spike in Temperature profile • qc = -8 : Height higher than model lid's height • qc = -5 : h,p or T from standard atmosphere • qc = -4 : h,p or T from background • qc = 1 : convective adjustement correction • qc = 2 : surface_correction • qc = 3 : Height recovery from hydrostaic + OBS • qc = 4 : Height recovery from reference + OBS • qc = 88 : Any other check • For PREBUFR observation files generated by OBSPROC, qc = 0 indicates the best quality (please refer to the latest QC flags from OBSPROC). if (qc .le. 128 .and. qc .ge. -5 ) then qz = 0 else qz = 4 ! >= 4 is reject endif

  10. Namelist - WRFVAR6 j=j+1 The following namelist variables are for minimization options: • Max_ext_its: Number of outer loops. • 1: Default. Only one outer loop. • Currently, maximum outer loop number is 10. • Ntmax: Maximum number of iterations in an inner loop for the minimization in WRF-Var. • 200: Default. The minimization in the inner loop can not exceed 200. • Eps: Value for minimization convergence criterion. It is an array with the dimension=max_ext_its. • 0.01(max_ext_its): The minimization is considered to converge when the norm of the cost function gradient is reduced at least 2 orders. Minimization i=i+1 i≥ntmax or |Jnew|< eps• |J| No Inner Yes Update first guess j ≥ max_ext_its No Outer Yes

  11. Namelist - WRFVAR7 u • Rf_passes: number of passes of recursive filter used in WRF-Var to define the horizontal correlation shape of background errors. • Var_scaling1(2,…5): The tuning factor of background error covariance for control variables. • Control variables: • 1: stream function • 2: unbalanced potential velocity • 3: unbalanced temperature • 4: pseudo relative humidity • 5: Unbalanced surface pressure • Len_scaling1(2,…5): The tuning factor of scale-length for control variables. T An example of pseudo single observation test (PSOT)

  12. Namelist - WRFVAR10 • Test_transforms: • .false. (default): Run data assimilation. • .true.: Perform adjoint check for the code debugging. Namelist - WRFVAR11 • Cv_options_hum: • 1 (default): Please do not change. • Check_rh: • 0 : No supersaturation check after minimization. • 1: With the supersaturation (rh> 100%) and minimum rh (rh<10%) check, and make the local adjustment of q. • 2 (default): With the supersaturation (rh> 95%) and minimum rh (rh<11%) check, and make the multi-level q adjustment under the constraint of integrated water vapor in column conserved.

  13. Namelist - WRFVAR11 (Cont.) For ensemble perturbation purpose. • Set_omb_rand_fac • Seed_array1 • Seed_array2 • Sfc_assi_options: • 1 (default): The surface observations will be assimilated based on the lowest model level first guess. • 2: The surface observations will be assimilated based on surface similarity theory in PBL. Innovations are computed based on 10-m wind and 2-m temperature & moisture. • Please use this option with caution, since the results could be very sensitive.

  14. The following namelist variables are related to Background Error (BE) computation and should be consistent to those in BE file (be.dat) computed from GEN_BE (July 22: BE talk). Namelist - WRFVAR11 • Lat_stats_option: .False. (default). Only set it true when be.dat is computed with i-dependence (approximately latitude-dependence) . Namelist - WRFVAR12 • Balance_type: 1 (default). Not used. Namelist - WRFVAR13 • Vert_corr: 2 (default). Please do not change it at this moment. • Vertical_ip: 0 (default). Not used. • Vert_evalue: 1 (default). Please do not change it at this moment. • Max_vert_var1(2,…5): Maximum truncation value (percentage) used in the vertical eigenvector decomposition in BE calculation.

  15. num_pseudo     = 0 (default), •    Set the number of pseudo observations. Currently only the value of 1 •    is allowed, i.e. num_pseudo = 1 --- the SINGLE-OBS test. • pseudo_x       = 1.0 (default), •    Set the x-position (J) of the OBS in unit of grid-point. • pseudo_y       = 1.0 (default), •    Set the y-position (I) of the OBS in unit of grid-point. • pseudo_z       = 1.0 (default), •    Set the z-position (ZK) of OBS with the vertical level index. •    In MM5, the top level has z=1, and bottom level, z=kx. • pseudo_val     = 1.0 (default), •    Set the innovation of the OBS variable: • u/v at m/s, p at Pa, t at degree, •    and q at kg/kg. • pseudo_err     = 1.0 (default), •    Set the OBS error of the OBS variable. Namelist - WRFVAR15 The namelist variables here are for pseudo single-observation test (PSOT) (July 22: Single ob experiment talk). u v Namelist - WRFVAR19 • pseudo_var     = 't' (default) •    Set the name of the OBS variable: •    'u' = X-direction component of wind, •    'v' = Y-direction component of wind, •    't' = Temperature, •    'p' = Pressure, •    'q' = Specific humidity, •    'pw' = Total precipitable water,      • 'ztd' = Zenith tropospheric delay, •    'ref' = Refractivity q T

  16. Namelist - WRFVAR17 • Analysis_type: Indicate job type of WRF-Var. • 3D-VAR (default): Run 3D-Var data assimilation. • VERIFY: Run WRF-Var verification mode ( then Check_max_iv=.false. and ntmax=0 by default). • July 22: WRF-Var tools Talk. • QC-OBS: Run WRF-Var QC procedure. • By combined with Check_max_iv=.true. and ntmax=0, you can producea WRF-Var filtered (QCed) observation data set (filtered_obs) without running the data assimilation. • 1st screen/QC procedure performed by observation preprocessor (OBSPROC). • 2nd screen/QC procedure performed in WRF-Var. • Main impact of 2nd screen/QC is on surface observations*. • Rejection rates will reduce with higher resolution, higher-order interpolation. In AMPS, 60% SYNOP obs were rejected. * Surface observation rejection here is mostly due to surface elevation check with sfc_assi_options=1. Such a rejection may be bypassed by using sfc_assi_options=2.

  17. WRF-Var diagnostics ASCII output files in the WRF-Var working directory check_max_iv cost_fn filtered_obs (analysis_type=“QC-OBS”) grad_fn gts_omb_oma jo statistics unpert_obs pert_obs (omb_add_noise=true) runtime.log or rsl.out.0000

  18. check_max_iv Information of observations that fail check_max_iv check For outer iteration 1, Total Rejections for Synop follows: Number of failed u-wind observations: 25 on 230 Number of failed v-wind observations: 30 on 230 Number of failed pressure observations: 5 on 230 Number of failed temperature observations: 0 on 230 Number of failed mixing ratio observations: 1 on 230 Finally Total Synop rejections 61 on 1150 Err_max failed:ID=47843FM-12 SYNOP Ix= 204 Ixf= 30 Err_max ratio = 1.3 for V inv, error: 0.708141E+01 0.110000E+01 Err_max < 0 ==> 0.0 -4444440.0 5.0 for V OBS ID: 98752FM-12 SYNOP LA/LON/ELV: 9.93 125.51 46.00 Check for observations with innovations (O-B) larger than [ factor observation error ] factors are hard-wired in var/da/da_control/da_control.f90 ! Maximum error check factors: inV > (Obs_error*factor) --> fails_error_max real, parameter :: max_error_t = 5.0, & max_error_uv = 5.0, & max_error_pw = 5.0, & max_error_ref = 5.0, & max_error_rh = 5.0, & max_error_q = 5.0, & max_error_p = 5.0, & max_error_tb = 5.0, & max_error_thickness = 5.0, & max_error_rv = 5.0, & max_error_rf = 5.0, & max_error_buv = 500.0, & max_error_bt = 500.0, & max_error_bq = 500.0, & max_error_slp = 500.0 &wrfvar1 CHECK_MAX_IV_PRINT=true (default) &wrfvar5 CHECK_MAX_IV=true (default) check_max_iv is written out in var/da/da_tools/da_max_error_qc.inc

  19. cost_fn and grad_fn &wrfvar11 CALCULATE_CG_COST_FN=false (default) Outer EPS Inner J Jb Jo Jc Je Jp Iter Iter 1 0.100E-01 0 37293.267 0.000 37293.267 0.000 0.000 0.000 1 0.100E-01 61 29974.427 1093.616 28880.811 0.000 0.000 0.000 Outer EPS Inner G Gb Go Ge Gp Iter Iter 1 0.100E-01 0 1619.534 0.000 1619.534 0.000 0.000 1 0.100E-01 61 12.931 46.768 48.511 0.000 0.000 b: background term o: observation term c: JcDFI term e: alpha term p: radiance variational bias correction term &wrfvar11 CALCULATE_CG_COST_FN=true Outer EPS Inner J Jb Jo Jc Je Jp Iter Iter 1 0.100E-01 0 37293.267 0.000 37293.267 0.000 0.000 0.000 1 0.100E-01 1 36140.373 1.014 36139.360 0.000 0.000 0.000 1 0.100E-01 2 35693.377 2.264 35691.114 0.000 0.000 0.000 1 0.100E-01 3 34953.968 6.881 34947.087 0.000 0.000 0.000 1 0.100E-01 4 34516.190 11.563 34504.627 0.000 0.000 0.000 . . . 1 0.100E-01 59 29976.227 1088.245 28887.982 0.000 0.000 0.000 1 0.100E-01 60 29975.699 1089.784 28885.915 0.000 0.000 0.000 1 0.100E-01 61 29974.427 1093.616 28880.811 0.000 0.000 0.000 cost_fn and grad_fn are written out in var/da/da_minimisation/da_calculate_j.inc cost_fn and grad_fn are used in var/graphics/ncl/plot_cost_grad_fn.ncl

  20. gts_omb_oma complete point-by-point, detailed observation information synop 995 1 1 176556 21.51 -104.90 89973.8836463 3.3147587 1.2193668 2 1.1000000 0.1849281 -1.5412909 -1.4225501 2 1.1000000 -1.6862257 295.5511624 2.5999150 2 2.0000000 1.3689324 89973.8836463 -273.5464584 2 100.0000000 -236.6028635 0.0134689 0.0048657 0 0.0036749 0.0050584 sound 121 49 1 4978897 16.26 -61.51 5000.0000000 3.1528830 0.0000000 -888888 2.7000000 0.0000000 -1.7396925 0.0000000 -888888 2.7000000 0.0000000 204.6500000 0.0000000 -888888 1.0000000 0.0000000 -888888.0000000 0.0000000 -888888 -888888.0000000 0.0000000 55 2 104220 68.70 -52.75 99500.0000000 -7.5305439 0.0000000 -888888 1.1000000 0.0000000 1.6861190 0.0000000 -888888 1.1000000 0.0000000 -888888.0000000 0.0000000 -888888 1.0000000 0.0000000 -888888.0000000 0.0000000 -888888 -888888.0000000 0.0000000 listed variables of each observation type vary: • obstype number of obs • number of levels • obs index, level index, station id, lat, lon, pressure, • (O, O-B, qcflag, Oerr, O-A)u, • (O, O-B, qcflag, Oerr, O-A)v, • (O, O-B, qcflag, Oerr, O-A)t, • (O, O-B, qcflag, Oerr, O-A)p, • (O, O-B, qcflag, Oerr, O-A)q Synop: u, v, t, p, q Metar: u, v, t, p, q Ship: u, v, t, p, q Geoamv: u, v Polaramv: u, v Gpspw: tpw Sound: u, v, t, q Sonde_sfc: u, v, t, p, q Airep: u, v, t Pilot: u, v Satem: thickness Qscat: u, v Profiler: u, v Buoy: u, v, t, p, q Airsr: t, q Gpsref: ref • SATOB are separated as geoamv and polaramv in WRF-Var • AMDAR and AIREP are grouped as airep in WRF-Var gts_omb_oma is written out in var/da/da_obs_io/da_write_obs.inc • gts_omb_oma is used in • var/graphics/ncl/plotobs.ncl • var/da/da_verif_obs/da_verif_obs.f90

  21. statistics domain-wise O-B and O-A information Diagnostics of OI for synop var u (m/s) n k v (m/s) n k t (K) n k p (Pa) n k q (kg/kg) n k Number: 331 332 355 330 361 Minimum(n,k): -5.4017 363 0 -5.4086 878 0 -9.7206 592 0 -390.7893 931 0 -0.4461E-02 719 0 Maximum(n,k): 5.0466 886 0 5.2878 630 0 7.7302 421 0 471.9343 944 0 0.5408E-02 787 0 Average : -0.8471 -0.1995 -1.1171 20.4177 -0.2525E-03 RMSE : 2.3023 2.1150 3.1978 116.1518 0.8045E-03 Diagnostics of AO for synop var u (m/s) n k v (m/s) n k t (K) n k p (Pa) n k q (kg/kg) n k Number: 331 332 355 330 361 Minimum(n,k): -4.2496 172 0 -5.0463 683 0 -8.9005 583 0 -472.9290 931 0 -0.4152E-02 719 0 Maximum(n,k): 5.5540 886 0 5.7990 630 0 8.8192 421 0 392.4096 944 0 0.5058E-02 1 0 Average : -0.0847 -0.0376 -0.4283 1.1709 0.1625E-04 RMSE : 1.8650 1.8093 2.1990 101.3816 0.5958E-03 Minimum of gridded analysis increments Lvl u i j v i j t i j p i j q i j 1 -1.8915 17 32 -1.9965 36 24 -5.2526 20 35 -314.7470 44 1 -0.1451E-02 18 32 2 -1.9476 16 32 -2.0070 36 24 -3.0142 21 36 -311.2885 44 1 -0.1438E-02 18 33 Maximum of gridded analysis increments Lvl u i j v i j t i j p i j q i j 1 1.3750 41 8 1.5739 28 12 3.2994 24 20 197.8351 28 2 0.1401E-02 39 8 2 1.4844 40 8 1.6180 28 13 1.7471 7 20 195.5165 28 2 0.1591E-02 39 8 Mean of gridded analysis increments Lvl u v t p q 1 -0.0327 0.0632 -0.1477 17.4414 -0.1047E-03 2 -0.0031 0.0736 0.0116 17.2543 -0.8066E-04 RMSE of gridded analysis increments Lvl u v t p q 1 0.7546 0.6040 1.3120 72.0441 0.4258E-03 2 0.7995 0.6483 0.9169 71.2614 0.4476E-03 • statistics is written out separately by each observation type with non-zero observation number • For example, var/da/da_sound/da_print_stats_sound.inc • da_oi_stats_sound.inc • da_ao_stats_sound.inc • var/da/da_synop/da_print_stats_synop.inc • da_oi_stats_synop.inc • da_ao_stats_synop.inc

  22. observation error = observation error  factor assigned in obsproc jo cost function of each observation type Blue boxes are observation error factor used in WRF-Var. Sum of individual Jo (numbers in red boxes) equals the printout value in rsl.out.0000 Final value of Jo = 28880.81069 factor = 1.0 when &wrfvar4 use_obs_errfac=false (default) jo is written out in var/da/da_minimisation/da_get_var_diagnostics.inc To apply observation error tuning factors: prepare an ASCII errfac.dat (or an output from da_util/da_tune_obs_desroziers.f90 ) and run WRF-Var with &wrfvar4 use_obs_errfac=true errfac.dat is read in var/da/da_obs_io/da_read_errfac.inc

  23. unpert_obs (y=H(x’(yo))) synop 990 1 1 1 -0.4190450E+00 0.2579359E-01 0.2115635E+00 0.1756130E+02 -0.4622692E-04 -0.9999999E+06 -0.9999999E+06 sound 160 46 1 1 -0.5809316E+00 -0.3796593E+00 0.6811523E+00 -0.3070524E-03 -0.9999999E+06 -0.9999999E+06 -0.9999999E+06 1 2 -0.7361224E+00 -0.3743801E+00 -0.8888880E+06 -0.8888880E+06 -0.9999999E+06 -0.9999999E+06 -0.9999999E+06 obstype obs number level numer obs index, level index, listed variables of each observation type vary: Synop: u, v, t, p, q Metar: u, v, t, p, q Ship: u, v, t, p, q Geoamv: u, v Polaramv: u, v Gpspw: tpw Sound: u, v, t, q Sonde_sfc: u, v, t, p, q Airep: u, v, t Pilot: u, v Satem: thickness Qscat: u, v Profiler: u, v Buoy: u, v, t, p, q Airsr: t, q Gpsref: ref unpert_obs is written out in var/da/da_obs_io/da_write_y.inc pert_obs (y=H(x’(yo+noise))) unpert_obs and pert_obs, together with other files, are used in var/da/da_util/da_tune_obs_desroziers.f90 Reference: Desroziers, G. and S. Ivanov, 2001: Diagnosis and adaptive tuning of observation-error parameters in a variational assimilation. Q. J. R. Meteorol. Soc., 127, 1433-1452.

  24. Observation error tuning • Data used in calculating tuning factors: • a collection of unpert_obs, jo and rsl.out.0000 from regular WRF-Var runs • a collection of rand_obs_error and pert_obs from perturbed WRF-Var runs • Steps: • a series of WRF-Var regular runs to collect unpert_obs [y = H(x'(yo)) of each obs type], jo [Jo of each obs type], and rsl.out.0000 which contains the final total cost function (J, Jo, Jb) information • (2) a series of WRF-Var perturbed runs (&wrfvar5 omb_add_noise = .true.) to collect rand_obs_error [noise of each obs type] and pert_obs [yp = H(x'(yo+noise)) of each obs type] • (3) run da_tune_obs_desroziers.exe to generated errfac.dat var/scripts/da_tune_obs_desroziers.ksh var/da/da_util/da_tune_obs_desroziers.f90

  25. Observation errors and tuning factors

  26. gts_omb_oma statistics How to do verification using WRF-Var? • Verifying against observations (all types that can be assimilated in WRF-Var) • Collecting O-B (observations minus background) information • Same numbers of observations should be used for verifying • analyses/forecasts from different experiments

  27. WPS/real OBSPROC Sample experiment scenario GFS data gfs/2008070100/wrfinput_d01 gfs/2008070112/wrfinput_d01 gfs/2008070200/wrfinput_d01 gfs/2008070212/wrfinput_d01 Observations obs/obs_gts.2008-07-01_00:00:00.3DVAR obs/obs_gts.2008-07-01_12:00:00.3DVAR obs/obs_gts.2008-07-02_00:00:00.3DVAR obs/obs_gts.2008-07-02_12:00:00.3DVAR wrf forecasts from 4 different initial times, each wrfout contains, for example, 00h, 12h, 24h forecasts EXP1 WRF-Var Use_soundobs=true Use_synopobs=false Exp1/wrfout_d01_ 2008-07-01_00:00:00 Exp1/wrfout_d01_ 2008-07-01_12:00:00 Exp1/wrfout_d01_ 2008-07-02_00:00:00 Exp1/wrfout_d01_ 2008-07-02_12:00:00 wrfvar_output (wrfinput_d01) EXP2 WRF-Var Use_soundobs=true Use_synopobs=true Exp2/wrfout_d01_ 2008-07-01_00:00:00 Exp2/wrfout_d01_ 2008-07-01_12:00:00 Exp2/wrfout_d01_ 2008-07-02_00:00:00 Exp2/wrfout_d01_ 2008-07-02_12:00:00 wrfvar_output (wrfinput_d01) EXP1 and EXP2 have different types of observations assimilated - testing impact of synop

  28. How to do verification using WRF-Var? Step 1: generate one set of observations to be used for verifying wrf forecasts • Pre-Step 2: split wrf output so that each file contains data from only one time. • wrfout_d01_2008-07-01_00:00:00 contains the following forecast times • Times = • "2008-07-01_00:00:00", • "2008-07-01_12:00:00", • "2008-07-02_00:00:00", • mkdir 2008070100 • ncks -d Time,0,0 wrfout_d01_2008-07-01_00:00:00 2008070100/wrfout_d01_2008-07-01_00:00:00 • ncks -d Time,1,1 wrfout_d01_2008-07-01_00:00:00 2008070100/wrfout_d01_2008-07-01_12:00:00 • ncks -d Time,2,2 wrfout_d01_2008-07-01_00:00:00 2008070100/wrfout_d01_2008-07-02_00:00:00 Step 2: run WRF-Var with the observations from step 1 and with each forecast you want to verify as a first-guess to collect O-F (observation minus forecast) values, i.e. gts_omb_oma and statistics. Step 3: graphics/visualization

  29. WPS/real OBSPROC Purpose: to write out good observations with respect to the background used How to do verification using WRF-Var? Step 1: generate one set of observations to be used for verifying wrf forecasts GFS data Run WRF-Var with the settings: &wrfvar5 check_max_iv=true &wrfvar6 ntmax=0 &wrfvar11 sfc_assi_options=2 &wrfvar17 analysis_type="QC-OBS" gfs/2008070100/wrfinput_d01 gfs/2008070112/wrfinput_d01 gfs/2008070200/wrfinput_d01 gfs/2008070212/wrfinput_d01 gfs/2008070300/wrfinput_d01 gfs/2008070312/wrfinput_d01 obs/obs_gts.2008-07-01_00:00:00.3DVAR obs/obs_gts.2008-07-01_12:00:00.3DVAR obs/obs_gts.2008-07-02_00:00:00.3DVAR obs/obs_gts.2008-07-02_12:00:00.3DVAR obs/obs_gts.2008-07-03_00:00:00.3DVAR obs/obs_gts.2008-07-03_12:00:00.3DVAR Observations WRF-Var does not actually do QC except for rejecting observations that fail check_max_ivcheck when check_max_iv = true rejecting surface observations with larger than 100m height difference between model and observation when sfc_assi_options = 1 Rejecting observations below the lowest model level and above the highest model level filtered_obs (in the same format as obs_gts*.3DVAR) will be used in Step 2. 2008070100/filtered_obs 2008070112/filtered_obs 2008070200/filtered_obs 2008070212/filtered_obs 2008070300/filtered_obs 2008070312/filtered_obs

  30. How to do verification using WRF-Var? Step 2: run WRF-Var with the filtered observations from step 1 and with each forecast or analysis you want to verify as a first-guess to collect O-F (observation minus forecast) values, i.e. gts_omb_oma and statistics. Initial time Forecast valid time • Run WRF-Var with the settings: • &wrfvar5 • check_max_iv=false • &wrfvar6 • ntmax=0 • (only O-B information is needed, no need to go through minimization) • &wrfvar17 • analysis_type=”VERIFY" Exp1/2008070100/wrfout_d01_ 2008-07-01_00:00:00 Exp1/2008070100/wrfout_d01_ 2008-07-01_12:00:00 Exp1/2008070100/wrfout_d01_ 2008-07-02_00:00:00 Exp1/2008070112/wrfout_d01_ 2008-07-01_12:00:00 Exp1/2008070112/wrfout_d01_ 2008-07-02_00:00:00 Exp1/2008070112/wrfout_d01_ 2008-07-02_12:00:00 Lots of gts_omb_oma and/or statistics files to play with! Exp2/2008070100/wrfout_d01_ 2008-07-01_00:00:00 Exp2/2008070100/wrfout_d01_ 2008-07-01_12:00:00 Exp2/2008070100/wrfout_d01_ 2008-07-02_00:00:00 Exp2/2008070112/wrfout_d01_ 2008-07-01_12:00:00 Exp2/2008070112/wrfout_d01_ 2008-07-02_00:00:00 Exp2/2008070112/wrfout_d01_ 2008-07-02_12:00:00 2008070100/filtered_obs 2008070112/filtered_obs 2008070200/filtered_obs 2008070212/filtered_obs analysis_type=“VERIFY” keeps observations below the lowest model level and above highest model level to ensure same observations are used for different experiments.

  31. Step 3: graphics/visualization Presentation and manipulation of the large amount of gts_omb_oma and/or statistics files collected in Step 2 statistics files might be easier to handle than gts_omb_oma files, but no information in vertical if using statistics

  32. WRF-Var Tools • Misc. plotting • var/graphics/ncl/WRF-Var_plot.ncl • WRF_contributed.ncl.test • (procedure WRF_map_c for setting map resources) • plot_cost_grad_fn.ncl • plotobs.ncl • Pseudo single obs test plotting • var/scripts/da_plot_psot.ksh • var/graphics/ncl/psot_xy_auto.ncl • var/graphics/ncl/psot_xz_auto.ncl • var/graphics/ncl/psot_yz_auto.ncl • Background Error Statistics plotting • var/graphics/ncl/gen_be/gen_be_corr_ps.ncl • gen_be_corr_yz.ncl • gen_be_corr_z.ncl • gen_be_global_evals.ncl • gen_be_global_evecs.ncl • gen_be_lengthscales.ncl • Verification plotting • var/scripts/da_verif_anal_plot.ksh • var/graphics/ncl/verif_anal_time_series.ncl • var/graphics/ncl/verif_anal_time_average.ncl • var/graphics/ncl/verif_anal_vert_profile.ncl • var/scripts/da_verif_obs_plot.ksh • var/graphics/ncl/verif_obs_time_series.ncl • var/graphics/ncl/verif_obs_vert_profile.ncl • var/graphics/ncl/verif_obs_time_average.ncl • var/graphics/ncl/verif_obs_vert_profile_gpsref.ncl for verification against grid analysis for verification against observations • AIRS Retrievals Decoder • convertor/decode_l2_airs

  33. var/graphics/ncl/WRF-Var_plot.ncl • WRF_contributed.ncl.test • (procedure WRF_map_c for setting map resources) Reads in WRF netCDF files: wrfinput_d01 and wrfvar_output kl = 18 fg = first_guess->U an = analysis->U plot_data = an kl = 18 fg = first_guess->T ;Theta-T0 an = analysis->T ;Theta-T0 plot_data = an - fg Eta-level plots only Alternative tools WRF tutorial: Post-processing Tools (1): NCL by Cindy Bruyere WRF tutorial: Post-processing Tools (3): RIP by Cindy Bruyere var/graphics/ncl/plot_cost_grad_fn.ncl Reads in WRF-Var ASCII output: cost_fn and grad_fn Run WRF-Var with &wrfvar11 CALCULATE_CG_COST_FN=true to get cost function value of each iteration However, CALCULATE_CG_COST_FN=true increases run-time significantly. Default setting in Registry.wrfvar is CALCULATE_CG_COST_FN=false

  34. The information stored in gts_omb_oma is obs, omb, oma. Background value is calculated using obs - omb.Analysis value is calculated using obs - oma.In the case of a rejected obs, its ombis 0, which leads to obs = bak.All rejected observations show up on the scatter plots on the diagonal line.The shape of 'before QC' and 'after QC' scatter plots are the same, with 'before QC' having lower mean and rms values because of those obs=bak points. var/graphics/ncl/plotobs.ncl Reads in WRF-Var ASCII output: gts_omb_oma ; method 1: set a 2-D array of bounded pressure levels in hPa plevs = (/ (/1005.,995./),(/930.,920./),(/855.,845/),(/705.,695./) /) ; plevs = (/ (/1050.,0./),(/-999.,-999./) /) ; method 2: set a 1-D array of fixed pressure levels in hPa ; plevs = (/ 1000., 850., 500., 300., 250., 200., 150., 100. /) mapinfo_from_file = True fname=“wrfinput_d01” ; subdomain = True subdomain = False if ( subdomain ) then ; subdomain needs to be a lat-lon box maxlat = 35. minlat = 25. maxlon = -75. minlon = -90. end if I guess the 'QC' term used in the plots is somewhat misleading. Please refer to p.17 of this presentation about the meaning of “QC”.

  35. processed stations actually used stations The information stored in gts_omb_oma is obs, omb, oma. Background value is calculated usingobs - omb. Analysis value is calculated using obs - oma. In the case of a rejected obs, its omb is set to be 0, which leads to obs = bak. All rejected observations show up on the scatter plots on the diagonal line.The shape of 'before QC' and 'after QC' scatter plots are the same, with 'before QC' having lower mean and rms values because of those obs=bak points.

  36. Var/scripts/da_verif_obs_plot.ksh Var/graphics/ncl/verif_obs_time_series.ncl Var/graphics/ncl/verif_obs_vert_profile.ncl Var/graphics/ncl/verif_obs_time_average.ncl Var/graphics/ncl/verif_obs_vert_profile_gpsref.ncl Var/scripts/da_verif_anal_plot.ksh Var/graphics/ncl/verif_anal_time_series.ncl Var/graphics/ncl/verif_anal_time_average.ncl Var/graphics/ncl/verif_anal_vert_profile.ncl U, V T, Q RMSE/BIAS/ABIAS on user-specified levels U, V T, Q, P RMSE/BIAS/ABIAS on surface level

More Related