3.1 Introduction

Coastal ocean models are used in a variety of applications; examples include predicting tidal cycles in coastal regions, operations of ports and military installations, modeling environmental conditions in bays and estuaries, and natural hazards such as hurricane storm surges and tsunamis. Flow in coastal regions, and even in deeper water, separates into long-wave and short-wave components (Holthuijsen 2007). Long-wave phenomena can be modeled using the standard shallow water equations. Short-waves require more complex mathematical treatment. Short-wave models are further categorized into phase-resolving and non-phase resolving models. Non-phase resolving models are typically used over large coastal and oceanic regions, since it is impossible to model each individual wave in the ocean. In the nearshore, where solitary waves are present, phase resolving models should be used. We focus on such models in this paper.

The numerical simulation of water waves near the coast requires a mathematical model which can include the highly nonlinear and dispersive properties of the wave regime in these areas. Although, the wave motion in such regions is a three dimensional process, the Boussinesq wave theory considers a polynomial distribution for the velocity field in the vertical direction and reduces the problem to a two dimensional description (Boussinesq 1872). In fact, Boussinesq’s core assumption is the linear variation of the velocity field from zero at the bottom to a maximum value at the water surface. The conditions for validity of this assumption were not completely understood at the time, but it is now realized that if the fluid flow belongs to the shallow water regime, the polynomial variation of the velocity field can be well justified (Lannes 2013).

In order to identify the shallow water regime, we define three dimensionless parameters based on the typical length scales in our problem. As shown in Fig. 3.1, we consider a typical horizontal length scale (\(l_0\)), a typical water depth scale (\(h_0\)), a typical wave amplitude (\(a_0\)), and a typical topography scale (\(b_0\)). According to these scales, we define the nonlinearity parameter (\(\varepsilon = a_0/h_0\)), topography parameter (\(\beta = b_0/h_0\)), and the shallowness parameter (\(\mu = h_0/l_0\)). As can be inferred from its name, \(\varepsilon \) signifies the amount of nonlinear behavior in our problem. Meanwhile, the main assumption in the shallow water regime is \(\mu \ll 1\), and if this assumption is in place, we can use the Boussinesq’s technique to formulate a 2D problem from the original 3D setup. Hence, we do not need any special assumption on \(\varepsilon \) or \(\beta \) to develop the shallow water regime equations. However, in practice, in order to simplify the equations, one can assume that \(\varepsilon = O(\mu ^2)\) to get the weakly nonlinear equations. In this context, Peregrine (1967) was among the first ones to assume a quadratic variation for the vertical velocity and let \(\varepsilon = O(\mu ^2)\) to form what is now known as the classical Boussinesq equation. In this derivation, the terms of order \(\mu ^4\) (such as \(\varepsilon \mu ^2\)) were ignored to simplify the equations. In general, if we neglect the terms of order \(\mu ^N\) or higher in an approximate model, we call that model \(O(\mu ^N)\)-consistent with the original water wave problem (or simply \(O(\mu ^N)\) model).

Fig. 3.1
figure 1

Domain of the problem, employed notations, and the length scales

The \(O(\mu ^4)\) model of Peregrine has some limitations, the most important of which are its weak dispersive and nonlinear properties. In other words, it is not applicable to problems with relatively large \(\mu \)’s, and since its nonlinear properties are tuned to match its dispersion, it also does not perform well for moderately nonlinear waves. As a result, the phase velocities computed using this model are only valid for long waves with \(k h_0 < 0.75\) (k being the wavenumber) (Madsen 2003). Among the studies which have tried to fix this issue (Nwogu 1993; Madsen et al. 2002; Barthélemy 2004), Witting pioneered the use of Padé approximation to obtain a good fit for the linear phase speed of the Stokes waves (Witting 1984). This approach was later pursued by Madsen et al. (1991), where they incorporated a spatial derivative of the water surface elevation to substitute a temporal derivative of the horizontal velocity. On a separate path, Nwogu (1993) proposed a new formulation based on the velocity at an arbitrary depth, instead of the velocity at the still water elevation, and obtained an improved matching for the linear celerity. The resulting dispersion relation was similar to the one obtained in Madsen et al. (1991). This techniques was later improved by others (Wei and Kirby 1995; Madsen and Sørensen 1992), and resulted in models with linear dispersion relations, which are valid up to \(kh_0 = 6\). However, the issue of weak nonlinearity was still unresolved. An effort to relax the assumption on the nonlinearity parameter was to take \(\varepsilon = O(\mu )\) and \(\beta = O(\mu ^2)\), and obtain \(O(\mu ^6)\)-consistent equations, i.e. keeping terms such as \(\varepsilon ^2 \mu ^2\), \(\varepsilon ^3 \mu ^2\), and \(\varepsilon \mu ^4\) in the equations (Madsen and Schäffer 1998). In general, fixing both nonlinear and dispersive effects in the above coupled setting makes the equations very complicated, and designing numerical methods for them is not straightforward. One of the examples of such efforts was proposed in Gobbi et al. (2000), where the equation is \(O(\mu ^6)\)-consistent with the original water wave problem, and contains up to fifth order derivatives. This results in a valid linear dispersion relation up to \(k h_0 = 6\), and acceptable nonlinear properties up to \(kh_0 = 3\).

In all of the above techniques, there is a coupling between the nonlinearity and shallowness assumption in the problem. As a result, they have inconsistent linear and nonlinear dispersion properties. However, if we can decouple these two features, we can inherit the nonlinear dispersive properties from the linear case. In one of the first efforts towards this goal (Agnon et al. 1999), the shoaling and dispersion are included in the model by solving the Laplace’s equation with the kinematic boundary conditions, while the nonlinearity is treated using Euler’s equation, based on Zakharov’s methodology (Zakharov 1968). Based on this approach, other models were developed, which are shown to be valid for a wide range of wavenumbers up to \(kh_0 = 25\) (Madsen et al. 2002; Madsen 2003). In order to enhance the dispersive behavior of these models for high bathymetry gradients, a new model was developed in Madsen et al. (2006).

Another group of methods for deriving the nonlinear dispersive wave equations, is based on using the so-called Dirichlet-Neumann (DN) operator. This operator was formulated by Craig et al. (1992), Craig and Sulem (1993), and its application to highly variable bathymetry was carried out in Artiles and Nachbin (2004a), Artiles and Nacbin (2004b). In the last decade, multiple works have been carried out to construct Serre-Green-Naghdi models (Serre 1953; Green and Naghdi 1976), which are \(O(\mu ^4)\)-consistent, and are suitable for fully nonlinear (\(\varepsilon =O(1)\)) problems on arbitrary bathymetry (\(\beta =O(1)\)) (Lannes and Bonneton 2009; Bonneton et al. 2011; Lannes and Marche 2015). The main advantage in all of these works is their relatively straightforward computational implementation, due to their maximum order of spatial derivatives being three. It has been shown that by using different techniques such as introducing new tuning parameters, one can achieve a very good approximation to the dispersion relation using these \(O(\mu ^4)\) models (Chazel et al. 2009, 2011). Moreover, by dropping the assumption of water being irrotational, another group of models has been devised (Zhang et al. 2013, 2014; Castro and Lannes 2014). In Table 3.1 we have summarized the main features of a number of shallow water models based on the considered range of the dimensionless parameters.

In this article, we review the derivation of the irrotational \(O(\mu ^4)\)-consistent equation for the fully nonlinear waves on an arbitrary bathymetry. We then show a set of numerical results based on a hybridized discontinuous Galerkin solver for this equation.

Table 3.1 Orders of precision of different models and the corresponding nonlinearity (\(\varepsilon \)) and topography (\(\beta \)) parameters

3.2 The Water Wave Problem

At a given time t, let \(D_t\) denote the subset of \(\mathbb R^{d+1}\), which is filled with water (refer to Fig. 3.1). At a given point \((\boldsymbol{x},z) \in D_t\), let \(\textbf{U}(t,\boldsymbol{x},z) \in \mathbb R^{d+1}\) denote the velocity of a fluid particle. Meanwhile \(\boldsymbol{u}(t,\boldsymbol{x},z)\in \mathbb R^d\) and \(w(t,X,z)\in \mathbb R\) are the horizontal and vertical components of the velocity. At this point, \(p(t,\boldsymbol{x},z)\) denotes the pressure. The acceleration of gravity, which acts in the vertical direction (\(-g \textbf{e}_z\)), is taken constant everywhere. Moreover, we use \(\nabla \) to denote the gradient in the horizontal direction and \(\boldsymbol{\nabla }\) to denote \((\nabla , \partial _z)^T\). Similarly, we use \(\varDelta \), and \(\boldsymbol{\varDelta }\) to denote \(\nabla ^2\), and \(\nabla ^2 + \partial _z^2\), respectively. Assuming the water to be inviscid, incompressible, and uniform, with irrotational motion, its flow is governed by the following equations:

$$\begin{aligned}&\partial _t \textbf{U}+ (\textbf{U}\cdot \boldsymbol{\nabla }) \textbf{U}= -\tfrac{1}{\rho }\boldsymbol{\nabla } p - g \textbf{e}_z \quad&\text { in } D_t, \end{aligned}$$
(3.1a)
$$\begin{aligned}&\boldsymbol{\nabla } \cdot \textbf{U}= 0 \quad&\text { in } D_t, \end{aligned}$$
(3.1b)
$$\begin{aligned}&\boldsymbol{\nabla } \times \textbf{U}= 0 \quad&\text { in } D_t. \end{aligned}$$
(3.1c)

Meanwhile, the particles on the top boundary (\(z=\zeta (t, \textbf{x})\)) and the bottom boundary (\(z=b(\textbf{x})\)) should not cross \(\varGamma _T\) and \(\varGamma _B\):

