#!/bin/sh
########################################################################
#
#  JOB NAME:  JLMP_1HCNVLTG_MOSFCST   
#             (ADOPTED FROM JLMP_CNVLTG_PREP)
#
#  HISTORY:   NOV 27 2016             SAMPLATSKY  CREATED
#             DEC 21 2016             HUANG       MODIFIED TO REMOVE
#                                                 MODULE LOAD STATEMENT
#                                                 AS THAT IS DONE IN 
#                                                 MASTER SCRIPT
#             DEC 29 2016             HUANG       MODIFIED TO SUIT THE 
#                                                 NEED OF THE NEW MOSFCST
#                                                 SCRIPT (function 
#                                                 CAPABILITY)
#             SEP 2021                SAMPLATSKY/ MODIFED FOR WCOSS2
#                                     SHAFER
#             JAN 13 2023 lmp.v2.5.0  SHAFER      ADDRESSING BUGZILLA - CHECK FOR
#                                                 EXISTENCE OF $pgmout BEFORE CATTING
#
########################################################################

###########################################################
# SET SHELL PROCESSING VARIABLES
###########################################################

date
export PS4=' $SECONDS + '
set -x

###########################################################
# OBTAIN UNIQUE PROCESS ID (PID) AND CREATE TEMP DIRECTORY
###########################################################

export DATA=${DATA:-${DATAROOT:?}/${jobid:?}}

mkdir -p $DATA
cd $DATA

export cycle=t${cyc}z
export HOUR=$cyc

###########################################################
# SPECIFY NET AND MODEL VARIABLES
###########################################################

export NET=${NET:-lmp}
export RUN=${RUN:-lmp}

###########################################################
# SPECIFY LOG FILE, WHERE ALL DIAGNOSTIC OUTPUT IS WRITTEN
###########################################################

###########################################################
# DETERMINE JOB OUTPUT NAME (USED IN $DATA WHILE JOB IS
# RUNNING)
###########################################################
export pgmout="OUTPUT.$$"

###########################################################
# SENDECF  - Flag Events on ECF
# SENDCOM  - Copy Files From TMPDIR to $com
# SENDDBN  - Send files to OSO
###########################################################
export SENDECF=${SENDECF:-YES}
export SENDCOM=${SENDCOM:-YES}
export SENDDBN=${SENDDBN:-YES}

###########################################################
# SPECIFY DIRECTORIES WHERE JOB-RELATED FILES RESIDE
###########################################################
export USHlmp=${USHlmp:-${HOMElmp}/ush}
export EXEClmp=${EXEClmp:-${HOMElmp}/exec}
export FIXlmp=${FIXlmp:-${HOMElmp}/fix}
export PARMlmp=${PARMlmp:-${HOMElmp}/parm}
export SCRlmp=${SCRlmp:-${HOMElmp}/scripts}
export EXEClamp_shared=${EXEClamp_shared:-${HOMElamp_shared}/exec}

###########################################################
# SET DATE AND TIME VARIABLES
###########################################################
export PDY=$PDY
setpdy.sh
. ./PDY

export DAT=${PDY}${HOUR}

env

case ${HOUR} in
  04 | 10 | 16 | 22 )
    export offset=4
    export offset2=10;;
  05 | 11 | 17 | 23 )
    export offset=5
    export offset2=11;;
  06 | 12 | 18 | 00 )
    export offset=6
    export offset2=12;;
  07 | 13 | 19 | 01 )
    export offset=7
    export offset2=13;;
  08 | 14 | 20 | 02 )
    export offset=8
    export offset2=14;;
  09 | 15 | 21 | 03 )
    export offset=9
    export offset2=15;;
esac

MOSDATcurr=`$NDATE -${offset} ${DAT}`
MOSDATprev=`$NDATE -${offset2} ${DAT}`

export MOSPDYcurr=`echo ${MOSDATcurr} | cut -c1-8`
export MOSPDYprev=`echo ${MOSDATprev} | cut -c1-8`

export MOSCYCcurr=`echo ${MOSDATcurr} | cut -c9-10`
export MOSCYCprev=`echo ${MOSDATprev} | cut -c9-10`

###########################################################
# SET UP DIRECTORY PATHS DEPENDENT ON DATE VARIABLES
###########################################################

COMOUTbase=${COMOUTbase:-$(compath.py -o ${NET}/${lmp_ver})}
export COMOUTcurr=${COMOUTcurr:-${COMOUTbase}/${RUN}.${MOSPDYcurr}}
export COMOUTprev=${COMOUTprev:-${COMOUTbase}/${RUN}.${MOSPDYprev}}
export COMINnamdir=${COMINnam:-$(compath.py nam_mos/${nam_mos_ver})}
export COMINgfsdir=${COMINgfs:-$(compath.py gfs_mos/${gfs_mos_ver})}

mkdir -p ${COMOUTcurr} $COMOUTprev

#####################################################
#  SET UP POE
#####################################################

rm -f ${DATA}/mpmdscript
runlist1="gfs nam"
runlist2="cnv ltg"

for run1 in ${runlist1}
do
  for run2 in ${runlist2}
  do
    echo "${SCRlmp}/exlmp_1hcnvltg_mosfcst.sh ${run1} ${run2}" >> ${DATA}/mpmdscript
  done
done

#############################################################
# EXECUTE THE POESCRIPT
#############################################################

chmod 775 ${DATA}/mpmdscript
export MP_PGMMODEL=mpmd
export MP_LABELIO=YES

mpiexec --configfile $DATA/mpmdscript
export err=$?; err_chk

set +x
i=0
for run1 in $runlist1
do
  for run2 in $runlist2
  do
    echo "############# OUTPUT FOR RUN ${run1}-${run2} #################"
    if [ -f ${DATA}/${run1}${run2}/${pgmout} ]; then
       cat ${DATA}/${run1}${run2}/${pgmout}
    fi
    echo "###################################################"
    let i=i+1
  done
done
set -x

###########################################################
# DELETE WORKING DIRECTORY
###########################################################

cd $COMOUTbase

if [ "${KEEPDATA^^}" != "YES" ]; then
   rm -rf ${DATA}
fi

date