Skip to content

Commit

Permalink
Added support of the NSSL CCPP suite - WoFS_v0 and WE2E tests (#772)
Browse files Browse the repository at this point in the history
* Added workflow for RRFS_v1nssl

* Renamed FV3_RRFS_v1nssl to FV3_WoFS_v0 and added WE2E tests configuraiton files for suite FV3_WoFS_v0

* Added SUBCONUS test for WoFS suite

* water_nc initial value sets to zero for FV3GFS data

* Add Gaea as a supported platform for the regional_workflow (#734)

* Updates to port regional workflow to gaea

* Temp change with -v as batch option

* new fixes for gaea/slurm

* Updated time for make lbcs

* added TEST data directory path

* Update gaea.sh

* fixes for PR

* Add more parameters to CSV file containing WE2E test info (#740)

## DESCRIPTION OF CHANGES: 
The script/function `get_WE2Etest_names_subdirs_descs.sh` (which is called from `run_WE2E_tests.sh` if needed) creates a CSV (Comma-Separated Value) file named `WE2E_test_info.csv` that contains information about the WE2E tests.  Currently, this CSV file contains only 3 columns: the test name, the names of any alternate names for the test, and the test description.  In order to have a more complete summary of the WE2E tests, this PR modifies `get_WE2Etest_names_subdirs_descs.sh` so that additional information is included in the CSV file.  This additional information consists of the values of the following experiment variables for each test:
```
PREDEF_GRID_NAME
CCPP_PHYS_SUITE
EXTRN_MDL_NAME_ICS
EXTRN_MDL_NAME_LBCS
DATE_FIRST_CYCL
DATE_LAST_CYCL
CYCL_HRS
INCR_CYCL_FREQ
FCST_LEN_HRS
LBC_SPEC_INTVL_HRS
NUM_ENS_MEMBERS
```
In addition, the script uses this information to calculate the number of times each test calls the forecast model (e.g. if the test uses 3 different cycle dates, then the forecast model will be called 3 times; if it is an ensemble test for a single cycle, the test will call the forecast model as many times as the number of ensemble members).  

## TESTS CONDUCTED: 
The script `run_WE2E_tests.sh` was called that in turn calls `get_WE2Etest_names_subdirs_descs.sh`.  This created a new CSV file that contained the new fields (columns).  The CSV file was imported into Google Sheets (using "|" as the field/column separator) and looked correct.

## DOCUMENTATION:
The documentation is for the most part already within the `get_WE2Etest_names_subdirs_descs.sh`.  This PR slightly modifies that documentation to update it.

* Update directory structure of NCO mode (#743)

* update vertical structure of NCO mode

* update sample script for nco

* Fix typo on write component of new RRFS CONUS

* Default CCPP physics option is FV3_GFS_v16 (#746)

* Updated the default CCPP physics option to FV3_GFS_v16

* Updated the default CCPP physics option to FV3_GFS_v16 in config_defaults.sh

Co-authored-by: Natalie Perlin <Natalie@Natalies-MacBook-Air.local>

* Adds an alternative python workflow generation path (#698)

* Workflow in python starting to work.

* Use new python_utils package structure.

* Some bug fixes.

* Use uppercase TRUE/FALSE in var_dfns

* Use config.sh by default.

* Minor bug fixes.

* Remove config.yaml

* Update to the latest develop

* Remove quotes from numbers in predef grid.

* Minor bug fix.

* Move validity checker to the bottom of setup

* Add more unit tests.

* Update with python_utils changes.

* Update to latest develop additions (Need to re-run regression test)

* Use set_namelist and fill_jinja_template as python functions.

* Replace sed regex searches with python re.

* Use python realpath.

* Construct settings as dictionary before passing to fill_jinja and set_namelist

* Use yaml for setting predefined grid parameters.

* Use xml parser for ccpp phys suite definition file.

* Remove more run_command calls.

* Simplify some func argument processing.

* Move different config format parsers to same file.

* Use os.path.join for the sake of macosx

* Remove remaining func argument processing via os.environ.

* Minor bug fix in set_extrn_mdl_params.sh

* Add suite defn in test_data.

* Minor fixes on unittest on jet.

* Simplify boolean condition checks.

* Include old in renaming of old directories

* Fix conflicting yaml !join tag for paths and strings.

* Bug fix with setting sfcperst dict.

* Imitate "readlink -m" with os.path.realpath instead of os.readlink

* Don't use /tmp as that is shared by multiple users.

* Bug fix with cron line, maintain quotes around TRUE/FALSE.

* Update to latest develop (untested)

* Bug fix with existing cron line and quotes.

* Bug fix with case-sensitive MACHINE name, and empty EXPT_DIR.

* Update to latest develop

* More updates.

* Bug fix thanks to @willmayfield! Check both starting/ending
characters are brackets for shell variable to be considered an array.

* Make empty EXPT_BASEDIR workable.

* Update to latest develop

* Update in predef grid.

* Check f90nml as well.

Co-authored-by: Daniel Abdi <dabdi@Orion-login-2.HPC.MsState.Edu>

* Fix typo and crontab issue on wcoss dell in workflow python scripts (#750)

* Fix typo and failure on wcoss

* fix new line issue on wcoss dell

* remove capture_output

* Get USER from environment

Co-authored-by: Daniel Abdi <daniel.abdi@noaa.gov>

* Add new WE2E configs (#748)

## DESCRIPTION OF CHANGES: 
Added two new WE2E config files for the Sub-CONUS Indianapolis domain to support the upcoming SRW release. 

In addition, modified the external data used in the `config.specify_EXTRN_MDL_SYSBASEDIR_ICS_LBCS.sh` to match more common datasets used in the WE2E testing process. 

## TESTS CONDUCTED: 
Successfully ran the new WE2E tests (`config.SUBCONUS_Ind_3km_ics_HRRR_lbcs_RAP_suite_HRRR.sh`, `config.SUBCONUS_Ind_3km_ics_HRRR_lbcs_RAP_suite_RRFS_v1beta.sh`) and `config.specify_EXTRN_MDL_SYSBASEDIR_ICS_LBCS.sh` on NOAA Parallel Works AWS instance.

## DEPENDENCIES:
None.

## DOCUMENTATION:
No documentation changes are required.

* Added a fixed WoF grid and the python tool to determine the write component parameters (#733)

* Added a fixed WoF grid and the python tool to determine the write component parameters

* Update set_predef_grid_params.sh

* Renamed file as recommended and removed unused lines

* Modified comment

Co-authored-by: JeffBeck-NOAA <55201531+JeffBeck-NOAA@users.noreply.github.com>
Co-authored-by: WYH@MBP <yunheng.wang@4374-ywang.winstorm.nssl>

* Replace env with modulefiles in scripts (#752)

* change env to mod

* update we2e script

* WE2E script improvements for usability (#745)

## DESCRIPTION OF CHANGES: 
* Modifications to `run_WE2E_tests.sh`:
  * Add examples to help/usage statement
* Modifications to `check_expts_status.sh`:
  * Add arguments list that can be processed by `process_args`
  * Add new optional arguments:  `num_log_lines`, `verbose`
  * Include a help/usage message

## TESTS CONDUCTED:
* Ran `run_WE2E_tests.sh --help` from the command line and got the expected help message.
* Ran `check_expts_status.sh --help` from the command line and got the expected help message.
* Used `run_WE2E_tests.sh` to run a set of 2 WE2E tests -- works as expected.
* Used `check_expts_status` to check on the status of the 2 tests run above and got the expected status message.
 
## DEPENDENCIES:
PR #[241](ufs-community/ufs-srweather-app#241)

## DOCUMENTATION:
A lot of this PR is documentation in the scripts.  There is an accompanying documentation PR #[241](ufs-community/ufs-srweather-app#241) into ufs-srweather-app.

* Standardize static data across Tier-1 platforms; fix and improve IC and LBC data retrieval (#744)

* Bug fixes (grid size + suppress screen output from module load) (#756)

## DESCRIPTION OF CHANGES: 
1) Adjust y-direction size of write-component grid of `SUBCONUS_Ind_3km` predefined grid from 195 to 197 (this was just an oversight in PR #725 ).
2) Redirect output of module load in launch script (`launch_FV3LAM_wflow.sh`) to `/dev/null` to avoid unwanted screen output (which was introduced in PR #[238](ufs-community/ufs-srweather-app#238) in ufs-srweather-app and is about how to load the `regional_workflow` environment and is not relevant in this context).

## TESTS CONDUCTED: 
1) Plotted the `SUBCONUS_Ind_3km` grid to ensure it has correct size (it does).
2) Manually ran `launch_FV3LAM_wflow.sh` from the command line to verify that screen output is suppressed (it is).

* Update default SPP ISEED array in config_defaults.sh to use unique values (#759)

* Modify RRFS North America 3- and 13-km domain configuration and WE2E test.

* Modify default ISEED values for SPP

* Fix grid in WE2E test

* Update workflow python scripts (#760)

* update python scripts

* Change output file name of run_post to meet NCO standards (#758)

* change output file name

* change variable name

* update python script

* remove duplicates

* add a check for empty variables

* move variable to common area

* clean up unnecessary comments

* update scripts

* remove duplicate

* update python scripts

* fix user-staged dir path issue in python script

* Add POST_OUTPUT_DOMAIN_NAME to WE2E tests for new grids (#763)

* Add new var to we2e tests for new grids

* rename we2e tests for custom grid

* remove unnecessary $

* Modifications to `CODEOWNERS` file (#757)

* Add @gspetro-NOAA, @natalie-perlin, and @EdwardSnyder-NOAA to CODEOWNERS so they are notified of all PRs and can review them.

* Remove duplicates in CODEOWNERS; remove users who will no longer be working with the repo.

* Adding a python utility for summarizing compute. (#769)

Adds a utility that summarizes Rocoto database computational usage information.

* Add github actions for python unittests. (#747)

* Add github actions for python unittests.

* Include all python script in ush

* Skip defining QUILTING params when it is set to False

* Update py_workflow

* Update unittest for set_extrn_mdl_params.

* Updates from develop.

Co-authored-by: Daniel Shawul <dshawul@yahoo.com>

* Update sample script for NCO mode (#771)

* update config.nco.sh

* Add comment

* Feature/noaacloud (#767)

* updates for noaacloud

* working version

* fixes for noaacloud

* added extra modules for post

* removed cheyenne-specific crontab editing section (#773)

* Pin down hera miniconda3 module file version. (#770)

Pin down the version of miniconda3 on Hera, and do not append to the module path.

* update staged data dir (#774)

* Changed to smaller SUBCONUS_Ind_3km domain

Co-authored-by: Mark Potts <33099090+mark-a-potts@users.noreply.github.com>
Co-authored-by: gsketefian <31046882+gsketefian@users.noreply.github.com>
Co-authored-by: Chan-Hoo.Jeon-NOAA <60152248+chan-hoo@users.noreply.github.com>
Co-authored-by: Natalie Perlin <68030316+natalie-perlin@users.noreply.github.com>
Co-authored-by: Natalie Perlin <Natalie@Natalies-MacBook-Air.local>
Co-authored-by: danielabdi-noaa <52012304+danielabdi-noaa@users.noreply.github.com>
Co-authored-by: Daniel Abdi <dabdi@Orion-login-2.HPC.MsState.Edu>
Co-authored-by: Daniel Abdi <daniel.abdi@noaa.gov>
Co-authored-by: EdwardSnyder-NOAA <96196752+EdwardSnyder-NOAA@users.noreply.github.com>
Co-authored-by: JeffBeck-NOAA <55201531+JeffBeck-NOAA@users.noreply.github.com>
Co-authored-by: WYH@MBP <yunheng.wang@4374-ywang.winstorm.nssl>
Co-authored-by: Michael Kavulich <kavulich@ucar.edu>
Co-authored-by: Christina Holt <56881914+christinaholtNOAA@users.noreply.github.com>
Co-authored-by: Daniel Shawul <dshawul@yahoo.com>
  • Loading branch information
15 people authored Jun 9, 2022
1 parent bc85443 commit 980d592
Show file tree
Hide file tree
Showing 8 changed files with 547 additions and 22 deletions.
27 changes: 14 additions & 13 deletions scripts/exregional_make_ics.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ case "${CCPP_PHYS_SUITE}" in
"FV3_RRFS_v1alpha" | \
"FV3_RRFS_v1beta" | \
"FV3_GFS_v15_thompson_mynn_lam3km" | \
"FV3_HRRR" )
"FV3_HRRR" | \
"FV3_WoFS_v0" )
if [ "${EXTRN_MDL_NAME_ICS}" = "RAP" ] || \
[ "${EXTRN_MDL_NAME_ICS}" = "HRRR" ]; then
varmap_file="GSDphys_var_map.txt"
Expand Down Expand Up @@ -177,7 +178,7 @@ esac
# needed to generate the ICs.
#
# fn_atm:
# Name (not including path) of the nemsio or netcdf file generated by the
# Name (not including path) of the nemsio or netcdf file generated by the
# external model that contains the atmospheric fields. Currently used for
# GSMGFS and FV3GFS external model data.
#
Expand Down Expand Up @@ -299,12 +300,12 @@ convert_nst=""
# (LSM) -- which currently includes all valid external models except the
# HRRR and the RAP -- then we set the number of soil levels to include
# in the output NetCDF file that chgres_cube generates (nsoill_out; this
# is a variable in the namelist that chgres_cube reads in) to 4. This
# is a variable in the namelist that chgres_cube reads in) to 4. This
# is because FV3 can handle this regardless of the LSM that it is using
# (which is specified in the suite definition file, or SDF), as follows.
# If the SDF does not use the RUC LSM (i.e. it uses the Noah or Noah MP
# LSM), then it will expect to see 4 soil layers; and if the SDF uses
# the RUC LSM, then the RUC LSM itself has the capability to regrid from
# (which is specified in the suite definition file, or SDF), as follows.
# If the SDF does not use the RUC LSM (i.e. it uses the Noah or Noah MP
# LSM), then it will expect to see 4 soil layers; and if the SDF uses
# the RUC LSM, then the RUC LSM itself has the capability to regrid from
# 4 soil layers to the 9 layers that it uses.
#
# On the other hand, if the external model is one that uses the RUC LSM
Expand All @@ -318,7 +319,7 @@ convert_nst=""
# output from chgres_cube must contain 4 soil levels because that is what
# these LSMs expect, and the code in FV3 does not have the capability to
# regrid from the 9 levels in the external model to the 4 levels expected
# by Noah/Noah MP. In this case, chgres_cube does the regridding from
# by Noah/Noah MP. In this case, chgres_cube does the regridding from
# 9 to 4 levels.
#
# In summary, we can set nsoill_out to 4 unless the external model is
Expand All @@ -336,11 +337,11 @@ fi
#-----------------------------------------------------------------------
#
# If the external model for ICs is one that does not provide the aerosol
# fields needed by Thompson microphysics (currently only the HRRR and
# RAP provide aerosol data) and if the physics suite uses Thompson
# microphysics, set the variable thomp_mp_climo_file in the chgres_cube
# namelist to the full path of the file containing aerosol climatology
# data. In this case, this file will be used to generate approximate
# fields needed by Thompson microphysics (currently only the HRRR and
# RAP provide aerosol data) and if the physics suite uses Thompson
# microphysics, set the variable thomp_mp_climo_file in the chgres_cube
# namelist to the full path of the file containing aerosol climatology
# data. In this case, this file will be used to generate approximate
# aerosol fields in the ICs that Thompson MP can use. Otherwise, set
# thomp_mp_climo_file to a null string.
#
Expand Down
3 changes: 2 additions & 1 deletion scripts/exregional_make_lbcs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ case "${CCPP_PHYS_SUITE}" in
#
"FV3_RRFS_v1alpha" | \
"FV3_RRFS_v1beta" | \
"FV3_WoFS_v0" | \
"FV3_GFS_v15_thompson_mynn_lam3km" | \
"FV3_HRRR" )
if [ "${EXTRN_MDL_NAME_LBCS}" = "RAP" ] || \
Expand Down Expand Up @@ -175,7 +176,7 @@ esac
# needed to generate the LBCs.
#
# fn_atm:
# Name (not including path) of the nemsio or netcdf file generated by the
# Name (not including path) of the nemsio or netcdf file generated by the
# external model that contains the atmospheric fields. Currently used for
# GSMGFS and FV3GFS external model data.
#
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#
# TEST PURPOSE/DESCRIPTION:
# ------------------------
#
# This test is to ensure that the workflow running in community mode
# completes successfully on the RRFS_SUBCONUS_3km grid using the WoFS_v0
# physics suite with ICs and LBCs derived from the FV3GFS.
#

RUN_ENVIR="community"
PREEXISTING_DIR_METHOD="rename"

PREDEF_GRID_NAME="SUBCONUS_Ind_3km"
CCPP_PHYS_SUITE="FV3_WoFS_v0"

EXTRN_MDL_NAME_ICS="FV3GFS"
EXTRN_MDL_NAME_LBCS="FV3GFS"
USE_USER_STAGED_EXTRN_FILES="TRUE"

DATE_FIRST_CYCL="20190701"
DATE_LAST_CYCL="20190701"
CYCL_HRS=( "00" )

FCST_LEN_HRS="6"
LBC_SPEC_INTVL_HRS="3"
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#
# TEST PURPOSE/DESCRIPTION:
# ------------------------
#
# This test is to ensure that the workflow running in community mode
# completes successfully on the RRFS_SUBCONUS_3km grid using the WoFS_v0
# physics suite with ICs derived from the HRRR and LBCs derived from the
# RAP.
#

RUN_ENVIR="community"
PREEXISTING_DIR_METHOD="rename"

PREDEF_GRID_NAME="SUBCONUS_Ind_3km"
CCPP_PHYS_SUITE="FV3_WoFS_v0"

EXTRN_MDL_NAME_ICS="HRRR"
EXTRN_MDL_NAME_LBCS="RAP"
USE_USER_STAGED_EXTRN_FILES="TRUE"

DATE_FIRST_CYCL="20200801"
DATE_LAST_CYCL="20200801"
CYCL_HRS=( "00" )

FCST_LEN_HRS="6"
LBC_SPEC_INTVL_HRS="3"
47 changes: 39 additions & 8 deletions ush/templates/FV3.input.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# This configuration file maintains the modifications that need to be
# made to the base FV3 namelist specified in
# This configuration file maintains the modifications that need to be
# made to the base FV3 namelist specified in
#
# ush/templates/input.nml.FV3
#
# to obtain the namelist for each physics suite that the SRW App can
# run with. To build a namelist for one of these configurations, use
# the Python helper script
# to obtain the namelist for each physics suite that the SRW App can
# run with. To build a namelist for one of these configurations, use
# the Python helper script
#
# ush/set_namelist.py
#
Expand Down Expand Up @@ -38,6 +38,37 @@ FV3_RRFS_v1beta:
<<: *RRFS_v1alpha_phys
do_mynnsfclay: True

FV3_WoFS_v0:
gfs_physics_nml:
do_deep: False
imfdeepcnv: 0
imfshalcnv: 0
iopt_alb: 2
iopt_btr: 1
iopt_crs: 1
iopt_dveg: 2
iopt_frz: 1
iopt_inf: 1
iopt_rad: 1
iopt_run: 1
iopt_sfc: 1
iopt_snf: 4
iopt_stc: 1
iopt_tbot: 2
do_mynnsfclay: True
imfdeepcnv: -1
imfshalcnv: -1
lsm: 1
lsoil_lsm: 4
imp_physics: 17
nssl_cccn: 0.6e+9
nssl_hail_on: True
nssl_ccn_on: True
fv_core_nml:
nwat: 7
fv_diagnostics_nml:
do_hailcast: True

FV3_HRRR:
fv_core_nml:
hord_dp: -5
Expand All @@ -58,7 +89,7 @@ FV3_HRRR:
gwd_opt: 3
do_gsl_drag_ss: True
do_gsl_drag_tofd: True
do_gsl_drag_ls_bl: True
do_gsl_drag_ls_bl: True
iaer: 5111
icliq_sw: 2
iovr: 3
Expand Down Expand Up @@ -225,7 +256,7 @@ FV3_GFS_v15p2:
bl_mynn_edmf_mom: !!python/none
bl_mynn_tkeadvect: !!python/none
cnvcld: True
cnvgwd: True
cnvgwd: True
cplflx: !!python/none
do_myjpbl: False
do_myjsfc: False
Expand Down Expand Up @@ -315,7 +346,7 @@ FV3_GFS_v15_thompson_mynn_lam3km:
lgfdlmprad: false
lsm: 1
lsoil_lsm: !!python/none
ltaerosol: false
ltaerosol: false
xkzminv: 0.3
xkzm_m: 1.0
xkzm_h: 1.0
Expand Down
Loading

0 comments on commit 980d592

Please sign in to comment.