#!/bin/ksh

#------------------------
# Name: runStorm.sh
# Date: Dec.5, 2014
# Y.Zhu (ACENTIA)
# PR1063: add boundary cross check
# CCR8598: add append_flag so that not append bulletin for JTWC. 06072018
#-------------------------

export PATH=/bin:/usr/bin:/usr/bsd:/etc:/usr/ucb:/usr/bin/X11:$HOME/bin:$HOME/mcidas/bin:~mcidas/bin:/usr/local/bin:.
export MCPATH=/home/mcidas/data:$HOME/mcidas/data:$HOME/mcidas/help:~mcidas/data:~mcidas/help
export SHELL=/bin/ksh

stormname=$1
origstormname=$2
ifcsttype=$3
w1or10=$4
day=$5
timex=$6
append_flag=$7

echo "************* Start runStorm.sh **************"
echo "`date`"

export stormname
export origstormname
export ifcsttype
export w1or10
export day
export timex
export append_flag

echo "stormname == $stormname"
echo "origstormname == $origstormname"
echo "ifcsttype == $ifcsttype"
echo "w1or10 == $w1or10"
echo "day == $day"
echo "timex == $timex"
echo "append_flag == $append_flag"

cat << 'EOF' | ~mcidas/bin/mcenv

adtdir="$HOME/ADTV8.2.1"
scripts_dir="$adtdir/scripts"
let ttime=24

fcstfiletype[0]="ATCF"
fcstfiletype[1]="DISC"
fcstfiletype[2]="PACWARN"
fcstfiletype[3]="GENERIC"
fcstfiletype[4]="ICAO"
fcstfiletype[5]="RSMC"
#fcstfiletype[5]="RMSC"
fcstfiletype[6]="AXAU"


let ttime=24
let ic_flag=1  # first time use on new storm.
       

ls -la $adtdir/history/$stormname'.ODT'

if [ -f  $adtdir/history/$stormname'.ODT' ]
then 
   echo " Storm is already there - Don't use IC  "
   ic_flag=-1
fi

#### Start  CCR9618 TN 06/11/2019 ####
#echo "$adtdir/forecasts/$stormname.FORECAST"
#cat $adtdir/forecasts/$stormname.FORECAST
#echo "$scripts_dir/interpll-all $adtdir/forecasts/$stormname.FORECAST $ifcsttype $day $timex $ttime >$scripts_dir/interpll_output"
#$scripts_dir/interpll-all $adtdir/forecasts/$stormname.FORECAST $ifcsttype $day $timex $ttime >$scripts_dir/interpll_output

echo "$adtdir/forecasts/$origstormname.FORECAST"
cat $adtdir/forecasts/$origstormname.FORECAST
echo "$scripts_dir/interpll-all $adtdir/forecasts/$origstormname.FORECAST $ifcsttype $day $timex $ttime >$scripts_dir/interpll_output"
$scripts_dir/interpll-all $adtdir/forecasts/$origstormname.FORECAST $ifcsttype $day $timex $ttime >$scripts_dir/interpll_output

#### End  CCR9618 TN 06/11/2019 ####

echo interpll_output OUTPUT
#read valid lat lon strength < $scripts_dir/interpll_output
tail -1 $scripts_dir/interpll_output | read valid lat lon strength
echo $valid  $lat  $lon  $strength
rm -r -f $scripts_dir/interpll_output

if [ $valid -lt 0 ]
then 
   if [ $valid -eq -1 ]
   then
      echo "INVALID FORECAST FILE, IMAGE BEFORE FIRST FORECAST TIME"
      CSTAT="INVALID_FCST"          

      echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"               >>  $adtdir/scripts/viewhislist
      echo " "                                                           >>  $adtdir/scripts/viewhislist
      echo "INVALID FORECAST FILE, IMAGE BEFORE FIRST FORECAST TIME"     >>  $adtdir/scripts/viewhislist
      echo " "                                                           >>  $adtdir/scripts/viewhislist

   elif [ $valid -eq -2 ]
   then
      echo "INVALID FORECAST FILE, IMAGE AFTER LAST FORECAST TIME"
      CSTAT="INVALID_FCST"          

      echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"               >>  $adtdir/scripts/viewhislist
      echo " "                                                           >>  $adtdir/scripts/viewhislist
      echo "INVALID FORECAST FILE, IMAGE AFTER LAST FORECAST TIME"       >>  $adtdir/scripts/viewhislist
      echo " "                                                           >>  $adtdir/scripts/viewhislist
               
   elif [ $valid -eq -3 ]
   then
      echo "FORECAST FILE MORE THAN $ttime HOURS OLD"
      CSTAT="24HRS_OLD_FCST"          

      echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"       >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist
      echo "FORECAST FILE MORE THAN 24 HOURS OLD"                >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist
                    
      # Not run the mklist command from the back up TN 03/23/09
      # echo "The run_mklist.sh script is called !!!!"
      # $HOME/ADTV8.2.1/scripts/run_mklist.sh $stormname

   elif [ $valid -eq -4 ]
   then
      echo  "INTERPOLATION FAILED"
      CSTAT="INTERP_FAILED"

      echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"       >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist
      echo "INTERPOLATION FAILED"                                >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist

   elif [ $valid -eq -5 ]
   then
      echo "FORECAST FILE DOES NOT EXIST... EXITING"
      CSTAT="NOT_EXIST_FCST"          

      echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"       >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist
      echo "FORECAST FILE DOES NOT EXIST... EXITING"             >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist

   # tlo added 3/10/09 start
   elif [ $valid -eq -99 ]
   then
      echo "STORM TOO WEAK... EXITING"
      CSTAT="INVALID_FCST"
      # tlo added 3/10/09 end
      echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"       >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist
      echo "STORM TOO WEAK...... EXITING"                        >>  $adtdir/scripts/viewhislist
      echo " "                                                   >>  $adtdir/scripts/viewhislist

   else 
       CSTAT="UNKNOWN"          
   fi
   curimgtime=999999
   #  $adtdir/scripts/emailnote.sh  $CSTAT $stormname
   #$scripts_dir/adtstats.sh $day $timex $curimgtime $wmoheader $stormnumber $stormname $valid $CSTAT
   exit
fi  

#  RUN ODT FOR STORM
wind=$strength
echo "wind = $wind"

####-------  Convert the lat/lon from float to into ----------- ####
let ilat=`$HOME/ADTV8.2.1/scripts/floattoint $lat`
let ilon=`$HOME/ADTV8.2.1/scripts/floattoint $lon`
echo lat=$lat $ilat  lon=$lon $ilon

fcsttype=${fcstfiletype[${ifcsttype}]}

####-------  Convert the Max wind to Tno ----------- ####
#if [[ $fcsttype = "AXAU" || $fcsttype = "RMSC" ]]
if [[ $fcsttype = "AXAU" || $fcsttype = "RSMC" ]]
then
   ic=$wind
else
   ic=`$HOME/ADTV8.2.1/scripts/windtotno $wind $w1or10`       # modified 5/6/09 tlo
fi
echo IC=$ic

###-- PR000892 change condition to 1.0<ic<8.0 (02/03/2014)
if [[ $ic -lt 1.0 || $ic -gt 8.0 ]]
then
   echo SKIPPING STORM... IC MUST BE GREATER THAN 1.0 AND LESS THAN 8.0
   exit
fi

####-------  Download image from server ----------- ####
ldsname="LOC/AREA"
let image=9989
mceval.k IMGDEL $ldsname.$image
echo lat=$lat
echo lon=$lon


if [ $ilat -gt 0 ]
then
   # NORTHERN HEMISPHERE
#    if [ $ilon -le -10000 ]
#    then
#       # WEST PACIFIC
#       satellite_data='MTS/MTNHEM04I2'
#       bsat='MTSAT'
#       #fcsttype='PACWARN'
#    fi
   #--Switch from MTSAT to HIMAWARI-8. T. Nguyen 11/20/2015
   if [ $ilon -le -10000 ]
   then
      # WEST PACIFIC
      #satellite_data='HIM/MTNHEM04I2'
      satellite_data='HIM/HMNHEM04I13'
      bsat='HIM-8'
      #fcsttype='PACWARN'
   fi

   if [[ $ilon -gt -10000 && $ilon -lt 0 ]]
   then
      # INDIAN OCEAN
