#!/bin/sh
# --------------------------------------------------------------------------- #
# w3_new : Touch and/or remove files to assure that make updates the          #
#          correct subroutines after the switches in switch have been         #
#          changed.                                                           #
#                                                                             #
# use  : w3_new keyword                                                       #
#                                                                             #
# used by : w3_make                                                           #
#                                                                             #
# keyword :  all     : redo entire compilation.                               #
#            ...     : see make_makefile.prog                                 #
#                                                                             #
# error codes :  1 : no environment file $ww3_env found.                      #
#                                                                             #
# programs used :                                                             #
#                                                                             #
#                                                      Hendrik L. Tolman      #
#                                                      November 2013          #
#                                                                             #
#    Copyright 2009-2013 National Weather Service (NWS),                      #
#       National Oceanic and Atmospheric Administration.  All rights          #
#       reserved.  WAVEWATCH III is a trademark of the NWS.                   #
#       No unauthorized use without permission.                               #
#                                                                             #
# --------------------------------------------------------------------------- #
# 1. Preparations                                                             #
# --------------------------------------------------------------------------- #
# 1.a Check and process input

  if test "$#" -lt '1'
  then
    keys='all'
  else
    keys="$*"
  fi

# 1.b Internal variables - - - - - - - - - - - - - - - - - - - - - - - - - - - 

# The following line must not be removed: it is a switch for local install
# so that all bin scripts point to the local wwatch3.env
  export ww3_env=$COAWST_WW3_DIR/wwatch3.env
# For manual install (without install_ww3_tar or install_ww3_svn) make sure to
# either use the generic ww3_env or to add your own ww3_env="${my_directory}"

  if [ ${WWATCH3_ENV} ]; then ww3_env="${WWATCH3_ENV}"; fi # alternate setup file

# 1.c Read data from the environment file  - - - - - - - - - - - - - - - - - -

  if [ ${WWATCH3_DIR} ]
  then
    main_dir=${WWATCH3_DIR}
  elif test -f $ww3_env
  then
    set `grep WWATCH3_DIR $ww3_env` ; shift
    main_dir="$*"
  else
    echo "*** Set-up file $ww3_env not found ***"
    exit 1
  fi

