#!/bin/sh
#######################################################################
#  Job Name:  exekd_stnpst.sh.sms
#  Purpose:   To run all steps neccessary to create EKDMOS station based
#             probalistic guidance using Cumulative Density Functions
#             station based single value forecasts.
#
#  Remarks:   This script is triggerd by completion of all 21 simultaneious
#             runs of exekd_stnfcst.sh.sms.  It also requires the 
#             ability to run an executable that will run in parallel, 
#             ekd_makecdf.  
#
#  HISTORY:   June   03, 2010  JLW - created from Jerry's original script
#
#######################################################################
echo EKDLOG: `date` - begin job exekd_stnpst.sh.sms

export PS4='$SECONDS + '

msg="$job has begun on `hostname` at `date`"
postmsg "$jlogfile" "$msg"

cd $DATA

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

PDY=`cut -c 7-14 ncepdate`
month=`echo $PDY | cut -c5-6`
if (( $month >= 4 && $month <= 9 )); then
   season="04010930"
else
   season="10010331"
fi
export season

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

export COMIN COMOUT PDY
#########################################################################
#  COPY DATA TO COMOUT DIRECTORY FOR USE IN OTHER RUN TIMES
#########################################################################
echo EKDLOG: `date` - begin copying data

cp $COMIN/gefs_stnekdfcsts*_ra.$cycle $DATA
cp $COMIN/cmce_stnekdfcsts*_ra.$cycle $DATA

echo EKDLOG: `date` - end copying data
#######################################################################
#
# PROGRAM RACREATE - MOS-2000 PROGRAM WHICH
#                   CREATES RANDOM ACCESS FILES; IN THIS CASE, THE
#                   CODE IS USED TO CREATE THE OPERATIONAL EKDMOS
#                   FORECAST FILE.
#######################################################################
echo EKDLOG: `date` - begin job RACREATE - CREATE LAMP FORECAST FILE

if [[ -a $DATA/naefs_stnekdfcsts_ra.$cycle ]];then
    rm $DATA/naefs_stnekdfcsts_ra.$cycle
fi
 
export pgm=mdl_racreate
. prep_step
export XLFUNIT_50="$DATA/naefs_stnekdfcsts_ra.$cycle"
ls -l $EXECmdl/mdl_racreate
startmsg
$EXECmdl/mdl_racreate < $PARMekd/ekd_u350.cn >> $pgmout 2>errfile
export err=$?;err_chk

echo EKDLOG: `date` -  RACREATE ended
#######################################################################
#
#  PROGRAM RA2RA  - MERGES RANDOM ACCESS FILES FROM INDIVIDUAL ENSEMBLE
#                   MEMBERS INTO ONE RANDOM ACCESS FILE FOR USE IN U915
#
#######################################################################
# Check to see how many ra files are available
let gefs_count=0
let cmce_count=0
let count=40
while (( $count <= 60 )); do   
   if [[ -f  gefs_stnekdfcsts${count}_ra.$cycle ]]; then
      let gefs_count=$gefs_count+1
   fi
   if [[ -f  cmce_stnekdfcsts${count}_ra.$cycle ]]; then
      let cmce_count=$cmce_count+1
   fi
   let count=$count+1
done