#      satellite_data='IND/INDOEXIR'
#      bsat='MET-7'
      satellite_data='MIO/GLOB10'
      bsat='MET-8'
      #fcsttype='PACWARN'
   fi

   #g-14
   #if [[ $ilon -ge 0 && $ilon -lt 5200 ]]
   #g-13
   if [[ $ilon -ge 0 && $ilon -lt 3500 ]]
   then
      # EAST ATLANTIC
      satellite_data='MSG/MSGLOB09I'
      bsat='MET-9'
      #fcsttype='DISC'
   fi

   #g-14
   #if [[ $ilon -ge 5200 && $ilon -lt 10500 ]]
   #g-13
   if [[ $ilon -ge 3500 && $ilon -lt 10500 ]]
   then
      # WEST ATLANTIC
      #satellite_data='GER/GENHEM04I4'
      satellite_data='L16/FDSK14'
      bsat='GOES-E'
      #fcsttype='DISC'
   fi

   if [ $ilon -ge 10500 ]
   then
      # EAST PACIFIC
      satellite_data='GWR/GWNHEM04I4'
      bsat='GOES-W'
      #fcsttype='DISC'
   fi

else
   # SOUTHERN HEMISPHERE
   
#    if [ $ilon -le -10000 ]
#    then
#       # WEST PACIFIC
#       ##     Switch from using MTGLOB to using MTSHEM.  YL 05/08/09
#       satellite_data='MTS/MTSHEM04I2'
#       bsat='MTSAT'
#       #fcsttype='PACWARN'
#    fi

   if [ $ilon -le -10000 ]
   then
      # WEST PACIFIC
      ##     Switch from using MTGLOB to using MTSHEM.  YL 05/08/09
      #--Switch from MTSAT to HIMAWARI-8. T. Nguyen 11/20/2015
      #satellite_data='HIM/MTSHEM04I2'
      satellite_data='HIM/HMSHEM04I13'
      bsat='HIM-8'
      #fcsttype='PACWARN'
   fi

   if [[ $ilon -gt -10000 && $ilon -lt 0 ]]
   then
      # INDIAN OCEAN
#      satellite_data='IND/INDOEXIR'
#      bsat='MET-7'
      satellite_data='MIO/GLOB10'
      bsat='MET-8'
      #fcsttype='ICAO'
   fi

   if [[ $ilon -ge 0 && $ilon -lt 6000 ]]
   then
      # EAST ATLANTIC
      satellite_data='MSG/MSGLOB09I'
      bsat='MET-9'
      #fcsttype='DISC'
   fi

   if [ $ilon -ge 10000 ]
   then
      # EAST PACIFIC
      satellite_data='GWR/GWSHEM04I4'
      bsat='GOES-W'
      #fcsttype='DISC'
   fi
fi

echo "fcsttype=  $fcsttype"

mceval.k IMGLIST $satellite_data.-5
#mceval.k IMGCOPY $satellite_data $ldsname.$image SIZE=500 500 LATLON=$lat $lon
mceval.k IMGCOPY $satellite_data.-1 $ldsname.$image SIZE=500 500 LATLON=$lat $lon
mceval.k IMGLIST $ldsname.$image 



echo RUNNING ODT ON $stormname
echo "$scripts_dir/runaodt.sh $fcsttype $stormname $lat $lon $ic $bsat $origstormname $ic_flag $append_flag"
#--add append_flag 06072018 CCR8598
$scripts_dir/runaodt.sh $fcsttype $stormname $lat $lon $ic $bsat $origstormname $ic_flag $append_flag
      
grep -i "AODT Error" $HOME/ADTV8.2.1/scripts/xxxx > /dev/null
if [ $? = 0 ]
then
   echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"                >>  $adtdir/scripts/viewhislist
   echo " "                                                            >>  $adtdir/scripts/viewhislist
   echo "NAODT command ERROR"                                          >>  $adtdir/scripts/viewhislist
   echo "Please contact the programmer and open a help desk ticket"    >>  $adtdir/scripts/viewhislist
   echo " "                                                            >>  $adtdir/scripts/viewhislist
   CSTAT="ERR_NAODT"