# --------------------------------------------------------------------------- #
# 2. Process keywords.                                                        #
# --------------------------------------------------------------------------- #

  for key in $keys
  do
    case $key in
     'all'    ) cd $main_dir     ; rm -f obj_*/*.o 
                                   rm -f mod_*/*.mod
                                   rm -f exe/ww3_*
                                   rm -f exe/gx_*
                                   rm -f exe/exec_type ;;
     'mach'   ) cd $main_dir/ftn ; touch w3servmd.ftn
                                   touch wmmdatmd.ftn
                                   touch wminitmd.ftn
                                   touch wmfinlmd.ftn
                                   touch ww3_shel.ftn
                                   touch ww3_sbs1.ftn ;; 
     'nco'    ) cd $main_dir/ftn ; touch w3bullmd.ftn 
                                   touch ww3_prep.ftn
                                   touch ww3_shel.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_prnc.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_prtide.ftn
                                   touch ww3_grib.ftn ;; 
     'grib'   ) cd $main_dir/ftn ; touch ww3_grib.ftn ;; 
     'mcp'    ) cd $main_dir/ftn ; touch w3wavemd.ftn
                                   touch ww3_shel.ftn 
                                   touch ww3_grid.ftn ;;
     'c90'    ) cd $main_dir/ftn ; touch w3iogomd.ftn
                                   touch w3pro1md.ftn
                                   touch w3pro2md.ftn
                                   touch w3pro3md.ftn
                                   touch w3profsmd.ftn
                                   touch w3uno2md.ftn
                                   touch w3uqckmd.ftn ;;
     'nec'    ) cd $main_dir/ftn ; touch w3initmd.ftn
                                   touch w3iogomd.ftn
                                   touch w3pro1md.ftn
                                   touch w3pro2md.ftn
                                   touch w3pro3md.ftn
                                   touch w3uqckmd.ftn ;;
     'lrecl'  ) cd $main_dir/ftn ; touch w3iorsmd.ftn
                                   touch ww3_prnc.ftn ;;
     'netcdf' ) cd $main_dir/ftn ; touch ww3_ounf.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_bounc.ftn
                                   touch ww3_systrk.ftn
                                   touch ww3_prnc.ftn
                                   touch ww3_trnc.ftn ;;
     'scrip'  ) cd $main_dir/ftn ; touch wmgridmd.ftn 
                                   touch wmscrpmd.ftn
                                   touch ww3_grid.ftn ;;
     'scripnc') cd $main_dir/ftn ; touch wmgridmd.ftn
                cd $main_dir/ftn/SCRIP ; touch scrip_interface.ftn ;;
     'trknc' ) cd $main_dir/ftn ; touch ww3_systrk.ftn ;;
     'shared' ) ;;
     'mpp'    );;
     'mpiexp' ) cd $main_dir/ftn ; touch wmgridmd.ftn ;;
     'thread' ) cd $main_dir/ftn ; touch w3wavemd.ftn
                                   touch w3pro3md.ftn
                                   touch w3updtmd.ftn
                                   touch w3iogomd.ftn ;;
     'GSE'    ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3adatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3wavemd.ftn
                                   touch w3triamd.ftn
                                   touch wmgridmd.ftn
                                   touch ww3_gspl.ftn
                                   touch ww3_grid.ftn ;; 
     'prop'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3adatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3wavemd.ftn
                                   touch w3pro2md.ftn
                                   touch w3pro3md.ftn
                                   touch wmgridmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_gspl.ftn ;; 
     'stress' ) cd $main_dir/ftn ; touch w3srcemd.ftn
                                   touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_grid.ftn
                                   touch gx_outp.ftn ;;
     'dstress') cd $main_dir/ftn ; touch w3srcemd.ftn
                                   touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3fld1md.ftn
                                   touch w3fld2md.ftn
                                   touch ww3_grid.ftn ;;
     's_ln'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3iorsmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
     'source' ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3flx1md.ftn
                                   touch w3flx2md.ftn
                                   touch w3flx3md.ftn
                                   touch w3updtmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3iogomd.ftn
                                   touch w3updtmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_ounf.ftn
                                   touch gx_outp.ftn ;;
     'stab'   ) cd $main_dir/ftn ; touch w3updtmd.ftn
                                   touch w3src3md.ftn
                                   touch w3src4md.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
     's_nl'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3adatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_prep.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_prnc.ftn
                                   touch ww3_prtide.ftn
                                   touch gx_outp.ftn ;;
     'snls'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch gx_outp.ftn ;;
     's_bot'  ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3odatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3iogomd.ftn
                                   touch w3wavemd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_gint.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_outf.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_ounf.ftn
                                   touch ww3_shel.ftn
                                   touch gx_outp.ftn ;;
     's_db'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
     'miche'  ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch ww3_grid.ftn ;;
     's_tr'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
     's_bs'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
     's_ice'  ) cd $main_dir/ftn ; touch w3iogrmd.ftn
                                   touch w3gdatmd.ftn
                                   touch w3wavemd.ftn
                                   touch w3srcemd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_shel.ftn
                                   touch gx_outp.ftn ;;
     's_is'   ) cd $main_dir/ftn ; touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3gdatmd.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
