########################################################################
#  Job Name: exekd_akgridded.sh.sms
#  Purpose:  To run ekd_granalysis to create gridded EKDMOS CDF
#           percentile for each element on the NDFD grid at 2.9 km
#           for the Alaska domain.
#
#  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 exekd_akgridded.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
#cp $DATA/PDY $DATAsub

export COMIN COMOUT
#######################################################################
#  COPY THE EKDMOS ADN GFSMOS FORECASTS FROM COM TO DATAsub DIRECTORY
#######################################################################
cp ${COMGFS}/mdl_gfsmergesta_ak.$cycle $DATAsub
cp ${COMGFS}/mdl_gfsxmergesta_ak.$cycle $DATAsub
cp ${COMGFS}/mdl_gfsmos.$cycle $DATAsub
cp ${COMGFS}/mdl_gfscpmos.$cycle $DATAsub
cp ${COMIN}/naefs_akgekddmo_sq.$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_ak.$prevcycle $DATAsub
   cp $COMGFSm1/mdl_gfsxmergesta_ak.$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_ak.$prevcycle $DATAsub
   cp $COMGFS/mdl_gfsxmergesta_ak.$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_ak.lst"
   export XLFUNIT_27="$PARMekd/ekd_akmos.tbl"
   export XLFUNIT_28="$FIXekd/ekd_gfsxxramerge_ak.$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_ak.$cycle"
   $EXECmdl/mdl_ramerge < $PARMekd/ekd_ramerge.cn >> $pgmout 2>errfile
   export err=$?; err_chk
   echo EKDLOG: `date` -  RAMERGE ended
   cp ekd_gfsxxmergesta_ak.$cycle $COMOUT
else
   cp ${COMIN}/ekd_gfsxxmergesta_ak.$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_akgekdfcsts_${ELEM}_ra_${STEP}.$cycle
