#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         exhiresw_prelim.sh.sms
# Script description:  Runs WRF Preprocessing System (WPS) and REAL code for the WRF-NMM and 
#                      WRF-ARW model
#
# Author:        Eric Rogers       Org: NP22         Date: 2004-07-02
#
# Abstract: The scripts gets all the input files needed for the WRF-NMM and WRF-ARW hiresw run
#           and runs the WRF WPS and REAL codes which interpolate the operational Nam initial conditions
#           to the nested WRF-NMM domain and create lateral boundary conditions
#
# Script history log:
# 2003-11-01  Matt Pyle - Original script for parallel
# 2004-07-02  Eric Rogers - Preliminary modifications for production.
# 2004-10-01  Eric Rogers - Modified to run special real executable for Alaska NMM
# 2007-04-09  Matthew Pyle - Modified to run WPS rather than wrfsi
# 2009-09-24  Shawna Cokley - Streamlines way script obtains date information -
#                             pulls from $PDY rather than copying a file to the working directory

set -x

LENGTH=48

#########################################################
# RUN REAL PROGRAM TO GENERATE WRFINPUT/WRFBDY FILES
#########################################################

cyc=00
PDY=20130509
ystart=2013
mstart=05
dstart=09

NDATE=/nwprod/util/exec/ndate

cycstart=`echo ${PDY}${cyc}`

start=$ystart$mstart$dstart

end=`$NDATE $LENGTH $cycstart`

yend=`echo $end | cut -c1-4`
mend=`echo $end | cut -c5-6`
dend=`echo $end | cut -c7-8`
hend=`echo $end | cut -c9-10`

## for large domains, special namelist.input files are required for the model
## for small domains, use the same namelist for both real and the model

NEST=hi
MODEL=arw

PARMhiresw=/meso/save/Matthew.Pyle/hiresw_vert/parm
FIXhiresw=/meso/save/Matthew.Pyle/hiresw_vert/fix

if [ $NEST = "hi" -o $NEST = "guam" ] ; then
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_small namelist.input_in
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_small namelist.input_in_model
elif [ $NEST = "pr" ] ; then
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_newpr namelist.input_in
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_newpr namelist.input_in_model
elif [ $NEST = "aknew" ] ; then

if [ $MODEL = "arw" ]; then
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_aknew namelist.input_in
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_model_aknew namelist.input_in_model
elif [ $MODEL = "nmmb" ]; then
  cp $PARMhiresw/hiresw_aknew_${MODEL}_configure_in configure_in
else
  echo BAD MODEL CHOICE FOR AKNEW DOMAIN
  exit 99
fi

elif [ $NEST = "conus" ] ; then

if [ $MODEL = "arw" ]; then
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_big namelist.input_in
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_model_big namelist.input_in_model
elif [ $MODEL = "nmmb" ]; then
  cp $PARMhiresw/hiresw_conus_${MODEL}_configure_in configure_in
else
  echo BAD MODEL CHOICE FOR CONUS DOMAIN
  exit 99
fi

elif [ $NEST = "eastnew" ] ; then

if [ $MODEL = "arw" ]; then
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_newbig namelist.input_in
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_newbig_model namelist.input_in_model
elif [ $MODEL = "nmmb" ]; then
  cp $PARMhiresw/hiresw_eastnew_${MODEL}_configure_in configure_in
else
  echo BAD MODEL CHOICE FOR EAST DOMAIN
  exit 99
fi


else
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in namelist.input_in
  cp $PARMhiresw/hiresw_${MODEL}_namelist.input_in_model namelist.input_in_model
fi


### number of input levels depends on source model data

if [ $NEST = "hi" -o $NEST = "east" -o $NEST = "eastnew"  -o $NEST = "west" ] ; then
NUMLEVS=40
elif [ $NEST = "pr"  -o $NEST = "conus" ] ; then
NUMLEVS=43
elif [ $NEST = "ak" -o $NEST = "aknew" -o $NEST = "guam" ] ; then
NUMLEVS=27
fi

if [ $MODEL = "nmmb" ]
then

cat  configure_in | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$cyc: > configure_file_01

cp configure_file_01 configure_file

else

cat namelist.input_in | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$cyc: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend:  \
 | sed s:FILT_YS:${filt_ys}: | sed s:FILT_MS:${filt_ms}: | sed s:FILT_DS:${filt_ds}: \
 | sed s:FILT_HS:${filt_hs}: | sed s:FILT_YE:${filt_ye}: | sed s:FILT_ME:${filt_me}: \
 | sed s:FILT_DE:${filt_de}: | sed s:FILT_HE:${filt_he}: \
 | sed s:NUMLEV:$NUMLEVS: > namelist.input

cat namelist.input_in_model | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$cyc: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend:  \
 | sed s:FILT_YS:${filt_ys}: | sed s:FILT_MS:${filt_ms}: | sed s:FILT_DS:${filt_ds}: \
 | sed s:FILT_HS:${filt_hs}: | sed s:FILT_YE:${filt_ye}: | sed s:FILT_ME:${filt_me}: \
 | sed s:FILT_DE:${filt_de}: | sed s:FILT_HE:${filt_he}: \
 | sed s:NUMLEV:$NUMLEVS: > namelist.input_model

fi


rm fort.*

cp $PARMhiresw/hiresw_LANDUSE.TBL LANDUSE.TBL
cp $PARMhiresw/hiresw_ETAMPNEW_DATA ETAMPNEW_DATA
cp $PARMhiresw/hiresw_ETAMPNEW_DATA micro_lookup.dat
cp $PARMhiresw/hiresw_VEGPARM.TBL VEGPARM.TBL
cp $PARMhiresw/hiresw_SOILPARM.TBL SOILPARM.TBL
cp $PARMhiresw/hiresw_GENPARM.TBL GENPARM.TBL
cp $FIXhiresw/hiresw_nmm_co2.35_hybrid_50mbtop co2.35_hybrid_50mbtop
cp $FIXhiresw/hiresw_nmm_co2.35_hybrid_50mbtop co2_trans

cp $FIXhiresw/hiresw_RRTM_DATA RRTM_DATA
cp $FIXhiresw/hiresw_tr49t67 tr49t67
cp $FIXhiresw/hiresw_tr49t85 tr49t85
cp $FIXhiresw/hiresw_tr67t85 tr67t85

export pgm=hiresw_${MODEL}_real
. ./prep_step

if [ $MODEL = nmm ] ; then
export FORT14="co2.35_hybrid_50mbtop"
fi

mpirun.lsf $EXEChiresw/hiresw_${MODEL}_real > $pgmout 2>&1

