#!/bin/sh

set -x

############################################################################
echo "---------------------------------------------------------------------"
echo "cpc_extract_dewpoint.sh preprocessing"
echo "---------------------------------------------------------------------"
#
############################################################################
#
# Function:  Generates a 6z to 6z dewpoint file for CPC using metar 
#            bufr files from /com/hourly directory 
#
############################################################################
# author:    George G. Fulwood
#
# created:   9/27/2007
#
############################################################################
#
# Input Files: These files are generated by CPC/NCEP job JCPC_METSYN.sms.prod
#
#  cpc.t10ztot09z.metar.$PDY.bufr_d            - Metar obs from 10z yesterday
#                                                until 9z today 
#
#  cpc.t10ztot09z.metar.$PDYm1.bufr_d          - Metar obs from 10z 48 hours
#                                                ago until 9z yesterday 
#
#  cpc.humidity_lib.dat                        - Station list
##############################################################################
#
# Output Files:
#
#  cpc.temp_dewpoint_$PDYm1.dat                - 6z to 6z temp/dewpoint file
#
#
###############################################################################
#
# initalize log file
#
if [ -f extract_dewpoint.log ]
   then
      rm extract_dewpoint.log
      touch extract_dewpoint.log
      chmod 777 extract_dewpoint.log
fi
#
touch extract_dewpoint.log
date >> extract_dewpoint.log
echo $PDY
echo $PDY >> extract_dewpoint.log
#
#   Create processing and validation days
#
echo $PDYm2 $PDYm1 $PDY > cpc.process_dates.dat
cat cpc.process_dates.dat
#
#  Create a dummy file to hold filenames required for combine bufr
#  step. 
#
touch filenames.dat  dewpoint_6z.raw
#
#  Verify availability of 48 hour old metar obs
#
echo 'cpc.t10ztot09z.metar.$PDY.bufr_d'  > filenames.dat 
ls -l $COMIN/cpc.t10ztot09z.metar.$PDY.bufr_d 
ls -l $COMIN/cpc.t10ztot09z.metar.$PDY.bufr_d >> extract_dewpoint.log
#
#  Verify availability of 24 hour old metar obs
#
echo 'cpc.t10ztot09z.metar.$PDYm1.bufr_d' >> filenames.dat
#
ls -l $COMIN/cpc.t10ztot09z.metar.$PDYm1.bufr_d
ls -l $COMIN/cpc.t10ztot09z.metar.$PDYm1.bufr_d >> extract_dewpoint.log
echo filenames.dat
echo filenames.dat >> extract_dewpoint.log
#
########################################################################
#
#  concatenate metar observation files from /com/output
#
cp  $COMIN/cpc.t10ztot09z.metar.$PDY.bufr_d     file1 
cp  $COMIN/cpc.t10ztot09z.metar.$PDYm1.bufr_d   file2
ls -l file1
ls -l file2
#
COMB=/nwprod/util/ush/combfr.sh
$COMB file2 file1 dewpoint_6z.raw 
#
#    export pgm=bufr_combfr
#    . prep_step
#    export XLFUNIT_50="$ofile"
#    export XLFUNIT_50="metar_6z.raw"
#    $EXECbufr/bufr_combfr < filenames.dat >> $pgmout
#    ls -l dewpoint_6z.raw
# 
##########################################################################
#
#     Input files
#
#  CPC humidity library 
#

ln -sf /nwprod/fix/cpc.humidity_lib.dat          fort.11

#
#  Combined bufr metar observations file 
#

ln -sf dewpoint_6z.raw                        fort.12

#
#  Processing and validation dates
#

ln -sf cpc.process_dates.dat                  fort.13

#
##########################################################################
#     Output File
#
#  Daily 6z to 6z dewpoint/temperature file 
#

ln -sf cpc.temp_dewpoint_$PDYm1.dat           fort.51   

#
########################################################################
#
echo 'extracting daily dewpoints and air temperatures'
echo 'extracting daily dewpoints and air temperatures' >> extract_dewpoint.log
#
#  Extract dewpoint/temps data from bufr file
#
 $CPCexec/extract_dewpoint >> extract_dewpoint.log
#
echo 'Extraction completed'
echo 'Extraction completed' >> extract_dewpoint.log
#
#############################################################################
#
# sort file using field1(station id) and field2(observation time).
#
echo 'sorting dewpoint file'
echo 'sorting dewpoint file' >> extract_dewpoint.log
#
sort -o sorted.cpc.dewpoint.dat -T $DATA \
     -k1,1 -k2,2 cpc.temp_dewpoint_$PDYm1.dat
#
echo 'dewpoint sort completed'
echo 'dewpoint sort completed' >> extract_dewpoint.log
# exit
#
#   remove duplicate dewpoint records
#
echo ' removing duplicate records'
echo ' removing duplicate records' >> extract_dewpoint.log
#
#  Release unit numbers and setup files for duplicate obs elimination
#
unlink fort.11
unlink fort.12
unlink fort.51
#
#  Sorted, dewpoint input file
#

ln -sf sorted.cpc.dewpoint.dat                        fort.11

#
#  process dates file
#
  
ln -sf cpc.process_dates.dat                          fort.12

#
#  Sorted, Dewpoint Output File without duplicates
#

touch  sorted.cpc.dewpoint.out
ln -sf sorted.cpc.dewpoint.out                        fort.51
 
 $CPCexec/elim_tempdew >> extract_dewpoint.log
cp     sorted.cpc.dewpoint.out          cpc.temp_dewpoint_$PDYm1.dat
 
date
date >> extract_dewpoint.log
 
############################################################################
#
#   Copy dewpoint file to /com 
#

cp  cpc.temp_dewpoint_$PDYm1.dat                         $COMOUT/
date

#
# Test filesize of dewpoint file to determine successful job completion 
#
if [ -s cpc.temp_dewpoint_$PDYm1.dat ]
   then
    msg='Job completed normally.'
       #   Alert dewpoint file to DBNet 
           if [ $SENDDBN = "YES" ]; then
              $DBNROOT/bin/dbn_alert MODEL CPCDEWPT  $job  $COMOUT/cpc.temp_dewpoint_$PDYm1.dat
           fi 
   else
    msg='Job failure, check output files'
fi
echo $msg
postmsg "$jlogfile" "$msg"

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