#####################################################################
echo "------------------------------------------------"
echo "JFNMOCCOAMPS - FNMOC COAMPS postprocessing"
echo "------------------------------------------------"
echo "History: MAY 2009 - FNMOC COAMPS processing based off "
echo "                    of NOGAPS prdgen process       "
#####################################################################
set -x
cd $DATA

##########################################
#
# START FLOW OF CONTROL
#
# 1) Get the Date from /com/date
# 2) Extract FNMOC COAMPS data from /dcom holding directory.
# 3) Form GRIB1 fields from input GRIB files.
# 4) Use COPYGB to form final grid.
# 5) Convert GRIB1 output to GRIB2
#
#########################################

########################################
set -x
msg="HAS BEGUN!"
postmsg "$jlogfile" "$msg"
########################################

set +x
echo " "
echo "#########################################"
echo " Check to see if all FNMOC COAMPS data is      "
echo " available in /dcom                      "
echo "#########################################"
echo " "
set -x

INPUT_DIR=${dcom}/fnmoc_coamps

# Process each forecast hour segment

for FH in 18 30 48 84
do 
 
   if [ $RUN = coampswave ]
   then
      EXPECTED_FILES=${FIXgrib}/fnmoc_coampswave${FH}h.tbl
   else
      EXPECTED_FILES=${FIXgrib}/fnmoc_coamps${FH}h.tbl
   fi

   icnt=0

   #  Build table based on current date

   date_cycle=${PDY}${CYC}
   sed -e "s/YYYYMMDDCC/${date_cycle}/" $EXPECTED_FILES > ${DATA}/FNMOC_COAMPS_${FH}

   export err=$?

   while [ $icnt -le 5 ]
   do
   #  Check to see if all missing files are available

      ${USHutil}/check_for_file_list.pl ${DATA}/FNMOC_COAMPS_${FH}

      status=$?

      if [ $status -ne 0 ]
      then
         set +x
         echo " "
         echo "#########################################"
         echo " FNMOC COAMPS files are missing from     "
         echo " ${INPUT_DIR}                            "
         echo "#########################################"
         echo " "
         set -x
         sleep 900
         icnt=`expr $icnt + 1`
      else
         echo "We have all the files and are ready to process"
         break
      fi 
   done

   if [ $icnt -eq 6 ]
   then 
      set +x
      echo " "
      echo "#########################################"
      echo " Waited for 1 hour, all files are not    "
      echo " available in ${INPUT_DIR}, for          "
      echo " Cycle = ${CYC}; moving on                 "
      echo "#########################################"
      echo " "
      set -x

   fi  
  
#  Determine the Forecast Hours to create
    
   case $FH
   in
   18)
     FH_list="00 03 06 09 12 15 18"
     ;;
   30) 
     FH_list="21 24 27 30"
     ;;
   48) 
     FH_list="33 36 42 48"
     ;;
   84) 
     FH_list="54 60 66 72 78 84"
     ;;
     esac

   for hour in ${FH_list} ; do

     # Set up variables for wave or regular coamps

     if [ $RUN = coampswave ]
     then
       input_filename_prefix=US058GOCN-GR1mdl.0116_0047_0${hour}00F0RL
       output_filename=coamps_wave.${cycle}.f${hour}
       grib2_output_filename=coamps_wave.${cycle}.f${hour}.grib2
       dbnet_alert=FNMOC_COAMPS_WAVE_GB2
     else
       input_filename_prefix=US058GMET-GR1mdl.0090_0046_0${hour}00F0NL
       output_filename=coamps.${cycle}.f${hour}
       grib2_output_filename=coamps.${cycle}.f${hour}.grib2
       dbnet_alert=FNMOC_COAMPS_GB2
     fi

     if [ ! -e ${COMOUT}/$grib2_output_filename ]; then

       # Concatonate all param files into one

       grep -v dcom ${DATA}/FNMOC_COAMPS_${FH} > FNMOC_COAMPS_${FH}_dcomcut 

       for file in `ls ${INPUT_DIR}/${input_filename_prefix}${PDY}${CYC}_* |grep -f ${DATA}/FNMOC_COAMPS_${FH}_dcomcut` ; do

         cat $file >> ${DATA}/fnmoc_coamps
         
       done


       export err=`expr $err + $?`
       ${utilscript}/err_chk.sh

       # Cut western boundary to 120E

       $EXECutil/copygb -g "255 1 373 337 -7310 120000 1 45732 -174792 22500 0 64 19405 17471" -x fnmoc_coamps fnmoc_coamps_cut

       export err=`expr $err + $?`
       ${utilscript}/err_chk.sh

       # Convert to GRIB2

       $EXECutil/cnvgrib -g12 -p40 -nv fnmoc_coamps_cut fnmoc_coamps_cut.grib2

       export err=`expr $err + $?`
       ${utilscript}/err_chk.sh

       # Move to COMOUT directory

 
       if test "$SENDCOM" = 'YES'
       then
         cp ${DATA}/fnmoc_coamps_cut  ${COMOUT}/${output_filename}
         export err=`expr $err + $?`
         cp ${DATA}/fnmoc_coamps_cut.grib2  ${COMOUT}/${grib2_output_filename}
         export err=`expr $err + $?`
       fi
      
       rm ${DATA}/fnmoc_coamps
       rm ${DATA}/fnmoc_coamps_cut
       rm ${DATA}/fnmoc_coamps_cut.grib2

       ${utilscript}/err_chk.sh
  
       # Send DBNet alert

       if test "$SENDDBN" = 'YES'
       then
         $DBNROOT/bin/dbn_alert MODEL $dbnet_alert ${RUN}_prdgen_${CYC} $COMOUT/${grib2_output_filename}
       fi
     fi
   done 
done 


#####################################################################
# GOOD RUN
set +x
echo "**************job ${job} COMPLETED NORMALLY ON THE IBM"
echo "**************job ${job} COMPLETED NORMALLY ON THE IBM"
echo "**************job ${job} COMPLETED NORMALLY ON THE IBM"
set -x
#####################################################################


msg="HAS COMPLETED NORMALLY!"
echo $msg
postmsg "$jlogfile" "$msg"

############## END OF SCRIPT #######################
