#!/bin/ksh 
#####################################################################
# 1/7/2014, Jiayi Peng and Dingchen Hou   Scripts are modified to be vertical structure 
####################################################################

echo $(date) $0 $(date -u) begin

set -xa
export PS4=' + $SECONDS $na $LINENO: '
date

export total_tasks=${total_tasks:-21}
export gefsmpexec=${gefsmpexec:-"mpirun -n $total_tasks"}
export APRUN=${gefsmpexec_mpmd:-"mpirun -n $total_tasks cfp mpmd_cmdfile"}
#export APRUNTRACK="aprun -j1 -n21 -N7 -d1"
#export NODES=3
#export IOBUF_PARAMS="*:size=32M:count=4:verbose"

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

############################
# Set up cycle varaible
############################
export cycle=t${cyc}z

echo cyc=$cyc 
echo cycle=$cycle

####################################
# Specify NET and RUN Name and model
####################################
export NET=${NET:-gefs}
export RUN=${RUN:-gefs}

####################################
# File To Log Msgs
####################################
export jlogfile=${jlogfile:-${DATA}/jlogfile.${job}.${pid}}

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

####################################
# SENDCOM  - Copy Files From TMPDIR to $COMOUT
# SENDDBN  - Issue DBNet Client Calls
# SENDECF  - Flag Events on ECF
# VERBOSE  - Specify Verbose Output
####################################
export SENDCOM=${SENDCOM:-YES}
export SENDDBN=${SENDDBN:-YES}
export SENDECF=${SENDECF:-YES}
export VERBOSE=${VERBOSE:-YES}

####################################
# Specify Execution Areas
####################################
export HOMEgefs=${HOMEgefs:-${NWROOT}/gefs.${gefs_ver}}
export HOMEtrak=${HOMEtrak:-${NWROOT}/ens_tracker.${tracker_ver}}

export EXECens_tracker=${EXECtrak:-$HOMEtrak/exec}
export USHens_tracker=${USHtrak:-$HOMEtrak/ush}
export FIXens_tracker=${FIXtrak:-$HOMEtrak/fix}
export SCRIPTSens_tracker=${SCRIPTSens_tracker:-$HOMEtrak/scripts}

export PARMgefs=$HOMEgefs/parm

##############################
# Run setup to initialize working directory and utility scripts
##############################
#ksh setup.sh

##############################
# Run setpdy and initialize PDY variables
##############################
setpdy.sh
. PDY
#export PDY=20140913 

##############################################
# Define COM directories
##############################################
export COMIN=${COMIN:-${COMROOT}/${NET}/${envir}/gefs.${PDY}/${cyc}}
export COMOUT=${COMOUT:-${COMROOT}/${NET}/${envir}/${RUN}.${PDY}/${cyc}/tctrack}

export COMOUThur=${COMOUThur:-${COMROOT}/hur/${envir}/global}
export COMOUTatcf=${COMOUTatcf:-${COMROOT}/nhc/${envir}/atcf}

mkdir -m 775 -p $COMOUT $COMOUThur $COMOUTatcf

export ensdira=$COMIN/pgrb2sp25
export ensdirb=$COMIN/pgrb2p25

##############################################
echo set parameters using gefs.parm
##############################################
. $PARMgefs/gefs.parm

if [[ $envir = dev ]]; then
	export fhmax=$fhmax00
elif (( cyc == 06 )); then
	export fhmax=$fhmax06
elif (( cyc == 12 )); then
	export fhmax=$fhmax12
elif (( cyc == 18 )); then
	export fhmax=$fhmax18
fi

####################################
# Create member list
####################################

if [[ $fcstlong = true ]]; then
	memberlist="c00"
else
	memberlist=""
fi

(( imem = 0 ))
while (( imem < npert )); do
	(( imem = imem + 1 ))
	if (( imem < 10 )); then
		imem=0$imem
	fi
	memberlist="$memberlist p$imem"
done # while (( imem < npert ))
echo memberlist=$memberlist

export homesyndir=$HOMEtrak

echo
env | sort
echo

########################################################
# Execute the tracking script.
export cmodel=ens
export loopnum=1
export ymdh=${PDY}${cyc}

#-----------input data checking -----------------
${USHens_tracker}/data_check_gefs.sh
export err=$?; err_chk

if [ $err != 0 ]; then
    msg="JOB FAILED!"
    exit $err
fi
#------------------------------------------------

mkdir ${DATA}/${cmodel}
cd ${DATA}/${cmodel}

>trkr.cmdfile
for pert in ${memberlist}; do
	pertdir=${DATA}/${cmodel}/${pert}
	if [ ! -d ${pertdir} ]; then 
		mkdir -p ${pertdir}
	fi
	outfile=${pertdir}/trkr.${cmodel}.${pert}.${ymdh}.out
	echo "${USHens_tracker}/extrkr_g2.sh ${loopnum} ${cmodel} ${ymdh} ${pert} ${pertdir} 2>&1 >${outfile}" >>trkr.cmdfile
done # for pert in ${memberlist}

cat trkr.cmdfile
chmod 775 trkr.cmdfile
export MP_CMDFILE=${DATA}/${cmodel}/trkr.cmdfile
export SCR_CMDFILE=$MP_CMDFILE  # Used by mpiserial on Theia
export MP_PGMMODEL=mpmd
rm mpmd_cmdfile
ln -s $MP_CMDFILE mpmd_cmdfile
$APRUN 

#for pert in ${memberlist}; do
#  pertdir=${DATA}/${cmodel}/${pert}
#  cp ${pertdir}/trak.a${pert}.atcfunix.${PDY}${CYL} ${COMOUT}/a${pert}.t${CYL}z.cyclone.trackatcfunix
#done
##rm -rf ${DATA}/*

sh ${USHens_tracker}/ens_trak_ave.sh
export err=$?; err_chk
#cd ${DATA}
#${USHens_tracker}/atcf_2_cxml.sh ${cmodel} ${ymdh} ${COMOUT} ${DATA}
#export err=$?; err_chk

################################
msg="JOB COMPLETED NORMALLY"
postmsg "$jlogfile" "$msg"

##############################
# Remove the Temporary working directory
##############################
if [[ $KEEPDATA != "YES" ]]; then
	cd $DATAROOT
	rm -rf $DATA
fi

echo $(date) $job completed