#!/bin/csh

if ( ! -e /ptmp/$USER ) then
   mkdir  /ptmp/$USER
endif
set TMPDIR=/ptmp/$USER

##set echo

# The necessary arguments below, or specify them on the command line
#   ie,
#   get_awip.csh 1994-03-13_00 1994-03-14_00 12
#   or
#   get_awip.csh 1994-03-13_00 1994-03-14_00 12 /ptmp/$USER/myDATA
#   Command line entries will overwrite entries below
set startdate = 1993-03-13+00     # YYYY-MM-DD+HH
set enddate   = 1993-03-14+00     # YYYY-MM-DD+HH
set itimint = 6
                     # Data is only archieved every 12 hours.
	 	     # If you want data 3/6 hours, it will be 
		     # retrieved from the tm?? files.

### If you uncomment this line, also uncomment the line containing
### "rcp" later in the script
#set Host = username@host.domain:/local_directory

###############################################################################
######################                         ################################
######################  END USER MODIFICATION  ################################
######################                         ################################
###############################################################################

if ( $1 != '') then
   echo "Change Date Information to command line input"
   set startdate = $1    # YYYY-MM-DD+HH
   set enddate =   $2    # YYYY-MM-DD+HH
   set itimint =   $3    # 12
   if ( $2 == '') then
      echo "MUST specify enddate on command line if statedate was specified"
      exit
   endif
   if ( $3 == '') then
      echo "MUST specify interval on command line if statedate and enddate were specified"
      exit
   endif
endif
echo "State Date" $startdate
echo "  End Date" $enddate
echo "  Interval" $itimint
if ( $4 != '') then
   echo "Change TMPDIR to command line input"
   set TMPDIR=$4
   echo $TMPDIR
endif

cd $TMPDIR
cp /mmm/users/mesouser/MM5V3/Util/geth_newdate .
cp /mmm/users/mesouser/MM5V3/Util/newdate.awpr .

# Set up the list "mdate".  "mdate" will hold all the times we 
# need to get.
# Set up the "mpdate" list. This list will hold the corresponding
# times that should be retrieved from the archives.

set numbers = ( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21)
###set numbersZero = ( 01 02 03 04 05 06 07 08 09 10 11 12 )
###    set start_month = $numbers[$start_month]
###    set start_month_Zero = $numbersZero[$start_month]

set curn = `echo ${startdate} | cut -c 1-4,6-7,9-10,12-13`
set endn =   `echo ${enddate} | cut -c 1-4,6-7,9-10,12-13`

set mHH = `echo $startdate | cut -b 12-13`
set mHH = $numbers[$mHH]
if ( $mHH >= 12 ) then
  @ stn = $mHH - 12
else 
  @ stn = $mHH
endif
if ( $stn == 0 ) then
  set idth_n = 0
  @ num_n = 12 / $itimint
else
  @ idth_n = 12 - $stn
  @ num_n = $stn / $itimint
endif
@ count = 12 / $itimint

set num = 0
set idth = -$itimint
set mdate = ( )
set mpdate = ( )
while ( $curn < $endn )
   @ idth = $idth + $itimint
   @ num ++
   @ num_n ++
   set ndate = `./geth_newdate ${startdate} ${idth}`
   set mdate = ( ${mdate} ${ndate} )
   set npdate = `./geth_newdate ${startdate} ${idth_n}`
   set mpdate = ( ${mpdate} ${npdate} )
   if ( $num_n > $count ) then
     set num_n = 1
     @ idth_n = $idth_n + 12
   endif
   set curn = `echo ${ndate} | cut -c 1-4,6-7,9-10,12-13`
end

echo "mdate = $mdate"
echo "mpdate = $mpdate"


# Set up the ftp command-script to get the archive lists.  First, set 
# up to login anonymously to ncardata.ucar.edu

cat >! ftp.cmd << EOF1
open roy-s
user anonymous@ncardata.ucar.edu ${user}@ucar.edu
get datasets/ds609.2/inventories/eta.inv eta.inv
quit
EOF1

# Now invoke ftp to get the archive lists.

if ( ! -e eta.inv ) then
   ftp -n < ftp.cmd
   rm ftp.cmd
endif

sed s/_/\ \ / eta.inv > eta.tmp
sed s/@/\ \ / eta.tmp > eta.invs

# Construct the dates as they appear in the upper-air archive titles.
# Use awk (nawk) to get the actual MSS filenames from the archive lists.


set NUM = 0
foreach ndate ( $mdate ) 
 @ NUM = $NUM + 1

   set YYYY = `echo $ndate | cut -b 1-4`
   set Mm = `echo $ndate | cut -b 6-7`
   set Dd = `echo $ndate | cut -b 9-10`
   set HH = `echo $ndate | cut -b 12-13`
   set YYYYp = `echo $mpdate[$NUM] | cut -b 1-4`
   set YYp = `echo $mpdate[$NUM] | cut -b 3-4`
   set Mmp = `echo $mpdate[$NUM] | cut -b 6-7`
   set Ddp = `echo $mpdate[$NUM] | cut -b 9-10`
   set HHp = `echo $mpdate[$NUM] | cut -b 12-13`

   if ( $YYYYp >= 2000 ) then
      set tar_year = $YYYYp
   else
      set tar_year = $YYp
   endif

   echo $YYYY $Mm $Dd $HH
   echo $YYYYp $Mmp $Ddp $HHp