$$\begin{aligned}&\textbf{U}\cdot \boldsymbol{n} = 0 \quad&\text { on } \varGamma _B, \end{aligned}$$
(3.1d)
$$\begin{aligned}&\partial _t \zeta + \nabla \zeta \cdot \boldsymbol{u} - w = 0 \quad&\text { on } \varGamma _T. \end{aligned}$$
(3.1e)

Referring to Fig. 3.1, one can obtain the normal vector on \(\varGamma _T\) by taking the gradient of the equation: \(z-\zeta (t, \boldsymbol{x}) = 0\) (which describes \(\varGamma _T\)) and get: \(\boldsymbol{n}|_{\varGamma _T} = (-\nabla \zeta , 1)/\sqrt{1+|\nabla \zeta |^2}\). Hence, it is possible to write (3.1e) in the following form, as well:

$$\begin{aligned} \partial _t \zeta - \sqrt{1+|\nabla \zeta |^2} \, \textbf{U}\cdot \boldsymbol{n} = 0, \quad \text { on } \varGamma _T. \end{aligned}$$
(3.1e*)

Due to (3.1c), we can find a velocity potential function (\(\varPhi \)), such that \(\boldsymbol{\nabla }\varPhi = \textbf{U}\). Substituting this into (3.1a), and assuming pressure at the water surface to be \(p_{\text {atm}}\), (3.1a) becomes:

$$\begin{aligned} \partial _t \varPhi + \tfrac{1}{2} |\boldsymbol{\nabla }\varPhi |^2 + gz = -\tfrac{1}{\rho }(p - p_{\text {atm}}). \end{aligned}$$
(3.2)

Next, we define \(\psi \) as the trace of \(\varPhi \) on the water surface, i.e. \(\varPhi |_{z=\zeta (\textbf{x})}=\psi \). Accordingly, we can express (3.1b–d), in terms of the velocity potential, and get the following boundary value problem:

$$\begin{aligned} \boldsymbol{\varDelta }\varPhi = 0 \text { in } D_t, \qquad \varPhi = \psi \text { on } \varGamma _T, \qquad \boldsymbol{\nabla }\varPhi \cdot \boldsymbol{n} = 0 \text { on } \varGamma _B. \end{aligned}$$
(3.3)

Under proper regularity assumptions, the solution to the above system depends on \(\psi \), and the parametrization of \(\varGamma _T, \varGamma _B\) using \(\zeta , b\). Hence, we identify the Dirichlet-Neumann operator (\(\mathcal G[\zeta , b]\)), which solves the above system for a given \(\psi \) and maps it as follows:

$$\begin{aligned} \mathcal G [\zeta ,b]: \psi \mapsto \sqrt{1+|\nabla \zeta |^2} \, \partial _n \varPhi | _{\varGamma _T} \end{aligned}$$
(3.4)

or, equivalently (compare (3.1e) and (3.1e*)):

$$\begin{aligned} \mathcal G [\zeta ,b]: \psi \mapsto -\nabla \zeta \cdot \nabla \varPhi |_{\varGamma _T} + \partial _z \varPhi |_{\varGamma _T} \end{aligned}$$
(3.4*)

For a rigorous definition of this operator over its functional settings, we refer the interested reader to Lannes (2013). We use \(\mathcal G\) to write (3.1e) in terms of the d-dimensional coordinates and unknowns, in the form:

$$\begin{aligned} \partial _t \zeta - \mathcal G[\zeta , b] \psi = 0. \end{aligned}$$
(3.5)

Next, we want to express (3.3) independent of the vertical coordinate. Hence, we need to remove \(\varPhi \), and its derivatives from this equation. Since, \(\psi (t,\textbf{x})=\varPhi (t,\textbf{x}, \zeta (t,\textbf{x}))\), we use the chain rule to get:

$$\begin{aligned}&\partial _t \varPhi = \partial _t \psi - \partial _z \varPhi \, \partial _t \zeta \quad \text { on } \varGamma _T, \end{aligned}$$
(3.6a)
$$\begin{aligned}&\nabla \varPhi = \nabla \psi - \partial _z \varPhi \, \nabla \zeta \quad \text { on } \varGamma _T. \end{aligned}$$
(3.6b)

For \(\partial _z \varPhi \), we start from (3.1e) and use (3.6) and the above relations to get:

$$\begin{aligned} \partial _z \varPhi = \frac{\mathcal G[\zeta ,b]\psi +\nabla \zeta \cdot \nabla \psi }{1+|\nabla \zeta |^2} \quad \text { on } \varGamma _T. \end{aligned}$$
(3.6c)

It will be fruitful if we can find a relationship between the DN operator and the depth averaged velocity. To this end, we can start from the definition of the average velocity, to get the following relation for the average momentum:

$$ (h\bar{\textbf{u}})(t,\textbf{x}) = \int _{-h_0+b}^\zeta \nabla \varPhi (t, \textbf{x}, z) \, dz. $$

We then take the divergence of this formula in the horizontal direction, apply Leibnitz rule, employ \(\boldsymbol{\varDelta }\varPhi = 0\), and use the boundary conditions (3.1d, e), to get:

$$ \nabla \cdot (h \bar{\textbf{u}}) = -\partial _z \varPhi |_{\varGamma _T} + \nabla \zeta \cdot \nabla \varPhi |_{\varGamma _T} $$

Comparing this with (3.1e), one has:

$$\begin{aligned} \mathcal G[\zeta , b] \psi = -\nabla \cdot (h\bar{\textbf{u}}) \end{aligned}$$
(3.7)

Consequently, we can substitute (3.6) into (3.2), and along with (3.5), we obtain the following system of equations:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _t \zeta + \nabla \cdot (h \bar{\textbf{u}}) = 0,\\ \partial _t \psi + g \zeta + \dfrac{1}{2} |\nabla \psi |^2 - \dfrac{\left( \nabla \zeta \cdot \nabla \psi - \nabla \cdot (h \bar{\textbf{u}})\right) ^2}{2(1+|\nabla \zeta |^2)} = 0. \end{array}\right. } \end{aligned}$$
(3.8)

3.2.1 Dispersive Properties of the Linear Waves

The dispersion relation corresponding to Eq. (3.8) can be obtained by writing this equation in terms of the perturbations of velocity potential and water surface about the rest state on a flat bathymetry, i.e. setting \(\zeta = 0\), \(b=0\). This requires solving the following BVP:

$$\begin{aligned} \boldsymbol{\varDelta }\varPhi = 0 \text { in } D_t, \qquad \varPhi = \psi \text { on } \varGamma _T, \qquad \partial _z \varPhi = 0 \text { on } \varGamma _B, \end{aligned}$$
(3.9)

along with the following linearized system of equations:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _t \zeta - \mathcal G[0,0] \psi = 0,\\ \partial _t \psi + g \zeta = 0. \end{array}\right. } \end{aligned}$$
(3.10)

Here, \(\varGamma _B\) is parametrized as \(z=-h_0\). Now, we take the Fourier transform of (3.9) with respect to \(\textbf{x}\), to obtain the following problem in terms of the wave vector \(\textbf{k}\):

$$\begin{aligned} \partial _z^2 \hat{\varPhi }(\textbf{k}, z) = 0 \text { in } D_t, \qquad \hat{\varPhi } = \hat{\psi }\text { on } \varGamma _T, \qquad \partial _z \hat{\varPhi } = 0 \text { on } \varGamma _B. \end{aligned}$$
(3.11)

This results in the following solution:

$$\begin{aligned} \hat{\varPhi }(\textbf{k},z) = \frac{\cosh [(z+h_0)|\textbf{k}|]}{\cosh (h_0|\textbf{k}|)} \hat{\psi }(\textbf{k}). \end{aligned}$$
(3.12)

Since, in the linearized case, \(\boldsymbol{n}|_{\varGamma _T} = (\textbf{0},1)\), we can simply write \(\sqrt{1+|\nabla \zeta |^2} \, \partial _n \varPhi \) as \(\partial _z \varPhi \). Therefore, in the wavenumber domain we have the following:

$$ {\mathcal G}[0,0] \hat{\psi }= \partial _z \hat{\varPhi } = |\textbf{k}| \tanh (|\textbf{k}| h_0)\hat{\psi }(\textbf{k}). $$

By substituting this into (3.10), we get the following equation for \(\hat{\zeta }\):

$$ \partial _t^2 \hat{\zeta }(\textbf{k}) + g |\textbf{k}| \tanh (h_0 |\textbf{k}|)\hat{\zeta }(\textbf{k}) = 0. $$

By taking the Fourier transform of this equation with respect to t, we get the well-known dispersion relation of the linear water waves:

$$ \omega (\textbf{k}) = \sqrt{g |\textbf{k}| \tanh (h_0 |\textbf{k}|)}, $$

and the phase speed of linear waves at different wavenumbers (\(k = |\textbf{k}|\)) can be computed using:

$$\begin{aligned} c(kh_0) = \sqrt{gh_0} \frac{\sqrt{\tanh (kh_0)}}{\sqrt{kh_0}} \end{aligned}$$
(3.13)

If k in the above relation correspond to the length scale in our problem, i.e. \(k=2\pi /l_0\), then we obtain the typical celerity of gravity waves in our problem:

$$ c_0 = \sqrt{g h_0 \nu } \,, \quad \text { with } \quad \nu = \frac{\tanh (2\pi \mu )}{2 \pi \mu }, $$

with \(\mu \) being the shallowness parameter. One can clearly observe that \(\mu \) characterizes the typical wavenumber in the problem. When we are dealing with very long waves (\(\mu \ll 1\)), we can assume that \(\nu \simeq 1\). Thus the water waves are nondispersive in such cases, that is all of the wavelengths travel with the same speed. On the other hand, when we have intermediate values for \(\mu \), the longer waves travel faster than the shorter waves and the water waves show dispersive properties.

