File: monai.gfs

package info (click to toggle)
gerris 20131206%2Bdfsg-21
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 14,252 kB
  • sloc: ansic: 66,595; sh: 15,922; f90: 1,513; makefile: 1,150; fortran: 696; python: 493; awk: 104; lisp: 89; xml: 27
file content (208 lines) | stat: -rw-r--r-- 7,681 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
# Title: Tsunami runup onto a complex three-dimensional beach
#
# Description:
#
# This example is a classical validation test case for tsunami
# models. It was proposed at the \htmladdnormallinkfoot{"Third
# international workshop on long-wave runup
# models"}{http://isec.nacse.org/workshop/2004\_cornell/bmark2.html}. It
# is based on experimental data obtained in a wave tank in order to
# understand the extreme runups observed near the village of Monai
# during the 1993 Okushiri tsunami.
#
# The animation in Figure \ref{monai} gives a general idea of the
# geometry and time evolution of the modelled tsunami. The bathymetry
# data and channel geometry matches that used in the experimental wave
# tank. The water surface is forced on the open boundary with the
# experimentally-imposed waveform (outside the field of view on the
# right-hand-side in the animation). The initial dryout as well as
# extreme runup in the narrow central valley are clearly visible in
# the animation, as well as wave reflections from the boundaries and
# dimples in the water surface caused by underwater vortices.
#
# \begin{figure}[htbp]
# \caption{\label{monai}Animation of the water surface (light blue)
# and bathymetry (white) for the Monai tsunami.}
# \begin{center}
# \htmladdnormallinkfoot{\includegraphics[width=0.8\hsize]{monai.eps}}{monai.mpg}
# \end{center}
# \end{figure}
#
# Another view of the process together with the adaptive mesh used to
# resolve the flow is given in Figure \ref{topview}. This figure can
# be compared with that of LeVeque and George (Figure 4 of
# \cite{leveque2006}).
#
# \begin{figure}[htbp]
# \caption{\label{topview}Evolution of the free surface elevation
# (left column) and corresponding adaptive mesh (right
# column). Contour lines of the topography are represented. The areas
# in white in the left column are dry. The wet areas are coloured
# according to free surface elevation relative to the unperturbed
# water surface. A ``jet'' colour scale is used with a maximum value
# (dark red) of $+5$ cm and a minimum value (dark blue) of $-5$ cm.}
# \begin{center}
# \begin{tabular}{cc}
# \includegraphics[width=0.5\hsize]{fig4-10.eps} &
# \includegraphics[width=0.5\hsize]{mesh-10.eps} \\
# \multicolumn{2}{c}{$t = 10$ s} \\
# \includegraphics[width=0.5\hsize]{fig4-12.eps} &
# \includegraphics[width=0.5\hsize]{mesh-12.eps} \\
# \multicolumn{2}{c}{$t = 12$ s} \\
# \includegraphics[width=0.5\hsize]{fig4-14.eps} &
# \includegraphics[width=0.5\hsize]{mesh-14.eps} \\
# \multicolumn{2}{c}{$t = 14$ s} \\
# \includegraphics[width=0.5\hsize]{fig4-16.eps} &
# \includegraphics[width=0.5\hsize]{mesh-16.eps} \\
# \multicolumn{2}{c}{$t = 16$ s} \\
# \includegraphics[width=0.5\hsize]{fig4-18.eps} &
# \includegraphics[width=0.5\hsize]{mesh-18.eps} \\
# \multicolumn{2}{c}{$t = 18$ s} \\
# \includegraphics[width=0.5\hsize]{fig4-20.eps} &
# \includegraphics[width=0.5\hsize]{mesh-20.eps} \\
# \multicolumn{2}{c}{$t = 20$ s}
# \end{tabular}
# \end{center}
# \end{figure}
#
# Experimental data includes free-surface elevation timeseries at
# several locations (see Figure \ref{topview}, $t = 18$ s). Figures
# \ref{p5}, \ref{p7} and \ref{p9} give comparisons of the experimental
# and numerical timeseries.
#
# \begin{figure}[htbp]
# \caption{\label{p5}Time-series of free-surface elevation measured
# and calculated at the location of probe 5.}
# \begin{center}
# \includegraphics[width=0.8\hsize]{p5.eps}
# \end{center}
# \end{figure}
#
# \begin{figure}[htbp]
# \caption{\label{p7}Time-series of free-surface elevation measured
# and calculated at the location of probe 7.}
# \begin{center}
# \includegraphics[width=0.8\hsize]{p7.eps}
# \end{center}
# \end{figure}
#
# \begin{figure}[htbp]
# \caption{\label{p9}Time-series of free-surface elevation measured
# and calculated at the location of probe 9.}
# \begin{center}
# \includegraphics[width=0.8\hsize]{p9.eps}
# \end{center}
# \end{figure}
#
# Finally, the animation in Figure \ref{comparison} gives a comparison
# between the overhead video of the experiment and the corresponding
# view of the simulation.
#
# \begin{figure}[htbp]
# \caption{\label{comparison}Comparison between the video of the
# experiment (left) and the simulation results (right).}
# \begin{center}
# \htmladdnormallinkfoot{\includegraphics[width=0.8\hsize]{comparison.eps}}{comparison.mp4}
# \end{center}
# \end{figure}
#
# More details on this simulation and the method used is given in
# \cite{popinet2011}.
#
# Author: St\'ephane Popinet
# Command: sh monai.sh
# Required files: monai.sh 3D.gfv leveque.gfv mesh.gfv overhead.gfv probe.gfv
# Version: 110107
# Running time: 50 minutes
# Generated files: monai.mpg monai.eps fig4-10.eps mesh-10.eps fig4-12.eps mesh-12.eps fig4-14.eps mesh-14.eps fig4-16.eps mesh-16.eps fig4-18.eps mesh-18.eps fig4-20.eps mesh-20.eps p5.eps p7.eps p9.eps comparison.eps comparison.mp4

