#!/bin/bash # needs summary.x from ert, gnuplot, and pdflatex #Stop on first error #set -e #set -x usage() { #Grep through this source file for the options echo "$0 usage:" && grep " .)\ # " $0 exit 1 } OUTFILE= DECK= RUNS= KEYS= WELLS= CLEAN_UP= [ $# -eq 0 ] && usage while getopts "o:d:r:v:w:ch" arg; do case $arg in o) # Output filename echo "OUT ${OPTARG}" OUTFILE=${OPTARG} ;; d) # Deck filename echo "DECK ${OPTARG}" DECK=${OPTARG} ;; r) # Individual runs to plot echo "RUNS ${OPTARG}" RUNS="${RUNS} ${OPTARG}" ;; v) # Variables / keys to plot for each well (e.g., WBHP WOPR WGFR WWPR) echo "KEYS ${OPTARG}" KEYS="${KEYS} ${OPTARG}" ;; w) # Wells to plot for each run (leave empty for all) echo "Wells: ${OPTARG}" WELLS="${WELLS} ${OPTARG}" ;; c) # Clean up by deleting temp files echo "Cleaning up set" CLEAN_UP=true ;; h) # Display help. usage exit 0 ;; esac done if [ -z "$OUTFILE" ]; then echo "No outfile" && usage; fi if [ -z "$DECK" ]; then echo "No deck" && usage; fi if [ -z "$RUNS" ]; then echo "No runs" && usage; fi if [ -z "$KEYS" ]; then echo "No keys" && usage; fi #No wells is OK, plot all # this requires the summary.x binary from ert # Either if [ ! -x "$SUMMARY_X" ]; then SUMMARY_X=summary.x fi if [ "`type -t \"$SUMMARY_X\"`" != "file" ]; then echo "Could not find summary.x" echo "Make sure summary.x is on path, or set the" echo "environment variable SUMMARY_X" exit 1 fi TEMPDIR=`mktemp -d` CURRENTDIR=`pwd` # Get a list of all possible wells for each deck if [ -z "$WELLS" ]; then for RUN in $RUNS; do DECKNAME=$RUN/$DECK echo "Finding wells in " $DECKNAME # Loop over all the keys, and find wells ALLKEYS=`$SUMMARY_X --list $DECKNAME` for WELL_CANDIDATE in $ALLKEYS; do KEY=`echo $WELL_CANDIDATE | grep WBHP | grep -v WBHPH` # Only store wells if [ "$KEY" != "" ] ; then echo "Found $KEY" KEY=`echo $KEY | cut -d ":" -f 2` WELLS="$WELLS $KEY" fi done done # Make sure the list of wells is unique WELLS=`echo $WELLS | tr " " "\n" | sort | uniq` fi # Create a temp directory for each run for RUN in $RUNS; do RUNTEMPDIR=$TEMPDIR/$RUN echo "Creating temp dir $RUNTEMPDIR" mkdir -p "$RUNTEMPDIR" done # generate a data file for each well for all specified keys (opts) for RUN in $RUNS; do RUNTEMPDIR=$TEMPDIR/$RUN for WELL in $WELLS ; do GNUPLOT_OUTFILE="$RUNTEMPDIR/$WELL.gnu" echo "Creating file $GNUPLOT_OUTFILE" #Set options for summary.x WELLOPTS= for KEY in $KEYS; do WELLOPTS="$WELLOPTS $KEY:$WELL" done # Run summary.x to extract data in gnuplot-friendly format $SUMMARY_X "$RUN/$DECK" $WELLOPTS > $GNUPLOT_OUTFILE done done # Use Gnuplot to plot each option/variable for WELL in $WELLS ; do COLUMN=3 # Column 1 is days, 2 is date, then one column per option in datafiles for KEY in $KEYS; do #Main plot file for Gnuplot PLOTFILE="$TEMPDIR/well-${WELL}-${KEY}.gnu" # General Gnuplot options echo "set terminal postscript color" > $PLOTFILE echo "set output \"$TEMPDIR/well-${WELL}-${KEY}.eps\"" >> $PLOTFILE echo "set xlabel \"days\"" >> $PLOTFILE echo "set ylabel \"$KEY\"" >> $PLOTFILE echo "set grid" >> $PLOTFILE # Create a plot for each run (for comparison) LINECOLOR=1 LINEWIDTH=3 FIRST_ITER=true PLOT_COMMAND= for RUN in $RUNS; do RUNTEMPDIR=$TEMPDIR/$RUN # Comma to separate lines if [ "$PLOT_COMMAND" != "" ]; then PLOT_COMMAND="$PLOT_COMMAND," LINECOLOR=`expr $LINECOLOR + 2` else PLOT_COMMAND="plot" fi title=`echo $RUN | tr _ -` PLOT_COMMAND="$PLOT_COMMAND \"${RUNTEMPDIR}/$WELL.gnu\" \ using 1:${COLUMN} \ title \"$title\" \ with lines \ linewidth $LINEWIDTH \ linecolor $LINECOLOR" done echo "$PLOT_COMMAND" >> $PLOTFILE # Run Gnuplot gnuplot $PLOTFILE # Move to next column/option COLUMN=`expr $COLUMN + 1` done done # Finally generate a latex-file report PICCOUNT=1 TEXFILE="$TEMPDIR/article.tex" echo " \\documentclass{article} \\usepackage{graphicx} \\setlength{\\hoffset}{0cm} \\setlength{\\topmargin}{0.5cm} \\setlength{\\headsep}{0cm} \\setlength{\\headheight}{0cm} \\setlength{\\textheight}{23cm} \\setlength{\\textwidth}{15.5cm} \\setlength{\\evensidemargin}{0.48cm} \\setlength{\\oddsidemargin}{0.0cm} " > $TEXFILE echo "\\begin{document}" >> $TEXFILE for WELL in $WELLS ; do for KEY in $KEYS; do echo "\\begin{figure}" >> $TEXFILE echo "\\rotatebox{270}{\\includegraphics[width=0.65\\textwidth]{well-$WELL-$KEY}}\\\\" >> $TEXFILE echo "\\caption{$KEY of well \\textbf{$WELL}.}" >> $TEXFILE echo "\\end{figure}" >> $TEXFILE if [ "`expr $PICCOUNT % 2`" == "0" ] || [ ]; then echo "\\clearpage" >> $TEXFILE fi PICCOUNT=`expr $PICCOUNT + 1` done done echo "\\end{document}" >> $TEXFILE LATEXOPTS="--output-directory ${TEMPDIR} --interaction=nonstopmode -jobname=article" LATEXCMD="latex $LATEXOPTS $TEXFILE" cd $TEMPDIR && $LATEXCMD && $LATEXCMD dvipdf article.dvi article.pdf cd $CURRENTDIR OUTDIR=`dirname "${OUTFILE}"` mkdir -p "$OUTDIR" mv "$TEMPDIR/article.pdf" "${OUTFILE}" && echo "Created ${OUTFILE}" # remove temporary files if [ ! -z "$CLEAN_UP" ]; then echo "Removing temporary files in $TEMPDIR" find $TEMPDIR -iname '*.eps' -exec rm {} + find $TEMPDIR -iname '*.gnu' -exec rm {} + rm "$TEMPDIR/article.dvi" "$TEMPDIR/article.log" "$TEMPDIR/article.aux" "$TEXFILE" for RUN in $RUNS; do RUNTEMPDIR=$TEMPDIR/$RUN rm -d $RUNTEMPDIR done echo "Files not removed: " find $TEMPDIR else echo "Files left in $TEMPDIR" fi