Skip to content

Commit

Permalink
Update GSD_HRRR3km grid parameters and enable its use in NCO mode (#273)
Browse files Browse the repository at this point in the history
## Description of changes:

* Update grid parameters of GSD_HRRR3km grid of type JPgrid (including its task layout and blocksize) and enable running with it in NCO mode.  The new grid parameters are set to values specified by Christina Holt of GSL.  
* Update the write-component grid parameters associated with this grid such that the former is within the latter.
* Add two WE2E tests in NCO mode to run on this grid -- one using FV3GFS for ICs and LBCs (nco_GSD_HRRR3km_FV3GFS_FV3GFS) and another using HRRRX for ICs and RAPX for LBCs (nco_GSD_HRRR3km_HRRRX_RAPX).  First test works but the second doesn't due to a yet-unknown problem in chgres_cube, but the test may work with an older executable that GSL will use.
* Bug fix: Add the FV3GFS_2017_gfdlmp_regional physics suite to the if-statements in exregional_make_ics.sh and exregional_make_lbcs.sh that set numsoil_out.
* Improvement: Add "else" clauses to the if-statements in exregional_make_ics.sh and exregional_make_lbcs.sh that check for the physics suite to set various parameters.  These "else" clauses print out an error message whenever the specified physics suite is not covered by the if-statement.

## Tests conducted:

### On hera:
Ran all the WE2E tests including the two new ones (nco_GSD_HRRR3km_FV3GFS_FV3GFS and nco_GSD_HRRR3km_HRRRX_RAPX).  All tests except regional_010 pass (regional_010 test was already broken in the original develop branch).

### On jet:
Ran the two new WE2E tests nco_GSD_HRRR3km_FV3GFS_FV3GFS and nco_GSD_HRRR3km_HRRRX_RAPX as well as regional_002 and regional_003.  All passed, although some tasks (make_lbcs and run_fcst) for the nco_GSD_HRRR3km_FV3GFS_FV3GFS and nco_GSD_HRRR3km_HRRRX_RAPX tests took more than 1 try to succeed.  Also tested versions of nco_GSD_HRRR3km_FV3GFS_FV3GFS and nco_GSD_HRRR3km_HRRRX_RAPX in which the external files are staged.  Again, both succeeded but some tasks take more than 1 try to succeed.
  • Loading branch information
gsketefian authored Aug 21, 2020
1 parent d33cd30 commit f2f0328
Show file tree
Hide file tree
Showing 8 changed files with 328 additions and 35 deletions.
22 changes: 22 additions & 0 deletions scripts/exregional_make_ics.sh
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,14 @@ case "${EXTRN_MDL_NAME_ICS}" in
# For GSD physics, add three additional tracers (the ice, rain and water
# number concentrations) that are required for Thompson microphysics.
tracers="[\"sphum\",\"liq_wat\",\"o3mr\",\"ice_wat\",\"rainwat\",\"snowwat\",\"graupel\",\"ice_nc\",\"rain_nc\",\"water_nc\"]"
else
print_err_msg_exit "\
The parameter \"tracers\" has not been defined for this combination of
external model (EXTRN_MDL_NAME_ICS), physics suite (CCPP_PHYS_SUITE), and
FV3GFS file type (FV3GFS_FILE_FMT_ICS):
EXTRN_MDL_NAME_ICS = \"${EXTRN_MDL_NAME_ICS}\"
CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\"
FV3GFS_FILE_FMT_ICS = \"${FV3GFS_FILE_FMT_ICS}\""
fi
#
# If CCPP is not being used, the only physics suite that can be used is
Expand Down Expand Up @@ -361,6 +369,7 @@ HRRRX grib2 files created after about \"${cdate_min_HRRRX}\"..."

if [ "${USE_CCPP}" = "TRUE" ]; then
if [ "${CCPP_PHYS_SUITE}" = "FV3_GFS_2017_gfdlmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_2017_gfdlmp_regional" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GSD_SAR_v1" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_RRFS_v0" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_CPT_v0" ] || \
Expand All @@ -370,6 +379,12 @@ HRRRX grib2 files created after about \"${cdate_min_HRRRX}\"..."
elif [ "${CCPP_PHYS_SUITE}" = "FV3_GSD_v0" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GSD_SAR" ]; then
numsoil_out="9"
else
print_err_msg_exit "\
The parameter \"numsoil_out\" has not been defined for this combination
of external model (EXTRN_MDL_NAME_ICS) and physics suite (CCPP_PHYS_SUITE):
EXTRN_MDL_NAME_ICS = \"${EXTRN_MDL_NAME_ICS}\"
CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\""
fi
fi
#
Expand Down Expand Up @@ -400,6 +415,7 @@ HRRRX grib2 files created after about \"${cdate_min_HRRRX}\"..."

if [ "${USE_CCPP}" = "TRUE" ]; then
if [ "${CCPP_PHYS_SUITE}" = "FV3_GFS_2017_gfdlmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_2017_gfdlmp_regional" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_CPT_v0" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GSD_SAR_v1" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_RRFS_v0" ] || \
Expand All @@ -409,6 +425,12 @@ HRRRX grib2 files created after about \"${cdate_min_HRRRX}\"..."
elif [ "${CCPP_PHYS_SUITE}" = "FV3_GSD_v0" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GSD_SAR" ]; then
numsoil_out="9"
else
print_err_msg_exit "\
The parameter \"numsoil_out\" has not been defined for this combination
of external model (EXTRN_MDL_NAME_ICS) and physics suite (CCPP_PHYS_SUITE):
EXTRN_MDL_NAME_ICS = \"${EXTRN_MDL_NAME_ICS}\"
CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\""
fi
fi
#
Expand Down
15 changes: 15 additions & 0 deletions scripts/exregional_make_lbcs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -294,6 +294,14 @@ case "${EXTRN_MDL_NAME_LBCS}" in
# For GSD physics, add three additional tracers (the ice, rain and water
# number concentrations) that are required for Thompson microphysics.
tracers="[\"sphum\",\"liq_wat\",\"o3mr\",\"ice_wat\",\"rainwat\",\"snowwat\",\"graupel\",\"ice_nc\",\"rain_nc\",\"water_nc\"]"
else
print_err_msg_exit "\
The parameter \"tracers\" has not been defined for this combination of
external model (EXTRN_MDL_NAME_LBCS), physics suite (CCPP_PHYS_SUITE),
and FV3GFS file type (FV3GFS_FILE_FMT_LBCS):
EXTRN_MDL_NAME_LBCS = \"${EXTRN_MDL_NAME_LBCS}\"
CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\"
FV3GFS_FILE_FMT_LBCS = \"${FV3GFS_FILE_FMT_LBCS}\""
fi
#
# If CCPP is not being used, the only physics suite that can be used is
Expand Down Expand Up @@ -329,6 +337,7 @@ case "${EXTRN_MDL_NAME_LBCS}" in

if [ "${USE_CCPP}" = "TRUE" ]; then
if [ "${CCPP_PHYS_SUITE}" = "FV3_GFS_2017_gfdlmp" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GFS_2017_gfdlmp_regional" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_CPT_v0" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GSD_SAR_v1" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_RRFS_v0" ] || \
Expand All @@ -338,6 +347,12 @@ case "${EXTRN_MDL_NAME_LBCS}" in
elif [ "${CCPP_PHYS_SUITE}" = "FV3_GSD_v0" ] || \
[ "${CCPP_PHYS_SUITE}" = "FV3_GSD_SAR" ]; then
numsoil_out="9"
else
print_err_msg_exit "\
The parameter \"numsoil_out\" has not been defined for this combination
of external model (EXTRN_MDL_NAME_LBCS) and physics suite (CCPP_PHYS_SUITE):
EXTRN_MDL_NAME_LBCS = \"${EXTRN_MDL_NAME_LBCS}\"
CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\""
fi
fi

Expand Down
139 changes: 139 additions & 0 deletions tests/baseline_configs/config.nco_GSD_HRRR3km_FV3GFS_FV3GFS.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
#
# The values of the variables MACHINE, ACCOUNT, and EXPT_SUBDIR are required
# inputs to the script that launces the WE2E test experiments. That script
# will use those inputs to fill in the values of these variables below.
#
MACHINE=""
ACCOUNT=""
EXPT_SUBDIR=""
#
# The values of the variables USE_CRON_TO_RELAUNCH and CRON_RELAUNCH_INTVL_MNTS
# are optional inputs to the script that launces the WE2E test experiments.
# If one or both of these values are specified, then that script will
# replace the default values of these variables below with those values.
# Otherwise, it will keep the default values.
#
USE_CRON_TO_RELAUNCH="TRUE"
CRON_RELAUNCH_INTVL_MNTS="02"


QUEUE_DEFAULT="batch"
QUEUE_HPSS="service"
QUEUE_FCST="batch"

VERBOSE="TRUE"

RUN_ENVIR="nco"
PREEXISTING_DIR_METHOD="rename"

EMC_GRID_NAME="GSD_HRRR3km"
GRID_GEN_METHOD="ESGgrid"

QUILTING="TRUE"
USE_CCPP="TRUE"
CCPP_PHYS_SUITE="FV3_GFS_2017_gfdlmp_regional"
FCST_LEN_HRS="06"
LBC_SPEC_INTVL_HRS="3"

DATE_FIRST_CYCL="20190901"
DATE_LAST_CYCL="20190901"
CYCL_HRS=( "18" )

EXTRN_MDL_NAME_ICS="FV3GFS"
EXTRN_MDL_NAME_LBCS="FV3GFS"

#
# In NCO mode, the following don't need to be explicitly set to "FALSE"
# in this configuration file because the experiment generation script
# will do this (along with printing out an informational message).
#
#RUN_TASK_MAKE_GRID="FALSE"
#RUN_TASK_MAKE_OROG="FALSE"
#RUN_TASK_MAKE_SFC_CLIMO="FALSE"

#
# In order to prevent simultaneous WE2E (Workflow End-to-End) tests that
# are running in NCO mode and which run the same cycles from interfering
# with each other, for each cycle, each such test must have a distinct
# path to the following two directories:
#
# 1) The directory in which the cycle-dependent model input files, symlinks
# to cycle-independent input files, and raw (i.e. before post-processing)
# forecast output files for a given cycle are stored. The path to this
# directory is
#
# $STMP/tmpnwprd/$RUN/$cdate
#
# where cdate is the starting year (yyyy), month (mm), day (dd) and
# hour of the cycle in the form yyyymmddhh.
#
# 2) The directory in which the output files from the post-processor (UPP)
# for a given cycle are stored. The path to this directory is
#
# $PTMP/com/$NET/$envir/$RUN.$yyyymmdd/$hh
#
# Here, we make the first directory listed above unique to a WE2E test
# by setting RUN to the name of the current test. This will also make
# the second directory unique because it also conains the variable RUN
# in its full path, but if this directory -- or set of directories since
# it involves a set of cycles and forecast hours -- already exists from
# a previous run of the same test, then it is much less confusing to the
# user to first move or delete this set of directories during the workflow
# generation step and then start the experiment (whether we move or delete
# depends on the setting of PREEXISTING_DIR_METHOD). For this purpose,
# it is most convenient to put this set of directories under an umbrella
# directory that has the same name as the experiment. This can be done
# by setting the variable envir to the name of the current test. Since
# as mentiond above we will store this name in RUN, below we simply set
# envir to RUN. Then, for this test, the UPP output will be located in
# the directory
#
# $PTMP/com/$NET/$RUN/$RUN.$yyyymmdd/$hh
#
# Note that by the time this file is sourced by the experiment generation
# script, the script that launces the WE2E test experiments will have
# filled in the value of the variable EXPT_SUBDIR above (which contains
# the name of the experiment). Thus, below, we can assume that EXPT_SUBDIR
# has a valid value and use it to set RUN and envir.
#
RUN="${EXPT_SUBDIR}"
envir="${EXPT_SUBDIR}"

#On Hera:
#COMINgfs="/scratch1/NCEPDEV/hwrf/noscrub/hafs-input/COMGFS"
#STMP="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/NCO_dirs/stmp"
#PTMP="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/NCO_dirs/ptmp"

#On Jet:
COMINgfs="/lfs1/HFIP/hwrf-data/hafs-input/COMGFS"
STMP="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/NCO_dirs/stmp"
PTMP="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/NCO_dirs/ptmp"

#
# In NCO mode, the user must manually (e.g. after doing the build step)
# create the symlink "${FIXrrfs}/fix_sar" that points to EMC's FIXsar
# directory on the machine. For example, on hera, the symlink's target
# needs to be
#
# /scratch2/NCEPDEV/fv3-cam/emc.campara/fix_fv3cam/fix_sar
#
# The experiment generation script will then set FIXsar to
#
# FIXsar="${FIXrrfs}/fix_sar/${EMC_GRID_NAME}"
#
# where EMC_GRID_NAME has the value set above.
#

# If want to use user-staged external model files:

#On Hera:
#EXTRN_MDL_SOURCE_DIR_ICS="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/FV3GFS"
#EXTRN_MDL_FILES_ICS=( "gfs.atmanl.nemsio" "gfs.sfcanl.nemsio" )
#EXTRN_MDL_SOURCE_DIR_LBCS="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/FV3GFS"
#EXTRN_MDL_FILES_LBCS=( "gfs.atmf003.nemsio" "gfs.atmf006.nemsio" )

#On Jet:
#EXTRN_MDL_SOURCE_DIR_ICS="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/FV3GFS"
#EXTRN_MDL_FILES_ICS=( "gfs.atmanl.nemsio" "gfs.sfcanl.nemsio" )
#EXTRN_MDL_SOURCE_DIR_LBCS="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/FV3GFS"
#EXTRN_MDL_FILES_LBCS=( "gfs.atmf003.nemsio" "gfs.atmf006.nemsio" )
141 changes: 141 additions & 0 deletions tests/baseline_configs/config.nco_GSD_HRRR3km_HRRRX_RAPX.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
#
# The values of the variables MACHINE, ACCOUNT, and EXPT_SUBDIR are required
# inputs to the script that launces the WE2E test experiments. That script
# will use those inputs to fill in the values of these variables below.
#
MACHINE=""
ACCOUNT=""
EXPT_SUBDIR=""
#
# The values of the variables USE_CRON_TO_RELAUNCH and CRON_RELAUNCH_INTVL_MNTS
# are optional inputs to the script that launces the WE2E test experiments.
# If one or both of these values are specified, then that script will
# replace the default values of these variables below with those values.
# Otherwise, it will keep the default values.
#
USE_CRON_TO_RELAUNCH="TRUE"
CRON_RELAUNCH_INTVL_MNTS="02"


QUEUE_DEFAULT="batch"
QUEUE_HPSS="service"
QUEUE_FCST="batch"

VERBOSE="TRUE"

RUN_ENVIR="nco"
PREEXISTING_DIR_METHOD="rename"

EMC_GRID_NAME="GSD_HRRR3km"
GRID_GEN_METHOD="ESGgrid"

QUILTING="TRUE"
USE_CCPP="TRUE"
CCPP_PHYS_SUITE="FV3_GSD_SAR"
FCST_LEN_HRS="06"
LBC_SPEC_INTVL_HRS="3"

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

EXTRN_MDL_NAME_ICS="HRRRX"
EXTRN_MDL_NAME_LBCS="RAPX"

#
# In NCO mode, the following don't need to be explicitly set to "FALSE"
# in this configuration file because the experiment generation script
# will do this (along with printing out an informational message).
#
#RUN_TASK_MAKE_GRID="FALSE"
#RUN_TASK_MAKE_OROG="FALSE"
#RUN_TASK_MAKE_SFC_CLIMO="FALSE"

#
# In order to prevent simultaneous WE2E (Workflow End-to-End) tests that
# are running in NCO mode and which run the same cycles from interfering
# with each other, for each cycle, each such test must have a distinct
# path to the following two directories:
#
# 1) The directory in which the cycle-dependent model input files, symlinks
# to cycle-independent input files, and raw (i.e. before post-processing)
# forecast output files for a given cycle are stored. The path to this
# directory is
#
# $STMP/tmpnwprd/$RUN/$cdate
#
# where cdate is the starting year (yyyy), month (mm), day (dd) and
# hour of the cycle in the form yyyymmddhh.
#
# 2) The directory in which the output files from the post-processor (UPP)
# for a given cycle are stored. The path to this directory is
#
# $PTMP/com/$NET/$envir/$RUN.$yyyymmdd/$hh
#
# Here, we make the first directory listed above unique to a WE2E test
# by setting RUN to the name of the current test. This will also make
# the second directory unique because it also conains the variable RUN
# in its full path, but if this directory -- or set of directories since
# it involves a set of cycles and forecast hours -- already exists from
# a previous run of the same test, then it is much less confusing to the
# user to first move or delete this set of directories during the workflow
# generation step and then start the experiment (whether we move or delete
# depends on the setting of PREEXISTING_DIR_METHOD). For this purpose,
# it is most convenient to put this set of directories under an umbrella
# directory that has the same name as the experiment. This can be done
# by setting the variable envir to the name of the current test. Since
# as mentiond above we will store this name in RUN, below we simply set
# envir to RUN. Then, for this test, the UPP output will be located in
# the directory
#
# $PTMP/com/$NET/$RUN/$RUN.$yyyymmdd/$hh
#
# Note that by the time this file is sourced by the experiment generation
# script, the script that launces the WE2E test experiments will have
# filled in the value of the variable EXPT_SUBDIR above (which contains
# the name of the experiment). Thus, below, we can assume that EXPT_SUBDIR
# has a valid value and use it to set RUN and envir.
#
RUN="${EXPT_SUBDIR}"
envir="${EXPT_SUBDIR}"

#On Hera:
#COMINgfs="/scratch1/NCEPDEV/hwrf/noscrub/hafs-input/COMGFS"
#STMP="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/NCO_dirs/stmp"
#PTMP="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/NCO_dirs/ptmp"

#On Jet:
COMINgfs="/lfs1/HFIP/hwrf-data/hafs-input/COMGFS"
STMP="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/NCO_dirs/stmp"
PTMP="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/NCO_dirs/ptmp"


#
# In NCO mode, the user must manually (e.g. after doing the build step)
# create the symlink "${FIXrrfs}/fix_sar" that points to EMC's FIXsar
# directory on the machine. For example, on hera, the symlink's target
# needs to be
#
# /scratch2/NCEPDEV/fv3-cam/emc.campara/fix_fv3cam/fix_sar
#
# The experiment generation script will then set FIXsar to
#
# FIXsar="${FIXrrfs}/fix_sar/${EMC_GRID_NAME}"
#
# where EMC_GRID_NAME has the value set above.
#

# If want to use user-staged external model files:

#On Hera:
#EXTRN_MDL_SOURCE_DIR_ICS="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/HRRRX"
#EXTRN_MDL_FILES_ICS=( "hrrrx.out.for_f000" )
#EXTRN_MDL_SOURCE_DIR_LBCS="/scratch2/BMC/det/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/RAPX"
#EXTRN_MDL_FILES_LBCS=( "rapx.out.for_f003" "rapx.out.for_f006" )

#On Jet:
#EXTRN_MDL_SOURCE_DIR_ICS="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/HRRRX"
#EXTRN_MDL_FILES_ICS=( "hrrrx.out.for_f000" )
#EXTRN_MDL_SOURCE_DIR_LBCS="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/staged_extrn_mdl_files/RAPX"
#EXTRN_MDL_FILES_LBCS=( "rapx.out.for_f003" "rapx.out.for_f006" )

2 changes: 2 additions & 0 deletions tests/baselines_list.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
GSD_RAP13km
community_ensemble_008mems
community_ensemble_2mems
nco_GSD_HRRR3km_FV3GFS_FV3GFS
nco_GSD_HRRR3km_HRRRX_RAPX
nco_conus
nco_conus_c96
nco_ensemble
Expand Down
Loading

0 comments on commit f2f0328

Please sign in to comment.