'reflection'  )cd $main_dir/ftn ;  touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3profsmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3triamd.ftn
                                   touch w3updtmd.ftn
                                   touch w3wavemd.ftn
                                   touch ww3_grid.ftn ;; 
     's_xx'   ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3srcemd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_outp.ftn
                                   touch ww3_ounp.ftn
                                   touch gx_outp.ftn ;;
     'wind'   ) cd $main_dir/ftn ; touch w3updtmd.ftn
                                   touch ww3_prnc.ftn
                                   touch ww3_prep.ftn ;; 
     'windx'  ) cd $main_dir/ftn ; touch wmupdtmd.ftn ;;
     'rwind'  ) cd $main_dir/ftn ; touch w3updtmd.ftn
                                   touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn ;;
     'wcor'  ) cd $main_dir/ftn  ; touch w3updtmd.ftn
                                   touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch ww3_grid.ftn ;;
     'curr'   ) cd $main_dir/ftn ; touch w3updtmd.ftn
                                   touch ww3_prnc.ftn
                                   touch ww3_prep.ftn ;; 
     'currx'  ) cd $main_dir/ftn ; touch wmupdtmd.ftn ;;
     'mgwind' ) cd $main_dir/ftn ; touch w3updtmd.ftn
                                   touch wminitmd.ftn
                                   touch ww3_shel.ftn ;; 
     'mgprop' ) cd $main_dir/ftn ; touch w3pro1md.ftn
                                   touch w3pro2md.ftn
                                   touch w3pro3md.ftn
                                   touch w3profsmd.ftn
                                   touch w3psmcmd.ftn
                                   touch wminitmd.ftn
                                   touch ww3_shel.ftn ;; 
     'mggse'  ) cd $main_dir/ftn ; touch w3pro3md.ftn
                                   touch ww3_shel.ftn ;;
     'subsec' ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3wavemd.ftn
                                   touch ww3_grid.ftn ;;
     'tdyn'   ) cd $main_dir/ftn ; touch w3pro2md.ftn 
                                   touch w3psmcmd.ftn ;;
     'dss0'   ) cd $main_dir/ftn ; touch w3pro2md.ftn
                                   touch w3psmcmd.ftn ;;
     'pdif'   ) cd $main_dir/ftn ; touch w3pro2md.ftn 
                                   touch w3psmcmd.ftn ;;
     'tide'   ) cd $main_dir/ftn ; touch w3updtmd.ftn 
                                   touch w3idatmd.ftn 
                                   touch w3fldsmd.ftn 
                                   touch ww3_prnc.ftn 
                                   touch ww3_shel.ftn ;;
     'refrx'  ) cd $main_dir/ftn ; touch w3wavemd.ftn
                                   touch w3pro1md.ftn
                                   touch w3pro2md.ftn
                                   touch w3pro3md.ftn ;;
     'ig'     ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3iogomd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3ref1md.ftn
                                   touch w3src4md.ftn
                                   touch w3srcemd.ftn
                                   touch ww3_grid.ftn
                                   touch ww3_ounp.ftn
                                   touch ww3_outp.ftn ;;
     'rotag'  ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3iobcmd.ftn
                                   touch w3iogomd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3iopomd.ftn
                                   touch w3updtmd.ftn
                                   touch ww3_grid.ftn ;;
     'arctic' ) cd $main_dir/ftn ; touch w3gdatmd.ftn
                                   touch w3iogrmd.ftn
                                   touch w3psmcmd.ftn
                                   touch w3updtmd.ftn
                                   touch ww3_grid.ftn ;;
     'nnt'    ) cd $main_dir/ftn ; touch w3srcemd.ftn ;;
     'mprf'   ) cd $main_dir/ftn ; touch wmmdatmd.ftn
                                   touch wminitmd.ftn
                                   touch wmwavemd.ftn
                                   touch wmfinlmd.ftn ;;
      'coupl' ) cd $main_dir/ftn ; touch w3oacpmd.ftn ;;
      'coawst' ) cd $main_dir/ftn ; touch cwstwvcp.ftn ;;
      'coawst' ) cd $main_dir/ftn ; touch mctww3pa.ftn ;;
      'agcm'  ) cd $main_dir/ftn ; touch w3agcmmd.ftn
                                   touch w3wavemd.ftn ;;
      'ogcm'  ) cd $main_dir/ftn ; touch w3ogcmmd.ftn
                                   touch w3wavemd.ftn ;;

       *      ) echo "w3_new: keyword [$key] not recognized" ;;
    esac
  done
  
# End of w3_new ------------------------------------------------------------- #
