#!/bin/ksh -l
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         rap_process_hydro.sh.sms
# Script description:  runs radar mosaic and Langley cloud processing 
#
# Author:        Ming Hu / Geoff Manikin   Org: EMC          Date: 2011-08-24
#
# Script history log:
# 2011-08-24  M Hu / G Manikin
# 2018-01-25  B Blake / C Guastini / G Manikin / C Alexander - RAPv4

set -x

cd $DATA

# Set up some constants
export MOSAICTILENUM=4

### Process Mosaic
numtiles=${MOSAICTILENUM}

START_TIME=$PDY$cyc
echo $START_TIME >STARTTIME

# Compute date & time components for the analysis time
ymd=`echo ${START_TIME} | cut -c1-8`
hh=`echo ${START_TIME} | cut -c9-10`
HH=`date +"%H" -d "${ymd} ${hh}"`
mm=`date +"%M" -d "${ymd} ${hh}"`

cp ${PARMrap}/rap_prepobs.bufrtable  ./prepobs_prep.bufrtable
cp ${FIXrap}/rap_geo_em.d01.nc ./geo_em.d01.nc

# find NSSL grib2 mosaic files
COM_MOSAIC_GRIB2=${COMINmosaic}/conus/MergedReflectivityQC
numgrib2_00=`ls ${COM_MOSAIC_GRIB2}/MergedReflectivityQC_*_${PDY}-${cyc}00??.grib2.gz | wc -l`
numgrib2_01=`ls ${COM_MOSAIC_GRIB2}/MergedReflectivityQC_*_${PDY}-${cyc}01??.grib2.gz | wc -l`
numgrib2_02=`ls ${COM_MOSAIC_GRIB2}/MergedReflectivityQC_*_${PDY}-${cyc}02??.grib2.gz | wc -l`
if [ ${numgrib2_00} -eq 33 ]; then
   cp ${COM_MOSAIC_GRIB2}/MergedReflectivityQC_*_${PDY}-${cyc}00??.grib2.gz .
   ls MergedReflectivityQC_*_${PDY}-${cyc}????.grib2.gz > filelist_mrms
else
   if [ ${numgrib2_01} -eq 33 ]; then
      cp ${COM_MOSAIC_GRIB2}/MergedReflectivityQC_*_${PDY}-${cyc}01??.grib2.gz .
      ls MergedReflectivityQC_*_${PDY}-${cyc}????.grib2.gz > filelist_mrms
   else
      if [ ${numgrib2_02} -eq 33 ]; then
         cp ${COM_MOSAIC_GRIB2}/MergedReflectivityQC_*_${PDY}-${cyc}02??.grib2.gz .
         ls MergedReflectivityQC_*_${PDY}-${cyc}????.grib2.gz > filelist_mrms
      else
         echo " No NSSL gribs data available, use NCEP 8 tiles binary"
         if [ -s filelist_mrms ]; then
            rm -f filelist_mrms
         fi
      fi
   fi
fi

if [ -s filelist_mrms ]; then
   numgrib2=`more filelist_mrms | wc -l`
   echo "NSSL grib2 file level number = $numgrib2"
else
   numgrib2=0
fi

# Link to the radar data
if [ $numgrib2 -eq 36 ]; then 
   gzip -d *.gz
   numtiles=1
   rm -f filelist_mrms
   ls MergedReflectivityQC_*_${PDY}-${cyc}????.grib2 > filelist_mrms
else
   if [ -s ${COMINmosaic}/tile1/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ] && \
      [ -s ${COMINmosaic}/tile2/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ] && \
      [ -s ${COMINmosaic}/tile3/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ] && \
      [ -s ${COMINmosaic}/tile4/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ]; then
      numtiles=4
      cp ${COMINmosaic}/tile1/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ./mosaic_t1.gz
      cp ${COMINmosaic}/tile2/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ./mosaic_t2.gz
      cp ${COMINmosaic}/tile3/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ./mosaic_t3.gz
      cp ${COMINmosaic}/tile4/mrefl/MREF3D33L.${PDY}.${HH}${mm}00.gz ./mosaic_t4.gz
      gzip -d *.gz
   else
      numtiles=81
      export MOSAICdir=$COMINradar/radar.${PDY}${cyc}
      ln -s ${MOSAICdir}/tile1/${PDY}_${cyc}00.mosaic ./mosaic_t1
      ln -s ${MOSAICdir}/tile2/${PDY}_${cyc}00.mosaic ./mosaic_t2
      ln -s ${MOSAICdir}/tile3/${PDY}_${cyc}00.mosaic ./mosaic_t3
      ln -s ${MOSAICdir}/tile4/${PDY}_${cyc}00.mosaic ./mosaic_t4
      ln -s ${MOSAICdir}/tile5/${PDY}_${cyc}00.mosaic ./mosaic_t5
      ln -s ${MOSAICdir}/tile6/${PDY}_${cyc}00.mosaic ./mosaic_t6
      ln -s ${MOSAICdir}/tile7/${PDY}_${cyc}00.mosaic ./mosaic_t7
      ln -s ${MOSAICdir}/tile8/${PDY}_${cyc}00.mosaic ./mosaic_t8
   fi
