From 2a72f76522dbe03f0f35fd42766518fa1bf05d43 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Mon, 30 Oct 2023 21:32:16 -0500 Subject: [PATCH 01/17] Enable different coupled settings for ensemble Preliminarily adds the ability to turn off some coupled components for the ensemble. To enable this, many settings are moved out of `config.fcst` and into `config.ufs` so they are calculated after any overrides of `DO_*` have been made. Some settings also had to be moved out of `config.base` for the same reason. The name of the nems configure template used is converted from a partial file name to the full file name. In anticipation of #1942, the filename is assigned to a variable named `ufs_configure_template`, though otherwise 'nems' is still used for filenames, etc. Refs #1692 --- parm/config/gfs/config.base.emc.dyn | 11 ---- parm/config/gfs/config.fcst | 56 -------------------- parm/config/gfs/config.ufs | 81 ++++++++++++++++++++++++++++- ush/nems_configure.sh | 4 +- 4 files changed, 81 insertions(+), 71 deletions(-) diff --git a/parm/config/gfs/config.base.emc.dyn b/parm/config/gfs/config.base.emc.dyn index fdf5bc25c1..adfa0257ab 100644 --- a/parm/config/gfs/config.base.emc.dyn +++ b/parm/config/gfs/config.base.emc.dyn @@ -151,10 +151,8 @@ export DO_WAVE="NO" export DO_OCN="NO" export DO_ICE="NO" export DO_AERO="NO" -export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1" export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both export DOBNDPNT_WAVE="NO" -export cplwav2atm=".false." export FRAC_GRID=".true." # Set operational resolution @@ -196,17 +194,14 @@ export ICERES=${OCNRES} case "${APP}" in ATM) - export confignamevarfornems="atm" ;; ATMA) export DO_AERO="YES" - export confignamevarfornems="atm_aero" ;; ATMW) export DO_COUPLED="YES" export DO_WAVE="YES" export WAVE_CDUMP="both" - export confignamevarfornems="leapfrog_atm_wav" ;; NG-GODAS) export DO_ATM="NO" @@ -217,21 +212,15 @@ case "${APP}" in export DO_COUPLED="YES" export DO_OCN="YES" export DO_ICE="YES" - export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8 on L149 - export confignamevarfornems="cpld" if [[ "${APP}" =~ A$ ]]; then export DO_AERO="YES" - export confignamevarfornems="${confignamevarfornems}_aero" fi if [[ "${APP}" =~ ^S2SW ]]; then export DO_WAVE="YES" export WAVE_CDUMP="both" - export cplwav2atm=".true." - export confignamevarfornems="${confignamevarfornems}_outerwave" fi - ;; *) echo "Unrecognized APP: '${APP}'" diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index 7a3c1b3b30..ee81442430 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -20,13 +20,6 @@ string="--fv3 ${CASE}" # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} -# Source component configs if necessary -for component in WAVE OCN ICE AERO; do - control="DO_${component}" - if [[ ${!control} == "YES" ]]; then - source "${EXPDIR}/config.${component,,}" - fi -done # Get task specific resources source "${EXPDIR}/config.resources" fcst @@ -41,35 +34,6 @@ export esmf_profile=".false." export esmf_logkind="ESMF_LOGKIND_MULTI_ON_ERROR" #Options: ESMF_LOGKIND_MULTI_ON_ERROR, ESMF_LOGKIND_MULTI, ESMF_LOGKIND_NONE -####################################################################### -# COUPLING COMPONENTS - -# cpl defaults -export cpl=".false." -export cplflx=".false." -export cplice=".false." -export cplchm=".false." -export cplwav=".false." - -# cpl changes based on APP - -if [[ "${DO_COUPLED}" == "YES" ]]; then - export cpl=".true." -fi -if [[ "${DO_AERO}" == "YES" ]]; then - export cplchm=".true." -fi -if [[ "${DO_ICE}" == "YES" ]]; then - export cplice=".true." - export cplflx=".true." -fi -if [[ "${DO_OCN}" == "YES" ]]; then - export cplflx=".true." -fi -if [[ "${DO_WAVE}" == "YES" ]]; then - export cplwav=".true." -fi - ####################################################################### export FORECASTSH="${HOMEgfs}/scripts/exglobal_forecast.sh" @@ -285,16 +249,12 @@ if [[ "${CDUMP}" =~ "gdas" ]] ; then # GDAS cycle specific parameters # Variables used in DA cycling export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table_da" - if [[ "${DOIAU}" == "YES" ]]; then export restart_interval="3" else export restart_interval="6" fi - # Choose coupling with wave - if [[ "${DO_WAVE}" == "YES" ]]; then export cplwav=".true." ; fi - # Turn on dry mass adjustment in GDAS export adjust_dry_mass=".true." @@ -306,11 +266,6 @@ elif [[ "${CDUMP}" =~ "gfs" ]] ; then # GFS cycle specific parameters # Write gfs restart files to rerun fcst from any break point export restart_interval=${restart_interval_gfs:-12} - # Choose coupling with wave - if [[ "${DO_WAVE}" = "YES" && "${WAVE_CDUMP}" != "gdas" ]]; then - export cplwav=".true." - fi - # Turn off dry mass adjustment in GFS export adjust_dry_mass=".false." @@ -323,17 +278,6 @@ elif [[ "${CDUMP}" =~ "gfs" ]] ; then # GFS cycle specific parameters fi -if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling - export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" - export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" - AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" - export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} - export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" - export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" - export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" - export dnats_aero="${aero_diag_tracers:-0}" -fi - # Remember config.efcs will over-ride these values for ensemble forecasts # if these variables are re-defined there. # Otherwise, the ensemble forecast will inherit from config.fcst diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index e499d90fdd..cdf9f797a1 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -8,7 +8,7 @@ echo "BEGIN: config.ufs" -if [ $# -le 1 ]; then +if (( $# <= 1 )); then echo "Must specify an input resolution argument to set variables!" echo "argument can be any one of the following:" @@ -28,7 +28,7 @@ skip_ww3=true skip_mediator=true # Loop through named arguments -while [[ $# -gt 0 ]]; do +while (( $# > 0 )); do key="$1" case "${key}" in "--fv3") @@ -60,6 +60,14 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi +# Source component configs if necessary +for component in WAVE OCN ICE AERO; do + control="DO_${component}" + if [[ ${!control} == "YES" ]]; then + source "${EXPDIR}/config.${component,,}" + fi +done + case "${machine}" in "WCOSS2") npe_node_max=128 @@ -98,6 +106,10 @@ case "${machine}" in ;; esac ;; + *) + echo "FATAL ERROR: Unrecognized machine ${machine}" + exit 14 + ;; esac export npe_node_max @@ -246,16 +258,34 @@ case ${fv3_res} in OUTPUT_FILETYPE_ATM="netcdf_parallel" OUTPUT_FILETYPE_SFC="netcdf_parallel" ;; + *) + echo "FATAL ERROR: Unrecognized FV3 resolution ${fv3_res}" + exit 15 + ;; esac export OUTPUT_FILETYPE_ATM OUTPUT_FILETYPE_SFC +# cpl defaults +export cpl=".false." +export cplflx=".false." +export cplice=".false." +export cplchm=".false." +export cplwav=".false." +export cplwav2atm=".false." +export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1" +model_list="atm" + # Mediator specific settings if [[ "${skip_mediator}" == "false" ]]; then + export cpl=".true." export nthreads_mediator=${nthreads_fv3} # Use same threads as FV3 + export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8? fi # MOM6 specific settings if [[ "${skip_mom6}" == "false" ]]; then + export cplflx=".true." + model_list="${model_list}.ocean" nthreads_mom6=1 case "${mom6_res}" in "500") @@ -364,11 +394,14 @@ fi # CICE6 specific settings if [[ "${skip_cice6}" == "false" ]]; then + model_list="${model_list}.ice" # Ensure we sourced the MOM6 section if [[ "${skip_mom6}" == "true" ]]; then echo "FATAL ERROR: CICE6 cannot be configured without MOM6, ABORT!" exit 1 fi + + export cplice=".true." nthreads_cice6=${nthreads_mom6} # CICE6 needs to run on same threads as MOM6 case "${cice6_res}" in "500") @@ -400,6 +433,9 @@ fi # WW3 specific settings if [[ "${skip_ww3}" == "false" ]]; then + export cplwav=".true." + export cplwav2atm=".true." + model_list="${model_list}.wave" nthreads_ww3=2 case "${ww3_res}" in "gnh_10m;aoc_9km;gsh_15m") @@ -430,4 +466,45 @@ if [[ "${skip_ww3}" == "false" ]]; then export ntasks_ww3 nthreads_ww3 fi +# GOCART specific settings +if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling + export cplchm=".true." + + model_list="${model_list}.aero" + export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" + export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" + AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" + export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} + export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" + export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" + export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" + export dnats_aero="${aero_diag_tracers:-0}" +fi + +# Set the name of the UFS (previously nems) configure template to use +case "${model_list}" in + atm) + export ufs_configure_template="nems.configure.atm.IN" + ;; + atm.aero) + export ufs_configure_template="nems.configure.atm_aero.IN" + ;; + atm.wave) + export ufs_configure_template="nems.configure.leapfrog_atm_wav.IN" + ;; + atm.ocean.ice) + export ufs_configure_template="nems.configure.cpld.IN" + ;; + atm.ocean.ice.aero) + export ufs_configure_template="nems.configure.cpld_aero.IN" + ;; + atm.ocean.ice.wave.aero) + export ufs_configure_template="nems.configure.cpld_aero_outerwave.IN" + ;; + *) + echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + exit 16 + ;; +esac + echo "END: config.ufs" diff --git a/ush/nems_configure.sh b/ush/nems_configure.sh index 28c6713dd8..0af3645e34 100755 --- a/ush/nems_configure.sh +++ b/ush/nems_configure.sh @@ -89,7 +89,7 @@ if [[ "${cplchm}" = ".true." ]]; then fi # Ensure the template exists -template="${HOMEgfs}/parm/ufs/nems.configure.${confignamevarfornems}.IN" +template="${HOMEgfs}/parm/ufs/${ufs_configure_template}" if [[ ! -f ${template} ]]; then echo "FATAL ERROR: template '${template}' does not exist, ABORT!" exit 1 @@ -103,6 +103,6 @@ cat nems.configure ${NCP} "${HOMEgfs}/sorc/ufs_model.fd/tests/parm/fd_nems.yaml" fd_nems.yaml -echo "SUB ${FUNCNAME[0]}: nems.configure.sh ends for ${confignamevarfornems}" +echo "SUB ${FUNCNAME[0]}: nems.configure.sh ends for ${ufs_configure_template}" } From 938c72b92af07cc5bfd7ff31bad2308b8acc306b Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Mon, 6 Nov 2023 12:36:18 -0600 Subject: [PATCH 02/17] Mirror config changes for ensemble flexibility to GEFS Copies the changes made to accomodate different coupling for ensemble to the GEFS configs. Refs #1692 --- parm/config/gefs/config.base.emc.dyn | 9 ---- parm/config/gefs/config.fcst | 52 ----------------------- parm/config/gefs/config.ufs | 63 +++++++++++++++++++++++++++- parm/config/gfs/config.ufs | 2 +- 4 files changed, 62 insertions(+), 64 deletions(-) diff --git a/parm/config/gefs/config.base.emc.dyn b/parm/config/gefs/config.base.emc.dyn index 12a8422ea2..b9e640d732 100644 --- a/parm/config/gefs/config.base.emc.dyn +++ b/parm/config/gefs/config.base.emc.dyn @@ -138,10 +138,8 @@ export DO_WAVE="NO" export DO_OCN="NO" export DO_ICE="NO" export DO_AERO="NO" -export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1" export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both export DOBNDPNT_WAVE="NO" -export cplwav2atm=".false." export FRAC_GRID=".true." # Set operational resolution @@ -183,17 +181,14 @@ export ICERES=${OCNRES} case "${APP}" in ATM) - export confignamevarfornems="atm" ;; ATMA) export DO_AERO="YES" - export confignamevarfornems="atm_aero" ;; ATMW) export DO_COUPLED="YES" export DO_WAVE="YES" export WAVE_CDUMP="both" - export confignamevarfornems="leapfrog_atm_wav" ;; NG-GODAS) export DO_ATM="NO" @@ -204,19 +199,15 @@ case "${APP}" in export DO_COUPLED="YES" export DO_OCN="YES" export DO_ICE="YES" - export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8 on L141 - export confignamevarfornems="cpld" if [[ "${APP}" =~ A$ ]]; then export DO_AERO="YES" - export confignamevarfornems="${confignamevarfornems}_aero" fi if [[ "${APP}" =~ ^S2SW ]]; then export DO_WAVE="YES" export WAVE_CDUMP="both" export cplwav2atm=".true." - export confignamevarfornems="${confignamevarfornems}_outerwave" fi ;; *) diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index 4d43c38b82..d3a6e42751 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -20,13 +20,6 @@ string="--fv3 ${CASE}" # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} -# Source component configs if necessary -for component in WAVE OCN ICE AERO; do - control="DO_${component}" - if [[ ${!control} == "YES" ]]; then - source "${EXPDIR}/config.${component,,}" - fi -done # Get task specific resources source "${EXPDIR}/config.resources" fcst @@ -41,35 +34,6 @@ export esmf_profile=".false." export esmf_logkind="ESMF_LOGKIND_MULTI_ON_ERROR" #Options: ESMF_LOGKIND_MULTI_ON_ERROR, ESMF_LOGKIND_MULTI, ESMF_LOGKIND_NONE -####################################################################### -# COUPLING COMPONENTS - -# cpl defaults -export cpl=".false." -export cplflx=".false." -export cplice=".false." -export cplchm=".false." -export cplwav=".false." - -# cpl changes based on APP - -if [[ "${DO_COUPLED}" == "YES" ]]; then - export cpl=".true." -fi -if [[ "${DO_AERO}" == "YES" ]]; then - export cplchm=".true." -fi -if [[ "${DO_ICE}" == "YES" ]]; then - export cplice=".true." - export cplflx=".true." -fi -if [[ "${DO_OCN}" == "YES" ]]; then - export cplflx=".true." -fi -if [[ "${DO_WAVE}" == "YES" ]]; then - export cplwav=".true." -fi - ####################################################################### export FORECASTSH="${HOMEgfs}/scripts/exglobal_forecast.sh" @@ -286,11 +250,6 @@ export DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table" # Write gfs restart files to rerun fcst from any break point export restart_interval=${restart_interval_gfs:-12} -# Choose coupling with wave -if [[ "${DO_WAVE}" = "YES" ]]; then - export cplwav=".true." -fi - # Turn off dry mass adjustment in GFS export adjust_dry_mass=".false." @@ -301,17 +260,6 @@ else export io_layout="1,1" fi -if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling - export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" - export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" - AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" - export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} - export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" - export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" - export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" - export dnats_aero="${aero_diag_tracers:-0}" -fi - # Remember config.efcs will over-ride these values for ensemble forecasts # if these variables are re-defined there. # Otherwise, the ensemble forecast will inherit from config.fcst diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 8418459cc3..4cf6fda57d 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -8,7 +8,7 @@ echo "BEGIN: config.ufs" -if [ $# -le 1 ]; then +if (( $# <- 1 )); then echo "Must specify an input resolution argument to set variables!" echo "argument can be any one of the following:" @@ -28,7 +28,7 @@ skip_ww3=true skip_mediator=true # Loop through named arguments -while [[ $# -gt 0 ]]; do +while (( $# > 0 )); do key="$1" case "${key}" in "--fv3") @@ -60,6 +60,14 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi +# Source component configs if necessary +for component in WAVE OCN ICE AERO; do + control="DO_${component}" + if [[ ${!control} == "YES" ]]; then + source "${EXPDIR}/config.${component,,}" + fi +done + case "${machine}" in "WCOSS2") npe_node_max=128 @@ -98,6 +106,10 @@ case "${machine}" in ;; esac ;; + *) + echo "FATAL ERROR: Unrecognized machine ${machine}" + exit 14 + ;; esac export npe_node_max @@ -251,11 +263,15 @@ export OUTPUT_FILETYPE_ATM OUTPUT_FILETYPE_SFC # Mediator specific settings if [[ "${skip_mediator}" == "false" ]]; then + export cpl=".true." export nthreads_mediator=${nthreads_fv3} # Use same threads as FV3 + export CCPP_SUITE="FV3_GFS_v17_coupled_p8_ugwpv1" # TODO: Does this include FV3_GFS_v17_p8? Can this be used instead of FV3_GFS_v17_p8? fi # MOM6 specific settings if [[ "${skip_mom6}" == "false" ]]; then + export cplflx=".true." + model_list="${model_list}.ocean" nthreads_mom6=1 case "${mom6_res}" in "500") @@ -362,6 +378,8 @@ fi # CICE6 specific settings if [[ "${skip_cice6}" == "false" ]]; then + export cplice=".true." + model_list="${model_list}.ice" # Ensure we sourced the MOM6 section if [[ "${skip_mom6}" == "true" ]]; then echo "FATAL ERROR: CICE6 cannot be configured without MOM6, ABORT!" @@ -398,6 +416,9 @@ fi # WW3 specific settings if [[ "${skip_ww3}" == "false" ]]; then + export cplwav=".true." + export cplwav2atm=".true." + model_list="${model_list}.wave" nthreads_ww3=2 case "${ww3_res}" in "gnh_10m;aoc_9km;gsh_15m") @@ -428,4 +449,42 @@ if [[ "${skip_ww3}" == "false" ]]; then export ntasks_ww3 nthreads_ww3 fi +# GOCART specific settings +if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling + export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" + export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" + AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" + export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} + export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" + export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" + export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" + export dnats_aero="${aero_diag_tracers:-0}" +fi + +# Set the name of the UFS (previously nems) configure template to use +case "${model_list}" in + atm) + export ufs_configure_template="nems.configure.atm.IN" + ;; + atm.aero) + export ufs_configure_template="nems.configure.atm_aero.IN" + ;; + atm.wave) + export ufs_configure_template="nems.configure.leapfrog_atm_wav.IN" + ;; + atm.ocean.ice) + export ufs_configure_template="nems.configure.cpld.IN" + ;; + atm.ocean.ice.aero) + export ufs_configure_template="nems.configure.cpld_aero.IN" + ;; + atm.ocean.ice.wave.aero) + export ufs_configure_template="nems.configure.cpld_aero_outerwave.IN" + ;; + *) + echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" + exit 16 + ;; +esac + echo "END: config.ufs" diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index cdf9f797a1..29b421860a 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -394,6 +394,7 @@ fi # CICE6 specific settings if [[ "${skip_cice6}" == "false" ]]; then + export cplice=".true." model_list="${model_list}.ice" # Ensure we sourced the MOM6 section if [[ "${skip_mom6}" == "true" ]]; then @@ -401,7 +402,6 @@ if [[ "${skip_cice6}" == "false" ]]; then exit 1 fi - export cplice=".true." nthreads_cice6=${nthreads_mom6} # CICE6 needs to run on same threads as MOM6 case "${cice6_res}" in "500") From 6a25c99b537b3b4436b442e5b8323238fb88c5b0 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Mon, 6 Nov 2023 12:43:10 -0600 Subject: [PATCH 03/17] Replace nems cpl validation Removes the old cpl validation script since the nemsconfigure string is no longer used and replaces it with a check whether the specified template file is readable. Refs #1692 --- parm/config/gefs/config.ufs | 5 +++++ parm/config/gfs/config.ufs | 5 +++++ scripts/exglobal_forecast.sh | 8 -------- ush/cplvalidate.sh | 39 ------------------------------------ 4 files changed, 10 insertions(+), 47 deletions(-) delete mode 100755 ush/cplvalidate.sh diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 4cf6fda57d..9c392465ca 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -487,4 +487,9 @@ case "${model_list}" in ;; esac +if [[ ! -r ${ufs_configure_template} ]]; then + echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." + exit 17 +fi + echo "END: config.ufs" diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 29b421860a..3aab9cff82 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -507,4 +507,9 @@ case "${model_list}" in ;; esac +if [[ ! -r ${ufs_configure_template} ]]; then + echo "FATAL ERROR: ${ufs_configure_template} either doesn't exist or is not readable." + exit 17 +fi + echo "END: config.ufs" diff --git a/scripts/exglobal_forecast.sh b/scripts/exglobal_forecast.sh index 86cea85dee..ff0e159dec 100755 --- a/scripts/exglobal_forecast.sh +++ b/scripts/exglobal_forecast.sh @@ -80,16 +80,12 @@ source "${HOMEgfs}/ush/preamble.sh" # include all subroutines. Executions later. -source "${HOMEgfs}/ush/cplvalidate.sh" # validation of cpl* source "${HOMEgfs}/ush/forecast_predet.sh" # include functions for variable definition source "${HOMEgfs}/ush/forecast_det.sh" # include functions for run type determination source "${HOMEgfs}/ush/forecast_postdet.sh" # include functions for variables after run type determination source "${HOMEgfs}/ush/nems_configure.sh" # include functions for nems_configure processing source "${HOMEgfs}/ush/parsing_model_configure_FV3.sh" -# Compset string. For nems.configure.* template selection. Default ATM only -confignamevarfornems=${confignamevarfornems:-'atm'} - # Coupling control switches, for coupling purpose, off by default cpl=${cpl:-.false.} cplflx=${cplflx:-.false.} # default off,import from outside source @@ -104,10 +100,6 @@ ICETIM=${DELTIM} CPL_SLOW=${CPL_SLOW:-${OCNTIM}} CPL_FAST=${CPL_FAST:-${ICETIM}} -echo "MAIN: Validating '${confignamevarfornems}' with cpl switches" -cplvalidate -echo "MAIN: '${confignamevarfornems}' validated, continue" - echo "MAIN: Loading common variables before determination of run type" common_predet diff --git a/ush/cplvalidate.sh b/ush/cplvalidate.sh deleted file mode 100755 index 168bd0ff53..0000000000 --- a/ush/cplvalidate.sh +++ /dev/null @@ -1,39 +0,0 @@ -#! /usr/bin/env bash - -##### -## This script validates $confignamevarfornems -## against cpl** switches to check consistency -## -## This is a child script of modular -## forecast script. This script is a direct execution -##### - -cplvalidate(){ -echo "SUB cplvalidate: validating cpl** switches for ${confignamevarfornems}" -return # TODO: Why are we returning right here? -case ${confignamevarfornems} in - 'atm') combination=.false..false..false..false..false.;; - 'datm') combination=.true..true..false..false..false.;; - 'atm_aero') combination=.true..false..false..false..true.;; - 'med_atm_ocn_ice') combination=.true..true..true..false..false.;; - 'cpld') combination=.true..true..true..false..false.;; - 'blocked_atm_wav') combination=.true..false..false..true..false.;; - 'leapfrog_atm_wav')combination=.true..false..false..true..false.;; - 'med_atm_ocn_ice_wav') combination=.true..true..true..true..false.;; - 'cpld_wave') combination=.true..true..true..true..false.;; - 'cpld_aero_wave') combination=.true..true..true..true..true.;; - 'medcold_atm_ocn_ice_wav') combination=.true..true..true..true..false.;; - 'med_atm_ocn_ice_wav1way') combination=.true..true..true..true..false.;; - 'med_atm_ocn_ice_wav1waywcurr') combination=.true..true..true..true..false.;; - 'medcold_atm_ocn_ice') combination=.true..true..true..false..false.;; - *) echo "SUB cplvalidate: Combination not supported" - exit 1 ;; -esac -control="${cpl}${cplflx}${cplice}${cplwav}${cplchm}" -if [[ "${control}" != "${combination}" ]]; then - echo "SUB cplvalidate: inconsistent cpl setting!" - exit 2 -else - echo "SUB cplvalidate: cpl settings validated!" -fi -} From 8e5fb587eb13d140ac45a17fe27724dc49b571df Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Mon, 6 Nov 2023 14:19:33 -0600 Subject: [PATCH 04/17] Fix missing defaults for GEFS --- parm/config/gefs/config.ufs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 9c392465ca..33b270dc2e 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -261,6 +261,16 @@ case ${fv3_res} in esac export OUTPUT_FILETYPE_ATM OUTPUT_FILETYPE_SFC +# cpl defaults +export cpl=".false." +export cplflx=".false." +export cplice=".false." +export cplchm=".false." +export cplwav=".false." +export cplwav2atm=".false." +export CCPP_SUITE="FV3_GFS_v17_p8_ugwpv1" +model_list="atm" + # Mediator specific settings if [[ "${skip_mediator}" == "false" ]]; then export cpl=".true." From fa879b86336feaa8040859b3ffeef0fa2f0c3b87 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Mon, 6 Nov 2023 14:40:54 -0600 Subject: [PATCH 05/17] Fix checking of nems configure template --- parm/config/gefs/config.ufs | 12 ++++++------ parm/config/gfs/config.ufs | 12 ++++++------ ush/nems_configure.sh | 7 +++---- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 33b270dc2e..5341134d0b 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -474,22 +474,22 @@ fi # Set the name of the UFS (previously nems) configure template to use case "${model_list}" in atm) - export ufs_configure_template="nems.configure.atm.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.atm.IN" ;; atm.aero) - export ufs_configure_template="nems.configure.atm_aero.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.atm_aero.IN" ;; atm.wave) - export ufs_configure_template="nems.configure.leapfrog_atm_wav.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.leapfrog_atm_wav.IN" ;; atm.ocean.ice) - export ufs_configure_template="nems.configure.cpld.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="nems.configure.cpld_aero.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="nems.configure.cpld_aero_outerwave.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero_outerwave.IN" ;; *) echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 3aab9cff82..0edf4563c2 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -484,22 +484,22 @@ fi # Set the name of the UFS (previously nems) configure template to use case "${model_list}" in atm) - export ufs_configure_template="nems.configure.atm.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.atm.IN" ;; atm.aero) - export ufs_configure_template="nems.configure.atm_aero.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.atm_aero.IN" ;; atm.wave) - export ufs_configure_template="nems.configure.leapfrog_atm_wav.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.leapfrog_atm_wav.IN" ;; atm.ocean.ice) - export ufs_configure_template="nems.configure.cpld.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld.IN" ;; atm.ocean.ice.aero) - export ufs_configure_template="nems.configure.cpld_aero.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero.IN" ;; atm.ocean.ice.wave.aero) - export ufs_configure_template="nems.configure.cpld_aero_outerwave.IN" + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero_outerwave.IN" ;; *) echo "FATAL ERROR: Unable to determine appropriate UFS configure template for ${model_list}" diff --git a/ush/nems_configure.sh b/ush/nems_configure.sh index 0af3645e34..e78abf5ca4 100755 --- a/ush/nems_configure.sh +++ b/ush/nems_configure.sh @@ -89,15 +89,14 @@ if [[ "${cplchm}" = ".true." ]]; then fi # Ensure the template exists -template="${HOMEgfs}/parm/ufs/${ufs_configure_template}" -if [[ ! -f ${template} ]]; then - echo "FATAL ERROR: template '${template}' does not exist, ABORT!" +if [[ ! -r "${ufs_configure_template}" ]]; then + echo "FATAL ERROR: template '${ufs_configure_template}' does not exist, ABORT!" exit 1 fi source "${HOMEgfs}/ush/atparse.bash" rm -f "${DATA}/nems.configure" -atparse < "${template}" >> "${DATA}/nems.configure" +atparse < "${ufs_configure_template}" >> "${DATA}/nems.configure" echo "Rendered nems.configure:" cat nems.configure From 2ec36635c388df1eb2cf59b33a2549817b947bd6 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Wed, 15 Nov 2023 16:31:01 -0600 Subject: [PATCH 06/17] Move aerosol overrides to config.aero --- parm/config/gefs/config.ufs | 10 ++-------- parm/config/gfs/config.aero | 11 +++++++++-- parm/config/gfs/config.ufs | 11 +---------- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 5341134d0b..82b8ff5f5e 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -461,14 +461,8 @@ fi # GOCART specific settings if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling - export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" - export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" - AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" - export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} - export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" - export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" - export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" - export dnats_aero="${aero_diag_tracers:-0}" + export cplchm=".true." + model_list="${model_list}.aero" fi # Set the name of the UFS (previously nems) configure template to use diff --git a/parm/config/gfs/config.aero b/parm/config/gfs/config.aero index fbd2d86ac8..8fcd9beff0 100644 --- a/parm/config/gfs/config.aero +++ b/parm/config/gfs/config.aero @@ -34,10 +34,17 @@ esac # Biomass burning emission dataset. Choose from: GBBEPx, QFED, NONE (default) AERO_EMIS_FIRE=QFED +export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" +export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" +AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" +export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} +export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" +export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" + # Aerosol convective scavenging factors (list of string array elements) # Element syntax: ':'. Use = * to set default factor for all aerosol tracers # Scavenging factors are set to 0 (no scavenging) if unset -aero_conv_scav_factors="'*:0.3','so2:0.0','msa:0.0','dms:0.0','nh3:0.4','nh4:0.6','bc1:0.6','bc2:0.6','oc1:0.4','oc2:0.4','dust1:0.6','dust2:0.6', 'dust3:0.6','dust4:0.6','dust5:0.6','seas1:0.5','seas2:0.5','seas3:0.5','seas4:0.5','seas5:0.5'" +fscav_aero="'*:0.3','so2:0.0','msa:0.0','dms:0.0','nh3:0.4','nh4:0.6','bc1:0.6','bc2:0.6','oc1:0.4','oc2:0.4','dust1:0.6','dust2:0.6', 'dust3:0.6','dust4:0.6','dust5:0.6','seas1:0.5','seas2:0.5','seas3:0.5','seas4:0.5','seas5:0.5'" # # Number of diagnostic aerosol tracers (default: 0) -aero_diag_tracers=2 +dnats_aero=2 diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 0edf4563c2..8839e3e356 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -469,16 +469,7 @@ fi # GOCART specific settings if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling export cplchm=".true." - - model_list="${model_list}.aero" - export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" - export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" - AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" - export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} - export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" - export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" - export fscav_aero="${aero_conv_scav_factors:-${fscav_aero}}" - export dnats_aero="${aero_diag_tracers:-0}" + model_list="${model_list}.aero" fi # Set the name of the UFS (previously nems) configure template to use From 1f626e0de1a88378597e578bef8c26d25d88d688 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Thu, 16 Nov 2023 00:36:58 -0600 Subject: [PATCH 07/17] Add missing coupled configuration When creating the new cases to determine the nems configure template, one was missed. --- parm/config/gefs/config.ufs | 3 +++ parm/config/gfs/config.ufs | 3 +++ 2 files changed, 6 insertions(+) diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 82b8ff5f5e..e2b26a6fc8 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -482,6 +482,9 @@ case "${model_list}" in atm.ocean.ice.aero) export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero.IN" ;; + atm.ocean.ice.wave) + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_outerwave.IN" + ;; atm.ocean.ice.wave.aero) export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero_outerwave.IN" ;; diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 8839e3e356..38e0ac58fc 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -489,6 +489,9 @@ case "${model_list}" in atm.ocean.ice.aero) export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero.IN" ;; + atm.ocean.ice.wave) + export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_outerwave.IN" + ;; atm.ocean.ice.wave.aero) export ufs_configure_template="${HOMEgfs}/parm/ufs/nems.configure.cpld_aero_outerwave.IN" ;; From 438881cd79d748191bd45b384a430896c63b4da5 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Thu, 16 Nov 2023 02:01:27 -0600 Subject: [PATCH 08/17] Add missing default for dnats_aero --- ush/parsing_namelists_FV3.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index da51966645..4435fcffa2 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -54,7 +54,7 @@ if [[ -n "${AERO_FIELD_TABLE:-}" ]]; then tail -n $(( nrec - prec )) "${FIELD_TABLE}" ; \ } > field_table # add non-prognostic tracers from additional table - dnats=$(( dnats + dnats_aero )) + dnats=$(( dnats + ${dnats_aero:0} )) else ${NCP} "${FIELD_TABLE}" field_table fi From 322dd281d4e85bf7bc878be92acc34fa1e823ef6 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Thu, 16 Nov 2023 12:18:36 -0600 Subject: [PATCH 09/17] Add missing export to aerosol variables The variables added to config.aero were not being exported, causing namelist construction to fail later. --- parm/config/gfs/config.aero | 4 ++-- ush/parsing_namelists_FV3.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/parm/config/gfs/config.aero b/parm/config/gfs/config.aero index 8fcd9beff0..57df8227c5 100644 --- a/parm/config/gfs/config.aero +++ b/parm/config/gfs/config.aero @@ -44,7 +44,7 @@ export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" # Aerosol convective scavenging factors (list of string array elements) # Element syntax: ':'. Use = * to set default factor for all aerosol tracers # Scavenging factors are set to 0 (no scavenging) if unset -fscav_aero="'*:0.3','so2:0.0','msa:0.0','dms:0.0','nh3:0.4','nh4:0.6','bc1:0.6','bc2:0.6','oc1:0.4','oc2:0.4','dust1:0.6','dust2:0.6', 'dust3:0.6','dust4:0.6','dust5:0.6','seas1:0.5','seas2:0.5','seas3:0.5','seas4:0.5','seas5:0.5'" +export fscav_aero="'*:0.3','so2:0.0','msa:0.0','dms:0.0','nh3:0.4','nh4:0.6','bc1:0.6','bc2:0.6','oc1:0.4','oc2:0.4','dust1:0.6','dust2:0.6', 'dust3:0.6','dust4:0.6','dust5:0.6','seas1:0.5','seas2:0.5','seas3:0.5','seas4:0.5','seas5:0.5'" # # Number of diagnostic aerosol tracers (default: 0) -dnats_aero=2 +export dnats_aero=2 diff --git a/ush/parsing_namelists_FV3.sh b/ush/parsing_namelists_FV3.sh index 4435fcffa2..da51966645 100755 --- a/ush/parsing_namelists_FV3.sh +++ b/ush/parsing_namelists_FV3.sh @@ -54,7 +54,7 @@ if [[ -n "${AERO_FIELD_TABLE:-}" ]]; then tail -n $(( nrec - prec )) "${FIELD_TABLE}" ; \ } > field_table # add non-prognostic tracers from additional table - dnats=$(( dnats + ${dnats_aero:0} )) + dnats=$(( dnats + dnats_aero )) else ${NCP} "${FIELD_TABLE}" field_table fi From dc6efcf84046d12ad68e7b742514ef80e79fb8fa Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Thu, 16 Nov 2023 12:29:57 -0600 Subject: [PATCH 10/17] Remove overrides from config.aero The variables in `config.aero` are not set upstream, so there is no reason to allow pass-throughs. --- parm/config/gfs/config.aero | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/parm/config/gfs/config.aero b/parm/config/gfs/config.aero index 57df8227c5..78929ca479 100644 --- a/parm/config/gfs/config.aero +++ b/parm/config/gfs/config.aero @@ -5,8 +5,6 @@ # Turn off warnings about unused variables # shellcheck disable=SC2034 -# Directory containing GOCART configuration files. Defaults to parm/ufs/chem if unset. -AERO_CONFIG_DIR=${HOMEgfs}/parm/ufs/chem # Path to the input data tree case ${machine} in @@ -30,16 +28,14 @@ case ${machine} in exit 2 ;; esac +export AERO_INPUTS_DIR -# Biomass burning emission dataset. Choose from: GBBEPx, QFED, NONE (default) -AERO_EMIS_FIRE=QFED - -export AERO_DIAG_TABLE="${AERO_DIAG_TABLE:-${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" -export AERO_FIELD_TABLE="${AERO_FIELD_TABLE:-${HOMEgfs}/parm/ufs/fv3/field_table.aero}" -AERO_EMIS_FIRE="${AERO_EMIS_FIRE:-none}" -export AERO_EMIS_FIRE=${AERO_EMIS_FIRE,,} -export AERO_CONFIG_DIR="${AERO_CONFIG_DIR:-${HOMEgfs}/parm/ufs/chem}" -export AERO_INPUTS_DIR="${AERO_INPUTS_DIR:-}" +export AERO_DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" +export AERO_FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table.aero}" +# Biomass burning emission dataset. Choose from: gbbepx, qfed, none +export AERO_EMIS_FIRE="qfed" +# Directory containing GOCART configuration files +export AERO_CONFIG_DIR="${HOMEgfs}/parm/ufs/chem" # Aerosol convective scavenging factors (list of string array elements) # Element syntax: ':'. Use = * to set default factor for all aerosol tracers From 5883f7828f8e3b3f74bb2dfe3f5520b7f94a0c74 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Thu, 16 Nov 2023 14:31:22 -0600 Subject: [PATCH 11/17] Rename parm/ufs/chem to parm/ufs/gocart Renames the chem directory to gocart to be consistent with other components. --- parm/config/gfs/config.aero | 2 +- parm/ufs/{chem => gocart}/AERO.rc | 0 parm/ufs/{chem => gocart}/AERO_HISTORY.rc | 0 parm/ufs/{chem => gocart}/AGCM.rc | 0 parm/ufs/{chem => gocart}/CA2G_instance_CA.bc.rc | 0 parm/ufs/{chem => gocart}/CA2G_instance_CA.br.rc | 0 parm/ufs/{chem => gocart}/CA2G_instance_CA.oc.rc | 0 parm/ufs/{chem => gocart}/CAP.rc | 0 parm/ufs/{chem => gocart}/DU2G_instance_DU.rc | 0 parm/ufs/{chem => gocart}/ExtData.gbbepx | 0 parm/ufs/{chem => gocart}/ExtData.none | 0 parm/ufs/{chem => gocart}/ExtData.other | 0 parm/ufs/{chem => gocart}/ExtData.qfed | 0 parm/ufs/{chem => gocart}/GOCART2G_GridComp.rc | 0 parm/ufs/{chem => gocart}/NI2G_instance_NI.rc | 0 parm/ufs/{chem => gocart}/SS2G_instance_SS.rc | 0 parm/ufs/{chem => gocart}/SU2G_instance_SU.rc | 0 parm/ufs/{chem => gocart}/gocart_tracer.list | 0 18 files changed, 1 insertion(+), 1 deletion(-) rename parm/ufs/{chem => gocart}/AERO.rc (100%) rename parm/ufs/{chem => gocart}/AERO_HISTORY.rc (100%) rename parm/ufs/{chem => gocart}/AGCM.rc (100%) rename parm/ufs/{chem => gocart}/CA2G_instance_CA.bc.rc (100%) rename parm/ufs/{chem => gocart}/CA2G_instance_CA.br.rc (100%) rename parm/ufs/{chem => gocart}/CA2G_instance_CA.oc.rc (100%) rename parm/ufs/{chem => gocart}/CAP.rc (100%) rename parm/ufs/{chem => gocart}/DU2G_instance_DU.rc (100%) rename parm/ufs/{chem => gocart}/ExtData.gbbepx (100%) rename parm/ufs/{chem => gocart}/ExtData.none (100%) rename parm/ufs/{chem => gocart}/ExtData.other (100%) rename parm/ufs/{chem => gocart}/ExtData.qfed (100%) rename parm/ufs/{chem => gocart}/GOCART2G_GridComp.rc (100%) rename parm/ufs/{chem => gocart}/NI2G_instance_NI.rc (100%) rename parm/ufs/{chem => gocart}/SS2G_instance_SS.rc (100%) rename parm/ufs/{chem => gocart}/SU2G_instance_SU.rc (100%) rename parm/ufs/{chem => gocart}/gocart_tracer.list (100%) diff --git a/parm/config/gfs/config.aero b/parm/config/gfs/config.aero index 78929ca479..e051fd17e7 100644 --- a/parm/config/gfs/config.aero +++ b/parm/config/gfs/config.aero @@ -35,7 +35,7 @@ export AERO_FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table.aero}" # Biomass burning emission dataset. Choose from: gbbepx, qfed, none export AERO_EMIS_FIRE="qfed" # Directory containing GOCART configuration files -export AERO_CONFIG_DIR="${HOMEgfs}/parm/ufs/chem" +export AERO_CONFIG_DIR="${HOMEgfs}/parm/ufs/gocart" # Aerosol convective scavenging factors (list of string array elements) # Element syntax: ':'. Use = * to set default factor for all aerosol tracers diff --git a/parm/ufs/chem/AERO.rc b/parm/ufs/gocart/AERO.rc similarity index 100% rename from parm/ufs/chem/AERO.rc rename to parm/ufs/gocart/AERO.rc diff --git a/parm/ufs/chem/AERO_HISTORY.rc b/parm/ufs/gocart/AERO_HISTORY.rc similarity index 100% rename from parm/ufs/chem/AERO_HISTORY.rc rename to parm/ufs/gocart/AERO_HISTORY.rc diff --git a/parm/ufs/chem/AGCM.rc b/parm/ufs/gocart/AGCM.rc similarity index 100% rename from parm/ufs/chem/AGCM.rc rename to parm/ufs/gocart/AGCM.rc diff --git a/parm/ufs/chem/CA2G_instance_CA.bc.rc b/parm/ufs/gocart/CA2G_instance_CA.bc.rc similarity index 100% rename from parm/ufs/chem/CA2G_instance_CA.bc.rc rename to parm/ufs/gocart/CA2G_instance_CA.bc.rc diff --git a/parm/ufs/chem/CA2G_instance_CA.br.rc b/parm/ufs/gocart/CA2G_instance_CA.br.rc similarity index 100% rename from parm/ufs/chem/CA2G_instance_CA.br.rc rename to parm/ufs/gocart/CA2G_instance_CA.br.rc diff --git a/parm/ufs/chem/CA2G_instance_CA.oc.rc b/parm/ufs/gocart/CA2G_instance_CA.oc.rc similarity index 100% rename from parm/ufs/chem/CA2G_instance_CA.oc.rc rename to parm/ufs/gocart/CA2G_instance_CA.oc.rc diff --git a/parm/ufs/chem/CAP.rc b/parm/ufs/gocart/CAP.rc similarity index 100% rename from parm/ufs/chem/CAP.rc rename to parm/ufs/gocart/CAP.rc diff --git a/parm/ufs/chem/DU2G_instance_DU.rc b/parm/ufs/gocart/DU2G_instance_DU.rc similarity index 100% rename from parm/ufs/chem/DU2G_instance_DU.rc rename to parm/ufs/gocart/DU2G_instance_DU.rc diff --git a/parm/ufs/chem/ExtData.gbbepx b/parm/ufs/gocart/ExtData.gbbepx similarity index 100% rename from parm/ufs/chem/ExtData.gbbepx rename to parm/ufs/gocart/ExtData.gbbepx diff --git a/parm/ufs/chem/ExtData.none b/parm/ufs/gocart/ExtData.none similarity index 100% rename from parm/ufs/chem/ExtData.none rename to parm/ufs/gocart/ExtData.none diff --git a/parm/ufs/chem/ExtData.other b/parm/ufs/gocart/ExtData.other similarity index 100% rename from parm/ufs/chem/ExtData.other rename to parm/ufs/gocart/ExtData.other diff --git a/parm/ufs/chem/ExtData.qfed b/parm/ufs/gocart/ExtData.qfed similarity index 100% rename from parm/ufs/chem/ExtData.qfed rename to parm/ufs/gocart/ExtData.qfed diff --git a/parm/ufs/chem/GOCART2G_GridComp.rc b/parm/ufs/gocart/GOCART2G_GridComp.rc similarity index 100% rename from parm/ufs/chem/GOCART2G_GridComp.rc rename to parm/ufs/gocart/GOCART2G_GridComp.rc diff --git a/parm/ufs/chem/NI2G_instance_NI.rc b/parm/ufs/gocart/NI2G_instance_NI.rc similarity index 100% rename from parm/ufs/chem/NI2G_instance_NI.rc rename to parm/ufs/gocart/NI2G_instance_NI.rc diff --git a/parm/ufs/chem/SS2G_instance_SS.rc b/parm/ufs/gocart/SS2G_instance_SS.rc similarity index 100% rename from parm/ufs/chem/SS2G_instance_SS.rc rename to parm/ufs/gocart/SS2G_instance_SS.rc diff --git a/parm/ufs/chem/SU2G_instance_SU.rc b/parm/ufs/gocart/SU2G_instance_SU.rc similarity index 100% rename from parm/ufs/chem/SU2G_instance_SU.rc rename to parm/ufs/gocart/SU2G_instance_SU.rc diff --git a/parm/ufs/chem/gocart_tracer.list b/parm/ufs/gocart/gocart_tracer.list similarity index 100% rename from parm/ufs/chem/gocart_tracer.list rename to parm/ufs/gocart/gocart_tracer.list From f3ea1b30a8b2310207090b6897c49bf9a09bf333 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Thu, 16 Nov 2023 14:32:27 -0600 Subject: [PATCH 12/17] Fix typo in config.aero variables --- parm/config/gfs/config.aero | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parm/config/gfs/config.aero b/parm/config/gfs/config.aero index e051fd17e7..23d738c642 100644 --- a/parm/config/gfs/config.aero +++ b/parm/config/gfs/config.aero @@ -30,8 +30,8 @@ case ${machine} in esac export AERO_INPUTS_DIR -export AERO_DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table.aero}" -export AERO_FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table.aero}" +export AERO_DIAG_TABLE="${HOMEgfs}/parm/ufs/fv3/diag_table.aero" +export AERO_FIELD_TABLE="${HOMEgfs}/parm/ufs/fv3/field_table.aero" # Biomass burning emission dataset. Choose from: gbbepx, qfed, none export AERO_EMIS_FIRE="qfed" # Directory containing GOCART configuration files From 8839b0cfda8e7b1b826b4f47ef0c7eae94e7f7dd Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Fri, 17 Nov 2023 12:00:28 -0600 Subject: [PATCH 13/17] Fix typo in GEFS config.ufs --- parm/config/gefs/config.ufs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 73be1cbe8a..4a086470b7 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -8,7 +8,7 @@ echo "BEGIN: config.ufs" -if (( $# <- 1 )); then +if (( $# <= 1 )); then echo "Must specify an input resolution argument to set variables!" echo "argument can be any one of the following:" From d5dc4f0bcb0e6e589337761f0a344fd4c6d2d49d Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Fri, 17 Nov 2023 13:27:25 -0500 Subject: [PATCH 14/17] eliminate DO_AERO and provide input to config.ufs --- parm/config/gfs/config.fcst | 7 ++++--- parm/config/gfs/config.ufs | 28 +++++++++++++++++----------- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index eb1589f5da..f35b289a4c 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -13,9 +13,10 @@ esac # Source model specific information that is resolution dependent string="--fv3 ${CASE}" -[[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" -[[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" -[[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_OCN}" = "YES" ]] && string="${string} --mom6 ${OCNRES}" +[[ "${DO_ICE}" = "YES" ]] && string="${string} --cice6 ${ICERES}" +[[ "${DO_WAVE}" = "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" # We are counting on $string being multiple arguments # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 2b8db2c1b6..31e8779ed9 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -16,6 +16,7 @@ if (( $# <= 1 )); then echo "--mom6 500|100|025" echo "--cice6 500|100|025" echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_200|glo_500|mx025" + echo "--gocart" exit 1 @@ -25,6 +26,7 @@ fi skip_mom6=true skip_cice6=true skip_ww3=true +skip_gocart=true skip_mediator=true # Loop through named arguments @@ -33,18 +35,25 @@ while (( $# > 0 )); do case "${key}" in "--fv3") fv3_res="$2" + shift ;; "--mom6") mom6_res="$2" skip_mom6=false + shift ;; "--cice6") cice6_res="$2" skip_cice6=false + shift ;; "--ww3") ww3_res="$2" skip_ww3=false + shift + ;; + "--gocart") + skip_gocart=false ;; *) # unknown option echo "FATAL ERROR: Unknown option: ${key}, ABORT!" @@ -52,7 +61,6 @@ while (( $# > 0 )); do ;; esac shift - shift done # Mediator is required if any of the non-ATM components are used @@ -60,14 +68,6 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi -# Source component configs if necessary -for component in WAVE OCN ICE AERO; do - control="DO_${component}" - if [[ ${!control} == "YES" ]]; then - source "${EXPDIR}/config.${component,,}" - fi -done - case "${machine}" in "WCOSS2") npe_node_max=128 @@ -125,7 +125,7 @@ case "${fv3_res}" in export nthreads_fv3_gfs=1 export cdmbgwd="0.071,2.1,1.0,1.0" # mountain blocking, ogwd, cgwd, cgwd src scaling export cdmbgwd_gsl="40.0,1.77,1.0,1.0" # settings for GSL drag suite - export knob_ugwp_tauamp=6.0e-3 # setting for UGWPv1 non-stationary GWD + export knob_ugwp_tauamp=6.0e-3 # setting for UGWPv1 non-stationary GWD export WRITE_GROUP=1 export WRTTASK_PER_GROUP_PER_THREAD_PER_TILE=1 export WRITE_GROUP_GFS=1 @@ -284,6 +284,7 @@ fi # MOM6 specific settings if [[ "${skip_mom6}" == "false" ]]; then + source "${EXPDIR}/config.ocn" export cplflx=".true." model_list="${model_list}.ocean" nthreads_mom6=1 @@ -394,6 +395,7 @@ fi # CICE6 specific settings if [[ "${skip_cice6}" == "false" ]]; then + source "${EXPDIR}/config.ice" export cplice=".true." model_list="${model_list}.ice" # Ensure we sourced the MOM6 section @@ -433,6 +435,7 @@ fi # WW3 specific settings if [[ "${skip_ww3}" == "false" ]]; then + source "${EXPDIR}/config.wave" export cplwav=".true." export cplwav2atm=".true." model_list="${model_list}.wave" @@ -467,7 +470,8 @@ if [[ "${skip_ww3}" == "false" ]]; then fi # GOCART specific settings -if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling +if [[ "${skip_gocart}" == "false" ]]; then + source "${EXPDIR}/config.ww3" export cplchm=".true." model_list="${model_list}.aero" fi @@ -506,4 +510,6 @@ if [[ ! -r "${ufs_configure_template}" ]]; then exit 17 fi +unset model_list + echo "END: config.ufs" From 21f20ddc1d075cfc2e7c15bb3d11e3885b7ecbca Mon Sep 17 00:00:00 2001 From: Rahul Mahajan Date: Fri, 17 Nov 2023 13:29:33 -0500 Subject: [PATCH 15/17] config.aero should be sourced --- parm/config/gfs/config.ufs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parm/config/gfs/config.ufs b/parm/config/gfs/config.ufs index 31e8779ed9..33264ba0aa 100644 --- a/parm/config/gfs/config.ufs +++ b/parm/config/gfs/config.ufs @@ -471,7 +471,7 @@ fi # GOCART specific settings if [[ "${skip_gocart}" == "false" ]]; then - source "${EXPDIR}/config.ww3" + source "${EXPDIR}/config.aero" export cplchm=".true." model_list="${model_list}.aero" fi From 40894130962d4861fc9e0dbed2ad8889b5308624 Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Fri, 17 Nov 2023 12:40:55 -0600 Subject: [PATCH 16/17] Extend elimination of DO_AERO in config.ufs to ens/gefs --- parm/config/gefs/config.efcs | 1 + parm/config/gefs/config.fcst | 1 + parm/config/gefs/config.ufs | 26 ++++++++++++++++---------- parm/config/gfs/config.efcs | 1 + 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/parm/config/gefs/config.efcs b/parm/config/gefs/config.efcs index 86526c208f..0c06b55076 100644 --- a/parm/config/gefs/config.efcs +++ b/parm/config/gefs/config.efcs @@ -17,6 +17,7 @@ string="--fv3 ${CASE_ENS}" [[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" [[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" [[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index 940b5d53d5..6f7f2c9d0c 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -16,6 +16,7 @@ string="--fv3 ${CASE}" [[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" [[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" [[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" # We are counting on $string being multiple arguments # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} diff --git a/parm/config/gefs/config.ufs b/parm/config/gefs/config.ufs index 4a086470b7..db0589ab6a 100644 --- a/parm/config/gefs/config.ufs +++ b/parm/config/gefs/config.ufs @@ -16,6 +16,7 @@ if (( $# <= 1 )); then echo "--mom6 500|100|025" echo "--cice6 500|100|025" echo "--ww3 gnh_10m;aoc_9km;gsh_15m|gwes_30m|glo_025|glo_200|glo_500|mx025" + echo "--gocart" exit 1 @@ -25,6 +26,7 @@ fi skip_mom6=true skip_cice6=true skip_ww3=true +skip_gocart=true skip_mediator=true # Loop through named arguments @@ -33,18 +35,25 @@ while (( $# > 0 )); do case "${key}" in "--fv3") fv3_res="$2" + shift ;; "--mom6") mom6_res="$2" skip_mom6=false + shift ;; "--cice6") cice6_res="$2" skip_cice6=false + shift ;; "--ww3") ww3_res="$2" skip_ww3=false + shift + ;; + "--gocart") + skip_gocart=false ;; *) # unknown option echo "FATAL ERROR: Unknown option: ${key}, ABORT!" @@ -52,7 +61,6 @@ while (( $# > 0 )); do ;; esac shift - shift done # Mediator is required if any of the non-ATM components are used @@ -60,14 +68,6 @@ if [[ "${skip_mom6}" == "false" ]] || [[ "${skip_cice6}" == "false" ]] || [[ "${ skip_mediator=false fi -# Source component configs if necessary -for component in WAVE OCN ICE AERO; do - control="DO_${component}" - if [[ ${!control} == "YES" ]]; then - source "${EXPDIR}/config.${component,,}" - fi -done - case "${machine}" in "WCOSS2") npe_node_max=128 @@ -280,6 +280,7 @@ fi # MOM6 specific settings if [[ "${skip_mom6}" == "false" ]]; then + source "${EXPDIR}/config.ocn" export cplflx=".true." model_list="${model_list}.ocean" nthreads_mom6=1 @@ -388,6 +389,7 @@ fi # CICE6 specific settings if [[ "${skip_cice6}" == "false" ]]; then + source "${EXPDIR}/config.ice" export cplice=".true." model_list="${model_list}.ice" # Ensure we sourced the MOM6 section @@ -426,6 +428,7 @@ fi # WW3 specific settings if [[ "${skip_ww3}" == "false" ]]; then + source "${EXPDIR}/config.wave" export cplwav=".true." export cplwav2atm=".true." model_list="${model_list}.wave" @@ -460,7 +463,8 @@ if [[ "${skip_ww3}" == "false" ]]; then fi # GOCART specific settings -if [[ "${DO_AERO}" = "YES" ]]; then # temporary settings for aerosol coupling +if [[ "${skip_gocart}" == "false" ]]; then + source "${EXPDIR}/config.aero" export cplchm=".true." model_list="${model_list}.aero" fi @@ -499,4 +503,6 @@ if [[ ! -r "${ufs_configure_template}" ]]; then exit 17 fi +unset model_list + echo "END: config.ufs" diff --git a/parm/config/gfs/config.efcs b/parm/config/gfs/config.efcs index 2cb0ff1344..61c9e59451 100644 --- a/parm/config/gfs/config.efcs +++ b/parm/config/gfs/config.efcs @@ -17,6 +17,7 @@ string="--fv3 ${CASE_ENS}" [[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" [[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" [[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" # We are counting on $string being multiple arguments # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} From cbf2de571d42f43d350024e718b6dd58b5edf3cc Mon Sep 17 00:00:00 2001 From: "Walter.Kolczynski" Date: Fri, 17 Nov 2023 12:46:22 -0600 Subject: [PATCH 17/17] Make config.ufs construction consistent --- parm/config/gefs/config.efcs | 8 ++++---- parm/config/gefs/config.fcst | 8 ++++---- parm/config/gfs/config.efcs | 8 ++++---- parm/config/gfs/config.fcst | 8 ++++---- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/parm/config/gefs/config.efcs b/parm/config/gefs/config.efcs index 0c06b55076..a6d093968d 100644 --- a/parm/config/gefs/config.efcs +++ b/parm/config/gefs/config.efcs @@ -14,10 +14,10 @@ export DO_WAVE=${DO_WAVE_ENKF:-${DO_WAVE:-"NO"}} # Source model specific information that is resolution dependent string="--fv3 ${CASE_ENS}" # Ocean/Ice/Waves ensemble configurations are identical to deterministic member -[[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" -[[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" -[[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" -[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" +[[ "${DO_OCN}" == "YES" ]] && string="${string} --mom6 ${OCNRES}" +[[ "${DO_ICE}" == "YES" ]] && string="${string} --cice6 ${ICERES}" +[[ "${DO_WAVE}" == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" == "YES" ]] && string="${string} --gocart" # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} diff --git a/parm/config/gefs/config.fcst b/parm/config/gefs/config.fcst index 6f7f2c9d0c..e36e023652 100644 --- a/parm/config/gefs/config.fcst +++ b/parm/config/gefs/config.fcst @@ -13,10 +13,10 @@ esac # Source model specific information that is resolution dependent string="--fv3 ${CASE}" -[[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" -[[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" -[[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" -[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" +[[ "${DO_OCN}" == "YES" ]] && string="${string} --mom6 ${OCNRES}" +[[ "${DO_ICE}" == "YES" ]] && string="${string} --cice6 ${ICERES}" +[[ "${DO_WAVE}" == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" == "YES" ]] && string="${string} --gocart" # We are counting on $string being multiple arguments # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} diff --git a/parm/config/gfs/config.efcs b/parm/config/gfs/config.efcs index 61c9e59451..283ec3ab7e 100644 --- a/parm/config/gfs/config.efcs +++ b/parm/config/gfs/config.efcs @@ -14,10 +14,10 @@ export DO_WAVE=${DO_WAVE_ENKF:-${DO_WAVE:-"NO"}} # Source model specific information that is resolution dependent string="--fv3 ${CASE_ENS}" # Ocean/Ice/Waves ensemble configurations are identical to deterministic member -[[ ${DO_OCN} == "YES" ]] && string="${string} --mom6 ${OCNRES}" -[[ ${DO_ICE} == "YES" ]] && string="${string} --cice6 ${ICERES}" -[[ ${DO_WAVE} == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" -[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" +[[ "${DO_OCN}" == "YES" ]] && string="${string} --mom6 ${OCNRES}" +[[ "${DO_ICE}" == "YES" ]] && string="${string} --cice6 ${ICERES}" +[[ "${DO_WAVE}" == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" == "YES" ]] && string="${string} --gocart" # We are counting on $string being multiple arguments # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string} diff --git a/parm/config/gfs/config.fcst b/parm/config/gfs/config.fcst index f35b289a4c..3f63578d76 100644 --- a/parm/config/gfs/config.fcst +++ b/parm/config/gfs/config.fcst @@ -13,10 +13,10 @@ esac # Source model specific information that is resolution dependent string="--fv3 ${CASE}" -[[ "${DO_OCN}" = "YES" ]] && string="${string} --mom6 ${OCNRES}" -[[ "${DO_ICE}" = "YES" ]] && string="${string} --cice6 ${ICERES}" -[[ "${DO_WAVE}" = "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" -[[ "${DO_AERO}" = "YES" ]] && string="${string} --gocart" +[[ "${DO_OCN}" == "YES" ]] && string="${string} --mom6 ${OCNRES}" +[[ "${DO_ICE}" == "YES" ]] && string="${string} --cice6 ${ICERES}" +[[ "${DO_WAVE}" == "YES" ]] && string="${string} --ww3 ${waveGRD// /;}" +[[ "${DO_AERO}" == "YES" ]] && string="${string} --gocart" # We are counting on $string being multiple arguments # shellcheck disable=SC2086 source "${EXPDIR}/config.ufs" ${string}