1 | % Use the standard \LaTeXe\ article style in 12pt Computer Modern font |
---|
2 | % on A4 paper by |
---|
3 | \documentclass[12pt,a4paper]{article} |
---|
4 | % Do \emph{not} change the width nor the height of the text from the |
---|
5 | % defaults set by this document class. |
---|
6 | % |
---|
7 | % The alternative which is closer to what we actually use is |
---|
8 | % \documentclass[11pt,a5paper]{article} |
---|
9 | % \usepackage[a5paper]{geometry} |
---|
10 | % Because it is a great size for on screen reading |
---|
11 | % and prints nicely on a4paper either 2up or booklet. |
---|
12 | |
---|
13 | % The preamble is to contain your own \LaTeX\ commands and to say |
---|
14 | % what packages to use. Three useful packages are the following: |
---|
15 | \usepackage{graphicx} % avoid epsfig or earlier such packages |
---|
16 | \usepackage{url} % for URLs and DOIs |
---|
17 | \newcommand{\doi}[1]{\url{http://dx.doi.org/#1}} |
---|
18 | \usepackage{amsmath} % many want amsmath extensions |
---|
19 | \usepackage{amsfonts} |
---|
20 | \usepackage{underscore} |
---|
21 | % Avoid loading unused packages (as done by some \LaTeX\ editors). |
---|
22 | |
---|
23 | % Create title and authors using \verb|\maketitle|. Separate authors by |
---|
24 | % \verb|\and| and put addresses in \verb|\thanks| command with |
---|
25 | % \verb|\url| command \verb|\protect|ed. |
---|
26 | \title{Open Source Software for Computational Modelling of Fluid Flow} |
---|
27 | |
---|
28 | \author{ |
---|
29 | O.~M.~Nielsen\thanks{Risk Assessment Methods Project, Geospatial and |
---|
30 | Earth Monitoring Division, Geoscience Australia, Symonston, |
---|
31 | \textsc{Australia}. \protect\url{mailto:Ole.Nielsen@ga.gov.au}}\footnotemark[1] |
---|
32 | \and |
---|
33 | S.~G.~Roberts\thanks{Dept. of Maths, Australian National University, |
---|
34 | Canberra, \textsc{Australia}. \protect\url{mailto:stephen.roberts}}} |
---|
35 | |
---|
36 | \date{30 December 2006} |
---|
37 | |
---|
38 | \newcommand{\AnuGA}{\textsc{Anuga}} |
---|
39 | \newcommand{\Python}{\textsc{Python}} |
---|
40 | \newcommand{\VPython}{\textsc{VPython}} |
---|
41 | \newcommand{\pypar}{\textsc{mpi}} |
---|
42 | \newcommand{\Metis}{\textsc{Metis}} |
---|
43 | \newcommand{\mpi}{\textsc{mpi}} |
---|
44 | |
---|
45 | \newcommand{\UU}{\mathbf{U}} |
---|
46 | \newcommand{\VV}{\mathbf{V}} |
---|
47 | \newcommand{\EE}{\mathbf{E}} |
---|
48 | \newcommand{\GG}{\mathbf{G}} |
---|
49 | \newcommand{\FF}{\mathbf{F}} |
---|
50 | \newcommand{\HH}{\mathbf{H}} |
---|
51 | \newcommand{\SSS}{\mathbf{S}} |
---|
52 | \newcommand{\nn}{\mathbf{n}} |
---|
53 | |
---|
54 | \newcommand{\code}[1]{\texttt{#1}} |
---|
55 | |
---|
56 | |
---|
57 | %\graphicspath{{../Figures/}} |
---|
58 | |
---|
59 | \begin{document} |
---|
60 | |
---|
61 | % Use default \verb|\maketitle|. |
---|
62 | \maketitle |
---|
63 | |
---|
64 | % Use the \verb|abstract| environment. |
---|
65 | \begin{abstract} |
---|
66 | Modelling the effects on the built environment of natural hazards such |
---|
67 | as riverine flooding, storm surges and tsunami is critical for |
---|
68 | understanding their economic and social impact on our urban |
---|
69 | communities. Geoscience Australia and the Australian National |
---|
70 | University have developed a hydrodynamic inundation modelling tool |
---|
71 | called \AnuGA{} to help simulate the impact of these hazards. |
---|
72 | The core of \AnuGA{} is a \Python{} implementation of a finite-volume method |
---|
73 | for solving the conservative form of the Shallow Water Wave equation. |
---|
74 | In this paper we describe the model, the architecture and some applications. |
---|
75 | ANUGA has recently been released as Open Source. This strategy will enable |
---|
76 | free access to the software and allow the risk research community to |
---|
77 | use, validate and contribute to the software in the future. |
---|
78 | |
---|
79 | %This method allows the study area to be represented by an unstructured |
---|
80 | %mesh with variable resolution to suit the particular problem. The |
---|
81 | %conserved quantities are water level (stage) and horizontal momentum. |
---|
82 | %An important capability of ANUGA is that it can robustly model the |
---|
83 | %process of wetting and drying as water enters and leaves an area. This |
---|
84 | %means that it is suitable for simulating water flow onto a beach or |
---|
85 | %dry land and around structures such as buildings. |
---|
86 | % |
---|
87 | %To set up a particular scenario the user generates a mesh with regions |
---|
88 | %and boundary segments identified by symbolic tags used to bind values |
---|
89 | %to arbitrary functions supplied during the simulation. In addition, |
---|
90 | %all quantities may be assigned or updated by supplying either constant |
---|
91 | %values, arbitrary functions or general expressions combining existing |
---|
92 | %quantities. Arbitrary forcing terms such such as wind stress or |
---|
93 | %atmospheric pressure gradients may also be supplied. While this |
---|
94 | %interface provides great flexibility due to Python's object model, |
---|
95 | %dynamic typing and constructs such as generators, the computationally |
---|
96 | %intensive components are written for efficiency in the C language |
---|
97 | %working directly with the Numerical Python structures. |
---|
98 | \end{abstract} |
---|
99 | |
---|
100 | % By default we include a table of contents in each paper. |
---|
101 | \tableofcontents |
---|
102 | |
---|
103 | % Use \verb|\section|, \verb|\subsection|, \verb|\subsubsection| and |
---|
104 | % possibly \verb|\paragraph| to structure your document. Make sure |
---|
105 | % you \verb|\label| them for cross-referencing with \verb|\ref|\,. |
---|
106 | \section{Introduction} |
---|
107 | \label{sec:intro} |
---|
108 | |
---|
109 | %Floods are the single greatest cause of death due to natural hazards |
---|
110 | %in Australia, causing almost 40{\%} of the fatalities recorded |
---|
111 | %between 1788 and 2003~\cite{Blong-2005}. Analysis of buildings |
---|
112 | %damaged between 1900 and 2003 suggests that 93.6{\%} of damage is |
---|
113 | %the result of meteorological hazards, of which almost 25{\%} is |
---|
114 | %directly attributable to flooding~\cite{Blong-2005}. |
---|
115 | |
---|
116 | Flooding of coastal communities may result from surges of near-shore |
---|
117 | waters caused by severe storms. The extent of inundation is |
---|
118 | critically linked to tidal conditions, bathymetry and topography; as |
---|
119 | recently exemplified in the United States by Hurricane Katrina. |
---|
120 | While the scale of the impact from such events is not common, the |
---|
121 | preferential development of Australian coastal corridors means that |
---|
122 | storm-surge inundation of even a few hundred metres beyond the |
---|
123 | shoreline has increased potential to cause significant disruption |
---|
124 | and loss. |
---|
125 | |
---|
126 | Coastal communities also face the small but real risk of tsunami. |
---|
127 | Fortunately, catastrophic tsunami of the scale of the 26 December |
---|
128 | 2004 event are exceedingly rare. However, smaller-scale tsunami are |
---|
129 | more common and regularly threaten coastal communities around the |
---|
130 | world. Earthquakes which occur in the Java Trench near Indonesia |
---|
131 | (e.g.~\cite{TsuMIS1995}) and along the Puysegur Ridge to the south |
---|
132 | of New Zealand (e.g.~\cite{LebKC1998}) have potential to generate |
---|
133 | tsunami that may threaten Australia's northwestern and southeastern |
---|
134 | coastlines. |
---|
135 | |
---|
136 | Hydrodynamic modelling allows flooding, storm-surge and tsunami |
---|
137 | hazards to be better understood, their impacts to be anticipated |
---|
138 | and, with appropriate planning, their effects to be mitigated. |
---|
139 | Geoscience Australia in collaboration with the Mathematical Sciences |
---|
140 | Institute, Australian National University, is developing a software |
---|
141 | application called \AnuGA{} to model the hydrodynamics of floods, |
---|
142 | storm surges and tsunami. These hazards are modelled using the |
---|
143 | conservative shallow water equations which are described in |
---|
144 | section~\ref{sec:model}. In \AnuGA{} these equations are solved |
---|
145 | using a finite volume method as described in section~\ref{sec:fvm}. |
---|
146 | A more complete discussion of the method can be found in |
---|
147 | \cite{modsim2005} where the model and solution technique is |
---|
148 | validated on a standard tsunami benchmark data set. |
---|
149 | |
---|
150 | In this paper we will provide a description of the parallelisation |
---|
151 | of the code using a domain decomposition strategy and provide the |
---|
152 | preliminary timing results which verify the scalability of the |
---|
153 | parallel code. |
---|
154 | |
---|
155 | |
---|
156 | |
---|
157 | \section{Model} |
---|
158 | \label{sec:model} |
---|
159 | |
---|
160 | The shallow water wave equations are a system of differential |
---|
161 | conservation equations which describe the flow of a thin layer of |
---|
162 | fluid over terrain. The form of the equations are: |
---|
163 | \[ |
---|
164 | \frac{\partial \UU}{\partial t}+\frac{\partial \EE}{\partial |
---|
165 | x}+\frac{\partial \GG}{\partial y}=\SSS |
---|
166 | \] |
---|
167 | where $\UU=\left[ {{\begin{array}{*{20}c} |
---|
168 | h & {uh} & {vh} \\ |
---|
169 | \end{array} }} \right]^T$ is the vector of conserved quantities; water depth |
---|
170 | $h$, $x$ momentum $uh$ and $y$ momentum $vh$. Other quantities |
---|
171 | entering the system are bed elevation $z$ and stage (absolute water |
---|
172 | level) $w$, where the relation $w = z + h$ holds true at all times. |
---|
173 | The fluxes in the $x$ and $y$ directions, $\EE$ and $\GG$ are given |
---|
174 | by |
---|
175 | \[ |
---|
176 | \EE=\left[ {{\begin{array}{*{20}c} |
---|
177 | {uh} \hfill \\ |
---|
178 | {u^2h+gh^2/2} \hfill \\ |
---|
179 | {uvh} \hfill \\ |
---|
180 | \end{array} }} \right]\mbox{ and }\GG=\left[ {{\begin{array}{*{20}c} |
---|
181 | {vh} \hfill \\ |
---|
182 | {vuh} \hfill \\ |
---|
183 | {v^2h+gh^2/2} \hfill \\ |
---|
184 | \end{array} }} \right] |
---|
185 | \] |
---|
186 | and the source term (which includes gravity and friction) is given |
---|
187 | by |
---|
188 | \[ |
---|
189 | \SSS=\left[ {{\begin{array}{*{20}c} |
---|
190 | 0 \hfill \\ |
---|
191 | -{gh(z_{x} + S_{fx} )} \hfill \\ |
---|
192 | -{gh(z_{y} + S_{fy} )} \hfill \\ |
---|
193 | \end{array} }} \right] |
---|
194 | \] |
---|
195 | where $S_f$ is the bed friction. The friction term is modelled using |
---|
196 | Manning's resistance law |
---|
197 | \[ |
---|
198 | S_{fx} =\frac{u\eta ^2\sqrt {u^2+v^2} }{h^{4/3}}\mbox{ and }S_{fy} |
---|
199 | =\frac{v\eta ^2\sqrt {u^2+v^2} }{h^{4/3}} |
---|
200 | \] |
---|
201 | in which $\eta$ is the Manning resistance coefficient. |
---|
202 | |
---|
203 | As demonstrated in our papers, \cite{modsim2005,Rob99l} these |
---|
204 | equations provide an excellent model of flows associated with |
---|
205 | inundation such as dam breaks and tsunamis. |
---|
206 | |
---|
207 | \section{Finite Volume Method} |
---|
208 | \label{sec:fvm} |
---|
209 | |
---|
210 | We use a finite-volume method for solving the shallow water wave |
---|
211 | equations \cite{Rob99l}. The study area is represented by a mesh of |
---|
212 | triangular cells as in Figure~\ref{fig:mesh} in which the conserved |
---|
213 | quantities of water depth $h$, and horizontal momentum $(uh, vh)$, |
---|
214 | in each volume are to be determined. The size of the triangles may |
---|
215 | be varied within the mesh to allow greater resolution in regions of |
---|
216 | particular interest. |
---|
217 | |
---|
218 | \begin{figure} |
---|
219 | \begin{center} |
---|
220 | \includegraphics[width=5.0cm,keepaspectratio=true]{step-five} |
---|
221 | \caption{Triangular mesh used in our finite volume method. Conserved |
---|
222 | quantities $h$, $uh$ and $vh$ are associated with the centroid of |
---|
223 | each triangular cell.} \label{fig:mesh} |
---|
224 | \end{center} |
---|
225 | \end{figure} |
---|
226 | |
---|
227 | The equations constituting the finite-volume method are obtained by |
---|
228 | integrating the differential conservation equations over each |
---|
229 | triangular cell of the mesh. Introducing some notation we use $i$ to |
---|
230 | refer to the $i$th triangular cell $T_i$, and ${\cal N}(i)$ to the |
---|
231 | set of indices referring to the cells neighbouring the $i$th cell. |
---|
232 | Then $A_i$ is the area of the $i$th triangular cell and $l_{ij}$ is |
---|
233 | the length of the edge between the $i$th and $j$th cells. |
---|
234 | |
---|
235 | By applying the divergence theorem we obtain for each volume an |
---|
236 | equation which describes the rate of change of the average of the |
---|
237 | conserved quantities within each cell, in terms of the fluxes across |
---|
238 | the edges of the cells and the effect of the source terms. In |
---|
239 | particular, rate equations associated with each cell have the form |
---|
240 | $$ |
---|
241 | \frac{d\UU_i }{dt}+ \frac1{A_i}\sum\limits_{j\in{\cal N}(i)} \HH_{ij} l_{ij} = \SSS_i |
---|
242 | $$ |
---|
243 | where |
---|
244 | \begin{itemize} |
---|
245 | \item $\UU_i$ the vector of conserved quantities averaged over the $i$th cell, |
---|
246 | \item $\SSS_i$ is the source term associated with the $i$th cell, |
---|
247 | and |
---|
248 | \item $\HH_{ij}$ is the outward normal flux of |
---|
249 | material across the \textit{ij}th edge. |
---|
250 | \end{itemize} |
---|
251 | |
---|
252 | |
---|
253 | %\item $l_{ij}$ is the length of the edge between the $i$th and $j$th |
---|
254 | %cells |
---|
255 | %\item $m_{ij}$ is the midpoint of |
---|
256 | %the \textit{ij}th edge, |
---|
257 | %\item |
---|
258 | %$\mathbf{n}_{ij} = (n_{ij,1} , n_{ij,2})$is the outward pointing |
---|
259 | %normal along the \textit{ij}th edge, and The |
---|
260 | |
---|
261 | The flux $\HH_{ij}$ is evaluated using a numerical flux function |
---|
262 | $\HH(\cdot, \cdot ; \ \cdot)$ which is consistent with the shallow |
---|
263 | water flux in the sense that for all vectors $\UU$ and $\nn$ |
---|
264 | $$ |
---|
265 | H(\UU,\UU;\ \nn) = \EE(\UU) n_1 + \GG(\UU) n_2 . |
---|
266 | $$ |
---|
267 | |
---|
268 | Then |
---|
269 | $$ |
---|
270 | \HH_{ij} = \HH(\overline{\UU}_i(m_{ij})), |
---|
271 | \overline{\UU}_i(m_{ij})), \mathbf{n}_{ij}) |
---|
272 | $$ |
---|
273 | where $m_{ij}$ is the midpoint of the \textit{ij}th edge and |
---|
274 | $\mathbf{n}_{ij}$ is the outward pointing normal on the |
---|
275 | \textit{ij}th edge. The function $\overline{\UU}_i(x)$ for $x \in |
---|
276 | T_i$ is obtained from the average values, $\UU_i$, of the $i$th and |
---|
277 | neighbouring cells. |
---|
278 | |
---|
279 | We use a second order reconstruction to produce a piece-wise linear |
---|
280 | function construction of the conserved quantities for all $x \in |
---|
281 | T_i$ for each cell (see Figure~\ref{fig:mesh:reconstruct}. This |
---|
282 | function is allowed to be discontinuous across the edges of the |
---|
283 | cells, but the slope of this function is limited to avoid |
---|
284 | artificially introduced oscillations. |
---|
285 | |
---|
286 | Godunov's method (see \cite{Toro-92}) involves calculating the |
---|
287 | numerical flux function $\HH(\cdot, \cdot ; \ \cdot)$ by exactly |
---|
288 | solving the corresponding one dimensional Riemann problem normal to |
---|
289 | the edge. We use the central-upwind scheme of \cite{KurNP2001} to |
---|
290 | calculate an approximation of the flux across each edge. |
---|
291 | |
---|
292 | \begin{figure} |
---|
293 | \begin{center} |
---|
294 | \includegraphics[width=5.0cm,keepaspectratio=true]{step-reconstruct} |
---|
295 | \caption{From the values of the conserved quantities at the centroid |
---|
296 | of the cell and its neighbouring cells, a discontinuous piecewise |
---|
297 | linear reconstruction of the conserved quantities is obtained.} |
---|
298 | \label{fig:mesh:reconstruct} |
---|
299 | \end{center} |
---|
300 | \end{figure} |
---|
301 | |
---|
302 | |
---|
303 | |
---|
304 | |
---|
305 | |
---|
306 | In the computations presented in this paper we use an explicit Euler |
---|
307 | time stepping method with variable timestepping adapted to the |
---|
308 | observed CFL condition. |
---|
309 | |
---|
310 | \section{Software Implementation} |
---|
311 | |
---|
312 | To set up a scenario the user specifies the geometry (derived from bathymetric and topographic data), the initial water level, boundary conditions (e.g. tide), outputs from other models (e.g. a deep water tsunami model), and forcing terms (e.g. frictional resistance, wind stress, atmospheric pressure gradients etc.). The geometry could for example be a digital elevation model of an estuary and a boundary could be a collection of time series derived from tide gauges. |
---|
313 | |
---|
314 | To help with these tasks, a tool called pmesh has been developed which allows the user to set up the geometry of the problem interactively. Pmesh produces a triangular mesh of the study area in which the user can specify the locations and types of boundary conditions that apply as well as identifying regions for either mesh refinement or for assignment of values at run time. Figure \ref{fig:anuga mesh} shows an example of |
---|
315 | a geometry generated by pmesh. |
---|
316 | |
---|
317 | |
---|
318 | |
---|
319 | \begin{figure} |
---|
320 | \begin{center} |
---|
321 | \includegraphics[width=5.0cm,keepaspectratio=true]{tsunami-fig-1} |
---|
322 | \caption{Triangular mesh used in our finite volume method. Conserved |
---|
323 | quantities $h$, $uh$ and $vh$ are associated with the centroid of |
---|
324 | each triangular cell.} \label{fig:anuga mesh} |
---|
325 | \end{center} |
---|
326 | \end{figure} |
---|
327 | |
---|
328 | |
---|
329 | %Figure 1 Mesh generated by pmesh for a reservoir simulation. |
---|
330 | |
---|
331 | When the model is run, the mesh is converted into a domain object which represents the study area, the mesh, quantities, boundaries and forcing terms together with methods for time stepping, flux calculations, and all other numerical operations pertinent to the model. |
---|
332 | |
---|
333 | |
---|
334 | The (conserved) quantities updated by the numerical scheme are stage (water level) and horizontal momentum while bed elevation and friction are quantities that are not updated. Setting initial values for quantities is done through the method |
---|
335 | domain.set_quantity(name, X, location, region) |
---|
336 | where name is the name of the quantity (e.g. 'stage', 'xmomentum', 'ymomentum', 'elevation' or 'friction'). The variable X represents the source data for populating the quantity and may take one of the following forms: |
---|
337 | |
---|
338 | \begin{itemize} |
---|
339 | |
---|
340 | \item A constant value as in domain.set_quantity('stage', 1) which will set the initial water level to 1 m everywhere. |
---|
341 | \item Another quantity or a linear combination of quantities. If q1 and q2 are two arbitrary quantities defined within the same domain, the expression set_quantity('stage', q1*(3*q2 + 5)) will set the stage quantity accordingly. One common application of this would be to assign the stage as a constant depth above the bed elevation. |
---|
342 | \item An arbitrary function (or a callable object), f(x, y), where x and y are assumed to be vectors. The quantity will take values for f at each location within the mesh. |
---|
343 | \item An arbitrary set of points and associated values (wrapped into a point_set object). The points need not coincide with triangle vertices or centroids and a penalised least squares technique is employed to populate the quantity in a smooth and stable way. |
---|
344 | \item A filename containing points and attributes. |
---|
345 | \item A Numerical Python array (or a list of numbers) ordered according to the internal data structure. |
---|
346 | \end{itemize} |
---|
347 | |
---|
348 | |
---|
349 | The parameter location determines whether the values should be assigned to triangle edge midpoints or vertices and region allows the operation to be restricted to a region specified by a symbolic tag or a set of indices. |
---|
350 | |
---|
351 | Since the least squares technique can be time consuming for large problems, set_quantity employs a caching technique which automatically decides whether to perform the computations or retrieve them from a cache. This will typically speed up the build by several orders of magnitude after each computation has been performed once. |
---|
352 | |
---|
353 | Boundary conditions are bound to symbolic tags through the method domain.set_boundary which takes as input a lookup table (implemented as a Python dictionary) of the form {tag: boundary_object}. The boundary objects are all assumed to be callable functions of vectors x and y. Several predefined standard boundary objects are available and it is relatively straightforward to define problem-specific custom boundaries if needed. The predefined boundary conditions include Dirichlet, Reflective, Transmissive, Temporal, and Spatio-Temporal boundaries. |
---|
354 | |
---|
355 | Forcing terms can be written according to a fixed protocol and added to the model using the idiom domain.forcing_terms.append(F) where F is assumed to be a user-defined callable object. |
---|
356 | |
---|
357 | When the simulation is running, the length of each time step is determined from the maximal speeds encountered and the sizes of triangles in order not to violate the CFL condition which specifies that no information should skip any triangles in one time step. With large speeds and small triangles, time steps can become very small. In order to access the state of the simulation at regular time intervals, AnuGA uses the method evolve: |
---|
358 | For t in domain.evolve(yieldstep, duration): |
---|
359 | <do whatever> |
---|
360 | |
---|
361 | The parameter duration specifies the time period over which evolve operates, and control is passed to the body of the for-loop at each fixed yieldstep. The internal time stepping is thus decoupled from the overall time stepping so that outputs may be stored, displayed or interrogated. The evolve method has been implemented using a Python generator. |
---|
362 | |
---|
363 | Figure \ref{fig:beach runup} shows a simulation of water flowing onto a |
---|
364 | hypothetical beach with obstacles. |
---|
365 | A number of complex patterns are captured in this example including a shock where water reflected off the wall far (at the right hand side) meets the main flow. Other physical features are the standing waves and interference patterns. |
---|
366 | |
---|
367 | |
---|
368 | \begin{figure} |
---|
369 | \begin{center} |
---|
370 | \includegraphics[width=5.0cm,keepaspectratio=true]{tsunami-fig-2} |
---|
371 | \caption{A hypothetical runup scenario.} |
---|
372 | \label{fig:beach runup} |
---|
373 | \end{center} |
---|
374 | \end{figure} |
---|
375 | |
---|
376 | |
---|
377 | %Figure 2 Simulation of a levee breach. |
---|
378 | |
---|
379 | Most of the components of AnuGA are written in Python, an object-oriented programming language known for its clarity, elegance, efficiency and reliability. It is often said that "Python lets you focus on the problem at hand". This means that it is possible to develop complex pieces of software without undue distractions in dealing with idiosyncrasies of the software language syntax. Consequently, software written in Python can be produced quickly and can be readily adapted to changing requirements throughout its lifetime. |
---|
380 | |
---|
381 | |
---|
382 | |
---|
383 | |
---|
384 | |
---|
385 | |
---|
386 | |
---|
387 | |
---|
388 | \section{Validation} |
---|
389 | \label{sec:validation} The process of validating the \AnuGA{} |
---|
390 | application is in its early stages, however initial indications are |
---|
391 | encouraging. |
---|
392 | |
---|
393 | As part of the Third International Workshop on Long-wave Runup |
---|
394 | Models in 2004 (\url{http://www.cee.cornell.edu/longwave}), four |
---|
395 | benchmark problems were specified to allow the comparison of |
---|
396 | numerical, analytical and physical models with laboratory and field |
---|
397 | data. One of these problems describes a wave tank simulation of the |
---|
398 | 1993 Okushiri Island tsunami off Hokkaido, Japan \cite{MatH2001}. A |
---|
399 | significant feature of this tsunami was a maximum run-up of 32~m |
---|
400 | observed at the head of the Monai Valley. This run-up was not |
---|
401 | uniform along the coast and is thought to have resulted from a |
---|
402 | particular topographic effect. Among other features, simulations of |
---|
403 | the Hokkaido tsunami should capture this run-up phenomenon. |
---|
404 | |
---|
405 | \begin{figure}[htbp] |
---|
406 | \centerline{\includegraphics[width=4in]{tsunami-fig-3.eps}} |
---|
407 | \caption{Comparison of wave tank and \AnuGA{} water stages at gauge |
---|
408 | 5.}\label{fig:val} |
---|
409 | \end{figure} |
---|
410 | |
---|
411 | |
---|
412 | \begin{figure}[htbp] |
---|
413 | \centerline{\includegraphics[width=4in]{tsunami-fig-4.eps}} |
---|
414 | \caption{Complex reflection patterns and run-up into Monai Valley |
---|
415 | simulated by \AnuGA{} and visualised using our netcdf OSG |
---|
416 | viewer.}\label{fig:run} |
---|
417 | \end{figure} |
---|
418 | |
---|
419 | |
---|
420 | The wave tank simulation of the Hokkaido tsunami was used as the |
---|
421 | first scenario for validating \AnuGA{}. The dataset provided |
---|
422 | bathymetry and topography along with initial water depth and the |
---|
423 | wave specifications. The dataset also contained water depth time |
---|
424 | series from three wave gauges situated offshore from the simulated |
---|
425 | inundation area. |
---|
426 | |
---|
427 | Figure~\ref{fig:val} compares the observed wave tank and modelled |
---|
428 | \AnuGA{} water depth (stage height) at one of the gauges. The plots |
---|
429 | show good agreement between the two time series, with \AnuGA{} |
---|
430 | closely modelling the initial draw down, the wave shoulder and the |
---|
431 | subsequent reflections. The discrepancy between modelled and |
---|
432 | simulated data in the first 10 seconds is due to the initial |
---|
433 | condition in the physical tank not being uniformly zero. Similarly |
---|
434 | good comparisons are evident with data from the other two gauges. |
---|
435 | Additionally, \AnuGA{} replicates exceptionally well the 32~m Monai |
---|
436 | Valley run-up, and demonstrates its occurrence to be due to the |
---|
437 | interaction of the tsunami wave with two juxtaposed valleys above |
---|
438 | the coastline. The run-up is depicted in Figure~\ref{fig:run}. |
---|
439 | |
---|
440 | This successful replication of the tsunami wave tank simulation on a |
---|
441 | complex 3D beach is a positive first step in validating the \AnuGA{} |
---|
442 | modelling capability. Subsequent validation will be conducted as |
---|
443 | additional datasets become available. |
---|
444 | |
---|
445 | |
---|
446 | |
---|
447 | \section{Parallel Implementation}\label{sec:parallel} |
---|
448 | |
---|
449 | To parallelize our algorithm we use a simple domain decomposition |
---|
450 | strategy. We suppose we have a global mesh which defines the domain |
---|
451 | of our problem. We must first subdivide the global mesh into a set |
---|
452 | of non-overlapping submeshes. This partitioning is done using the |
---|
453 | \Metis{} partitioning library. We will demonstrate the efficiency of |
---|
454 | this library in the following subsections. Once this partitioning |
---|
455 | has been done, and the proper communication patterns set, we can |
---|
456 | start to evolve our solution. Each timestep consists of |
---|
457 | independently and then communicate the appropriate ``ghost'' cell |
---|
458 | information once each timestep. |
---|
459 | |
---|
460 | %\begin{figure}[hbtp] |
---|
461 | % \centerline{ \includegraphics[scale = 0.6]{domain.eps}} |
---|
462 | % \caption{The first step of the parallel algorithm is to divide |
---|
463 | % the mesh over the processors.} |
---|
464 | % \label{fig:subpart} |
---|
465 | %\end{figure} |
---|
466 | |
---|
467 | |
---|
468 | |
---|
469 | \begin{figure}[h!] |
---|
470 | \centerline{ \includegraphics[width=6.5cm]{mermesh.eps}} |
---|
471 | \caption{The global Merimbula mesh} |
---|
472 | \label{fig:mergrid} |
---|
473 | \end{figure} |
---|
474 | |
---|
475 | \begin{figure}[h!] |
---|
476 | \centerline{ \includegraphics[width=6.5cm]{mermesh4c.eps} |
---|
477 | \includegraphics[width=6.5cm]{mermesh4a.eps}} |
---|
478 | |
---|
479 | \centerline{ \includegraphics[width=6.5cm]{mermesh4d.eps} |
---|
480 | \includegraphics[width=6.5cm]{mermesh4b.eps}} |
---|
481 | \caption{The global Merimbula mesh partitioned into 4 submeshes using \Metis.} |
---|
482 | \label{fig:mergrid4} |
---|
483 | \end{figure} |
---|
484 | |
---|
485 | |
---|
486 | |
---|
487 | |
---|
488 | \begin{table}[h!] |
---|
489 | \caption{4-way and 8-way partition tests of Merimbula mesh showing |
---|
490 | the percentage distribution of cells between the |
---|
491 | submeshes.}\label{tbl:mer} |
---|
492 | \begin{center} |
---|
493 | \begin{tabular}{|c|c c c c|} |
---|
494 | \hline |
---|
495 | CPU & 0 & 1 & 2 & 3\\ |
---|
496 | \hline |
---|
497 | Cells & 2757 & 2713 & 2761 & 2554\\ |
---|
498 | \% & 25.6\% & 25.2\% & 25.6\% & 23.7\%\ \\ |
---|
499 | \hline |
---|
500 | \end{tabular} |
---|
501 | |
---|
502 | \medskip |
---|
503 | |
---|
504 | \begin{tabular}{|c|c c c c c c c c|} |
---|
505 | \hline |
---|
506 | CPU & 0 & 1 & 2 & 3 & 4 & 5 & 6 & 7\\ |
---|
507 | \hline |
---|
508 | Cells & 1229 & 1293 & 1352 & 1341 & 1349 & 1401 & 1413 & 1407\\ |
---|
509 | \% & 11.4\% & 12.0\% & 12.5\% & 12.4\% & 12.5\% & 13.0\% & 13.1\% & 13.1\%\\ |
---|
510 | \hline |
---|
511 | \end{tabular} |
---|
512 | \end{center} |
---|
513 | \end{table} |
---|
514 | |
---|
515 | |
---|
516 | \section{Conclusions} |
---|
517 | \label{sec:6} \AnuGA{} is a flexible and robust modelling system |
---|
518 | that simulates hydrodynamics by solving the shallow water wave |
---|
519 | equation in a triangular mesh. It can model the process of wetting |
---|
520 | and drying as water enters and leaves an area and is capable of |
---|
521 | capturing hydraulic shocks due to the ability of the finite-volume |
---|
522 | method to accommodate discontinuities in the solution. |
---|
523 | |
---|
524 | \AnuGA{} can take as input bathymetric and topographic datasets and |
---|
525 | simulate the behaviour of riverine flooding, storm surge and |
---|
526 | tsunami. Initial validation using wave tank data supports AnuGA's |
---|
527 | ability to model complex scenarios. Further validation will be |
---|
528 | pursued as additional datasets become available. |
---|
529 | |
---|
530 | \AnuGA{} is already being used to model the behaviour of |
---|
531 | hydrodynamic natural hazards. This modelling capability is part of |
---|
532 | Geoscience Australia's ongoing research effort to model and |
---|
533 | understand the potential impact from natural hazards in order to |
---|
534 | reduce their impact on Australian communities. |
---|
535 | |
---|
536 | |
---|
537 | %\paragraph{Acknowledgements:} |
---|
538 | %The authors are grateful to Belinda Barnes, National Centre for |
---|
539 | %Epidemiology and Population Health, Australian National University, |
---|
540 | %and Matt Hayne and Augusto Sanabria, Risk Research Group, Geoscience |
---|
541 | %Australia, for helpful reviews of a previous version of this paper. |
---|
542 | %Author Nielsen publish with the permission of the CEO, Geoscience |
---|
543 | %Australia. |
---|
544 | |
---|
545 | % Preferably provide your bibliography as a separate .bbl file. |
---|
546 | % Include URLs, DOIs, Math Review numbers or Zentralblatt numbers in your bibliography |
---|
547 | % so we help connect the web of science and ensure maximum visibility |
---|
548 | % for your article. |
---|
549 | \bibliographystyle{plain} |
---|
550 | \bibliography{database1} |
---|
551 | |
---|
552 | |
---|
553 | |
---|
554 | |
---|
555 | \end{document} |
---|