# Get the upper-air analysis files.
   set EtaFile1 = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="3Danal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,2) <= DD ) && ( substr($5,4,5) >= DD ) && ( $4 == typ ) ) { print $1 } }' eta.invs `
   set EtaFile2 = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="3Danal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,1) <= DD ) && ( substr($5,3,4) >= DD ) && ( $4 == typ ) ) { print $1 } }' eta.invs `

 if ( $EtaFile1 ==  ) then
    set EtaFile = $EtaFile2
    set split = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="3Danal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,1) <= DD ) && ( substr($5,3,4) >= DD ) && ( $4 == typ ) ) { print substr($5,1,1) } }' eta.invs `
 else
    set EtaFile = $EtaFile1
    set split = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="3Danal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,2) <= DD ) && ( substr($5,4,5) >= DD ) && ( $4 == typ ) ) { print substr($5,1,2) } }' eta.invs `
 endif

   set local = ETA_GRIB_UPA.${YYYYp}.${Mmp}.${split}

   if ( ! -e $local ) then 
      echo "msread -f BI $local /DSS/${EtaFile}"
      msread -f BI $local /DSS/${EtaFile}
   endif

   if ( $HH == 00 || $HH == 12 ) then
      tar xvf $local ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm00
      mv ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm00 ${tar_year}${Mmp}_3Danal/${YYYY}${Mm}${Dd}${HH}.AWIP3D
   endif
   if ( $HH == 06 || $HH == 18 ) then
      tar xvf $local ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm06
      mv ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm06 ${tar_year}${Mmp}_3Danal/${YYYY}${Mm}${Dd}${HH}.AWIP3D
   endif
   if ( $HH == 03 || $HH == 15 ) then
      tar xvf $local ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm09
      mv ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm09 ${tar_year}${Mmp}_3Danal/${YYYY}${Mm}${Dd}${HH}.AWIP3D
   endif
   if ( $HH == 09 || $HH == 21 ) then
      tar xvf $local ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm03
      mv ${tar_year}${Mmp}_3Danal/${tar_year}${Mmp}${Ddp}${HHp}.AWIP3D00.tm03 ${tar_year}${Mmp}_3Danal/${YYYY}${Mm}${Dd}${HH}.AWIP3D
   endif

# Get the surface analysis files.
   set EtaFile1 = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="SFanal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,2) <= DD ) && ( substr($5,4,5) >= DD ) && ( $4 == typ ) ) { print $1 } }' eta.invs `
   set EtaFile2 = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="SFanal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,1) <= DD ) && ( substr($5,3,4) >= DD ) && ( $4 == typ ) ) { print $1 } }' eta.invs `

 if ( $EtaFile1 ==  ) then
    set EtaFile = $EtaFile2
    set split = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="SFanal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,1) <= DD ) && ( substr($5,3,4) >= DD ) && ( $4 == typ ) ) { print substr($5,1,1) } }' eta.invs `
 else
    set EtaFile = $EtaFile1
    set split = `nawk -v NAM=${YYYYp} -v MM=${Mmp} -v DD=${Ddp} -v typ="SFanal" '{ if ( ( substr($3,1,4) == NAM ) &&  ( substr($3,6,7) == MM) && ( substr($5,1,2) <= DD ) && ( substr($5,4,5) >= DD ) && ( $4 == typ ) ) { print substr($5,1,2) } }' eta.invs `
 endif

   set local = ETA_GRIB_SFC.${YYYYp}.${Mmp}.${split}
   if ( ! -e $local ) then 
      echo "msread -f BI $local /DSS/${EtaFile}"
      msread -f BI $local /DSS/${EtaFile}
   endif

   if ( $HH == 00 || $HH == 12 ) then
      tar xvf $local ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm00
      mv ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm00 ${tar_year}${Mmp}_SFanal/${YYYY}${Mm}${Dd}${HH}.AWIPSF
   endif
   if ( $HH == 06 || $HH == 18 ) then
      tar xvf $local ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm06
      mv ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm06 ${tar_year}${Mmp}_SFanal/${YYYY}${Mm}${Dd}${HH}.AWIPSF
   endif
   if ( $HH == 03 || $HH == 15 ) then
      tar xvf $local ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm09
      mv ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm09 ${tar_year}${Mmp}_SFanal/${YYYY}${Mm}${Dd}${HH}.AWIPSF
   endif
   if ( $HH == 09 || $HH == 21 ) then
      tar xvf $local ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm03
      mv ${tar_year}${Mmp}_SFanal/${tar_year}${Mmp}${Ddp}${HHp}.AWIPSF00.tm03 ${tar_year}${Mmp}_SFanal/${YYYY}${Mm}${Dd}${HH}.AWIPSF
   endif

end

rm eta* ftp*
rm geth_newdate 
rm newdate.awpr 
rm ETA_GRIB*

echo "#####################################################"
echo " "
echo " The data required to run pregrid will be saved to "
echo " directories, ${YYYYp}${Mmp}_3Danal, and ${YYYYp}${Mmp}_SFanal"
echo " "
echo "#####################################################"

echo "DONE"

exit