#!/bin/bash set -xa date -u ############################################################################### # Note: Although OBSPROC_SHARED_BUFR_DUMPLIST and OBSPROC_SHARED_BUFR_AVGDATA # are linked to OBSPROC_NAM in the DUMP_POST jobs, they are not used in # the catch-up cycle (tm06 through tm01) jobs. # BUFR_DATACOUNT currently does not run in catch-up cycle jobs. # BUFR_AVGDATA currently does not run in catch-up cycle jobs. ############################################################################### ################################################################### # Set DEBUG LEVEL - modifies info in execution trace prompt string ################################################################### export DEBUG_LEVEL=${DEBUG_LEVEL=1} case $DEBUG_LEVEL in 1) export PS4='+ ${SECONDS}s + ' ;; # add seconds (this is typical case) 0) export PS4='+ ';; # don't include seconds (useful if # want to diff output from 2 runs) 2) export PS4='+ ${SECONDS}s:L$LINENO + ';; # add script line # 3) export PS4='+ ${SECONDS}s:${0##*/}:L$LINENO + ';;# add script name & line # 4) export PS4='+ ${0##*/}:L$LINENO + ';; # script name & line (no seconds) *) echo "Unrecognized DEBUG_LEVEL. Stay with current PS4 setting";; esac ######################################## # Check that required variables are set ######################################## set +x echo echo cyc is ${cyc:?"###FATAL ERROR \"cyc\" is not set"} echo tmmark is ${tmmark:?"###FATAL ERROR \"tmmark\" is not set"} echo envir is ${envir:?"###FATAL ERROR \"envir\" is not set"} echo job is ${job:?"###FATAL ERROR \"job\" is not set"} echo DATAROOT is ${DATAROOT:?"###FATAL ERROR \"DATAROOT\" is not set"} echo set -x ################################ # Print out version information ################################ set +x echo echo "####################################################################" echo echo "OBSPROC version is ${obsproc_ver:-not set}" echo "BUFR_DUMP version used by this job, for dumplist, is" \ "${bufr_dump_ver:-not set}" if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is required but not loaded! Exiting..."; exit; fi if [[ $(echo $LOADEDMODULES | egrep -c "(^|:)bufr_dump/") -eq 0 ]]; then echo "bufr_dump is required but not loaded! Exiting..."; exit; fi echo echo "####################################################################" echo set -x ##################################################################### # List modules loaded for this job ##################################################################### set +x echo echo "####################################################################" echo module list echo echo "####################################################################" echo set -x ###################### # Specify NET and RUN ###################### export obsNET=${obsNET:-obsproc} export NET=${NET:-nam} export RUN=${RUN:-nam} set +x echo echo obsNET is ${obsNET:?"###FATAL ERROR \"obsNET\" is not set"} echo NET is ${NET:?"###FATAL ERROR \"NET\" is not set"} echo RUN is ${RUN:?"###FATAL ERROR \"RUN\" is not set"} echo set -x ################ # Specify cycle ################ export cycle=t${cyc}z ############################### # Create new working directory ############################### jobid=${jobid:-${job}.$(hostname -s).$$} export DATA=${DATA:-$DATAROOT/${jobid}} rm -rf $DATA mkdir -p $DATA cd $DATA export pgmout=OUTPUT.$$ ###################################### # Set job log file for postmsg output ###################################### jlogfile=${jlogfile:-${DATA}/jlogfile} ############################################################################### # SENDCOM - Copy files to $COMOUT directory # SENDECF - Flag Events on ECFLOW # SENDDBN - Alert output file to TOC # SENDSDM - Send files to SDM (via email and/or printer in bufr_datacount.sh) # {on-time cycle (tm00) jobs only} ############################################################################### export SENDCOM=${SENDCOM:-YES} export SENDECF=${SENDECF:-YES} export SENDDBN=${SENDDBN:-YES} if [ "$tmmark" = 'tm00' ]; then export SENDSDM=${SENDSDM:-YES} [[ "$envir" != prod ]] && export SENDSDM=NO # parallel, don't send SDM email fi ########################## # Specify Execution Areas ########################## # ------------------------------- # Paths for obsproc_network items # ------------------------------- export HOMEobsproc=${HOMEobsproc:\ -${PACKAGEROOT:?}/${obsNET}/${obsproc_ver:?\ "###FATAL ERROR \"obsproc_ver\" is not set"}} export SCRIPTSobsproc=${SCRIPTSobsproc:-$HOMEobsproc/scripts} export EXECobsproc=${EXECobsproc:-$HOMEobsproc/exec} export USHobsproc=${USHobsproc:-$HOMEobsproc/ush} # --------------------------------------------------------------------- # Paths for bufr_dumplist items # Default variables are pre-defined when the bufr_dump module is loaded. # ---------------------------------------------------------------------- export FIXbufr_dump=${FIXbufr_dump:-$HOMEbufr_dump/fix} ######################################################################### # Add some prod utilities to working directory ######################################################################### echo "step ############# break ##############################" > ./break cp $UTILROOT/ush/err_chk .; chmod +x err_chk cp $UTILROOT/ush/err_exit .; chmod +x err_exit cp $UTILROOT/ush/prep_step .; chmod +x prep_step cp $UTILROOT/ush/postmsg .; chmod +x postmsg cp $UTILROOT/ush/setpdy.sh .; chmod +x setpdy.sh ########################################## # Run setpdy and initialize PDY variables ########################################## set +x; echo -e "\n---> path to setpdy.sh below is: `which setpdy.sh`"; set -x if [ -z "$PDY" ]; then if test "$cyc" = "12" then if test "$tmmark" != "tm00" then # Since the 12Z catch-up cycle (tm06 through tm01) jobs run before the 12 UTC # PROD_SETUP job runs we need to use the ${COMDATEROOT}/date/t00z file for our PDY export cycle=t00z setpdy.sh . $DATA/PDY export cycle=t12z setpdy.sh . $DATA/PDY else # The 12Z on-time cycle (tm00) runs after the 12 UTC PROD_SETUP job setpdy.sh . $DATA/PDY fi elif test "$cyc" = "00" then if test "$tmmark" != "tm00" then # Check to see if we are running a 00Z catch-up cycle (tm06 through tm01) job # prior to run of 00 UTC PROD_SETUP - if so, update PDY by 1-day setpdy.sh . $DATA/PDY edate=`cat ${COMDATEROOT}/date/t12z | cut -c7-14` if [ $edate -eq $PDY ] then export PDY=`$UTILROOT/ush/finddate.sh $PDY d+1` setpdy.sh . $DATA/PDY fi else # The 00Z on-time cycle (tm00) runs after the 00 UTC PROD_SETUP job setpdy.sh . $DATA/PDY fi else # The 06 & 18Z jobs at all cycles after the 00 & 12 UTC PROD_SETUP jobs, resp. setpdy.sh . $DATA/PDY fi else # If PDY was previously specified (checkout only) fall through to here setpdy.sh . $DATA/PDY fi ######################### # Define COM directories ######################### export COMIN_ROOT=${COMIN_ROOT:-${COMROOT:-""}} if [[ "$RUN_ENVIR" == nco ]]; then export COMIN=${COMIN:-$(compath.py ${envir}/${obsNET}/${obsproc_ver}/${RUN}.${PDY})} export COMOUT=${COMOUT:-$(compath.py -o ${obsNET}/${obsproc_ver}/${RUN}.${PDY})} mkdir -m 775 -p $COMOUT else export COMIN=${COMIN:-${COMIN_ROOT:?}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}} # COMOUT_ROOT for developers defaults to unique $DATA/com directory as root to # prevent job from writing into a non-unique directory that might already have # output in it from a previous checkout run for the same cycle # ----------------------------------------------------------------------------- export COMOUT_ROOT=${COMOUT_ROOT:-${DATA}/com} export COMOUT=${COMOUT:-${COMOUT_ROOT:?}/${obsNET}/${obsproc_ver}/${RUN}.${PDY}} mkdir -m 755 -p $COMOUT fi if [ "$tmmark" = 'tm00' ]; then # comin and comin_m1 are paths to dump status files for bufr_avgdata.sh export comin=${comin:-$(compath.py ${envir}/${obsNET}/${obsproc_ver}/${RUN}.${PDY})} export comin_m1=${comin_m1:-$(compath.py ${envir}/${obsNET}/${obsproc_ver}/${RUN}.${PDYm1})} # --------------------------- # Paths for non-obsproc items # --------------------------- # directory path to data count/alert processing executed in bufr_datacount.sh # and data count averaging executed in model script and in bufr_avgdata.sh # --------------------------------------------------------------------------- export HOMEarch=${HOMEarch:-$(compath.py ${envir}/${obsNET}/${obsproc_ver}/sdm_rtdm/${RUN})} # .. AVGDarch_IN is directory path containing 30-day avg files (read by # bufr_datacount.sh) # ------------------------------------------------------------------ # .. AVGDarch_OUT is directory path for avg tables output by model script # -------------------------------------------------------------------- if [[ "$RUN_ENVIR" == nco ]]; then export AVGDarch_IN=$HOMEarch/avgdata export AVGDarch_OUT=$HOMEarch/avgdata else [ -n "$HOMEarch" ] && HOMEarch_avgdata=$HOMEarch/avgdata export AVGDarch_IN=${AVGDarch_IN:-${COMIN_ROOT:?}/${obsNET}/${obsproc_ver}/sdm_rtdm/${RUN}/avgdata} export AVGDarch_OUT=${AVGDarch_OUT:-${COMOUT_ROOT:?}/${obsNET}/${obsproc_ver}/sdm_rtdm/${RUN}/avgdata} mkdir -p $AVGDarch_OUT fi # .. OBCNTarch is directory path to write new status files to & read all status # files from {can WRITE to this location only if COPY=YES (the default)} # -------------------------------------------------------------------------- export OBCNTarch=${OBCNTarch:-$HOMEarch/obcount_30day} # .. ALERTL is directory for alert log files output by bufr_datacount.sh # ------------------------------------------------------------------- if [[ "$RUN_ENVIR" == nco ]]; then if [[ ${envir} == prod ]]; then export ALERTL=${ALERTL:-${COMROOT:?}/logs/alertlog} else export ALERTL=${ALERTL:-${COMROOT:?}/logs/alertlog} fi mkdir -p $ALERTL else # developer export ALERTL=${ALERTL:-${COMOUT_ROOT:?}/logs/alertlog} mkdir -p $ALERTL fi fi # end if [ "$tmmark" = 'tm00' ] ################################################ # SETUP NAM DATA DUMP POST PROCESSING VARIABLES ################################################ ######################################################### # Specify variables specific to this execution of script ######################################################### export PROCESS_REMOREST=${PROCESS_REMOREST:-YES} export PROCESS_UNBLKBUFR=${PROCESS_UNBLKBUFR:-NO} export PROCESS_LISTERS=${PROCESS_LISTERS:-YES} if [ "$tmmark" = 'tm00' ]; then export PROCESS_DATACOUNTS=${PROCESS_DATACOUNTS:-YES} # Data count average tables are generated only in the 18Z on-time cycle job if [ "$cyc" = '18' ]; then export PROCESS_AVGTABLES=${PROCESS_AVGTABLES:-YES} else export PROCESS_AVGTABLES=${PROCESS_AVGTABLES:-NO} fi else export PROCESS_DATACOUNTS=NO # Not processed in catch-up cycle jobs export PROCESS_AVGTABLES=NO # Not processed in catch-up cycle jobs fi env ##################### # Execute the script ##################### $SCRIPTSobsproc/exdump_post.sh eval err_${RUN}_dump_post=$? eval [[ \$err_${RUN}_dump_post -ne 0 ]] && $DATA/err_exit echo "$SITE `hostname` -- `date -u`" > \ $COMOUT/where_${tmmark}_${cycle}_${RUN}_dump_post_ran > $COMOUT/obsproc_version_for_${tmmark}_${cycle}_${RUN}_dump_post_run [ -n "$obsproc_nam_ver" ] && \ echo "OBSPROC version is $obsproc_ver" >> \ $COMOUT/obsproc_version_for_${tmmark}_${cycle}_${RUN}_dump_post_run [ -n "$bufr_dump_ver" ] && \ echo "BUFR_DUMP version used by this job is $bufr_dump_ver" >> \ $COMOUT/obsproc_version_for_${tmmark}_${cycle}_${RUN}_dump_post_run if [ "$KEEPDATA" != YES ]; then cd $DATAROOT rm -rf $DATA fi date -u exit