#!/bin/ksh
################################################################################
####  UNIX Script Documentation Block
#                      .                                             .
# Script name:         exnam_coldstart_wrfsi.sh.sms 
# Script description:  Runs WRF standard initialization (SI) from GDAS first guess input 
#                      to coldstart WRF-NMM NDAS
#
# Author:        Eric Rogers       Org: NP22         Date: 2004-07-02
#
# Script history log:
# 2006-02-01  Eric Rogers - Based on HIRESW script
# 2008-08-19  Eric Rogers _ Changed to use WPS instead of SI

set -x

export USHGETGES=${USHGETGES:-/nwprod/util/ush}
msg="JOB_PARA $job FOR WRF-NMM HAS BEGUN"
postmsg "$jlogfile" "$msg"

#
# Get needed variables from exnam_prelim.sh.sms
#
. $GESDIR/${RUN}.t${cyc}z.envir.sh

cd $DATA
rm *done*

spectral=true
gribsrc=GFS
doclouds=false

if [ $domain = firewx ] 
then
  mkdir -p $DATA/geogrid
  mkdir -p $DATA/gridgen_sfc

  cd $DATA/geogrid
  rm b_d03*
  rm nest_start_*

  cd $DATA/gridgen_sfc
  rm b_d03* 
  rm *dio*
fi

mkdir -p $DATA/ungrib
mkdir -p $DATA/metgrid
mkdir -p $DATA/nemsinterp

cd $DATA/metgrid
rm met*.dio
rm FILE*

cd $DATA/ungrib
sh /nwprod/util/ush/setup.sh
rm GRIBFILE.*
rm FILE*

cd $DATA/nemsinterp
rm test*d01
rm boco*
rm GWD.bin

# Run gridgen_sfc and geogrid only for firewx

if [ $domain = firewx ]
then

cd $DATA/gridgen_sfc
sh /nwprod/util/ush/setup.sh
rm b_d03*

COM_IN=${COM_IN:-/com/nam/${envir}}
cp $COM_IN/input/nam_firewx_loc .

centlat=${centlat:-`grep ${cyc}z nam_firewx_loc | awk '{print $2}'`}
centlon=${centlon:-`grep ${cyc}z nam_firewx_loc | awk '{print $3}'`}

echo $centlat $centlon > $COMIN/nam.t${cyc}z.firewxnest_center_latlon
if [ $SENDDBN = YES ]; then
   $DBNROOT/bin/dbn_alert MODEL NAM_FIREWXNEST_TEXT $job $COMIN/nam.t${cyc}z.firewxnest_center_latlon
fi

if [ $centlat -ge 52 ]
then
  firewx_location=alaska
  echo $firewx_location > $COMIN/nam.t${cyc}z.firewxnest_location
  echo "export firewx_location=`cat $COMIN/nam.t${cyc}z.firewxnest_location | awk '{print $1}'`" >> $GESDIR/nam.t${cyc}z.envir.sh
else
  firewx_location=conus
  echo $firewx_location > $COMIN/nam.t${cyc}z.firewxnest_location
  echo "export firewx_location=`cat $COMIN/nam.t${cyc}z.firewxnest_location | awk '{print $1}'`" >> $GESDIR/nam.t${cyc}z.envir.sh
fi

cp $PARMnam/nam_firewx_${firewx_location}.nml_stub .

cat > nam_firewx_${firewx_location}.nml_stub1 << !
&input_data
 leaf_area_idx_file=""
 gfrac_file="$FIXnam/nam_green.0.144.bin"
 mxsnow_alb_file="$FIXnam/nam_mxsno.1.0.bin"
 roughness_file="igbp"
 slopetype_file="$FIXnam/nam_slope.1.0.bin"
 snowfree_albedo_file="$FIXnam/nam_albedo.1.0.bin"
 soiltype_tile_file="$FIXnam/nam_topsoil_fao.30s"
 substrate_temp_file="$FIXnam/nam_tbot.1.0.bin"
 vegtype_tile_file="$FIXnam/nam_veg_igbp1a.bin"
 lsmask_file="$FIXnam/nam_mask.sstlakes.30s"
 orog_file="$FIXnam/nam_terrain_usgs.30s"
/
!

cat nam_firewx_${firewx_location}.nml_stub nam_firewx_${firewx_location}.nml_stub1 > nam_firewx_${firewx_location}.nml

cat nam_firewx_${firewx_location}.nml | sed s:CENTLAT_FWX:$centlat: \
 | sed s:CENTLON_FWX:$centlon: > testb.nml

export pgm=nam_gridgen_sfc
. prep_step

ln -sf testb.nml fort.81

startmsg
$EXECnam/nam_gridgen_sfc >> $pgmout 2>errfile
export err=$?;err_chk

cp $pgmout $DATA/${pgmout}.gridgen_sfc
cp errfile $DATA/errfile.gridgen_sfc

