RadarVar for directly assimilating radar reflectivity with ice-phase species#1083
RadarVar for directly assimilating radar reflectivity with ice-phase species#1083davegill merged 43 commits intowrf-model:developfrom
Conversation
…with ice-phase modified: Registry/registry.var modified: var/da/da_define_structures/da_define_structures.f90 modified: var/da/da_minimisation/da_minimisation.f90 modified: var/da/da_obs/da_fill_obs_structures_radar.inc modified: var/da/da_obs/da_obs.f90 modified: var/da/da_obs_io/da_read_obs_radar.inc modified: var/da/da_radar/da_ao_stats_radar.inc modified: var/da/da_radar/da_calculate_grady_radar.inc modified: var/da/da_radar/da_check_max_iv_radar.inc modified: var/da/da_radar/da_get_innov_vector_radar.inc modified: var/da/da_radar/da_jo_and_grady_radar.inc modified: var/da/da_radar/da_oi_stats_radar.inc modified: var/da/da_radar/da_radar.f90 modified: var/da/da_radar/da_radar_rf.inc modified: var/da/da_radar/da_residual_radar.inc modified: var/da/da_radar/da_transform_xtoy_radar.inc modified: var/da/da_radar/da_transform_xtoy_radar_adj.inc modified: var/da/da_setup_structures/da_scale_background_errors.inc modified: var/da/da_setup_structures/da_setup_be_regional.inc
…re values for hail), add non-rain assimilation (currently desgined for CWB data) Changes to be committed: modified: Registry/registry.var modified: share/input_wrf.F new file: var/build/Makefile modified: var/build/depend.txt modified: var/da/da_define_structures/da_allocate_y.inc modified: var/da/da_define_structures/da_allocate_y_radar.inc modified: var/da/da_define_structures/da_define_structures.f90 modified: var/da/da_main/da_med_initialdata_input.inc modified: var/da/da_obs_io/da_read_obs_radar.inc modified: var/da/da_radar/da_get_innov_vector_radar.inc modified: var/da/da_radar/da_radar.f90 modified: var/da/da_radar/da_radar_rf.inc modified: var/da/da_radar/da_radial_velocity_adj.inc new file: var/da/da_radar/da_radzicevar.inc new file: var/da/da_radar/da_radzicevar_adj.inc new file: var/da/da_radar/da_radzicevar_cal_tl_fw4wetice.inc new file: var/da/da_radar/da_radzicevar_calc_ice_abc.inc new file: var/da/da_radar/da_radzicevar_dryice_adj.inc new file: var/da/da_radar/da_radzicevar_dryice_tl.inc new file: var/da/da_radar/da_radzicevar_parameter_zrx.inc new file: var/da/da_radar/da_radzicevar_parameter_zxx.inc new file: var/da/da_radar/da_radzicevar_pkx.inc new file: var/da/da_radar/da_radzicevar_prepare_interceptpara.inc new file: var/da/da_radar/da_radzicevar_prepare_mixingratios.inc new file: var/da/da_radar/da_radzicevar_prepare_zmm_adj.inc new file: var/da/da_radar/da_radzicevar_pxabk.inc new file: var/da/da_radar/da_radzicevar_rain_adj.inc new file: var/da/da_radar/da_radzicevar_rain_tl.inc new file: var/da/da_radar/da_radzicevar_rhoair_tl.inc new file: var/da/da_radar/da_radzicevar_sigma_in_abc.inc new file: var/da/da_radar/da_radzicevar_tl.inc new file: var/da/da_radar/da_radzicevar_upper_f.inc new file: var/da/da_radar/da_radzicevar_virtual.inc new file: var/da/da_radar/da_radzicevar_waterfraction.inc new file: var/da/da_radar/da_radzicevar_wetice_adj.inc new file: var/da/da_radar/da_radzicevar_wetice_tl.inc modified: var/da/da_radar/da_transform_xtoy_radar.inc modified: var/da/da_radar/da_transform_xtoy_radar_adj.inc modified: var/da/da_radar/da_write_oa_radar_ascii.inc modified: var/da/da_setup_structures/da_scale_background_errors.inc modified: var/da/da_setup_structures/da_setup_be_regional.inc modified: var/da/da_setup_structures/da_setup_structures.f90
All conflicts fixed Conflicts: var/da/da_define_structures/da_allocate_y.inc var/da/da_define_structures/da_allocate_y_radar.inc var/da/da_define_structures/da_define_structures.f90 var/da/da_setup_structures/da_setup_structures.f90
…ccv_be_inp_opt----it was removed in the develop but needed by some subroutines) Revise a conflict in var/da/da_define_structures/da_define_structures.f90 The RadarVar (was RadZIceVar) in this version works normally. On branch RadZIceVar Changes to be committed: modified: var/da/da_define_structures/da_define_structures.f90 modified: var/da/da_setup_structures/da_setup_structures.f90 Untracked files: var/build/LICENSE
|
Hi Dave,
I did not change this part. My code is based on the develop version more than 6 months ago, which might be the cause.
Shizhang
…------------------ 原始邮件 ------------------
发件人: "Dave Gill"<[email protected]>;
发送时间: 2020年2月10日(星期一) 上午10:12
收件人: "wrf-model/WRF"<[email protected]>;
抄送: "Brandenburg"<[email protected]>;"Mention"<[email protected]>;
主题: Re: [wrf-model/WRF] RadarVar for directly assimilating radar reflectivity with ice-phase species (#1083)
@davegill commented on this pull request.
In share/input_wrf.F:
> @@ -202,7 +202,7 @@ SUBROUTINE input_wrf ( fid , grid , config_flags , switch , ierr ) CALL wrf_get_dom_ti_integer( fid , 'HYBRID_OPT', hybrid_opt, 1, icnt, ierr ) CALL wrf_get_dom_ti_integer( fid , 'USE_THETA_M', use_theta_m, 1, icnt, ierr ) - IF ( hybrid_opt .NE. config_flags%hybrid_opt ) THEN + IF ( hybrid_opt .NE. config_flags%hybrid_opt .and. hybrid_opt .le. 100 ) THEN
@children1985
Can you explain what the extra test hybrid_opt .le. 100 is for? I assume that you are using the same logic for the moist theta (use_theta_m).
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
|
@children1985 Shizhang: Please merge the latest 'develop' code into your fork's branch, then those unnecessary changes will disappear. |
".and. hybrid_opt .le. 100" is no longer used in the latest develop branch
".and. use_theta_m .le.100" is no longer used in the latest develop branch
On branch RadZIceVar Changes to be committed: modified: Registry/registry.var modified: var/da/da_radar/da_get_innov_vector_radar.inc modified: var/da/da_radar/da_radar.f90
On branch RadZIceVar Changes to be committed: modified: share/input_wrf.F
|
@children1985 The github markdown interprets the leading spaces to identify a block comment. |
|
@liujake @jjguerrette Here's what I am looking at that indicates things are mostly OK:
What I would still like to see:
|
|
@davegill I will work on it Today. |
|
A note here: current namelist setting (use_radar_rhv = true and radar_rf_opt = 2) to turn this on is confusing. use_radar_rhv=true is for the assimilation of Retrieved Hydrometeor Variables. We now have 3 options: (1) retrieval DA; (2) direct reflectivity DA with total water control variable (i.e., cloud_cv_options=1); (3) direct reflectivity DA with individual hydrometeor as analysis variable (i.e., cloud_cv_options=2 or 3). For now, leave as it is, but will need to clean this up together with PR #953 in the future. Radar DA options become more and more complicated! |
| ! | ||
| real, allocatable, dimension(:,:) :: v1_val , v2_val , v3_val , & | ||
| v4_val , v5_val | ||
| v4_val , v5_val, & |
There was a problem hiding this comment.
Is this putting variables back in that were removed with f08925a
There was a problem hiding this comment.
This file is now unchanged.
|
@davegill Thanks a lot for reviewing! Mostly likely those two BE related routines will be modified. I am testing it. Not succeeded yet. |
modified: var/da/da_radar/da_transform_xtoy_radar_adj.inc modified: var/da/da_setup_structures/da_scale_background_errors.inc modified: var/da/da_setup_structures/da_setup_be_regional.inc modified: var/da/da_setup_structures/da_setup_obs_structures_madis.inc
modified: var/da/da_setup_structures/da_setup_structures.f90
modified: share/mediation_integrate.F modified: wrftladj/module_diffusion_em_ad.F
|
To make the radar DA code more clear and sustainable, it makes more sense to grant PR #953 higher priority than this PR. No objection received for PR #953, Jenny Sun also approved the proposed change in her July 16, 2019 email to one of this PR developers. For the benefit of future users and developers, it is desired the developers of this PR at least try to incorporate the proposed namelist changes in PR #953 as much as possible. For example, right now it exists some conflict about the definition of radar_rf_opt between this PR and PR #953. PR #953 suggests the existing radar schemes radar_rf_opt=0,1,2. New scheme should be radar_rf_opt=3. |
|
@jamiebresch I agree with you that current radar DA options are not well organized. But historically people did that way and the users already got familiar with it. New namelist changes could either make users happy or lead to more questions/confusion. A lot of users will need to adjust their research/operational namelist setting (including our own regression tests namelist setting). Given very limited resource, my priority will be given to adding new capabilities that will potentially benefit scientific research or operational performance, instead of a nicely done code but without much benefit for research and operation (and potentially adding more work to users and ourselves). |
modified: var/da/da_setup_structures/da_setup_be_regional.inc
|
@davegill Addressed your comments and WRFDA regression tests passed. It is ready to merge if you have no objection. |
|
@liujake Dave is out until next Tues. Let's hold the merge for a few days. I have a question about PR#953, will that ever be considered for the repository? |
|
Ok. Will hold. #953 will not go in 4.2, can be considered in the future. |
|
@liujake If PR#953 will be considered later, do you expect Dr. Wang will help updating this code to the new structure? |
|
Reorganizing code/options is beyond radar DA, it is also related to all-sky radiance DA with cloud_cv_options, analysis variable organization, BE file structure (wanted NC format, ...), GEN_BE code etc. I need to think this more thoroughly. |
|
@liujake @jjguerrette |
TYPE: new feature
KEYWORDS: reflectivity operator, TL/AD, direct assimilation, ice (dry/wet) phase.
SOURCE: Shizhang Wang (NUIST), Jake Liu (NCAR)
DESCRIPTION OF CHANGES:
Implement a radar reflectivity operator and its TL/AD for direct assimilation of reflectivity. It accounts for contributions of rainwater, dry/wet snow, and dry/wet graupel and enables the analysis of rain/snow/graupel mixing ratios. This operator follows Jung et al., 2008, but the tangent linear and adjoint operators are newly developed.
To turn on this capability, set "use_radar_rf=true" and "radar_rf_opt = 2" in namelist (\wrfvar4) along with cloud_cv_options=2 or 3. Additional tunable parameters include:
rf_qthres=2e-5: determine the minimum value of mixing ratio to be adjusted. Mixing ratios (qrain,qsnow,qgaupel) smaller than this value will be adjusted according to background temperature.
radar_rf_rscl and radar_rv_rscl: Tuning the weight between reflectivity term and radial velocity term in the cost function. Default value is 1.0 meaning equal weight.
rfmin (default 0): reflectivity value below rfmin is considered to be no-rain echo with specific treatment.
Now there are 3 options for radar reflectivity DA, corresponding namelist settings are given below:
radar_rf_opt = 1,
use_radar_rf = T,
use_radar_rhv = F,
use_radar_rqv = F,
cloud_cv_options = 1,
radar_rf_opt = 2,
use_radar_rf = T,
use_radar_rhv = F,
use_radar_rqv = F,
cloud_cv_options = 2, ! or 3
radar_rf_opt = 1, ! no effect for this option
use_radar_rf = F,
use_radar_rhv = T,
use_radar_rqv = T, ! can be false
cloud_cv_options = 2, ! or 3
LIST OF MODIFIED FILES:
M Registry/registry.var
M var/build/depend.txt
M var/da/da_define_structures/da_define_structures.f90
M var/da/da_main/da_solve.inc
M var/da/da_minimisation/da_minimisation.f90
M var/da/da_obs/da_fill_obs_structures_radar.inc
M var/da/da_obs/da_obs.f90
M var/da/da_obs_io/da_read_obs_radar.inc
M var/da/da_radar/da_get_innov_vector_radar.inc
M var/da/da_radar/da_radar.f90
M var/da/da_radar/da_radar_rf.inc
A var/da/da_radar/da_radzicevar.inc
A var/da/da_radar/da_radzicevar_adj.inc
A var/da/da_radar/da_radzicevar_cal_tl_fw4wetice.inc
A var/da/da_radar/da_radzicevar_calc_ice_abc.inc
A var/da/da_radar/da_radzicevar_dryice_adj.inc
A var/da/da_radar/da_radzicevar_dryice_tl.inc
A var/da/da_radar/da_radzicevar_parameter_zrx.inc
A var/da/da_radar/da_radzicevar_parameter_zxx.inc
A var/da/da_radar/da_radzicevar_pkx.inc
A var/da/da_radar/da_radzicevar_prepare_interceptpara.inc
A var/da/da_radar/da_radzicevar_prepare_mixingratios.inc
A var/da/da_radar/da_radzicevar_prepare_zmm_adj.inc
A var/da/da_radar/da_radzicevar_pxabk.inc
A var/da/da_radar/da_radzicevar_rain_adj.inc
A var/da/da_radar/da_radzicevar_rain_tl.inc
A var/da/da_radar/da_radzicevar_rhoair_tl.inc
A var/da/da_radar/da_radzicevar_sigma_in_abc.inc
A var/da/da_radar/da_radzicevar_tl.inc
A var/da/da_radar/da_radzicevar_upper_f.inc
A var/da/da_radar/da_radzicevar_virtual.inc
A var/da/da_radar/da_radzicevar_waterfraction.inc
A var/da/da_radar/da_radzicevar_wetice_adj.inc
A var/da/da_radar/da_radzicevar_wetice_tl.inc
M var/da/da_radar/da_transform_xtoy_radar.inc
M var/da/da_radar/da_transform_xtoy_radar_adj.inc
M var/da/da_setup_structures/da_setup_be_regional.inc
TESTS CONDUCTED:
RELEASE NOTE: New capability for directly assimilating radar reflectivity using a new observation operator and its TL/AD operator considering snow and graupel.
Wang, S. and Liu, Z.: A radar reflectivity operator with ice-phase hydrometeors for variational data assimilation (version 1.0) and its evaluation with real radar data, Geosci. Model Dev., 2019, 12, 4031–4051.