Skip to content

RadarVar for directly assimilating radar reflectivity with ice-phase species#1083

Merged
davegill merged 43 commits intowrf-model:developfrom
children1985:RadZIceVar
Feb 19, 2020
Merged

RadarVar for directly assimilating radar reflectivity with ice-phase species#1083
davegill merged 43 commits intowrf-model:developfrom
children1985:RadZIceVar

Conversation

@children1985
Copy link
Copy Markdown
Contributor

@children1985 children1985 commented Feb 10, 2020

TYPE: new feature

KEYWORDS: reflectivity operator, TL/AD, direct assimilation, ice (dry/wet) phase.

SOURCE: Shizhang Wang (NUIST), Jake Liu (NCAR)

DESCRIPTION OF CHANGES:

  1. 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.

  2. 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.

  3. Now there are 3 options for radar reflectivity DA, corresponding namelist settings are given below:

  • Option 1: direct reflectivity DA with the old rain-only radar operator using total water as analysis variable

radar_rf_opt = 1,
use_radar_rf = T,
use_radar_rhv = F,
use_radar_rqv = F,
cloud_cv_options = 1,

  • Option 2: direct reflectivity DA with the new radar operator using separate hydrometeor analysis variable

radar_rf_opt = 2,
use_radar_rf = T,
use_radar_rhv = F,
use_radar_rqv = F,
cloud_cv_options = 2, ! or 3

  • Option 3: retrieved hydrometeors DA using separate hydrometeor analysis variables

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

  1. For option 2 and 3 with cloud_cv_options=2, be.dat file needs to be generated using GENBE_2.0 from https://github.com/wrf-model/GENBE_2.0 (master branch), or gen_be_v3 (see PR Improve memory usage for DA gen_be_v3 and add another output reformatting tool #1088).

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:

  1. New radar reflectivity DA scheme is tested with a case over CONUS.
  2. WRFDA regression tests passed with this change.

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.

liujake and others added 5 commits April 28, 2019 23:50
…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
@children1985 children1985 requested review from a team as code owners February 10, 2020 01:02
@liujake liujake requested review from liujake and removed request for a team February 10, 2020 01:11
@children1985
Copy link
Copy Markdown
Contributor Author

children1985 commented Feb 10, 2020 via email

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 10, 2020

@children1985 Shizhang: Please merge the latest 'develop' code into your fork's branch, then those unnecessary changes will disappear.

children1985 and others added 5 commits February 10, 2020 16:08
".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
@davegill
Copy link
Copy Markdown
Contributor

@children1985
Would you remove all of the leading spaces in the PR message for the new and modified fields.

    modified:   Registry/registry.var
    modified:   share/input_wrf.F

The github markdown interprets the leading spaces to identify a block comment.

@davegill
Copy link
Copy Markdown
Contributor

@liujake @jjguerrette
Jake and JJ,

Here's what I am looking at that indicates things are mostly OK:

  1. This is entirely in the var subdirectory (other than the var registry file). That means little impact on the rest of WRF.
  2. I asked for a clean-up of a file that was unnecessarily changed in the share directory, and that was done.
  3. This PR is for the v4.2 branch, which is correct for new development.
  4. The PR comments are done well.

What I would still like to see:

  1. Clean-up of the PR message (remove the block comment format).
  2. The email is not required in the PR, but an affiliation would be appreciated.
  3. Explicitly state the results of the DA regression test.

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 10, 2020

@davegill I will work on it Today.

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 10, 2020

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, &
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this putting variables back in that were removed with f08925a

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This file is now unchanged.

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 11, 2020

@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
@children1985 children1985 requested a review from a team as a code owner February 12, 2020 00:45
@jamiebresch
Copy link
Copy Markdown
Contributor

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.

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 12, 2020

@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).

@liujake liujake removed the request for review from a team February 12, 2020 20:34
@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 13, 2020

@davegill Addressed your comments and WRFDA regression tests passed. It is ready to merge if you have no objection.

@liujake liujake requested a review from jjguerrette February 13, 2020 03:52
@liujake liujake removed the request for review from jjguerrette February 13, 2020 18:08
@weiwangncar
Copy link
Copy Markdown
Collaborator

@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?

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 13, 2020

Ok. Will hold. #953 will not go in 4.2, can be considered in the future.

@weiwangncar
Copy link
Copy Markdown
Collaborator

@liujake If PR#953 will be considered later, do you expect Dr. Wang will help updating this code to the new structure?

@liujake
Copy link
Copy Markdown
Contributor

liujake commented Feb 13, 2020

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.

@davegill
Copy link
Copy Markdown
Contributor

@liujake @jjguerrette
Jake and JJ,
I am OK with this PR. Since it is already approved, you may merge this code to the develop branch.

@davegill davegill merged commit a9a1089 into wrf-model:develop Feb 19, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants