#!/bin/bash # #### 08/25/1999 ################### # SET SHELL PROCESSING VARIABLES # ################################### date export PS4=' $SECONDS + ' set -x export MIN # 00, 15, 30, or 45 # #### 05/15/00 ############################### # SETUP GLMP MODEL PREP PROCESSING VARIABLES # ############################################# ############################################### # Make temp directory ############################################### export DATA=${DATA:-${DATAROOT:?}/${jobid:?}} mkdir -p $DATA cd $DATA export HOUR=$cyc export cycle=t${cyc}z #################################### # Specify NET and RUN Name #################################### export NET=glmp export RUN=glmp #################################### # Determine Diagnostic Output Name on System #################################### export pgmout="OUTPUT.$$" #################################### # Specify Execution Areas #################################### export EXECglmp=${EXECglmp:-$HOMEglmp/exec} export FIXglmp=${FIXglmp:-$HOMEglmp/fix} export PARMglmp=${PARMglmp:-$HOMEglmp/parm} ############################## # Run setpdy and initialize PDY variables ############################## setpdy.sh . ./PDY ############################################## # Define COM directories # NOTE: $PDYp1 is set by setpdy.sh to be the # next day ############################################## export COMIN=${COMIN:-$(compath.py ${envir}/com/${NET}/${glmp_ver})/${RUN}.${PDY}} export COMOUT=${COMOUT:-$(compath.py -o ${NET}/${glmp_ver})/${RUN}.${PDY}} export COMINlmp_base=${COMINlmp_base:-$(compath.py ${envir}/com/lmp/${lmp_ver})} export COMOUTglmp_base=${COMOUTglmp_base:-$(compath.py -o ${NET}/${glmp_ver})} mkdir -m 775 -p $COMOUT ########################################## # SET VARIOUS DATETIME PARAMETERS ########################################## export DAT="$PDY$HOUR" export DATm1=`$NDATE -1 $DAT` export DATm2=`$NDATE -2 $DAT` export DATm3=`$NDATE -3 $DAT` export DATm4=`$NDATE -4 $DAT` export HOURm1=`printf $DATm1 | cut -c 9-` export HOURm2=`printf $DATm2 | cut -c 9-` export HOURm3=`printf $DATm3 | cut -c 9-` export HOURm4=`printf $DATm4 | cut -c 9-` export PDYm1h=`echo $DATm1 | cut -c1-8` export PDYm2h=`echo $DATm2 | cut -c1-8` export PDYm3h=`echo $DATm3 | cut -c1-8` export PDYm4h=`echo $DATm4 | cut -c1-8` export COMINm1h=${COMINm1h:-$(compath.py ${envir}/com/${NET}/${glmp_ver})/${RUN}.${PDYm1h}} export COMOUTm1h=${COMOUTm1h:-$(compath.py -o ${NET}/${glmp_ver})/${RUN}.${PDYm1h}} env function exists_and_sufficient_size_hrrr_subh() { if [ -a $1 ]; then filesz=`ls -l $1 | awk '{print $5}'` if [ "$filesz" -gt "11018" ]; then # 11018 bytes calculated as percentage of data available from hourly hrrr data check return 0 else printf "The file $1 has size: $filesz , It is probable that it contains missing data\n" return 1 fi else printf "The file $1 doesn't exist\n" return 1 fi } if [ $MIN -eq '30' ] || [ $MIN -eq '45' ]; then ############################################################################# # CHECK TO SEE IF CURRENT CYCLE (HH) HRRR MOS FILES EXIST, IF NOT, MAKE THEM ############################################################################# # if exists_and_sufficient_size_hrrr_subh $COMOUTm1/${NET}_hrrr3subhmos_fcsts.sq.t${HOURm1}z ; then if exists_and_sufficient_size_hrrr_subh $COMOUTm1/${NET}.t${HOURm1}z.hrrr3subhmos_fcsts.tdlpsq ; then echo "found current cycle ${NET}.t${HOURm1}z.hrrr3subhmos_fcsts.tdlpsq from previous run, exiting ... " else echo "Making current cycle ${NET}.t${HOURm1}z.hrrr3subhmos_fcsts.tdlpsq" # build mpmdscript for proj in `seq -w 01 26`; do echo "$HOMEglmp/scripts/exglmp_hrrr_subh_fcst.sh $PDYm1h $HOURm1 $proj" >> $DATA/mpmdscript done # copy subh hrrr data to top level data directory cpreq $COMINlmp_base/lmp.$PDYm1h/lmp.t${HOURm1}z.hrrr_subh_m1.tdlpsq $DATA/. fi elif [ $MIN -eq '00' ] || [ $MIN -eq '15' ]; then ############################################################################### # CHECK TO SEE IF PREVIOUS CYCLE (HH) HRRR MOS FILES EXIST, IF NOT, MAKE THEM ############################################################################### if exists_and_sufficient_size_hrrr_subh $COMOUTm2/${NET}.t${HOURm2}z.hrrr3subhmos_fcsts.tdlpsq ; then echo "found ${NET}.t${HOURm2}z.hrrr3subhmos_fcsts.tdlpsq from previous run, exiting ... " else echo "Making previous cycle ${NET}.t${HOURm2}z.hrrr3subhmos_earlyp1h_fcsts.tdlpsq" # build mpmdscript for proj in `seq -w 01 26`; do echo "$HOMEglmp/scripts/exglmp_hrrr_subh_fcst.sh $PDYm2h $HOURm2 $proj" >> $DATA/mpmdscript done # copy subh hrrr data to top level data directory cpreq $COMINlmp_base/lmp.$PDYm2h/lmp.t${HOURm2}z.hrrr_subh_m1.tdlpsq $DATA/. fi fi ############################################################# # EXECUTE THE SCRIPT USING CFP ############################################################# if [ -a $DATA/mpmdscript ]; then chmod 755 $DATA/mpmdscript export MP_PGMMODEL=mpmd export MP_LABELIO=YES mpiexec --configfile $DATA/mpmdscript export err=$?; err_chk ############################################ # CONCATENATE OUTPUT FOR ALL PROJECTIONS ############################################ for proj in `seq -w 01 26`; do if [ $MIN -eq '30' ] || [ $MIN -eq '45' ]; then cat ${proj}/${NET}_hrrr3subhpreds_p${proj}.sq.t${HOURm1}z >> ${NET}_hrrr3subhpreds.sq.t${HOURm1}z cat ${proj}/${NET}_hrrr3subhmos_fcsts_p${proj}.sq.t${HOURm1}z >> ${NET}_hrrr3subhmos_fcsts.sq.t${HOURm1}z cat ${proj}/${NET}_hrrr3subhmos_fcsts_p${proj}.grsq.t${HOURm1}z >> ${NET}_grid_hrrr3mos_subh_fcsts.sq.t${HOURm1}z elif [ $MIN -eq '00' ] || [ $MIN -eq '15' ]; then cat ${proj}/${NET}_hrrr3subhpreds_p${proj}.sq.t${HOURm2}z >> ${NET}_hrrr3subhpreds.sq.t${HOURm2}z cat ${proj}/${NET}_hrrr3subhmos_fcsts_p${proj}.sq.t${HOURm2}z >> ${NET}_hrrr3subhmos_fcsts.sq.t${HOURm2}z cat ${proj}/${NET}_hrrr3subhmos_fcsts_p${proj}.grsq.t${HOURm2}z >> ${NET}_grid_hrrr3mos_subh_fcsts.sq.t${HOURm2}z fi done ############################################ # COPY OUTPUT TO COMOUT ############################################ if test $SENDCOM = 'YES' then if [ $MIN -eq '30' ] || [ $MIN -eq '45' ]; then cpreq ${NET}_hrrr3subhmos_fcsts.sq.t${HOURm1}z $COMOUTm1h/${NET}.t${HOURm1}z.hrrr3subhmos_fcsts.tdlpsq cpreq ${NET}_hrrr3subhpreds.sq.t${HOURm1}z $COMOUTm1h/${NET}.t${HOURm1}z.hrrr3subhpreds.tdlpsq cpreq ${NET}_grid_hrrr3mos_subh_fcsts.sq.t${HOURm1}z $COMOUTglmp_base/glmp.$PDYm1h/${NET}.t${HOURm1}z.grid_hrrr3mos_subh_fcsts.tdlpsq elif [ $MIN -eq '00' ] || [ $MIN -eq '15' ]; then cpreq ${NET}_hrrr3subhmos_fcsts.sq.t${HOURm2}z $COMOUTm2/${NET}.t${HOURm2}z.hrrr3subhmos_fcsts.tdlpsq cpreq ${NET}_hrrr3subhpreds.sq.t${HOURm2}z $COMOUTm2/${NET}.t${HOURm2}z.hrrr3subhpreds.tdlpsq cpreq ${NET}_grid_hrrr3mos_subh_fcsts.sq.t${HOURm2}z $COMOUTglmp_base/glmp.$PDYm2h/${NET}.t${HOURm2}z.grid_hrrr3mos_subh_fcsts.tdlpsq fi fi for proj in `seq -w 01 26`; do if [ -f ${proj}/$pgmout ]; then cat ${proj}/$pgmout; fi done fi #ecflow_client --event hrrr3mos_ready if [ "${KEEPDATA^^}" != "YES" ]; then rm -rf $DATA fi date