else
   echo "LIST TEXT FOR ACTIVE STORM NAME =  $stormname"       >>  $adtdir/scripts/viewhislist
   echo " "                                                   >>  $adtdir/scripts/viewhislist
   tail -10 $adtdir/history/$stormname-list.txt               >>  $adtdir/scripts/viewhislist
   echo " "                                                   >>  $adtdir/scripts/viewhislist
   CSTAT="GOODRUN"
   # Distribute the product only when GOODRUN  TN 03/29/2011  HD#3630
   #### Turned on sending to the Web Server (GP5) -TN 04/12/2016
   $HOME/ADTV8.2.1/scripts/send_adt2webserv.sh $stormname
   # added by L. Ma   sending img and text file to GP50
   # stop sending for now.  T. Nguyen 11/19/2015
   ###$HOME/ADTV8.2.1/scripts/send_adt2webserv_bk.sh $stormname
   $HOME/ADTV8.2.1/scripts/send_atcf2sfs_bk.sh $stormname
   $HOME/ADTV8.2.1/scripts/send_adt2anon.sh $stormname

   echo "##  ACTIVE STORM NAME =    $stormname                ##"  >> $adtdir/scripts/check_adt
fi

#$scripts_dir/adtstats.sh $day $timex $curimgtime  $wmoheader $stormnumber $stormname $valid $CSTAT
####------- Remove a storm from the check_adt file if its image file exists and its history file doesn't exist ----------- #### 
####------- CCR00783 - Modify ADT distributions for storms lacking too few position points         YL 09/18/09 ----------- ####
if [[ ! -f $HOME/ADTV8.2.1/history/$stormname'-list.txt' && -f $HOME/mcidas/data/$stormname'.GIF' ]]
then
   mv  $HOME/mcidas/data/$stormname'.GIF'  $HOME/ADTV8.2.1/final/gif/$stormname'.GIF_'$day'_'$timex
   cat $adtdir/scripts/check_adt 
   sed '$d' < $adtdir/scripts/check_adt > $adtdir/scripts/check_adt1  
   mv   $adtdir/scripts/check_adt1   $adtdir/scripts/check_adt
   echo "check_adt is changed for $stormname."
   cat $adtdir/scripts/check_adt
   exit   
fi 

####-------  Arhive ADT outputs to the final direcotry ----------- ####
cp $adtdir/forecasts/$stormname'.FORECAST' $adtdir/forecasts/$stormname'.FORECAST.pregood'
#cp $adtdir/forecasts/$stormname'.FORECAST' $adtdir/final/fcst/$stormname'.FORECAST'_$wmoheader$stormnumber'_'$day'_'$timex
cp $HOME/ADTV8.2.1/scripts/xxxx $HOME/ADTV8.2.1/final/text/xxxx.$stormname'_'$day'_'$timex

####-------  Send ADT products to the Web Server ----------- ####
#### Stop to send to the Web Server (GP5) from the back up TN 03/23/09
#### Turned on sending to the Web Server (GP5) -TN 04/12/2016
$HOME/ADTV8.2.1/scripts/send_adt2webserv.sh $stormname
### mv $HOME/mcidas/data/$stormname'.GIF' $HOME/ADTV8.2.1/final/gif/'0'$stormname'.GIF'
mv $HOME/mcidas/data/$stormname'.GIF' $HOME/ADTV8.2.1/final/gif/'0'$stormname'.GIF_'$day'_'$timex
cp $HOME/ADTV8.2.1/history/$stormname'.ODT' $HOME/ADTV8.2.1/final/history/'0'$stormname'.ODT'
cp $HOME/ADTV8.2.1/history/$stormname'-list.txt' $HOME/ADTV8.2.1/final/history/'0'$stormname'-list.txt'


####-------  Post ADT products to the Web page ----------- ####
#### Stop to Post to the web site from the back up TN 03/23/09
#### turned on Posting to the web site -TN 04/12/2016
echo "call post_adt2webpage.pl !!!" 
$HOME/ADTV8.2.1/scripts/post_adt2webpage.pl $stormname-list.txt           
#### Post to the gp50 web site from the back up LM 01/12/12
#TN-11/19/2015  echo "post_adt2webpage_bk.pl is called for $stormname-list.txt."
##$HOME/ADTV8.2.1/scripts/post_adt2webpage_bk.pl $stormname-list.txt           

echo "End runStorm.sh"
EOF
