#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         exndas_coldstart_wrfsi.sh.sms 
# Script description:  Runs WRF standard initialization (SI) from GDAS first guess input 
#                      to coldstart WRF-NMM NDAS
#
# Author:        Eric Rogers       Org: NP22         Date: 2004-07-02
#
# Script history log:
# 2006-02-01  Eric Rogers - Based on HIRESW script
# 2008-08-14  Eric Rogers - Converted to use WPS
# 2009-05-22  Eric Rogers - Converted to use NPS

set -x

msg="JOB $job FOR NMMB HAS BEGUN"
postmsg "$jlogfile" "$msg"

export USHGETGES=${USHGETGES:-/nwprod/util/ush}

mod=AVN
LENGTH=3

export DOMNAM=nam

#
# Get needed variables from exndas_prelim.sh.sms
#
. $GESDIR/${RUN}.t${cyc}z.envir.sh

mkdir -p $DATA/ungrib
mkdir -p $DATA/metgrid
mkdir -p $DATA/nemsinterp

cd $DATA/metgrid
rm met*.dio
rm FILE*

cd $DATA/ungrib
sh /nwprod/util/ush/setup.sh
rm GRIBFILE.*
rm FILE*

cd $DATA/nemsinterp
rm test*d01
rm boco*
rm GWD.bin

cd $DATA/ungrib

export GDASDATE=`/nwprod/util/exec/ndate -18 $CYCLE`
echo DATEXX${GDASDATE} > gdasdate
export STARTDATE=`/nwprod/util/exec/ndate -12 $CYCLE`
echo DATEXX${STARTDATE} > startdate

datetm12=`/nwprod/util/exec/ndate -12 $CYCLE`

echo DATEXX${datetm12} > ncepdate.npstm12
cp ncepdate.npstm12 $DATA/metgrid/.

### modify namelist file
PDYstart=`cat ncepdate.npstm12 | cut -c7-14`
ystart=`cat ncepdate.npstm12 | cut -c7-10`
mstart=`cat ncepdate.npstm12 | cut -c11-12`
dstart=`cat ncepdate.npstm12 | cut -c13-14`
hstart=`cat ncepdate.npstm12 | cut -c15-16`

export COMGDASstart=/com/gfs/prod/gdas.${PDYstart}

start=$ystart$mstart$dstart$hstart

CYCer=`cat ncepdate.npstm12 | cut -c 7-16`
CYCstart=`/nwprod/util/exec/ndate -0 $CYCer`
CYCgdas=`/nwprod/util/exec/ndate -6 $CYCer`

echo DATEXX${CYCgdas} > nmcdate.gdas

PDYgds=`cat nmcdate.gdas | cut -c7-14`
yygds=`cat nmcdate.gdas | cut -c7-10`
mmgds=`cat nmcdate.gdas | cut -c11-12`
ddgds=`cat nmcdate.gdas | cut -c13-14`
cycgds=`cat nmcdate.gdas | cut -c15-16`

end=`/nwprod/util/exec/ndate +03 $start`

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

cat $PARMnam/nam_namelist.nps | 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: > namelist.nps

DATE=`echo $start | cut -c1-8`

rm Vtable

#####

cp $PARMnam/nam_Vtable.GFS_spectral Vtable

filedir=$COMIN

hrs="06 09"
 
for hr in $hrs
do

vldgdas=`/nwprod/util/exec/ndate $hr ${PDYgds}${cycgds}`

if [ $hr -eq 09 ] 
then
  $USHGETGES/getges.sh -t pg2ges -v $vldgdas -n gfs gdas.pgbf${hr} 
  $USHGETGES/getges.sh -t sigges -v $vldgdas -e prod sf${hr} 
else
  $USHGETGES/getges.sh -t pg2ges -v $vldgdas -n gfs gdas.pgbf${hr} 
  cp ${COMGDASstart}/gdas1.t${hstart}z.sgesprep sf${hr}
  err1=$?
  if [ $err1 -ne 0 ]
  then
    $USHGETGES/getges.sh -t sigges -v $vldgdas -e prod sf${hr} 
  fi
fi

done

ln -sf gdas.pgbf06 GRIBFILE.AAA
ln -sf gdas.pgbf09 GRIBFILE.AAB

ln -sf sf06 fort.27
ln -sf sf09 fort.28

####

export pgm=nam_ungrib
. prep_step

startmsg
$EXECnam/nam_ungrib >> $pgmout 2>errfile
export err=$?;err_chk

mv errfile $DATA/errfile.ungrib

### run metgrid

cd $DATA/metgrid
sh /nwprod/util/ush/setup.sh

mv $DATA/ungrib/$pgmout .

STARTHR=00
ENDHR=03
INCRHR=03

ystart=`cat ncepdate.npstm12 | cut -c7-10`
echo ystart $ystart
mstart=`cat ncepdate.npstm12 | cut -c11-12`
echo mstart $mstart
dstart=`cat ncepdate.npstm12 | cut -c13-14`
echo dstart $dstart
hstart=`cat ncepdate.npstm12 | cut -c15-16`

orig_start=$ystart$mstart$dstart${hstart}

start=`/nwprod/util/exec/ndate 0 ${orig_start}`
ystart=`echo $start | cut -c1-4`
mstart=`echo $start | cut -c5-6`
dstart=`echo $start | cut -c7-8`
hstart=`echo $start | cut -c9-10`

end=`/nwprod/util/exec/ndate 3 ${orig_start}`

echo $start
echo $end

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

cat $PARMnam/nam_namelist.nps | 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: > namelist.nps


cp $PARMnam/nam_METGRID.TBL.NMM METGRID.TBL
cp $FIXnam/nam_geo_nmb.d01.dio geo_nmb.d01.dio

FHR=$STARTHR

while [ $FHR -le $ENDHR ]
do

time=`/nwprod/util/exec/ndate +${FHR} ${orig_start}`
yy=`echo $time | cut -c1-4`
mm=`echo $time | cut -c5-6`
dd=`echo $time | cut -c7-8`
hh=`echo $time | cut -c9-10`
 
cp $DATA/ungrib/FILE:${yy}-${mm}-${dd}_${hh} .
echo GRABBED $FHR
 
FHR=`expr $FHR + $INCRHR`
 
echo $FHR
done

export pgm=nam_metgrid
. prep_step

startmsg
$EXECnam/nam_metgrid >> $pgmout 2>errfile
export err=$?;err_chk

mv errfile $DATA/errfile.metgrid

### run nemsinterp

cd $DATA/nemsinterp
sh /nwprod/util/ush/setup.sh

cp $DATA/metgrid/$pgmout .
cp $DATA/metgrid/met_nmb*dio . 
cp $DATA/metgrid/namelist.nps .

export pgm=nam_nemsinterp
. prep_step

startmsg
$EXECnam/nam_nemsinterp >> $pgmout 2>errfile
export err=$?;err_chk

mv errfile $DATA/errfile.nemsinterp

# move files back to GESDIR
mv input_domain_01_nemsio $GESDIR/ndas.t${cyc}z.input_nemsio.d01.tm12_precoldstart
rm input_domain_01
cp $GESDIR/ndas.t${cyc}z.input_nemsio.d01.tm12_precoldstart  $GESDIR/ndas.t${cyc}z.input_nemsio.d01.tm12

rm boco*
mv $pgmout $DATA/.

cd $DATA

cat errfile.ungrib errfile.metgrid errfile.nemsinterp > errfile

msg="JOB $job FOR NMMB HAS COMPLETED NORMALLY"
postmsg "$jlogfile" "$msg"

exit