cp $FIXekd/ekd_analysisgrconst_ak ${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"
export XLFUNIT_26="$PARMekd/ekd_akmos.lst"     
export XLFUNIT_27="$PARMekd/ekd_akmos.tbl"
export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_37="$PARMekd/ekd_akgranlstation_pairs"
cp $PARMekd/ekd_akstation_radii $DATAsub
export XLFUNIT_40="ekd_akstation_radii"
export XLFUNIT_38="${PARMekd}/ekd_akgfsgranlids_${ELEM}_${STEP}.$cycle"
export XLFUNIT_44="ekd_analysisgrconst_ak"
cp $PARMekd/ekd_akbogusfile.temp $DATAsub
export XLFUNIT_20="ekd_akbogusfile.temp"
export XLFUNIT_82="mdl_gfsmergesta_ak.$cycle"
export XLFUNIT_83="mdl_gfsxmergesta_ak.$cycle"
export XLFUNIT_84="mdl_gfsmergesta_ak.$prevcycle"
export XLFUNIT_85="mdl_gfsxmergesta_ak.$prevcycle"
if [[ $cyc == "00" ]]; then
   export XLFUNIT_86="ekd_gfsxxmergesta_ak.$cycle"
else
   export XLFUNIT_86="ekd_gfsxxmergesta_ak.$prevcycle"
fi
export XLFUNIT_30="naefs_akgekddmo_sq.$cycle"
export XLFUNIT_42="naefs_akgekdfcsts_${ELEM}_ra_${STEP}.$cycle"
export XLFUNIT_35="naefs_akgekdfcsts_${ELEM}_sq_${STEP}.$cycle"
cp $PARMekd/ekd_akstation_pairs $DATAsub
export XLFUNIT_41="ekd_akstation_pairs"
#
if [[ $ELEM == "all" ]]; then
   export XLFUNIT_50="$PARMekd/ekd_u405atmpmakcn"
   export XLFUNIT_51="$PARMekd/ekd_u405adewmakcn"
   export XLFUNIT_52="$PARMekd/ekd_u405amaxmakcn"
   export XLFUNIT_53="$PARMekd/ekd_u405aminmakcn"
   export XLFUNIT_80="naefs_stnekdsngvfcsts_sq.$cycle"
   export XLFUNIT_81="naefs_stnekdsngvfcsts_sq.$prevcycle"
   startmsg
   $EXECekd/ekd_granalysis < $PARMekd/ekd_granalysis_all.ak.cn >> $pgmout
   export err=$?;err_chk
else
   export XLFUNIT_50="$PARMekd/ekd_u405a${ELEM}akcn"
   export XLFUNIT_80="naefs_stnekdcdffcsts_sq.$cycle"
   export XLFUNIT_81="naefs_stnekdcdffcsts_sq.$prevcycle"
   startmsg
   $EXECekd/ekd_granalysis < $PARMekd/ekd_granalysis_ak.cn >> $pgmout
   export err=$?;err_chk
fi
cp naefs_akgekdfcsts_${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_akmos.lst"
export XLFUNIT_27="$PARMekd/ekd_akmos.tbl"
export XLFUNIT_28="${PARMekd}/ekd_akgridpost_${ELEM}_${STEP}.$cycle"
export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_35="naefs_akgekdpst_${ELEM}_sq_${STEP}.$cycle"
export XLFUNIT_42="naefs_akgekdfcsts_${ELEM}_ra_${STEP}.$cycle"
startmsg
$EXECekd/ekd_gridpost < $PARMekd/ekd_gridpost.cn  >> $pgmout
export err=$?;err_chk

echo EKDLOG: `date` -  GRIDPOST ended

#######################################################################
# PROGRAM GRD2GRD - INTERPOLATE DATA TO BE PUT IN GRIB2 FROM U155 3KM 
#         (U365)    AK GRID TO FULL NDFD 3KM AK GRID (THE 1.8 MILLION)
#######################################################################
cp $FIX2ekd/mdl_rafile_template naefs_akgekdndgd_${ELEM}_sq_${STEP}.$cycle

echo EKDLOG: `date` - begin job GRD2GRD - INTERPOLATE TO NDFD GRID

export pgm=ekd_grd2grd
. prep_step
startmsg
export XLFUNIT_10="ncepdate"
export XLFUNIT_25="naefs_akgekdpst_${ELEM}_sq_${STEP}.$cycle"
export XLFUNIT_28="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_27="$PARMekd/ekd_akgrd2grd_${ELEM}_${STEP}.$cycle"     
export XLFUNIT_42="naefs_akgekdndgd_${ELEM}_sq_${STEP}.$cycle"
/nwprod/exec/mdl_grd2grd < $PARMekd/ekd_grd2grd_akndfd.cn >> $pgmout 2>errfile
export err=$?; err_chk
if test "$SENDCOM" = 'YES'
then
   cp naefs_akgekdndgd_${ELEM}_sq_${STEP}.$cycle $COMOUT
fi
echo MDLLOG: `date` - GRD2GRD 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_akgekdgb2sect4${ELEM}_${STEP}.$cycle > ${DATAsub}/naefs_akgekdgb2sect4${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_akgekdgb2sect3"
      export XLFUNIT_33="naefs_akgekdgb2sect4${ELEM}_${STEP}.$cycle"
      export XLFUNIT_34="$FIXekd/naefs_akgekdgb2sect5${ELEM}_${STEP}.$cycle"
      export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
      export XLFUNIT_44="naefs_akgekdndgd_${ELEM}_sq_${STEP}.$cycle" 
      export XLFUNIT_60="naefs_akgekdgb2${ELEM}${threshold}_${STEP}.$cycle"
      startmsg
      $EXECekd/ekd_ra2grib2 < $PARMekd/ekd_ra2grib2ak.cn >> $pgmout
      export err=$?;err_chk
      if test "$SENDCOM" = 'YES'
         then
            cp naefs_akgekdgb2${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_akgekdgb2sect3"
      export XLFUNIT_33="$FIXekd/naefs_akgekdgb2sect4${ELEMs}_mean_${STEP}.$cycle"
      export XLFUNIT_34="$FIXekd/naefs_akgekdgb2sect5${ELEMs}_mean_${STEP}.$cycle"
      export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
      export XLFUNIT_44="naefs_akgekdndgd_${ELEM}_sq_${STEP}.$cycle" 
      export XLFUNIT_60="naefs_akgekdgb2${ELEMs}_mean_${STEP}.$cycle"
      startmsg
      $EXECekd/ekd_ra2grib2 < $PARMekd/ekd_ra2grib2ak.cn >> $pgmout
      export err=$?;err_chk
      if test "$SENDCOM" = 'YES'
       then
         cp naefs_akgekdgb2${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
#######################################################################