3.2.2 Scaling of Variables and Operators

In order to obtain the nondimensional equations, we should know the typical scales of coordinates, variable, and the corresponding operators. Here, we first introduce the time scale as the ratio of \(l_0\) by \(c_0\) (phase speed of linear waves): \(t_0= l_0 / \sqrt{gh_0}\). Accordingly, we can define the nondimensional space and time coordinates (denoted with primes):

$$\begin{aligned} \textbf{x}' = x/l_0, \quad z' = z/h_0, \quad t' = t/ t_0, \end{aligned}$$
(3.14)

and their corresponding differential operators:

$$\begin{aligned} \begin{gathered} \nabla ' = l_0 \nabla , \quad \boldsymbol{\nabla }' = l_0(\nabla , \mu \, \partial _z)^T , \quad \boldsymbol{\varDelta }' = l_0^2 (\nabla ^2 + \mu ^2 \, \partial _z^2), \quad \partial _{t'} = t_0 \partial _t, \\ \boldsymbol{\nabla }= \tfrac{1}{h_0}(\mu \, \nabla ', \partial _{z'})^T, \quad \boldsymbol{\varDelta }= \tfrac{1}{h_0^2} (\mu ^2 \, {\nabla '}^2 + \partial _{z'}^2). \end{gathered} \end{aligned}$$
(3.15)

The scaling of \(\zeta \), b, and \(h = \zeta + h_0 - b\) is straightforward:

$$\begin{aligned} \zeta ' = \frac{\zeta }{a_0}, \quad b' = \frac{b}{b_0}, \quad h'=\frac{h}{h_0}. \end{aligned}$$
(3.16)

We also want to find a typical scale for \(\varPhi \). To this end, we first refer to (3.9), which states that \(\varPhi \) and \(\psi \) should have the same order of magnitude. Moreover, we look at the second equation of (3.10), which gives us a typical magnitude for \(\psi \):

