#!/bin/sh

set -x

############################################################################
echo "---------------------------------------------------------------------"
echo "excpc_metsyn.sh.sms preprocessing"
echo "---------------------------------------------------------------------"
#
############################################################################
#
# Function:  Executes CPC utility script extractcpc_metsyn.sh which extracts
#            metar and synoptic data from NCEP bufr files for use in the
#            creation of CPC daily global precipitation and temperature
#            summary file.
#
############################################################################
# author:    George G. Fulwood
#
# created:   4/29/2002
#
############################################################################

#############################################################################
#
# Output Files:
#
#  cpc.t03ztot21z.synoptic.$PDYm2.bufr_d - 48 hour old 3z to 21z obs 
#  
#  cpc.t00ztot01z.synoptic.$PDYm1.bufr_d - Yesterday's 00z and 01z obs 
#
#  cpc.t00z.synoptic.$PDYm1.bufr_d       - Yesterday's 00z only obs  
#
#  cpc.t03ztot21z.synoptic.$PDYm1.bufr_d - Yesterday's 3z to 21z obs 
#
#  cpc.t00ztot06z.synoptic.$PDY.bufr_d   - Today's 00z to 06z obs 
#
#  cpc.t00ztot23z.synoptic.$PDYm1.bufr_d - Yesterday's 00z to 23z obs 
#
#  cpc.t03ztot06z.synoptic.$PDY.bufr_d   - 03z yesterday to 06z today 
#
#  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 
#
###############################################################################
#
###############################################################################
#
# Access NCEP data combination routine and initialize internal variables
#
#############################################################################
#
#   Initialize internal variables
#
yes='Y'
meth1="meth1"
meth2="meth2"
synh1="synh1"
syn23="syn23"
syn00="syn00"
syn03="syn03"
touch out_file
#
#############################################################################
 
#  Extract synoptic data from 3z to 23z on PDYm2 by entering
#  the date and time of data, number of hours of data, data               
#  type and data sub type to be extracted and whether or not 
#  module bufr_combfr will need to be executed
                                                                                
sh $USHutil/extractcpc_metsyn.sh $PDYm2 $synh1 1 000 001 out_file $yes
 
#  Copy file to temporary name before move to output area
 
cp out_file decode.dat
cp decode.dat   $COMOUT/cpc.t03ztot21z.synoptic.$PDYm2.bufr_d

#####################################################################
#
#   now extract the 23z observation for day PDYm2 because it is
#   to be combined with the 00z obs for day PDYm1.
 
sh $USHutil/extractcpc_metsyn.sh $PDYm2 $syn23 1 000 001 out_file 
 
cp out_file tmp_bf23_hold
 
# keep file tmp_bf23_hold in work area as it will be combined with another file
 
###########################################################################
#
#  Create file small_dacode.dat by extracting  yesterday's 00z, 01z and 02z obs 
 
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $syn23 1 000 001 out_file
 
cp out_file small_dacode.dat
 
#  Get PDYm1's 00z only obs file 000.ibm
 
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $syn00 1 000 001 out_file 
cp out_file tmp_000.ibm_hold
 
##########################################################################
#
#  Combine 23z obs on PDYm2 and 00 and 01 on PDYm1 and create the 00z
#  data file for PDYm1(24 hour old synoptic data)
 
touch main_filesnames.dat
echo 'tmp_bf23_hold'    >> main_filenames.dat
echo 'tmp_000.ibm_hold' >> main_filenames.dat

export pgm=bufr_combfr
. prep_step
export XLFUNIT_50="dacode.dat"

$EXECbufr/bufr_combfr < main_filenames.dat >> $pgmout
err=$? ; export err; err_chk
 
###########################################################################
#
# Eliminate work files and copy files to /com directory
 
rm tmp_bf23_hold tmp_000.ibm_hold
 
cp dacode.dat       $COMOUT/cpc.t00ztot01z.synoptic.$PDYm1.bufr_d
cp small_dacode.dat $COMOUT/cpc.t00z.synoptic.$PDYm1.bufr_d
 
when=`date`
echo '48 hour old synoptic data extract completed' $when 
 
############################################################################
#
# Begin extract_syn24.com
 
############################################################################
#
#  Extract synoptic data from 3z to 23z on day PDYM1(24 hours old) by entering
#  the date and time of data, number of hours of data, data               
#  type and data sub type to be extracted                                      
#                                                                               
##############################################################################
 
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $synh1 1 000 001 out_file $yes 
 
cp out_file dicode.dat
cp dicode.dat $COMOUT/cpc.t03ztot21z.synoptic.$PDYm1.bufr_d
 
##########################################################################
#
#   Extract 23z only obs for day PDYm1 for use with daily pressure jobs
 
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $synh1 0.0 000 001 out_file 
cp out_file small_bf23
 
##########################################################################
#   now extract the 23z observation for day PDYm1 and the 00z observation
#   for day PDY
 
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $syn23 1 000 001 out_file
cp out_file tmp_bf23_hold
 
##########################################################################
#  now get the 02z to 06z data for day PDY

sh $USHutil/extractcpc_metsyn.sh $PDY $syn03 4 000 001 out_file
cp out_file tmp_000.ibm_hold
 
#  now combine 23z on PDYm1 and 00 and 01 on PDY and create the 00z
#  data file
 
touch main_filenames.dat
rm main_filenames.dat
echo 'tmp_bf23_hold'    >> main_filenames.dat
echo 'tmp_000.ibm_hold' >> main_filenames.dat
 
export pgm=bufr_combfr
. prep_step
export XLFUNIT_50="docode.dat"

