#!/bin/sh
#
#****s* pp/test_pp_spectra.sh
#
# NAME
#    test_pp_spectra.sh
#
# SYNOPSIS
#   test_pp_spectra.sh
#
# DESCRIPTION
#   Tests the ropp_pp executable ../tools/ropp_pp_spectra_tool.
#   Uses input netCDF file ../data/ropp_pp_test.nc.
#   Generates signal 'spectra' (ie amplitude as function of (time, freq),
#   and as function of (impact, bangle)).
#   IDL code plots the results, which can be compared to reference plots.
#   The output and reference fields are numerically compared with ropp_pp_compare.
#
# NOTES
#   1) If $ROPP_VERBOSE is set, the log files wil be 'cat'ed.
#   2) Requires IDL to generate plots (not essential).
#
# REFERENCES
#   See the ROPP User Guide (SAF/ROM/METO/UG/ROPP/003)
#
#****


#-------------------------------------------------------------------------------
# 0. Loop over tests
#-------------------------------------------------------------------------------

for i_test in 1 ; do

#-------------------------------------------------------------------------------
# 1. Define variables
#-------------------------------------------------------------------------------

  EXEC=../tools/ropp_pp_spectra_tool

  IFILE=../data/ropp_pp_test.nc

  case $i_test in

    1)  # default options
      TEST="t_pp_spectra_"${i_test}
      COMMENT="PP spectra; def opt"
      EXTRA_CMD=""

      OFILE1=ROanalysis_dt_L1.nc
      RFILE1=../data/ROanalysis_dt_L1_reference.nc
      OFILE2=ROanalysis_dt_L2.nc
      RFILE2=../data/ROanalysis_dt_L2_reference.nc
      OFILE3=ROanalysis_ep_L1.nc
      RFILE3=../data/ROanalysis_ep_L1_reference.nc
      OFILE4=ROanalysis_ep_L2.nc
      RFILE4=../data/ROanalysis_ep_L2_reference.nc

      PFILE1=ropp_pp_spectra_dt.eps
      RPFILE1=../data/ropp_pp_spectra_dt_reference.eps
      PFILE2=ropp_pp_spectra_dt.jpg
      RPFILE2=../data/ropp_pp_spectra_dt_reference.jpg
      PFILE3=ropp_pp_spectra_ep.eps
      RPFILE3=../data/ropp_pp_spectra_ep_reference.eps
      PFILE4=ropp_pp_spectra_ep.jpg
      RPFILE4=../data/ropp_pp_spectra_ep_reference.jpg
      ;;

  esac

  LOGFILE=${TEST}.log

  echo " "
  echo "Running $TEST ($COMMENT) ..."

  echo "*** Results log of $TEST ($COMMENT) ***" > $LOGFILE

  if [ "$(echo $(basename $(dirname $PWD)) |cut -c1-7)"/"$(basename $PWD)" != "ropp_pp/tests" ] ; then
    echo "*** Not in ropp_pp*/tests subdirectory - test NOT PERFORMED"  >> $LOGFILE
    exit 1
  fi


#-------------------------------------------------------------------------------
# 2. Run the ropp_pp executable
#-------------------------------------------------------------------------------

  if [ -f $EXEC ]; then

    echo "./$EXEC  ${EXTRA_CMD}  $IFILE  "  >> $LOGFILE
          ./$EXEC  ${EXTRA_CMD}  $IFILE     >> $LOGFILE

  else

    echo "*** $EXEC not found - test FAILED"  >> $LOGFILE
    exit 1

  fi


#-------------------------------------------------------------------------------
# 3. Compare the results
#-------------------------------------------------------------------------------

# 3.1 Check output file is produced
# ---------------------------------

  if [ ! -f $OFILE1 -a -f $OFILE2 -a -f $OFILE3 -a -f $OFILE4 ]; then
    echo "*** $OFILE1 or $OFILE2 or $OFILE3 or $OFILE4 was not created - test FAILED"  >> $LOGFILE
    exit 1
  fi

# 3.2 Run idl to plot the results, if possible
# --------------------------------------------

  if which idl >/dev/null 2>&1; then

    echo "*** Running IDL to plot results"  >> $LOGFILE

# First plot: amp(time, freq)
    idl 1>> $LOGFILE 2>&1 << EOF
    it_pp_spectra_dt, op_format="eps"
EOF
    if [ ! -f "$PFILE1" ] ; then
      echo "*** $PFILE1 was not created by IDL - cannot compare"  >> $LOGFILE
    else
      echo "*** Finished IDL"  >> $LOGFILE
      echo "*** $PFILE1 can be compared against $RPFILE1" >> $LOGFILE
    fi

    idl 1>> $LOGFILE 2>&1 << EOF
    it_pp_spectra_dt, op_format="jpg"
EOF
    if [ ! -f "$PFILE2" ] ; then
      echo "*** $PFILE2 was not created by IDL - cannot compare"  >> $LOGFILE
    else
      echo "*** Finished IDL"  >> $LOGFILE
      echo "*** $PFILE2 can be compared against $RPFILE2" >> $LOGFILE
    fi

# Second plot: amp(impact, bangle)
    idl 1>> $LOGFILE 2>&1 << EOF
    it_pp_spectra_ep, op_format="eps"
EOF
    if [ ! -f "$PFILE3" ] ; then
      echo "*** $PFILE3 was not created by IDL - cannot compare"  >> $LOGFILE
    else
      echo "*** Finished IDL"  >> $LOGFILE
      echo "*** $PFILE3 can be compared against $RPFILE3" >> $LOGFILE
    fi

    idl 1>> $LOGFILE 2>&1 << EOF
    it_pp_spectra_ep, op_format="jpg"
EOF
    if [ ! -f "$PFILE4" ] ; then
      echo "*** $PFILE4 was not created by IDL - cannot compare"  >> $LOGFILE
    else
      echo "*** Finished IDL"  >> $LOGFILE
      echo "*** $PFILE4 can be compared against $RPFILE4" >> $LOGFILE
    fi

  else

    echo "*** IDL not found in path: cannot plot results" >> $LOGFILE

  fi

# 3.3 Echo $LOGFILE if requested
# ------------------------------

  if [ -n ${ROPP_VERBOSE:-''} ] ; then
    cat $LOGFILE
  fi

# 3.4 Run ropp_pp_compare to compare results
# ------------------------------------------

  echo "Comparing L1 dt spectra ..."
  ./ropp_pp_compare $OFILE1 $RFILE1 ${TEST}a "${COMMENT} (L1 dt)"

  echo "Comparing L2 dt spectra ..."
  ./ropp_pp_compare $OFILE2 $RFILE2 ${TEST}b "${COMMENT} (L2 dt)"

  echo "Comparing L1 ep spectra ..."
  ./ropp_pp_compare $OFILE3 $RFILE3 ${TEST}c "${COMMENT} (L1 ep)"

  echo "Comparing L2 ep spectra ..."
  ./ropp_pp_compare $OFILE4 $RFILE4 ${TEST}d "${COMMENT} (L2 ep)"


#-------------------------------------------------------------------------------
# 4. Finish
#-------------------------------------------------------------------------------

  echo "... examine $LOGFILE for details"
  echo " "


done  # loop over options

exit 0
