diff --git a/ecf/defs/aqm_cycled.def b/ecf/defs/aqm_cycled.def index c76f534105..823b195927 100644 --- a/ecf/defs/aqm_cycled.def +++ b/ecf/defs/aqm_cycled.def @@ -22,30 +22,30 @@ suite nco_aqm family nexus task jaqm_nexus_emission_00 edit NSPT '00' - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_nexus_emission_01 edit NSPT '01' - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_nexus_emission_02 edit NSPT '02' - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_nexus_emission_03 edit NSPT '03' - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_nexus_emission_04 edit NSPT '04' - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_nexus_emission_05 edit NSPT '05' - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_nexus_post_split trigger ./jaqm_nexus_emission_00==complete and ./jaqm_nexus_emission_01==complete and ./jaqm_nexus_emission_02==complete and ./jaqm_nexus_emission_03==complete and ./jaqm_nexus_emission_04==complete and ./jaqm_nexus_emission_05==complete endfamily family prep task jaqm_make_ics - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_make_lbcs - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_ics trigger ./jaqm_make_ics==complete task jaqm_lbcs @@ -53,9 +53,9 @@ suite nco_aqm endfamily family pts_fire_emis task jaqm_point_source - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 task jaqm_fire_emission - trigger :TIME == 0142 + trigger :TIME >= 0142 and :TIME < 0742 endfamily family forecast task jaqm_forecast @@ -121,30 +121,30 @@ suite nco_aqm family nexus task jaqm_nexus_emission_00 edit NSPT '00' - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_nexus_emission_01 edit NSPT '01' - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_nexus_emission_02 edit NSPT '02' - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_nexus_emission_03 edit NSPT '03' - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_nexus_emission_04 edit NSPT '04' - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_nexus_emission_05 edit NSPT '05' - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_nexus_post_split trigger ./jaqm_nexus_emission_00==complete and ./jaqm_nexus_emission_01==complete and ./jaqm_nexus_emission_02==complete and ./jaqm_nexus_emission_03==complete and ./jaqm_nexus_emission_04==complete and ./jaqm_nexus_emission_05==complete endfamily family prep task jaqm_make_ics - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_make_lbcs - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_ics trigger ./jaqm_make_ics==complete task jaqm_lbcs @@ -152,9 +152,9 @@ suite nco_aqm endfamily family pts_fire_emis task jaqm_point_source - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 task jaqm_fire_emission - trigger :TIME == 0742 + trigger :TIME >= 0742 and :TIME < 1342 endfamily family forecast task jaqm_forecast @@ -494,30 +494,30 @@ suite nco_aqm family nexus task jaqm_nexus_emission_00 edit NSPT '00' - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_nexus_emission_01 edit NSPT '01' - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_nexus_emission_02 edit NSPT '02' - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_nexus_emission_03 edit NSPT '03' - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_nexus_emission_04 edit NSPT '04' - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_nexus_emission_05 edit NSPT '05' - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_nexus_post_split trigger ./jaqm_nexus_emission_00==complete and ./jaqm_nexus_emission_01==complete and ./jaqm_nexus_emission_02==complete and ./jaqm_nexus_emission_03==complete and ./jaqm_nexus_emission_04==complete and ./jaqm_nexus_emission_05==complete endfamily family prep task jaqm_make_ics - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_make_lbcs - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_ics trigger ./jaqm_make_ics==complete task jaqm_lbcs @@ -525,9 +525,9 @@ suite nco_aqm endfamily family pts_fire_emis task jaqm_point_source - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 task jaqm_fire_emission - trigger :TIME == 1342 + trigger :TIME >= 1342 and :TIME < 1942 endfamily family forecast task jaqm_forecast @@ -867,30 +867,30 @@ suite nco_aqm family nexus task jaqm_nexus_emission_00 edit NSPT '00' - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_nexus_emission_01 edit NSPT '01' - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_nexus_emission_02 edit NSPT '02' - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_nexus_emission_03 edit NSPT '03' - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_nexus_emission_04 edit NSPT '04' - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_nexus_emission_05 edit NSPT '05' - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_nexus_post_split trigger ./jaqm_nexus_emission_00==complete and ./jaqm_nexus_emission_01==complete and ./jaqm_nexus_emission_02==complete and ./jaqm_nexus_emission_03==complete and ./jaqm_nexus_emission_04==complete and ./jaqm_nexus_emission_05==complete endfamily family prep task jaqm_make_ics - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_make_lbcs - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_ics trigger ./jaqm_make_ics==complete task jaqm_lbcs @@ -898,9 +898,9 @@ suite nco_aqm endfamily family pts_fire_emis task jaqm_point_source - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 task jaqm_fire_emission - trigger :TIME == 2042 + trigger :TIME >= 1942 and :TIME < 2342 endfamily family forecast task jaqm_forecast diff --git a/ecf/include/head.h b/ecf/include/head.h index e837221995..2b1c476fd8 100644 --- a/ecf/include/head.h +++ b/ecf/include/head.h @@ -26,6 +26,7 @@ fi modelhome=%PACKAGEHOME:% eval "export HOME${model:?'model undefined'}=$modelhome" eval "versionfile=\$HOME${model}/versions/run.ver" +if [ -n "%aqm_ver:%" ]; then export aqm_ver=${aqm_ver:-%aqm_ver:%}; fi if [ -f "$versionfile" ]; then . $versionfile fi diff --git a/ecf/scripts/forecast/jaqm_forecast.ecf b/ecf/scripts/forecast/jaqm_forecast.ecf index 313f01743a..f5f1a7621b 100644 --- a/ecf/scripts/forecast/jaqm_forecast.ecf +++ b/ecf/scripts/forecast/jaqm_forecast.ecf @@ -3,7 +3,7 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=04:00:00 +#PBS -l walltime=03:15:00 #PBS -l select=14:mpiprocs=128:ompthreads=1:ncpus=128 #PBS -l place=vscatter:exclhost #PBS -l debug=true diff --git a/ecf/scripts/forecast/jaqm_forecast_manager.ecf b/ecf/scripts/forecast/jaqm_forecast_manager.ecf index ae7b370e77..7b73914abc 100644 --- a/ecf/scripts/forecast/jaqm_forecast_manager.ecf +++ b/ecf/scripts/forecast/jaqm_forecast_manager.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=04:00:00 -#PBS -l select=1:mpiprocs=1:ncpus=1 +#PBS -l walltime=03:15:00 +#PBS -l select=1:mpiprocs=1:ncpus=1:mem=150G:prepost=true #PBS -l debug=true model=aqm diff --git a/ecf/scripts/nexus/jaqm_nexus_post_split.ecf b/ecf/scripts/nexus/jaqm_nexus_post_split.ecf index 0501620eea..d775ed3283 100644 --- a/ecf/scripts/nexus/jaqm_nexus_post_split.ecf +++ b/ecf/scripts/nexus/jaqm_nexus_post_split.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 -#PBS -l select=1:mpiprocs=1:ncpus=1 +#PBS -l walltime=00:15:00 +#PBS -l select=1:mpiprocs=1:ncpus=1:mem=32G:prepost=true #PBS -l debug=true model=aqm diff --git a/ecf/scripts/post/jaqm_post_master.ecf b/ecf/scripts/post/jaqm_post_master.ecf index fad228c918..62a8594d40 100644 --- a/ecf/scripts/post/jaqm_post_master.ecf +++ b/ecf/scripts/post/jaqm_post_master.ecf @@ -3,9 +3,9 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:15:00 -#PBS -l select=2:mpiprocs=24:ncpus=24 -#PBS -l place=vscatter:exclhost +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=48:ncpus=48:mem=16G +#PBS -l place=vscatter #PBS -l debug=true model=aqm diff --git a/ecf/scripts/prep/jaqm_ics.ecf b/ecf/scripts/prep/jaqm_ics.ecf index ad28218b11..d770169076 100644 --- a/ecf/scripts/prep/jaqm_ics.ecf +++ b/ecf/scripts/prep/jaqm_ics.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 -#PBS -l select=1:mpiprocs=1:ncpus=1 +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=1:ncpus=1:mem=48G:prepost=true #PBS -l debug=true model=aqm diff --git a/ecf/scripts/prep/jaqm_lbcs.ecf b/ecf/scripts/prep/jaqm_lbcs.ecf index 6feff0fb68..f5d2c51d51 100644 --- a/ecf/scripts/prep/jaqm_lbcs.ecf +++ b/ecf/scripts/prep/jaqm_lbcs.ecf @@ -3,8 +3,9 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:20:00 +#PBS -l walltime=00:10:00 #PBS -l select=1:mpiprocs=128:ncpus=128 +#PBS -l place=vscatter:exclhost #PBS -l debug=true model=aqm diff --git a/ecf/scripts/prep/jaqm_make_ics.ecf b/ecf/scripts/prep/jaqm_make_ics.ecf index 46a04c8869..35cc39e10c 100644 --- a/ecf/scripts/prep/jaqm_make_ics.ecf +++ b/ecf/scripts/prep/jaqm_make_ics.ecf @@ -3,7 +3,7 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 +#PBS -l walltime=00:10:00 #PBS -l select=1:mpiprocs=128:ncpus=128 #PBS -l place=vscatter:exclhost #PBS -l debug=true diff --git a/ecf/scripts/prep/jaqm_make_lbcs.ecf b/ecf/scripts/prep/jaqm_make_lbcs.ecf index 53a172e05a..593fefb2a9 100644 --- a/ecf/scripts/prep/jaqm_make_lbcs.ecf +++ b/ecf/scripts/prep/jaqm_make_lbcs.ecf @@ -3,7 +3,7 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 +#PBS -l walltime=00:15:00 #PBS -l select=1:mpiprocs=128:ncpus=128 #PBS -l place=vscatter:exclhost #PBS -l debug=true diff --git a/ecf/scripts/product/jaqm_bias_correction_o3.ecf b/ecf/scripts/product/jaqm_bias_correction_o3.ecf index 564108daa8..fcd06faf8b 100644 --- a/ecf/scripts/product/jaqm_bias_correction_o3.ecf +++ b/ecf/scripts/product/jaqm_bias_correction_o3.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 -#PBS -l select=1:mpiprocs=1:ompthreads=32:ncpus=32:mem=120G +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=1:ompthreads=32:ncpus=32:mem=128G #PBS -l debug=true model=aqm diff --git a/ecf/scripts/product/jaqm_bias_correction_pm25.ecf b/ecf/scripts/product/jaqm_bias_correction_pm25.ecf index 410a32868e..788591661f 100644 --- a/ecf/scripts/product/jaqm_bias_correction_pm25.ecf +++ b/ecf/scripts/product/jaqm_bias_correction_pm25.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 -#PBS -l select=1:mpiprocs=1:ompthreads=32:ncpus=32:mem=120G +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=1:ompthreads=32:ncpus=32:mem=128G #PBS -l debug=true model=aqm diff --git a/ecf/scripts/product/jaqm_post_stat_o3.ecf b/ecf/scripts/product/jaqm_post_stat_o3.ecf index 276307184d..c0e237afa0 100644 --- a/ecf/scripts/product/jaqm_post_stat_o3.ecf +++ b/ecf/scripts/product/jaqm_post_stat_o3.ecf @@ -3,7 +3,7 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 +#PBS -l walltime=00:10:00 #PBS -l select=1:mpiprocs=1:ncpus=1:mem=120G #PBS -l debug=true diff --git a/ecf/scripts/product/jaqm_post_stat_pm25.ecf b/ecf/scripts/product/jaqm_post_stat_pm25.ecf index 21652ced73..ef47910395 100644 --- a/ecf/scripts/product/jaqm_post_stat_pm25.ecf +++ b/ecf/scripts/product/jaqm_post_stat_pm25.ecf @@ -3,7 +3,7 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 +#PBS -l walltime=00:10:00 #PBS -l select=1:mpiprocs=1:ncpus=1:mem=120G #PBS -l debug=true diff --git a/ecf/scripts/product/jaqm_pre_post_stat.ecf b/ecf/scripts/product/jaqm_pre_post_stat.ecf index 4b3d2834a2..b5bc445251 100644 --- a/ecf/scripts/product/jaqm_pre_post_stat.ecf +++ b/ecf/scripts/product/jaqm_pre_post_stat.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 -#PBS -l select=1:mpiprocs=1:ncpus=1 +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=1:ncpus=1:mem=4G #PBS -l debug=true model=aqm diff --git a/ecf/scripts/pts_fire_emis/jaqm_fire_emission.ecf b/ecf/scripts/pts_fire_emis/jaqm_fire_emission.ecf index 221fb47d4e..b05a788712 100644 --- a/ecf/scripts/pts_fire_emis/jaqm_fire_emission.ecf +++ b/ecf/scripts/pts_fire_emis/jaqm_fire_emission.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=00:30:00 -#PBS -l select=1:mpiprocs=1:ncpus=1 +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=1:ncpus=1:mem=8G #PBS -l debug=true model=aqm diff --git a/ecf/scripts/pts_fire_emis/jaqm_point_source.ecf b/ecf/scripts/pts_fire_emis/jaqm_point_source.ecf index ef7feca984..1c26d38246 100644 --- a/ecf/scripts/pts_fire_emis/jaqm_point_source.ecf +++ b/ecf/scripts/pts_fire_emis/jaqm_point_source.ecf @@ -3,8 +3,8 @@ #PBS -S /bin/bash #PBS -q %QUEUE% #PBS -A %PROJ%-%PROJENVIR% -#PBS -l walltime=01:00:00 -#PBS -l select=1:mpiprocs=1:ncpus=1 +#PBS -l walltime=00:10:00 +#PBS -l select=1:mpiprocs=1:ncpus=1:mem=8G #PBS -l debug=true model=aqm diff --git a/parm/config/data_table b/parm/config/data_table deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/parm/config/var_defns.sh.template b/parm/config/var_defns.sh.template index 6268efac60..fb2b9f8a9a 100644 --- a/parm/config/var_defns.sh.template +++ b/parm/config/var_defns.sh.template @@ -52,7 +52,7 @@ TEST_ALT_EXTRN_MDL_SYSBASEDIR_ICS='' TEST_ALT_EXTRN_MDL_SYSBASEDIR_LBCS='' TEST_VX_FCST_INPUT_BASEDIR='' FIXgsm='@HOMEaqm@/fix/fix_am' -EXTRN_MDL_DATA_STORES='hpss aws nomads' +EXTRN_MDL_DATA_STORES='' # [workflow] WORKFLOW_ID='id_1697644234' @@ -82,13 +82,11 @@ AQM_RC_FN='aqm.rc' AQM_RC_TMPL_FN='aqm.rc' FV3_NML_BASE_SUITE_FP='@HOMEaqm@/parm/input.nml.FV3' FV3_NML_YAML_CONFIG_FP='@HOMEaqm@/parm/FV3.input.yml' -DATA_TABLE_TMPL_FP='@HOMEaqm@/parm/data_table' DIAG_TABLE_TMPL_FP='@HOMEaqm@/parm/diag_table_aqm.FV3_GFS_v16' FIELD_TABLE_TMPL_FP='@HOMEaqm@/parm/field_table_aqm.FV3_GFS_v16' MODEL_CONFIG_TMPL_FP='@HOMEaqm@/parm/model_configure' NEMS_CONFIG_TMPL_FP='@HOMEaqm@/parm/nems.configure' AQM_RC_TMPL_FP='@HOMEaqm@/parm/aqm.rc' -DATA_TABLE_FP='@HOMEaqm@/parm/config/data_table' FIELD_TABLE_FP='@HOMEaqm@/parm/config/field_table' NEMS_CONFIG_FP='@HOMEaqm@/parm/config/nems.configure' FV3_NML_FP='@HOMEaqm@/parm/config/input.nml' @@ -617,7 +615,7 @@ AQM_DUST_FILE_PREFIX='FENGSHA_p8_10km_inputs' AQM_DUST_FILE_SUFFIX='.nc' AQM_CANOPY_FILE_PREFIX='gfs.t12z.geo' AQM_CANOPY_FILE_SUFFIX='.canopy_regrid.nc' -DCOMINfire='/lfs/h1/ops/prod/dcom' +DCOMINfire='@DCOMROOT@' AQM_FIRE_FILE_PREFIX='Hourly_Emissions_regrid_NA_13km' AQM_FIRE_FILE_SUFFIX='_h72.nc' AQM_RC_FIRE_FREQUENCY='hourly' @@ -639,7 +637,7 @@ NEXUS_GRID_FN='grid_spec_793.nc' NUM_SPLIT_NEXUS='6' NEXUS_GFS_SFC_ARCHV_DIR='/NCEPPROD/hpssprod/runhistory' FIXemispt='@HOMEaqm@/fix/emission/nei2016v1-pt' -DCOMINairnow='/lfs/h1/ops/prod/dcom' +DCOMINairnow='@DCOMROOT@' COMINbicor='@COMaqm@' COMOUTbicor='@COMaqm@' diff --git a/parm/data_table b/parm/data_table deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/parm/diag_table_aqm.FV3_GFS_v16 b/parm/diag_table_aqm.FV3_GFS_v16 index ba86d0ba57..2c81a91c76 100644 --- a/parm/diag_table_aqm.FV3_GFS_v16 +++ b/parm/diag_table_aqm.FV3_GFS_v16 @@ -4,8 +4,8 @@ "grid_spec", -1, "months", 1, "days", "time" #"atmos_4xdaily", 6, "hours", 1, "days", "time" "atmos_static", -1, "hours", 1, "hours", "time" -"fv3_history", 1, "years", 1, "hours", "time" -"fv3_history2d", 1, "years", 1, "hours", "time" +"fv3_history", -1, "years", 1, "hours", "time" +"fv3_history2d", -1, "years", 1, "hours", "time" # #======================= diff --git a/scripts/exaqm_bias_correction_o3.sh b/scripts/exaqm_bias_correction_o3.sh index 6dcee2ec05..a7ce29116e 100755 --- a/scripts/exaqm_bias_correction_o3.sh +++ b/scripts/exaqm_bias_correction_o3.sh @@ -146,7 +146,7 @@ mkdir -p "${DATA}/data" mkdir -p "${cvt_output_dir}/${cvt_yyyy}/${cvt_pdy}" if [ "$(ls -A ${DCOMINairnow}/${cvt_pdy}/airnow)" ]; then - cp ${DCOMINairnow}/${cvt_pdy}/airnow/HourlyAQObs_${cvt_pdy}*.dat "${cvt_input_dir}/${cvt_yyyy}/${cvt_pdy}" + cpreq ${DCOMINairnow}/${cvt_pdy}/airnow/HourlyAQObs_${cvt_pdy}*.dat "${cvt_input_dir}/${cvt_yyyy}/${cvt_pdy}" else message_warning="WARNING: airnow data missing. skip this date ${cvt_pdy}" print_info_msg "${message_warning}" @@ -186,8 +186,8 @@ if [ -d "${DATA_grid}/${cyc}z/${PDY}" ]; then fi mkdir -p "${DATA_grid}/${cyc}z/${PDY}" -cp ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} -cp ${COMIN}/${cyc}/${NET}.${cycle}.met_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} +cpreq ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} +cpreq ${COMIN}/${cyc}/${NET}.${cycle}.met_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} #----------------------------------------------------------------------------- # STEP 3: Intepolating CMAQ O3 into AIRNow sites @@ -198,9 +198,9 @@ mkdir -p ${DATA}/data/site-lists.interp mkdir -p ${DATA}/out/ozone/${yyyy} mkdir -p ${DATA}/data/bcdata.${yyyymm}/interpolated/ozone/${yyyy} -cp ${PARMaqm}/aqm_utils/bias_correction/sites.valid.ozone.20230331.12z.list ${DATA}/data/site-lists.interp -cp ${PARMaqm}/aqm_utils/bias_correction/aqm.t12z.chem_sfc.f000.nc ${DATA}/data/coords -cp ${PARMaqm}/aqm_utils/bias_correction/config.interp.ozone.7-vars_${id_domain}.${cyc}z ${DATA} +cpreq ${PARMaqm}/aqm_utils/bias_correction/sites.valid.ozone.20230331.12z.list ${DATA}/data/site-lists.interp +cpreq ${PARMaqm}/aqm_utils/bias_correction/aqm.t12z.chem_sfc.f000.nc ${DATA}/data/coords +cpreq ${PARMaqm}/aqm_utils/bias_correction/config.interp.ozone.7-vars_${id_domain}.${cyc}z ${DATA} startmsg eval ${RUN_CMD_SERIAL} ${EXECaqm}/aqm_bias_interpolate config.interp.ozone.7-vars_${id_domain}.${cyc}z ${cyc}z ${PDY} ${PDY} ${REDIRECT_OUT_ERR} >> $pgmout 2>errfile @@ -208,32 +208,32 @@ export err=$?; err_chk if [ -e "${pgmout}" ]; then cat ${pgmout} fi -cp ${DATA}/out/ozone/${yyyy}/*nc ${DATA}/data/bcdata.${yyyymm}/interpolated/ozone/${yyyy} +cpreq ${DATA}/out/ozone/${yyyy}/*nc ${DATA}/data/bcdata.${yyyymm}/interpolated/ozone/${yyyy} if [ "${DO_AQM_SAVE_AIRNOW_HIST}" = "TRUE" ]; then mkdir -p ${COMOUTbicor}/bcdata.${yyyymm}/interpolated/ozone/${yyyy} - cp ${DATA}/out/ozone/${yyyy}/*nc ${COMOUTbicor}/bcdata.${yyyymm}/interpolated/ozone/${yyyy} + cpreq ${DATA}/out/ozone/${yyyy}/*nc ${COMOUTbicor}/bcdata.${yyyymm}/interpolated/ozone/${yyyy} # CSV files mkdir -p ${COMOUTbicor}/bcdata.${yyyymm}/airnow/csv/${yyyy}/${PDY} - mkdir -p ${COMOUTbicor}/bcdata.${yyyymm_m1}/airnow/csv/${yyyy_m1}/${PDYm1} - mkdir -p ${COMOUTbicor}/bcdata.${yyyymm_m2}/airnow/csv/${yyyy_m2}/${PDYm2} - mkdir -p ${COMOUTbicor}/bcdata.${yyyymm_m3}/airnow/csv/${yyyy_m3}/${PDYm3} - cp ${DCOMINairnow}/${PDYm1}/airnow/HourlyAQObs_${PDYm1}*.dat ${COMOUTbicor}/bcdata.${yyyymm_m1}/airnow/csv/${yyyy_m1}/${PDYm1} - cp ${DCOMINairnow}/${PDYm2}/airnow/HourlyAQObs_${PDYm2}*.dat ${COMOUTbicor}/bcdata.${yyyymm_m2}/airnow/csv/${yyyy_m2}/${PDYm2} - cp ${DCOMINairnow}/${PDYm3}/airnow/HourlyAQObs_${PDYm3}*.dat ${COMOUTbicor}/bcdata.${yyyymm_m3}/airnow/csv/${yyyy_m3}/${PDYm3} + for i in {1..3}; do + yyyymm_m="yyyymm_m${i}" + yyyy_m="yyyy_m${i}" + PDYm="PDYm${i}" + cpreq "${DATA}/data/bcdata.${!yyyymm_m}/airnow/csv/${!yyyy_m}/${!PDYm}/HourlyAQObs_${!PDYm}"*.dat "${COMOUTbicor}/bcdata.${!yyyymm_m}/airnow/csv/${!yyyy_m}/${!PDYm}" + done # NetCDF files mkdir -p ${COMOUTbicor}/bcdata.${yyyymm}/airnow/netcdf/${yyyy}/${PDY} - mkdir -p ${COMOUTbicor}/bcdata.${yyyymm_m1}/airnow/netcdf/${yyyy_m1}/${PDYm1} - mkdir -p ${COMOUTbicor}/bcdata.${yyyymm_m2}/airnow/netcdf/${yyyy_m2}/${PDYm2} - mkdir -p ${COMOUTbicor}/bcdata.${yyyymm_m3}/airnow/netcdf/${yyyy_m3}/${PDYm3} - cp ${DATA}/data/bcdata.${yyyymm_m1}/airnow/netcdf/${yyyy_m1}/${PDYm1}/HourlyAQObs.${PDYm1}.nc ${COMOUTbicor}/bcdata.${yyyymm_m1}/airnow/netcdf/${yyyy_m1}/${PDYm1} - cp ${DATA}/data/bcdata.${yyyymm_m2}/airnow/netcdf/${yyyy_m2}/${PDYm2}/HourlyAQObs.${PDYm2}.nc ${COMOUTbicor}/bcdata.${yyyymm_m2}/airnow/netcdf/${yyyy_m2}/${PDYm2} - cp ${DATA}/data/bcdata.${yyyymm_m3}/airnow/netcdf/${yyyy_m3}/${PDYm3}/HourlyAQObs.${PDYm3}.nc ${COMOUTbicor}/bcdata.${yyyymm_m3}/airnow/netcdf/${yyyy_m3}/${PDYm3} + for i in {1..3}; do + yyyymm_m="yyyymm_m${i}" + yyyy_m="yyyy_m${i}" + PDYm="PDYm${i}" + cpreq "${DATA}/data/bcdata.${!yyyymm_m}/airnow/netcdf/${!yyyy_m}/${!PDYm}/HourlyAQObs.${!PDYm}.nc" "${COMOUTbicor}/bcdata.${!yyyymm_m}/airnow/netcdf/${!yyyy_m}/${!PDYm}" + done mkdir -p "${COMOUTbicor}/bcdata.${yyyymm}/grid/${cyc}z/${PDY}" - cp ${COMIN}/${cyc}/${NET}.${cycle}.*_sfc.f*.nc ${COMOUTbicor}/bcdata.${yyyymm}/grid/${cyc}z/${PDY} + cpreq ${COMIN}/${cyc}/${NET}.${cycle}.*_sfc.f*.nc ${COMOUTbicor}/bcdata.${yyyymm}/grid/${cyc}z/${PDY} fi #----------------------------------------------------------------------------- @@ -245,7 +245,7 @@ rm -rf ${DATA}/data/bcdata* ln -sf ${COMINbicor}/bcdata* "${DATA}/data" mkdir -p ${DATA}/data/sites -cp ${PARMaqm}/aqm_utils/bias_correction/config.ozone.bias_corr_${id_domain}.${cyc}z ${DATA} +cpreq ${PARMaqm}/aqm_utils/bias_correction/config.ozone.bias_corr_${id_domain}.${cyc}z ${DATA} startmsg eval ${RUN_CMD_SERIAL} ${EXECaqm}/aqm_bias_correct config.ozone.bias_corr_${id_domain}.${cyc}z ${cyc}z ${BC_STDAY} ${PDY} ${REDIRECT_OUT_ERR} >> $pgmout 2>errfile @@ -253,17 +253,17 @@ export err=$?; err_chk if [ -e "${pgmout}" ]; then cat ${pgmout} fi -cp ${DATA}/out/ozone.corrected* ${COMOUT} +cpreq ${DATA}/out/ozone.corrected* ${COMOUT} if [ "${cyc}" = "12" ]; then - cp ${DATA}/data/sites/sites.valid.ozone.${PDY}.${cyc}z.list ${DATA} + cpreq ${DATA}/data/sites/sites.valid.ozone.${PDY}.${cyc}z.list ${DATA} fi #----------------------------------------------------------------------------- # STEP 5: converting netcdf to grib format #----------------------------------------------------------------------------- -cp ${COMIN}/${cyc}/ozone.corrected.${PDY}.${cyc}z.nc . +cpreq ${COMIN}/${cyc}/ozone.corrected.${PDY}.${cyc}z.nc . # cat >bias_cor.ini < filesize - export XLFRTEOPTS="unit_vars=yes" - export FORT11=${NET}.${cycle}.max_${hr}hr_o3_bc.227.grib2 - export FORT12="filesize" - export FORT51=${NET}-${hr}hro3-maxi.227.grib2.temp - tocgrib2super < ${PARMaqm}/aqm_utils/wmo/grib2_aqm-${hr}hro3-maxi.${cycle}.227 - - echo `ls -l ${NET}-${hr}hro3-maxi.227.grib2.temp | awk '{print $5} '` > filesize - export XLFRTEOPTS="unit_vars=yes" - export FORT11=${NET}-${hr}hro3-maxi.227.grib2.temp - export FORT12="filesize" - export FORT51=awpaqm.${cycle}.${hr}ho3-max-bc.227.grib2 - tocgrib2super < ${PARMaqm}/aqm_utils/wmo/grib2_aqm-${hr}hro3-maxi.${cycle}.227 - done - - # Post Files to COMOUTwmo - cp awpaqm.${cycle}.*o3-max-bc.227.grib2 ${COMOUTwmo} - - # Distribute Data - if [ "${SENDDBN_NTC}" = "YES" ] ; then - ${DBNROOT}/bin/dbn_alert ${DBNALERT_TYPE} ${NET} ${job} ${COMOUTwmo}/awpaqm.${cycle}.1ho3-max-bc.227.grib2 - ${DBNROOT}/bin/dbn_alert ${DBNALERT_TYPE} ${NET} ${job} ${COMOUTwmo}/awpaqm.${cycle}.8ho3-max-bc.227.grib2 - fi fi fi @@ -403,7 +378,7 @@ fhr=01 while [ "${fhr}" -le "${FCST_LEN_HRS}" ]; do fhr3d=$( printf "%03d" "${fhr}" ) - cp ${DATA}/${NET}.${cycle}.awpozcon_bc.f${fhr3d}.${id_domain}.grib2 ${COMOUT} + cpreq ${DATA}/${NET}.${cycle}.awpozcon_bc.f${fhr3d}.${id_domain}.grib2 ${COMOUT} # create GRIB file to convert to grid 227 then to GRIB2 for NDFD cat ${DATA}/${NET}.${cycle}.awpozcon_bc.f${fhr3d}.${id_domain}.grib2 >> tmpfile @@ -427,13 +402,13 @@ newgrib2file2=${NET}.${cycle}.ave_8hr_o3_bc.227.grib2 grid227="lambert:265.0000:25.0000:25.0000 226.5410:1473:5079.000 12.1900:1025:5079.000" wgrib2 tmpfile.1hr -set_grib_type c3b -new_grid_winds earth -new_grid ${grid227} ${newgrib2file1} -cp tmpfile.1hr ${COMOUT}/${NET}.${cycle}.ave_1hr_o3_bc.${id_domain}.grib2 -cp ${NET}.${cycle}.ave_1hr_o3_bc.227.grib2 ${COMOUT} +cpreq tmpfile.1hr ${COMOUT}/${NET}.${cycle}.ave_1hr_o3_bc.${id_domain}.grib2 +cpreq ${NET}.${cycle}.ave_1hr_o3_bc.227.grib2 ${COMOUT} if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then wgrib2 tmpfile.8hr -set_grib_type c3b -new_grid_winds earth -new_grid ${grid227} ${newgrib2file2} - cp tmpfile.8hr ${COMOUT}/${NET}.${cycle}.ave_8hr_o3_bc.${id_domain}.grib2 - cp ${NET}.${cycle}.ave_8hr_o3_bc.227.grib2 ${COMOUT} + cpreq tmpfile.8hr ${COMOUT}/${NET}.${cycle}.ave_8hr_o3_bc.${id_domain}.grib2 + cpreq ${NET}.${cycle}.ave_8hr_o3_bc.227.grib2 ${COMOUT} fi if [ "${SENDDBN}" = "YES" ] ; then @@ -447,7 +422,7 @@ if [ "${SENDDBN}" = "YES" ] ; then fi ################################################# -# Part III: Insert WMO header to GRIB files +# STEP 7: Insert WMO header to GRIB files ################################################# if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then @@ -483,11 +458,11 @@ if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then tocgrib2super < ${PARMaqm}/aqm_utils/wmo/grib2_aqm-${hr}hro3_bc-maxi.${cycle}.227 # Post Files to COMOUTwmo - cp awpaqm.${cycle}.${hr}ho3-bc.227.grib2 ${COMOUTwmo} - cp awpaqm.${cycle}.${hr}ho3-max-bc.227.grib2 ${COMOUTwmo} + cpreq awpaqm.${cycle}.${hr}ho3-bc.227.grib2 ${COMOUTwmo} + cpreq awpaqm.${cycle}.${hr}ho3-max-bc.227.grib2 ${COMOUTwmo} # Distribute Data - if [ "${SENDDBN}" = "YES" ]; then + if [ "${SENDDBN_NTC}" = "YES" ]; then ${DBNROOT}/bin/dbn_alert ${DBNALERT_TYPE} ${NET} ${job} ${COMOUTwmo}/awpaqm.${cycle}.${hr}ho3-bc.227.grib2 ${DBNROOT}/bin/dbn_alert ${DBNALERT_TYPE} ${NET} ${job} ${COMOUTwmo}/awpaqm.${cycle}.${hr}ho3-max-bc.227.grib2 fi diff --git a/scripts/exaqm_bias_correction_pm25.sh b/scripts/exaqm_bias_correction_pm25.sh index 9c2ed7e497..6ed6f81233 100755 --- a/scripts/exaqm_bias_correction_pm25.sh +++ b/scripts/exaqm_bias_correction_pm25.sh @@ -144,7 +144,7 @@ mkdir -p "${DATA}/data" mkdir -p "${cvt_input_dir}/${cvt_yyyy}/${cvt_pdy}" mkdir -p "${cvt_output_dir}/${cvt_yyyy}/${cvt_pdy}" if [ "$(ls -A ${DCOMINairnow}/${cvt_pdy}/airnow)" ]; then - cp ${DCOMINairnow}/${cvt_pdy}/airnow/HourlyAQObs_${cvt_pdy}*.dat "${cvt_input_dir}/${cvt_yyyy}/${cvt_pdy}" + cpreq ${DCOMINairnow}/${cvt_pdy}/airnow/HourlyAQObs_${cvt_pdy}*.dat "${cvt_input_dir}/${cvt_yyyy}/${cvt_pdy}" else message_warning="WARNING: airnow data missing. skip this date ${cvt_pdy}" print_info_msg "${message_warning}" @@ -184,8 +184,8 @@ if [ -d "${DATA_grid}/${cyc}z/${PDY}" ]; then fi mkdir -p "${DATA_grid}/${cyc}z/${PDY}" -cp ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} -cp ${COMIN}/${cyc}/${NET}.${cycle}.met_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} +cpreq ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} +cpreq ${COMIN}/${cyc}/${NET}.${cycle}.met_sfc.*.nc ${DATA_grid}/${cyc}z/${PDY} #----------------------------------------------------------------------- # STEP 3: Intepolating CMAQ PM2.5 into AIRNow sites @@ -196,9 +196,9 @@ mkdir -p ${DATA}/data/site-lists.interp mkdir -p ${DATA}/out/pm25/${yyyy} mkdir -p ${DATA}/data/bcdata.${yyyymm}/interpolated/pm25/${yyyy} -cp ${PARMaqm}/aqm_utils/bias_correction/sites.valid.pm25.20230331.12z.list ${DATA}/data/site-lists.interp -cp ${PARMaqm}/aqm_utils/bias_correction/aqm.t12z.chem_sfc.f000.nc ${DATA}/data/coords -cp ${PARMaqm}/aqm_utils/bias_correction/config.interp.pm2.5.5-vars_${id_domain}.${cyc}z ${DATA} +cpreq ${PARMaqm}/aqm_utils/bias_correction/sites.valid.pm25.20230331.12z.list ${DATA}/data/site-lists.interp +cpreq ${PARMaqm}/aqm_utils/bias_correction/aqm.t12z.chem_sfc.f000.nc ${DATA}/data/coords +cpreq ${PARMaqm}/aqm_utils/bias_correction/config.interp.pm2.5.5-vars_${id_domain}.${cyc}z ${DATA} startmsg eval ${RUN_CMD_SERIAL} ${EXECaqm}/aqm_bias_interpolate config.interp.pm2.5.5-vars_${id_domain}.${cyc}z ${cyc}z ${PDY} ${PDY} ${REDIRECT_OUT_ERR} >> $pgmout 2>errfile @@ -206,11 +206,11 @@ export err=$? err_chk if [ -e "${pgmout}" ]; then cat ${pgmout} fi -cp ${DATA}/out/pm25/${yyyy}/*nc ${DATA}/data/bcdata.${yyyymm}/interpolated/pm25/${yyyy} +cpreq ${DATA}/out/pm25/${yyyy}/*nc ${DATA}/data/bcdata.${yyyymm}/interpolated/pm25/${yyyy} if [ "${DO_AQM_SAVE_AIRNOW_HIST}" = "TRUE" ]; then mkdir -p ${COMOUTbicor}/bcdata.${yyyymm}/interpolated/pm25/${yyyy} -cp ${DATA}/out/pm25/${yyyy}/*nc ${COMOUTbicor}/bcdata.${yyyymm}/interpolated/pm25/${yyyy} +cpreq ${DATA}/out/pm25/${yyyy}/*nc ${COMOUTbicor}/bcdata.${yyyymm}/interpolated/pm25/${yyyy} fi #----------------------------------------------------------------------- @@ -220,29 +220,32 @@ fi rm -rf ${DATA}/data/bcdata* ln -sf ${COMINbicor}/bcdata* "${DATA}/data" - +if [ $(find . -xtype l|wc -l) -gt 0 ]; then + message_txt="FATAL ERROR broken file or dir link found under ${DATA}" + err_exit "${message_txt}" +fi mkdir -p ${DATA}/data/sites -cp ${PARMaqm}/aqm_utils/bias_correction/config.pm2.5.bias_corr_${id_domain}.${cyc}z ${DATA} -cp ${PARMaqm}/aqm_utils/bias_correction/site_blocking.pm2.5.2021.0427.2-sites.txt ${DATA} -cp ${PARMaqm}/aqm_utils/bias_correction/bias_thresholds.pm2.5.2015.1030.32-sites.txt ${DATA} +cpreq ${PARMaqm}/aqm_utils/bias_correction/config.pm2.5.bias_corr_${id_domain}.${cyc}z ${DATA} +cpreq ${PARMaqm}/aqm_utils/bias_correction/site_blocking.pm2.5.2021.0427.2-sites.txt ${DATA} +cpreq ${PARMaqm}/aqm_utils/bias_correction/bias_thresholds.pm2.5.2015.1030.32-sites.txt ${DATA} eval ${RUN_CMD_SERIAL} ${EXECaqm}/aqm_bias_correct config.pm2.5.bias_corr_${id_domain}.${cyc}z ${cyc}z ${BC_STDAY} ${PDY} ${REDIRECT_OUT_ERR} >> $pgmout 2>errfile export err=$?; err_chk if [ -e "${pgmout}" ]; then cat ${pgmout} fi -cp $DATA/out/pm2.5.corrected* ${COMOUT} +cpreq $DATA/out/pm2.5.corrected* ${COMOUT} if [ "${cyc}" = "12" ]; then - cp ${DATA}/data/sites/sites.valid.pm25.${PDY}.${cyc}z.list ${DATA} + cpreq ${DATA}/data/sites/sites.valid.pm25.${PDY}.${cyc}z.list ${DATA} fi #------------------------------------------------------------------------ # STEP 5: converting netcdf to grib format #------------------------------------------------------------------------ -cp ${COMIN}/${cyc}/pm2.5.corrected.${PDY}.${cyc}z.nc . +cpreq ${COMIN}/${cyc}/pm2.5.corrected.${PDY}.${cyc}z.nc . # convert from netcdf to grib2 format cat >bias_cor.ini < ${DATA}/${DATA_TABLE_FN} << EOF +EOF +fi create_symlink_to_file target="${FIELD_TABLE_FP}" \ symlink="${DATA}/${FIELD_TABLE_FN}" \ @@ -434,7 +438,7 @@ if [ "${DO_ENSEMBLE}" = TRUE ] && ([ "${DO_SPP}" = TRUE ] || [ "${DO_SPPT}" = TR --cdate "$CDATE" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to function to create the ensemble-based namelist + message_txt="FATAL ERROR Call to function to create the ensemble-based namelist for the current cycle's (cdate) run directory (DATA) failed: cdate = \"${CDATE}\" DATA = \"${DATA}\"" @@ -469,7 +473,7 @@ if [ "${DO_FCST_RESTART}" = "TRUE" ] && [ $coupler_res_ct -gt 0 ] && [ $FCST_LEN --restart export err=$? if [ $err -ne 0 ]; then - message_txt="Call to function to update the FV3 input.nml file for restart + message_txt="FATAL ERROR Call to function to update the FV3 input.nml file for restart for the current cycle's (cdate) run directory (DATA) failed: cdate = \"${CDATE}\" DATA = \"${DATA}\"" @@ -541,7 +545,7 @@ if [ "${CPL_AQM}" = "TRUE" ]; then --init_concentrations "${init_concentrations}" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to function to create an aqm.rc file for the current + message_txt="FATAL ERROR Call to function to create an aqm.rc file for the current cycle's (cdate) run directory (DATA) failed: cdate = \"${CDATE}\" DATA = \"${DATA}\"" @@ -567,7 +571,7 @@ fi --dt-atmos "${DT_ATMOS}" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to function to create a model configuration file + message_txt="FATAL ERROR Call to function to create a model configuration file for the current cycle's (cdate) run directory (DATA) failed: cdate = \"${CDATE}\" DATA = \"${DATA}\"" @@ -586,7 +590,7 @@ fi --run-dir "${DATA}" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to function to create a diag table file for the current + message_txt="FATAL ERROR Call to function to create a diag table file for the current cycle's (cdate) run directory (DATA) failed: DATA = \"${DATA}\"" err_exit "${message_txt}" @@ -604,7 +608,7 @@ fi --run-dir "${DATA}" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to function to create a NEMS configuration file for + message_txt="FATAL ERROR Call to function to create a NEMS configuration file for the current cycle's (cdate) run directory (DATA) failed: DATA = \"${DATA}\"" err_exit "${message_txt}" @@ -689,7 +693,7 @@ if [ -e "$pgmout" ]; then fi -eval cp -p ${AQM_RC_PRODUCT_FN} ${COMOUT}/${NET}.${cycle}${dot_ensmem}.${AQM_RC_PRODUCT_FN} +eval cpreq -p ${AQM_RC_PRODUCT_FN} ${COMOUT}/${NET}.${cycle}${dot_ensmem}.${AQM_RC_PRODUCT_FN} # #----------------------------------------------------------------------- # diff --git a/scripts/exaqm_forecast_manager.sh b/scripts/exaqm_forecast_manager.sh index 6ca7ccd7f2..ea72325f73 100755 --- a/scripts/exaqm_forecast_manager.sh +++ b/scripts/exaqm_forecast_manager.sh @@ -45,7 +45,7 @@ This is the ex-script for the task that copy AQM forecast and RESTART file to CO umbrella_forecast_data=${DATAROOT}/${RUN}_forecast_${cyc}_${aqm_ver} shared_output_data=${umbrella_forecast_data}/output shared_restart_data=${umbrella_forecast_data}/RESTART -NCP="cp -p" +NCP="cpreq -p" # Configure scan target [ ${cyc} = "00" ] && FCST_LEN_HRS=6 [ ${cyc} = "06" ] && FCST_LEN_HRS=72 @@ -134,7 +134,7 @@ if [ $cyc = 06 -o $cyc = 12 ]; then sleep 60 time_limit=$(($time_limit+1)) if [ $time_limit -ge 60 ]; then - echo "ABORTING after waiting for forecast output file ${source_log}" + echo "FATAL ERROR - ABORTING after waiting for forecast output file ${source_log}" exit 9 fi fi @@ -145,8 +145,8 @@ if [ $cyc = 06 -o $cyc = 12 ]; then if [ $rst_exist = "NO" ]; then sleep 60 (( icnt=icnt+1 )) - if [ $icnt -ge 170 ]; then - echo "ABORTING after waiting for forecast RESTART file ${shared_restart_data}/${rst_yyyymmdd}.${rst_hh}0000.coupler.res" + if [ $icnt -ge 210 ]; then + echo "FATAL ERROR - ABORTING after waiting for forecast RESTART file ${shared_restart_data}/${rst_yyyymmdd}.${rst_hh}0000.coupler.res" exit 9 fi fi @@ -191,8 +191,8 @@ else else sleep 60 (( icnt=icnt+1 )) - if [ $icnt -ge 40 ]; then - echo "ABORTING after waiting for forecast RESTART file ${shared_restart_data}/${rst_yyyymmdd}.${rst_hh}0000.coupler.res" + if [ $icnt -ge 90 ]; then + echo "FATAL ERROR - ABORTING after waiting for forecast RESTART file ${shared_restart_data}/${rst_yyyymmdd}.${rst_hh}0000.coupler.res" exit 9 fi fi diff --git a/scripts/exaqm_ics.sh b/scripts/exaqm_ics.sh index 9400274983..3abe67073b 100755 --- a/scripts/exaqm_ics.sh +++ b/scripts/exaqm_ics.sh @@ -89,7 +89,7 @@ if [ ! -r ${fv_tracer_file} ]; then print_info_msg " Tracer file found: \"${fv_tracer_file}\"" else - message_txt="No suitable tracer restart file found." + message_txt="FATAL ERROR No suitable tracer restart file ${rst_dir}/${rst_file} found." err_exit "${message_txt}" fi fi @@ -117,18 +117,18 @@ print_info_msg " tracer file: \"${fv_tracer_file}\" FV3 IC file: \"${gfs_ic_file}\"" -cp ${gfs_ic_file} ${wrk_ic_file} +cpreq ${gfs_ic_file} ${wrk_ic_file} ${USHaqm}/aqm_utils_python/add_aqm_ics.py --fv_tracer_file "${fv_tracer_file}" --wrk_ic_file "${wrk_ic_file}" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"add_aqm_ics.py\" failed." + message_txt="FATAL ERROR Call to python script \"add_aqm_ics.py\" failed." err_exit "${message_txt}" fi ncatted -a checksum,,d,s, tmp1.nc export err=$? if [ $err -ne 0 ]; then - message_txt="Call to NCATTED returned with nonzero exit code." + message_txt="FATAL ERROR Call to NCATTED returned with nonzero exit code." err_exit "${message_txt}" fi diff --git a/scripts/exaqm_lbcs.sh b/scripts/exaqm_lbcs.sh index cbd39c4bc1..9e2e309adb 100755 --- a/scripts/exaqm_lbcs.sh +++ b/scripts/exaqm_lbcs.sh @@ -7,6 +7,9 @@ postmsg "$msg" export pgm=aqm_lbcs +EMAIL_SDM=${EMAIL_SDM:-NO} +GEFS_AERO_LBCS_CHECK=${GEFS_AERO_LBCS_CHECK:-YES} + #----------------------------------------------------------------------- # # Source the variable definitions file and the bash utility functions. @@ -106,20 +109,20 @@ if [ ${DO_AQM_CHEM_LBCS} = "TRUE" ]; then chem_lbcs_fn=${ext_lbcs_file///${mm}} chem_lbcs_fp=${FIXaqmchem_lbcs}/${chem_lbcs_fn} - if [ -f ${chem_lbcs_fp} ]; then + if [ -s ${chem_lbcs_fp} ]; then #Copy the boundary condition file to the current location - cp ${chem_lbcs_fp} . + cpreq ${chem_lbcs_fp} . else - message_txt="The chemical LBC files do not exist: + message_txt="WARNING The chemical LBC files do not exist: CHEM_BOUNDARY_CONDITION_FILE = \"${chem_lbcs_fp}\"" err_exit "${message_txt}" fi # Function to check if the file exists function check_file_existence() { - if [ -f "$1" ]; then + if [ -s "$1" ]; then echo "Found netCDF file: $1" - cp "$1" . + cpreq "$1" . else echo "Error: NetCDF file not found: $1" return 1 @@ -141,7 +144,7 @@ if [ ${DO_AQM_CHEM_LBCS} = "TRUE" ]; then else # File doesn't exist, wait for 5 seconds and decrement the retry count sync - sleep 60 + sleep 20 ((retries--)) fi done @@ -152,13 +155,13 @@ if [ ${DO_AQM_CHEM_LBCS} = "TRUE" ]; then fi echo "Checking file: ${INPUT_DATA}/${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f${fhr}.nc" - cp "$netcdf_file" . + cpreq "$netcdf_file" . ncks -A ${chem_lbcs_fn} ${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f${fhr}.nc - cp ${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f${fhr}.nc ${INPUT_DATA} + cpreq ${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f${fhr}.nc ${INPUT_DATA} export err=$? if [ $err -ne 0 ]; then - message_txt="Call to NCKS returned with nonzero exit code." + message_txt="FATAL ERROR Call to NCKS returned with nonzero exit code." err_exit "${message_txt}" fi done @@ -175,6 +178,7 @@ fi # #----------------------------------------------------------------------- # +# if [ ${DO_AQM_GEFS_LBCS} = "TRUE" ]; then AQM_GEFS_FILE_CYC=${AQM_GEFS_FILE_CYC:-"${hh}"} AQM_GEFS_FILE_CYC=$( printf "%02d" "${AQM_GEFS_FILE_CYC}" ) @@ -196,7 +200,7 @@ if [ ${DO_AQM_GEFS_LBCS} = "TRUE" ]; then check_file_with_recheck() { local file_path="$1" local max_rechecks=5 - local wait_time=20 + local wait_time=5 for recheck_count in $(seq 1 $max_rechecks); do if [ -e "$file_path" ]; then @@ -228,11 +232,18 @@ check_file_with_recheck() { echo "File exists after recheck: $AQM_MOFILE_FHR_FP" else # File not found even after rechecks - echo "File was not found even after rechecks: $AQM_MOFILE_FHR_FP" + echo "WARNING File was not found even after rechecks: $AQM_MOFILE_FHR_FP" + + GEFS_AERO_LBCS_CHECK="NO" + + if [ "${EMAIL_SDM^^}" = "YES" ] ; then + MAILFROM=${MAILFROM:-"nco.spa@noaa.gov"} + #MAILTO=${MAILTO:-"sdm@noaa.gov"} + MAILTO=${MAILTO:-"${maillist}"} + subject="${cyc}Z ${RUN^^} Output for ${basinname:-} GEFS_AERO LBCS " + mail.py -s "${subject}" -v "${MAILTO}" + fi -# if [ ! -z "${maillist_group1}" ]; then -# echo "${message_warning}" | mail.py $maillist_group1 -# fi fi fi done @@ -271,7 +282,7 @@ EOF exec_fn="gefs2lbc_para" exec_fp="$EXECaqm/${exec_fn}" - if [ ! -f "${exec_fp}" ]; then + if [ ! -s "${exec_fp}" ]; then print_err_msg_exit "\ The executable (exec_fp) for GEFS LBCs does not exist: exec_fp = \"${exec_fp}\" @@ -284,20 +295,29 @@ Please ensure that you've built this executable." # #---------------------------------------------------------------------- # + if [ ${GEFS_AERO_LBCS_CHECK} = "YES" ]; then startmsg sync - eval ${RUN_CMD_AQMLBC} ${exec_fp} ${REDIRECT_OUT_ERR} >> $pgmout 2>errfile + eval ${RUN_CMD_AQMLBC} ${exec_fp} ${REDIRECT_OUT_ERR} >> $pgmout 2>errfile export err=$?; err_chk if [ -e "${pgmout}" ]; then cat ${pgmout} fi - cp -rp ${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f*.nc ${INPUT_DATA} + cpreq -rp ${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f*.nc ${INPUT_DATA} print_info_msg " ======================================================================== Successfully added GEFS aerosol LBCs !!! ========================================================================" # + else + cpreq -rp ${NET}.${cycle}${dot_ensmem}.gfs_bndy.tile7.f*.nc ${INPUT_DATA} + + print_info_msg " +======================================================================== + Failed to add GEFS aerosol LBCs due to missing GEFS LBCS ! +========================================================================" + fi fi # print_info_msg " diff --git a/scripts/exaqm_make_ics.sh b/scripts/exaqm_make_ics.sh index 16ee68c519..76a2377794 100755 --- a/scripts/exaqm_make_ics.sh +++ b/scripts/exaqm_make_ics.sh @@ -166,8 +166,9 @@ if [ "${RUN_TASK_GET_EXTRN_ICS}" = "FALSE" ]; then $cmd export err=$? + if [ $err -ne 0 ]; then - message_txt="Call to retrieve_data.py failed with a non-zero exit status. + message_txt="FATAL ERROR Call to retrieve_data.py failed with a non-zero exit status. The command was: ${cmd} " @@ -188,8 +189,8 @@ else if [ "${WORKLFOW_MANAGER}" = "ecflow" ]; then extrn_mdl_staging_dir="${DATAROOT}/${RUN}_get_extrn_ics_${cyc}.${share_pid}" if [ ! -d ${extrn_mdl_staging_dir} ]; then - echo "Fatal error extrn_mdl_staging_dir not found in production mode" - exit 7 + message_txt="FATAL ERROR ${extrn_mdl_staging_dir} not found in production mode" + err_exit "${message_txt}" fi else extrn_mdl_staging_dir="${DATAROOT}/get_extrn_ics.${share_pid}" @@ -216,7 +217,7 @@ case "${CCPP_PHYS_SUITE}" in varmap_file="GFSphys_var_map.txt" ;; *) - message_txt="The variable \"varmap_file\" has not yet been specified for + message_txt="FATAL ERROR The variable \"varmap_file\" has not yet been specified for this physics suite (CCPP_PHYS_SUITE): CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\"" err_exit "${message_txt}" @@ -462,7 +463,7 @@ case "${EXTRN_MDL_NAME_ICS}" in ;; *) - message_txt="External-model-dependent namelist variables have not yet been specified + message_txt="FATAL ERROR external-model-dependent namelist variables have not yet been specified for this external IC model (EXTRN_MDL_NAME_ICS): EXTRN_MDL_NAME_ICS = \"${EXTRN_MDL_NAME_ICS}\"" err_exit "${message_txt}" @@ -488,8 +489,8 @@ hh="${EXTRN_MDL_CDATE:8:2}" # exec_fn="chgres_cube" exec_fp="$EXECaqm/${exec_fn}" -if [ ! -f "${exec_fp}" ]; then - message_txt="The executable (exec_fp) for generating initial conditions +if [ ! -s "${exec_fp}" ]; then + message_txt="FATAL ERROR The executable (exec_fp) for generating initial conditions on the FV3-LAM native grid does not exist: exec_fp = \"${exec_fp}\" Please ensure that you've built this executable." @@ -562,7 +563,7 @@ nml_fn="fort.41" ${USHaqm}/set_namelist.py -q -u "$settings" -o ${nml_fn} err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script set_namelist.py to set the variables + message_txt="FATAL ERROR Call to python script set_namelist.py to set the variables in the namelist file read in by the ${exec_fn} executable failed. Parameters passed to this script are: Name of output namelist file: @@ -673,17 +674,16 @@ if [ "${DO_REAL_TIME}" == "TRUE" ] && [ "${CPL_AQM}" == "TRUE" ]; then Tracer file: \"${fv_tracer_file1}\" not found." print_info_msg " Instead using tracer file: \"${fv_tracer_file2}\"" - cp ${fv_tracer_file2} ${fv_tracer_file1} - #cp ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/coupler.res - cp ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/ + cpreq ${fv_tracer_file2} ${fv_tracer_file1} + cpreq ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/ else print_info_msg " Both tracer files: \"${fv_tracer_file1}\" and \"${fv_tracer_file2}\" not found." print_info_msg " Instead using dummy tracer file: \"${fv_tracer_file_fix}\"" - cp ${fv_tracer_file_fix} ${fv_tracer_file1} - cp ${rst_dir_fix}/coupler.res ${rst_dir1} + cpreq ${fv_tracer_file_fix} ${fv_tracer_file1} + cpreq ${rst_dir_fix}/coupler.res ${rst_dir1} sed -i "s/yyyy/$yyyy/g" ${rst_dir1}/coupler.res sed -i "s/mm/$mm/g" ${rst_dir1}/coupler.res sed -i "s/dd/$dd/g" ${rst_dir1}/coupler.res @@ -692,9 +692,9 @@ if [ "${DO_REAL_TIME}" == "TRUE" ] && [ "${CPL_AQM}" == "TRUE" ]; then fi elif [ -s ${fv_tracer_file2} ]; then mkdir -p ${rst_dir1} - cp ${fv_tracer_file2} ${fv_tracer_file1} - #cp ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/coupler.res - cp ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/ + cpreq ${fv_tracer_file2} ${fv_tracer_file1} + #cpreq ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/coupler.res + cpreq ${rst_dir2}/${PDY}.${cyc}0000.coupler.res ${rst_dir1}/ print_info_msg " Tracer file: \"${fv_tracer_file1}\" not found." print_info_msg " @@ -706,8 +706,8 @@ if [ "${DO_REAL_TIME}" == "TRUE" ] && [ "${CPL_AQM}" == "TRUE" ]; then \"${fv_tracer_file2}\" not found." print_info_msg " Instead using dummy tracer file: \"${fv_tracer_file_fix}\"" - cp ${fv_tracer_file_fix} ${fv_tracer_file1} - cp ${rst_dir_fix}/coupler.res ${rst_dir1} + cpreq ${fv_tracer_file_fix} ${fv_tracer_file1} + cpreq ${rst_dir_fix}/coupler.res ${rst_dir1} sed -i "s/yyyy/$yyyy/g" ${rst_dir1}/coupler.res sed -i "s/mm/$mm/g" ${rst_dir1}/coupler.res sed -i "s/dd/$dd/g" ${rst_dir1}/coupler.res diff --git a/scripts/exaqm_make_lbcs.sh b/scripts/exaqm_make_lbcs.sh index 922fdc4870..edbdc05251 100755 --- a/scripts/exaqm_make_lbcs.sh +++ b/scripts/exaqm_make_lbcs.sh @@ -169,7 +169,7 @@ if [ "${RUN_TASK_GET_EXTRN_LBCS}" = "FALSE" ]; then $cmd export err=$? if [ $err -ne 0 ]; then - message_txt="Call to retrieve_data.py failed with a non-zero exit status. + message_txt="FATAL ERROR Call to retrieve_data.py failed with a non-zero exit status. The command was: ${cmd} " @@ -190,8 +190,8 @@ else if [ "${WORKLFOW_MANAGER}" = "ecflow" ]; then extrn_mdl_staging_dir="${DATAROOT}/${RUN}_get_extrn_lbcs_${cyc}.${share_pid}" if [ ! -d ${extrn_mdl_staging_dir} ]; then - echo "Fatal error extrn_mdl_staging_dir not found in production mode" - exit 7 + message_txt="FATAL ERROR ${extrn_mdl_staging_dir} not found in production mode" + err_exit "${message_txt}" fi else extrn_mdl_staging_dir="${DATAROOT}/get_extrn_lbcs.${share_pid}" @@ -234,7 +234,7 @@ case "${CCPP_PHYS_SUITE}" in varmap_file="GFSphys_var_map.txt" ;; *) - message_txt="The variable \"varmap_file\" has not yet been specified + message_txt="FATAL ERROR The variable \"varmap_file\" has not yet been specified for this physics suite (CCPP_PHYS_SUITE): CCPP_PHYS_SUITE = \"${CCPP_PHYS_SUITE}\"" err_exit "${message_txt}" @@ -389,7 +389,7 @@ case "${EXTRN_MDL_NAME_LBCS}" in fn_atm="${EXTRN_MDL_FNS[0]}" ;; *) - message_txt="External-model-dependent namelist variables have not yet been + message_txt="FATAL ERROR External-model-dependent namelist variables have not yet been specified for this external LBC model (EXTRN_MDL_NAME_LBCS): EXTRN_MDL_NAME_LBCS = \"${EXTRN_MDL_NAME_LBCS}\"" err_exit "${message_txt}" @@ -405,8 +405,8 @@ esac # exec_fn="chgres_cube" exec_fp="$EXECaqm/${exec_fn}" -if [ ! -f "${exec_fp}" ]; then - message_txt="The executable (exec_fp) for generating initial conditions +if [ ! -s "${exec_fp}" ]; then + message_txt="FATAL ERROR The executable (exec_fp) for generating initial conditions on the FV3-LAM native grid does not exist: exec_fp = \"${exec_fp}\" Please ensure that you've built this executable." @@ -450,7 +450,7 @@ for (( i=0; i<${num_fhrs}; i++ )); do fn_grib2="${EXTRN_MDL_FNS[$i]}" ;; *) - message_txt="The external model output file name to use in the chgres_cube + message_txt="FATAL ERROR The external model output file name to use in the chgres_cube FORTRAN namelist file has not specified for this external LBC model (EXTRN_MDL_NAME_LBCS): EXTRN_MDL_NAME_LBCS = \"${EXTRN_MDL_NAME_LBCS}\"" err_exit "${message_txt}" @@ -528,7 +528,7 @@ settings=" ${USHaqm}/set_namelist.py -q -u "$settings" -o ${nml_fn} export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script set_namelist.py to set the variables + message_txt="FATAL ERROR Call to python script set_namelist.py to set the variables in the namelist file read in by the ${exec_fn} executable failed. Parameters passed to this script are: Name of output namelist file: diff --git a/scripts/exaqm_nexus_emission.sh b/scripts/exaqm_nexus_emission.sh index 28f4e93759..dc61523bf5 100755 --- a/scripts/exaqm_nexus_emission.sh +++ b/scripts/exaqm_nexus_emission.sh @@ -126,13 +126,8 @@ if [ "${RUN_TASK_NEXUS_GFS_SFC}" = "FALSE" ]; then create_symlink_to_file target="${gfs_sfc_fp}" symlink="${gfs_sfc_fn}" \ relative="${relative_link_flag}" else - message_txt="WARNING: SFC file for nexus emission for \"${cycle}\" does not exist in the directory: - GFS_SFC_LOCAL_DIR = \"${GFS_SFC_LOCAL_DIR}\" - gfs_sfc_fn = \"${gfs_sfc_fn}\"" - print_info_msg "${message_txt}" -# if [ ! -z "${maillist_group1}" ]; then -# echo "${message_txt}" | mail.py $maillist_group1 -# fi + message_txt="FATAL ERROR SFC file \"${GFS_SFC_LOCAL_DIR}/${gfs_sfc_fn}\" for nexus emission for \"${cycle}\" does not exist" + err_exit "${message_txt}" fi done @@ -142,8 +137,8 @@ else if [ "${WORKFLOW_MANAGER}" = "ecflow" ]; then GFS_SFC_INPUT="${DATAROOT}/${RUN}_nexus_gfs_sfc_${cyc}.${share_pid}" if [ ! -d ${GFS_SFC_INPUT} ]; then - echo "Fatal error GFS_SFC_INPUT not found in production mode" - exit 7 + message_txt="FATAL ERROR ${GFS_SFC_INPUT} not found in production mode" + err_exit "${message_txt}" fi else GFS_SFC_INPUT="${DATAROOT}/nexus_gfs_sfc.${share_pid}" @@ -153,7 +148,7 @@ fi if [ "${RUN_TASK_NEXUS_GFS_SFC}" = "TRUE" ]; then if [ -d "${GFS_SFC_INPUT}" ]; then if [ "$(ls -A ${GFS_SFC_INPUT})" ]; then - cp -rp "${GFS_SFC_INPUT}" "GFS_SFC" + cpreq -rp "${GFS_SFC_INPUT}" "GFS_SFC" USE_GFS_SFC="TRUE" fi fi @@ -165,14 +160,14 @@ fi # #----------------------------------------------------------------------- # -cp ${EXECaqm}/nexus ${DATA} +cpreq ${EXECaqm}/nexus ${DATA} -cp ${FIXaqmnexus}/${NEXUS_GRID_FN} ${DATA}/grid_spec.nc +cpreq ${FIXaqmnexus}/${NEXUS_GRID_FN} ${DATA}/grid_spec.nc if [ "${USE_GFS_SFC}" = "TRUE" ]; then - cp ${PARMaqm}/nexus_config/cmaq_gfs_megan/*.rc ${DATA} + cpreq ${PARMaqm}/nexus_config/cmaq_gfs_megan/*.rc ${DATA} else - cp ${PARMaqm}/nexus_config/cmaq/*.rc ${DATA} + cpreq ${PARMaqm}/nexus_config/cmaq/*.rc ${DATA} fi # #----------------------------------------------------------------------- @@ -246,7 +241,7 @@ NEXUS_INPUT_BASE_DIR=${FIXemis} ${USHaqm}/nexus_utils/python/nexus_time_parser.py -f ${DATA}/HEMCO_sa_Time.rc -s $start_date -e $end_date export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"nexus_time_parser.py\" failed." + message_txt="FATAL ERROR Call to python script \"nexus_time_parser.py\" failed." err_exit "${message_txt}" fi # @@ -257,7 +252,7 @@ fi ${USHaqm}/nexus_utils/python/nexus_root_parser.py -f ${DATA}/NEXUS_Config.rc -d ${DATAinput} export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"nexus_root_parser.py\" failed." + message_txt="FATAL ERROR Call to python script \"nexus_root_parser.py\" failed." err_exit "${message_txt}" fi # @@ -271,14 +266,14 @@ if [ "${NEI2016}" = "TRUE" ]; then #NEI2016 ${USHaqm}/nexus_utils/python/nexus_nei2016_linker.py --src_dir ${NEXUS_INPUT_BASE_DIR} --date ${yyyymmdd} --work_dir ${DATAinput} -v "v2022-07" export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"nexus_nei2016_linker.py\" failed." + message_txt="FATAL ERROR Call to python script \"nexus_nei2016_linker.py\" failed." err_exit "${message_txt}" fi ${USHaqm}/nexus_utils/python/nexus_nei2016_control_tilefix.py -f ${DATA}/NEXUS_Config.rc -t ${DATA}/HEMCO_sa_Time.rc # -d ${yyyymmdd} export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"nexus_nei2016_control_tilefix.py\" failed." + message_txt="FATAL ERROR Call to python script \"nexus_nei2016_control_tilefix.py\" failed." err_exit "${message_txt}" fi fi @@ -348,7 +343,7 @@ if [ "${USE_GFS_SFC}" = "TRUE" ]; then # GFS INPUT ${USHaqm}/nexus_utils/python/nexus_gfs_bio.py -i ${DATA}/GFS_SFC/gfs.t??z.sfcf???.nc -o ${DATA}/GFS_SFC_MEGAN_INPUT.nc export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"nexus_gfs_bio.py\" failed." + message_txt="FATAL ERROR Call to python script \"nexus_gfs_bio.py\" failed." err_exit "${message_txt}" fi fi @@ -376,7 +371,7 @@ fi ${USHaqm}/nexus_utils/python/make_nexus_output_pretty.py --src ${DATA}/NEXUS_Expt_split.nc --grid ${DATA}/grid_spec.nc -o ${INPUT_DATA}/${NET}.${cycle}${dot_ensmem}.NEXUS_Expt_split.${nspt}.nc -t ${DATA}/HEMCO_sa_Time.rc export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"make_nexus_output_pretty.py\" failed." + message_txt="FATAL ERROR Call to python script \"make_nexus_output_pretty.py\" failed." err_exit "${message_txt}" fi # diff --git a/scripts/exaqm_nexus_post_split.sh b/scripts/exaqm_nexus_post_split.sh index 2f070ed66c..e9592c59c0 100755 --- a/scripts/exaqm_nexus_post_split.sh +++ b/scripts/exaqm_nexus_post_split.sh @@ -80,12 +80,12 @@ end_date=`$NDATE +${FCST_LEN_HRS} ${yyyymmdd}${hh}` # #----------------------------------------------------------------------- # -cp ${PARMaqm}/nexus_config/cmaq/HEMCO_sa_Time.rc ${DATA}/HEMCO_sa_Time.rc +cpreq ${PARMaqm}/nexus_config/cmaq/HEMCO_sa_Time.rc ${DATA}/HEMCO_sa_Time.rc -cp ${FIXaqmnexus}/${NEXUS_GRID_FN} ${DATA}/grid_spec.nc +cpreq ${FIXaqmnexus}/${NEXUS_GRID_FN} ${DATA}/grid_spec.nc if [ "${NUM_SPLIT_NEXUS}" = "01" ]; then nspt="00" - cp ${COMIN}/${cyc}/NEXUS/${NET}.${cycle}${dot_ensmem}.NEXUS_Expt_split.${nspt}.nc ${DATA}/NEXUS_Expt_combined.nc + cpreq ${COMIN}/${cyc}/NEXUS/${NET}.${cycle}${dot_ensmem}.NEXUS_Expt_split.${nspt}.nc ${DATA}/NEXUS_Expt_combined.nc else ${USHaqm}/nexus_utils/python/concatenate_nexus_post_split.py "${COMIN}/${cyc}/NEXUS/${NET}.${cycle}${dot_ensmem}.NEXUS_Expt_split.*.nc" "${DATA}/NEXUS_Expt_combined.nc" >> $pgmout 2>errfile export err=$? @@ -93,7 +93,7 @@ else cat ${pgmout} fi if [ $err -ne 0 ]; then - message_txt="Call to python script \"concatenate_nexus_post_split.py\" failed." + message_txt="FATAL ERROR Call to python script \"concatenate_nexus_post_split.py\" failed." err_exit "${message_txt}" fi fi @@ -107,7 +107,7 @@ fi ${USHaqm}/nexus_utils/combine_ant_bio.py "${DATA}/NEXUS_Expt_combined.nc" ${DATA}/NEXUS_Expt.nc export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"NEXUS_Expt_pretty.py\" failed." + message_txt="FATAL ERROR Call to python script \"NEXUS_Expt_pretty.py\" failed." err_exit "${message_txt}" fi # diff --git a/scripts/exaqm_point_source.sh b/scripts/exaqm_point_source.sh index 4b1e9dbb5a..559d22c15e 100755 --- a/scripts/exaqm_point_source.sh +++ b/scripts/exaqm_point_source.sh @@ -85,7 +85,7 @@ if [ ! -s "${DATA}/pt-${yyyymmddhh}.nc" ]; then ${USHaqm}/aqm_utils_python/stack-pt-merge.py -s ${yyyymmddhh} -n ${nstep} -i ${PT_SRC_PRECOMB} export err=$? if [ $err -ne 0 ]; then - message_txt="Call to python script \"stack-pt-merge.py\" failed." + message_txt="FATAL ERROR Call to python script \"stack-pt-merge.py\" failed." err_exit "${message_txt}" fi fi diff --git a/scripts/exaqm_post.sh b/scripts/exaqm_post.sh index 757657912e..dbf9c5e254 100755 --- a/scripts/exaqm_post.sh +++ b/scripts/exaqm_post.sh @@ -88,7 +88,7 @@ fi #----------------------------------------------------------------------- # rm -f fort.* -cp ${PARMdir}/upp/nam_micro_lookup.dat ./eta_micro_lookup.dat +cpreq ${PARMdir}/upp/nam_micro_lookup.dat ./eta_micro_lookup.dat if [ ${USE_CUSTOM_POST_CONFIG_FILE} = "TRUE" ]; then post_config_fp="${CUSTOM_POST_CONFIG_FP}" print_info_msg " @@ -112,18 +112,18 @@ temporary work directory (DATA): DATA = \"${DATA}\" ====================================================================" fi -cp ${post_config_fp} ./postxconfig-NT.txt -cp ${PARMdir}/upp/params_grib2_tbl_new . +cpreq ${post_config_fp} ./postxconfig-NT.txt +cpreq ${PARMdir}/upp/params_grib2_tbl_new . if [ ${USE_CRTM} = "TRUE" ]; then - cp ${CRTM_DIR}/fix/EmisCoeff/IR_Water/Big_Endian/Nalli.IRwater.EmisCoeff.bin ./ - cp ${CRTM_DIR}/fix/EmisCoeff/MW_Water/Big_Endian/FAST*.bin ./ - cp ${CRTM_DIR}/fix/EmisCoeff/IR_Land/SEcategory/Big_Endian/NPOESS.IRland.EmisCoeff.bin ./ - cp ${CRTM_DIR}/fix/EmisCoeff/IR_Snow/SEcategory/Big_Endian/NPOESS.IRsnow.EmisCoeff.bin ./ - cp ${CRTM_DIR}/fix/EmisCoeff/IR_Ice/SEcategory/Big_Endian/NPOESS.IRice.EmisCoeff.bin ./ - cp ${CRTM_DIR}/fix/AerosolCoeff/Big_Endian/AerosolCoeff.bin ./ - cp ${CRTM_DIR}/fix/CloudCoeff/Big_Endian/CloudCoeff.bin ./ - cp ${CRTM_DIR}/fix/SpcCoeff/Big_Endian/*.bin ./ - cp ${CRTM_DIR}/fix/TauCoeff/ODPS/Big_Endian/*.bin ./ + cpreq ${CRTM_DIR}/fix/EmisCoeff/IR_Water/Big_Endian/Nalli.IRwater.EmisCoeff.bin ./ + cpreq ${CRTM_DIR}/fix/EmisCoeff/MW_Water/Big_Endian/FAST*.bin ./ + cpreq ${CRTM_DIR}/fix/EmisCoeff/IR_Land/SEcategory/Big_Endian/NPOESS.IRland.EmisCoeff.bin ./ + cpreq ${CRTM_DIR}/fix/EmisCoeff/IR_Snow/SEcategory/Big_Endian/NPOESS.IRsnow.EmisCoeff.bin ./ + cpreq ${CRTM_DIR}/fix/EmisCoeff/IR_Ice/SEcategory/Big_Endian/NPOESS.IRice.EmisCoeff.bin ./ + cpreq ${CRTM_DIR}/fix/AerosolCoeff/Big_Endian/AerosolCoeff.bin ./ + cpreq ${CRTM_DIR}/fix/CloudCoeff/Big_Endian/CloudCoeff.bin ./ + cpreq ${CRTM_DIR}/fix/SpcCoeff/Big_Endian/*.bin ./ + cpreq ${CRTM_DIR}/fix/TauCoeff/ODPS/Big_Endian/*.bin ./ print_info_msg " ==================================================================== Copying the external CRTM fix files from CRTM_DIR to the temporary diff --git a/scripts/exaqm_post_stat_o3.sh b/scripts/exaqm_post_stat_o3.sh index c7c7057326..47f509e28f 100755 --- a/scripts/exaqm_post_stat_o3.sh +++ b/scripts/exaqm_post_stat_o3.sh @@ -95,7 +95,7 @@ if [ "${PREDEF_GRID_NAME}" = "AQM_NA_13km" ]; then id_domain=793 fi -cp ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.nc . +cpreq ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.nc . # cat >aqm_post.ini <aqm_post.ini <> ${NET}.${cycle}.ave_1hr_pm25.${id_domain}.grib2 -cp ${DATA}/${NET}.${cycle}.ave_1hr_pm25.${id_domain}.grib2 ${COMOUT} +cpreq ${DATA}/${NET}.${cycle}.ave_1hr_pm25.${id_domain}.grib2 ${COMOUT} #if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then # if [ "$SENDDBN" = "YES" ]; then # ${DBNROOT}/bin/dbn_alert MODEL AQM_PM ${job} ${COMOUT}/${NET}.${cycle}.ave_1hr_pm25.${id_domain}.grib2 @@ -136,7 +136,7 @@ for grid in 227 196 198; do wgrib2 ${NET}.${cycle}.ave_1hr_pm25.${id_domain}.grib2 -set_grib_type c3b -new_grid_winds earth -new_grid ${!gg} ${NET}.${cycle}.ave_1hr_pm25.${grid}.grib2 done -cp ${DATA}/${NET}.${cycle}*pm25*.grib2 ${COMOUT} +cpreq ${DATA}/${NET}.${cycle}*pm25*.grib2 ${COMOUT} # Create AWIPS GRIB2 data for Bias-Corrected PM2.5 if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then @@ -162,7 +162,7 @@ if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then fi # Post Files to COMOUTwmo - cp awpaqm.${cycle}.1hpm25.${grid}.grib2 ${COMOUTwmo} + cpreq awpaqm.${cycle}.1hpm25.${grid}.grib2 ${COMOUTwmo} if [ "$SENDDBN_NTC" = "YES" ]; then ${DBNROOT}/bin/dbn_alert ${DBNALERT_TYPE} ${NET} ${job} ${COMOUTwmo}/awpaqm.${cycle}.1hpm25.${grid}.grib2 @@ -176,7 +176,7 @@ fi #--------------------------------------------------------------- if [ "${cyc}" = "06" ] || [ "${cyc}" = "12" ]; then - cp ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.nc a.nc + cpreq ${COMIN}/${cyc}/${NET}.${cycle}.chem_sfc.nc a.nc export chk=1 export chk1=1 @@ -195,9 +195,9 @@ EOF1 # 06z needs b.nc to find current day output from 04Z to 06Z if [ "${cyc}" = "06" ]; then if [ -s ${COMIN}/00/${NET}.t00z.chem_sfc.nc ]; then - cp ${COMIN}/00/${NET}.t00z.chem_sfc.nc b.nc + cpreq ${COMIN}/00/${NET}.t00z.chem_sfc.nc b.nc elif [ -s ${COMINm1}/12/${NET}.t12z.chem_sfc.nc ]; then - cp ${COMINm1}/12/${NET}.t12z.chem_sfc.nc b.nc + cpreq ${COMINm1}/12/${NET}.t12z.chem_sfc.nc b.nc chk=0 else flag_run_bicor_max=no @@ -207,9 +207,9 @@ EOF1 if [ "${cyc}" = "12" ]; then # 12z needs b.nc to find current day output from 04Z to 06Z if [ -s ${COMIN}/00/${NET}.t00z.chem_sfc.nc ]; then - cp ${COMIN}/00/${NET}.t00z.chem_sfc.nc b.nc + cpreq ${COMIN}/00/${NET}.t00z.chem_sfc.nc b.nc elif [ -s ${COMINm1}/12/${NET}.t12z.chem_sfc.nc ]; then - cp ${COMINm1}/12/${NET}.${PDYm1}.t12z.chem_sfc.nc b.nc + cpreq ${COMINm1}/12/${NET}.${PDYm1}.t12z.chem_sfc.nc b.nc chk=0 else flag_run_bicor_max=no @@ -217,9 +217,9 @@ EOF1 # 12z needs c.nc to find current day output from 07Z to 12z if [ -s ${COMIN}/06/${NET}.t06z.chem_sfc.nc ]; then - cp ${COMIN}/06/${NET}.t06z.chem_sfc.nc c.nc + cpreq ${COMIN}/06/${NET}.t06z.chem_sfc.nc c.nc elif [ -s ${COMINm1}/12/${NET}.t12z.chem_sfc.nc ]; then - cp ${COMINm1}/12/${NET}.t12z.chem_sfc.nc c.nc + cpreq ${COMINm1}/12/${NET}.t12z.chem_sfc.nc c.nc chk1=0 else flag_run_bicor_max=no @@ -236,8 +236,8 @@ EOF1 wgrib2 ${NET}_pm25_24h_ave.${id_domain}.grib2 |grep "PMTF" | wgrib2 -i ${NET}_pm25_24h_ave.${id_domain}.grib2 -grib ${NET}.${cycle}.ave_24hr_pm25.${id_domain}.grib2 wgrib2 ${NET}_pm25_24h_ave.${id_domain}.grib2 |grep "PDMAX1" | wgrib2 -i ${NET}_pm25_24h_ave.${id_domain}.grib2 -grib ${NET}.${cycle}.max_1hr_pm25.${id_domain}.grib2 - cp ${DATA}/${NET}.${cycle}.ave_24hr_pm25.${id_domain}.grib2 ${COMOUT} - cp ${DATA}/${NET}.${cycle}.max_1hr_pm25.${id_domain}.grib2 ${COMOUT} + cpreq ${DATA}/${NET}.${cycle}.ave_24hr_pm25.${id_domain}.grib2 ${COMOUT} + cpreq ${DATA}/${NET}.${cycle}.max_1hr_pm25.${id_domain}.grib2 ${COMOUT} # if [ "$SENDDBN" = "YES" ]; then # ${DBNROOT}/bin/dbn_alert MODEL AQM_PM ${job} ${COMOUT}/${NET}.${cycle}.ave_24hr_pm25.${id_domain}.grib2 @@ -253,8 +253,8 @@ EOF1 wgrib2 ${NET}.${cycle}.ave_24hr_pm25.${id_domain}.grib2 -set_grib_type c3b -new_grid_winds earth -new_grid ${!gg} ${NET}.${cycle}.ave_24hr_pm25.${grid}.grib2 wgrib2 ${NET}.${cycle}.max_1hr_pm25.${id_domain}.grib2 -set_grib_type c3b -new_grid_winds earth -new_grid ${!gg} ${NET}.${cycle}.max_1hr_pm25.${grid}.grib2 - cp ${DATA}/${NET}.${cycle}.ave_24hr_pm25.${grid}.grib2 ${COMOUT} - cp ${DATA}/${NET}.${cycle}.max_1hr_pm25.${grid}.grib2 ${COMOUT} + cpreq ${DATA}/${NET}.${cycle}.ave_24hr_pm25.${grid}.grib2 ${COMOUT} + cpreq ${DATA}/${NET}.${cycle}.max_1hr_pm25.${grid}.grib2 ${COMOUT} if [ "$SENDDBN" = "YES" ]; then ${DBNROOT}/bin/dbn_alert MODEL AQM_PM ${job} ${COMOUT}/${NET}.${cycle}.ave_24hr_pm25.${grid}.grib2 @@ -292,8 +292,8 @@ EOF1 export FORT51=awpaqm.${cycle}.24hr-pm25-ave.${grid}.grib2 tocgrib2super < ${PARMaqm}/aqm_utils/wmo/grib2_aqm_ave_24hrpm25_awp.${cycle}.${grid} - cp awpaqm.${cycle}.daily-1hr-pm25-max.${grid}.grib2 ${COMOUTwmo} - cp awpaqm.${cycle}.24hr-pm25-ave.${grid}.grib2 ${COMOUTwmo} + cpreq awpaqm.${cycle}.daily-1hr-pm25-max.${grid}.grib2 ${COMOUTwmo} + cpreq awpaqm.${cycle}.24hr-pm25-ave.${grid}.grib2 ${COMOUTwmo} ############################## # Distribute Data diff --git a/sorc/CMakeLists.txt b/sorc/CMakeLists.txt index d1ee4ee33d..895e7b1630 100644 --- a/sorc/CMakeLists.txt +++ b/sorc/CMakeLists.txt @@ -243,6 +243,7 @@ if(BUILD_UFS_UTILS) "-DVCOORD_GEN=OFF" "-DFVCOMTOOLS=OFF" "-DGBLEVENTS=OFF" + "-DOCEAN_MERGE=OFF" "-DCPLD_GRIDGEN=OFF" "-DWEIGHT_GEN=OFF" ) diff --git a/sorc/Externals.cfg b/sorc/Externals.cfg index c6dff4c9ec..64465a971a 100644 --- a/sorc/Externals.cfg +++ b/sorc/Externals.cfg @@ -12,7 +12,7 @@ protocol = git repo_url = https://github.com/ufs-community/ufs-weather-model # Specify either a branch name or a hash but not both. #branch = production/AQM.v7 -hash = 8599228 +hash = 369dbad local_path = ufs-weather-model required = True @@ -21,7 +21,7 @@ protocol = git repo_url = https://github.com/NOAA-EMC/UPP # Specify either a branch name or a hash but not both. #branch = develop -hash = 59a0175 +hash = 27d1d89 local_path = UPP required = True diff --git a/sorc/auto_build_exec.sh b/sorc/auto_A1_checkout.sh similarity index 68% rename from sorc/auto_build_exec.sh rename to sorc/auto_A1_checkout.sh index ce81cc4357..0d48cfc884 100755 --- a/sorc/auto_build_exec.sh +++ b/sorc/auto_A1_checkout.sh @@ -22,30 +22,22 @@ cd ../ush cp -rp ../sorc/AQM-utils/python_utils aqm_utils_python cp -rp ../sorc/arl_nexus/utils nexus_utils + #------------------------------------------------------------------- #===== Step 3: create symbolic links for source codes ============ #------------------------------------------------------------------- cd ../sorc -for src in aqm_bias_correct aqm_bias_interpolate aqm_post_bias_cor_grib2 aqm_post_grib2 aqm_post_maxi_bias_cor_grib2 aqm_post_maxi_grib2 convert_airnow_csv gefs2clbcs_para -do +for src in aqm_bias_correct aqm_bias_interpolate aqm_post_bias_cor_grib2 aqm_post_grib2 aqm_post_maxi_bias_cor_grib2 aqm_post_maxi_grib2 convert_airnow_csv gefs2clbcs_para +do ln -s AQM-utils/sorc/${src}.fd . -done - -ln -s UFS_UTILS/sorc/chgres_cube.fd . - -ln -s ufs-weather-model ufs-model.fd + done -ln -s UPP/sorc/ncep_post.fd upp.fd + ln -s UFS_UTILS/sorc/chgres_cube.fd . -ln -s arl_nexus nexus.fd - -#------------------------------------------------------------------- -#===== Step 4: create executable codes =============== -#------------------------------------------------------------------- + ln -s ufs-weather-model ufs-model.fd -#./app_build.sh -p=wcoss2 --clean + ln -s UPP/sorc/ncep_post.fd upp.fd -./app_build.sh -p=wcoss2 -a=ATMAQ |& tee buildup.log + ln -s arl_nexus nexus.fd -#./app_build.sh -p=wcoss2 -a=ATMAQ --build-type=DEBUG |& tee build_debug.log diff --git a/sorc/auto_A2_build_exec.sh b/sorc/auto_A2_build_exec.sh new file mode 100755 index 0000000000..934a9579fb --- /dev/null +++ b/sorc/auto_A2_build_exec.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +#------------------------------------------------------------------- +#===== create executable codes =============== +#------------------------------------------------------------------- + +./app_build.sh -p=wcoss2 --clean + +./app_build.sh -p=wcoss2 -a=ATMAQ |& tee buildup.log + +#./app_build.sh -p=wcoss2 -a=ATMAQ --build-type=DEBUG |& tee build_debug.log diff --git a/sorc/auto_A2_cp_fix.sh b/sorc/auto_A3_cp_fix.sh similarity index 100% rename from sorc/auto_A2_cp_fix.sh rename to sorc/auto_A3_cp_fix.sh diff --git a/ush/aqm_nco_config.sh b/ush/aqm_nco_config.sh index e1fca9de04..b449dd61d6 100755 --- a/ush/aqm_nco_config.sh +++ b/ush/aqm_nco_config.sh @@ -34,6 +34,7 @@ COMINgefs=$(compath.py "gefs/${gefs_ver}") || { echo "Failed to assign COMINgefs OPSROOT=$(printf '%q' "$OPSROOT") HOMEaqm=$(printf '%q' "$HOMEaqm") COMROOT=$(printf '%q' "$COMROOT") +DCOMROOT=$(printf '%q' "$DCOMROOT") COMaqm=$(printf '%q' "$COMaqm") COMINgefs=$(printf '%q' "$COMINgefs") DATA=$(printf '%q' "$DATA") @@ -51,6 +52,7 @@ for file_in in ${File_to_modify_source}; do sed -i -e "s|@WARMSTART_PDY@|${WARMSTART_PDY}|g" "$file_tmp" sed -i -e "s|@OPSROOT@|${OPSROOT}|g" "$file_tmp" sed -i -e "s|@COMINgefs@|${COMINgefs}|g" "$file_tmp" + sed -i -e "s|@DCOMROOT@|${DCOMROOT}|g" "$file_tmp" sed -i -e "s|@DATA@|${DATA}|g" "$file_tmp" # mv "$file_tmp" "$file_in" || { echo "Failed to move $file_tmp to $file_in"; exit 1; } diff --git a/ush/bash_utils/create_symlink_to_file.sh b/ush/bash_utils/create_symlink_to_file.sh index e03e07ced7..5642b14f2f 100644 --- a/ush/bash_utils/create_symlink_to_file.sh +++ b/ush/bash_utils/create_symlink_to_file.sh @@ -119,7 +119,11 @@ will create was not specified in the call to this function: # #----------------------------------------------------------------------- # - if [ ! -f "${target}" ]; then + if [ ! -s "${target}" ]; then + if [ -f "${target}" ]; then + echo "FATAL ERROR - ZERO sized file found" + exit 8 + fi print_err_msg_exit "\ Cannot create symlink to specified target file because the latter does not exist or is not a file: diff --git a/ush/bash_utils/get_manage_externals_config_property.sh b/ush/bash_utils/get_manage_externals_config_property.sh index 748949efc7..afba3370c0 100644 --- a/ush/bash_utils/get_manage_externals_config_property.sh +++ b/ush/bash_utils/get_manage_externals_config_property.sh @@ -112,7 +112,7 @@ The arguments to this function are defined as follows: # #----------------------------------------------------------------------- # - if [ ! -f "${externals_cfg_fp}" ]; then + if [ ! -s "${externals_cfg_fp}" ]; then print_err_msg_exit "\ The specified manage_externals configuration file (externals_cfg_fp) does not exist: diff --git a/ush/retrieve_data.py b/ush/retrieve_data.py index 081bfb138c..217b6eba19 100755 --- a/ush/retrieve_data.py +++ b/ush/retrieve_data.py @@ -51,7 +51,7 @@ def clean_up_output_dir(expected_subdir, local_archive, output_path, source_path for file_path in source_paths: local_file_path = os.path.join(os.getcwd(), file_path.lstrip("/")) if not os.path.exists(local_file_path): - logging.info(f"File does not exist: {local_file_path}") + logging.info(f"FATAL ERROR File does not exist: {local_file_path}") unavailable["hpss"] = source_paths else: file_name = os.path.basename(file_path) @@ -82,7 +82,7 @@ def copy_file(source, destination, copy_cmd): """ if not os.path.exists(source): - logging.info(f"File does not exist on disk \n {source} \n try using: --input_file_path ") + logging.info(f"FATAL ERROR file does not exist on disk \n {source} \n try using: --input_file_path ") return False # Using subprocess here because system copy is much faster than @@ -444,7 +444,7 @@ def hsi_single_file(file_path, mode="ls"): shell=True, ) except subprocess.CalledProcessError: - logging.warning(f"{file_path} is not available!") + logging.warning(f"WARNING {file_path} is not available!") return "" return file_path @@ -498,7 +498,7 @@ def hpss_requested_files(cla, file_names, store_specs, members=-1, ens_group=-1) logging.debug(f"Found existing archives: {existing_archives}") if not existing_archives: - logging.warning("No archive files were found!") + logging.warning("WARNING No archive files were found!") unavailable["archive"] = list(zip(archive_paths, archive_file_names)) return unavailable @@ -856,10 +856,10 @@ def main(argv): break logging.debug(f"Some unavailable files: {unavailable}") - logging.warning(f"Requested files are unavailable from {data_store}") + logging.warning(f"WARNING Requested files are unavailable from {data_store}") if unavailable: - logging.error("Could not find any of the requested files.") + logging.error("FATAL ERROR Could not find any of the requested files.") sys.exit(1) diff --git a/versions/run.ver b/versions/run.ver index 865253f7dd..0a8adeefd6 100644 --- a/versions/run.ver +++ b/versions/run.ver @@ -28,7 +28,7 @@ export envvar_ver=1.0 export gfs_ver=v16.3 export gefs_ver=v12.3 -export aqm_ver=v7.0.1 +#export aqm_ver=v7.0.1 export udunits_ver=2.2.28 export gsl_ver=2.7 @@ -37,5 +37,10 @@ export nco_ver=5.0.6 export wgrib2_ver=2.0.8_wmo export grib_util_ver=1.2.4 +# for PARA testing export maillist="nco.spa@noaa.gov,jianping.huang@noaa.gov,kai.wang@noaa.gov" +export MAILTO="nco.spa@noaa.gov,jianping.huang@noaa.gov,kai.wang@noaa.gov" +export DBNLOG=YES +# ONLY for NCO to set operational COMPATH here. Developer should remark it +# export COMPATH=/lfs/h1/ops/para/com/aqm:/lfs/h1/ops/prod/com/gfs:/lfs/h1/ops/prod/com/gefs