fi

echo ${PDY}${cyc} > ./mosaic_cycle_date

cat << EOF > mosaic.namelist
 &setup
  tversion=${numtiles},
  analysis_time = ${PDY}${cyc},
  dataPath = './',
 /

EOF

# Run Process_mosaic
export pgm=$EXECrap/rap_process_mosaic
. prep_step

#startmsg
cp ${EXECrap}/rap_process_mosaic .
runline="time mpiexec -n 36 -ppn 64 ./rap_process_mosaic"
$runline > process_mosaic.out
export err=$?;err_chk

if [ $SENDCOM = YES ]
then
  cp NSSLRefInGSI.bufr $COMOUT/rap.t${cyc}z.mosaic.bufr
fi

### Process Cloud
#changed from com_in to com_out
cp $PREPDIR/rap.${PDY}/rap.t${cyc}z.lgycld.tm00.bufr_d NASA_LaRC_cloud.bufr 

echo ${PDY}${cyc} > ./nasaLaRC_cycle_date
# Build the namelist on-the-fly
cat << EOF > namelist_nasalarc
&SETUP
  analysis_time = ${PDY}${cyc},
  bufrfile='NASALaRCCloudInGSI.bufr',
  npts_rad=1,
  ioption = 2,
/
EOF

## Run Process Cloud
export pgm=$EXECrap/rap_process_cloud
. prep_step

#startmsg
cp ${EXECrap}/rap_process_cloud .
runline="time mpiexec -n 1 -ppn 1 ./rap_process_cloud"
$runline > process_cloud.out
export err=$?

if [ $err -ne 0 ]; then
  export mailelist=${maillist:-'nco.spa@noaa.gov,benjamin.blake@noaa.gov'}
  export subject="RAP_PROCESS_ClOUD did not run cleanly"
  echo "*************************************************************" > mailmsg
  echo "*** WARNING !! RAP_PROCESS_CLOUD didn't complete cleanly. ***" >> mailmsg
  echo "*************************************************************" >> mailmsg
  echo >> mailmsg
  echo " Please check if anything wrong with data or process! " >> mailmsg
  echo " $job will continue following process " >>mailmsg
  cat mailmsg |mail.py -s "$subject" $maillist -v
fi 

if [ $SENDCOM = YES ]
then
  cp NASALaRCCloudInGSI.bufr $COMOUT/rap.t${cyc}z.nasacloud.bufr
fi
### Process Lightning
if [ -s $PREPDIR/rap.${PDY}/rap.t${cyc}z.lghtng.tm00.bufr_d ]
then
  cp $PREPDIR/rap.${PDY}/rap.t${cyc}z.lghtng.tm00.bufr_d ./rap.t${cyc}z.lghtng.tm00.bufr_d
  ln -s rap.t${cyc}z.lghtng.tm00.bufr_d lghtngbufr

  echo ${PDY}${cyc} > ./lightning_cycle_date

cat << EOF > lightning.namelist
 &SETUP
  analysis_time = ${START_TIME},
  trange_start=-10.0,
  trange_end=10.0,
 /
EOF

  cp lightning.namelist lightning_bufr.namelist
  ## Run Process Lightning
  export pgm=$EXECrap/rap_process_lightning

  startmsg
  cp ${EXECrap}/rap_process_lightning .
  runline="time mpiexec -n 1 -ppn 1 ./rap_process_lightning"
  $runline > process_lightning.out
  export err=$?;err_chk

  if [ $SENDCOM = YES ]
  then
    cp LightningInGSI.bufr $COMOUT/rap.t${cyc}z.lghtng.bufr
  fi
else
  echo "Warning: $PREPDIR/rap.${PDY}/rap.t${cyc}z.lghtng.tm00.bufr_d is not available "
fi

msg="JOB $job FOR RAP_PREP HAS COMPLETED NORMALLY"
postmsg "$jlogfile" "$msg"

exit 0

