#!/bin/ksh
##########
# This script creates output from the VAFTAD model.
# It creates:
#	- VG files for all forecast times and for all ash reductions
#	  for the composite grids.
#	- 4-panel PostScript files for all forecast times and levels.
#	- a metafile for NTRANS with all times and levels.
#
# S. Jacobs/CDB		11/00
# B. Stunder/ARL        10/2003 HYSPLIT: GLEVEL, log10 concentrations
##########

# Go to the working directory.
cd $DATA

set -x

# Get the GEMPAK grid file name.
#     The file name format is /directory/hysplit_date_volcano
grdfil=`cat gempak_file.vaftad`

ls -l ${grdfil}		# for debugging

# Get the directory name for the output files for use in DBnet.
COMOUT=`dirname ${grdfil}`

# Create the output file name templates.
vgfile=`basename ${grdfil} | cut -d_ -f4- | tr "[a-z]" "[A-Z]"`_`basename ${grdfil} | cut -d_ -f2 | tr "[a-z]" "[A-Z]"`_`basename ${grdfil} | cut -d_ -f3`
psfile=`basename ${grdfil} | cut -d_ -f4- | tr "[a-z]" "[A-Z]"`_`basename ${grdfil} | cut -d_ -f2 | tr "[a-z]" "[A-Z]"`_`basename ${grdfil} | cut -d_ -f3`
ncfile=`basename ${grdfil} | cut -d_ -f4- | tr "[a-z]" "[A-Z]"`_`basename ${grdfil} | cut -d_ -f2 | tr "[a-z]" "[A-Z]"`_`basename ${grdfil} | cut -d_ -f3`

# Get the scale factor for this data set.
scale=0

# Get the contour intervals (typically, -19,-18,-17,-16)
#   refers to ash reduction levels
none=`grep none VISUAL_ASH_TABLE | tail -c4`
small=`grep small VISUAL_ASH_TABLE | tail -c4`
medium=`grep medium VISUAL_ASH_TABLE | tail -c4`
large=`grep large VISUAL_ASH_TABLE | tail -c4`
let maxcont=$large+1

#############################
# Loop over forecast hours.
#############################
# read in 3 forecast hours from start of eruption
#       (usually 6, 12, 18 but for updates can be e.g. 12, 18, 24)
# FCSTHR.TXT written in hysplit_concrop.fd
cat FCSTHR.TXT | read FCSTHR
for time in ${FCSTHR}
do

#################################################################
# vg contours for none/small/medium/large for composite layer
#################################################################
vgout=${vgfile}f${time}

# Create the VG file for reduction == NONE.
gdplot2_vg << EOF3a
GDFILE   = ${grdfil}
GDATTIM  = f${time}
GLEVEL   = 16800:0
GVCORD   = hght
PANEL    = 0
SKIP     = 0
SCALE    = ${scale}
GDPFUN   = vash01
TYPE     = C
CONTUR   = 0
CINT     = ${none}/${none}/${none}
LINE     = 5/1/3/0
FINT     =  
FLINE    =  
HILO     =  
HLSYM    =  
CLRBAR   = 
WIND     = BM1
REFVEC   =  
TITLE    = 0
TEXT     = 1/21/hw
CLEAR    = yes
GAREA    = grid
PROJ     =
MAP      = 0
LATLON   = 0
DEVICE   = vg|${vgout}_none.vgf
STNPLT   =  
SATFIL   =  
RADFIL   =  
LUTFIL   =  
STREAM   =  
POSN     = 0
COLORS   = 1
MARKER   = 0
GRDLBL   = 0
FILTER   = YES
r

ex
EOF3a

# Create the VG file for reduction == SMALL.
gdplot2_vg << EOF3b
GDFILE   = ${grdfil}
GDATTIM  = f${time}
GLEVEL   = 16800:0
GVCORD   = hght
PANEL    = 0
SKIP     = 0
SCALE    = ${scale}
GDPFUN   = vash01
TYPE     = C
CONTUR   = 0
CINT     = ${small}/${small}/${small}
LINE     = 5/1/3/0
FINT     =  
FLINE    =  
HILO     =  
HLSYM    =  
CLRBAR   = 
WIND     = BM1
REFVEC   =  
TITLE    = 0
TEXT     = 1/21/hw
CLEAR    = yes
GAREA    = grid
PROJ     =
MAP      = 0
LATLON   = 0
DEVICE   = vg|${vgout}_small.vgf
STNPLT   =  
SATFIL   =  
RADFIL   =  
LUTFIL   =  
STREAM   =  
POSN     = 0
COLORS   = 1
MARKER   = 0
GRDLBL   = 0
FILTER   = YES
r

ex
EOF3b

# Create the VG file for reduction == MEDIUM.
gdplot2_vg << EOF3c
GDFILE   = ${grdfil}
GDATTIM  = f${time}
GLEVEL   = 16800:0
GVCORD   = hght
PANEL    = 0
SKIP     = 0
SCALE    = ${scale}
GDPFUN   = vash01
TYPE     = C
CONTUR   = 0
CINT     = ${medium}/${medium}/${medium}
LINE     = 5/1/3/0
FINT     =  
FLINE    =  
HILO     =  
HLSYM    =  
CLRBAR   = 
WIND     = BM1
REFVEC   =  
TITLE    = 0
TEXT     = 1/21/hw
CLEAR    = yes
GAREA    = grid
PROJ     =
MAP      = 0
LATLON   = 0
DEVICE   = vg|${vgout}_medium.vgf
STNPLT   =  
SATFIL   =  
RADFIL   =  
LUTFIL   =  
STREAM   =  
POSN     = 0
COLORS   = 1
MARKER   = 0
GRDLBL   = 0
FILTER   = YES
r

ex
EOF3c

# Create the VG file for reduction == LARGE.
gdplot2_vg << EOF3d
GDFILE   = ${grdfil}
GDATTIM  = f${time}
GLEVEL   = 16800:0
GVCORD   = hght
PANEL    = 0
SKIP     = 0
SCALE    = ${scale}
GDPFUN   = vash01
TYPE     = C
CONTUR   = 0
CINT     = ${large}/${large}/${large}
LINE     = 5/1/3/0
FINT     =  
FLINE    =  
HILO     =  
HLSYM    =  
CLRBAR   = 
WIND     = BM1
REFVEC   =  
TITLE    = 0
TEXT     = 1/21/hw
CLEAR    = yes
GAREA    = grid
PROJ     =
MAP      = 0
LATLON   = 0
DEVICE   = vg|${vgout}_large.vgf
STNPLT   =  
SATFIL   =  
RADFIL   =  
LUTFIL   =  
STREAM   =  
POSN     = 0
COLORS   = 1
MARKER   = 0
GRDLBL   = 0
FILTER   = YES
r

ex
EOF3d

# Send the alerts to transfer the VG files using DBnet.
if  [ $SENDCOM = "YES" ] ; then
    cp ${vgout}_none.vgf   ${COMOUT}/${vgout}_none.vgf
    cp ${vgout}_small.vgf  ${COMOUT}/${vgout}_small.vgf
    cp ${vgout}_medium.vgf ${COMOUT}/${vgout}_medium.vgf
    cp ${vgout}_large.vgf  ${COMOUT}/${vgout}_large.vgf
    if  [ $SENDDBN = "YES" ] ; then
    	$DBNROOT/bin/dbn_alert MODEL VAFTAD_VGF vaftad \
				${COMOUT}/${vgout}_none.vgf
    	$DBNROOT/bin/dbn_alert MODEL VAFTAD_VGF vaftad \
				${COMOUT}/${vgout}_small.vgf
    	$DBNROOT/bin/dbn_alert MODEL VAFTAD_VGF vaftad \
				${COMOUT}/${vgout}_medium.vgf
    	$DBNROOT/bin/dbn_alert MODEL VAFTAD_VGF vaftad \
				${COMOUT}/${vgout}_large.vgf
    fi
fi

