diff --git a/test/freeflow/navierstokes/convergence.sh b/test/freeflow/navierstokes/convergence.sh index 945249cbff00987e0d99236f5cbd5878d25f5ae2..353de4baf545c64c14e78f6c80764826c0c41a91 100755 --- a/test/freeflow/navierstokes/convergence.sh +++ b/test/freeflow/navierstokes/convergence.sh @@ -1,7 +1,7 @@ #! /bin/bash -if [ $# -ne 3 ]; then - echo "usage: $0 EXECUTABLE_NAME DIMENSION NUM_REFINEMENT_STEPS" +if [ $# -ne 4 ]; then + echo "usage: $0 EXECUTABLE_NAME PARAMS DIMENSION NUM_REFINEMENT_STEPS" exit fi @@ -11,34 +11,47 @@ LOGFILE=logfile_$1.out rm $LOGFILE L2ERRORFILE=l2error_$1.txt -if [ $2 == 1 ]; then -GRIDCELLS="4" -elif [ $2 == 2 ]; then -GRIDCELLS="4 4" +DIM=$3 +INITIALCELLS=4 + +if [ $DIM == 1 ]; then +GRIDCELLS="$INITIALCELLS" +elif [ $DIM == 2 ]; then +GRIDCELLS="$INITIALCELLS $INITIALCELLS" else -GRIDCELLS="4 4 4" +GRIDCELLS="$INITIALCELLS $INITIALCELLS $INITIALCELLS" fi -MAX=$3 +MAX=$4 +MAXCELLS=$INITIALCELLS for (( i=0; i <= $MAX; ++i )); do printf "refinement $i / $MAX " - ./$1 $1.input -Grid.Cells "$GRIDCELLS" -Grid.Refinement $i -Problem.PrintL2Error true &>> $LOGFILE + ((MAXCELLS *=2)) + ./$1 params.input -Grid.Cells "$GRIDCELLS" -Grid.Refinement $i -Problem.PrintL2Error true &>> $LOGFILE echo "done." done grep "L2 error (abs/rel) for" $LOGFILE | tee $L2ERRORFILE -echo "reset; \ -set log x; \ -set log y; \ -set arrow from graph 0,1 to graph 1,0 nohead lc rgb 'gray'; \ -set arrow from graph 0,1 to graph 1,0.5 nohead lc rgb 'gray'" > $1.gp - -PLOT="plot '$L2ERRORFILE' u 6:17 w lp t 'pressure', '$L2ERRORFILE' u 6:23 w lp t 'velocity'" -if [ $2 == 2 ]; then -PLOT=$PLOT", '$L2ERRORFILE' u 6:29 w lp t 'velocity'" -elif [ $2 == 3 ]; then -PLOT=$PLOT", '$L2ERRORFILE' u 6:35 w lp t 'velocity'" +echo "reset +set terminal pngcairo size 1000,750 +set output 'convergence.png' +set xrange [($INITIALCELLS-1):$MAXCELLS] +set yrange [:1] +set xlabel 'number of cells per dimension' +set ylabel 'l2 error (abs)' +set log x +set log y" > $1.gp + +PLOT="plot x**-1 w l lc rgb 'gray40' t 'O_1', \ +x**-2 w l lc rgb 'blue20' t 'O_2', \ +'$L2ERRORFILE' u (\$6**(1./$DIM.)):17 w lp t 'pressure', \ +'$L2ERRORFILE' u (\$6**(1./$DIM.)):23 w lp t 'velocity_x'" +if [ $DIM == 2 ]; then +PLOT=$PLOT", '$L2ERRORFILE' u (\$6**(1./$DIM.)):29 w lp t 'velocity_y'" +elif [ $DIM == 3 ]; then +PLOT=$PLOT", '$L2ERRORFILE' u (\$6**(1./$DIM.)):29 w lp t 'velocity_y', '$L2ERRORFILE' u (\$6**(1./$DIM.)):35 w lp t 'velocity_z'" fi echo $PLOT >> $1.gp gnuplot --persist $1.gp +eog convergence.png