#!/bin/bash

echo "$(date -u) begin $(basename $BASH_SOURCE)"

set -xa
if [[ ${STRICT:-NO} == "YES" ]]; then
	# Turn on strict bash error checking
	set -eu
fi
export PS4='$SECONDS + $(basename $BASH_SOURCE)[$LINENO] '

####################################
# Determine Job Output Name on System
####################################
export jobid=${jobid:-"$job.$PBS_JOBID"}
export pgmout="OUTPUT.${PBS_JOBID}"
export pgmerr=errfile

######################################
# Set up compute resources
######################################
export NTASKS=${total_tasks:-6}
export wavempexec=${wavempexec:-"mpiexec -n"}
export wave_mpmd=${wave_mpmd:-"cfp"}

####################################
# Specify and create working directory
####################################
export DATA=${DATA:-${DATAROOT}/${jobid}}
mkdir -p $DATA
cd $DATA

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

######################################
# 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}

######################################
# Set up the date information
######################################
export cycle=t${cyc}z
setpdy.sh
source PDY

####################################
# Specify Execution Areas
####################################
export HOMEgefs=${HOMEgefs:-${PACKAGEROOT}/gefs.${gefs_ver}}
export EXECgefs=${EXECgefs:-$HOMEgefs/exec}
export PARMgefs=${PARMgefs:-$HOMEgefs/parm}
export FIXwave=${FIXwave:-$HOMEgefs/fix/fix_wave}

##############################################
# Define COM directories
##############################################
# Have to include $COMPONENT in COM paths for downstream scripts
ver=${ver:-$(echo ${gefs_ver}|cut -c1-5)}
export COMIN=${COMIN:-$(compath.py $envir/com/$NET/${ver})/${RUN}.${PDY}/$cyc/wave}
export COMOUT=${COMOUT:-$(compath.py -o $NET/${ver})/${RUN}.${PDY}/$cyc/wave}
if [[ $SENDCOM = YES ]]; then
  mkdir -p $COMOUT/rundata
fi

#############################
# Source relevant config files
#############################
configs="gefs gefs_wave gefs_wave_init"
config_path=$PARMgefs
for config in $configs; do
    . $config_path/$config.parm
    export err=$?
    if [[ $err != 0 ]]; then
        echo "FATAL ERROR in $(basename $BASH_SOURCE): Error while loading parm file $config_path/$config.parm"
        exit $err
    fi
done

export errchk=${errchk:-err_chk}
if [[ $SENDCOM == "YES" ]]; then
    export wavelog=${COMOUT}/wave.log
else
    export wavelog=${DATA}/wave.log
fi

echo "Environment before calling script"
env | sort

#############################################################
# Execute the script
$HOMEwave/scripts/exwave_init.sh
export err=$?
if [[ $err == 0 ]]; then
    echo "$job completed normally!"
else
    echo "FATAL ERROR in $(basename $BASH_SOURCE): $job failed!"
    exit $err
fi
#############################################################

##############################
# Remove the Temporary working directory
##############################
cd $DATAROOT
if [ ${KEEPDATA:-NO} = NO ] ; then rm -rf $DATA ; fi

echo "$(date -u) end $(basename $BASH_SOURCE)"

exit $err