#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         exdgex_wrffcst.sh.sms
# Script description:  Runs WRF-NMM forecast model for DGEX
#
# Author:        Eric Rogers       Org: NP22         Date: 2006-04-21
#
# SPECIAL INSTRUCTIONS : For best WRF-NMM performance, standard out and standard error
# files for both script and model MUST be written to a separate location from that in
# which this script runs, for example:
#### @ output = /tmpnwprd/stdout.dgex/fcstout
#### @ error = /tmpnwprd/stderr.dgex/fcsterr
#

set -x

#
# Get needed variables from exdgex_prelim.sh.sms
#
. $COMOUT/${RUN}_${REGION}.t${cyc}z.envir.sh

export tmmark=tm00

echo $CYCLEnam > cycledate
CYC=`cut -c 9-10 cycledate`
CYCFREE=`cut -c 9-10 cycledate`

cp $FIXdgex/dgex_LANDUSE.TBL LANDUSE.TBL
cp $PARMdgex/dgex_ETAMPNEW_DATA ETAMPNEW_DATA
cp $FIXdgex/dgex_VEGPARM.TBL VEGPARM.TBL
cp $FIXdgex/dgex_SOILPARM.TBL SOILPARM.TBL
cp $FIXdgex/dgex_GENPARM.TBL GENPARM.TBL
cp $FIXdgex/dgex_co2.60_hybrid_30mb co2.60_hybrid_30mbtop
cp $FIXdgex/dgex_co2.60_hybrid_30mb co2_trans

cp $FIXdgex/hiresw_RRTM_DATA RRTM_DATA
cp $FIXdgex/hiresw_tr49t67 tr49t67
cp $FIXdgex/hiresw_tr49t85 tr49t85
cp $FIXdgex/hiresw_tr67t85 tr67t85
cp $PARMdgex/nam_micro_lookup.dat eta_micro_lookup.dat

iy=$(echo $CYCLEdgex|cut -c1-4)
im=$(echo $CYCLEdgex|cut -c5-6)
id=$(echo $CYCLEdgex|cut -c7-8)
ih=$(echo $CYCLEdgex|cut -c9-10)

# Build DGEX namelist

NLNAME=dgex_${REGION}_wrfnmm_namelist.input.in_fcst

lasthour=`ls -1 restartdone*.tm00 | tail -1 | cut -c 12-13`
LENGTH=114

if [ -z "$lasthour" -o "$RERUN" = "YES" ] ; then

tstart=0
resetss=T

ystart=`echo $CYCLEdgex | cut -c1-4`
mstart=`echo $CYCLEdgex | cut -c5-6`
dstart=`echo $CYCLEdgex | cut -c7-8`
hstart=`echo $CYCLEdgex | cut -c9-10`

end=$(/nwprod/util/exec/ndate +$LENGTH $CYCLEdgex)

yend=`echo $end | cut -c1-4`
mend=`echo $end | cut -c5-6`
dend=`echo $end | cut -c7-8`
hend=`echo $end | cut -c9-10`

restval=F

cat $PARMdgex/$NLNAME | sed s:RHOURS:$LENGTH: | sed s:TSTART:$tstart: | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$hstart: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend:  \
 | sed s:RESINT:$resint: | sed s:REST:$restval: | sed s:RESETSS:$resetss: > namelist.input

cp namelist.input $COMOUT/dgex_${REGION}.t${CYCFREE}z.namelist.input
cp $COMOUT/dgex_${REGION}.t${CYCFREE}z.wrfinput_d01 wrfinput_d01  

else

# restart from non-zero forecast hour
# assume needed wrfrst file for restart is still in the working directory

fcstlasthr=`ls -1 restartdone*.tm00 | tail -1 | cut -c 12-13`

tstart=$lasthour
rday=0
resetss=F
let "rhour=$LENGTH-$lasthour"

newstart=$(/nwprod/util/exec/ndate +$lasthour $CYCLEdgex)
ystart=`echo $newstart | cut -c1-4`
mstart=`echo $newstart | cut -c5-6`
dstart=`echo $newstart | cut -c7-8`
hstart=`echo $newstart | cut -c9-10`

end=$(/nwprod/util/exec/ndate +$LENGTH $CYCLEdgex)
yend=`echo $end | cut -c1-4`
mend=`echo $end | cut -c5-6`
dend=`echo $end | cut -c7-8`
hend=`echo $end | cut -c9-10`

iy=$(echo $newstart|cut -c1-4)
im=$(echo $newstart|cut -c5-6)
id=$(echo $newstart|cut -c7-8)
ih=$(echo $newstart|cut -c9-10)

export restval=T

cat $PARMdgex/$NLNAME | sed s:RHOURS:$rhour: | sed s:TSTART:$tstart: | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$hstart: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend:  \
 | sed s:RESINT:$resint: | sed s:REST:$restval: | sed s:RESETSS:$resetss: > namelist.input

cp namelist.input $COMOUT/dgex_${REGION}.t${CYCFREE}z.namelist.input_restart

#end check on lasthour
fi

cp $COMOUT/dgex_${REGION}.t${CYCFREE}z.wrfbdy_d01 wrfbdy_d01

cp $PARMdgex/nam_fcst_gribmap.txt gribmap.txt 

export OMP_MAX_THREADS=1
export XLSMPOPTS="parthds=1:spins=0:yields=0:stack=128000000:schedule=static"

ln -sf co2.60_hybrid_30mbtop fort.14

export pgm=dgex_wrfnmm
. prep_step

startmsg
$EXECdgex/dgex_wrfnmm
export err=$?

if [ $err -ne 0 ]
then
   err_chk
else
   msg="$pgm completed normally"
   sh $utilscript/postmsg.sh "$jlogfile" "$msg"
fi

exit