if [[ $gefs_count > 0 ]] && [[ $cmce_count > 0 ]]; then
#
# Both models exist.  Run for all 42 members.
#
   echo EKDLOG: `date` - begin job RA2RA - MERGE EKDMOS FORECAST FILES
   export pgm=ekd_ra2ra
   . prep_step
   export XLFUNIT_26="$PARMekd/ekd_stnsfcst.lst"
   export XLFUNIT_27="$PARMekd/ekd_stnsfcst.tbl"
   export XLFUNIT_60="naefs_stnekdfcsts_ra.$cycle"
   export XLFUNIT_30="gefs_stnekdfcsts40_ra.$cycle"
   export XLFUNIT_31="gefs_stnekdfcsts41_ra.$cycle"
   export XLFUNIT_32="gefs_stnekdfcsts42_ra.$cycle"
   export XLFUNIT_33="gefs_stnekdfcsts43_ra.$cycle"
   export XLFUNIT_34="gefs_stnekdfcsts44_ra.$cycle"
   export XLFUNIT_35="gefs_stnekdfcsts45_ra.$cycle"
   export XLFUNIT_36="gefs_stnekdfcsts46_ra.$cycle"
   export XLFUNIT_37="gefs_stnekdfcsts47_ra.$cycle"
   export XLFUNIT_38="gefs_stnekdfcsts48_ra.$cycle"
   export XLFUNIT_39="gefs_stnekdfcsts49_ra.$cycle"
   export XLFUNIT_40="gefs_stnekdfcsts50_ra.$cycle"
   export XLFUNIT_41="gefs_stnekdfcsts51_ra.$cycle"
   export XLFUNIT_42="gefs_stnekdfcsts52_ra.$cycle"
   export XLFUNIT_43="gefs_stnekdfcsts53_ra.$cycle"
   export XLFUNIT_44="gefs_stnekdfcsts54_ra.$cycle"
   export XLFUNIT_45="gefs_stnekdfcsts55_ra.$cycle"
   export XLFUNIT_46="gefs_stnekdfcsts56_ra.$cycle"
   export XLFUNIT_47="gefs_stnekdfcsts57_ra.$cycle"
   export XLFUNIT_48="gefs_stnekdfcsts58_ra.$cycle"
   export XLFUNIT_49="gefs_stnekdfcsts59_ra.$cycle"
   export XLFUNIT_50="gefs_stnekdfcsts60_ra.$cycle"
   export XLFUNIT_130="cmce_stnekdfcsts40_ra.$cycle"
   export XLFUNIT_131="cmce_stnekdfcsts41_ra.$cycle"
   export XLFUNIT_132="cmce_stnekdfcsts42_ra.$cycle"
   export XLFUNIT_133="cmce_stnekdfcsts43_ra.$cycle"
   export XLFUNIT_134="cmce_stnekdfcsts44_ra.$cycle"
   export XLFUNIT_135="cmce_stnekdfcsts45_ra.$cycle"
   export XLFUNIT_136="cmce_stnekdfcsts46_ra.$cycle"
   export XLFUNIT_137="cmce_stnekdfcsts47_ra.$cycle"
   export XLFUNIT_138="cmce_stnekdfcsts48_ra.$cycle"
   export XLFUNIT_139="cmce_stnekdfcsts49_ra.$cycle"
   export XLFUNIT_140="cmce_stnekdfcsts50_ra.$cycle"
   export XLFUNIT_141="cmce_stnekdfcsts51_ra.$cycle"
   export XLFUNIT_142="cmce_stnekdfcsts52_ra.$cycle"
   export XLFUNIT_143="cmce_stnekdfcsts53_ra.$cycle"
   export XLFUNIT_144="cmce_stnekdfcsts54_ra.$cycle"
   export XLFUNIT_145="cmce_stnekdfcsts55_ra.$cycle"
   export XLFUNIT_146="cmce_stnekdfcsts56_ra.$cycle"
   export XLFUNIT_147="cmce_stnekdfcsts57_ra.$cycle"
   export XLFUNIT_148="cmce_stnekdfcsts58_ra.$cycle"
   export XLFUNIT_149="cmce_stnekdfcsts59_ra.$cycle"
   export XLFUNIT_150="cmce_stnekdfcsts60_ra.$cycle"
   startmsg
   $EXECekd/ekd_ra2ra < $PARMekd/ekd_ra2ra.cn >> $pgmout 2>errfile
   export err=$?;err_chk
