Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add options for Mixed Ensemble and Scale/Variable-Dependent Localization #451

Merged

Conversation

shoyokota
Copy link

@shoyokota shoyokota commented Nov 30, 2022

DESCRIPTION OF CHANGES:

This PR is to apply "mixed global/regional ensembles (MixEn)" ( NOAA-EMC/GSI#451 ) and "scale/variable/time-dependent localization (SDL/VDL/TDL)" ( NOAA-EMC/GSI#460 ). The following 3 options are added.

  • l_both_fv3sar_gfs_ens (default: .false.)
    • If it is ".true.", MixEn is activated with RRFS/EnKF (30 members) and GDAS/EnKF (80 members)
    • In this MixEn, background error is simply added, so it is enlarged
  • nsclgrp (default: 1)
    • If it is "2", SDL (2-scales) is activated
    • Scale sepalation is done by recursive filter (exp(-0.5) length: 300km * sqrt(0.075))
    • Horizontal localization exp(-0.5) length is 1200km * sqrt(0.075) (for larger scale) and 300km * sqrt(0.075) (for smaller scale)
    • Vertical localization exp(-0.5) length is 1.1lnp * sqrt(0.075) for both larger and smaller scales
  • ngvarloc (default: 1)
    • If it is "2", radar reflectivity is assimilated simultaneously with conventional data by pure EnVar with VDL
    • In VDL, horizontal localization exp(-0.5) length becomes small as 15km * sqrt(0.075) only for w, qr, qs, qi, qg, ql, and dbz
    • Cross-variable correlation is set to be zero (i_ensloccov4var=1) for now
  • assign_vdl_nml (default: .false.)
    • If it is ".true.", another VDL option based on Wang and Wang (2023) is activated in the case of ngvarloc>1.

TESTS CONDUCTED:

I checked that the result was not changed compared to the workflow before this change in using "l_both_fv3sar_gfs_ens=.false.", "nsclgrp=1", and "ngvarloc=1" on Orion. I also checked that "l_both_fv3sar_gfs_ens=.true.", "nsclgrp=2", and "ngvarloc=2" accurately activated MixEn, SDL, and VDL, respectively.

DEPENDENCIES:

Following PRs should be merged to GSI used in this workflow

DOCUMENTATION:

ISSUE (optional):

To test this workflow on Orion, following modifications were required. I modified them also in this PR.

  • Copy of restart files not to be overwritten by the re-run of GSI analysis. (removed from this PR for now)
  • Remove copy of nc_diag_cat.x and use ncdiag/1.0.0 (already modified by Ens fix 1210 #458)
  • Modify to use GDASENKF as IC/LBCs on Orion
  • Unify "walltime" and "maxtries" of HYBRID_RADAR_REF_TN and ANAL_GSI_TN (already modified by workflow re-organization #454)

CONTRIBUTORS (optional):

Many people in OU, GSL, and EMC including Ting Lei contributed the work of MixEn and SDL/VDL/TDL.

@shoyokota shoyokota changed the title Add options for Scale/Variable/Time-Dependent Localization Add options for Mixed Ensemble and Scale/Variable-Dependent Localization Nov 30, 2022
cp_vrfy ${bkpath}/fv_tracer.res.tile1.nc ${bkpath}/bk_${ob_type}_fv_tracer.res.tile1.nc
cp_vrfy ${bkpath}/sfc_data.nc ${bkpath}/bk_${ob_type}_sfc_data.nc
cp_vrfy ${bkpath}/phy_data.nc ${bkpath}/bk_${ob_type}_phy_data.nc
fi
Copy link

Choose a reason for hiding this comment

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

Prep_cyc builds the background and make a link to original background files (named as bk_*).
Why do we need to make a copy of the background files here again?

Copy link
Author

Choose a reason for hiding this comment

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

"bk_*" built in prep_cyc is just a link before doing "ncatted -a checksum". To keep the "ncatted" files, this copy process is required. On Orion, overwriting these files by GSI analysis is often failed and this job is automatically rerun. To prevent the duplicate overwriting in the rerun, I added this copy process.

Copy link

Choose a reason for hiding this comment

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

I still cannot figure out why this part of copy needed?

Copy link
Author

Choose a reason for hiding this comment

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

In this job, restart files are overwritten. Therefore, if this job is failed after outputting restart files, updated restart files are used as the first guess of EnVar in the rerun job by accident. In fact, such situation frequently occurred on Orion. To prevent from that issue, I added this part.

@hu5970
Copy link

hu5970 commented Feb 3, 2023

@shoyokota Could you update and sync this PR with current RRFS_dev1 branch? Thanks, Ming

@shoyokota
Copy link
Author

@hu5970 I updated this PR with current RRFS_dev1 branch. I further modified it to be able to use NOAA-EMC/GSI#504. I conducted tests again and updated the "DESCRIPTION OF CHANGES".

@@ -0,0 +1,81 @@
met_guess::
Copy link

Choose a reason for hiding this comment

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

About the name of this file: should have a name fit to the application. Using "_all" is too general.

Copy link
Author

Choose a reason for hiding this comment

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

I renamed 'all' to 'conv_dbz'.

cp_vrfy ${bkpath}/fv_tracer.res.tile1.nc ${bkpath}/bk_${ob_type}_fv_tracer.res.tile1.nc
cp_vrfy ${bkpath}/sfc_data.nc ${bkpath}/bk_${ob_type}_sfc_data.nc
cp_vrfy ${bkpath}/phy_data.nc ${bkpath}/bk_${ob_type}_phy_data.nc
fi
Copy link

Choose a reason for hiding this comment

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

I still cannot figure out why this part of copy needed?

@@ -473,7 +501,7 @@ else
esac
fi

if [[ ${gsi_type} == "OBSERVER" || ${ob_type} == "conv" ]]; then
if [[ ${gsi_type} == "OBSERVER" || ${anav_type} == "conv" || ${anav_type} == "all" ]]; then
Copy link

Choose a reason for hiding this comment

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

Using "all" as analysis variable is too general. As this application doing all the thing and cannot be extended?

Copy link
Author

Choose a reason for hiding this comment

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

I renamed 'all' to 'conv_dbz'.

@@ -25,6 +25,40 @@ DO_SOIL_ADJUST="TRUE"
DO_RADDA="FALSE"
DO_BUFRSND="FALSE"

l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble
Copy link

Choose a reason for hiding this comment

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

This part is added in three configuration files: RRFS_CONUS_13km, RRFS_CONUS_3km, RRFS_CONUS_3km.2022HWT. If they are same or mostly same, can make a separate file just like
set_rrfs_config_general.sh and only include special setups in configure. You can also setup grid type related parameters in that file. Please let me know if you need more details on how to simplify this setups.

Copy link
Author

Choose a reason for hiding this comment

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

I made a separated file (set_rrfs_config_SDL_VDL_MixEn.sh) for setting of MixEn/SDL/VDL.

@shoyokota
Copy link
Author

@hu5970 I merged current feature/RRFS_dev1 branch to this PR. And I removed the copy of restart files not to increase the walltime. We need to think a better way to prevent from crashing restart files in another PR.

Copy link

@hu5970 hu5970 left a comment

Choose a reason for hiding this comment

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

Looks good

@hu5970 hu5970 merged commit 2f088cd into NOAA-GSL:feature/RRFS_dev1 Feb 21, 2023
l_both_fv3sar_gfs_ens=.false. #if true, ensemble size is increased with GDAS ensemble (MixEn)
nsclgrp=1 #number of scales for scale-dependent localization (SDL)
ngvarloc=1 #number of scales for variable-dependent localization (VDL)
assign_vdl_nml=.false. #if true, vdl_scale and vloc_varlist are used to set VDL

Choose a reason for hiding this comment

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

@shoyokota Should lines 2,3,4,5 be removed from this file? Since these options are set in config_defaults.sh, repeating them here overwrites what is set and requires this file to be changed to turn on/off the options.

Copy link
Author

Choose a reason for hiding this comment

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

Overwriting these options in set_rrfs_config_SDL_VDL_MixEn.sh is as I expect and removing them is not required. (A lot of options set in config_defaults.sh are already overwritten in set_rrfs_config.sh and set_rrfs_config_general.sh.) If you would like to change these options, please change set_rrfs_config_SDL_VDL_MixEn.sh (not config_defaults.sh).

hongli-wang pushed a commit to hongli-wang/regional_workflow that referenced this pull request Jun 14, 2023
…ion (NOAA-GSL#451)

* Add options for Scale/Variable/Time-Dependent Localization

* Add options for Variable-Dependent Localization of OU/MAP

* rename 'all' to 'conv_dbz' and separate configuration files to set_rrfs_config_SDL_VDL_MixEn.sh

* remove change for preventing from crashing restart files for now

---------

Co-authored-by: Sho Yokota <syokota@Orion-login-1.HPC.MsState.Edu>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants