########################################################################
#  Job Name: exekd_gridded.sh.sms
#  Purpose:  To run ekd_granalysis to create gridded EKDMOS CDF
#           percentile for each element on the NDFD grid at 2.5 km.
#
#  Remarks: This script is kicked off when exekd_stnpst.sh.sms 
#           has completed.  It will simultaneously start runs for 
#           tmp, dew, max, min, and all. This are supplied
#           by command line arguments.  A command line arguement of
#           "all"  will run every elements single value forecast rather
#           then the CDF precentiles.
#
#  HISTORY: June      2010    JLW  - Created from Jerry's script
#
#######################################################################
echo EKDLOG: `date` - Begin job exekdmos_gridded.sh.sms

export PS4='$SECONDS + '
set -x

export ELEM=$1
export STEP=$2
msg="$job has begun on `hostname` at `date` for $ELEM $STEP"
postmsg "$jlogfile" "$msg"

########################################
# Establish Subdirectories to make thread safe
########################################
export DATAsub=$DATA/${ELEM}_${STEP}
mkdir $DATAsub
cd $DATAsub 

#######################################################################
# SETTING DATE AND CYCLE TIMES
#######################################################################
cp /com/date/$cycle $DATAsub/ncepdate

PDY=`cut -c 7-14 $DATAsub/ncepdate`

echo $PDY $cyc : Date and Cycle - echo PDY and cyc

cp $DATA/prep_step $DATAsub
cp $DATA/tracer $DATAsub
cp $DATA/startmsg $DATAsub
cp $DATA/postmsg $DATAsub
cp $DATA/null $DATAsub
cp $DATA/errexit $DATAsub
cp $DATA/err_exit $DATAsub
cp $DATA/errchk $DATAsub
cp $DATA/err_chk $DATAsub
cp $DATA/break $DATAsub
cp $DATA/NMCDATE $DATAsub

export COMIN COMOUT
#######################################################################
#  COPY THE EKDMOS ADN GFSMOS FORECASTS FROM COM TO DATAsub DIRECTORY
#######################################################################
cp ${COMGFS}/mdl_gfsmergesta.$cycle $DATAsub
cp ${COMGFS}/mdl_gfsxmergesta.$cycle $DATAsub
cp ${COMGFS}/mdl_gfsmos.$cycle $DATAsub
cp ${COMGFS}/mdl_gfscpmos.$cycle $DATAsub
cp ${COMGFS}/mdl_gfsgmos.$cycle $DATAsub
cp ${COMGFS}/mdl_gfsmossq.$cycle $DATAsub
cp $COMIN/naefs_stnekdcdffcsts_sq.$cycle $DATAsub
cp $COMIN/naefs_stnekdsngvfcsts_sq.$cycle $DATAsub
if test $cyc -eq '00'
then
   prevcyc=12
   prevcycle=t12z
   cp $COMINm1/naefs_stnekdcdffcsts_sq.$prevcycle $DATAsub
   cp $COMINm1/naefs_stnekdsngvfcsts_sq.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfsmergesta.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfsxmergesta.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfsgmos.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfsmossq.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfsmos.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfscpmos.$prevcycle $DATAsub
else
   prevcyc=00
   prevcycle=t00z
   cp $COMIN/naefs_stnekdcdffcsts_sq.$prevcycle $DATAsub
   cp $COMIN/naefs_stnekdsngvfcsts_sq.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfsmergesta.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfsxmergesta.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfsgmos.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfsmossq.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfsmos.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfscpmos.$prevcycle $DATAsub
fi
export prevcyc prevcycle

#######################################################################
#
# PROGRAM RAMERGE - MERGES TWO VECTOR TDLPACK FILES INTO ONE.  THESE ARE
#                   USED FOR AUGMENTATION IN THE XEXTENDED RANGES.
#######################################################################
if [[ $cyc == "00" ]]; then
   echo EKDLOG: `date` - begin job RAMERGE

   export pgm=mdl_ramerge
   . prep_step
   startmsg
   export XLFUNIT_10="ncepdate"
   export XLFUNIT_26="$PARMekd/ekd_granlsta.lst"
   export XLFUNIT_27="$PARMekd/ekd_granlsta.tbl"
   export XLFUNIT_28="$FIXekd/ekd_gfsxxramerge.$cycle"
   export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
   export XLFUNIT_46="mdl_gfsmos.$cycle"
   export XLFUNIT_48="mdl_gfscpmos.$cycle"
   export XLFUNIT_60="ekd_gfsxxmergesta.$cycle"
   $EXECmdl/mdl_ramerge < $PARMekd/ekd_ramerge.cn >> $pgmout 2>errfile
   export err=$?; err_chk
   echo EKDLOG: `date` -  RAMERGE ended
   cp ekd_gfsxxmergesta.$cycle $COMOUT
else
   cp ${COMIN}/ekd_gfsxxmergesta.$prevcycle $DATAsub
fi

echo EKDLOG: `date` - begin job vect2grid
#######################################################################
#
# PROGRAM GRANALYSIS - PERFORMS THE ANALYSIS OF THE MOS FORECASTS 
#                      ONTO A GRID.
#   FIRST:  COPY THE RANDOM ACCESS TEMPLATE FILE FROM FIX
#######################################################################
cp $FIX2ekd/mdl_rafile_template naefs_gekdfcsts_${ELEM}_ra_${STEP}.$cycle
cp $FIXekd/ekd_analysisgrconst_2half ${DATAsub}
#########################################################
# Set the neccessary varaibles for OpenMP
export MP_PULSE=0
export MP_TIMEOUT=900
export OMP_NUM_THREADS=8
#########################################################
echo EKDLOG: `date` - begin job GRANALYSIS for $ELEM probabilities
export pgm=mdl_granalyis
. prep_step
export XLFUNIT_10="ncepdate"
if [[ $ELEM == "dew" ]]; then
   XLFUNIT_26="${PARMekd}/ekd_dew_granlsta.lst"
else
   XLFUNIT_26="$PARMekd/ekd_granlsta.lst"
fi
export XLFUNIT_26
cp $FIXekd/ekd_bogusfile.dewp $DATAsub
export XLFUNIT_20="ekd_bogusfile.dewp"
export XLFUNIT_27="${PARMekd}/ekd_allsites.tbl"
export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_37="${PARMekd}/ekd_granlstation_pairs"
cp ${PARMekd}/ekd_station_radii $DATAsub
export XLFUNIT_40="ekd_station_radii"
export XLFUNIT_38="${PARMekd}/ekd_gfsgranlids_${ELEM}_${STEP}.$cycle"
export XLFUNIT_44="ekd_analysisgrconst_2half"
export XLFUNIT_74="$FIXekd/ekd_bogusdew.lst"
#
export XLFUNIT_82="mdl_gfsmergesta.$cycle"
export XLFUNIT_83="mdl_gfsxmergesta.$cycle"
export XLFUNIT_84="mdl_gfsmergesta.$prevcycle"
export XLFUNIT_85="mdl_gfsxmergesta.$prevcycle"
export XLFUNIT_86="mdl_gfsmossq.$cycle"
export XLFUNIT_87="mdl_gfsmossq.$prevcycle"
if [[ $cyc == "00" ]]; then
   export XLFUNIT_88="ekd_gfsxxmergesta.$cycle"
else
   export XLFUNIT_88="ekd_gfsxxmergesta.$prevcycle"
fi
#
export XLFUNIT_42="naefs_gekdfcsts_${ELEM}_ra_${STEP}.$cycle"
export XLFUNIT_35="naefs_gekdfcsts_${ELEM}_sq_${STEP}.$cycle"
cp ${PARMekd}/ekd_station_pairs $DATAsub
export XLFUNIT_41="ekd_station_pairs"
#
if [[ $ELEM == "all" ]]; then
   export XLFUNIT_50="${PARMekd}/ekd_u405atmpmcn"
   export XLFUNIT_51="${PARMekd}/ekd_u405adewmcn"
   export XLFUNIT_52="${PARMekd}/ekd_u405amaxmcn"
   export XLFUNIT_53="${PARMekd}/ekd_u405aminmcn"
   export XLFUNIT_80="naefs_stnekdsngvfcsts_sq.$cycle"
   export XLFUNIT_81="naefs_stnekdsngvfcsts_sq.$prevcycle"
   startmsg
   $EXECekd/ekd_granalysis < $PARMekd/ekd_granalysis_all.cn >> $pgmout
   export err=$?;err_chk
else
   export XLFUNIT_50="$PARMekd/ekd_u405a${ELEM}cn"
   export XLFUNIT_80="naefs_stnekdcdffcsts_sq.$cycle"
   export XLFUNIT_81="naefs_stnekdcdffcsts_sq.$prevcycle"
   startmsg
   $EXECekd/ekd_granalysis < $PARMekd/ekd_granalysis.cn >> $pgmout
   export err=$?;err_chk
fi   
cp naefs_gekdfcsts_${ELEM}_sq_${STEP}.$cycle $COMOUT

