#!/bin/sh
# Script Name:   nos_ofs_launch.sh                                           
#
# Purpose:
#      This script sets up OFS configuration (i.e. path names, file names,
#      restart time, forecast time, and other parameters, etc.). 
#      A main NOS OFS control file "${NET}.OFS.ctl" (OFS=cbofs for CBOFS) is used.
#      The hot_restart time of current cycle run
#      is determined by the most recently available hot restart file.
#      The following tasks are conducted in this script:
#  1. OFS configurations
#  2. copy static files into work directory. 
#  3. define all input and output file names.
#
# Contact: Aijun Zhang
#       Email: aijun.zhang@noaa.gov
#       Phone: (301)713-2890 x 127
#
# USAGE:  
#     OFS:        the name of NOS OFS, e.g. cbofs, dbofs, or tbofs
#     TIME_START: time of nowcast end and time of forecast start. If this argument
#                 exists, real_time will be specified as "FALSE".    
# Scripts Parameters: 
#
# Modules and Files referenced:
#   /nwprod/util: setup.sh
#                 setpdy.sh
#    FIXnos:   ${NET}.cbofs.ctl
        
#Condition codes:
#  this program exits if any previous cycle run for an OFS (e.g. cbofs) is 
#  still running. This is checked by running nos_ofs_control.sh. It is important
#  to run NOS OFS under developmental mode since OFS run jobs submitted through llsubmit
#  is sometimes are delayed. This might not be an issue for operational run.
#
# Remarks   - Can be run interactively, or from LLsubmit                      
#           - use NCEP PDY utility.                                           
# 
# Modification History:  
#   (1). Degui Cao  01/11/2010
#        Purpose: Implementation in the NCO OFS system
#
#### END of Unix Script DOC BLOCK--------------------------------------------------- 
seton='-xa'
setoff='-xa'
set $seton

 if [ $# -lt 2 ] 
 then 
     echo " ***Error: You must supply at least two arguments for model run " 
     echo "Example: exnos_ofs_launch.sh.sms cbofs nowcast"
 
     msg="ABNORMAL EXIT: supply at least two arguments for model run "
     postmsg "$jlogfile" "$msg"
     postmsg "$nosjlogfile" "$msg"
 
     exit 1  
 fi

 export OFS=$1
 export runtype=$2

echo 'The script nos_ofs_launch.sh has started at UTC' `date `
echo 'The script nos_ofs_launch.sh has started at UTC' `date ` >> $CORMSLOG 
echo 'The script nos_ofs_launch.sh has started at UTC' `date ` >> $jlogfile 
echo 'The script nos_ofs_launch.sh has started at UTC' `date ` >> $nosjlogfile 

#################################################################
# Run setup to initialize working directory and utility scripts
# Run setpdy and initialize PDY variables
#################################################################

# set from system PDY variable for operations
export time_nowcastend=$PDY${cyc}

#------------------------------------------------'
#  COPY Files into Work Directory
#------------------------------------------------' 

export pgm=${FIXnos}/$GRIDFILE"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$GRIDFILE ]
then
  echo '${FIXnos}/$GRIDFILE is not found'
  echo 'please provide model grid file of ${FIXnos}/$GRIDFILE'
  echo 'please provide model grid file of ${FIXnos}/$GRIDFILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$GRIDFILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 1
else
  cp -p ${FIXnos}/$GRIDFILE $DATA/.
  export err=$?; ./err_chk
  
fi

export pgm=${FIXnos}/$OBC_CTL_FILE"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$OBC_CTL_FILE ]
then
  echo '${FIXnos}/$OBC_CTL_FILE is not found'
  echo 'please provide OBC control file of ${FIXnos}/$OBC_CTL_FILE'
  echo 'please provide OBC control file of ${FIXnos}/$OBC_CTL_FILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$OBC_CTL_FILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 1
else
  cp -p ${FIXnos}/$OBC_CTL_FILE $DATA/.
  export err=$?; ./err_chk
fi

export pgm=${FIXnos}/$VARINFOFILE_ROMS"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$VARINFOFILE_ROMS ]
then
  echo '${FIXnos}/$VARINFOFILE_ROMS is not found'
  echo 'please provide file of ${FIXnos}/$VARINFOFILE_ROMS'
  echo 'please provide file of ${FIXnos}/$VARINFOFILE_ROMS' >> $CORMSLOG
    msg="ABNORMAL EXIT: ${FIXnos}/$VARINFOFILE_ROMS does not exist, critical failure!"
    ./postmsg "$jlogfile" "$msg"
    ./postmsg "$nosjlogfile" "$msg"
    exit 2
else
  cp -p ${FIXnos}/$VARINFOFILE_ROMS $DATA/.
  export err=$?; ./err_chk
fi

export pgm=${FIXnos}/$HC_FILE_OBC"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$HC_FILE_OBC ]
then
  echo '${FIXnos}/$HC_FILE_OBC is not found'
  echo 'please provide file of ${FIXnos}/$HC_FILE_OBC'
  echo 'please provide file of ${FIXnos}/$HC_FILE_OBC' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$HC_FILE_OBC does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 3
else
  cp -p ${FIXnos}/$HC_FILE_OBC $DATA/.
  export err=$?; ./err_chk
fi

export pgm=${FIXnos}/$RIVER_CTL_FILE"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$RIVER_CTL_FILE ]
then
  echo '${FIXnos}/$RIVER_CTL_FILE is not found'
  echo 'please provide River control file of ${FIXnos}/$RIVER_CTL_FILE'
  echo 'please provide River control file of ${FIXnos}/$RIVER_CTL_FILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$RIVER_CTL_FILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 4
else
  cp -p ${FIXnos}/$RIVER_CTL_FILE $DATA/.
  export err=$?; ./err_chk
fi

export pgm=${FIXnos}/$STA_CTL_ROMS"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$STA_CTL_ROMS ]
then
  echo '${FIXnos}/$STA_CTL_ROMS is not found'
  echo 'please provide ROMS station control file of ${FIXnos}/$STA_CTL_ROMS'
  echo 'please provide ROMS station control file of ${FIXnos}/$STA_CTL_ROMS' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$STA_CTL_ROMS does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 5
else
  cp -p ${FIXnos}/$STA_CTL_ROMS $DATA/.
  export err=$?; ./err_chk
fi

export pgm=${FIXnos}/$ROMS_CTL"_copy"
. ./prep_step

if [ ! -s ${FIXnos}/$ROMS_CTL ]
then
  echo '${FIXnos}/$ROMS_CTL is not found'
  echo 'please provide ROMS control file of ${FIXnos}/$ROMS_CTL'
  echo 'please provide ROMS control file of ${FIXnos}/$ROMS_CTL' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$ROMS_CTL does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 4
else
  cp -p ${FIXnos}/$ROMS_CTL $DATA/. 
  export err=$?; ./err_chk
fi
export HH=$cyc
export PDY1=$PDY

##  For prep Only -----------------------------------'
if [ "$runtype" = "prep" ] || [ "$runtype" = "PREP" ]
then 

# copy all shared static files into DATA/WORK Dirctory

 if [ ! -s ${FIXnos}/$OBC_CLIM_FILE ]
 then
  echo '${FIXnos}/$OBC_CLIM_FILE is not found'
  echo 'please provide OBC control file of ${FIXnos}/$OBC_CLIM_FILE'
  echo 'please provide OBC control file of ${FIXnos}/$OBC_CLIM_FILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$OBC_CLIM_FILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 1
 else
  cp -p ${FIXnos}/$OBC_CLIM_FILE $DATA/.
  export err=$?; ./err_chk
 fi
 if [ ! -s ${FIXnos}/nos.ofs.HC_NWLON.nc ]
 then
  echo '${FIXnos}/nos.ofs.HC_NWLON.nc is not found'
  echo 'please provide OBC control file of ${FIXnos}/nos.ofs.HC_NWLON.nc'
  echo 'please provide OBC control file of ${FIXnos}/nos.ofs.HC_NWLON.nc' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/nos.ofs.HC_NWLON.nc does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 1
 else
  cp -p ${FIXnos}/nos.ofs.HC_NWLON.nc $DATA/.
  export err=$?; ./err_chk
 fi
 if [ ! -s ${FIXnos}/$RIVER_CLIM_FILE ]
 then
  echo '${FIXnos}/$RIVER_CLIM_FILE is not found'
  echo 'please provide OBC control file of ${FIXnos}/$RIVER_CLIM_FILE'
  echo 'please provide OBC control file of ${FIXnos}/$RIVER_CLIM_FILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$RIVER_CLIM_FILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 1
 else
  cp -p ${FIXnos}/$RIVER_CLIM_FILE $DATA/.
  export err=$?; ./err_chk
 fi
 if [ ! -s ${FIXnos}/$OBC_CTL_FILE ]
 then
  echo '${FIXnos}/$OBC_CTL_FILE is not found'
  echo 'please provide OBC control file of ${FIXnos}/$OBC_CTL_FILE'
  echo 'please provide OBC control file of ${FIXnos}/$OBC_CTL_FILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$OBC_CTL_FILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 1
 else
  cp -p ${FIXnos}/$OBC_CTL_FILE $DATA/.
  export err=$?; ./err_chk
 fi

 cp -p ${FIXnos}/nos.${OFS}.obc.clim.ts.* $DATA/.

 if [ ${OCEAN_MODEL} == "FVCOM" -o ${OCEAN_MODEL} == "fvcom" ]
 then 
  if [ ! -s ${FIXnos}/$OBC_FILE_TEMPLATE ]; then
    echo '${FIXnos}/$OBC_FILE_TEMPLATE is not found'
    echo 'please provide OBC control file of ${FIXnos}/$OBC_FILE_TEMPLATE'
    echo 'please provide OBC control file of ${FIXnos}/$OBC_FILE_TEMPLATE' >> $CORMSLOG
    msg="ABNORMAL EXIT: ${FIXnos}/$OBC_FILE_TEMPLATE does not exist, critical failure!"
    ./postmsg "$jlogfile" "$msg"
    ./postmsg "$nosjlogfile" "$msg"
    exit 1
  else
    cp -p ${FIXnos}/$OBC_FILE_TEMPLATE $DATA/.
    export err=$?; ./err_chk
  fi

 fi
 if [ ! -s ${FIXnos}/$RIVER_CTL_FILE ]
 then
  echo '${FIXnos}/$RIVER_CTL_FILE is not found'
  echo 'please provide River control file of ${FIXnos}/$RIVER_CTL_FILE'
  echo 'please provide River control file of ${FIXnos}/$RIVER_CTL_FILE' >> $CORMSLOG
  msg="ABNORMAL EXIT: ${FIXnos}/$RIVER_CTL_FILE does not exist, critical failure!"
  ./postmsg "$jlogfile" "$msg"
  ./postmsg "$nosjlogfile" "$msg"
  exit 4
 else
  cp -p ${FIXnos}/$RIVER_CTL_FILE $DATA/.
  export err=$?; ./err_chk
 fi
echo '------------------------------------------------'
echo '   Variables read from main control file        '
echo '------------------------------------------------'
echo OFS= ${RUN}
echo GRIDFILE=$GRIDFILE
echo DBASE_MET_NOW= $DBASE_MET_NOW
echo DBASE_MET_FOR= $DBASE_MET_FOR
echo DBASE_WL_NOW= $DBASE_WL_NOW
echo DBASE_WL_FOR= $DBASE_WL_FOR
echo DBASE_TS_NOW= $DBASE_TS_NOW
echo DBASE_TS_FOR= $DBASE_TS_FOR
echo OCEAN_MODEL=$OCEAN_MODEL
echo LEN_FORECAST=$LEN_FORECAST
echo IGRD_MET=$IGRD_MET
echo IGRD_OBC=$IGRD_OBC
echo BASE_DATE=$BASE_DATE
echo TIME_START=$TIME_START
echo minlon=$MINLON
echo minlat=$MINLAT
echo maxlon=$MAXLON
echo maxlat=$MAXLAT
echo IM=$IM
echo JM=$JM
echo DELT_ROMS=$DELT_ROMS
echo NDTFAST=$NDTFAST
echo KBm=$KBm
echo THETA_S=$THETA_S
echo THETA_B=$THETA_B
echo TCLINE=$TCLINE
echo CREATE_TIDEFORCING=$CREATE_TIDEFORCING
echo HC_FILE_OBC=$HC_FILE_OBC
echo HC_FILE_OFS=$HC_FILE_OFS
echo RIVER_CTL_FILE=$RIVER_CTL_FILE
echo OBC_CTL_FILE=$OBC_CTL_FILE
echo '------------------------------------------------'


##--------------------------------------
# Determine Job Output Name on System
##-------------------------------------- 

if [ $CREATE_TIDEFORCING -lt 0 ]
then
  if [ -s ${FIXnos}/$HC_FILE_OFS ]
  then
      cp -p ${FIXnos}/$HC_FILE_OFS  $HC_FILE_OFS
  else
     CREATE_TIDEFORCING=1
  fi
fi
export CREATE_TIDEFORCING

## -------------------------------------------------------------#
# CHECK RESTART FILE AND COMPUTE HOT RESTART TIME FROM 
# RESTART/INITIAL FILE OF PREVIOUS NOWCAST RUN
# COMPUTE TIME FOR NOWCAST AND FORECAST RUN TIME FOR MODEL RUNS
##--------------------------------------------------------------#

echo "check availability of model restart file from previous run" >>  $jlogfile
echo "check availability of model restart file from previous run" >>  $nosjlogfile
echo "check availability of model restart file from previous run" >> $CORMSLOG

COLD_START="F"
CURRENTTIME=`$NDATE -1 $time_nowcastend `

YYYY=`echo $CURRENTTIME | cut -c1-4 `
  MM=`echo $CURRENTTIME |cut -c5-6 `
  DD=`echo $CURRENTTIME |cut -c7-8 `
  HH=`echo $CURRENTTIME |cut -c9-10 `
RST_FILE=$COMOUT00/${RUN}.$YYYY$MM$DD/${NET}.${RUN}.rst.nowcast.$YYYY$MM$DD.t${HH}z.nc
while [ ! -s $RST_FILE ]
do
  CURRENTTIME=`$NDATE -1 $CURRENTTIME `

  if [ $CURRENTTIME -le ` $NDATE -72 $time_nowcastend ` ] # allow to search 3 days backward
  then
     COLD_START="T"
     break
  fi
  YYYY=`echo $CURRENTTIME | cut -c1-4 `
  MM=`echo $CURRENTTIME |cut -c5-6 `
  DD=`echo $CURRENTTIME |cut -c7-8 `
  HH=`echo $CURRENTTIME |cut -c9-10 `
  RST_FILE=$COMOUT00/${RUN}.$YYYY$MM$DD/${NET}.${RUN}.rst.nowcast.$YYYY$MM$DD.t${HH}z.nc
done

if [ $COLD_START == "T" ]
then
     echo 'no valid hot restart file for the given time period' >> $CORMSLOG
     echo 'no valid hot restart file for the given time period' >> $jlogfile
     echo 'no valid hot restart file for the given time period' >> $nosjlogfile
     echo 'nowcast from cold start using static initial file' >> $CORMSLOG
     echo 'nowcast from cold start using static initial file' >> $jlogfile
     echo 'nowcast from cold start using static initial file' >> $nosjlogfile
     INI_FILE=${FIXnos}/${NET}.${RUN}.init.nc
     
elif [ $COLD_START == "F" ]
then
     echo 'found valid hot restart file at time: ' $YYYY $MM $DD ${HH} >> $CORMSLOG
     echo 'found valid hot restart file at time: ' $YYYY $MM $DD ${HH} >> $jlogfile
     echo 'found valid hot restart file at time: ' $YYYY $MM $DD ${HH} >> $nosjlogfile
     echo 'nowcast run from hot start '  >> $CORMSLOG
     echo 'nowcast from hot restart file: ' ${NET}.${RUN}.rst.nowcast.$YYYY$MM$DD.t${HH}z.nc >> $CORMSLOG
     echo 'nowcast from hot restart file: ' ${NET}.${RUN}.rst.nowcast.$YYYY$MM$DD.t${HH}z.nc >> $jlogfile
     echo 'nowcast from hot restart file: ' ${NET}.${RUN}.rst.nowcast.$YYYY$MM$DD.t${HH}z.nc >> $nosjlogfile
     INI_FILE=$RST_FILE
fi
YYYY=`echo $time_nowcastend | cut -c1-4 `
  MM=`echo $time_nowcastend | cut -c5-6 `
  DD=`echo $time_nowcastend | cut -c7-8 `
  HH=`echo $time_nowcastend | cut -c9-10 `
export INI_FILE_ROMS=${NET}.${RUN}.init.nowcast.$YYYY$MM$DD.t${cyc}z.nc
cp -p $INI_FILE $DATA/$INI_FILE_ROMS
if [ -s $INI_FILE_ROMS ]
then
  echo ${RUN} > Fortran_read_restart.ctl
  echo $OCEAN_MODEL  >> Fortran_read_restart.ctl
  echo $COLD_START  >> Fortran_read_restart.ctl
  echo $GRIDFILE  >> Fortran_read_restart.ctl
  echo ${INI_FILE_ROMS}  >> Fortran_read_restart.ctl    
  echo ${RUN}_time_initial.dat  >> Fortran_read_restart.ctl
  echo $time_nowcastend >> Fortran_read_restart.ctl
  echo $BASE_DATE >> Fortran_read_restart.ctl

export pgm=nos_ofs_read_restart
. ./prep_step

  $EXECnos/nos_ofs_read_restart < Fortran_read_restart.ctl > Fortran_read_restart.log
  export err=$?
  if [ $err -ne 0 ]
  then
    echo "Execution of $pgm did not complete normally, critical failure!" >> $CORMSLOG
    echo "Execution of $pgm did not complete normally, critical failure!"
    msg=" Execution of $pgm did not complete normally, critical failure!"
    ./postmsg "$jlogfile" "$msg"
    ./postmsg "$nosjlogfile" "$msg"
    err_chk
  else
    echo "Execution of $pgm completed normally" >> $CORMSLOG
    echo "Execution of $pgm completed normally"
    msg=" Execution of $pgm completed normally"
    ./postmsg "$jlogfile" "$msg"
    ./postmsg "$nosjlogfile" "$msg"
  fi

  read time_hotstart NTIMES DAY0 TIDE_START < ${RUN}_time_initial.dat

else
  echo 'Model Initial file is not found'
  echo 'please provide model initial file'
  echo 'proper restart/initial file does not exist !!!' >> $CORMSLOG
    msg="ABNORMAL EXIT:proper restart/initial file does not exist, critical failure!"
    ./postmsg "$jlogfile" "$msg"
    ./postmsg "$nosjlogfile" "$msg"
  exit 2 
fi  

if [ $time_hotstart -ge $time_nowcastend ]
then
   echo 'time_hotstart is equal to or greater than time_nowcastend '
   echo 'read wroing restart file'
   echo 'check hot_restart file !!!'
   echo 'time_hotstart is equal to or greater than time_nowcastend ' >> $CORMSLOG
    msg="ABNORMAL EXIT:time_hotstart is equal to or greater than time_nowcastend, critical failure!"
    ./postmsg "$jlogfile" "$msg"
    ./postmsg "$nosjlogfile" "$msg"
   exit 3 
fi   
if grep "COMPLETED SUCCESSFULLY" Fortran_read_restart.log /dev/null 2>&1
then
  echo "RESTART_TIME DONE 100" >> $CORMSLOG
else
  echo "RESTART_TIME  DONE 0" >> $CORMSLOG
fi
if [ $NTIMES -le 0 ]
then
   NRREC=0
else
   NRREC=-1
fi
export DSTART=$DAY0
export time_hotstart NTIMES NRREC
export TIDE_START

echo "time_hotstart= $time_hotstart" >> $CORMSLOG
echo "DSTART= $DSTART" >> $CORMSLOG
echo "NTIMES= $NTIMES" >> $CORMSLOG
echo "TIDE_START= $TIDE_START " >> $CORMSLOG
#compute forcastend time, sets the number of hours for reformatting
#number hours for forecast run

export time_forecastend=`$NDATE $LEN_FORECAST $time_nowcastend`

# --------------------------------------------------------------------------------------
#  Define file names used for model run
# --------------------------------------------------------------------------------------
YYYY=`echo $time_nowcastend | cut -c1-4 `
  MM=`echo $time_nowcastend |cut -c5-6 `
  DD=`echo $time_nowcastend |cut -c7-8 `
  HH=`echo $time_nowcastend |cut -c9-10 `

export NSTA=`expr $NSTA / ${DELT_ROMS}`
export NRST=`expr $NRST / ${DELT_ROMS}`
export NHIS=`expr $NHIS / ${DELT_ROMS}`
export NFLT=`expr $NFLT / ${DELT_ROMS}`
export NAVG=`expr $NAVG / ${DELT_ROMS}`
export NH_NOWCAST=`$NHOUR $time_nowcastend $time_hotstart`
export NSTEP_NOWCAST=`expr $NH_NOWCAST \* 3600 / ${DELT_ROMS}`
export NTIMES_NOWCAST=$NSTEP_NOWCAST
export NH_FORECAST=`$NHOUR $time_forecastend $time_nowcastend `
export NSTEP_FORECAST=`expr $NH_FORECAST \* 3600 / ${DELT_ROMS}`
export NTIMES_FORECAST=`expr $NTIMES_NOWCAST + $NSTEP_FORECAST` 

export PDY1=$YYYY$MM$DD

fi

## -- End of prep Only --------------------------------'

export OBC_FORCING_FILE=${NET}.${RUN}.obc.$PDY1.t${HH}z.nc
export RIVER_FORCING_FILE=${NET}.${RUN}.river.$PDY1.t${HH}z.nc
###export INI_FILE_ROMS_NOWCAST=$INI_FILE_ROMS
export INI_FILE_ROMS_NOWCAST=${NET}.${RUN}.init.nowcast.$PDY1.t${HH}z.nc

export HIS_OUT_ROMS_NOWCAST=${NET}.${RUN}.fields.nowcast.$PDY1.t${HH}z.nc
export STA_OUT_ROMS_NOWCAST=${NET}.${RUN}.stations.nowcast.$PDY1.t${HH}z.nc
export RST_OUT_ROMS_NOWCAST=${NET}.${RUN}.rst.nowcast.$PDY1.t${HH}z.nc
export MET_NETCDF_1_NOWCAST=${NET}.${RUN}.met.nowcast.$PDY1.t${HH}z.nc
export MET_NETCDF_2_NOWCAST=${NET}.${RUN}.hflux.nowcast.$PDY1.t${HH}z.nc

export INI_FILE_ROMS_FORECAST=$RST_OUT_ROMS_NOWCAST
export HIS_OUT_ROMS_FORECAST=${NET}.${RUN}.fields.forecast.$PDY1.t${HH}z.nc
export STA_OUT_ROMS_FORECAST=${NET}.${RUN}.stations.forecast.$PDY1.t${HH}z.nc
export RST_OUT_ROMS_FORECAST=${NET}.${RUN}.rst.forecast.$PDY1.t${HH}z.nc
export MET_NETCDF_1_FORECAST=${NET}.${RUN}.met.forecast.$PDY1.t${HH}z.nc
export MET_NETCDF_2_FORECAST=${NET}.${RUN}.hflux.forecast.$PDY1.t${HH}z.nc
export ROMS_OUT_NOWCAST=${NET}.${RUN}.roms.nowcast.$PDY1.t${HH}z.log
export ROMS_OUT_FORECAST=${NET}.${RUN}.roms.forecast.$PDY1.t${HH}z.log
export ROMS_IN_NOWCAST=${NET}.${RUN}.roms.nowcast.$PDY1.t${HH}z.in
export ROMS_IN_FORECAST=${NET}.${RUN}.roms.forecast.$PDY1.t${HH}z.in

if [ $NH_NOWCAST -lt 1 ]
then
   echo "${RUN} NOWCAST RUN OF CYCLE t${HH}z ON $PDY1 FAILED 00"  >> $CORMSLOG 
   echo "NOWCAST CYCLE IS: " $time_nowcastend" ABNORMAL EXIT" >> $CORMSLOG 
   echo "Hours of nowcast simulation is shorter than one hour" >> $CORMSLOG
   echo "Hours of nowcast simulation is shorter than one hour"
   echo "current cycle nowcast/forecast runs stop"
   msg="ABNORMAL EXIT:Hours of nowcast simulation is shorter than one hour, critical failure!!"
   ./postmsg "$jlogfile" "$msg"
   ./postmsg "$nosjlogfile" "$msg"
   err=1; export err; err_chk
fi
echo "LAUNCH ${RUN} NOWCAST/FORECAST SIMULATIONS ON "$HOST >> $CORMSLOG 
echo "NOWCAST/FORECAST CYCLE IS: " $time_nowcastend >> $CORMSLOG 

echo "Variable and parameter setup has been completed"   >>  $jlogfile
echo "Variable and parameter setup has been completed"   >>  $nosjlogfile
