4. Two-Dimensional Solver
In this part of out project, we’ll cover the extension of our one-dimensional discretization to two spatial dimensions. Then, we’ll compare our two-dimensional solver to the one-dimensional one of the previous parts. After this chapter, we have all numerics at hand and will be able to conduct tsunami simulations in the following parts.
4.1. Dimensional Splitting
In their differential form, the two-dimensional shallow water equations are given as:
The method of dimensional splitting allows us to apply our one-dimensional f-wave solver to the shallow water equations in two spatial dimensions.
For this we split the two-dimensional problem into two one-dimensional ones which we solve after each other in so-called sweeps.
The
The
As in the one-dimensional case, a cell
where
Note: We continue using our constant time step derived in the setup phase. This is valid as long as the CFL-criterion in Eq. 4.1.2 is satisfied for all time steps.
Tasks
Add support for two-dimensional problems to the solver. Implement dimensional splitting through a new class
patches::WavePropagation2d
. Change other parts of the software as required but keep supporting one-dimensional settings.Implement a circular dam break setup in the computational domain
by using the following initial values:Illustrate your support for bathymetry in two dimensions by adding an obstacle to the computational domain of the circular dam break setup.
4.2. Stations
When solving wave propagation problems, we are often times interested in output at specific points (or stations) of the computational domain.
For a given station

Fig. 4.2.1 Map of some DART stations in the Pacific. The stations are shown as yellow diamonds with their respective ids.
Fig. 4.2.1 shows a set of stations which are of interest for the 2011 M 9.1 Tohoku tsunami event. Specifically, the locations of some Deep-ocean Assessment and Reporting of Tsunamis (DART) stations are given. For these stations, we can access data of past tsunami events and thus do validation by comparing our numerical solutions to the measured data. An example of such a comparison is given in Fig. 4.2.2.
Fig. 4.2.2 Comparison of synthetic data (“Computed Solution”) to observed data (“Measured Data”) at DART station 21419 for the 2011 M 9.1 Tohoku tsunami event.
Tasks
Add a new class
tsunami_lab::io::Stations
which summarizes a collection of user-defined stations. Each station has a name and a location in space. All stations share the output frequency in seconds. The output for each station should be written in a separate ASCII-CSV file.Find a suitable way to provide the names and locations of each stations to your solver. Further, implement a time step-independent output frequency for the stations. Keep in mind, that this runtime-configuration should be extensible and usable in later parts of the project. One possible solution are XML-based runtime configurations through the library pugixml.
Use a symmetric problem setup, e.g., a circular dam break problem, to compare your two-dimensional solver to your one-dimensional one at a set of stations.
(optional) Run a “convergence study”, i.e., use a synthetic setup and decrease the size of your grid cells. For example, for the computational domain
you could test mesh-spacings . Compare your solution at a set of points, what do you observe?