#!/bin/sh
date
export PS4=' $SECONDS + '
set -x

envir=${envir:?}                # Typically set to prod
DATAROOT=${DATAROOT:?}          # Typically default to {DATAROOT:-/tmpnwprd1}
COMROOT=${COMROOT:?}            # Typically default to -/com
PACKAGEROOT=${PACKAGEROOT:?}    # Typically default to -/nw${envir}}

####################################
# obtain unique process id (pid) and make temp directory
####################################
export pid=${pid:-$$}
export DATA=${DATA:-$DATAROOT/${job}}.${pid}
mkdir -p $DATA
cd $DATA
export cycle=${cycle:-t${cyc}z}

####################################
# Specify NET Name and RUN
#
# RUN - RUN grib field to repack
####################################
export NET=gfs_mos
export RUN=gfs_mos

####################################
# Determine Job Output Name on System
####################################
export outid="LL$job"
export jobid="${outid}.o${pid}"
export pgmout="OUTPUT.${pid}"

####################################
# 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 GFS-MOS version number
####################################
export GFSMOS_MODEL_VERSION=${GFSMOS_MODEL_VERSION:-${gfsmos_ver}}
export GFSMOS_CODE_VERSION=${GFSMOS_CODE_VERSION:-${mos_shared_ver}}

####################################
# Specify Execution Areas
####################################
export FIXgfs_mos=${FIXgfs_mos:-$HOMEgfs_mos/fix}
export PARMgfs_mos=${PARMgfs_mos:-$HOMEgfs_mos/parm}
export SCRIPTSgfs_mos=${SCRIPTSgfs_mos:-$HOMEgfs_mos/scripts}

#export HOMEcode=${HOMEcode:-$PACKAGEROOT/mos_shared.${GFSMOS_CODE_VERSION}}
#export EXECcode=${EXECcode:-$HOMEcode/exec}
#export FIXcode=${FIXcode:-$HOMEcode/fix}
#export PARMcode=${PARMcode:-$HOMEcode/parm}

##############################
# Run setpdy and initialize PDY variables
##############################
setpdy.sh
. ./PDY

##############################################
# Define COM directories
##############################################
export COMIN=${COMIN:-$(compath.py $envir/com/${RUN}/${gfs_mos_ver}/${RUN}.${PDY})}
export COMINhry_mos=${COMINhry_mos:-$(compath.py $envir/com/hry_mos/${hry_mos_ver}/hry_mos.$PDY)}
export COMOUT=${COMOUT:-$(compath.py -o ${RUN}/${gfs_mos_ver}/${RUN}.${PDY})}
mkdir -m 775 -p $COMOUT

env

########################################
# EXECUTE THE SCRIPTS USING MPMD
########################################
rm -f $DATA/mpmdscript
#complist="goe higoe akgoe prgoe"
complist="goe higoe akgoe"
complist2="copopo3 coptype akpopo3 akptype"

for comp in $complist
do
   mkdir -p $DATA/$comp
   echo "$SCRIPTSgfs_mos/exgfsmos_${comp}_extfcst.sh 2>&1 | sed 's/^/${comp}:/'" >> $DATA/mpmdscript 
done
for comp in $complist2
do
   mkdir -p $DATA/$comp
   echo "$SCRIPTSgfs_mos/exgfsmos_${comp}_extprdgen.sh 2>&1 | sed 's/^/${comp}:/'" >> $DATA/mpmdscript 
done

chmod 755 $DATA/mpmdscript
export MP_LABELIO=YES
export MP_STDOUTMODE=unordered
mpiexec -n $NTASK -ppn $PTILE --cpu-bind core cfp $DATA/mpmdscript
export err=$?; err_chk

#set +x
#export out_dir=${out_dir:-${OPSROOT}/${envir}/output/${PDY}}

#pbs_id=`echo $PBS_JOBID | awk -F. '{print $1}'`
#export PBS_OUTPUTFILE=${PBS_OUTPUTFILE:-$out_dir/$job.o$pbs_id}
export PBS_OUTPUTFILE=$PBS_O_WORKDIR/$job.o$pid

for comp in $complist
do
   out_file=$DATA/gfsmos_ext_forecast_${comp}_$cyc.o${pid}
   echo "############# OUTPUT FOR GFSMOS $comp #################" > $out_file
   grep -E "^${comp}:" $PBS_OUTPUTFILE | cut -d: -f 2- >> $out_file
   cat $DATA/$comp/$pgmout >> $out_file
done
for comp in $complist2
do
   out_file=$DATA/gfsmos_ext_prdgen_${comp}_$cyc.o${pid}
   echo "############# OUTPUT FOR GFSMOS $comp #################" > $out_file
   grep -E "^${comp}:" $PBS_OUTPUTFILE | cut -d: -f 2- >> $out_file
   cat $DATA/$comp/$pgmout >> $out_file
done
set -x

msg="JOB $job HAS COMPLETED NORMALLY"
postmsg "$msg"

if [ -e $pgmout ]; then
   cat $pgmout
fi

if [ "$KEEPDATA" != YES ]; then
   cd $DATAROOT
   rm -rf $DATA
fi

date