$EXECbufr/bufr_combfr < main_filenames.dat >> $pgmout
err=$? ; export err; err_chk

#
#  create input file for CPC pressure code 
 
touch main_filenames.dat
rm main_filenames.dat
 
chmod 775 dicode.dat docode.dat
echo 'small_dacode.dat' >> main_filenames.dat
echo 'dicode.dat'       >> main_filenames.dat
echo 'small_bf23.dat'   >> main_filenames.dat
 
export pgm=bufr_combfr
. prep_step
export XLFUNIT_50="surfaceobs.dat"

$EXECbufr/bufr_combfr < main_filenames.dat >> $pgmout
err=$? ; export err; err_chk

rm main_filenames.dat

#
#  create forest service input file
 
echo 'dicode.dat' >> main_filenames.dat
echo 'docode.dat' >> main_filenames.dat
 
export pgm=bufr_combfr
. prep_step
export XLFUNIT_50="forest_synoptic.dat"

$EXECbufr/bufr_combfr < main_filenames.dat >> $pgmout
err=$? ; export err; err_chk

rm main_filenames.dat

#
# Copy files to output area
 
cp docode.dat            $COMOUT/cpc.t00ztot06z.synoptic.$PDY.bufr_d
cp forest_synoptic.dat   $COMOUT/cpc.t03ztot06z.synoptic.$PDY.bufr_d
cp surfaceobs.dat        $COMOUT/cpc.t00ztot23z.synoptic.$PDYm1.bufr_d
 
when=`date`
echo '24 hour old synoptic data extracted' $when
 
############################################################################
 
echo 'Extracting 24 hour old metar data'  $when
 
echo 'input dates are ' $PDYm1 $PDY
 
##############################################################################
#
#  get data from 10z  yesterday until 21z yesterday by entering
#  date and time of data, number of hours of data, data               
#  type and data sub type to be extracted                                      
                                                                                
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $meth1 4 000 007 out_file $yes
 
cp out_file tmp_buf1_hold
 
# Save file name for use in additional bufr_combfr steps
 
echo 'tmp_buf1_hold' > main_filenames.dat
 
#############################################################################
#
#   get hours 00 - 09 for day PDY(the current day)
 
sh $USHutil/extractcpc_metsyn.sh $PDY $meth2 3 000 007 out_file $yes
 
# This call extracts files bf02 and bf07 which will be combined into buf2
# and combined with buf1 to create file f24_hours.dat.
 
cp out_file tmp_buf2_hold
echo 'tmp_buf2_hold' >> main_filenames.dat
 
#  combine files and move data to output file_name
 
export pgm=bufr_combfr
. prep_step
export XLFUNIT_50="f24_hours.dat"

$EXECbufr/bufr_combfr < main_filenames.dat >> $pgmout
err=$? ; export err; err_chk

#
# remove work files and copy output file to /com area
#
rm tmp_buf1_hold tmp_buf2_hold
chmod 775 f24_hours.dat 
cp f24_hours.dat $COMOUT/cpc.t10ztot09z.metar.$PDY.bufr_d
 
when=`date`
echo '24 hour old metar data was extracted' $when
 
##############################################################################
#
when=`date`
echo 'extract 48 hour old metar data ' $when
 
echo 'input dates are ' $PDYm2 $PDYm1 
 
#  extract data from 10z to 23z on day PDYm2 by entering
#  the date and time of data, number of hours of data, data               
#  type and data sub type to be extracted                                      
                                                                                
#############################################################################
#
sh $USHutil/extractcpc_metsyn.sh $PDYm2 $meth1 4 000 007 out_file $yes
#
#############################################################################
 
cp out_file tmp_buf1_hold
 
# Save file name for use in additional bufr_combfr steps
 
echo 'tmp_buf1_hold' > main_filenames.dat
 
###############################################################################
#
#  get first 9 hours for day PDYm1    
#
###############################################################################
 
sh $USHutil/extractcpc_metsyn.sh $PDYm1 $meth2 3 000 007 out_file $yes
 
###############################################################################
#
# This call extracts files bf02 and bf07 which will be combined into buf2
# and combined with buf1 to create file l24_hours.dat.
 
cp out_file tmp_buf2_hold
echo 'tmp_buf2_hold' >> main_filenames.dat
 
#  combine bufr files and copy them to output file_name
 
#############################################################################
 
export pgm=bufr_combfr
. prep_step
export XLFUNIT_50="l24_hours.dat"

$EXECbufr/bufr_combfr < main_filenames.dat >> $pgmout
err=$? ; export err; err_chk

rm tmp_buf1_hold tmp_buf2_hold
rm main_filenames.dat
 
#############################################################################
#
# Set protections on output file and copy to output area
 
chmod 775 l24_hours.dat
cp l24_hours.dat $COMOUT/cpc.t10ztot09z.metar.$PDYm1.bufr_d
#
# Alert files to DBNet
#
if [ $SENDDBN = "YES" ]; then
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t03ztot21z.synoptic.$PDYm2.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t00ztot01z.synoptic.$PDYm1.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t00z.synoptic.$PDYm1.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t03ztot21z.synoptic.$PDYm1.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t00ztot06z.synoptic.$PDY.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t03ztot06z.synoptic.$PDY.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t00ztot23z.synoptic.$PDYm1.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t10ztot09z.metar.$PDY.bufr_d
   $DBNROOT/bin/dbn_alert MODEL CPCMETSYN  $job  $COMOUT/cpc.t10ztot09z.metar.$PDYm1.bufr_d
fi

when=`date`
echo '48 hour old metar data extracted' $when
 
msg='Job completed normally.'
echo $msg
postmsg "$jlogfile" "$msg"

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