# below this depth the flow is considered "dry"
Define DRY 1e-4

# use the GfsRiver Saint-Venant solver
# shift the origin of the reference box to (0,0)
2 1 GfsRiver GfsBox GfsGEdge { x = 0.5 y = 0.5 } {
    # the domain is 3.402 m X 6.804 m
    # units for time are seconds
    PhysicalParams { L = 3.402 g = 9.81 }
    Refine 6

    # maintain the Zb1 variable using the GTS surface
    VariableFunction Zb1 bathy.gts

    # the initial water level is at z = 0, so the depth P is...
    Init {} {
        P = MAX (0., -Zb1)
    }

    # use a Sweby limiter rather than the default minmod which is too
    # dissipative
    AdvectionParams { gradient = gfs_center_sweby_gradient }

    # adapt down to 9 levels based on the slope of the (wet)
    # free-surface and with a tolerance of 1 mm
    AdaptGradient { istep = 1 } {
        cmax = 1e-3
        cfactor = 2
        maxlevel = 9
        minlevel = 6
    } (P < DRY ? 0. : P + Zb)

    # at each timestep
    Init { istep = 1 } {
	# Add a "shelf" to simulate the wall on the right-hand-side boundary
	Zb = (x > 5.448 ? 0.13535 : Zb1)
        # read in the experimental timeseries in variable 'input'
	input = input.cgd
        # implicit quadratic bottom friction with coefficient 1e-3
	U = (P > DRY ? U/(1. + dt*1e-3*Velocity/P) : 0.)
	V = (P > DRY ? V/(1. + dt*1e-3*Velocity/P) : 0.)
        P = (P > DRY ? P : 0.)
    }

    Time { end = 22.5 }
    OutputTime { istep = 10 } stderr
    OutputTiming { start = end } stderr
    OutputSimulation { step = 1 } stdout
    OutputSimulation { step = 1 } sim-%g.gfs
    EventScript { step = 1 } { gzip -f sim-*.gfs }

    # output data at probe locations
    OutputLocation { istep = 1 } input 1e-3 1.7 0
    OutputLocation { istep = 1 } p5 4.521 1.196 0
    OutputLocation { istep = 1 } p7 4.521 1.696 0
    OutputLocation { istep = 1 } p9 4.521 2.196 0

    # kinetic energy
    OutputScalarSum { istep = 1 } ke { v = (P > 0. ? Velocity2*P : 0.) }
    # free-surface elevation
    OutputScalarStats { istep = 1 } p { v = (Zb > 0. ? P : P + Zb) }
    OutputScalarNorm { istep = 1 } u { v = Velocity }
    OutputTime { istep = 1 } balance
    OutputBalance { istep = 1 } balance

    # generate movies
    GModule gfsview
    OutputView { start = 9 step = 0.0416 } { ppm2mpeg -s 640x480 > monai.mpg } { 
	width = 1280 height = 960
    } 3D.gfv
    OutputView { start = 14.63 end = 19.5 step = 0.033333333 } { 
	ppm2mpeg -s 400x600 > overhead.mpg 
    } { 
	width = 800 height = 1200
    } overhead.gfv
} {
    dry = DRY
}
GfsBox {
    # use 'subcritical' boundary condition to impose the experimental
    # water level on the left boundary
    left = Boundary { BcSubcritical U (input - Zb) }
    top = Boundary
    bottom = Boundary
}
GfsBox {
    top = Boundary
    bottom = Boundary
}
1 2 right