Skip to content

Improve memory usage for DA gen_be_v3 and add another output reformatting tool#1088

Merged
liujake merged 2 commits intowrf-model:developfrom
jamiebresch:genbev3_memory
Feb 11, 2020
Merged

Improve memory usage for DA gen_be_v3 and add another output reformatting tool#1088
liujake merged 2 commits intowrf-model:developfrom
jamiebresch:genbev3_memory

Conversation

@jamiebresch
Copy link
Copy Markdown
Contributor

TYPE: enhancement (to the not-yet-released code)

KEYWORDS: WRFDA, gen_be_v3, memory, be.dat for cloud_cv_options=2

SOURCE: Jamie Bresch (NCAR)

DESCRIPTION OF CHANGES:

  1. For memory issue:
    For applications that are for large number of cases and large domain sizes,
    the gen_be_v3 program needs to run on a large-memory node.
    To deal with the memory issue, add a namelist option pert1_read_opt
    to choose how the program accesses pert1 data (output of do_pert_calc=true) internally.
    pert1_read_opt=1: (default, original behavior) read and store all cases in memory at once.
    pert1_read_opt=2: read from pert1 file when need it.
    This option writes out additional vertical-mode-projected fields when do_eof_transform=.true.
    Users can set pert1_read_opt=2 if memory insufficiency occurs.
    With pert1_read_opt=2, the program runs slower than pert1_read_opt=1 but the memory usage is reduced

  2. For reformatting individual be_[varname].dat into be.dat that WRFDA reads:
    PR New gen_be_v3 for generating ep (ensemble perturbation) and be (background error) #912 already includes var/gen_be_v3/util/combine_be_cv7.f90 that handles basic variables.
    This PR adds another var/gen_be_v3/util/combine_be_cv7_ccv2.f90 that reformat GEN_BE_V3 output
    into the same format as GENBE_2.0 for cloud_cv_options=2 applications.

LIST OF MODIFIED FILES:
M var/gen_be_v3/README.gen_be_v3
M var/gen_be_v3/gen_be_v3.F90
A var/gen_be_v3/util/combine_be_cv7_ccv2.f90

TESTS CONDUCTED:
The results are identical with pert1_read_opt=1 and pert1_read_opt=2.

…ally

modified:   var/gen_be_v3/README.gen_be_v3
modified:   var/gen_be_v3/gen_be_v3.F90
…ptions=2

modified:   var/gen_be_v3/README.gen_be_v3
new file:   var/gen_be_v3/util/combine_be_cv7_ccv2.f90
@liujake liujake merged commit 1fe98e9 into wrf-model:develop Feb 11, 2020
@jamiebresch jamiebresch deleted the genbev3_memory branch February 11, 2020 22:06
davegill pushed a commit that referenced this pull request Feb 19, 2020
…species (#1083)

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

4. 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 #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.
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.

2 participants