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

[develop] Split EnsembleStat tasks into GenEnsProd and EnsembleStat #695

Closed
wants to merge 125 commits into from

Conversation

gsketefian
Copy link
Collaborator

@gsketefian gsketefian commented Mar 24, 2023

DESCRIPTION OF CHANGES:

IMPORTANT: This PR builds on PR #683. Thus, that one has to be merged first. Currently, the changes shown in this PR also include the ones from PR #683. Once #683 is merged, the number of files changed will be far fewer (maybe around 35, all except 2 or 3 of which are the METplus conf files).

The latest versions of MET/METplus have introduced a new tool named GenEnsProd that performs many of the ensemble-related calculations that EnsembleStat used to do. Although EnsembleStat can still perform these calculations, that will change in future versions of MET/METplus. Thus, this PR creates new vx tasks that call GenEnsProd to perform the necessary calculations, removing them from the EnsembleStat tasks. Details:

  1. Add new METplus config files for GenEnsProd.
  2. Modify the EnsembleStat config files so that EnsembleStat no longer calculates the ensemble statistics that are now the purview of GenEnsProd.
  3. Add sections to config_defaults.yaml for the new GenEnsProd tasks.
  4. Add tasks to the ROCOTO XML to run GenEnsProd. Note that these are identical to the existing EnsembleStat tasks (they call the same j-job, define the same environment variables, etc) except for a change of task name and resource names (number of nodes, walltime, etc). Thus, they are very "loopable".
  5. Modify the ex-scripts for the ensemble mean and probabilistic tasks so that they look for forecast input from the output of the GenEnsProd tasks, not the output of the EnsembleStat tasks.
  6. Clean up the remaining METplus config files so that they are as similar as possible (for possible consolidation later on).

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

TESTS CONDUCTED:

  • hera.intel
  • orion.intel
  • cheyenne.intel
  • cheyenne.gnu
  • gaea.intel
  • jet.intel
  • wcoss2.intel
  • NOAA Cloud (indicate which platform)
  • Jenkins
  • fundamental test suite
  • comprehensive tests (specify which if a subset was used)

I ran the following fundamental suite of tests on Hera with intel, and all passed:

MET_verification
MET_verification_only_vx
community_ensemble_2mems
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_2017_gfdlmp
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_2017_gfdlmp_regional_plot
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v15p2
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_v16
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_RAP_suite_HRRR
grid_RRFS_CONUS_25km_ics_GSMGFS_lbcs_GSMGFS_suite_GFS_v15p2
grid_RRFS_CONUScompact_25km_ics_HRRR_lbcs_RAP_suite_HRRR
grid_RRFS_CONUScompact_25km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta
grid_RRFS_CONUS_25km_ics_FV3GFS_lbcs_FV3GFS_suite_GFS_2017_gfdlmp_regional_plot
MET_ensemble_verification
MET_ensemble_verification_only_vx
community_ensemble_2mems_stoch
pregen_grid_orog_sfc_climo

In addition, I ran the MET_ensemble_verification test in NCO mode, and that also passed.

DEPENDENCIES:

This PR builds on PR #683. Thus, that has to be merged first.

DOCUMENTATION:

Documentation is needed but will be added once the whole set of vx PRs has been merged (see Issue #630).

CHECKLIST

  • My code follows the style guidelines in the Contributor's Guide
  • I have performed a self-review of my own code using the Code Reviewer's Guide
  • I have commented my code, particularly in hard-to-understand areas
  • My changes need updates to the documentation. I have made corresponding changes to the documentation
  • My changes do not require updates to the documentation (explain).
  • My changes generate no new warnings
  • New and existing tests pass with my changes
  • Any dependent changes have been merged and published

… for Hera and modify run_WE2E_tests.py so that this location is obtained in a platform-independent way.
…ation of staged forecast files; modify code to correctly set VX_FCST_INPUT_BASEDIR in WE2E experiments.
…o that it is exactly consistent with the one used in run_WE2E_tests.py.
…t each task has its own values for NNODES, PPN, MEM, WTIME, MAXTRIES.
…uired by NCO); also rename vx task top-level sections in config_defaults.yaml so that they're all lower case (to match names of ex-scripts).
…ks; Add ensemble member name (if running ensemble vx) to the names of the vx tasks in the ROCOTO xml.
…t convention; fix bugs in the two ex-scripts exregional_run_met_pointstat_ens[mean|prob].sh that call METplus twice.
…output. Details below.

In the ex-scripts for EnsembleStat: (1) generate a new variable FCST_INPUT_FN_TEMPLATE that contains a list of forecast input template files for each of the ensemble members and use this in the METplus configuration files, and (2) change the input base directory (INPUT_BASE) to use VX_FCST_INPUT_BASEDIR, which depending on whether forecasts are being run is set either to the location of the UPP output from the forecasts or to the staged forecast UPP output (this allows staged ensemble staged files to be used to perform ensemble vx).

In config_defaults.yaml, introduce new template variables (FCST_SUBDIR_TEMPLATE, FCST_FN_TEMPLATE, and FCST_FN_METPROC_TEMPLATE) that are/will be used in forming the variable FCST_INPUT_FN_TEMPLATE in the EnsembleStat ex-scripts.
…leStat for point-obs, ensure that METplus is called only once and for the correct variable (instead of for both SFC and UPA).
… This should later be replaced with a python version.
… This should later be replaced with a python version.
…able the ensemble member name (if doing an ensemble forecast). This makes it easier in METviewer to identify curves corresponding to different members.
…_LOCAL_MODULE_FN and VX_LOCAL_MODULE_FN; fix spacing.
…P to templates and add necessary variables to correspondig ROCOTO template XML tasks.
…o templates and add necessary variables to the correspondig ROCOTO template XML tasks.
…s on Hera. This test runs ensemble vx from staged forecast and obs.
…f the MET/METplus tools; remove "met_tool_[sc|pc]" arguments to the vx ex-scripts and directly use the environment variable MET_TOOL along with the new function (set_met_tool_name) to set the MET/METplus tool names needed in the vx tasks.
… now done in GenEnsProd (to avoid duplication).
…e output of GenEnsProd (instead of EnsembleStat, which no longer generates the necessary outputs).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant