GfsEventScript

From Gerris

Jump to: navigation, search

GfsEventScript can be used to execute a shell-script at given intervals.

The syntax in parameter files is as follows:

[ GfsEvent ] {
  COMMANDS
}

where COMMANDS is the script to be executed with /bin/sh.

Several shell variables are set:

GfsTime
the physical time
GfsIter
the iteration number
GfsPid
the processor number
GFS_STOP
if the exit status of the shell script is GFS_STOP the simulation is terminated (the return status indicates a failure)

Examples

  • Rayleigh-Taylor instability
  •   EventScript { start = 0 } { echo "Save t-0.eps { format = EPS }" }
    

      EventScript { start = 0.7 step = 0.1 } { echo "Save t-$GfsTime.eps { format = EPS }" }
    

  • Boussinesq flow generated by a heated cylinder
  •   EventScript { istep = 4 } { echo "Save stdout { width = 256 height = 512 }" }
    

      EventScript { start = 19 } { echo "Save t.ppm { width = 256 height = 512 }" }
    

      EventScript { start = end } { convert -colors 256 t.ppm t.eps ; rm -f t.ppm }
    

  • Turbulent air flow around RV Tangaroa
  •   EventScript { istep = 4 } { echo "Save stdout { width = 1024 height = 768 }" }
    

      EventScript { start = 1.5 } { echo "Save sections.ppm { width = 1024 height = 768 }" }
    

      EventScript { start = end } {
          convert -colors 256 sections.ppm sections.eps ; rm -f sections.ppm 
      }
    

  • Coalescence of a pair of Gaussian vortices (Gerris logo)
  •     EventScript { start = end } {
            echo "Save logo.ppm { width = 1024 height = 1024 }"
            sleep 5 # to wait for GfsView to finish writing the image
            convert -transparent "#0000FF" logo.ppm -geometry 156x156 logo.png
            montage -background white -geometry +0+0 logo.png logo.eps
            rm -f logo.ppm
        }
    

  • Lunar tides in Cook Strait, New Zealand
  •     EventScript { start = end } {
            cat <<EOF | gnuplot
            set term postscript eps lw 3 solid 20 colour
            set output 'pv.eps'
            set xlabel 'Time (days)'
            set ylabel 'Elevation (metres) or Velocity (metres/s)'
            plot 'p' u (\$3/86400.):(\$9/9.81) w l t "Elevation", \
                 'u' u (\$3/86400.):9 w l t "Velocity"
            set output 'a0.eps'
            set ylabel 'Maximum harmonic elevation (metres)'
            plot [1:]'a0' u (\$3/86400.):(\$9/9.81) w l t ""
    EOF
        }
    

  • Air-water flow around a Series 60 cargo ship
  •     EventScript { istep = 5 end = 4 } { echo "Save stdout { width = 1600 height = 1200 }" }
    

        EventScript { start = 1 step = 1 } { gzip -f -q sim-*.gfs }
    

        EventScript { start = 10 } {
            echo "Save stdout { width = 1600 height = 1200 }" | \
            gfsview-batch3D sim-10.gfs.gz closeup.gfv | \
            convert -colors 256 ppm:- closeup.eps
    
            echo "Save stdout { width = 1600 height = 1200 }" | \
            gfsview-batch3D sim-10.gfs.gz front.gfv | \
            convert -colors 256 ppm:- front.eps
    
            echo "Save stdout { width = 800 height = 600 }" | \
            gfsview-batch3D sim-10.gfs.gz comparison.gfv | \
            convert -trim ppm:- comparison.ppm
    
    #       echo "Save stdout { width = 800 height = 600 }" | \
    #       gfsview-batch3D sim-10.gfs.gz tank-data.gfv | \
    #       convert -trim -flip ppm:- tank-data.png
    
            convert tank-data.png tank-data.ppm
            montage -geometry +0+0 -tile 1x2 tank-data.ppm comparison.ppm png:- | \
            convert -colors 256 png:- comparison.eps        
    
            cat <<EOF | gnuplot
            set term postscript eps lw 3 solid 20 colour
            set output 'f.eps'
            set xlabel 'Time'
            set ylabel 'Force'
            plot 'f' u 1:(\$2*2.) every 10 w l t 'Drag', 'f' every 10 u 1:(\$4*2.) w l t 'Lift'
    EOF
        }
    

  • "Garden sprinkler effect" in wave model
  •     EventScript { step = 12 } { gzip -f sim-*-*-*.gfs }
    

        EventScript { start = end } { gzip -f end-*-*.gfs }
    

  • Time-reversed advection with curvature-based refinement
  •     EventScript { start = 2.5 } { echo "Save t-2.5.eps { format = EPS line_width = 0.5 }" }
    

  • Convergence for the three-way vortex merging problem
  •   EventScript { start = 0.05 } {
        echo Clear
        cat levels.gfv
        echo Save tm_0_05.eps { format = EPS line_width = 0.1 }
        echo Clear
        cat vorticity.gfv
        echo Save tv_0_05.eps { format = EPS line_width = 0.1 }
      }
    

      EventScript { start = 0.15 } {
        echo Clear
        cat levels.gfv
        echo Save tm_0_15.eps { format = EPS line_width = 0.1 }
        echo Clear
        cat vorticity.gfv
        echo Save tv_0_15.eps { format = EPS line_width = 0.1 }
      }
    

      EventScript { start = 0.25 } {
        echo Clear
        cat levels.gfv
        echo Save tm_0_25.eps { format = EPS line_width = 0.1 }
        echo Clear
        cat vorticity.gfv
        echo Save tv_0_25.eps { format = EPS line_width = 0.1 }
      }
    

  • Mass conservation
  •     EventScript { step = 0.2 } {
    	echo "Save stdout { format = Gnuplot }"
        }
    

        EventScript { start = 1.2 } {
    	echo "Clear"
    	cat vectors.gfv
    	echo "Save vectors.gnu { format = Gnuplot }"
        }
    

  • Lid-driven cavity at Re=1000
  •   EventScript { start = end } {
        cat <<EOF | gnuplot
        set term postscript eps lw 3 solid 20
        set output 'xprof.eps'
        set xlabel 'Y'
        set ylabel 'U'
        plot [-0.5:0.5]'xprof.ghia' u 1:2 title "Ghia et al." w p ps 2 pt 9, 'xprof' u 3:7 w l title "Gerris"
        set output 'yprof.eps'
        set xlabel 'X'
        set ylabel 'V'
        plot [-0.5:0.5]'yprof.ghia' u 1:2 title "Ghia et al." w p ps 2 pt 9, 'yprof' u 2:8 w l title "Gerris"
    EOF
      }
    

  • Lid-driven cavity at Re=1000 (explicit scheme)
  •   EventScript { start = end } {
        cat <<EOF | gnuplot
        set term postscript eps lw 3 solid 20
        set output 'xprof.eps'
        set xlabel 'Y'
        set ylabel 'U'
        plot [-0.5:0.5]'../xprof.ghia' u 1:2 title "Ghia et al." w p ps 2 pt 9, 'xprof' u 3:7 w l title "Gerris"
        set output 'yprof.eps'
        set xlabel 'X'
        set ylabel 'V'
        plot [-0.5:0.5]'../yprof.ghia' u 1:2 title "Ghia et al." w p ps 2 pt 9, 'yprof' u 2:8 w l title "Gerris"
    EOF
      }
    

  • Momentum conservation for large density ratios
  •     EventScript { start = end } {
            gnuplot <<EOF
                set term postscript eps color lw 3 solid 20
                set output 'k.eps'
                set xlabel 'Time'
                set ylabel 'Kinetic energy'
                set grid
                plot 'k' u 3:5 w l t ''
    EOF
            if awk '{if ($5 > 7.2e-3) exit (1);}' < k ; then
                return 0;
            else
                return $GFS_STOP;
            fi
        } 
    

  • Hydrostatic balance with solid boundaries and viscosity
  •     EventScript { start = end } { 
            if awk '{if ($9 > 1e-12) exit (1);}' < v ; then
                exit 0;
            else
                exit $GFS_STOP;
            fi
        } 
    

  • Hydrostatic balance with quadratic pressure profile
  •     EventScript { start = end } { 
            if awk '{if ($9 > 1e-12) exit (1);}' < v ; then :
            else
                exit $GFS_STOP;
            fi        
            if awk '{if ($9 > 1e-12) exit (1);}' < p ; then :
            else
                exit $GFS_STOP;
            fi
        } 
    

  • Shape oscillation of an inviscid droplet
  •     EventScript { start = end } {
            cat <<EOF | gnuplot 2>&1 | awk '{if ($1 == "result:") print LEVEL,$2,$3,$4;}'
               k(t)=a*exp(-b*t)*(cos(c*t+3.14159265359)+1.)
               a = 3e-4
               b = 1.5
               c = 153
               fit k(x) 'k-LEVEL' u 3:5 via a,b,c
               print "result: ", a, b, c       
    EOF
            rm -f fit.log
        }
    

  • Geostrophic adjustment
  •   EventScript { istart = 100 iend = 500 istep = 100 } { echo "Save error-$GfsIter.eps { format = EPS }"}
      OutputSimulation { istart = 1500 } stdout
    

      EventScript { istart = 1500 } { echo "Save error-$GfsIter.eps { format = EPS }"}
    

      EventScript { start = end } {
        cat <<EOF | gnuplot
        set term postscript eps lw 3 color solid 20
        set output 'geo_error.eps'
        set xlabel 'Time (days)'
        set ylabel 'Maximum error on surface height (cm)'
        plot 'e.ref' u 1:(\$2*100.) t '' w l, 'e' u 1:(\$2*100.) t 'ref' w l
    EOF
      }
    

  • Coastally-trapped waves
  •   EventScript { start = end } { echo -n "-30 " }
    

      EventScript { start = end } { echo -n "-29 " }
    

      EventScript { start = end } { echo -n "-20 " }
    

      EventScript { start = end } { echo -n "25 " }
    

      EventScript { start = end } { echo -n "26 " }
    

      EventScript { start = end } { echo -n "27 " }
    

      EventScript { start = end } { echo -n "28 " }
    

      EventScript { start = end } { echo -n "29 " }
    

      EventScript { start = end } { echo -n "30 " }
    

      EventScript { start = end } { echo -n "-19 " }
    

      EventScript { start = end } { echo -n "-18 " }
    

      EventScript { start = end } { echo -n "-17 " }
    

      EventScript { start = end } { echo -n "-16 " }
    

      EventScript { start = end } { echo -n "-15 " }
    

      EventScript { start = end } { echo -n "-14 " }
    

      EventScript { start = end } { echo -n "-13 " }
    

      EventScript { start = end } { echo -n "-12 " }
    

      EventScript { start = end } { echo -n "-11 " }
    

      EventScript { start = end } { echo -n "-28 " }
    

      EventScript { start = end } { echo -n "-10 " }
    

      EventScript { start = end } { echo -n "-9 " }
    

      EventScript { start = end } { echo -n "-8 " }
    

      EventScript { start = end } { echo -n "-7 " }
    

      EventScript { start = end } { echo -n "-6 " }
    

      EventScript { start = end } { echo -n "-5 " }
    

      EventScript { start = end } { echo -n "-4 " }
    

      EventScript { start = end } { echo -n "-3 " }
    

      EventScript { start = end } { echo -n "-2 " }
    

      EventScript { start = end } { echo -n "-1 " }
    

      EventScript { start = end } { echo -n "-27 " }
    

      EventScript { start = end } { echo -n "0 " }
    

      EventScript { start = end } { echo -n "0.1 " }
    

      EventScript { start = end } { echo -n "0.2 " }
    

      EventScript { start = end } { echo -n "0.3 " }
    

      EventScript { start = end } { echo -n "0.4 " }
    

      EventScript { start = end } { echo -n "0.5 " }
    

      EventScript { start = end } { echo -n "0.6 " }
    

      EventScript { start = end } { echo -n "0.7 " }
    

      EventScript { start = end } { echo -n "0.8 " }
    

      EventScript { start = end } { echo -n "0.9 " }
    

      EventScript { start = end } { echo -n "-26 " }
    

      EventScript { start = end } { echo -n "1 " }
    

      EventScript { start = end } { echo -n "1.1 " }
    

      EventScript { start = end } { echo -n "1.2 " }
    

      EventScript { start = end } { echo -n "1.3 " }
    

      EventScript { start = end } { echo -n "1.4 " }
    

      EventScript { start = end } { echo -n "1.5 " }
    

      EventScript { start = end } { echo -n "1.6 " }
    

      EventScript { start = end } { echo -n "1.7 " }
    

      EventScript { start = end } { echo -n "1.8 " }
    

      EventScript { start = end } { echo -n "1.9 " }
    

      EventScript { start = end } { echo -n "-25 " }
    

      EventScript { start = end } { echo -n "2 " }
    

      EventScript { start = end } { echo -n "2.1 " }
    

      EventScript { start = end } { echo -n "2.2 " }
    

      EventScript { start = end } { echo -n "2.3 " }
    

      EventScript { start = end } { echo -n "2.4 " }
    

      EventScript { start = end } { echo -n "2.5 " }
    

      EventScript { start = end } { echo -n "2.6 " }
    

      EventScript { start = end } { echo -n "2.7 " }
    

      EventScript { start = end } { echo -n "2.8 " }
    

      EventScript { start = end } { echo -n "2.9 " }
    

      EventScript { start = end } { echo -n "-24 " }
    

      EventScript { start = end } { echo -n "3 " }
    

      EventScript { start = end } { echo -n "3.1 " }
    

      EventScript { start = end } { echo -n "3.2 " }
    

      EventScript { start = end } { echo -n "3.3 " }
    

      EventScript { start = end } { echo -n "3.4 " }
    

      EventScript { start = end } { echo -n "3.5 " }
    

      EventScript { start = end } { echo -n "3.6 " }
    

      EventScript { start = end } { echo -n "3.7 " }
    

      EventScript { start = end } { echo -n "3.8 " }
    

      EventScript { start = end } { echo -n "3.9 " }
    

      EventScript { start = end } { echo -n "-23 " }
    

      EventScript { start = end } { echo -n "4 " }
    

      EventScript { start = end } { echo -n "4.1 " }
    

      EventScript { start = end } { echo -n "4.2 " }
    

      EventScript { start = end } { echo -n "4.3 " }
    

      EventScript { start = end } { echo -n "4.4 " }
    

      EventScript { start = end } { echo -n "4.5 " }
    

      EventScript { start = end } { echo -n "4.6 " }
    

      EventScript { start = end } { echo -n "4.7 " }
    

      EventScript { start = end } { echo -n "4.8 " }
    

      EventScript { start = end } { echo -n "4.9 " }
    

      EventScript { start = end } { echo -n "-22 " }
    

      EventScript { start = end } { echo -n "5 " }
    

      EventScript { start = end } { echo -n "6 " }
    

      EventScript { start = end } { echo -n "7 " }
    

      EventScript { start = end } { echo -n "8 " }
    

      EventScript { start = end } { echo -n "9 " }
    

      EventScript { start = end } { echo -n "10 " }
    

      EventScript { start = end } { echo -n "11 " }
    

      EventScript { start = end } { echo -n "12 " }
    

      EventScript { start = end } { echo -n "13 " }
    

      EventScript { start = end } { echo -n "14 " }
    

      EventScript { start = end } { echo -n "-21 " }
    

      EventScript { start = end } { echo -n "15 " }
    

      EventScript { start = end } { echo -n "16 " }
    

      EventScript { start = end } { echo -n "17 " }
    

      EventScript { start = end } { echo -n "18 " }
    

      EventScript { start = end } { echo -n "19 " }
    

      EventScript { start = end } { echo -n "20 " }
    

      EventScript { start = end } { echo -n "21 " }
    

      EventScript { start = end } { echo -n "22 " }
    

      EventScript { start = end } { echo -n "23 " }
    

      EventScript { start = end } { echo -n "24 " }
    

  • Coastally-trapped waves with adaptive refinement
  •   EventScript { start = end } { echo -n "-30 " }
    

      EventScript { start = end } { echo -n "-29 " }
    

      EventScript { start = end } { echo -n "-20 " }
    

      EventScript { start = end }<