
################################################################################
#
# Name : dgex_getgfsbc.sh           Author : Eric Rogers
#
# Abstract: This script copies sigma coefficient files from the specified GFS
#           run to the local directory for use as boundary conditions in the
#           NDAS/NAM. This script also returns the where_gfs_ran.  
#
# Log:
#
# 04-03-30 : Eric Rogers created new version for DGEX
#
#             
# Usage:
#
# getgfsbc_nam.sh $DATE $IHFIN
#
# DATE  = 10 digit starting date date (e.g., 1998061900)
# IHFIN = Last forecast hour to be copied
#
set -x

if [ $# -lt 2 ] ; then
   echo "Usage: $0 DATE IHFIN"
   exit 8
fi

gfsstart=$1
ifin=$2
ifhr=078
##ifhr_6hold=06
##ifhr_12hold=12
##ifhr_18hold=18
let "ifhr_3hold=03+ifhr"
let "ifhr_6hold=06+ifhr"
let "ifhr_12hold=12+ifhr"
let "ifhr_18hold=18+ifhr"

GFS3HOLD=`/nwprod/util/exec/ndate -3 $gfsstart`
GFS6HOLD=`/nwprod/util/exec/ndate -6 $gfsstart`
GFS12HOLD=`/nwprod/util/exec/ndate -12 $gfsstart`
GFS18HOLD=`/nwprod/util/exec/ndate -18 $gfsstart`

echo $GFS6HOLD > gfs6hold.date
PDYgfsold=`cut -c 1-8 gfs6hold.date`
HHgfsold=`cut -c 9-10 gfs6hold.date`

echo $GFS12HOLD > gfs12hold.date
PDY12gfsold=`cut -c 1-8 gfs12hold.date`
HH12gfsold=`cut -c 9-10 gfs12hold.date`

echo $GFS18HOLD > gfs18hold.date
PDY18gfsold=`cut -c 1-8 gfs18hold.date`
HH18gfsold=`cut -c 9-10 gfs18hold.date`

let "ineed=ifin/3+1"
echo $ineed
let "ineed=ineed-27"

FIXGLOBAL=/nwprod/fix
USHGLOBAL=/nwprod/ush
EXECGLOBAL=/nwprod/exec
utilscript=/nwprod/util/ush

rm fcsthour.bclist

while [ $ifhr -le $ifin ] ; do

  /nwprod/util/exec/ndate $ifhr $gfsstart > valdate
  VDATE=`cut -c 1-10 valdate`

  cp /com/gfs/prod/gfs.${PDYgfsold}/gfs.t${HHgfsold}z.sf${ifhr_6hold} gfsbc${ifhr}_ops
  err1=$?

  if [ $err1 -ne 0 ] ; then
    cp /com/gfs/prod/gfs.${PDY12gfsold}/gfs.t${HH12gfsold}z.sf${ifhr_12hold} gfsbc${ifhr}_ops
    err2=$?
    if [ $err2 -ne 0 ] ; then
      cp /com/gfs/prod/gfs.${PDY18gfsold}/gfs.t${HH18gfsold}z.sf${ifhr_18hold} gfsbc${ifhr}_ops
      err3=$?
##      if [ $err3 -ne 0 ] ; then
##        $utilscript/getges.sh -t sigcur -v $VDATE -e $gesenvir gfsbc${icnt}_ops
##      fi
    fi
  fi

  globres=`/nwprod/exec/global_sighdr gfsbc${ifhr}_ops JCAP`
  err1=$?

  if [ $err1 -eq 0 ] ; then
   if [ $globres -ne 382 ] ; then
     rm itag
     export CHGRESEXEC=/nwprod/exec/global_chgres

cat > itag << EOF
 &NAMCHG JCAP=382, LEVS=64, LONB=768, LATB=384,
         NTRAC=0, IDVC=0, IDSL=0,
          /
EOF

     ln -sf gfsbc${ifhr}_ops chgres.inp.sig
     ln -sf /nwprod/fix/global_orography.t382.grb chgres.inp.orogb
     ln -sf /nwprod/fix/global_hyblevel.l64.txt chgres.inp.siglevel
     ln -sf /nwprod/fix/global_o3clim.txt chgres.inp.o3clim
     ln -sf NULL chgres.inp.sfc
     ln -sf /nwprod/fix/global_slmask.t382.grb chgres.inp.slmgb
     ln -sf /nwprod/fix/global_lonsperlat.t382.txt chgres.inp.lonsperlat
     ln -sf gfsbc${ifhr}_ops_382 chgres.out.sig
     ln -sf sfcf03a chgres.out.sfc
     /nwprod/exec/global_chgres < itag > out
     mv gfsbc${ifhr}_ops_382 gfsbc${ifhr}_ops
     rm chgres.inp.sig chgres.inp.orogb chgres.inp.siglevel chgres.inp.o3clim chgres.inp.sfc 
     rm chgres.inp.slmgb chgres.inp.lonsperlat chgres.out.sfc
    fi
    echo ${ifhr} >> fcsthour.bclist
  fi
  
  let "ifhr=ifhr+3"
  let "ifhr_6hold=ifhr_6hold+3"
  let "ifhr_12hold=ifhr_12hold+3"
  let "ifhr_18hold=ifhr_18hold+3"

  if [ $ifhr -lt 10 ] ; then
    ifhr=00${ifhr}
  fi

  if [ $ifhr -gt 10 -a $ifhr -le 100 ] ; then
    ifhr=0${ifhr}
  fi

  if [ $ifhr_6hold -eq 9 ] ; then
   ifhr_6hold=09
  fi

done

wc -l < fcsthour.bclist > listnum

cat listnum fcsthour.bclist > input.bctend.fcstlist


