#!/bin/csh -f
#
# HOLMES
#
# This script will drive movie making programs for
# 3-D Hydro code simulations.
#
# USAGE: holmes
echo "START HOLMES"
# ---------------
# SET ENVIRONMENT
# ---------------
setenv SCR /scratch/s1/u15149
setenv HOME /users/guests/u15149
setenv READDIR $SCR/junk
setenv BINDIR $HOME/imaging/bin
setenv DUMPDIR $SCR/junk
setenv GEOMDIR $HOME/user_data/lsuATP/sdl
setenv PIXDIR $HOME/user_data/lsuATP/pix
setenv IMGDIR $SCR/junk/images
setenv INFODIR $SCR/info
setenv PROJ $HOME/user_data/lsuATP
setenv ALIAS_WORKENV $HOME
setenv ALIAS_PROJ lsuATP
set lmax=128128256
set path = ( $BINDIR /usr/etc /usr/local/bin /usr/ucb /bin /usr/bin /usr/lib )
# ------------------
# START MAIN PROGRAM
# ------------------
# Setup lock for ".flag" file
set lock = $BINDIR/.lock
# Check for lock before modifying ".flag" file
while (-e $lock)
echo " " > /dev/null
end
# Lock out ".flag" file
touch $lock
# Update the flag number
# This number tells the script whether it is already running
# and how many more files it has to process
set nu = `cat $BINDIR/.flag`
set nu=`expr $nu + 1`
echo $nu >! $BINDIR/.flag
echo ".flag =" $nu
# Remove lock on ".flag" file
rm -f $lock
# Exit if another "holmes" process is already running
# (if .flag > 1 after being updated)
if($nu > 1) then
exit
endif
# Start the main loop
#
# Remains in the loop as long as there are data files
# to process
while ($nu > 0)
# Get the current filename
set FILENM=`$BINDIR/getbase disk`
echo $FILENM
# Rename the current file to a generic inputfile
mv -f $READDIR/$FILENM $DUMPDIR/disk.sun
# Convert the cylindrical gridded data to a cartesian grid
echo "start cylindrical conversion"
$BINDIR/allcargonn256.$lmax
# Remove the cylindrical inputfile and the old inputfile
# for the isosurface program
rm -f $DUMPDIR/disk.sun
rm -f $DUMPDIR/den.car
# Strip leading 4 bytes off fortran binary output file
# (Isosurface program is written in C)
echo "start 4 byte strip "
$BINDIR/strip4 $READDIR/disk.car $DUMPDIR/den.car
# Remove cartesian fortran outputfile
rm -f $DUMPDIR/disk.car
# Read in density levels to set isosurfaces at
set den1 = `cat $BINDIR/.den1` # Highest density isosurface (innermost shell)
set den2 = `cat $BINDIR/.den2`
set den3 = `cat $BINDIR/.den3`
set den4 = `cat $BINDIR/.den4` # Lowest density isosurface (outermost shell)
echo "isosurfaces at $den1 : $den2 : $den3 : $den4"
# Create polygonal isodensity surface files for rendering
$BINDIR/polyr -raw 256 256 256 -S $GEOMDIR/shell_1 $READDIR/den.car $den1
$BINDIR/polyr -raw 256 256 256 -S $GEOMDIR/shell_2 $READDIR/den.car $den2
$BINDIR/polyr -raw 256 256 256 -S $GEOMDIR/shell_3 $READDIR/den.car $den3
$BINDIR/polyr -raw 256 256 256 -S $GEOMDIR/shell_4 $READDIR/den.car $den4
# Remove old sdl file if it is there
rm -f $PROJ/sdl/composite.sdl
# Use the C preprocessor to include the SDL files with the
# isodensity surfaces in the master sdl file
cpp -C -P $PROJ/sdl/template.sdl > $PROJ/sdl/composite.sdl
# Remove the isodensity surface sdl files
rm -f $PROJ/sdl/shell_1.sdl
rm -f $PROJ/sdl/shell_2.sdl
rm -f $PROJ/sdl/shell_3.sdl
rm -f $PROJ/sdl/shell_4.sdl
# Render final image
renderit -r raytracer $PROJ/sdl/composite.sdl
# Remove rendering sdl file
rm -f $PROJ/sdl/composite.sdl
# FTP the images file to our local machine
set imgnum = `cat $BINDIR/.base`
$BINDIR/ftpfile.sh img.$imgnum.tiff
# Backup the image file on the remote machine
# (sometimes the network FTP connection fails)
cp -f $PIXDIR/output.tiff $IMGDIR/img.$imgnum.tiff
# Check for lock before modifying ".flag" file
while (-e $lock)
echo " " > /dev/null
end
# Lock out ".flag" file
touch $lock
# Decrement the flag number
set nu = `cat $BINDIR/.flag`
set nu=`expr $nu - 1`
echo $nu >! $BINDIR/.flag
# Remove lock on ".flag" file
rm -f $BINDIR/.lock
end
# ----------------
# END MAIN PROGRAM
# ----------------
echo "END HOLMES"