elif [[ $gefs_count > 0 ]] && [[ $cmce_count == 0 ]]; then
#
# Only the GEFS exists.  Run for just 21 members
#
   echo EKDLOG: `date` - begin job RA2RA - MERGE EKDMOS FORECAST FILES
   export pgm=ekd_ra2ra
   . prep_step
   export XLFUNIT_26="$PARMekd/ekd_stnsfcst.lst"
   export XLFUNIT_27="$PARMekd/ekd_stnsfcst.tbl"
   export XLFUNIT_60="naefs_stnekdfcsts_ra.$cycle"
   export XLFUNIT_30="gefs_stnekdfcsts40_ra.$cycle"
   export XLFUNIT_31="gefs_stnekdfcsts41_ra.$cycle"
   export XLFUNIT_32="gefs_stnekdfcsts42_ra.$cycle"
   export XLFUNIT_33="gefs_stnekdfcsts43_ra.$cycle"
   export XLFUNIT_34="gefs_stnekdfcsts44_ra.$cycle"
   export XLFUNIT_35="gefs_stnekdfcsts45_ra.$cycle"
   export XLFUNIT_36="gefs_stnekdfcsts46_ra.$cycle"
   export XLFUNIT_37="gefs_stnekdfcsts47_ra.$cycle"
   export XLFUNIT_38="gefs_stnekdfcsts48_ra.$cycle"
   export XLFUNIT_39="gefs_stnekdfcsts49_ra.$cycle"
   export XLFUNIT_40="gefs_stnekdfcsts50_ra.$cycle"
   export XLFUNIT_41="gefs_stnekdfcsts51_ra.$cycle"
   export XLFUNIT_42="gefs_stnekdfcsts52_ra.$cycle"
   export XLFUNIT_43="gefs_stnekdfcsts53_ra.$cycle"
   export XLFUNIT_44="gefs_stnekdfcsts54_ra.$cycle"
   export XLFUNIT_45="gefs_stnekdfcsts55_ra.$cycle"
   export XLFUNIT_46="gefs_stnekdfcsts56_ra.$cycle"
   export XLFUNIT_47="gefs_stnekdfcsts57_ra.$cycle"
   export XLFUNIT_48="gefs_stnekdfcsts58_ra.$cycle"
   export XLFUNIT_49="gefs_stnekdfcsts59_ra.$cycle"
   export XLFUNIT_50="gefs_stnekdfcsts60_ra.$cycle"
   startmsg
   $EXECekd/ekd_ra2ra < $PARMekd/ekd_ra2ra_onemodel.cn >> $pgmout 2>errfile
   export err=$?;err_chk
elif [[ $gefs_count == 0 ]] && [[ $cmce_count > 0 ]]; then
#
# Only the CMCE exists.  Run for just 21 members
#
   echo EKDLOG: `date` - begin job RA2RA - MERGE EKDMOS FORECAST FILES
   export pgm=ekd_ra2ra
   . prep_step
   export XLFUNIT_26="$PARMekd/ekd_stnsfcst.lst"
   export XLFUNIT_27="$PARMekd/ekd_stnsfcst.tbl"
   export XLFUNIT_60="naefs_stnekdfcsts_ra.$cycle"
   export XLFUNIT_30="cmce_stnekdfcsts40_ra.$cycle"
   export XLFUNIT_31="cmce_stnekdfcsts41_ra.$cycle"
   export XLFUNIT_32="cmce_stnekdfcsts42_ra.$cycle"
   export XLFUNIT_33="cmce_stnekdfcsts43_ra.$cycle"
   export XLFUNIT_34="cmce_stnekdfcsts44_ra.$cycle"
   export XLFUNIT_35="cmce_stnekdfcsts45_ra.$cycle"
   export XLFUNIT_36="cmce_stnekdfcsts46_ra.$cycle"
   export XLFUNIT_37="cmce_stnekdfcsts47_ra.$cycle"
   export XLFUNIT_38="cmce_stnekdfcsts48_ra.$cycle"
   export XLFUNIT_39="cmce_stnekdfcsts49_ra.$cycle"
   export XLFUNIT_40="cmce_stnekdfcsts50_ra.$cycle"
   export XLFUNIT_41="cmce_stnekdfcsts51_ra.$cycle"
   export XLFUNIT_42="cmce_stnekdfcsts52_ra.$cycle"
   export XLFUNIT_43="cmce_stnekdfcsts53_ra.$cycle"
   export XLFUNIT_44="cmce_stnekdfcsts54_ra.$cycle"
   export XLFUNIT_45="cmce_stnekdfcsts55_ra.$cycle"
   export XLFUNIT_46="cmce_stnekdfcsts56_ra.$cycle"
   export XLFUNIT_47="cmce_stnekdfcsts57_ra.$cycle"
   export XLFUNIT_48="cmce_stnekdfcsts58_ra.$cycle"
   export XLFUNIT_49="cmce_stnekdfcsts59_ra.$cycle"
   export XLFUNIT_50="cmce_stnekdfcsts60_ra.$cycle"
   startmsg
   $EXECekd/ekd_ra2ra < $PARMekd/ekd_ra2ra_onemodel.cn >> $pgmout 2>errfile
   export err=$?;err_chk
