From 8c34186389c64f421f0b3d129e44ab08865e648b Mon Sep 17 00:00:00 2001 From: gsketefian <31046882+gsketefian@users.noreply.github.com> Date: Tue, 19 Jan 2021 19:31:13 -0700 Subject: [PATCH] Bugfixes for default values of grid parameters and forecast computational parameters; bugfix for setting FXILAM_NCO_BASEDIR in WE2E tests; other improvements. (#403) --- tests/baseline_configs/config.new_ESGgrid.sh | 10 +- tests/baseline_configs/config.new_GFDLgrid.sh | 16 +- ..._USE_GFDLgrid_RES_IN_FILENAMES_eq_FALSE.sh | 16 +- ...d_USE_GFDLgrid_RES_IN_FILENAMES_eq_TRUE.sh | 16 +- tests/run_experiments.sh | 45 +++- ush/config_defaults.sh | 181 +++++++++----- ush/set_predef_grid_params.sh | 234 +++++++++--------- ush/setup.sh | 48 ++++ 8 files changed, 349 insertions(+), 217 deletions(-) diff --git a/tests/baseline_configs/config.new_ESGgrid.sh b/tests/baseline_configs/config.new_ESGgrid.sh index 45c315172c..3588253180 100644 --- a/tests/baseline_configs/config.new_ESGgrid.sh +++ b/tests/baseline_configs/config.new_ESGgrid.sh @@ -3,16 +3,16 @@ PREEXISTING_DIR_METHOD="rename" GRID_GEN_METHOD="ESGgrid" -ESGgrid_LON_CTR=-97.5 -ESGgrid_LAT_CTR=41.25 +ESGgrid_LON_CTR="-97.5" +ESGgrid_LAT_CTR="41.25" ESGgrid_DELX="25000.0" ESGgrid_DELY="25000.0" -ESGgrid_NX=216 -ESGgrid_NY=156 +ESGgrid_NX="216" +ESGgrid_NY="156" -ESGgrid_WIDE_HALO_WIDTH=6 +ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="40" diff --git a/tests/baseline_configs/config.new_GFDLgrid.sh b/tests/baseline_configs/config.new_GFDLgrid.sh index 3cc8b620ea..27c8544ffe 100644 --- a/tests/baseline_configs/config.new_GFDLgrid.sh +++ b/tests/baseline_configs/config.new_GFDLgrid.sh @@ -3,26 +3,26 @@ PREEXISTING_DIR_METHOD="rename" GRID_GEN_METHOD="GFDLgrid" -GFDLgrid_LON_T6_CTR=-97.5 -GFDLgrid_LAT_T6_CTR=38.5 -GFDLgrid_STRETCH_FAC=1.0001 # Cannot be exactly 1.0 because then FV3 thinnks it's a global grid. This needs to be fixed in the ufs_weather_model repo. +GFDLgrid_LON_T6_CTR="-97.5" +GFDLgrid_LAT_T6_CTR="38.5" +GFDLgrid_STRETCH_FAC="1.0001" # Cannot be exactly 1.0 because then FV3 thinnks it's a global grid. This needs to be fixed in the ufs_weather_model repo. GFDLgrid_RES="96" -GFDLgrid_REFINE_RATIO=2 +GFDLgrid_REFINE_RATIO="2" -#num_margin_cells_T6_left=9 +#num_margin_cells_T6_left="9" #GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G="10" -#num_margin_cells_T6_right=9 +#num_margin_cells_T6_right="9" #GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G="87" -#num_margin_cells_T6_bottom=9 +#num_margin_cells_T6_bottom="9" #GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) #GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G="10" GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G="19" -#num_margin_cells_T6_top=9 +#num_margin_cells_T6_top="9" #GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) #GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G="87" GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G="78" diff --git a/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_FALSE.sh b/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_FALSE.sh index f6bd589e4e..a4f0e66852 100644 --- a/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_FALSE.sh +++ b/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_FALSE.sh @@ -3,25 +3,25 @@ PREEXISTING_DIR_METHOD="rename" GRID_GEN_METHOD="GFDLgrid" -GFDLgrid_LON_T6_CTR=-97.5 -GFDLgrid_LAT_T6_CTR=38.5 -GFDLgrid_STRETCH_FAC=1.5 +GFDLgrid_LON_T6_CTR="-97.5" +GFDLgrid_LAT_T6_CTR="38.5" +GFDLgrid_STRETCH_FAC="1.5" GFDLgrid_RES="96" -GFDLgrid_REFINE_RATIO=2 +GFDLgrid_REFINE_RATIO="2" -#num_margin_cells_T6_left=9 +#num_margin_cells_T6_left="9" #GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G="10" -#num_margin_cells_T6_right=9 +#num_margin_cells_T6_right="9" #GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G="87" -#num_margin_cells_T6_bottom=9 +#num_margin_cells_T6_bottom="9" #GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G="10" -#num_margin_cells_T6_top=9 +#num_margin_cells_T6_top="9" #GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G="87" diff --git a/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_TRUE.sh b/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_TRUE.sh index ee7e3144a4..d94d0ee822 100644 --- a/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_TRUE.sh +++ b/tests/baseline_configs/config.new_GFDLgrid__GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES_eq_TRUE.sh @@ -3,25 +3,25 @@ PREEXISTING_DIR_METHOD="rename" GRID_GEN_METHOD="GFDLgrid" -GFDLgrid_LON_T6_CTR=-97.5 -GFDLgrid_LAT_T6_CTR=38.5 -GFDLgrid_STRETCH_FAC=1.5 +GFDLgrid_LON_T6_CTR="-97.5" +GFDLgrid_LAT_T6_CTR="38.5" +GFDLgrid_STRETCH_FAC="1.5" GFDLgrid_RES="96" -GFDLgrid_REFINE_RATIO=2 +GFDLgrid_REFINE_RATIO="2" -#num_margin_cells_T6_left=9 +#num_margin_cells_T6_left="9" #GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G="10" -#num_margin_cells_T6_right=9 +#num_margin_cells_T6_right="9" #GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G="87" -#num_margin_cells_T6_bottom=9 +#num_margin_cells_T6_bottom="9" #GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G="10" -#num_margin_cells_T6_top=9 +#num_margin_cells_T6_top="9" #GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G="87" diff --git a/tests/run_experiments.sh b/tests/run_experiments.sh index 46264f1e6c..47ac5b4777 100755 --- a/tests/run_experiments.sh +++ b/tests/run_experiments.sh @@ -502,6 +502,8 @@ VERBOSE=\"${VERBOSE}\"" if [ "$MACHINE" = "HERA" ]; then pregen_basedir="/scratch2/BMC/det/FV3LAM_pregen" + elif [ "$MACHINE" = "JET" ]; then + pregen_basedir="/mnt/lfs4/BMC/wrfruc/FV3-LAM/pregen" elif [ "$MACHINE" = "CHEYENNE" ]; then pregen_basedir="/glade/p/ral/jntp/UFS_CAM/FV3LAM_pregen" else @@ -603,7 +605,35 @@ SFC_CLIMO_DIR=\"${SFC_CLIMO_DIR}\"" RUN=\"\${EXPT_SUBDIR}\" envir=\"\${EXPT_SUBDIR}\"" # -# Set COMINgfs. +# Set FIXLAM_NCO_BASEDIR. +# + if [ "$MACHINE" = "HERA" ]; then + FIXLAM_NCO_BASEDIR="/scratch2/BMC/det/FV3LAM_pregen" + elif [ "$MACHINE" = "JET" ]; then + FIXLAM_NCO_BASEDIR="/mnt/lfs1/BMC/fim/Gerard.Ketefian/UFS_CAM/FV3LAM_pregen" + elif [ "$MACHINE" = "CHEYENNE" ]; then + FIXLAM_NCO_BASEDIR="/needs/to/be/specified" + else + print_err_msg_exit "\ +The base directory (FIXLAM_NCO_BASEDIR) in which the pregenerated grid, +orography, and surface climatology \"fixed\" files used in NCO mode are +located has not been specified for this machine (MACHINE): + MACHINE= \"${MACHINE}\"" + fi + + str=${str}" +# +# The base directory in which the pregenerated grid, orography, and surface +# climatology \"fixed\" files used in NCO mode are located. In NCO mode, +# the workflow scripts will create symlinks (in the directory specified +# by FIXLAM) to files in a subdirectory under FIXLAM_NCO_BASDEDIR, where +# the name of the subdirectory is the name of the predefined grid specified +# by PREDEF_GRID_NAME. +# +FIXLAM_NCO_BASEDIR=\"${FIXLAM_NCO_BASEDIR}\"" +# +# Set COMINgfs if using the FV3GFS or the GSMGFS as the external model +# for ICs or LBCs. # if [ "${EXTRN_MDL_NAME_ICS}" = "FV3GFS" ] || \ [ "${EXTRN_MDL_NAME_ICS}" = "GSMGFS" ] || \ @@ -612,13 +642,10 @@ envir=\"\${EXPT_SUBDIR}\"" if [ "$MACHINE" = "HERA" ]; then COMINgfs="/scratch1/NCEPDEV/hwrf/noscrub/hafs-input/COMGFS" - FIXLAM_NCO_BASEDIR="/scratch2/BMC/det/FV3LAM_pregen" elif [ "$MACHINE" = "JET" ]; then COMINgfs="/lfs1/HFIP/hwrf-data/hafs-input/COMGFS" - FIXLAM_NCO_BASEDIR="/needs/to/be/specified" elif [ "$MACHINE" = "CHEYENNE" ]; then COMINgfs="/glade/scratch/ketefian/NCO_dirs/COMGFS" - FIXLAM_NCO_BASEDIR="/needs/to/be/specified" else print_err_msg_exit "\ The directory (COMINgfs) that needs to be specified when running the @@ -634,15 +661,7 @@ for this machine (MACHINE): # mode (RUN_ENVIR set to \"nco\") AND using the FV3GFS or the GSMGFS as # the external model for ICs and/or LBCs. # -COMINgfs=\"${COMINgfs}\" -# -# The base directory in which the pregenerated grid, orography, and surface -# climatology \"fixed\" files used in NCO mode are located. In NCO mode, -# the workflow scripts will create a symlink (at the location specified -# by FIXLAM) to a subdirectory under FIXLAM_NCO_BASDEDIR. (The name of -# the subdirectory is the name of the grid specified by PREDEF_GRID_NAME.) -# -FIXLAM_NCO_BASEDIR=\"${FIXLAM_NCO_BASEDIR}\"" +COMINgfs=\"${COMINgfs}\"" fi # diff --git a/ush/config_defaults.sh b/ush/config_defaults.sh index a7afb78c9a..0234ef47a6 100644 --- a/ush/config_defaults.sh +++ b/ush/config_defaults.sh @@ -429,10 +429,12 @@ FV3GFS_FILE_FMT_LBCS="nemsio" # Set NOMADS online data associated parameters. Definitions: # # NOMADS: -# Flag controlling whether or not using NOMADS online data +# Flag controlling whether or not using NOMADS online data. # -# NOMADS_file_type -# Flag controlling the format of data +# NOMADS_file_type: +# Flag controlling the format of data. +# +#----------------------------------------------------------------------- # NOMADS="FALSE" NOMADS_file_type="nemsio" @@ -510,13 +512,26 @@ CCPP_PHYS_SUITE="FV3_GFS_v15p2" # This will generate a regional grid using the map projection developed # by Jim Purser of EMC. # -# Note that if using a predefined grid (PREDEDF_GRID_NAME set to a valid -# non-empty value), this parameter is overwritten by the method used to -# generate that grid. +# Note that: +# +# 1) If the experiment is using one of the predefined grids (i.e. if +# PREDEF_GRID_NAME is set to the name of one of the valid predefined +# grids), then GRID_GEN_METHOD will be reset to the value of +# GRID_GEN_METHOD for that grid. This will happen regardless of +# whether or not GRID_GEN_METHOD is assigned a value in the user- +# specified experiment configuration file, i.e. any value it may be +# assigned in the experiment configuration file will be overwritten. +# +# 2) If the experiment is not using one of the predefined grids (i.e. if +# PREDEF_GRID_NAME is set to a null string), then GRID_GEN_METHOD must +# be set in the experiment configuration file. Otherwise, it will +# remain set to a null string, and the experiment generation will +# fail because the generation scripts check to ensure that it is set +# to a non-empty string before creating the experiment directory. # #----------------------------------------------------------------------- # -GRID_GEN_METHOD="ESGgrid" +GRID_GEN_METHOD="" # #----------------------------------------------------------------------- # @@ -656,18 +671,46 @@ GRID_GEN_METHOD="ESGgrid" # in the file names, so we allow for that here by setting this flag to # "TRUE". # +# Note that: +# +# 1) If the experiment is using one of the predefined grids (i.e. if +# PREDEF_GRID_NAME is set to the name of one of the valid predefined +# grids), then: +# +# a) If the value of GRID_GEN_METHOD for that grid is "GFDLgrid", then +# these parameters will get reset to the values for that grid. +# This will happen regardless of whether or not they are assigned +# values in the user-specified experiment configuration file, i.e. +# any values they may be assigned in the experiment configuration +# file will be overwritten. +# +# b) If the value of GRID_GEN_METHOD for that grid is "ESGgrid", then +# these parameters will not be used and thus do not need to be reset +# to non-empty strings. +# +# 2) If the experiment is not using one of the predefined grids (i.e. if +# PREDEF_GRID_NAME is set to a null string), then: +# +# a) If GRID_GEN_METHOD is set to "GFDLgrid" in the user-specified +# experiment configuration file, then these parameters must be set +# in that configuration file. +# +# b) If GRID_GEN_METHOD is set to "ESGgrid" in the user-specified +# experiment configuration file, then these parameters will not be +# used and thus do not need to be reset to non-empty strings. +# #----------------------------------------------------------------------- # -GFDLgrid_LON_T6_CTR=-97.5 -GFDLgrid_LAT_T6_CTR=35.5 -GFDLgrid_RES="384" -GFDLgrid_STRETCH_FAC=1.5 -GFDLgrid_REFINE_RATIO=3 -GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=10 -GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=374 -GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=10 -GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=374 -GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="TRUE" +GFDLgrid_LON_T6_CTR="" +GFDLgrid_LAT_T6_CTR="" +GFDLgrid_RES="" +GFDLgrid_STRETCH_FAC="" +GFDLgrid_REFINE_RATIO="" +GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G="" +GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G="" +GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G="" +GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G="" +GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="" # #----------------------------------------------------------------------- # @@ -711,68 +754,90 @@ GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="TRUE" # 4-cell-wide halos that we will eventually end up with. Note that the # grid and orography files with the wide halo are only needed as intermediates # in generating the files with 0-cell-, 3-cell-, and 4-cell-wide halos; -# they are not needed by the forecast model. Usually, there is no reason -# to change this parameter from its default value set here. +# they are not needed by the forecast model. +# NOTE: Probably don't need to make ESGgrid_WIDE_HALO_WIDTH a user-specified +# variable. Just set it in the function set_gridparams_ESGgrid.sh. # -# NOTE: Probably don't need to make this a user-specified variable. -# Just set it in the function set_gridparams_ESGgrid.sh. +# Note that: # -#----------------------------------------------------------------------- +# 1) If the experiment is using one of the predefined grids (i.e. if +# PREDEF_GRID_NAME is set to the name of one of the valid predefined +# grids), then: # -ESGgrid_LON_CTR="-97.5" -ESGgrid_LAT_CTR="35.5" -ESGgrid_DELX="3000.0" -ESGgrid_DELY="3000.0" -ESGgrid_NX="1000" -ESGgrid_NY="1000" -ESGgrid_WIDE_HALO_WIDTH="6" +# a) If the value of GRID_GEN_METHOD for that grid is "GFDLgrid", then +# these parameters will not be used and thus do not need to be reset +# to non-empty strings. # -#----------------------------------------------------------------------- +# b) If the value of GRID_GEN_METHOD for that grid is "ESGgrid", then +# these parameters will get reset to the values for that grid. +# This will happen regardless of whether or not they are assigned +# values in the user-specified experiment configuration file, i.e. +# any values they may be assigned in the experiment configuration +# file will be overwritten. +# +# 2) If the experiment is not using one of the predefined grids (i.e. if +# PREDEF_GRID_NAME is set to a null string), then: # -# Set DT_ATMOS. This is the main forecast model integraton time step. -# As described in the forecast model documentation, "It corresponds to -# the frequency with which the top level routine in the dynamics is called -# as well as the frequency with which the physics is called." +# a) If GRID_GEN_METHOD is set to "GFDLgrid" in the user-specified +# experiment configuration file, then these parameters will not be +# used and thus do not need to be reset to non-empty strings. # -# Note that if using one of the predefined grids and if DT_ATMOS is not -# explicitly set in the user-specified experiment configuration file -# (EXPT_CONFIG_FN), then the default value of DT_ATMOS specified here -# will be overwritten by its default value for that predefined grid. +# b) If GRID_GEN_METHOD is set to "ESGgrid" in the user-specified +# experiment configuration file, then these parameters must be set +# in that configuration file. # #----------------------------------------------------------------------- # -DT_ATMOS="18" +ESGgrid_LON_CTR="" +ESGgrid_LAT_CTR="" +ESGgrid_DELX="" +ESGgrid_DELY="" +ESGgrid_NX="" +ESGgrid_NY="" +ESGgrid_WIDE_HALO_WIDTH="" # #----------------------------------------------------------------------- # -# Set LAYOUT_X and LAYOUT_Y. These are the number of MPI tasks (processes) -# to use in the two horizontal directions (x and y) of the regional grid -# when running the forecast model. +# Set computational parameters for the forecast. Definitions: # -# Note that if using one of the predefined grids and if LAYOUT_X and/or -# LAYOUT_Y are not explicitly set in the user-specified experiment -# configuration file (EXPT_CONFIG_FN), then the default values of LAYOUT_X -# and/or LAYOUT_Y specified here will be overwritten by their default -# values for that predefined grid. +# DT_ATMOS: +# The main forecast model integraton time step. As described in the +# forecast model documentation, "It corresponds to the frequency with +# which the top level routine in the dynamics is called as well as the +# frequency with which the physics is called." # -#----------------------------------------------------------------------- +# LAYOUT_X, LAYOUT_Y: +# The number of MPI tasks (processes) to use in the two horizontal +# directions (x and y) of the regional grid when running the forecast +# model. # -LAYOUT_X="20" -LAYOUT_Y="20" +# BLOCKSIZE: +# The amount of data that is passed into the cache at a time. # -#----------------------------------------------------------------------- +# Here, we set these parameters to null strings. This is so that, for +# any one of these parameters: # -# Set BLOCKSIZE. This is the amount of data that is passed into the -# cache at a time. +# 1) If the experiment is using a predefined grid, then if the user +# sets the parameter in the user-specified experiment configuration +# file (EXPT_CONFIG_FN), that value will be used in the forecast(s). +# Otherwise, the default value of the parameter for that predefined +# grid will be used. # -# Note that if using one of the predefined grids and if BLOCKSIZE is not -# explicitly set in the user-specified experiment configuration file -# (EXPT_CONFIG_FN), then the default value of BLOCKSIZE specified here -# will be overwritten by its default value for that predefined grid. +# 2) If the experiment is not using a predefined grid (i.e. it is using +# a custom grid whose parameters are specified in the experiment +# configuration file), then the user must specify a value for the +# parameter in that configuration file. Otherwise, the parameter +# will remain set to a null string, and the experiment generation +# will fail because the generation scripts check to ensure that all +# the parameters defined in this section are set to non-empty strings +# before creating the experiment directory. # #----------------------------------------------------------------------- # -BLOCKSIZE="24" +DT_ATMOS="" +LAYOUT_X="" +LAYOUT_Y="" +BLOCKSIZE="" # #----------------------------------------------------------------------- # diff --git a/ush/set_predef_grid_params.sh b/ush/set_predef_grid_params.sh index 371073774c..e87e9ecdb5 100644 --- a/ush/set_predef_grid_params.sh +++ b/ush/set_predef_grid_params.sh @@ -86,16 +86,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-97.5 - ESGgrid_LAT_CTR=38.5 + ESGgrid_LON_CTR="-97.5" + ESGgrid_LAT_CTR="38.5" ESGgrid_DELX="25000.0" ESGgrid_DELY="25000.0" - ESGgrid_NX=202 - ESGgrid_NY=116 + ESGgrid_NX="202" + ESGgrid_NY="116" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-300}" @@ -130,16 +130,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-97.5 - ESGgrid_LAT_CTR=38.5 + ESGgrid_LON_CTR="-97.5" + ESGgrid_LAT_CTR="38.5" ESGgrid_DELX="13000.0" ESGgrid_DELY="13000.0" - ESGgrid_NX=396 - ESGgrid_NY=232 + ESGgrid_NX="396" + ESGgrid_NY="232" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-45}" @@ -174,16 +174,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-97.5 - ESGgrid_LAT_CTR=38.5 + ESGgrid_LON_CTR="-97.5" + ESGgrid_LAT_CTR="38.5" ESGgrid_DELX="3000.0" ESGgrid_DELY="3000.0" - ESGgrid_NX=1748 - ESGgrid_NY=1038 + ESGgrid_NX="1748" + ESGgrid_NY="1038" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-40}" @@ -218,16 +218,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-97.5 - ESGgrid_LAT_CTR=35.0 + ESGgrid_LON_CTR="-97.5" + ESGgrid_LAT_CTR="35.0" ESGgrid_DELX="3000.0" ESGgrid_DELY="3000.0" - ESGgrid_NX=840 - ESGgrid_NY=600 + ESGgrid_NX="840" + ESGgrid_NY="600" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-40}" @@ -265,16 +265,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-161.5 - ESGgrid_LAT_CTR=63.0 + ESGgrid_LON_CTR="-161.5" + ESGgrid_LAT_CTR="63.0" ESGgrid_DELX="13000.0" ESGgrid_DELY="13000.0" - ESGgrid_NX=320 - ESGgrid_NY=240 + ESGgrid_NX="320" + ESGgrid_NY="240" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" # DT_ATMOS="${DT_ATMOS:-50}" DT_ATMOS="${DT_ATMOS:-10}" @@ -335,22 +335,22 @@ case ${PREDEF_GRID_NAME} in # if [ "${GRID_GEN_METHOD}" = "GFDLgrid" ]; then # -# GFDLgrid_LON_T6_CTR=-160.8 -# GFDLgrid_LAT_T6_CTR=63.0 -# GFDLgrid_STRETCH_FAC=1.161 +# GFDLgrid_LON_T6_CTR="-160.8" +# GFDLgrid_LAT_T6_CTR="63.0" +# GFDLgrid_STRETCH_FAC="1.161" # GFDLgrid_RES="768" -# GFDLgrid_REFINE_RATIO=4 +# GFDLgrid_REFINE_RATIO="4" # -# num_margin_cells_T6_left=204 +# num_margin_cells_T6_left="204" # GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) # -# num_margin_cells_T6_right=204 +# num_margin_cells_T6_right="204" # GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) # -# num_margin_cells_T6_bottom=249 +# num_margin_cells_T6_bottom="249" # GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) # -# num_margin_cells_T6_top=249 +# num_margin_cells_T6_top="249" # GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) # # GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="FALSE" @@ -381,16 +381,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-161.5 - ESGgrid_LAT_CTR=63.0 + ESGgrid_LON_CTR="-161.5" + ESGgrid_LAT_CTR="63.0" ESGgrid_DELX="3000.0" ESGgrid_DELY="3000.0" - ESGgrid_NX=1380 - ESGgrid_NY=1020 + ESGgrid_NX="1380" + ESGgrid_NY="1020" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" # DT_ATMOS="${DT_ATMOS:-50}" DT_ATMOS="${DT_ATMOS:-10}" @@ -430,25 +430,25 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="GFDLgrid" - GFDLgrid_LON_T6_CTR=-97.5 - GFDLgrid_LAT_T6_CTR=38.5 - GFDLgrid_STRETCH_FAC=1.4 + GFDLgrid_LON_T6_CTR="-97.5" + GFDLgrid_LAT_T6_CTR="38.5" + GFDLgrid_STRETCH_FAC="1.4" GFDLgrid_RES="96" - GFDLgrid_REFINE_RATIO=3 + GFDLgrid_REFINE_RATIO="3" - num_margin_cells_T6_left=12 + num_margin_cells_T6_left="12" GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) - num_margin_cells_T6_right=12 + num_margin_cells_T6_right="12" GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) - num_margin_cells_T6_bottom=16 + num_margin_cells_T6_bottom="16" GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) - num_margin_cells_T6_top=16 + num_margin_cells_T6_top="16" GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) -# GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="FALSE" + GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="TRUE" DT_ATMOS="${DT_ATMOS:-225}" @@ -485,25 +485,25 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="GFDLgrid" - GFDLgrid_LON_T6_CTR=-97.5 - GFDLgrid_LAT_T6_CTR=38.5 - GFDLgrid_STRETCH_FAC=1.5 + GFDLgrid_LON_T6_CTR="-97.5" + GFDLgrid_LAT_T6_CTR="38.5" + GFDLgrid_STRETCH_FAC="1.5" GFDLgrid_RES="768" - GFDLgrid_REFINE_RATIO=3 + GFDLgrid_REFINE_RATIO="3" - num_margin_cells_T6_left=69 + num_margin_cells_T6_left="69" GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) - num_margin_cells_T6_right=69 + num_margin_cells_T6_right="69" GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) - num_margin_cells_T6_bottom=164 + num_margin_cells_T6_bottom="164" GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) - num_margin_cells_T6_top=164 + num_margin_cells_T6_top="164" GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) -# GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="FALSE" + GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="TRUE" DT_ATMOS="${DT_ATMOS:-18}" @@ -570,22 +570,22 @@ case ${PREDEF_GRID_NAME} in #dlon=0.03 #dlat=0.03 -# GFDLgrid_LON_T6_CTR=-153.0 -# GFDLgrid_LAT_T6_CTR=61.0 -# GFDLgrid_STRETCH_FAC=1.0 # ??? +# GFDLgrid_LON_T6_CTR="-153.0" +# GFDLgrid_LAT_T6_CTR="61.0" +# GFDLgrid_STRETCH_FAC="1.0" # ??? # GFDLgrid_RES="768" -# GFDLgrid_REFINE_RATIO=3 # ??? +# GFDLgrid_REFINE_RATIO="3" # ??? # -# num_margin_cells_T6_left=61 +# num_margin_cells_T6_left="61" # GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) # -# num_margin_cells_T6_right=67 +# num_margin_cells_T6_right="67" # GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) # -# num_margin_cells_T6_bottom=165 +# num_margin_cells_T6_bottom="165" # GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) # -# num_margin_cells_T6_top=171 +# num_margin_cells_T6_top="171" # GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) # # GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="TRUE" @@ -606,8 +606,8 @@ case ${PREDEF_GRID_NAME} in # With move to Hera, those files were lost; a backup can be found here: /scratch2/BMC/det/kavulich/fix/fix_sar # Longitude and latitude for center of domain - ESGgrid_LON_CTR=-153.0 - ESGgrid_LAT_CTR=61.0 + ESGgrid_LON_CTR="-153.0" + ESGgrid_LAT_CTR="61.0" # Projected grid spacing in meters...in the static files (e.g. "C768_grid.tile7.nc"), the "dx" is actually the resolution # of the supergrid, which is HALF of this dx @@ -616,12 +616,12 @@ case ${PREDEF_GRID_NAME} in # Number of x and y points for your domain (halo not included); # Divide "supergrid" values from /scratch2/BMC/det/kavulich/fix/fix_sar/ak/C768_grid.tile7.halo4.nc by 2 and subtract 8 to eliminate halo - ESGgrid_NX=1344 # Supergrid value 2704 - ESGgrid_NY=1152 # Supergrid value 2320 + ESGgrid_NX="1344" # Supergrid value 2704 + ESGgrid_NY="1152" # Supergrid value 2320 # Number of halo points for a wide grid (before trimming)...this should almost always be 6 for now # Within the model we actually have a 4-point halo and a 3-point halo - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" # Side note: FV3 is lagrangian and vertical coordinates are dynamically remapped during model integration # 'ksplit' is the factor that determines the timestep for this process (divided @@ -681,8 +681,8 @@ case ${PREDEF_GRID_NAME} in # Values taken from pre-generated files in /scratch4/NCEPDEV/fv3-cam/save/Benjamin.Blake/regional_workflow/fix/fix_sar/hi/C768_grid.tile7.nc # With move to Hera, those files were lost; a backup can be found here: /scratch2/BMC/det/kavulich/fix/fix_sar # Longitude and latitude for center of domain - ESGgrid_LON_CTR=-157.0 - ESGgrid_LAT_CTR=20.0 + ESGgrid_LON_CTR="-157.0" + ESGgrid_LAT_CTR="20.0" # Projected grid spacing in meters...in the static files (e.g. "C768_grid.tile7.nc"), the "dx" is actually the resolution # of the supergrid, which is HALF of this dx (plus or minus some grid stretch factor) @@ -691,12 +691,12 @@ case ${PREDEF_GRID_NAME} in # Number of x and y points for your domain (halo not included); # Divide "supergrid" values from /scratch2/BMC/det/kavulich/fix/fix_sar/hi/C768_grid.tile7.halo4.nc by 2 and subtract 8 to eliminate halo - ESGgrid_NX=432 # Supergrid value 880 - ESGgrid_NY=360 # Supergrid value 736 + ESGgrid_NX="432" # Supergrid value 880 + ESGgrid_NY="360" # Supergrid value 736 # Number of halo points for a wide grid (before trimming)...this should almost always be 6 for now # Within the model we actually have a 4-point halo and a 3-point halo - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" # Side note: FV3 is lagrangian and vertical coordinates are dynamically remapped during model integration # 'ksplit' is the factor that determines the timestep for this process (divided @@ -756,8 +756,8 @@ case ${PREDEF_GRID_NAME} in # Values taken from pre-generated files in /scratch4/NCEPDEV/fv3-cam/save/Benjamin.Blake/regional_workflow/fix/fix_sar/pr/C768_grid.tile7.nc # With move to Hera, those files were lost; a backup can be found here: /scratch2/BMC/det/kavulich/fix/fix_sar # Longitude and latitude for center of domain - ESGgrid_LON_CTR=-69.0 - ESGgrid_LAT_CTR=18.0 + ESGgrid_LON_CTR="-69.0" + ESGgrid_LAT_CTR="18.0" # Projected grid spacing in meters...in the static files (e.g. "C768_grid.tile7.nc"), the "dx" is actually the resolution # of the supergrid, which is HALF of this dx (plus or minus some grid stretch factor) @@ -766,12 +766,12 @@ case ${PREDEF_GRID_NAME} in # Number of x and y points for your domain (halo not included); # Divide "supergrid" values from /scratch2/BMC/det/kavulich/fix/fix_sar/pr/C768_grid.tile7.halo4.nc by 2 and subtract 8 to eliminate halo - ESGgrid_NX=576 # Supergrid value 1168 - ESGgrid_NY=432 # Supergrid value 880 + ESGgrid_NX="576" # Supergrid value 1168 + ESGgrid_NY="432" # Supergrid value 880 # Number of halo points for a wide grid (before trimming)...this should almost always be 6 for now # Within the model we actually have a 4-point halo and a 3-point halo - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" # Side note: FV3 is lagrangian and vertical coordinates are dynamically remapped during model integration # 'ksplit' is the factor that determines the timestep for this process (divided @@ -831,8 +831,8 @@ case ${PREDEF_GRID_NAME} in # Values taken from pre-generated files in /scratch4/NCEPDEV/fv3-cam/save/Benjamin.Blake/regional_workflow/fix/fix_sar/guam/C768_grid.tile7.nc # With move to Hera, those files were lost; a backup can be found here: /scratch2/BMC/det/kavulich/fix/fix_sar # Longitude and latitude for center of domain - ESGgrid_LON_CTR=146.0 - ESGgrid_LAT_CTR=15.0 + ESGgrid_LON_CTR="146.0" + ESGgrid_LAT_CTR="15.0" # Projected grid spacing in meters...in the static files (e.g. "C768_grid.tile7.nc"), the "dx" is actually the resolution # of the supergrid, which is HALF of this dx (plus or minus some grid stretch factor) @@ -841,12 +841,12 @@ case ${PREDEF_GRID_NAME} in # Number of x and y points for your domain (halo not included); # Divide "supergrid" values from /scratch2/BMC/det/kavulich/fix/fix_sar/guam/C768_grid.tile7.halo4.nc by 2 and subtract 8 to eliminate halo - ESGgrid_NX=432 # Supergrid value 880 - ESGgrid_NY=360 # Supergrid value 736 + ESGgrid_NX="432" # Supergrid value 880 + ESGgrid_NY="360" # Supergrid value 736 # Number of halo points for a wide grid (before trimming)...this should almost always be 6 for now # Within the model we actually have a 4-point halo and a 3-point halo - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" # Side note: FV3 is lagrangian and vertical coordinates are dynamically remapped during model integration # 'ksplit' is the factor that determines the timestep for this process (divided @@ -902,16 +902,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-62.0 - ESGgrid_LAT_CTR=22.0 + ESGgrid_LON_CTR="-62.0" + ESGgrid_LAT_CTR="22.0" ESGgrid_DELX="25000.0" ESGgrid_DELY="25000.0" - ESGgrid_NX=345 - ESGgrid_NY=230 + ESGgrid_NX="345" + ESGgrid_NY="230" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-300}" @@ -944,16 +944,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-62.0 - ESGgrid_LAT_CTR=22.0 + ESGgrid_LON_CTR="-62.0" + ESGgrid_LAT_CTR="22.0" ESGgrid_DELX="13000.0" ESGgrid_DELY="13000.0" - ESGgrid_NX=665 - ESGgrid_NY=444 + ESGgrid_NX="665" + ESGgrid_NY="444" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-180}" @@ -986,16 +986,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-62.0 - ESGgrid_LAT_CTR=22.0 + ESGgrid_LON_CTR="-62.0" + ESGgrid_LAT_CTR="22.0" ESGgrid_DELX="3000.0" ESGgrid_DELY="3000.0" - ESGgrid_NX=2880 - ESGgrid_NY=1920 + ESGgrid_NX="2880" + ESGgrid_NY="1920" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-40}" @@ -1028,16 +1028,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-163.5 - ESGgrid_LAT_CTR=62.8 + ESGgrid_LON_CTR="-163.5" + ESGgrid_LAT_CTR="62.8" ESGgrid_DELX="50000.0" ESGgrid_DELY="50000.0" - ESGgrid_NX=74 - ESGgrid_NY=51 + ESGgrid_NX="74" + ESGgrid_NY="51" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-600}" @@ -1072,22 +1072,22 @@ case ${PREDEF_GRID_NAME} in # if [ "${GRID_GEN_METHOD}" = "GFDLgrid" ]; then # -# GFDLgrid_LON_T6_CTR=-106.0 -# GFDLgrid_LAT_T6_CTR=54.0 -# GFDLgrid_STRETCH_FAC=0.63 +# GFDLgrid_LON_T6_CTR="-106.0" +# GFDLgrid_LAT_T6_CTR="54.0" +# GFDLgrid_STRETCH_FAC="0.63" # GFDLgrid_RES="384" -# GFDLgrid_REFINE_RATIO=3 +# GFDLgrid_REFINE_RATIO="3" # -# num_margin_cells_T6_left=10 +# num_margin_cells_T6_left="10" # GFDLgrid_ISTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_left + 1 )) # -# num_margin_cells_T6_right=10 +# num_margin_cells_T6_right="10" # GFDLgrid_IEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_right )) # -# num_margin_cells_T6_bottom=10 +# num_margin_cells_T6_bottom="10" # GFDLgrid_JSTART_OF_RGNL_DOM_ON_T6G=$(( num_margin_cells_T6_bottom + 1 )) # -# num_margin_cells_T6_top=10 +# num_margin_cells_T6_top="10" # GFDLgrid_JEND_OF_RGNL_DOM_ON_T6G=$(( GFDLgrid_RES - num_margin_cells_T6_top )) # # GFDLgrid_USE_GFDLgrid_RES_IN_FILENAMES="FALSE" @@ -1116,16 +1116,16 @@ case ${PREDEF_GRID_NAME} in GRID_GEN_METHOD="ESGgrid" - ESGgrid_LON_CTR=-106.0 - ESGgrid_LAT_CTR=54.0 + ESGgrid_LON_CTR="-106.0" + ESGgrid_LAT_CTR="54.0" ESGgrid_DELX="13000.0" ESGgrid_DELY="13000.0" - ESGgrid_NX=960 - ESGgrid_NY=960 + ESGgrid_NX="960" + ESGgrid_NY="960" - ESGgrid_WIDE_HALO_WIDTH=6 + ESGgrid_WIDE_HALO_WIDTH="6" DT_ATMOS="${DT_ATMOS:-50}" diff --git a/ush/setup.sh b/ush/setup.sh index dcd2a4fe01..4a6d0b3335 100755 --- a/ush/setup.sh +++ b/ush/setup.sh @@ -928,6 +928,54 @@ fi # #----------------------------------------------------------------------- # +# Check to make sure that various computational parameters needed by the +# forecast model are set to non-empty values. At this point in the +# experiment generation, all of these should be set to valid (non-empty) +# values. +# +#----------------------------------------------------------------------- +# +if [ -z "${DT_ATMOS}" ]; then + print_err_msg_exit "\ +The forecast model main time step (DT_ATMOS) is set to a null string: + DT_ATMOS = ${DT_ATMOS} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi + +if [ -z "${LAYOUT_X}" ]; then + print_err_msg_exit "\ +The number of MPI processes to be used in the x direction (LAYOUT_X) by +the forecast job is set to a null string: + LAYOUT_X = ${LAYOUT_X} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi + +if [ -z "${LAYOUT_Y}" ]; then + print_err_msg_exit "\ +The number of MPI processes to be used in the y direction (LAYOUT_Y) by +the forecast job is set to a null string: + LAYOUT_Y = ${LAYOUT_Y} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi + +if [ -z "${BLOCKSIZE}" ]; then + print_err_msg_exit "\ +The cache size to use for each MPI task of the forecast (BLOCKSIZE) is +set to a null string: + BLOCKSIZE = ${BLOCKSIZE} +Please set this to a valid numerical value in the user-specified experiment +configuration file (EXPT_CONFIG_FP) and rerun: + EXPT_CONFIG_FP = \"${EXPT_CONFIG_FP}\"" +fi +# +#----------------------------------------------------------------------- +# # If the base directory (EXPT_BASEDIR) in which the experiment subdirectory # (EXPT_SUBDIR) will be located does not start with a "/", then it is # either set to a null string or contains a relative directory. In both