cp b_d03* $DATA/geogrid/.
cp testb.nml $DATA/geogrid/firewx.nml

cd $DATA/geogrid
sh /nwprod/util/ush/setup.sh

mkdir geogrid
cp $PARMnam/nam_GEOGRID.TBL.NMB ./geogrid/GEOGRID.TBL

echo DATEXX${CYCLE} > ncepdate.npstm00

CYCgdas=`/nwprod/util/exec/ndate -6 $CYCLE`

echo DATEXX${CYCgdas} > nmcdate.gdas

PDYgds=`cat nmcdate.gdas | cut -c7-14`
yygds=`cat nmcdate.gdas | cut -c7-10`
mmgds=`cat nmcdate.gdas | cut -c11-12`
ddgds=`cat nmcdate.gdas | cut -c13-14`
cycgds=`cat nmcdate.gdas | cut -c15-16`

### modify namelist file
ystart=`cat ncepdate.npstm00 | cut -c7-10`
mstart=`cat ncepdate.npstm00 | cut -c11-12`
dstart=`cat ncepdate.npstm00 | cut -c13-14`
hstart=`cat ncepdate.npstm00 | cut -c15-16`

start=$ystart$mstart$dstart$hstart
end=`/nwprod/util/exec/ndate +00 $start`

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

geog_path=$FIXnam/nam_geog

cat $PARMnam/nam_namelist.geogrid_${firewx_location}_firewx | sed s:YSTART:$ystart:g | sed s:MSTART:$mstart:g \
 | sed s:DSTART:$dstart:g | sed s:HSTART:$hstart:g | sed s:YEND:$yend:g \
 | sed s:MEND:$mend:g  | sed s:DEND:$dend:g | sed s:HEND:$hend:g \
 | sed s:CENTLAT_FWX:$centlat: | sed s:CENTLON_FWX:$centlon: | sed s:GEOG_PATH:$geog_path: > namelist.nps

export pgm=nam_geogrid_firewx
. prep_step

ln -sf firewx.nml fort.81

startmsg
$EXECnam/nam_geogrid_firewx >> $pgmout 2>errfile
export err=$?;err_chk

cp $pgmout $DATA/${pgmout}.geogrid
cp errfile $DATA/errfile.geogrid

cp nest_start_03 $COMIN/nam.t${cyc}z.firewx_ijstart.txt

# send firewx fix files to /com for archival and for coldstart job

type="tbot slopeidx elevtiles hpnt_latitudes hpnt_longitudes mxsnoalb slmask snowfree_albedo soiltiles vegfrac vegtiles vpnt_latitudes vpnt_longitudes z0clim"

for file in $type
do
  mv b_d03_${file}.grb $COMIN/nam.t${cyc}z.firewx_${file}.grb
done

mv geo_nmb.d03.dio $COMIN/nam.t${cyc}z.geo_nmb.firewx.dio

# end firewx block for gridgen_sfc and geogrid
fi

cd $DATA/ungrib

echo DATEXX${CYCLE} > ncepdate.npstm00
cp ncepdate.npstm00 $DATA/metgrid/.

CYCgdas=`/nwprod/util/exec/ndate -6 $CYCLE`

echo DATEXX${CYCgdas} > nmcdate.gdas

PDYgds=`cat nmcdate.gdas | cut -c7-14`
yygds=`cat nmcdate.gdas | cut -c7-10`
mmgds=`cat nmcdate.gdas | cut -c11-12`
ddgds=`cat nmcdate.gdas | cut -c13-14`
cycgds=`cat nmcdate.gdas | cut -c15-16`

### modify namelist file
ystart=`cat ncepdate.npstm00 | cut -c7-10`
mstart=`cat ncepdate.npstm00 | cut -c11-12`
dstart=`cat ncepdate.npstm00 | cut -c13-14`
hstart=`cat ncepdate.npstm00 | cut -c15-16`

start=$ystart$mstart$dstart$hstart
end=`/nwprod/util/exec/ndate +00 $start`

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

if [ $domain = firewx ]
then

cat $PARMnam/nam_namelist.nps_${domain}nest_${firewx_location} | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$hstart: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend: \
 | sed s:CENTLAT_FWX:$centlat: | sed s:CENTLON_FWX:$centlon: \
 | sed s:SPECTRAL:$spectral: | sed s:DOCLOUDS:$doclouds: | sed s:GRIBSRC:$gribsrc: > namelist.nps

else

cat $PARMnam/nam_namelist.nps_${domain}nest | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$hstart: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend: \
 | sed s:SPECTRAL:$spectral: | sed s:DOCLOUDS:$doclouds: | sed s:GRIBSRC:$gribsrc: > namelist.nps

fi

DATE=`echo $start | cut -c1-8`

rm Vtable

#####

cp $PARMnam/nam_Vtable.GFS_spectral Vtable

filedir=$COMIN

hrs="06"

for hr in $hrs
do