else
   echo "Random access files are missing for both the GEFS and CMCE"
   pgm=ekdmos_stnpst
   export err=1; err_chk
fi

echo EKDLOG: `date` -  RA2RA ended
#######################################################################
#
#    PROGRAM MAKECDF - CREATE CDF OF EKDMOS FORECASTS
#                    - THIS CODE WAS COMPILED WITH XLF_R.  IT RUNS
#                      IN PARELLEL ON AT LEAST 16 CPU'S
#
#######################################################################
echo EKDLOG: `date` - begin job MAKECDF - CREATE CDF OF ENS MOS FORECASTS

export pgm=ekd_makecdf
. prep_step

export OMP_NUM_THREADS=16
export MEMORY_AFFINITY=MCM
export BIND_TASKS=yes
export MP_SHARED_MEMORY=yes
export MP_SYNC_QP=yes

export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$PARMekd/ekd_stnsfcst.lst"
export XLFUNIT_27="$PARMekd/ekd_stnsfcst.tbl"
export XLFUNIT_28="$PARMekd/ekd_makecdfid.tbl.$cycle"
export XLFUNIT_29="$PARMekd/ekd_naefs_sprdsk_${season}.$cycle"
export XLFUNIT_30="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_31="$PARMekd/ekd_cdfthresh.lst"
export XLFUNIT_49="naefs_stnekdfcsts_ra.$cycle"
export XLFUNIT_60="naefs_stnekdcdffcsts_sq.$cycle"
startmsg
$EXECekd/ekd_makecdf < $PARMekd/ekd_makecdf.cn >> $pgmout 2>errfile
export err=$?;err_chk

echo EKDLOG: `date` -  MAKECDF ended
#######################################################################
#
#    PROGRAM FCSTPOST - CREATES POST-PROCCESSED MEAN SINGLE VALUE 
#                       FORECASTS FOR ALL ELEMENTS
#
#######################################################################
echo EKDLOG: `date` - begin job FCSTPOST - POST PROCESS SINGLE VALUE FORECASTS

export pgm=ekd_fcstpost
. prep_step 
export XLFUNIT_10="ncepdate"
export XLFUNIT_26="$PARMekd/ekd_stnsfcst.lst"
export XLFUNIT_27="$PARMekd/ekd_stnsfcst.tbl"
export XLFUNIT_28="$PARMekd/ekd_sngvpostid.tbl.$cycle"
export XLFUNIT_29="$FIXekd/ekd_mos2000id.tbl"
export XLFUNIT_47="$FIXekd/ekd_threshold"
export XLFUNIT_49="naefs_stnekdfcsts_ra.$cycle"
export XLFUNIT_60="naefs_stnekdsngvfcsts_sq.$cycle"

startmsg
$EXECekd/ekd_fcstpost < $PARMekd/ekd_sngvpost.cn >> $pgmout 2>errfile
export err=$?;err_chk

echo EKDLOG: `date` -  FCSTPOST ended
#########################################################################
#  COPY DATA TO COMOUT DIRECTORY FOR USE IN OTHER RUN TIMES
#########################################################################
if test "$SENDCOM" = 'YES'
then
   cp naefs_stnekdfcsts_ra.$cycle $COMOUT/naefs_stnekdfcsts_ra.$cycle
   cp naefs_stnekdcdffcsts_sq.$cycle $COMOUT/naefs_stnekdcdffcsts_sq.$cycle
   cp naefs_stnekdsngvfcsts_sq.$cycle $COMOUT/naefs_stnekdsngvfcsts_sq.$cycle
fi

echo EKDLOG: `date -u` - job exekd_stnpst.sh.sms ended

exit 0
