diff --git a/parm/config/config.base.emc.dyn b/parm/config/config.base.emc.dyn index 02480316b9..0d4a414fd4 100755 --- a/parm/config/config.base.emc.dyn +++ b/parm/config/config.base.emc.dyn @@ -158,7 +158,7 @@ export DO_WAVE="NO" export DO_OCN="NO" export DO_ICE="NO" export DO_AERO="NO" -export CCPP_SUITE="FV3_GFS_v17_p8" +export CCPP_SUITE="@CCPP_SUITE@" export WAVE_CDUMP="" # When to include wave suite: gdas, gfs, or both export DOBNDPNT_WAVE="NO" export cplwav2atm=".false." @@ -323,7 +323,7 @@ fi # fi # Microphysics Options: 99-ZhaoCarr, 8-Thompson; 6-WSM6, 10-MG, 11-GFDL -export imp_physics=8 +export imp_physics=@IMP_PHYSICS@ # Shared parameters # DA engine diff --git a/scripts/exgdas_atmos_verfrad.sh b/scripts/exgdas_atmos_verfrad.sh index 3136ca5130..b9cfa701cd 100755 --- a/scripts/exgdas_atmos_verfrad.sh +++ b/scripts/exgdas_atmos_verfrad.sh @@ -144,7 +144,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then netcdf=1 fi - if [[ -f "diag_${type}_ges.${PDATE}*.${Z}" ]]; then + if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_ges.${PDATE}*.${Z}" | wc -l) -gt 0 ]]; then mv diag_${type}_ges.${PDATE}*.${Z} ${type}.${Z} ${UNCOMPRESS} ./${type}.${Z} else @@ -152,7 +152,7 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then fi if [[ $USE_ANL -eq 1 ]]; then - if [[ -f "diag_${type}_anl.${PDATE}*.${Z}" ]]; then + if [[ $(find . -maxdepth 1 -type f -name "diag_${type}_anl.${PDATE}*.${Z}" | wc -l) -gt 0 ]]; then mv diag_${type}_anl.${PDATE}*.${Z} ${type}_anl.${Z} ${UNCOMPRESS} ./${type}_anl.${Z} else @@ -173,17 +173,17 @@ if [[ -s ${radstat} && -s ${biascr} ]]; then ${USHradmon}/radmon_verf_bcoef.sh ${PDATE} rc_bcoef=$? - ${USHradmon}/radmon_verf_bcor.sh ${PDATE} + ${USHradmon}/radmon_verf_bcor.sh "${PDATE}" rc_bcor=$? - ${USHradmon}/radmon_verf_time.sh ${PDATE} + ${USHradmon}/radmon_verf_time.sh "${PDATE}" rc_time=$? #-------------------------------------- # optionally run clean_tankdir script # if [[ ${CLEAN_TANKVERF:-0} -eq 1 ]]; then - ${USHradmon}/clean_tankdir.sh glb 60 + "${USHradmon}/clean_tankdir.sh" glb 60 rc_clean_tankdir=$? echo "rc_clean_tankdir = $rc_clean_tankdir" fi @@ -214,7 +214,7 @@ export CHGRP_CMD=${CHGRP_CMD:-"chgrp ${group_name:-rstprod}"} rlist="saphir" for rtype in $rlist; do if compgen -G "$TANKverf_rad/*${rtype}*" > /dev/null; then - ${CHGRP_CMD} $TANKverf_rad/*${rtype}* + ${CHGRP_CMD} "${TANKverf_rad}"/*${rtype}* fi done diff --git a/ush/radmon_verf_angle.sh b/ush/radmon_verf_angle.sh index fc91c5ae77..b2dab0825a 100755 --- a/ush/radmon_verf_angle.sh +++ b/ush/radmon_verf_angle.sh @@ -159,12 +159,13 @@ else angl_ctl=angle.${ctl_file} fi + angl_file="" if [[ $REGIONAL_RR -eq 1 ]]; then angl_file=${rgnHH}.${data_file}.${rgnTM} fi - rm input + if [[ -f input ]]; then rm input; fi nchanl=-999 cat << EOF > input @@ -209,18 +210,18 @@ EOF ${USHradmon}/rstprod.sh tar_file=radmon_angle.tar - if compgen -G "angle*.ieee_d* angle*.ctl*" > /dev/null; then + if compgen -G "angle*.ieee_d*" > /dev/null || compgen -G "angle*.ctl*" > /dev/null; then tar -cf $tar_file angle*.ieee_d* angle*.ctl* ${COMPRESS} ${tar_file} mv $tar_file.${Z} ${TANKverf_rad}/. - if [[ $RAD_AREA = "rgn" ]]; then - cwd=$(pwd) - cd ${TANKverf_rad} - tar -xf ${tar_file}.${Z} - rm ${tar_file}.${Z} - cd ${cwd} - fi + if [[ $RAD_AREA = "rgn" ]]; then + cwd=$(pwd) + cd ${TANKverf_rad} + tar -xf ${tar_file}.${Z} + rm ${tar_file}.${Z} + cd ${cwd} + fi fi if [[ $ctr -gt 0 && $fail -eq $ctr || $fail -gt $ctr ]]; then diff --git a/ush/radmon_verf_bcoef.sh b/ush/radmon_verf_bcoef.sh index fc8110063c..374c8db7b2 100755 --- a/ush/radmon_verf_bcoef.sh +++ b/ush/radmon_verf_bcoef.sh @@ -159,7 +159,7 @@ else fi - rm input + if [[ -f input ]]; then rm input; fi cat << EOF > input @@ -206,7 +206,7 @@ EOF ${USHradmon}/rstprod.sh - if compgen -G "bcoef*.ieee_d* bcoef*.ctl*" > /dev/null; then + if compgen -G "bcoef*.ieee_d*" > /dev/null || compgen -G "bcoef*.ctl*" > /dev/null; then tar_file=radmon_bcoef.tar tar -cf $tar_file bcoef*.ieee_d* bcoef*.ctl* ${COMPRESS} ${tar_file} diff --git a/ush/radmon_verf_bcor.sh b/ush/radmon_verf_bcor.sh index c949363b9f..3e267f018c 100755 --- a/ush/radmon_verf_bcor.sh +++ b/ush/radmon_verf_bcor.sh @@ -200,7 +200,7 @@ EOF ${USHradmon}/rstprod.sh tar_file=radmon_bcor.tar - if compgen -G "bcor*.ieee_d* bcor*.ctl*" > /dev/null; then + if compgen -G "bcor*.ieee_d*" > /dev/null || compgen -G "bcor*.ctl*" > /dev/null; then tar -cf $tar_file bcor*.ieee_d* bcor*.ctl* ${COMPRESS} ${tar_file} mv $tar_file.${Z} ${TANKverf_rad}/. diff --git a/ush/radmon_verf_time.sh b/ush/radmon_verf_time.sh index f90d0945bb..51743277c9 100755 --- a/ush/radmon_verf_time.sh +++ b/ush/radmon_verf_time.sh @@ -187,7 +187,7 @@ if [[ $err -eq 0 ]]; then for dtype in ${gesanl}; do - rm input + if [[ -f input ]]; then rm input; fi if [[ $dtype == "anl" ]]; then data_file=${type}_anl.${PDATE}.ieee_d @@ -252,7 +252,7 @@ EOF ${USHradmon}/rstprod.sh - if compgen -G "time*.ieee_d* time*.ctl*" > /dev/null; then + if compgen -G "time*.ieee_d*" > /dev/null || compgen -G "time*.ctl*" > /dev/null; then tar_file=radmon_time.tar tar -cf $tar_file time*.ieee_d* time*.ctl* ${COMPRESS} ${tar_file} diff --git a/workflow/hosts/hera.yaml b/workflow/hosts/hera.yaml index 372af486c5..b8b400c073 100644 --- a/workflow/hosts/hera.yaml +++ b/workflow/hosts/hera.yaml @@ -18,3 +18,4 @@ chgrp_cmd: 'chgrp rstprod' hpssarch: 'YES' localarch: 'NO' atardir: '/NCEPDEV/$HPSS_PROJECT/1year/$USER/$machine/scratch/$PSLOT' +supported_resolutions: ['C768', 'C384', 'C192', 'C96', 'C48'] diff --git a/workflow/hosts/orion.yaml b/workflow/hosts/orion.yaml index 6d5be757d6..fb92cdcd31 100644 --- a/workflow/hosts/orion.yaml +++ b/workflow/hosts/orion.yaml @@ -18,3 +18,4 @@ chgrp_cmd: 'chgrp rstprod' hpssarch: 'NO' localarch: 'NO' atardir: '$NOSCRUB/archive_rotdir/$PSLOT' +supported_resolutions: ['C768', 'C384', 'C192', 'C96', 'C48'] diff --git a/workflow/setup_expt.py b/workflow/setup_expt.py index d9bf76d068..bc2eff7f43 100755 --- a/workflow/setup_expt.py +++ b/workflow/setup_expt.py @@ -155,6 +155,19 @@ def edit_baseconfig(host, inputs): } tmpl_dict = dict(tmpl_dict, **extend_dict) + if inputs.mode in ['cycled']: + extend_dict = { + "@CCPP_SUITE@": 'FV3_GFS_v16', + "@IMP_PHYSICS@": 11 + } + elif inputs.mode in ['forecast-only']: + extend_dict = { + "@CCPP_SUITE@": 'FV3_GFS_v17_p8', + "@IMP_PHYSICS@": 8 + } + tmpl_dict = dict(tmpl_dict, **extend_dict) + + # Open and read the templated config.base.emc.dyn base_tmpl = f'{inputs.configdir}/config.base.emc.dyn' with open(base_tmpl, 'rt') as fi: @@ -266,12 +279,21 @@ def query_and_clean(dirname): return create_dir +def validate_user_request(host, inputs): + expt_res = f'C{inputs.resdet}' + supp_res = host.info['supported_resolutions'] + machine = host.machine + if expt_res not in supp_res: + raise NotImplementedError(f"Supported resolutions on {machine} are:\n{', '.join(supp_res)}") + if __name__ == '__main__': user_inputs = input_args() host = Host() + validate_user_request(host, user_inputs) + comrot = os.path.join(user_inputs.comrot, user_inputs.pslot) expdir = os.path.join(user_inputs.expdir, user_inputs.pslot)