Skip to content

Ensinit - changes to enable ensemble initialization and etc#426

Closed
chunhuazhou wants to merge 9 commits into
NOAA-GSL:feature/RRFS_dev1from
chunhuazhou:ensinit
Closed

Ensinit - changes to enable ensemble initialization and etc#426
chunhuazhou wants to merge 9 commits into
NOAA-GSL:feature/RRFS_dev1from
chunhuazhou:ensinit

Conversation

@chunhuazhou
Copy link
Copy Markdown
Collaborator

@chunhuazhou chunhuazhou commented Sep 23, 2022

DESCRIPTION OF CHANGES:

Changes include

  • switching from binary diag to netcdf diag files for GSI observer and EnKF
  • ensemble initialization at 1st time step (GEFS + RRFS_B deterministic analysis) and no re-centering in the other cycles
  • changing DT_ATMOS from 40s to 60s, to be consistent with the RRFS_B deterministic run
  • specifying cycles to run SPP at 00Z, instead of general setting DO_SPP=TRUE for all the cycles
  • following the above change to specify cycles for SPP and the availability of hourly GEFS LBCs, combining previously separate DA cycling workflow and 00Z 36 hour free forecast cycle into one workflow that does both
  • adding tasks to run free ensemble forecast at a reduced ensemble size (9), different from the ensemble size for the EnKF cycles (30)

TESTS CONDUCTED:

Currently testing in RRFSE real-time runs.

DEPENDENCIES:

DOCUMENTATION:

To add more notes here, we used to have 2 workflows for the RRFSE runs since HWT SFE 2022. One is for 30-member EnKF cycling using config.sh.RRFS_CONUS_3km_ens.2022HWT.CYCL and the other one for 9-member 00Z free forecast using config.sh.RRFS_CONUS_3km_ens.2022HWT.FCST. This was due to the different LBCs for the different cycles (hourly FV3GFS for hourly EnKF cycling and then 3hourly GEFS for the free ensemble forecast) and also the inclusion of SPP in the 00Z free forecast. And we had to make some manual changes to the workflow for that purpose. With the changes in this PR, we now have one config.sh.RRFS_CONUS_3km_ens.2022HWT.CYCL to get the workflow ready to do both 30-member EnKF cycling and 9-member ensemble forecast at the end of the cycling. And there is no more need to make manual changes to the workflow. The FV3LAM_wflow.xml from running ush/generate_FV3LAM_wflow.sh is ready to go.

Another note is about the stochastic physics setting. In order to use one FV3LAM_wflow.xml for the above mentioned purpose, we have to turn on SPP for 00Z but not for the earlier cycles (18Z-23Z). In the default settings, if we set DO_SPP=TRUE, for example, we have SPP turned on for all the cycles. Through the changes in this PR, we introduce new variables (CYCL_HRS_SPP, CYCL_HRS_SPPT, CYCL_HRS_SHUM, CYCL_HRS_SKEB, CYCL_HRS_LSM_SPP, for different stochastic physics schemes) to control for which cycles we turn on SPP, for example, when we don't want SPP for other cycles. By setting DO_SPP=FALSE (by commenting out DO_SPP=TRUE in config file) we turn off SPP for all the cycles except for cycles in "CYCL_HRS_SPP" if defined in config file. Please note this "CYCL_HRS_SPP" setting only works when DO_SPP=FALSE in config file. This is done by resetting DO_SPP in scripts/exregional_run_fcst.sh. Sections in ush/generate_FV3LAM_wflow.sh that is related to stochastic physics namelist are now moved to scripts/exregional_run_fcst.sh to make changes to input.nml on the fly for different forecast cycles.

For the ensemble initialization (DO_ENSINIT=TRUE), we added the tasks to run 1 time step for the ensemble forecast from GEFS cold start at the beginning of the cycles, then use recenter to add the GEFS perturbations from these 1 time step restart files to RRFS deterministic analysis. Through this we have the ensemble initialized based on RRFS deterministic analysis + GEFS perturbations, and then run 1-hour ensemble forecast for the EnKF cycling, just as the later cycles.

