#!/bin/bash 

# needed env vars: SIGI, SFCI, HOMEGLOBAL, ANALHR, RUN, JCAP, LEVS
# DATOUT, FHOUT, FHMAX, FHDFI, datapath, analdate, analdatep1, charnanal
# HOSTFILE, nprocs

echo "starting drive_gfs at `date`"
export ANALHR=`echo $analdate | cut -c9-10`
export cyc=$ANALHR

#set -xa

# #### 05/05/99 ###############################
# SETUP GFS FCST PROCESSING VARIABLES
# #############################################

####################################
# obtain unique process id (pid) and make temp directory
####################################
export pid=$$
export DATA=$datapath2/gfstmp.${pid}
homedir=$PWD
mkdir $DATA
cd $DATA

export cycle=t${cyc}z

####################################
# Specify NET and RUN Name and model
####################################
export NET=$RUN

####################################
# SENDSMS  - Flag Events on SMS
# SENDCOM  - Copy Files From TMPDIR to $DATOUT
# SENDDBN  - Issue DBNet Client Calls
# RERUN    - Rerun fcst from beginning (default no)
# VERBOSE  - Specify Verbose Output in exglobal_fcst.sh.sms
####################################
export SENDSMS=YES
export SENDCOM=YES
export SENDDBN=NO
export RERUN=YES
export VERBOSE=NO

####################################
# Specify Execution Areas
####################################
#export EXECGLOBAL=$HOMEGLOBAL/bin
#export FIXGLOBAL=$HOMEGLOBAL/fix

##############################################
# Define COM directories
##############################################
mkdir -m 775 -p $DATOUT

####################################
# Specify Special Fcst Vars
####################################
#
# Forecast Horizontal Resolution
#
# JCAP from env
#
# Forecast Vertical Resolution
#
# LEVS from env
# export added by Grant and Rich 11/13/2003
# for T382
if [[ $JCAP == '382' ]]; then
export DELTIM=180 #Added to compensate for failure
                  #due to 'unphysical max speed' error.
fi

export CO2CON=$FIXGLOBAL/global_co2con.l${LEVS}.f77
export MTNVAR=$FIXGLOBAL/global_mtnvar.t${JCAP}.f77
export CLTUNE=$FIXGLOBAL/global_cldtune.f77
export DTBTHE=$FIXGLOBAL/global_tbthe.f77
export O3FORC=$FIXGLOBAL/global_o3prdlos.f77
export O3CLIM=$FIXGLOBAL/global_o3clim.txt
export OROGRAPHY=$FIXGLOBAL/global_orography.t$JCAP.grb
export CHGRESEXEC=$EXEGLOBAL/global_chgres
#
# Restart File Names
#
export SIGR1=$DATOUT/${RUN}.${cycle}.sigr1.t${JCAP}l${LEVS}
export SIGR2=$DATOUT/${RUN}.${cycle}.sigr2.t${JCAP}l${LEVS}
export SFCR=$DATOUT/${RUN}.${cycle}.sfcr.t${JCAP}l${LEVS}

msg="HAS BEGUN on `hostname`"

env

export NTHREADS=1
#export OMP_NUM_THREADS=1

####################################
# Check if this is a restart
#
# Define Initialization File Names
#
# Run Forecast
#
####################################
if test -f $SIGR1 -a -f $SIGR2 -a -f $SFCR -a $RERUN = "NO"
then
    cp $SIGR1 $DATA/sigr1
    cp $SIGR2 $DATA/sigr2
    cp $SFCR $DATA/sfcr

    export SIGI=$SIGR1
    export SIGI2=$SIGR2
    export SFCI=$SFCR

    msg="Forecast Starting with Restart files in $GESdir"
else
    #
    # Forecast Start Hour
    #
    export FHINI=0   

    # SIGI, SFCI must be specified as env vars.

    if test -f $SIGI -a -f $SFCI
    then
       echo "Forecast Starting with Initial Guess Fields"
    else
       echo "Initial Guess Fields Not Available/No Guess from J920"
    fi

fi

############################################################
# Start Section 2 of the GFS Forecast 180-384 Hours
############################################################
#
# Forecast hour to Read One Time level
#
export FHROT=0
#
# Forecast Hour Output Frequency
#
#export FHOUT=12
#
# Forecast Length (Hours)
#
#export FHMAX=240
#
# Forecast Hour Restart Frequency
#
#export FHRES=$FHMAX
#
# Interval to Zero out precip field,etc. 
# Should not be less that FHOUT
#
export FHZER=$FHOUT
#
# Half number of hours of digital filter initialization
#
#export FHDFI=3
#
# Surface cycling boundary condition update frequency in hours
#
#export FHCYC=24
#
# PDS Grid Designator
#
export IGEN=96
export LIOPE=.false. # no IO server node (default is .true.)
#
# Output File Names
#
#export SIGO=${SIGO:-$DATOUT/${RUN}.${cycle}.sf'${FH}'}
#export SFCO=${SFCO:-$DATOUT/${RUN}.${cycle}.bf'${FH}'}
#export FLXO=${FLXO:-$DATOUT/${RUN}.${cycle}.sfluxgrbf'${FH}'}
#export LOGO=${LOGO:-$DATOUT/${RUN}.${cycle}.logf'${FH}'}
export SIGO=${SIGO:-${DATOUT}/sfg_${analdatep1}_fhr'${FH}'_${charnanal}}
export SFCO=${SFCO:-${DATOUT}/bfg_${analdatep1}_fhr'${FH}'_${charnanal}}
export FLXO=${FLXO:-${DATOUT}/sflxgrb_${analdatep1}_fhr'${FH}'_${charnanal}}
#export LOGO=${LOGO:-${DATOUT}/log_${analdatep1}_fhr'${FH}'_${charnanal}}
# don't need flux and log files.
#export FLXO=/dev/null
export LOGO=/dev/null

#cp $SIGR1 $DATA/sigr1
#cp $SIGR2 $DATA/sigr2
#cp $SFCR $DATA/sfcr

#
# Execute the Forecast script
#
echo "executing run_gfs at `date`"
sh ${homedir}/run_gfs

msg="ENDED NORMALLY."

##############################
# Remove the Temporary working directory
##############################
cd $homedir
rm -rf $DATA

# remove *.fh00 files
/bin/rm -rf $DATOUT/*_fhr00_${charnanal}
echo "ending run_gfs at `date`"