#################################
# Create the PostScript files.
#################################
gdplot2_ps << EOF4
GDFILE   = ${grdfil}
GDATTIM  = f${time}
GLEVEL   = 16800:0
GVCORD   = hght
PANEL    = ul
SKIP     = 0
SCALE    = ${scale}
GDPFUN   = vash01
TYPE     = f
CONTUR   = 0
CINT     = 
LINE     = 
FINT     = 1/${none}/${maxcont}
FLINE    = 0;18;15;12;9;6
HILO     =  
HLSYM    =  
CLRBAR   = 1
WIND     = BM1
REFVEC   =  
TITLE    = 1/-2/~  Composite  Volc Ash Concen (${medium}==Med)
TEXT     = 1/21/hw
CLEAR    = yes
GAREA    = grid
PROJ     =
MAP      = 1/1/2
LATLON   = 1/5/1/1/5;5
DEVICE   = ps|${psfile}f${time}.ps|17;11
STNPLT   = 1/s/22/hw|1/12/1.25/2|volcano.tbl
SATFIL   =  
RADFIL   =  
LUTFIL   =  
STREAM   =  
POSN     = 0
COLORS   = 1
MARKER   = 0
GRDLBL   = 0
FILTER   = YES
r

GLEVEL	 = 6100:0
TITLE	 = 31/-2/~  Low Lvl  Volc Ash Concen (${medium}==Med)
PANEL    = ur
CLEAR    = no
r

GLEVEL	 = 10700:6100
TITLE	 = 31/-2/~  Mid Lvl  Volc Ash Concen (${medium}==Med)
PANEL    = ll
r

GLEVEL	 = 16800:10700
TITLE	 = 31/-2/~  High Lvl  Volc Ash Concen (${medium}==Med)
PANEL    = lr
r

ex
EOF4

# Print the PostScript file to the SDM printer.
# Also print to sdm coop printer if needed
if  [ $SENDCOM = "YES" ] ; then
    cp ${psfile}f${time}.ps ${COMOUT}/${psfile}f${time}.ps
    #lpr -Php26_sdm ${COMOUT}/${psfile}f${time}.ps
fi

# End of time loop.
done

#########################
# Create the metafile.
#########################
gdplot2_nc << EOF2
GDFILE   = ${grdfil}
GDATTIM  = fall
GLEVEL   = 16800:0
GVCORD   = hght
PANEL    = 0
SKIP     = 0
SCALE    = ${scale}
GDPFUN   = vash01
TYPE     = f
CONTUR   = 0
CINT     = 
LINE     = 
FINT     = 1/${none}/${maxcont}
FLINE    = 0;26;3;5;17;2
HILO     =  
HLSYM    =  
CLRBAR   = 31
WIND     = BM1
REFVEC   =  
TITLE    = 31/-2/~  Composite  Volc Ash Concen (${medium}==Med)|~ Comp Volc Ash
TEXT     = 1/21/hw
CLEAR    = yes
GAREA    = grid
PROJ     =
MAP      = 1/1/2
LATLON   = 1/5/1/1/5;5
DEVICE   = nc|${ncfile}
STNPLT   = 31/s/22/hw|31/12/1.25/2|volcano.tbl
SATFIL   =  
RADFIL   =  
LUTFIL   =  
STREAM   =  
POSN     = 0
COLORS   = 1
MARKER   = 0
GRDLBL   = 0
FILTER   = YES
r

GLEVEL	 =  6100:0
TITLE	 =  31/-2/~  Low Lvl  Volc Ash Concen (${medium}==Med)|~ Low Volc Ash
r

GLEVEL	 =  10700:6100
TITLE	 =  31/-2/~  Mid Lvl  Volc Ash Concen (${medium}==Med)|~ Mid Volc Ash
r

GLEVEL	 =  16800:10700
TITLE	 =  31/-2/~  High Lvl  Volc Ash Concen (${medium}==Med)|~ High Volc Ash
r

ex
EOF2

# Send the alert to transfer the metafile using DBnet.
if  [ $SENDCOM = "YES" ] ; then
    cp ${ncfile} ${COMOUT}/${ncfile}
    if  [ $SENDDBN = "YES" ] ; then
    	$DBNROOT/bin/dbn_alert MODEL VAFTAD_META vaftad \
				${COMOUT}/${ncfile}
    fi
fi