vldgdas=`/nwprod/util/exec/ndate $hr ${PDYgds}${cycgds}`

$USHGETGES/getges.sh -t pg2ges -v $vldgdas -n gfs gdas.pgbf${hr}
$USHGETGES/getges.sh -t sigges -v $vldgdas -e prod sf${hr}

done

ln -sf gdas.pgbf06 GRIBFILE.AAA
ln -sf sf06 fort.27

####
 
export pgm=nam_ungrib
. prep_step
 
startmsg
$EXECnam/nam_ungrib >> $pgmout 2>errfile
export err=$?;err_chk

cp $pgmout $DATA/${pgmout}.ungrib
cp errfile $DATA/errfile.ungrib

### run metgrid

cd $DATA/metgrid
sh /nwprod/util/ush/setup.sh

STARTHR=00
ENDHR=00
INCRHR=00

ystart=`cat ncepdate.npstm00 | cut -c7-10`
echo ystart $ystart
mstart=`cat ncepdate.npstm00 | cut -c11-12`
echo mstart $mstart
dstart=`cat ncepdate.npstm00 | cut -c13-14`
echo dstart $dstart
hstart=`cat ncepdate.npstm00 | cut -c15-16`
 
orig_start=$ystart$mstart$dstart${hstart}
 
start=`/nwprod/util/exec/ndate 0 ${orig_start}`
ystart=`echo $start | cut -c1-4`
mstart=`echo $start | cut -c5-6`
dstart=`echo $start | cut -c7-8`
hstart=`echo $start | cut -c9-10`
 
end=`/nwprod/util/exec/ndate 0 ${orig_start}`
 
echo $start
echo $end
 
yend=`echo $end | cut -c1-4`
mend=`echo $end | cut -c5-6`
dend=`echo $end | cut -c7-8`
hend=`echo $end | cut -c9-10`

if [ $domain = firewx ]
then

cat $PARMnam/nam_namelist.nps_${domain}nest_${firewx_location} | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:$hstart: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend: \
 | sed s:CENTLAT_FWX:$centlat: | sed s:CENTLON_FWX:$centlon: \
 | sed s:SPECTRAL:$spectral: | sed s:DOCLOUDS:$doclouds: | sed s:GRIBSRC:$gribsrc: > namelist.nps

else

cat $PARMnam/nam_namelist.nps_${domain}nest | sed s:YSTART:$ystart: | sed s:MSTART:$mstart: \
 | sed s:DSTART:$dstart: | sed s:HSTART:${hstart}: | sed s:YEND:$yend: \
 | sed s:MEND:$mend:     | sed s:DEND:$dend: | sed s:HEND:$hend: \
 | sed s:SPECTRAL:$spectral: | sed s:DOCLOUDS:$doclouds: | sed s:GRIBSRC:$gribsrc: > namelist.nps

fi
 
cp $PARMnam/nam_METGRID.TBL.NMM_nests METGRID.TBL

if [ $domain = firewx ] 
then
  cp $COMIN/nam.t${cyc}z.geo_nmb.firewx.dio geo_nmb.d01.dio
else
  cp $FIXnam/nam_geo_nmb.d01.dio_${domain}nest geo_nmb.d01.dio
fi
 
FHR=$STARTHR
 
time=`/nwprod/util/exec/ndate +${FHR} ${orig_start}`
yy=`echo $time | cut -c1-4`
mm=`echo $time | cut -c5-6`
dd=`echo $time | cut -c7-8`
hh=`echo $time | cut -c9-10`
 
cp $DATA/ungrib/FILE:${yy}-${mm}-${dd}_${hh} .
echo GRABBED $FHR

FHR=`expr $FHR + $INCRHR`

echo $FHR

export pgm=nam_metgrid
. prep_step

startmsg
$EXECnam/nam_metgrid >> $pgmout 2>errfile
export err=$?;err_chk

cp $pgmout $DATA/${pgmout}.metgrid
cp errfile $DATA/errfile.metgrid

### run nemsinterp

cd $DATA/nemsinterp
sh /nwprod/util/ush/setup.sh

cp $DATA/metgrid/$pgmout .
cp $DATA/metgrid/met_nmb*dio .
cp $DATA/metgrid/namelist.nps .

export pgm=nam_nemsinterp
. prep_step

startmsg
$EXECnam/nam_nemsinterp >> $pgmout 2>errfile
export err=$?;err_chk

cp $pgmout $DATA/${pgmout}.nemsinterp
cp errfile $DATA/errfile.nemsinterp

# move files back to GESDIR

cp domain_details_01 $COMOUT/nam.t${cyc}z.${domain}nest_domain_details

mv input_domain_01_nemsio $GESDIR/nam.t${cyc}z.input_nemsio_guess_${domain}nest_precoldstart
rm input_domain_01

msg="JOB_PARA $job FOR WRF-NMM HAS COMPLETED NORMALLY"
postmsg "$jlogfile" "$msg"

exit