#!/bin/sh
#  Script Name:  nos_ofs_archive.prod
#  Purpose:                                                                   #
#  This script is to make copy model files to corresonding directories after  #
#  successfully completing nowcast and forecast simulations by running:       #
#  exnos_ofs_nowcast_forecast.sh.sms                                          #
#                                                                             #
#  Child scripts :                                                            #
#                                                                             #
#  The utililty script used:                                                  #
#                                                                             #
# Remarks :                                                                   #
# - For non-fatal errors output is written to the *.log file.                 #
#                                                                             #
# Language:  C shell script
# Nowcast  
# Input:
#     nos.${RUN}.river.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.obc.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.met.nowcast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.init.nowcast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.hflux.nowcast.$yyyy$mm$dd.t${HH}z.nc
#     ${RUN}_roms_nowcast.in
#     nos.${RUN}.roms.tides.nc
# Output:
#     nos.${RUN}.stations.nowcast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.fields.nowcast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.fields.forecast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.rst.nowcast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.roms.nowcast.$yyyy$mm$dd.t${cyc}z.log
# Forecast  
# Input:
#     nos.${RUN}.river.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.obc.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.met.forecast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.rst.nowcast.$yyyy$mm$dd.t${cyc}z.nc
#     ${RUN}_roms_forecast.in
#     nos.${RUN}.roms.tides.nc
# Output:
#     nos.${RUN}.stations.forecast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.fields.forecast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.rst.forecast.$yyyy$mm$dd.t${cyc}z.nc
#     nos.${RUN}.roms.forecast.$yyyy$mm$dd.t${cyc}z.log
#
# Technical Contact:    Aijun Zhang         Org:  NOS/CO-OPS                  #
#                       Phone: 301-7132890 ext. 127                           #
#                       E-Mail: aijun.zhang@noaa.gov                          #
#                                                                             #
#                                                                             #
###############################################################################
# --------------------------------------------------------------------------- #
# 0.  Preparations
# 0.a Basic modes of operation

cd $DATA

seton='-xa'
setoff='-xa'
set $seton

set $setoff
echo ' '
echo '  		    ****************************************'
echo '  		    *** NOS OFS  ARCHIVE SCRIPT  ***        '
echo '  		    ****************************************'
echo ' '
echo "Starting nos_ofs_archive.sh at : `date`"
set $seton
RUNTYPE=$1
export MP_PGMMODEL=mpmd
export MP_CMDFILE=cmdfile
###############################################################################
if [ $RUNTYPE == "NOWCAST" -o $RUNTYPE == "nowcast" ]
then

# 1  Save nowcast output 
# 1.1 Nowcast log 
    if [ -f $COMOUT/${MODEL_LOG_NOWCAST} ]
    then
      echo "$COMOUT/${MODEL_LOG_NOWCAST}" existed
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${MODEL_LOG_NOWCAST}
      fi
    else  
      if [ -f ${MODEL_LOG_NOWCAST} ]
      then
        cp -p ${MODEL_LOG_NOWCAST} $COMOUT/.  
      else
        echo "${MODEL_LOG_NOWCAST} does not exist !! "
      fi		
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${MODEL_LOG_NOWCAST}
      fi
    fi