#######################################################################
#
# PROGRAM GRIDPOST - PERFORMS POST-PROCESSING OF THE GRIDDED MOS
#                    FORECASTS.
#######################################################################
export pgm=ekd_gridpost 
. prep_step
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="${PARMekd}/ekd_conus.lst"
export XLFUNIT_27="${PARMekd}/ekd_allsites.tbl"
export XLFUNIT_28="${PARMekd}/ekd_gridpost_${ELEM}_${STEP}.$cycle"
export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_35="naefs_gekdpst_${ELEM}_sq_${STEP}.$cycle"
export XLFUNIT_42="naefs_gekdfcsts_${ELEM}_ra_${STEP}.$cycle"
startmsg
$EXECekd/ekd_gridpost < $PARMekd/ekd_gridpost.cn  >> $pgmout
export err=$?;err_chk
if test "$SENDCOM" = 'YES'
   then
   cp naefs_gekdpst_${ELEM}_sq_${STEP}.$cycle $COMOUT
   cp naefs_gekdfcsts_${ELEM}_ra_${STEP}.$cycle $COMOUT
fi

echo EKDLOG: `date` -  GRIDPOST ended
#######################################################################
# PROGRAM RA2GRIB2 - CODES TDLPACK ENSMOS FORECASTS INTO GRIB2. 
#
####################################################################### 
if [[ $ELEM == "tmp" || $ELEM == "dew" || $ELEM == "max" || $ELEM == "min" ]]; then
   echo "ELEM=$ELEM"
   for threshold in 05 10 20 30 40 50 60 70 80 90 95;do
      echo "threshold=$threshold"
      sed -e "s/TT/$threshold/g" $FIXekd/naefs_gekdgb2sect4${ELEM}_${STEP}.$cycle > naefs_gekdgb2sect4${ELEM}_${STEP}.$cycle
      export pgm=ekd_ra2grib2
      . prep_step
      export XLFUNIT_10="ncepdate"
      export XLFUNIT_31="$FIXekd/naefs_gekdgb2sect0-1"
      export XLFUNIT_32="$FIXekd/naefs_gekdgb2sect3"
      export XLFUNIT_33="naefs_gekdgb2sect4${ELEM}_${STEP}.$cycle"
      export XLFUNIT_34="$FIXekd/naefs_gekdgb2sect5${ELEM}_${STEP}.$cycle"
      export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
      export XLFUNIT_44="naefs_gekdfcsts_${ELEM}_ra_${STEP}.$cycle"
      export XLFUNIT_60="naefs_gekdgb2${ELEM}${threshold}_${STEP}.$cycle"
      startmsg
      $EXECekd/ekd_ra2grib2 < $PARMekd/ekd_ra2grib2.cn >> $pgmout
      export err=$?;err_chk
      if test "$SENDCOM" = 'YES'
         then
            cp naefs_gekdgb2${ELEM}${threshold}_${STEP}.$cycle $COMOUT
      fi

      echo EKDLOG: `date` -  RA2GRIB2 for $ELEM $threshold ended
   done

elif [[ $ELEM == "all" ]]; then
   for ELEMs in tmp dew max min;do
      export pgm=ekd_ra2grib2
      . prep_step
      export XLFUNIT_10="ncepdate"
      export XLFUNIT_31="$FIXekd/naefs_gekdgb2sect0-1"
      export XLFUNIT_32="$FIXekd/naefs_gekdgb2sect3"
      export XLFUNIT_33="$FIXekd/naefs_gekdgb2sect4${ELEMs}_mean_${STEP}.$cycle"
      export XLFUNIT_34="$FIXekd/naefs_gekdgb2sect5${ELEMs}_mean_${STEP}.$cycle"
      export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
      export XLFUNIT_44="naefs_gekdfcsts_${ELEM}_ra_${STEP}.$cycle"
      export XLFUNIT_60="naefs_gekdgb2${ELEMs}_mean_${STEP}.$cycle"
      startmsg
      $EXECekd/ekd_ra2grib2 < $PARMekd/ekd_ra2grib2.cn >> $pgmout
      export err=$?;err_chk
      if test "$SENDCOM" = 'YES'
       then
         cp naefs_gekdgb2${ELEMs}_mean_${STEP}.$cycle $COMOUT
      fi

      echo EKDLOG: `date` -  RA2GRIB2 for $ELEMs ended
   done
fi

#######################################################################
echo EKDLOG: `date` -  exekd_gridded.sh.sms ended for $ELEM step $STEP
#######################################################################
