#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         exrap_post.sh
# Script description:  Run rap post jobs
#
# Author:      G Manikin / M Hu    EMC/GSD         Date: 2011-09-15
#
# Abstract: This script runs the RAP post jobs for the 18-h RAP forecast
#
# Script history log:
# 2111-09-15  G Manikin / M Hu  -- new script 
#

set -xa
cd $DATA 

msg="$job HAS BEGUN"
postmsg $jlogfile "$msg"

# fhr is passed from the SMS script
fhr=$fhr

# Set up some constants
export HOMErap=${HOMErap:-/nwprod}
export PARMrap=${PARMrap:-$HOMErap/parm}
export FIXrap=${FIXrap:-$HOMErap/fix}
export EXECrap=${EXECrap:-$HOMErap/exec}
export ndate=${ndate:-/nwprod/util/exec/ndate}
export XLFRTEOPTS="unit_vars=yes"

export RAPGES_FCYC=${RAPGES_FCYC:-$gespath/rap/rapges}
export RAPGES_SFC=${RAPGES_SFC:-$gespath/rap/rapges_sfc}

START_TIME=$PDY$cyc
echo $START_TIME >STARTTIME

# Set up some constants
export CORE=RAPR
export OUTTYP=binarympiio
export MP_BINDPROC=NO

###############################################################

SPLNUM=47
SPL=2.,5.,7.,10.,20.,30.\
,50.,70.,75.,100.,125.,150.,175.,200.,225.\
,250.,275.,300.,325.,350.,375.,400.,425.,450.\
,475.,500.,525.,550.,575.,600.,625.,650.\
,675.,700.,725.,750.,775.,800.,825.,850.\
,875.,900.,925.,950.,975.,1000.,1013.2

icnt=1
  while [ $icnt -lt 1000 ]
  do
    POST_TIME=`$ndate +${fhr} $START_TIME`
    YYYY=`echo ${POST_TIME} | cut -c1-4`
    MM=`echo ${POST_TIME} | cut -c5-6`
    DD=`echo ${POST_TIME} | cut -c7-8`
    HH=`echo ${POST_TIME} | cut -c9-10`
    yy=`echo ${POST_TIME} | cut -c3-4`
    timestr=${YYYY}-${MM}-${DD}_${HH}:00:00

    if [ -s $FCSTDIR/wrfout_d01_${timestr} ]
    then
      sleep 30
      break
    else
      icnt=$((icnt + 1))
      sleep 5
    fi
    if [ $icnt -ge 180 ]
    then
      msg="ABORTING after 15 minutes of waiting for RAP FCST F${fhr} to end."
      err_exit $msg
    fi
  done

# copy wrfout file to guess directory for use by later cycles
#  cp $FCSTDIR/wrfout_d01_${timestr} ${RAPGES_FCYC}/.
  cp $FCSTDIR/wrfout_d01_${timestr} ${RAPGES_FCYC}/rap_${START_TIME}f0${fhr}

##  save files for surface cycle in case of RAP crash
timeHH=${HH}
cp ${FCSTDIR}/wrfout_d01_${timestr} ${RAPGES_SFC}/wrfout_d01_${timeHH}
fcstfile=${FCSTDIR}/wrfout_d01_${timestr}
cp ${fcstfile} wrfout_d01

# use pre-DFI analysis file for posting
time_analysis='00'
if [ ${fhr} -eq ${time_analysis} ]; then
  fcstfile=${FCSTDIR}/wrfinput_d01
  echo 'use GSI analysis',${fcstfile}
  cp ${fcstfile} input_d01
  cp ${fcstfile} wrfout_d01
  cp ${FCSTDIR}/wrfout_analyzed_d01 analyzedH
  poe ${EXECrap}/rap_update_height >> $pgmout 2> errfile 
  export err=$?; err_chk
fi

rm -f fort.*
ln -s ${PARMrap}/rap_cntrl.parm fort.14
ln -s ./itag fort.19
ln -s ./griddef.out fort.110
cp ${PARMrap}/rap_run_ETAMPNEW_DATA eta_micro_lookup.dat

cat > itag <<EOF
wrfout_d01
binarympiio
${timestr}
${CORE}
${SPLNUM}
${SPL}
${VALIDTIMEUNITS}
EOF

  pgm=rap_wrfpost
  export pgm;. prep_step

  startmsg
  #XXW$EXECrap/rap_wrfpost >> $pgmout 2> errfile
  /nwtest/exec/rap_wrfpost >> $pgmout 2> errfile
  err=$?;export err ;err_chk

    mv WRFNAT.GrbF${fhr} $COMOUT/rap.${cycle}.wrfnat${fhr}.tm00
    mv WRFPRS.GrbF${fhr} $COMOUT/rap.${cycle}.wrfprs${fhr}.tm00

# make the profile data for the sounding post

cp ${FIXrap}/rap_profdat .
OUTTYP=binary
model=RAPR
NFILE=1
INCR=01
CYCLE1=`/nwprod/util/exec/ndate -1 $START_TIME`
date=`/nwprod/util/exec/ndate $fhr $START_TIME`

wyr=`echo $date | cut -c1-4`
wmn=`echo $date | cut -c5-6`
wdy=`echo $date | cut -c7-8`
whr=`echo $date | cut -c9-10`

let fhrold="$fhr - 1"
dateold=`/nwprod/util/exec/ndate $fhrold $START_TIME`

oyr=`echo $dateold | cut -c1-4`
omn=`echo $dateold | cut -c5-6`
ody=`echo $dateold | cut -c7-8`
ohr=`echo $dateold | cut -c9-10`

timeform=${wyr}"-"${wmn}"-"${wdy}"_"${whr}":00:00"
timeformold=${oyr}"-"${omn}"-"${ody}"_"${ohr}":00:00"

# already have the wrfout file copied in as wrfout_d01
cp wrfout_d01 wrfout_d01_${timeform}
if [ $fhr -eq 0 ]; then
cp ${RAPGES_SFC}/wrfout_d01_${ohr} wrfout_d01_${timeformold} 
else
cp ${FCSTDIR}/wrfout_d01_${timeformold} .
fi

OLDOUTFIL=wrfout_d01_${timeformold}

# use pre-DFI file for 00-hr data
if [ ${fhr} -eq ${time_analysis} ]; then
  fcstfile=${FCSTDIR}/wrfinput_d01
  cp $fcstfile .
  OUTFIL=wrfinput_d01
else
  OUTFIL=wrfout_d01_${timeform}
fi

cat > itag <<EOF
$OUTFIL
$model
$OUTTYP
$START_TIME
$NFILE
$INCR
${fhr}
$OLDOUTFIL
EOF

export XLFUNIT_19=rap_profdat
export XLFUNIT_79=profilm.c1
${EXECrap}/rap_wrfbufr < itag >> $pgmout 2> errfile 
err=$?;export err ;err_chk

mv profilm.c1 profilm.c1.f${fhr}

echo done >$FCSTDIR/rappost.done${fhr}
  postmsg $jlogfile "RAP POST done for F${fhr}"

echo EXITING $0
exit