$$\begin{aligned} \begin{gathered} \frac{1}{t_0} \partial _{t'} \psi _0 \psi ' + g a_0 \zeta ' = 0 \Longrightarrow \psi _0 = \frac{a_0}{h_0}l_0\sqrt{gh_0}, \\ \varPhi = \frac{\varPhi }{\varPhi _0} , {\text { with }} \quad \varPhi _0 = \psi _0. \end{gathered} \end{aligned}$$
(3.17)

We also define a typical length scale for the horizontal velocity based on \(\boldsymbol{u}_0 = \nabla \varPhi _0\), or in terms of the nondimensional variables: \(\boldsymbol{u}_0 \boldsymbol{u}' = (\varPhi _0/l_0) \nabla ' \varPhi '\). Thus, the dimensionless horizontal velocity can be defined as:

$$\begin{aligned} \boldsymbol{u}' = \frac{1}{\boldsymbol{u}_0} \boldsymbol{u} \, , \text { with } \quad \boldsymbol{u}_0 = \frac{\varPhi _0}{l_0} = \varepsilon \sqrt{gh_0}. \end{aligned}$$
(3.18)

Before obtaining the nondimensionalized forms of the equations, we consider scaling the Dirichlet-Neumann operator. According to (3.4), we know that \(\mathcal G[\zeta , b] \psi = \partial _z \varPhi - \nabla \varPhi \cdot \nabla \zeta \) on the water surface. By substituting the derivatives and variables from (3.14)–(3.18), we have:

$$ \mathcal G[\zeta ,b]\psi = \frac{\varPhi _0}{h_0}(\partial _{z'} \varPhi ' - \mu ^2 \nabla '(\varepsilon \zeta ') \cdot \nabla \varPhi ')|_{z'=\varepsilon \zeta '}. $$

Thus we define:

$$\begin{aligned} \mathcal G'[\varepsilon \zeta ', \beta b'] \psi ' :=(\partial _{z'} \varPhi ' - \mu ^2 \nabla '(\varepsilon \zeta ') \cdot \nabla \varPhi ')|_{z'=\varepsilon \zeta '}, \end{aligned}$$
(3.19)

to get:

$$\begin{aligned} \mathcal G[\zeta ,b] \psi = \frac{\varPhi _0}{h_0} \mathcal G'[\varepsilon \zeta ' , \beta b'] \psi ' \end{aligned}$$
(3.20)

3.2.3 Nondimensionalization of Equations

Here, we first obtain the nondimensionalized version of the boundary value problem (3.3). Using the definitions in the previous section, this equation takes the form:

$$\begin{aligned}&\mu ^2 \nabla '^2 \varPhi '+ \partial _{z'}^2 \varPhi ' = 0 \quad&\text { in } -1+\beta b' \le z' \le \varepsilon \zeta ', \end{aligned}$$
(3.21a)
$$\begin{aligned}&\varPhi ' = \psi ' \quad&\text { on }z'=\varepsilon \zeta ',\end{aligned}$$
(3.21b)
$$\begin{aligned}&\partial _{z'} \varPhi ' - \mu ^2 \nabla '(\beta b') \cdot \nabla ' \varPhi ' = 0 \quad&\text { on } \ z=-1+\beta b'. \end{aligned}$$
(3.21c)

It will be useful to write (3.7) in the dimensionless form. This will be a straightforward application of definitions for \(\nabla '\), \(\varPhi '\), \(h'\), and \(\boldsymbol{u}'\):

$$ \mathcal G'[\varepsilon \zeta ' , \beta b'] \psi ' = - \mu ^2 \, \nabla ' \cdot (h' \bar{\boldsymbol{u}}') $$

Next, we substitute the above definitions of nondimensional variables and operators to write Eqs. (3.8) in the nondimensionalized form:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t'} \zeta ' + \nabla ' \cdot (h' \bar{\boldsymbol{u}}') = 0, \\ \partial _{t'} \psi ' + \zeta ' + \dfrac{\varepsilon }{2}|\nabla \psi '|^2 - {\varepsilon \mu ^2} \, \dfrac{\left( \nabla ' (\varepsilon \zeta ') \cdot \nabla ' \psi '-\nabla ' \cdot (h' \bar{\boldsymbol{u}}')\right) ^2}{2(1+\varepsilon ^2\mu ^2 |\nabla ' \zeta '|^2)} = 0. \end{array}\right. } \end{aligned}$$
(3.22)

Now, we solve (3.21) exploiting the fact that \(\mu \ll 1\). To this end, let us consider approximating the velocity potential based on the following asymptotic expansion:

$$\begin{aligned} \varPhi '(t,\boldsymbol{x},z) = \sum _{n=0}^{N} \mu ^{2n} \, \varPhi '_n(t,\boldsymbol{x},z) + O(\mu ^{2(N+1)}) \end{aligned}$$
(3.23)

Hence, by including only the summation (\(\sum _{n=0}^{N} \mu ^{2n} \, \varPhi '_n(t,\boldsymbol{x},z)\)) in the right hand side, we approximate \(\varPhi \) up to \(O(\mu ^{2(N+1)})\), and the corresponding model would be \(O(\mu ^{2(N+1)})\)–consistent with the original water wave problem. Although, the \(O(\mu ^4)\) model that we consider here will not have a very good precision for \(kh_0 > 1.0\), there are techniques to improve its dispersive properties and increase its range of validity up to \(k h_0 = 4\) (Chazel et al. 2009, 2011).

Now, if we substitute (3.23) to the boundary value problem (3.21), and arrange the terms with the same power of \(\mu \), we get:

$$\begin{aligned} \partial _{z'}^2 \varPhi '_n = {\left\{ \begin{array}{ll} 0, \quad &{} \text { for } n = 0,\\ -(\nabla ')^2 \varPhi '_{n-1}, \quad &{} \text { otherwise}. \end{array}\right. } \end{aligned}$$
(3.24)

Meanwhile, we let \(\varPhi '_0\) satisfy the boundary condition on the top and set the homogeneous boundary condition for other \(\varPhi '_n\)’s. Thus the boundary conditions find the form:

$$\begin{aligned} \varPhi _n' =&{\left\{ \begin{array}{ll} \psi ' , \quad &{}\text { for } n= 0,\\ 0 , \quad &{}\text { otherwise}, \end{array}\right. }{} & {} \text{ for } \quad {z'=\varepsilon \zeta '},\end{aligned}$$
(3.25)
$$\begin{aligned} \partial _{z'} \varPhi '_n =&{\left\{ \begin{array}{ll} 0 , \quad &{}\text { for } n=0,\\ \beta \nabla ' b' \cdot \nabla ' \varPhi '_{n-1} \quad &{}\text { otherwise,} \end{array}\right. }{} & {} \text{ for } \quad {z'=-1+\beta b'}. \end{aligned}$$
(3.26)

We have to solve a simple ODE to obtain the solution to \(\varPhi '_0\). Afterwards, the solution to \(\varPhi '_1\) will be obtained by substituting \(\varPhi '_0\) in the above equations and solving another ODE. The process is straightforward, and can be done using computer algebra software. Thus, we will have:

$$\begin{aligned} \varPhi '_0&= \psi ' \end{aligned}$$
(3.27a)
$$\begin{aligned} \varPhi '_1&= -\frac{\nabla '^2 \psi '}{2}z'^2 + \left[ (-1+\beta b')\nabla '^2\psi '+\beta \nabla b'\cdot \nabla \psi \right] z \nonumber \\ {}&+ \frac{\nabla '^2 \psi }{2} \left[ h'^2-(1-\beta b')^2\right] - \beta (h'-1+\beta b') \nabla 'b'\cdot \nabla ' \psi ' \end{aligned}$$
(3.27b)

It is worthwhile noting that for an \(O(\mu ^2)\) model, i.e. \(\varPhi ' = \varPhi '_0\), the velocity potential is constant in depth. This means, the velocity field does not depend on the z-coordinate in the \(O(\mu )\) models. An example of such models is the Saint-Venant equation, also known as the nonlinear shallow water equation (NSWE). Moreover, the vertical component of the velocity, i.e. \(w'=\partial _{z'} \varPhi '\) vanishes in these models. On the other hand, in \(O(\mu ^4)\) models, such as Green–Naghdi equation, the velocity varies quadratically in depth.

Next, let us obtain the velocity variation corresponding to \(\varPhi '_0\) and \(\varPhi '_1\). In the nondimensionalized coordinates we have:

$$ \bar{\boldsymbol{u}}'_{n} = \frac{1}{h'} \int _{-1+\beta b'}^{\zeta '} \nabla \varPhi '_n\, dz'. $$

By substituting \(\varPhi _0'\) and \(\varPhi _1'\) from (3.27) into the above relation, and some algebraic manipulation, we can obtain \(\bar{\boldsymbol{u}}'_0\) and \(\bar{\boldsymbol{u}}'_1\):

$$\begin{aligned} \bar{\boldsymbol{u}}'_0 = \nabla ' \psi ', \end{aligned}$$
(3.28)
$$\begin{aligned} \bar{\boldsymbol{u}}'_1 = - {\mu ^2} \mathcal T'[h', b']\nabla ' \psi ', \end{aligned}$$
(3.29)

where

$$\begin{aligned} \mathcal T'[h', b'] \textbf{w}= \mathcal R'_1[h', b'](\nabla ' \cdot \textbf{w}) + \beta \mathcal R_2'[h, b'] (\nabla b' \cdot \textbf{w}), \end{aligned}$$
(3.30)

and,

$$\begin{aligned} \mathcal R'_1[h',b'] w&= -\frac{1}{3h'} \nabla '(h'^3 w) - \beta \frac{h'}{2} w \nabla ' b', \end{aligned}$$
(3.31a)
$$\begin{aligned} \mathcal R'_2[h',b'] w&= \frac{1}{2\,h'} \nabla ' (h'^2 w) + \beta w \nabla ' b'. \end{aligned}$$
(3.31b)

Now, we can write the following relation for average velocity (dropping \([h',b']\) from \(\mathcal T'\)):

$$\begin{aligned} \bar{\boldsymbol{u}}' = \nabla ' \psi ' - \mu ^2 \mathcal T' \nabla ' \psi ' + O(\mu ^4) \end{aligned}$$
(3.32)

Therefore, \(\nabla ' \psi ' = \bar{\boldsymbol{u}}' + \mu ^2 \mathcal T' \nabla \psi ' + O(\mu ^4)\). Substituting \(\nabla ' \psi '\) from this relation into itself will result in:

$$\begin{aligned} \nabla ' \psi ' =&\bar{\boldsymbol{u}}' + \mu ^2 \mathcal T' \bar{\boldsymbol{u}}' + \mu ^4 \mathcal T'\left( \mathcal T' \nabla ' \psi '\right) + O(\mu ^4) \nonumber \\&\therefore \quad \nabla ' \psi ' = \bar{\boldsymbol{u}}' + \mu ^2 \mathcal T' \bar{\boldsymbol{u}}' + O(\mu ^4). \end{aligned}$$
(3.33)

This relation is the last piece of machinery to derive the Green–Naghdi wave model. As an example of deriving an asymptotic wave model, we can start from (3.22), take the gradient of the second equation and drop all of the terms of order \(O(\mu ^2)\) to obtain the nonlinear shallow water equation (NSWE):

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t'} \zeta ' + \nabla ' \cdot (h'\bar{\boldsymbol{u}}') = 0, \\ \partial _{t'} \bar{\boldsymbol{u}}' + \nabla ' \zeta ' + \varepsilon \bar{\boldsymbol{u}}' \cdot \nabla \bar{\boldsymbol{u}}' = 0. \end{array}\right. } \end{aligned}$$

We usually prefer the equations to be in terms of the conserved variables, i.e. \(h, h \bar{\boldsymbol{u}}\). Hence, we use \(\partial _{t'} h' = \varepsilon \partial _{t'} \zeta '\), and \(\partial _{t'} \boldsymbol{u}' = [\partial _{t'}(h'\bar{\boldsymbol{u}}')+\varepsilon \bar{\boldsymbol{u}}' \nabla ' \cdot (h'\bar{\boldsymbol{u}}')]/h\) in the second equation to obtain:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t'} h' + \varepsilon \nabla ' \cdot (h'\bar{\boldsymbol{u}}') = 0, \\ \partial _{t'} (h'\bar{\boldsymbol{u}}') + \varepsilon \nabla ' \cdot (h'\bar{\boldsymbol{u}}' \otimes \bar{\boldsymbol{u}}')+ \dfrac{1}{\varepsilon }h' (\nabla ' (h'+\beta b')) = 0. \end{array}\right. } \end{aligned}$$

Finally, we can write the equations with dimensions:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t} h + \nabla \cdot (h\bar{\boldsymbol{u}}) = 0, \\ \partial _{t} (h\bar{\boldsymbol{u}}) + \nabla \cdot (h\bar{\boldsymbol{u}} \otimes \bar{\boldsymbol{u}})+ g h \nabla h + g h \nabla b = 0. \end{array}\right. } \end{aligned}$$

3.2.4 Green–Naghdi Equation

The process for obtaining Green-Naghdi equation is similar to what we explained for NSWE; however, in the final step, instead of dropping all terms of order \(O(\mu ^{2N})\), with \(N\ge 1\), we drop the terms of order \(O(\mu ^{2N})\), with \(N\ge 2\). We encourage the interested readers to also consult the original materials, in which these equations were introduced (Lannes and Bonneton 2009; Lannes 2013). Now, let us write Green–Naghdi equation in terms of the dimensionless variables:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t'} \zeta ' + \nabla '\cdot (h' \bar{\boldsymbol{u}}') = 0,\\ (I+\mu \mathcal T') (\partial _{t'} \bar{\boldsymbol{u}}') + \nabla ' \zeta ' + \varepsilon (\bar{\boldsymbol{u}}'\cdot \nabla ')\bar{\boldsymbol{u}}' + \varepsilon \mu \mathcal Q' (\bar{\boldsymbol{u}}') = 0. \end{array}\right. } \end{aligned}$$
(3.34)

With, \(\mathcal T'\) defined in (3.30), and \(\mathcal Q'\) is defined in terms of \(\mathcal R'_1\) and \(\mathcal R'_2\), which were introduced in (3.31):

$$\begin{aligned} \mathcal Q'(\textbf{w}) = \mathcal R'_1\left( \nabla ' \cdot (\textbf{w}\nabla ' \cdot \textbf{w})-2(\nabla '\cdot \textbf{w})^2\right) + \beta \mathcal R'_2 \left( (\textbf{w}\cdot \nabla ')^2 b'\right) \end{aligned}$$
(3.35)

It is observed that \(\mathcal Q'\) contains up to third order derivatives of the velocity field, which we can avoid computing by introducing a new operator \(\mathcal Q'_1\) as follows:

$$\begin{aligned} \mathcal Q'_1(\textbf{w}) = \mathcal T'\left( (\textbf{w}\cdot \nabla )\textbf{w}\right) - \mathcal Q' (\textbf{w}). \end{aligned}$$
(3.36)

Now, \(\mathcal Q'_1\) contains up to second derivatives, and has the form:

$$\begin{aligned} \mathcal Q'_1(\textbf{w}) = -2\mathcal R'_1\left( \partial _{x'} \textbf{w}\cdot \partial _{y'} \textbf{w}^\perp +(\nabla '\cdot \textbf{w})^2\right) + \beta \mathcal R'_2\left( \textbf{w}\cdot (\textbf{w}\cdot \nabla ')\nabla ' b'\right) \end{aligned}$$
(3.37)

Here, \(\textbf{w}^\perp = (-w_2, w_1)^T\); meanwhile, \(\partial _{x'}\), and \(\partial _{y'}\) are the partial derivatives with respect to \(x'\), and \(y'\) respectively. Using this definition, the equation (3.34) becomes:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t'} \zeta ' + \nabla '\cdot (h' \bar{\boldsymbol{u}}') = 0,\\ (I+\mu \mathcal T') \left( \partial _{t'} \bar{\boldsymbol{u}}' + \varepsilon (\bar{\boldsymbol{u}}' \cdot \nabla ')\bar{\boldsymbol{u}}'\right) + \nabla ' \zeta ' + \varepsilon \mu \mathcal Q'_1 (\bar{\boldsymbol{u}}') = 0. \end{array}\right. } \end{aligned}$$
(3.38)

Similar to the previous section, we prefer the equations in terms of \(h', h'\bar{\boldsymbol{u}}'\):

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t'} h' + \varepsilon \nabla '\cdot (h' \bar{\boldsymbol{u}}') = 0,\\ \left( I+\mu h' \mathcal T'\frac{1}{h'}\right) \left( \partial _{t'} (h' \bar{\boldsymbol{u}}') + \varepsilon \nabla ' \cdot (h' \bar{\boldsymbol{u}}' \otimes \bar{\boldsymbol{u}}')\right) + h' \nabla ' \zeta ' + \varepsilon \mu h' \mathcal Q_1' (\bar{\boldsymbol{u}}') = 0. \end{array}\right. } \end{aligned}$$
(3.39)

If we apply the inverse operator \(\left( I+\mu h' \mathcal T'\frac{1}{h}\right) ^{-1}\) on the second equation, we can simplify the numerical simulation of this equation. Afterwards, we go back to the unknowns with dimensions and the above system becomes:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t} h + \nabla \cdot (h \bar{\boldsymbol{u}}) = 0,\\ \partial _{t} (h \bar{\boldsymbol{u}}) + \nabla \cdot (h \bar{\boldsymbol{u}} \otimes \bar{\boldsymbol{u}}) + \left( I+\mu h \mathcal T\frac{1}{h}\right) ^{-1} \left( g h \nabla \zeta + h \mathcal Q_1 (\bar{\boldsymbol{u}})\right) = 0. \end{array}\right. } \end{aligned}$$
(3.40)

The operators \(\mathcal T\) and \(\mathcal Q_1\) with dimensions are according to (3.30) and (3.37) with \(\beta =1\), respectively. It is possible to modify this equation to get a set of equations with better dispersive properties (Chazel et al. 2011; Bonneton et al. 2011), or make it more suitable for large problems by avoiding the computation of the inverse operator \(\left( I+\mu h' \mathcal T'\frac{1}{h}\right) ^{-1}\) at each time step (Lannes and Marche 2015).

3.3 A Finite Element Discretization of the Green-Naghdi Equation

In this section, we give a very concise introduction to a hybridized discontinuous Galerkin (HDG) discretization of Eq. (3.40). The details of the proposed method will be reported in separate upcoming articles. In our numerical scheme, we use the well-known Strange splitting technique (Strang 1968) to decompose equation (3.40) to a hyperbolic (nonlinear shallow water equation) and a dispersive part. This splitting is known to be second order accurate if each of its components are at least second order accurate. Let us first consider \(\mathcal S_1\) as the solution operator associated with the hyperbolic part of (3.40):

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _{t} h + \nabla \cdot (h \boldsymbol{u}) = 0,\\ \partial _t (h\boldsymbol{u}) + \nabla (\frac{1}{2}\,g h^2) + \nabla \cdot (h\boldsymbol{u} \otimes \boldsymbol{u}) + gh \nabla b = 0. \end{array}\right. } \end{aligned}$$
(3.41)

Moreover, \(\mathcal S_2\) is the solution operator for the dispersive part:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _t h = 0, \\ \partial _t(h\boldsymbol{u}) - gh \nabla \zeta + (1+ h \mathcal T \frac{1}{\,}h)^{-1} \left[ gh \nabla \zeta + h \mathcal Q_1(\boldsymbol{u})\right] = 0. \end{array}\right. } \end{aligned}$$
(3.42)

The Strang splitting suggests that the solution operator corresponding to system (3.40) is: \(\mathcal S(\varDelta t) = \mathcal S_1(\varDelta t/2) \mathcal S_2(\varDelta t) \mathcal S_1(\varDelta t/2)\). A graphical representation of the employed technique is shown in Fig. 3.2. \(\boldsymbol{q}_h\) in this figure stands for the unknown state, i.e. \(\boldsymbol{q}_h = (h_h,h\textbf{u}_h)\).

Fig. 3.2
figure 2

The splitting technique used to solve the coupling between the hyperbolic and dispersive sub-problems. We start with \(\left. \boldsymbol{q}_h\right| _{t_n}\), and obtain \(\left. \boldsymbol{q}_h\right| _{t_{n+1}}\) at the end of the time step

Fig. 3.3
figure 3

Domain \(\varOmega \) with the discretization \(\mathscr {T}_h\), the set of element faces (\(\partial \mathscr {T}_h\)), and the set of faces in the mesh (\(\mathscr {E}_h\))

Although, Eq. (3.40) can be solved without the above splitting scheme, we prefer this approach, because we can apply different time discretization techniques to the hyperbolic and dispersive parts. For example, one can use an implicit time discretization for (3.41), and an explicit time integration for (3.42).

3.3.1 Notation

Let us consider the d-dimensional domain \(\varOmega \) and \(\mathscr {T}_h = \{K\}\) as a finite collection of disjoint elements partitioning \(\varOmega \) (refer to Fig. 3.3). Let \(\partial \mathscr {T}_h\) denote all of the faces of the elements in \(\mathscr {T}_h\) (dashed lines in Fig. 3.3), and \(\mathscr {E}_h\) be the set of faces in the mesh (continuous lines in Fig. 3.3). It is worthwhile mentioning that, while in \(\mathscr {E}_h\), we count the common faces between two elements only once, the same common face is counted twice when we form \(\partial \mathscr {T}_h\). Now, assume e is a common face between two elements \(K^+\) and \(K^-\), i.e. \(e = \partial K^+ \cap \partial K^-\). We denote by \(\textbf{n}^{\pm }\) the unit normals of \(K^{\pm }\) at e and use \(\left[ \![{\cdot }\right] \!]\) to show the jump of the information across e, e.g. \(\left[ \![{\boldsymbol{F} \cdot \textbf{n}}\right] \!] = \boldsymbol{F}^{+} \cdot \textbf{n}^{+} + \boldsymbol{F}^{-} \cdot \textbf{n}^{-}\), with \(\boldsymbol{F}^{\pm }\) being the values of \(\boldsymbol{F}\) corresponding to \(K^{\pm }\). For the faces on the boundary of the domain, where \(e \in \partial \mathscr {T}_h \cap \partial \varOmega \), we define the jump based on the only contributing face, i.e. \(\left[ \![{\boldsymbol{F} \cdot \textbf{n}}\right] \!] = \boldsymbol{F} \cdot \textbf{n}\). Moreover, the average value of \(\boldsymbol{F}\) at a common face is defined by \(\{\!\{\boldsymbol{F}\}\!\} = (\boldsymbol{F}^+ + \boldsymbol{F}^-)/2\).

Throughout this section, we mainly use vector notation. However, for certain relations, the index notation can provide a more clear description. In those cases, we denote derivatives with respect to spatial coordinates with subscripts, i.e. \(q_{i,j}\) denotes the derivative of the ith component of \(\boldsymbol{q}\) with respect to the jth spatial coordinate. We also use \((v,w)_G\) to denote the inner product of functions v and w in \(G \subset \mathbb R^d\), i.e. \((v,w)_G = \int _G vw \, \mathrm dG\). Furthermore, \(\langle v, w \rangle _\varGamma \) denotes \(\int _\varGamma vw\, \mathrm d\varGamma \), when \(\varGamma \subset \mathbb R^{d-1}\).

3.3.2 Functional Setting

For each element \(K \in \mathscr {T}_h\) and \(p \ge 0\), let \(\mathscr {Q}^p(K)\) denote the space of polynomials of degree at most p in each spatial direction. We choose our trial solution and test spaces as the set of square integrable functions over \(\mathscr {T}_h\), such that their restriction to the domain of K belongs to \(\mathscr {Q}^p(K)\); i.e.

$$\begin{aligned} \textbf{V}_h^p :=\{\boldsymbol{q} \in (L^2(\mathscr {T}_h))^{d+1}: \boldsymbol{q}|_K \in (\mathscr {Q}^p(K))^{d+1} \quad \forall K \in \mathscr {T}_h \}. \end{aligned}$$
(3.43a)

The approximation spaces over the mesh skeleton (\(\mathscr {E}_h\)) are defined as:

$$\begin{aligned} \textbf{M}_h^p :=&\{\boldsymbol{\mu }\in (L^2(\mathscr {E}_h))^{d+1}: \boldsymbol{\mu }|_e \in (\mathscr {Q}^p(e))^{d+1} \quad \forall e \in \mathscr {E}_h\}, \end{aligned}$$
(3.43b)
$$\begin{aligned}&\bar{\boldsymbol{M}}_h^p :=\{\mu \in \left( L^2(\mathscr {E}_h)\right) ^d : \mu |_e \in \left( \mathscr {Q}^p(e)\right) ^d \quad \forall e \in \mathscr {E}_h\}. \end{aligned}$$
(3.43c)

We also define the \(L^2\)-projection operator \(\varPi _{\partial }\), which maps a given \(\boldsymbol{\xi }\in (L^2(\mathscr {E}_h))^{d+1}\) to the set of functions whose restriction to \(e \in \mathscr {E}_h\) is in \((\mathscr {Q}^p(e))^{d+1}\), and \(\varPi _{\partial }\) satisfies:

$$ \langle \varPi _\partial \boldsymbol{\xi }- \boldsymbol{\xi }, \boldsymbol{\mu }\rangle _e = 0, \quad \forall \boldsymbol{\mu }\in (\mathscr {Q}^p(e))^{d+1}. $$

3.3.3 Variational Formulation and Solution Procedure

Before we give the variational formulation for the hyperbolic and dispersive sub-problems, we write (3.41) in the familiar conservation form:

$$\begin{aligned} \partial _t \boldsymbol{q} + \nabla \cdot \boldsymbol{F}(\boldsymbol{q}) = \boldsymbol{L} \quad \text { in } \varOmega \subset \mathbb R^d, \end{aligned}$$
(3.44)

with \(\boldsymbol{L}\) being the source term, and

$$\begin{aligned} \boldsymbol{q} = \begin{Bmatrix} h \\ h \boldsymbol{u} \end{Bmatrix}, \quad \boldsymbol{F}(\boldsymbol{q}) = \begin{Bmatrix} h \boldsymbol{u} \\ h \boldsymbol{u} \otimes \boldsymbol{u} + \frac{1}{2}\,g h^2 \textbf{I}\end{Bmatrix}. \end{aligned}$$
(3.45)

Next, let us rewrite Eq. (3.42) as:

$$\begin{aligned} {\left\{ \begin{array}{ll} \partial _t h = 0, \\ \partial _t(h\boldsymbol{u}) - gh \nabla \zeta + \boldsymbol{w}_1 = 0, \end{array}\right. } \end{aligned}$$
(3.46)

where \(\boldsymbol{w}_1\) is obtained using:

$$\begin{aligned} (1+ h \mathcal T \frac{1}{h}) \boldsymbol{w}_1 = g h \nabla \zeta + h \mathcal Q_1(\boldsymbol{u}). \end{aligned}$$
(3.47)

Using definition (3.30) with \(\beta = 1\), the above equation finds the following form:

$$\begin{aligned} \boldsymbol{w}_1 + h \mathcal T\left( \tfrac{1}{h} \boldsymbol{w}_1\right) \nonumber = \boldsymbol{w}_1&- \frac{1}{3} \nabla \left( h^3 \nabla \cdot \left( \tfrac{1}{h} \boldsymbol{w}_1 \right) \right) - \frac{h^2}{2} \nabla \cdot \left( \tfrac{1}{h} \boldsymbol{w}_1\right) \nabla b \nonumber \\&+ \frac{1}{2} \nabla \left( h \nabla b \cdot \boldsymbol{w}_1 \right) + \nabla b \cdot \boldsymbol{w}_1 \nabla b. \end{aligned}$$
(3.48)

We also expand the operator \(\mathcal Q_1(\boldsymbol{u})\) in the right hand side of (3.47) as follows:

$$\begin{aligned} h \mathcal Q_1(\boldsymbol{u}) =&\frac{2}{3} \nabla \left( h^3 \partial _x \boldsymbol{u} \cdot \partial _y\boldsymbol{u}^\perp +h^3 (\nabla \cdot \boldsymbol{u})^2\right) +\frac{1}{2} \nabla \left( h^2 \boldsymbol{u}\cdot (\boldsymbol{u}\cdot \nabla )\nabla b\right) \nonumber \\&+ h^2 \left( \partial _x \boldsymbol{u} \cdot \partial _y \boldsymbol{u}^\perp + (\nabla \cdot \boldsymbol{u})^2 \right) \nabla b + h\left( \boldsymbol{u} \cdot (\boldsymbol{u} \cdot \nabla )\nabla b \right) \nabla b. \end{aligned}$$
(3.49)

Based on above relations, (3.47) can be written as a system of first order equations:

$$\begin{aligned} {\left\{ \begin{array}{ll} \nabla \cdot (\frac{1}{\,}h \boldsymbol{w}_1) - h^{-3} w_2 = 0,\\ \begin{aligned} \boldsymbol{w}_1- \tfrac{1}{3} \nabla (w_2) &{}- \tfrac{1}{2h} w_2 \nabla b + \tfrac{1}{2} \nabla (h \nabla b \cdot \boldsymbol{w}_1) \\ &{}+ \boldsymbol{w}_1 \nabla b \otimes \nabla b = gh \nabla \zeta + h \mathcal Q_1(\boldsymbol{u}). \end{aligned} \end{array}\right. } \end{aligned}$$
(3.50)

In the next two sections, we solve Eqs. (3.44) and (3.50).

3.3.3.1 Hyperbolic Part

We are looking for a piecewise polynomial solution \(\boldsymbol{q}_h \in \textbf{V}_h^p\) which satisfies Eq. (3.44) in the variational sense. Hence, for all \(\boldsymbol{p} \in \textbf{V}_h^p\) and every \(K\in \mathscr {T}_h\), we want \(\boldsymbol{q}_h\) to satisfy:

$$\begin{aligned} (\partial _t \boldsymbol{q}_h, \boldsymbol{p})_K + \langle {\boldsymbol{F}^*_h} , \boldsymbol{p} \rangle _{\partial K} - (\boldsymbol{F}(\boldsymbol{q}_h), \nabla \boldsymbol{p})_K - \boldsymbol{L}_h(\boldsymbol{p}) = 0. \end{aligned}$$
(3.51)

Here, \({\boldsymbol{F}_h^*}\) is the numerical flux, an approximation to \(\boldsymbol{F}(\boldsymbol{q}) \cdot \textbf{n}\) over the faces of the element K. Similar to the finite volume method, we can obtain a stable and convergent solution by a proper choice of \(\boldsymbol{F}_h^*\). In the hybridizable DG formulation, the numerical flux is defined through the numerical trace (\(\widehat{\boldsymbol{q}}_h\)), which is an approximation to \(\boldsymbol{q}\) on the skeleton space (\(\mathscr {E}_h\)). Here, we consider the following form for \(\boldsymbol{F}_h^*\):

$$\begin{aligned} \boldsymbol{F}_h^* = \boldsymbol{F}(\widehat{\boldsymbol{q}}_h) \cdot \textbf{n}+ \boldsymbol{\tau }(\boldsymbol{q}_h - \widehat{\boldsymbol{q}}_h), \end{aligned}$$
(3.52)

where \(\boldsymbol{\tau }\) is the stabilization parameter and its choice is important for obtaining a convergent and stable method. Here, we use the Lax-Friedrichs flux for this purpose (Samii et al. 2019). It is also worth mentioning that \(\widehat{\boldsymbol{q}}_h\) is assumed to be single-valued on any given face in \(\mathscr {E}_h\).

Next, we want to satisfy the flux conservation condition across the element faces. Since, the numerical flux is the only means of communication between elements, in all of the internal faces, we require that the projection of the jump of \(\boldsymbol{F}^*_h\) onto \(\textbf{M}_h^p\) vanishes, i.e. \(\varPi _\partial \left[ \![ {\boldsymbol{F}_h^*}\right] \!]\) = 0. On the other hand, over the domain boundary (\(\partial \varOmega \)), we apply the boundary condition through the boundary operator \(\boldsymbol{B}_h\). Hence, \(\forall \boldsymbol{\mu }\in \textbf{M}_h^p\), we want to have:

$$\begin{aligned} \langle \boldsymbol{F}^*_h , \boldsymbol{\mu }\rangle _{\partial \mathscr {T}_h \backslash \partial \varOmega } + \langle \boldsymbol{B}_h , \boldsymbol{\mu }\rangle _{\partial \mathscr {T}_h \cap \partial \varOmega } = 0 \end{aligned}$$
(3.53)

Here, \(\boldsymbol{B}_h\) is the boundary operator, and should be defined according to the applied conditions on \(\partial \varOmega \). The details of the employed boundary conditions can be found in other references (Samii et al. 2019).

We should solve Eqs. (3.51) and (3.53) to obtain the unknowns of the problem. We can substitute \(\boldsymbol{F}^*_h\) from (3.52) into these two equations, and assemble (3.51) over all of the elements. Thus, the problem may be summarized as finding the approximate solution \((\boldsymbol{q}_h, \widehat{\boldsymbol{q}}_h) \in \textbf{V}^p_h \times \textbf{M}_h^p\), such that, for all \((\boldsymbol{p}, \boldsymbol{\mu }) \in \textbf{V}^p_h \times \textbf{M}_h^p\):

$$\begin{aligned} \begin{aligned} (\partial _t \boldsymbol{q}_h, \boldsymbol{p})_{\mathscr {T}_h}&- (\boldsymbol{F}(\boldsymbol{q}_h), \nabla \boldsymbol{p})_{\mathscr {T}_h} + \langle \boldsymbol{\tau }\boldsymbol{q}_h, \boldsymbol{p} \rangle _{\partial \mathscr {T}_h} \\&+ \langle \boldsymbol{F}(\widehat{\boldsymbol{q}}_h) \cdot \textbf{n}, \boldsymbol{p} \rangle _{\partial \mathscr {T}_h} - \langle \boldsymbol{\tau }\widehat{\boldsymbol{q}}_h , \boldsymbol{p} \rangle _{\partial \mathscr {T}_h} - \boldsymbol{L}_h(\boldsymbol{p}) = 0, \end{aligned}\end{aligned}$$
(3.54a)
$$\begin{aligned} \begin{aligned} \langle \boldsymbol{F}(\widehat{\boldsymbol{q}}_h) \cdot \textbf{n}, \boldsymbol{\mu }\rangle _{\partial \mathscr {T}_h \backslash \partial \varOmega }&+ \langle \boldsymbol{\tau }\boldsymbol{q}_h , \boldsymbol{\mu }\rangle _{\partial \mathscr {T}_h \backslash \partial \varOmega } \\&- \langle \boldsymbol{\tau }\widehat{\boldsymbol{q}}_h , \boldsymbol{\mu }\rangle _{\partial \mathscr {T}_h \backslash \partial \varOmega } + \langle \boldsymbol{B}_h , \boldsymbol{\mu }\rangle _{\partial \mathscr {T}_h \cap \partial \varOmega } = 0. \end{aligned} \end{aligned}$$
(3.54b)

Considering Eq. (3.54), we use Newton-Raphson method to form a linearized equation in terms of the increments of \(\boldsymbol{q}_h\) and \(\widehat{\boldsymbol{q}}_h\). For the simplicity of the presentation, we consider backward Euler technique as the time integrator, with \(\varDelta t\) being the current time step. Hence, denoting by \(\boldsymbol{q}^{n-1}_h\) the values of \(\boldsymbol{q}_h\) in the previous time level, and \((\bar{\boldsymbol{q}}_h,\bar{\widehat{\boldsymbol{q}}}_h) \in \textbf{V}_h^p \times \textbf{M}_h^p\) the corresponding values in the current iteration, we seek \((\delta \boldsymbol{q}_h, \delta \widehat{\boldsymbol{q}}_h) \in \textbf{V}_h^p \times \textbf{M}_h^p\) such that for all \((\boldsymbol{p}, \boldsymbol{\mu }) \in \textbf{V}_h^p \times \textbf{M}_h^p\), we have:

$$\begin{aligned} \begin{aligned} a_{1} (\delta \boldsymbol{q}_h, \boldsymbol{p}) + c_{1} (\delta \widehat{\boldsymbol{q}}_h, \boldsymbol{p}) + f_{1}(\boldsymbol{p}) = 0, \end{aligned} \end{aligned}$$
(3.55a)
$$\begin{aligned} \begin{aligned} c_{2}^T(\delta \boldsymbol{q}_h, \boldsymbol{\mu }) + c_{3}^T(\delta \boldsymbol{q}_h, \boldsymbol{\mu })&+ e_{1} (\delta \widehat{\boldsymbol{q}}_h, \boldsymbol{\mu })\\[-5pt]&+ e_{2} (\delta \widehat{\boldsymbol{q}}_h, \boldsymbol{\mu }) + f_{2} (\boldsymbol{\mu }) + f_{3} (\boldsymbol{\mu }) = 0. \end{aligned} \end{aligned}$$
(3.55b)

with the bilinear forms and functionals defined as below:

$$\begin{aligned} \begin{gathered} a_{1}(\delta q_j, p_i) = \frac{1}{\varDelta t} (\delta q_j, \delta _{ij}p_i)_{\mathcal T_h} - \left( \frac{\partial F_{ik}}{\partial q_j} \delta q_j ,p_{i,k} \right) _{\mathcal T_h} + \left\langle \tau _{ij} \delta q_j, p_i \right\rangle _{\partial \mathcal T_h}, \\ c_{1}(\delta \hat{q}_j, p_i) = \left\langle \left( \frac{ \partial {\hat{F}}_{ik}}{\partial \hat{q}_j} n_k + \frac{\partial \tau _{ik}}{\partial \hat{q}_j} \bar{q}_k - \frac{\partial \tau _{ik}}{\partial \hat{q}_j} \bar{\hat{q}}_k - \tau _{ij} \right) \delta \hat{q}_j , p_i \right\rangle _{\partial \mathcal T_h}, \\ \begin{aligned} f_{1}(p_i) = \frac{1}{\varDelta t} (\bar{q}_i - q_i^{n-1}, p_i)_{\mathcal T_h} -&\langle {\hat{F}}_{ij} n_j, p_i\rangle _{\partial \mathcal T_h} + \langle \tau _{ij} \bar{q}_j, p_i\rangle _{\partial \mathcal T_h} \\&- \langle \tau _{ij} \bar{\hat{q}}_j, p_i\rangle _{\partial \mathcal T_h} - (F_{ij}, \partial _j p_i)_{\mathcal T_h} - L_i(p_i), \end{aligned} \\ c_{2}^T(\delta q_j, \mu _i) = \left\langle \tau _{ij} \delta q_j , \mu _i \right\rangle _{\partial \mathcal T \backslash \partial \varOmega } , \quad c_{3}^T(\delta \boldsymbol{q}_h, \boldsymbol{\mu }) = \left\langle \frac{\partial \boldsymbol{B}_h}{\partial \boldsymbol{q}_h} \delta \boldsymbol{q}_h , \boldsymbol{\mu }\right\rangle _{\partial \varOmega }, \\ e_{1}(\delta \hat{q_i}, \mu _i) = \left\langle \left( \frac{\partial \hat{F}_{ik}}{\partial \hat{q}_j} n_k + \frac{\partial \tau _{ik}}{\partial \hat{q}_j} \bar{q}_k - \frac{\partial \tau _{ik}}{\partial \hat{q}_j} \bar{\hat{q}}_k - \tau _{ij} \right) \delta \hat{q}_j , \mu _i \right\rangle _{\partial \mathcal T \backslash \partial \varOmega }, \\ e_{2}(\delta \widehat{\boldsymbol{q}}_h, \boldsymbol{\mu }) = \left\langle \frac{\partial \boldsymbol{B}_h}{\partial \widehat{\boldsymbol{q}}_h} \delta \widehat{\boldsymbol{q}}_h , \boldsymbol{\mu }\right\rangle _{\partial \varOmega }, \\ f_{2}(\mu _i) = \left\langle \hat{F}_{ij} n_j + \tau _{ij} \bar{q}_j - \tau _{ij} \bar{\hat{q}}_j , \mu _i \right\rangle _{\partial \mathcal T \backslash \partial \varOmega } ; \quad f_{3}(\boldsymbol{\mu }) = \left\langle \boldsymbol{B}_h , \boldsymbol{\mu }\right\rangle _{\partial \varOmega } \end{gathered} \end{aligned}$$
(3.56)

In the above definitions, \(F_{ij}\), \(\hat{F}_{ij}\), and \(\tau _{ij}\) denote the element at ith row and jth column of \(\boldsymbol{F}(\bar{\boldsymbol{q}}_h)\), \(\boldsymbol{F}(\bar{\widehat{\boldsymbol{q}}}_h)\), and \(\boldsymbol{\tau }(\bar{\widehat{\boldsymbol{q}}}_h)\), respectively. Meanwhile, \(\delta _{ij}\) denotes the Kronecker delta.

3.3.3.2 Dispersive Part

Now, we consider solving Eq. (3.50). To this end, we find \(({\boldsymbol{w}_1}_h, {w_2}_h)\in \textbf{V}_h^p\), and \(\hat{\boldsymbol{w}}_{1h} \in \bar{\boldsymbol{M}}_h^p\) such that:

$$\begin{aligned} {\left\{ \begin{array}{ll} (h^{-3} \, w_{2h},p_2) - \langle {\hat{h}}^{-1} \, \hat{\boldsymbol{w}}_{1h} \cdot \textbf{n}, p_2\rangle + \left( h^{-1}\, \boldsymbol{w}_{1h}, \nabla p_2\right) = 0. \\ \begin{aligned} \left( {\boldsymbol{w}_{1h}}, \textbf{p}_1\right) &{} - \tfrac{1}{3} \langle {\textbf{w}^*_{2h}} \cdot \textbf{n}, \textbf{p}_1 \rangle + \tfrac{1}{3} \left( w_{2h},\nabla \cdot \textbf{p}_1\right) - \tfrac{1}{2} \left( \tfrac{1}{h} \nabla b\, w_{2h}, \textbf{p}_1\right) \\ &{} + \tfrac{1}{2} \langle \hat{h} \nabla b \cdot {\hat{\boldsymbol{w}}_{1h}}, \textbf{p}_1 \cdot \textbf{n}\rangle - \tfrac{1}{2} \left( h \nabla b \cdot \boldsymbol{w}_{1h},\nabla \cdot \textbf{p}_1\right) \\ &{} + \left( \nabla b \otimes \nabla b \, \boldsymbol{w}_{1h} , \textbf{p}_1 \right) = l_{01}(\textbf{p}_1), \end{aligned} \end{array}\right. } \end{aligned}$$
(3.57)

for all \((\textbf{p}_1, p_2) \in \textbf{V}_h^p\). Here, the definition of \(l_{01}(\textbf{p}_1)\) can be inferred by comparing the above system with (3.50); moreover, the numerical flux \(\boldsymbol{w}_{2h}^* \cdot \textbf{n}\) is defined as:

$$\begin{aligned} \textbf{w}_{2h}^* \cdot \textbf{n}= w_{2h} \textbf{I}\cdot \textbf{n}+ \boldsymbol{\tau }\left( \boldsymbol{w}_{1h} - \hat{\boldsymbol{w}}_{1h}\right) , \end{aligned}$$
(3.58)

where, \(\textbf{I}\) is the \(d\times d\) identity matrix, and \(\boldsymbol{\tau }\) is the stabilization parameter matrix. We will use a constant and uniform diagonal matrix for this purpose.

Next, we define the following bilinear forms and functionals:

$$\begin{aligned} \begin{gathered} a_{02} (w_{2h},p_2) = (h^{-3} w_{2h},p_2); \quad b_{01}^T (\boldsymbol{w}_{1h}, p_2) = (h^{-1} \boldsymbol{w}_{1h}, \nabla p_2);\\ c_{01} (\hat{\boldsymbol{w}}_1, p_2) = \langle \hat{h}^{-1} {\hat{\boldsymbol{w}}}_{1h} \cdot \textbf{n}, p_2 \rangle ; \quad b_{02} (w_{2h}, \textbf{p}_1) = (\nabla w_{2h}, \textbf{p}_1);\\ a_{01} (\boldsymbol{w}_{1h}, \textbf{p}_1) = (\boldsymbol{w}_{1h}, \textbf{p}_1) + \left( \nabla b \otimes \nabla b \, \boldsymbol{w}_{1h}, \textbf{p}_1\right) ;\\ d_{01} (\boldsymbol{w}_{1h}, \textbf{p}_1) = \langle \tau \boldsymbol{w}_{1h}, \textbf{p}_1 \rangle ; \quad b_{03}^T(\boldsymbol{w}_{1h}, \textbf{p}_1) = (h \nabla b \cdot \boldsymbol{w}_{1h}, \nabla \cdot \textbf{p}_1) \\ a_{03}(w_{2h}, \textbf{p}_1) = \left( \tfrac{1}{\,}h \nabla b \, w_{2h}, \textbf{p}_1\right) ; \\ c_{02} (\hat{\boldsymbol{w}}_{1h}, \textbf{p}_1) = \langle \tau \hat{\boldsymbol{w}}_{1h}, \textbf{p}_1 \rangle + \frac{3}{2} \langle \hat{h} \nabla b \cdot \hat{\boldsymbol{w}}_{1h}, \textbf{p}_1\cdot \textbf{n}\rangle . \end{gathered} \end{aligned}$$
(3.59)

We are now able to write Eq. (3.57) as:

$$\begin{aligned} {\left\{ \begin{array}{ll} A_{02} w_{2h} + B_{01}^T \boldsymbol{w}_{1h} - C_{01} \hat{\boldsymbol{w}}_{1h} = 0 \\ \left( A_{01} -\frac{1}{2} B_{03}^T - \tfrac{1}{3} D_{01} \right) \boldsymbol{w}_{1h} - \left( \frac{1}{2} A_{03} + \frac{1}{3} B_{02}\right) w_{2h} + \frac{1}{3} C_{02} \hat{\boldsymbol{w}}_{1h} = L_{01} \end{array}\right. } \end{aligned}$$
(3.60a)

Finally, we also require that the numerical flux be conserved across element edges. In other words, we have:

$$\begin{aligned} \langle \textbf{w}_{2h}^* \cdot \textbf{n}, \mu \rangle _{\partial \mathcal T_h\backslash \partial \varOmega } + \langle \mathcal B_h,\mu \rangle _{\partial \mathcal T_h \cap \partial \varOmega } = 0, \end{aligned}$$
(3.60b)

for all \(\mu \in \bar{\boldsymbol{M}}_h^p\). Here \(\mathcal B_h\) is the boundary operator, which can be defined based on the applied boundary conditions.

As a final remark, one should note that solving equation (3.47) involves computation of the 1st and 2nd order derivatives of the velocity vector. Among all other terms, we need to compute the term \(\nabla \left( h^3 \partial _x \boldsymbol{u} \cdot \partial _y\boldsymbol{u}^\perp +h^3 (\nabla \cdot \boldsymbol{u})^2\right) \) in each element. If this computation is performed in a local manner in each element independent of the others, we lose a significant order of accuracy. It can be easily checked that by computing this term locally, our solution will not converge for elements with first order polynomial approximation. On the other hand, since we use this term in our weak formulation, one might consider using the integration by parts technique to transfer the gradient of the parentheses to the test function, and replace the flux of the terms in parentheses with a proper numerical flux. However, finding such a flux formulation for the extremely nonlinear terms like \((\nabla \cdot \boldsymbol{u})^2\) or \(\partial _x \boldsymbol{u} \cdot \partial _y\boldsymbol{u}^\perp \) is not straightforward. Therefore, in this study we use a local discontinuous Galerkin technique to obtain approximations to \(\nabla \textbf{u}\) and \(\nabla \nabla \textbf{u}\). It is worthwhile to note that, \(\nabla \textbf{u}\) is a 2-tensor and \(\nabla \nabla \textbf{u}\) is a 3-tensor; As a result, we switch to index notation for clarity. We use \(u_i\) to denote the components of \(\textbf{u}\) and define the tensors \(r_{ij}\) (which contains the components of \(\nabla \textbf{u}\)), and \(s_{ijk}\) (containing the components of \(\nabla \nabla \textbf{u}\)) as follows:

$$\begin{aligned} r_{ij} - \partial _j u_i = 0, \end{aligned}$$
(3.61a)
$$\begin{aligned} s_{ijk} - \partial _k r_{ij} = 0. \end{aligned}$$
(3.61b)

Next, we write the variational formulations corresponding to these equations in an element (\(K \in \mathscr {T}_h\)):

$$\begin{aligned} \left( r_{ij}, \sigma _{ij}\right) _K = \langle \hat{u}_i , \sigma _{ij} n_j\rangle _{\partial K} - \left( u_i, \partial _j \sigma _{ij}\right) _K, \end{aligned}$$
(3.62a)
$$\begin{aligned} \left( s_{ijk}, \eta _{ijk} \right) _K = \langle \hat{r}_{ij}, \eta _{ijk} n_k\rangle _{\partial K} - \left( r_{ij}, \partial _k \eta _{ijk}\right) _K. \end{aligned}$$
(3.62b)

In these equations, \(\hat{u}_i\) and \(\hat{r}_{ij}\) are the numerical fluxes, which should be defined based on the values of \(u_i\) and \(r_{ij}\) in the two neighboring elements. In this study we use the centered fluxes (Bassi and Rebay 1997), i.e. \(\hat{u}_i = \{\!\{u_i\}\!\}\), \(\hat{r}_{ij} = \{\!\{r_{ij}\}\!\}\).

By using this technique, we can compute the derivatives of \(\textbf{u}\), and substitute them in (3.49) to compute \(h \mathcal Q_1(\textbf{u})\), and solve the system (3.60a) by an explicit time integration method.

3.4 Numerical Results

In this section, we present two numerical examples, for verification and validation of the presented technique. The purpose of the first example is to show the convergence properties of the numerical approximation with respect to the element size (\(\varDelta x\)) and the polynomial order (p). In the second example we consider the amplifying effect of the reflection from a solid wall on the amplitude of a solitary wave. This kind of simulation is useful in the design of levees and dikes. We compare our numerical results with experimental data from the literature. In both of the numerical tests presented here, we use backward difference formula of second order for the hyperbolic part and the regular Runge-Kutta time integration technique for the dispersive part of the operator splitting. To solve the problem, we use our software which has been developed (Samii et al. 2016) using the libraries deal.II (Bangerth et al. 2016), PETSc (Balay et al. 2015), and MUMPS.

Fig. 3.4
figure 4

Schematic plot of the domain of Example 1. The stripe is 20 m long and 0.2 m wide

Fig. 3.5
figure 5

The approximation errors and rates of convergence for different mesh sizes and polynomial orders a: \(a_0/h_0 = 0.2\), b: \(a_0/h_0 = 0.4\)

Example 1

In this example we consider the exact solution to the nonlinear Green-Naghdi equation on a flat bathymetry in one dimension. This solution, which is derived by Serre (1953), should match our numerical results with \(b=-h_0\). This analytical solution is given by:

$$\begin{aligned} h(t,x) = h_0 + a_0 \, \textrm{sech}^2\left( \kappa (x-x_0-c_0 t)\right) , \end{aligned}$$
(3.63a)
$$\begin{aligned} h\textbf{u}(t,x) = c_0 h(t, x) - c_0 h_0, \end{aligned}$$
(3.63b)
$$\begin{aligned} \kappa = \frac{\sqrt{3 a_0}}{2h_0 \sqrt{h_0+a_0}}, \end{aligned}$$
(3.63c)
$$\begin{aligned} c_0 = \sqrt{g (h_0+a_0)} \end{aligned}$$
(3.63d)

Here, we consider \(h_0 = 0.5\), and two values for \(a_0/h_0\), i.e. 0.05, 0.2. We solve the problem in the domain shown in Fig. 3.4. The domain is a stripe with 20 m length and 0.2 m width, and is oriented with an angle of \(30^\circ \) with respect to the x-axis. The reason for choosing a rotated domain is to include as many nonzero terms as possible in Eq. (3.47). Since we have rotated the domain, the x-coordinate in the analytical solution (3.63) should be replaced by \(x_1\) (refer to Fig. 3.4). At all boundaries we consider solid wall conditions. In our numerical scheme, we assign the initial conditions according to the above \(h, h\boldsymbol{u}\) at \(t=0\), \(x_0 = -4\), and let the solitary wave propagate in the positive \(x_1\)-direction.

We compute the errors of the numerical results at time \(t=0.375\) s in the \(L^2\)-norm, i.e. \(\Vert \boldsymbol{q}- \boldsymbol{q}_h\Vert _{L^2}\) with \(\boldsymbol{q} = (h, h\boldsymbol{u})\). Next, we compute the corresponding rates of convergence on a set of successively refined meshes for polynomial orders \(p=0,1,2,3\). The corresponding plots for \(a_0/h_0 = 0.2, 0.4\) are shown in Fig. 3.5. We can observe that for \(a_0/h_0 = 0.2\), the convergence rates are very close to the optimal rates, i.e. \(p+1\), for all orders of polynomial approximations. An important feature in these plots is the convergence of the results for \(p=0\) with the order 0.85. The same observation as above is also true for \(a_0/h_0=0.4\), except the lower convergence rate for \(p=0\). As a final remark, it should be noted that in this example, the analytical solution of \(\boldsymbol{u}\) is not exactly zero at the two ends of the domain i.e. \(x_1 = \pm 10\) m. Hence, the error caused by applying the solid wall becomes the dominant error as we decrease the discretization errors. As a result we cannot achieve errors lower than \(10^{-6}\) in this example.

Fig. 3.6
figure 6

The geometry of the numerical model of Example 2

Fig. 3.7
figure 7

The snapshots of the water surface (\(\zeta \)) in Example 2, at different times

Fig. 3.8
figure 8

Time history of the water surface at reading station (\(x=37.75\) m) in Example 2

Example 2

In this example we validate our numerical results against experimental data regarding the reflection of a solitary wave over a sloping beach (Dodd 1998; Walkley and Berzins 1999). The geometry of this problem is shown in Fig. 3.6. The incident wave does not break prior to touching the wall; however, after the reflection its shape changes dramatically, which requires a fully nonlinear model to capture its behavior.

The numerical model is 40 m long, and the solid wall condition is applied at its both ends. The initial water depth is \(h_0 = 0.7\) m, and two values are used for the initial wave amplitude, i.e. \(a_0= 7\) cm, and \(a_0 = 12\) cm. The wave starts its propagation at \(x=10\) m (refer to Fig. 3.6), and the beach with the slope 1:50, starts at \(x=20\) m. The element size is 8 cm and we use first order elements to discretize the domain. The time history of water surface elevation at different locations in the domain is available in the literature (Walkley and Berzins 1999). Here, we present our results for a reading station located at \(x=37.75\) m.

In Fig. 3.7, we show the snapshots of the water surface rise during the simulation for the initial amplitudes \(a_0 = 7\) and 12 cm. In Fig. 3.8 we show the time history of the water surface elevation at the reading station with \(x=37.75\) m. The numerical technique have been able to capture the peaks in the experimental data quite well; however, as the reflected waves return from the wall, we can observe differences between numerical and experimental results.

3.5 Conclusions

In this paper, we have discussed various Boussinesq-Green-Naghdi models for approximating nearshore wave physics, and given some preliminary numerical results using the hybrid discontinuous Galerkin method. Future work will explore this methodology more fully for complex, two-dimensional domains, with adaptive mesh and time-step control.