ISSUE (optional):

CONTRIBUTORS (optional):

If others have contributed to this work aside from the PR author, list them here

DO_LSM_SPP=TRUE
fi
done
#
Copy link
Copy Markdown

@JeffBeck-NOAA JeffBeck-NOAA Sep 28, 2022

Choose a reason for hiding this comment

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

@chunhuazhou, do you plan on running with each of these schemes turned on, or is this just a placeholder for now? Also, there's a typo in "stochastic" above.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I'm also a bit confused, because the DO_* stochastic options should go in the config.sh (now config.yaml) script, not in an ex-script. I think it would make more sense to have config-level options like DO_SPP_ENSINIT or DO_SPP_SPINUP = TRUE, but maybe that's too complicated to implement at this time.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is more of a placeholder for now. Thanks for pointing out the typo - corrected.

Copy link
Copy Markdown
Collaborator Author

@chunhuazhou chunhuazhou Sep 28, 2022

Choose a reason for hiding this comment

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

I'm also a bit confused, because the DO_* stochastic options should go in the config.sh (now config.yaml) script, not in an ex-script. I think it would make more sense to have config-level options like DO_SPP_ENSINIT or DO_SPP_SPINUP = TRUE, but maybe that's too complicated to implement at this time.

Yes I agree it is a bit confused. The reason I made these changes is for when we don't want to run the same setting for all the cycles. For example, in our RRFS ensemble cycling, we don't run SPP for the DA cycling hours (18-23Z) but we do want to turn SPP on for 00Z free forecast. Therefore we want to have those stochastic physics setting specific for each forecast cycle. If we set them in config.sh and set the namelist in generate_FV3LAM_wflow.sh, it will have SPP on or off for all the cycles.

DO_LSM_SPP=TRUE
fi
done
#
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I'm also a bit confused, because the DO_* stochastic options should go in the config.sh (now config.yaml) script, not in an ex-script. I think it would make more sense to have config-level options like DO_SPP_ENSINIT or DO_SPP_SPINUP = TRUE, but maybe that's too complicated to implement at this time.

Number of entries in SPP_VAR_LIST = \"${#LSM_SPP_VAR_LIST[@]}\""
fi
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

All of these options (above and below, including the namelist creation) normally should be configured at workflow generation time, which occurs in the setup.sh/yaml script. If the "DO_" stochastic physics options were defined in the config.sh, then all of this could just stay in setup.sh.

Comment thread ush/config_defaults.sh
CYCL_HRS_SHUM=( "HH1" "HH2" )
CYCL_HRS_SKEB=( "HH1" "HH2" )
CYCL_HRS_LSM_SPP=( "HH1" "HH2" )
BOUNDARY_LEN_HRS="0"
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Why are there only two hours shown for cycles with stochastic physics here?

settings =
$settings"
#
#-----------------------------------------------------------------------
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This would all stay here if you use DO_SPP_ENSINIT, DO_SPP_SPINUP, etc...

Comment thread ush/setup.sh
#
# Make sure that DO_ENSEMBLE is set to a valid value. Then set the names
# Make sure that DO_ENSEMBLE and DO_ENSEMBLE_REDUCED is set to a valid value. Then set the names
# of the ensemble members. These will be used to set the ensemble member
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

What does DO_ENSEMBLE_REDUCED do?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

This is to decide whether to run a subset of the ensemble forecast, for example, run 9 member free forecast (different from the 30 member EnKF cycling)

@chunhuazhou
Copy link
Copy Markdown
Collaborator Author

I am closing this PR and creating two new PRs to address the ensemble initialization / free forecast, and cycle-specific SPP separately.

@chunhuazhou chunhuazhou closed this Oct 4, 2022
@chunhuazhou chunhuazhou deleted the ensinit branch October 9, 2022 04:04
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.

2 participants