# 1.2 HIS nowcast 
    if [ -f $COMOUT/$HIS_OUT_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${HIS_OUT_NOWCAST}
      fi
    else
      if [ -f $DATA/$HIS_OUT_NOWCAST ]
      then
         cp -p $DATA/$HIS_OUT_NOWCAST $COMOUT/$HIS_OUT_NOWCAST 
         echo "   $HIS_OUT_NOWCAST saved "
      fi	 
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${HIS_OUT_NOWCAST}
      fi
    fi

# 1.3 STA nowcast
    if [ -f $COMOUT/$STA_OUT_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${STA_OUT_NOWCAST}
      fi
    else    
      if [ -f $DATA/$STA_OUT_NOWCAST ]
      then
        cp -p $DATA/$STA_OUT_NOWCAST $COMOUT/$STA_OUT_NOWCAST
        echo "   $STA_OUT_NOWCAST saved "
      fi	
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${STA_OUT_NOWCAST}
      fi
    fi
   
# 1.4 nowcast initial file
    if [ -f $COMOUT/$INI_FILE_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/$INI_FILE_NOWCAST
      fi
    else  
      if [ -f $DATA/$INI_FILE_NOWCAST ]
      then
        cp -p $DATA/$INI_FILE_NOWCAST $COMOUT/$INI_FILE_NOWCAST
      fi
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/$INI_FILE_NOWCAST
      fi
    fi
# 1.5 ROMS runtime control file for nowcast
    if [ -f $COMOUT/$RUNTIME_CTL_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${RUNTIME_CTL_NOWCAST}
      fi
    else  
      if [ -f $DATA/$RUNTIME_CTL_NOWCAST ]
      then
        cp -p $DATA/$RUNTIME_CTL_NOWCAST $COMOUT/$RUNTIME_CTL_NOWCAST
      fi
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/$RUNTIME_CTL_NOWCAST
      fi
    fi

# 1.6 Met forcing file for nowcast
    if [ -f $COMOUT/$MET_NETCDF_1_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_1_NOWCAST}
      fi
    else  
      if [ -f $DATA/$MET_NETCDF_1_NOWCAST ]
      then
        cp -p $MET_NETCDF_1_NOWCAST $COMOUT/$MET_NETCDF_1_NOWCAST
      fi
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_1_NOWCAST}
      fi
    fi
# 1.7 Met heat flux forcing file for nowcast
    if [ -f $COMOUT/$MET_NETCDF_2_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_2_NOWCAST}
      fi
    else  
      if [ -f $DATA/$MET_NETCDF_2_NOWCAST ]
      then
        cp -p $MET_NETCDF_2_NOWCAST $COMOUT/$MET_NETCDF_2_NOWCAST
        if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_2_NOWCAST}
        fi
      fi
    fi
# 1.8 Restart file from nowcast run used by forecast cycle
    if [ -f $COMOUT/$RST_OUT_NOWCAST ]
    then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${RST_OUT_NOWCAST}
      fi
    else  
      if [ -f $DATA/$RST_OUT_NOWCAST ]
      then
        cp $DATA/$RST_OUT_NOWCAST $COMOUT/$RST_OUT_NOWCAST
        echo "   $RST_OUT_NOWCAST saved "
        if [ $SENDDBN = YES ]; then
          $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${RST_OUT_NOWCAST}
        fi
      fi
    fi
    echo "ARCHIVE_NOWCAST DONE 100" >> $CORMSLOG
fi

# --------------------------------------------------------------------------- #
# 2  Save forecast output 
if [ $RUNTYPE == "FORECAST" -o $RUNTYPE == "forecast" ]
then

# 2.1 Forecast log 
    if [ -f $COMOUT/${MODEL_LOG_FORECAST} ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${MODEL_LOG_FORECAST}
      fi
    else  
      if [ -f ${MODEL_LOG_FORECAST} ]
      then
        cp ${MODEL_LOG_FORECAST} $COMOUT/${MODEL_LOG_FORECAST}  
        echo "  ${MODEL_LOG_FORECAST}  saved "
      fi	
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${MODEL_LOG_FORECAST}
      fi
    fi

  export pgm=$DATA/$HIS_OUT_FORECAST"_copy"
  . ./prep_step

# 2.2 HIS forecast 
    if [ -f $COMOUT/$HIS_OUT_FORECAST ]
    then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF_LRG $job $COMOUT/${HIS_OUT_FORECAST}
#        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${HIS_OUT_FORECAST}
      fi
    else  
      if [ -f $DATA/$HIS_OUT_FORECAST ]
      then
        cp $DATA/$HIS_OUT_FORECAST $COMOUT/$HIS_OUT_FORECAST 
        export err=$?; ./err_chk
        echo "   $HIS_OUT_FORECAST saved "
      fi	
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF_LRG $job $COMOUT/${HIS_OUT_FORECAST}
#SH        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${HIS_OUT_FORECAST}
      fi
    fi

# 2.3 STA forecast
    if [ -f $COMOUT/$STA_OUT_FORECAST ]
    then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${STA_OUT_FORECAST}
      fi
    else  
      if [ -f $DATA/$STA_OUT_FORECAST ]
      then
         cp $DATA/$STA_OUT_FORECAST $COMOUT/$STA_OUT_FORECAST
         export err=$?; ./err_chk
         echo "   $STA_OUT_FORECAST saved "
      fi	 
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${STA_OUT_FORECAST}
      fi
    fi
   
# 2.4 Model runtime control file for forecast
    if [ -f  $COMOUT/$RUNTIME_CTL_FORECAST ]
    then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job  $COMOUT/${RUNTIME_CTL_FORECAST}
      fi
    else
      if [ -f  $DATA/$RUNTIME_CTL_FORECAST ]
      then
        cp $DATA/$RUNTIME_CTL_FORECAST $COMOUT/$RUNTIME_CTL_FORECAST
      fi	
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job  $COMOUT/${RUNTIME_CTL_FORECAST}
      fi
    
    fi
 #   if [ $SENDDBN = YES ]; then
 #       $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job  $CORMSLOG
 #   fi
    echo "ARCHIVE_FORECAST DONE 100" >> $CORMSLOG

# 2.5 Met forcing file for forecast
    if [ -f $COMOUT/$MET_NETCDF_1_FORECAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_1_FORECAST}
      fi
    else  
      if [ -f $DATA/$MET_NETCDF_1_FORECAST ]
      then
        cp -p $MET_NETCDF_1_FORECAST $COMOUT/$MET_NETCDF_1_FORECAST
      fi
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_1_FORECAST}
      fi
    fi
# 2.6 Met heat flux forcing file for forecast
    if [ -f $COMOUT/$MET_NETCDF_2_FORECAST ]
    then
      if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_2_FORECAST}
      fi
    else  
      if [ -f $DATA/$MET_NETCDF_2_FORECAST ]
      then
        cp -p $MET_NETCDF_2_FORECAST $COMOUT/$MET_NETCDF_2_FORECAST
        if [ $SENDDBN = YES ]; then
         $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_NETCDF $job $COMOUT/${MET_NETCDF_2_FORECAST}
        fi
      fi
    fi

# 2.7. Save CORMSLOG file
    if [ -s $CORMSLOG ]; then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $CORMSLOG
      fi
    fi
# 2.8. Save jlogjile
    if [ -s $jlogfile ]; then
      cp -p $DATA/$jlogfile $COMOUT/$jlogfile
#      if [ $SENDDBN = YES ]; then
#        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $jlogfile
#      fi
#    else
#      if [ -s $DATA/$jlogfile ]; then
#        cp $DATA/$jlogfile $COMOUT/$jlogfile
#      fi	
#      if [ $SENDDBN = YES ]; then
#        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/$jlogfile
#      fi
    fi
    if [ -s $nosjlogfile ]; then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $nosjlogfile
      fi
    fi

# 2.9. Save status file
    if [ -s $COMOUT/${RUN}.status ]; then
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${RUN}.status
      fi
    else
      if [ -s $DATA/${RUN}.status ]; then
        cp $DATA/${RUN}.status $COMOUT/${RUN}.status
      fi	
      if [ $SENDDBN = YES ]; then
        $DBNROOT/bin/dbn_alert MODEL $DBN_ALERT_TYPE_TEXT $job $COMOUT/${RUN}.status
      fi
    fi
fi  

# --------------------------------------------------------------------------- #
# 4.  Ending output

  set $setoff
  echo ' '
  echo "Ending nos_ofs_archive.sh at : `date`"
  echo ' '
  echo '                     *** End of NOS OFS ARCHIVE SCRIPT ***'
  echo ' '