1 Introduction

Hybridized discontinuous Galerkin (HDG) methods were initially developed in order to address the large number of degrees of freedom that more standard discontinuous Galerkin (DG) methods display for steady-state problems, or, for that matter, any system requiring a global solve (e.g. systems solved using implicit time integration) [6, 7]. While standard DG methods are often well-suited for explicit-in-time solvers [17, 22], in that they can be developed over highly localized stencils using techniques that exploit the inherent arithmetic intensity germane to discontinuous Galerkin methods [14], the need to perform global solves can potentially inhibit these otherwise notable performance aspects of DG algorithms. More precisely, this performance hit comes from the fact that in a discontinuous basis, discontinuous solutions along element edges are locally supported, and with this support comes multivalued function evaluations at inter-element fluxes that effectively increase the global degrees of freedom of the method (in contrast to, for example, a continuous basis where function evaluations are single-valued along element edges).

While DG solutions to steady-state problems can be more computationally expensive than some competing methods, DG approaches also tend to preserve greater native accuracy along gradient fields than, for example, continuous finite element methods (e.g. continuous Galerkin methods) [11]. In this respect the greater cost that DG methods incur computationally can be viewed as “paying for itself” by the high-order accuracy that is ultimately obtained in the solution approximation. Recognizing this relative weighting between computational expense and high order accuracy, HDG methods were developed in an attempt to maximize efficiency in DG-based steady-state solvers while simultaneously preserving the high-order accuracy of DG. The major feature that distinguishes the HDG steady-state solver from the standard steady-state DG solver, is that HDG recasts the inter-element fluxes of standard DG into an implicit element-based local problem. This local problem is then used to “statically condense” the block structure of the resulting matrix system, where these two steps effectively reduce the global degrees of freedom in the system [7].

Though HDG reduces the number of degrees of freedom from standard DG in the steady-state problem, the primary performance competition that HDG methods face really arise in the context of hybrid (or sometimes so-called mixed) DG/CG methods, that couple steady-state CG solvers to dynamic DG solvers in order to exploit the best performance features of both [8, 9, 20, 21]. In this regard, because the global trace space system for the unknown in HDG has significantly smaller bandwidth than traditional CG methods, HDG is actually quite computationally competitive with CG solvers [13]. As a consequence, the most notable feature of HDG tends not to be performance gains (which are merely competitive with CG solvers in steady-state problems for example), but rather their optimal convergence properties in auxiliary and derived quantities that lead to remarkably high-order accurate solutions.

A particularly challenging area, where order of accuracy plays a substantial and quantifiable role, is in the method development of discrete numerical solutions to nonlinear dispersion problems. By nonlinear dispersion we mean equations that contain third order spatial operators, i.e. of the form \(\partial ^{3}f/\partial x^{3}\) for some \(f=f(u)\). In this paper, for the sake of clarity and brevity, we choose to restrict our analysis to the linear and nonlinear forms of the Korteweg–de Vries (KdV) equation, which might be viewed as the prototypical problem of dynamical dispersion. More generally however, dispersion plays a fundamental role in large numbers of applied science and engineering problems, including propagating phase boundaries of non-zero thickness, called diffuse miscible interfaces [2, 16], plasma dynamics [4, 28, 30], water waves at surfaces [24, 33], deep internal waves [26], ocean sediment [5], nonlinear modes in quasi-particles, such as phonons [18], atmospheric dynamics [12], quantum dynamics [27], and so forth.

Because of how relatively pervasive physical dispersion is in observed continuum-based natural phenomena, the importance of understanding the numerical behavior of these systems is of substantial importance to assuring that the quantitative properties of the solution are preserved. For example, when developing optimality conditions in optimal experimental design (OED), the Lagrangian functional is frequently minimized relative to the spatial derivatives of the variational solution from a forward model, and hence the convergence order of those quantities has a first order impact on the convergence properties of the inference parameters [1]. More broadly, many (if not most) equation systems that demonstrate dispersive (and therefore often turbulent) behavior can be simplified as nonlinear convective transport along vortical streamlines, where the vorticity variable is determined by a second order Poisson equation \(\nabla \phi = \varpi \). In these cases, the accuracy of not only the first, but also the second order operator can be vital, as they effectively determine the eigenvalues of the Jacobian of the characteristic flow fields, and hence fundamentally effect the dynamics of the solution [22].

As a response to the sensitivity of these solutions to high-order accuracy, we present in this paper the first HDG method to our knowledge for solving dispersive nonlinear evolution equations. Our solution uses a mixed form HDG scheme for its spatial discretization, while the temporal discretization is treated implicitly. Several numerical methods have been developed for nonlinear KdV using more standard DG methods [19, 31, 32], as well as finite volume approaches [29] etc. Remarkably however, our KdV method numerically demonstrates optimal convergence behavior not only in the wave amplitude u, but also in its first \(u_{x}=\partial u/\partial x\) and second \(u_{xx}=\partial ^{2} u/\partial x^{2}\) order variation, indicating nontrivial improvements in accuracy over existing methods.

An outline of the paper is as follows. In Sect. 2 we present the governing equations, provide some background notation on the system, and develop the basic setting for the spatial discretization. In Sect. 3 we proceed by discussing the semi-discrete form of the linear equation, followed by an outline of the temporal discretization scheme, and some practical notes on implementation. We then provide a classical numerical stability result in the linear setting in Sect. 3, where we finish by recasting the nonlinear equation into its discrete block matrix form. In Sect. 4 some numerical tests are presented. Four examples are provided, where either analytic solutions, or solutions determined from the method of manufactured solutions are developed, where convergence rates are notated and further discussed for each. Finally we offer some concluding remarks in Sect. 5.

2 Problem Statement and Space Discretization

Consider the nonlinear KdV type equation [15]:

$$\begin{aligned} u_t + (\beta u^2 + \alpha u_{xx})_x = f(x,t), \quad x\in {\varOmega } \subset \mathbb R, \quad t\in (0,T], \end{aligned}$$
(2.1)

with \({\varOmega } := [x_L,x_R]\), and the following initial and boundary data:

$$\begin{aligned} \begin{array}{llll} &{}u = u_0 &{}\;\text {in }\;\;{\varOmega }\;\;\text { for }\;\; t=0,&{}\\ \text {either of }&{} \left\{ \begin{aligned} &{}u = g_u\\ &{}u = g_u\\ &{}u_{xx} \, \mathsf {n}= g_p \end{aligned}\right. \quad &{} \begin{aligned} &{}\text {on } x_L, \text { and }\, x_R, &{}\\ &{}\text {on } x_L, \text { and }\, u_{xx} \, \mathsf {n}= g_p &{}\text { on } x_R,\\ &{}\text {on } x_L, \text { and }\, u = g_u &{}\text { on } x_R, \\ \end{aligned}\\ &{}u_x = g_q &{}\text { on }\;\; x_L \text { or }\, x_R. \end{array} \end{aligned}$$
(2.2)

Here u represents the wave amplitude, and \(\mathsf {n}\) is the outward unit normal on the corresponding face. Since, we are working in a one-dimensional setup, we look at \(\mathsf {n}\) as a scalar, which is equal to \(\pm 1\) on \(x_L\) and \(x_R\). \(\alpha \) is also equal to \(\pm 1\), and signifies the wave propagation direction. Moreover, we use \(\beta \) to switch between a linear problem, where \(\beta = 0\), and the nonlinear case with \(\beta = 3\). When we take \(\alpha = 1\), the boundary condition on \(u_x\) should be applied on \(x_R\), and when \(\alpha = -1\), the boundary condition should be applied on \(x_L\). The well-definedness of the above problem has been studied in detail in [10], and it is known that the above set of boundary conditions results in a well-posed initial-boundary value problem for KdV equation.

Next, we introduce the mixed forms \(q=u_x\) and \(p=q_x\), and form the first order system of equations corresponding to (2.1):

$$\begin{aligned} \begin{aligned} u_t + (\beta u^2 +\alpha p)_x = f(x,t), \quad p - q_x = 0, \quad q - u_x = 0, \end{aligned} \quad x\in {\varOmega }, \quad t\in (0,T], \end{aligned}$$
(2.3)

with initial and boundary conditions:

$$\begin{aligned} \begin{array}{llll} &{} u = u_0 &{}\;\text {in }\;\; {\varOmega }\;\; \text { for }\;\;t=0,&{}\\ \text {either of }&{}\left\{ \begin{aligned} &{}u = g_u\\ &{}u = g_u\\ &{}p \, \mathsf {n}= g_p \end{aligned}\right. \quad &{} \begin{aligned} &{}\text {on } x_L, \text { and }\, x_R, &{}\\ &{}\text {on } x_L, \text { and }\, p \, \mathsf {n}= g_p &{}\text { on }\, x_R,\\ &{}\text {on } x_L, \text { and }\, u = g_u &{}\text { on }\, x_R, \\ \end{aligned}\\ &{} q = g_q &{}\text { on }\;\; x_L \text { or }\, x_R. \end{array} \end{aligned}$$
(2.4)

For the purposes of analyzing the stability of method, we will also consider periodic boundary conditions in place of (2.4).

2.1 Mesh Notation

We will partition \({\varOmega } \subset \mathbb R\), by a finite collection of disjoint elements \(\mathcal {T}_{h} := \{K_j\}\). The domain of each element \(K_j\) is considered to be: \(K_j=[{x}_{j-\frac{1}{2}},{x}_{j+\frac{1}{2}}]\). Since, we will work on a 1D domain, the left and right faces of \(K_j\) are each comprised of just one point. However, to maintain the generality, we use \(\partial \mathcal T_h\) to denote the collection of the faces of all of the elements, i.e. \(\partial \mathcal T_h = \{\partial K \,{:}\, K \in \mathcal T_h\}\). Let us denote by \(\mathcal {E}_{h}^{0}\) the set of interior faces and \(\mathcal {E}_{h}^{\partial }\) the set of boundary faces; meanwhile \(\mathcal {E}_{h} = \mathcal {E}_{h}^\partial \cup \mathcal {E}_{h}^0\).

For any two neighboring elements \(K^+\) and \(K^-\), with nonempty \(\partial K^ + \cap \partial K^-\), we will assign \(\mathsf {n}^{+}\) and \(\mathsf {n}^{-}\) the outward pointing normals of \(\partial K^{+}\) and \(\partial K^{-}\) respectively. The values of (uqp) on the common face of these elements will be denoted by \(u^{\pm },q^{\pm },p^{\pm }\). We also denote \(u^{\pm },q^{\pm },p^{\pm }\) on \(x_{j \mp \frac{1}{2}}\), with \(u_{j \mp \frac{1}{2}}^{\;\pm }, q_{j \mp \frac{1}{2}}^{\;\pm }, p_{j \mp \frac{1}{2}}^{\;\pm }\). For instance, \(u_{j + \frac{1}{2}}^{\;-}\) means the value of u on the left side of a face located at \(x_{j + \frac{1}{2}}^{\;}\). Hence, \(\mathsf {n}_{j + \frac{1}{2}}^{\;-} = +1\) and \(\mathsf {n}_{j - \frac{1}{2}}^{\;+} = -1\), for all j. The mean and jump \(\llbracket \cdot \rrbracket \) of the information v on a given face \(e \in \mathcal E_h^0\) are defined as:

For boundary faces in \(\mathcal E_h^\partial \) where the information (v) is single valued, the mean and jump are defined as:

Furthermore, the boundary faces with available boundary data on uq, and p will be denoted by \({\varGamma }_u, {\varGamma }_q\), and \({\varGamma }_p\) respectively. It is worthwhile to mention \(\mathcal E^\partial _h = {\varGamma }_u \cup {\varGamma }_p\).

2.2 Approximation Spaces

Let \(\mathcal {P}^{k}(G)\) be the set of polynomials of degree at most k on the domain G. The discontinuous finite element spaces we use are

$$\begin{aligned} \begin{aligned} W^{k}_{h} =\left\{ w\in L^{2}({\varOmega })\,{:}\,w|_{K}\in \mathcal {P}^{k}(K), \, \forall K\in \mathcal {T}_{h}\right\} . \end{aligned} \end{aligned}$$

The trace finite element space (or skeleton space) is defined by:

$$\begin{aligned} M_{h}^{k}=\left\{ \mu \in L^{2}(\mathcal {E}_{h})\,{:}\,\mu |_{e}\in \mathcal P^{k}(e), \, \forall e\in \mathcal {E}_{h}\right\} . \end{aligned}$$

We also characterize the following spaces, with the built-in boundary conditions:

$$\begin{aligned} M_{h}^{k}(\ell ) = \left\{ \mu \in M_{h}^{k}\,{:}\,\mu ={\varPi } \ell \ \text { on } {\varGamma }_u\right\} , \quad {\bar{M}}_{h}^{k}(\ell ) = \left\{ \mu \in M_{h}^{k}\,{:}\,\mu ={\varPi } \ell \quad \text { on }\;\; {\varGamma }_q\right\} , \end{aligned}$$

with \({\varPi }\) being the \(L^{2}\) projection into the skeleton space restricted to the boundary.

For the scalar product of functions v and w we will use the convention \((v,w)_{G} = \int _{G}v w \,\mathrm {d} x\), for \(G\subset {\varOmega }\). Moreover, \(\langle v,w\rangle _{\partial K_j}\) which is commonly denoting the integration on the faces of \(K_j \in \mathcal T_h\), may be simply written as \(v_{j + \frac{1}{2}}^{\;-}w_{j + \frac{1}{2}}^{\;-} + v_{j - \frac{1}{2}}^{\;+}w_{j - \frac{1}{2}}^{\;+}\). Nevertheless, we might use any of these notations to keep the expressions concise and clear.

When we sum inner products over the entire mesh we use the notation:

$$\begin{aligned} (v,w)_{\mathcal {T}_{h}} = \sum _{K\in \mathcal {T}_{h}}(v,w)_{K}, \quad \langle \zeta ,\rho \rangle _{\partial \mathcal {T}_{h}} = \sum _{K\in \mathcal {T}_{h}}\langle \zeta ,\rho \rangle _{\partial K}, \quad \mathrm {and}\quad \langle \mu ,\omega \rangle _{\mathcal {E}_{h}} = \sum _{e\in \mathscr {E}_{h}}\langle \mu ,\omega \rangle _{e}, \end{aligned}$$

where vw are defined on \(\mathcal {T}_{h}, \zeta ,\rho \) are defined on \(\partial \mathcal {T}_{h}\), and \(\mu ,\omega \) are defined on \(\mathcal {E}_{h}\).

3 Solution Method

Since the solution method for the nonlinear equation is closely related to that of the linear problem, and the latter can be explained more clearly, we will first look at the technique for the linear case. Without loss of generality, we take \(\alpha =-1\) in (2.3).

3.1 Linear Problem Solver

Considering Eq. (2.3) with \(\alpha =-1\) and \(\beta = 0\), we want to find the piecewise polynomial solutions \(u,q,p \in W_h^k\), such that for all test functions \(v,w,z \in W_h^k\),

$$\begin{aligned}&(u_t, v)_{K} + (p,v_x)_{K} - \langle \widehat{p}\, \mathsf {n}, v \rangle _{\partial K} = (f, v)_{K},\nonumber \\&(p, w)_{K} + (q,w_x)_{K} - \langle \widehat{q}\, \mathsf {n}, w \rangle _{\partial K} = 0,\nonumber \\&(q, z)_{K} + (u,z_x)_{K} - \langle \hat{u} , z \, \mathsf {n}\rangle _{\partial K} = 0, \end{aligned}$$
(3.1)

for all \(K \in \mathcal T_h\). Here \(\widehat{p}, \widehat{q}\), are numerical fluxes and \(\hat{u}\) is the numerical trace on \(\partial K\). Similar to other numerical methods, numerical fluxes are approximations to pq, and we choose them in a way to result in a stable and accurate method. On the other hand, in our hybrid method, we keep the numerical trace \(\hat{u}\) as a new unknown on the skeleton space. We take \(\hat{u}\) from \(M_h^k(g_u)\), which means \(\hat{u}\) is single valued on \(\mathcal E_h\) by construction. To ensure the conservativeness of the method, we require that the normal components of \(\widehat{q}\) and \(\widehat{p}\) be continuous across element edges. This continuity in our 1D problem means that, these fluxes should be single-valued on each face. In regular discontinuous Galerkin methods, we can apply this single-valuedness by using the same flux on each face for the two elements connected to that face. In our hybrid technique we maintain the conservation of the flux via extra sets of equations. As a first step, we define \(\widehat{q}\), and \(\widehat{p}\) in the following forms:

$$\begin{aligned} \widehat{q}= & {} \hat{q} + \sigma (q - \hat{q}) \, \mathsf {n}, \nonumber \\ \widehat{p}= & {} p + \tau (u - \hat{u}) \, \mathsf {n}. \end{aligned}$$
(3.2)

Here, we have introduced a new numerical trace \(\hat{q} \in {\bar{M}}_h^k(g_q)\) and expressed the flux \(\widehat{q}\) in terms of this trace. Similar to \(\hat{u}\), we are going to keep \(\hat{q}\) as a global unknown in the equations. Meanwhile, \(\widehat{p}\) is also defined in terms of \(u, \hat{u}, p\), which are among the current unknowns of the problem. Moreover, \(\sigma \) and \(\tau \) are stabilization parameters. We will obtain the required condition for these parameters to make the method stable in Sect. 3.1.2.

Next, we want to include the boundary data \(g_u\) and \(g_q\) into our solution. These boundary data are included by defining \(\hat{u}\) and \(\hat{q}\) on \({\varGamma }_u\) and \({\varGamma }_q\), respectively. Hence, we set:

$$\begin{aligned} \hat{u} = \left\{ \begin{aligned}&g_u,&\quad \text {on }\;\;\partial K \cap {\varGamma }_u,\\&\lambda ,&\quad \text {on }\;\;\partial K \backslash {\varGamma }_u. \end{aligned} \right. \quad \hat{q} = \left\{ \begin{aligned}&g_q,&\quad \text {on }\;\;\partial K \cap {\varGamma }_q,\\&\psi ,&\quad \text {on }\;\;\partial K \backslash {\varGamma }_q. \end{aligned} \right. \end{aligned}$$
(3.3)

With \((\lambda , \phi ) \in M_h^k(0) \times {\bar{M}_h}^k(0)\). In other words, on the faces where we have boundary data on u (\({\varGamma }_u\)), we exclude \(\hat{u}\) from our set of unknowns. On other faces, we substitute \(\hat{u}\) with \(\lambda \). We also eliminate \(\hat{q}\) on \({\varGamma }_q\), and substitute it with \(\psi \) on all other faces.

So far, we have three equations (3.1), in the domain of each element. These three equations will be used to compute the internal unknowns: upq. Solving these three equations in each element for upq forms our local problem. In other words, for a given element \(K\in \mathcal T_h\), we assume \(\hat{u}, \widehat{p}, \widehat{q}\) are known on \(\partial K\), and we want to solve (3.1) for upq. Since, the fluxes \(\widehat{q}, \widehat{p}\) are defined through numerical traces \(\hat{u}, \hat{q}\), we can solve the local problem, provided that \(\hat{u}, \hat{q}\) are known. Unlike, upq, the traces \(\hat{u}, \hat{q}\) are global unknowns. In order to find them, we need two extra global equations. These global equations are obtained by enforcing the conservation of the numerical fluxes on the element edges. Hence, we require that, on a given face \(e \in \mathcal E_h\):

$$\begin{aligned} \llbracket \, \widehat{q}\, \mathsf {n}\, \rrbracket = \left\{ \begin{aligned}&q \, \mathsf {n},&e \in \mathcal E^\partial _h \backslash {\varGamma }_q, \\&0,&e \in \mathcal E_h^0. \end{aligned} \right. \quad \llbracket \, \widehat{p}\, \mathsf {n}\, \rrbracket = \left\{ \begin{aligned}&g_p,&e \in {\varGamma }_p, \\&0,&e \in \mathcal E_h^0. \end{aligned} \right. \end{aligned}$$
(3.4)

It should be noted that, by setting \(\llbracket \, \widehat{q}\, \mathsf {n}\, \rrbracket = q \, \mathsf {n}\) we are not applying any boundary condition on \(\hat{q}\). Instead, we want to emphasize that on the outflow face, where we have no boundary data on \(\hat{q}\), the normal component of \(\widehat{q}\) should be equal to the normal component of q from the upwind element. For the case of \(\alpha = -1, \mathcal E^\partial _h \backslash {\varGamma }_q\) in the above relation is equivalent to \(x = x_R\). Since on \(x_R, \widehat{q}\, \mathsf {n}\) is single-valued, we set its value equal to \(q \, \mathsf {n}\) from the only contributing element. Meanwhile, by applying (3.4) on interior faces, we make sure that the fluxes on all of the element edges are conserved.

Before we continue to the final formulation, let us review our unknowns and the equations we use to solve them. We have three unknowns in the domain of each element \(K\in \mathcal T_h\), i.e. upq. Our local problem is solving (3.1) for these internal unknowns, assuming that \(\hat{u}, \hat{q}\) are known on \(\partial K\). We also have two sets of global equations (3.4), which we use them to compute \(\hat{u}, \hat{q}\). These equations are the conservation of the flux across element edges. For interior faces, these global equations are simply \(\llbracket \,\widehat{q}\, \mathsf {n}\, \rrbracket = 0\) and \(\llbracket \,\widehat{p}\, \mathsf {n}\, \rrbracket = 0\). The boundary conditions on uq are applied on \(\hat{u}, \hat{q}\), through (3.3). The boundary condition on p is applied via \(\llbracket \,\widehat{p}\, \mathsf {n}\, \rrbracket = g_p\) on \({\varGamma }_p\). It should be noted that \(\hat{u}\) is unknown on every face in \(\mathcal E_h \backslash {\varGamma }_u\), and we have an equation for \(\llbracket \,\widehat{p}\, \mathsf {n}\, \rrbracket \) on every face in \(\mathcal E^0_h \cup {\varGamma }_p\). Since, \(\mathcal E_h \backslash {\varGamma }_u = \mathcal E^0_h \cup {\varGamma }_p\) the number of unknown \(\hat{u}\) is equal to the number of equations on \(\llbracket \, \widehat{p}\, \mathsf {n}\, \rrbracket \). Similarly, one can see that, the number of unknown \(\hat{q}\) is equal to the number of equations on \(\llbracket \, \widehat{q}\, \mathsf {n}\, \rrbracket \). Since, we introduce \(\hat{u} , \hat{q}\) as extra unknowns on the mesh skeleton, and compute them using two constraint equations, i.e. the flux continuity conditions, this method can be classified as a hybrid method [3].

As a special case of the above discussion, one can apply periodic boundary conditions by setting \(\hat{u}|_{x_R} = \hat{u}|_{x_L}\), and \(\hat{q}|_{x_R} = \hat{q}|_{x_L}\). These two will guarantee that the numerical traces are the same at \(x_L\) and \(x_R\). Also, in order to apply the flux conservation conditions on the two ends of the domain, we set \(\widehat{q}\,|_{x_R} = \widehat{q}\,|_{x_L}\), and \(\widehat{p}\,|_{x_R} = \widehat{p}\,|_{x_L}\). These two conditions are actually obtained by assuming all faces are interior faces in (3.4).

Ultimately, we want to find \(u,q,p\in W_h^k\), and traces \((\lambda , \psi ) \in M_h^k(0) \times {\bar{M}}_h^k(0)\), such that \(\forall v,w,z \in W_h^k\), (3.1), and (3.4) are satisfied. In this process we will apply the boundary conditions (3.3) and the flux definitions (3.2). Before looking at the implementation, we substitute the fluxes from (3.2) into Eq. (3.1). Hence, for all \(K\in \mathcal T_h\):

$$\begin{aligned} \begin{aligned}&(u_t, v)_{K} + (p,v_x)_{K} - \langle p \, \mathsf {n}, v \rangle _{\partial K} - \langle \tau u , v \rangle _{\partial K}+ \langle \tau \hat{u} , v \rangle _{\partial K} = (f, v)_{K},\\&(p, w)_{K} + (q,w_x)_{K} - \langle \sigma q , w \rangle _{\partial K} - \langle (\mathsf {n}-\sigma ) \hat{q} , w \rangle _{\partial K} = 0, \\&(q, z)_{K} + (u,z_x)_{K} - \langle \hat{u} , z \, \mathsf {n}\rangle _{\partial K} = 0.\\ \end{aligned} \end{aligned}$$
(3.5)

As mentioned before, for a given \(K \in \mathcal T_h\), we will use these equations to obtain uqp, assuming that \(\hat{u}\) and \(\hat{q}\) are known on \(\partial K\).

By inserting the boundary data (3.3) into these equations:

$$\begin{aligned}&(u_t, v)_{K} - (p_x,v)_{K} - \langle \tau \, u , v \rangle _{\partial K}+ \langle \tau \,\lambda , v \rangle _{\partial K} = (f, v)_{K} - \langle \tau \, g_u , v \rangle _{\partial K \cap {\varGamma }_u},\nonumber \\&(p, w)_{K} + (q,w_x)_{K} - \langle \sigma q , w \rangle _{\partial K} - \langle (\mathsf {n}-\sigma ) \psi , w \rangle _{\partial K} = \langle (\mathsf {n}-\sigma ) g_q , w \rangle _{\partial K \cap {\varGamma }_q}, \nonumber \\&(q, z)_{K} + (u,z_x)_{K} - \langle \lambda , z \, \mathsf {n}\rangle _{\partial K} = \langle g_u , z \, \mathsf {n}\rangle _{\partial K \cap {\varGamma }_u}. \end{aligned}$$
(3.6)

Also substitute (3.2) into (3.4) to obtain the following global equations:

$$\begin{aligned}&\langle \hat{q} \, \mathsf {n}+ \sigma (q - \hat{q}) , \mu \rangle _{\partial \mathcal T_h } = 0, \nonumber \\&\langle p \, \mathsf {n}+ \tau (u - \hat{u}) , \eta \rangle _{\partial \mathcal T_h}= \langle g_p, \eta \rangle _{\partial \mathcal T_h \cap {\varGamma }_p}, \end{aligned}$$
(3.7)

for all \((\mu , \eta ) \in {\bar{M}}_h^k(0) \times {M}_h^k(0)\).

Next, we want to solve the system of equations (3.6) and (3.7) by the hybridized DG technique.

3.1.1 Implementation

Let us assemble the local equations (3.6) and write them in terms of the following bilinear operators:

(3.8)

and for the global equation (3.7):

(3.9)

with the following definitions:

(3.10)

for all \(v,w,z\in W_h^k\), and \((\mu ,\eta ) \in {\bar{M}}_h^k(0) \times M_h^k(0) \).

Next, we write (3.8) and (3.9) in the discretized form. As for the time integration scheme, we will use a backward Euler approach with time-step \({\varDelta } t^n\) at time-level \(t^n\). One may appropriately use higher order BDF or an implicit Runge–Kutta method. As a result, the corresponding matrix equations at time \(t^n\) would become:

$$\begin{aligned}&\frac{1}{{\varDelta } t} A U - B ^ {\mathrm T} P + {C_1} {\varLambda } - D_1 U = F - G + \frac{1}{{\varDelta } t} A U^{n-1}, \end{aligned}$$
(3.11a)
$$\begin{aligned}&A P + B Q - C_2 {\varPsi } - D_2 Q = H, \end{aligned}$$
(3.11b)
$$\begin{aligned}&A Q + B U - C_3 {\varLambda } = K, \end{aligned}$$
(3.11c)
$$\begin{aligned}&C_4^{\mathrm T} Q + E_1 {\varPsi } = 0, \end{aligned}$$
(3.11d)
$$\begin{aligned}&C_5^{\mathrm T} U + C_6^{\mathrm T}P - E_2 {\varLambda } = S, \end{aligned}$$
(3.11e)

where \(U^{n-1}\) stands for U from the previous time-level, and all other variables are calculated at the current time-level.

As mentioned before, we are not going to assemble Eqs. (3.11a–c) and solve them globally. We will apply a process of condensation on the internal unknowns UP and Q and express them in terms of the trace unknowns \({\varLambda }\) and \({\varPsi }\). Then we solve global equations (3.11d, e) for \({\varLambda }\) and \({\varPsi }\). To this end, we do a local solve on (3.11c) and obtain Q in terms of the other unknowns, and the supported boundary data:

$$\begin{aligned} Q = A^{-1} (K-BU+C_3 {\varLambda }). \end{aligned}$$
(3.12a)

Then, we substitute Q from the above relation into (3.11b), to obtain an expression for P in terms of \(U, {\varLambda }, {\varPsi }\), and the boundary information:

$$\begin{aligned} P =&A^{-1}(B- D_2)A^{-1}BU - A^{-1}(B- D_2)A^{-1}C_3 {\varLambda } + A^{-1}C_2 {\varPsi } \nonumber \\&\quad +\,A^{-1}H - A^{-1}(B-D_2)A^{-1}K. \end{aligned}$$
(3.12b)

Finally, we put P from the above relation into (3.11a) to obtain U in terms of \({\varLambda }, {\varPsi }\) and the boundary data:

$$\begin{aligned}&\left[ \frac{1}{{\varDelta } t} A - D_1 - B ^ {\mathrm T}A^{-1}(B- D_2)A^{-1}B \right] U \nonumber \\&\quad =\frac{1}{{\varDelta } t} A U^{n-1} + \left[ - {C_1} - B ^ {\mathrm T}A^{-1}(B-D_2)A^{-1}C_3 \right] {\varLambda } + B ^ {\mathrm T}A^{-1}C_2 {\varPsi } \nonumber \\&\quad \quad {}-\,B ^ {\mathrm T} A^{-1}(B-D_2)A^{-1}K + B ^ {\mathrm T} A^{-1} H + F - G. \end{aligned}$$
(3.12c)

The solution procedure to implement this technique, can be summarized in three steps:

  1. 1.

    Obtain U in the local Eq. (3.12c) in terms of \({\varLambda }\) and \({\varPsi }\), and use this U to obtain Q in terms of \({\varLambda }\) and \({\varPsi }\) via (3.12a); also obtain P in terms of \({\varLambda }\) and \({\varPsi }\) via (3.12b).

  2. 2.

    Assemble the UQ, and P from the previous step for each element, along with \({\varLambda }\) and \({\varPsi }\) into the global equations (3.11d, e), to form the global matrix equation and solve it for \({\varLambda }\) and \({\varPsi }\).

  3. 3.

    Use the globally solved \({\varLambda }\) and \({\varOmega }\) from the previous step, to solve the local equations (3.12c, a, b) for UQ, and P. As explained in the first step, one starts with (3.12c) to compute U, then use this U in (3.12a) and (3.12b) to obtain Q and P.

In this scheme, the first and third steps are local on each element and can be done in parallel. The only global solve step is the second step. Moreover, the number of skeleton unknowns in these global equations are \(\mathcal O(k^{d-1}/h)\), compared to the internal unknowns which are \(\mathcal O(k^d/h)\). Hence, we can expect an improved performance from the proposed hybridized scheme.

3.1.2 Stability of the Method

In this section we prove the stability of the proposed method in the continuous time case. We first look at the simplest case of periodic boundary conditions. Then, we discuss the stability for other types of boundary conditions.

Theorem 3.1

If the stabilization parameters in (3.2) satisfy: \(\sigma \ne 0, \sigma >\frac{1}{2} \mathsf {n}\), and \(\tau < 0\), then the proposed method with periodic boundary conditions is stable and the solution to (3.1) exists and is unique.

Proof

We consider (3.1), with the zero source term and expand the boundary terms to obtain:

$$\begin{aligned}&(u_t, v)_{K_j} + (p,v_x)_{K_j} - \widehat{p}_{j + \frac{1}{2}}^{\;-} v_{j + \frac{1}{2}}^{\;-} + \widehat{p}_{j - \frac{1}{2}}^{\;+} v_{j - \frac{1}{2}}^{\;+} = 0, \end{aligned}$$
(3.13a)
$$\begin{aligned}&(p,w)_{K_j} + (q,w_x)_{K_j} - \widehat{q}_{j + \frac{1}{2}}^{\;-} w_{j + \frac{1}{2}}^{\;-} + \widehat{q}_{j - \frac{1}{2}}^{\;+} w_{j - \frac{1}{2}}^{\;+} = 0, \end{aligned}$$
(3.13b)
$$\begin{aligned}&(q,z)_{K_j} + (u, z_x)_{K_j} - \hat{u}_{j + \frac{1}{2}}^{\; } z_{j + \frac{1}{2}}^{\;-} + \hat{u}_{j - \frac{1}{2}}^{\; } z_{j - \frac{1}{2}}^{\;+} = 0. \end{aligned}$$
(3.13c)

Setting \(v=u, w=-q, z=p\), would yield:

$$\begin{aligned}&(u_t, u)_{K_j} + (p,u_x)_{K_j} - \widehat{p}_{j + \frac{1}{2}}^{\;-} u_{j + \frac{1}{2}}^{\;-} + \widehat{p}_{j - \frac{1}{2}}^{\;+} u_{j - \frac{1}{2}}^{\;+} = 0, \\&\quad -(p,q)_{K_j} - (q,q_x)_{K_j} + \widehat{q}_{j + \frac{1}{2}}^{\;-} q_{j + \frac{1}{2}}^{\;-} - \widehat{q}_{j - \frac{1}{2}}^{\;+} q_{j - \frac{1}{2}}^{\;+} = 0, \\&(q,p)_{K_j} + (u, p_x)_{K_j} - \hat{u}_{j + \frac{1}{2}}^{\; } p_{j + \frac{1}{2}}^{\;-} + \hat{u}_{j - \frac{1}{2}}^{\; } p_{j - \frac{1}{2}}^{\;+} = 0. \end{aligned}$$

Then we add these equations together:

$$\begin{aligned}&(u_t,u)_{K_j} + \int _{K_j} (pu)_x \,\mathrm {d} x - \frac{1}{2}\int _{K_j} (q^2)_x \,\mathrm {d} x \nonumber \\&\quad -\,\widehat{p}_{j + \frac{1}{2}}^{\;-} u_{j + \frac{1}{2}}^{\;-} + \widehat{p}_{j - \frac{1}{2}}^{\;+} u_{j - \frac{1}{2}}^{\;+} + \widehat{q}_{j + \frac{1}{2}}^{\;-} q_{j + \frac{1}{2}}^{\;-} - \widehat{q}_{j - \frac{1}{2}}^{\;+} q_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j + \frac{1}{2}}^{\; } p_{j + \frac{1}{2}}^{\;-} + \hat{u}_{j - \frac{1}{2}}^{\; } p_{j - \frac{1}{2}}^{\;+} = 0. \end{aligned}$$

Which may be written as:

$$\begin{aligned}&\frac{1}{2}\frac{\partial }{\partial t} (u,u)_{K_j} + p_{j + \frac{1}{2}}^{\;-} u_{j + \frac{1}{2}}^{\;-} - p_{j - \frac{1}{2}}^{\;+} u_{j - \frac{1}{2}}^{\;+} - \frac{1}{2}\left[ (q^2)_{j + \frac{1}{2}}^{\;-} - (q^2)_{j - \frac{1}{2}}^{\;+}\right] \nonumber \\&\quad -\,\widehat{p}_{j + \frac{1}{2}}^{\;-} u_{j + \frac{1}{2}}^{\;-} + \widehat{p}_{j - \frac{1}{2}}^{\;+} u_{j - \frac{1}{2}}^{\;+} + \widehat{q}_{j + \frac{1}{2}}^{\;-} q_{j + \frac{1}{2}}^{\;-} - \widehat{q}_{j - \frac{1}{2}}^{\;+} q_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j + \frac{1}{2}}^{\; } p_{j + \frac{1}{2}}^{\;-} + \hat{u}_{j - \frac{1}{2}}^{\; } p_{j - \frac{1}{2}}^{\;+} = 0. \end{aligned}$$

By reordering the terms, we get:

$$\begin{aligned}&\frac{1}{2}\frac{\partial }{\partial t} |{u}|^2_{K_j} + {\varTheta }_{K_j}^q + {\varTheta }_{K_j}^p = 0, \end{aligned}$$
(3.14)

with

$$\begin{aligned}&{\varTheta }_{K_j}^q= \left[ \left( \widehat{q}_{j + \frac{1}{2}}^{\;-}-\tfrac{1}{2} q_{j + \frac{1}{2}}^{\;-} \right) q_{j + \frac{1}{2}}^{\;-} -\left( \widehat{q}_{j - \frac{1}{2}}^{\;+} - \tfrac{1}{2} q_{j - \frac{1}{2}}^{\;+} \right) q_{j - \frac{1}{2}}^{\;+} \right] ,\nonumber \\&{\varTheta }_{K_j}^p= \left[ \left( p_{j + \frac{1}{2}}^{\;-}-\widehat{p}_{j + \frac{1}{2}}^{\;-}\right) u_{j + \frac{1}{2}}^{\;-} + \left( \widehat{p}_{j - \frac{1}{2}}^{\;+}-p_{j - \frac{1}{2}}^{\;+}\right) u_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j + \frac{1}{2}}^{\; } p_{j + \frac{1}{2}}^{\;-} + \hat{u}_{j - \frac{1}{2}}^{\; } p_{j - \frac{1}{2}}^{\;+} \right] . \end{aligned}$$

Now, let us rewrite \(\widehat{p}\) from (3.2), as below:

$$\begin{aligned} \widehat{p}_{j + \frac{1}{2}}^{\;-}= & {} p_{j + \frac{1}{2}}^{\;-} +\tau _{j + \frac{1}{2}}^{\;-}\left( u_{j + \frac{1}{2}}^{\;-} - \hat{u}_{j + \frac{1}{2}}^{\;}\right) \mathsf {n}_{j + \frac{1}{2}}^{\;-} = p_{j + \frac{1}{2}}^{\;-}+\tau _{j + \frac{1}{2}}^{\;-}\left( u_{j + \frac{1}{2}}^{\;-} - \hat{u}_{j + \frac{1}{2}}^{\;}\right) , \nonumber \\ \widehat{p}_{j - \frac{1}{2}}^{\;+}= & {} p_{j - \frac{1}{2}}^{\;+} +\tau _{j - \frac{1}{2}}^{\;+}\left( u_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j - \frac{1}{2}}^{\;}\right) \mathsf {n}_{j - \frac{1}{2}}^{\;+} = p_{j - \frac{1}{2}}^{\;+} -\tau _{j - \frac{1}{2}}^{\;+}\left( u_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j - \frac{1}{2}}^{\;}\right) .\qquad \qquad \end{aligned}$$
(3.15)

By substituting \(p_{j + \frac{1}{2}}^{\;-}\) and \(p_{j + \frac{1}{2}}^{\;+}\) from (3.15) into \({\varTheta }_{K_j}^p\), we have:

$$\begin{aligned} {\varTheta }^p_{K_j}&= -\tau _{j + \frac{1}{2}}^{\;-}\left( u_{j + \frac{1}{2}}^{\;-} - \hat{u}_{j + \frac{1}{2}}^{\;}\right) u_{j + \frac{1}{2}}^{\;-} - \tau _{j - \frac{1}{2}}^{\;+}\left( u_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j - \frac{1}{2}}^{\;}\right) u_{j - \frac{1}{2}}^{\;+} \nonumber \\&\quad -\,\hat{u}_{j + \frac{1}{2}}^{\; }\left( \widehat{p}_{j + \frac{1}{2}}^{\;-} -\tau _{j + \frac{1}{2}}^{\;-}\left( u_{j + \frac{1}{2}}^{\;-} -\hat{u}_{j + \frac{1}{2}}^{\;}\right) \right) + \hat{u}_{j - \frac{1}{2}}^{\; }\left( \widehat{p}_{j - \frac{1}{2}}^{\;+} +\tau _{j - \frac{1}{2}}^{\;+}\left( u_{j - \frac{1}{2}}^{\;+} - \hat{u}_{j - \frac{1}{2}}^{\;}\right) \right) \nonumber \\&=- \tau _{j + \frac{1}{2}}^{\;-}\left( \left( u_{j + \frac{1}{2}}^{\;-}\right) ^2 - \hat{u}_{j + \frac{1}{2}}^{\;}u_{j + \frac{1}{2}}^{\;-}\right) - \tau _{j - \frac{1}{2}}^{\;+} \left( \left( u_{j - \frac{1}{2}}^{\;+}\right) ^2 - \hat{u}_{j - \frac{1}{2}}^{\;}u_{j - \frac{1}{2}}^{\;+} \right) \nonumber \\&\quad - \hat{u}_{j + \frac{1}{2}}^{\; }\widehat{p}_{j + \frac{1}{2}}^{\;-} +\tau _{j + \frac{1}{2}}^{\;-}\left( \hat{u}_{j + \frac{1}{2}}^{\; }u_{j + \frac{1}{2}}^{\;-} -\left( \hat{u}_{j + \frac{1}{2}}^{\;}\right) ^2\right) + \hat{u}_{j - \frac{1}{2}}^{\; }\widehat{p}_{j - \frac{1}{2}}^{\;+}\nonumber \\&\quad +\,\tau _{j - \frac{1}{2}}^{\;+}\left( \hat{u}_{j - \frac{1}{2}}^{\; }u_{j - \frac{1}{2}}^{\;+} - \left( \hat{u}_{j - \frac{1}{2}}^{\; }\right) ^2\right) . \end{aligned}$$
(3.16)

Now, we sum over all elements, and apply the conservation of the flux. For the current 1D problem, the flux conservation condition, i.e. \(\llbracket \widehat{p}\, \mathsf {n} \rrbracket =0\), simply becomes: \(\widehat{p}\,^{+} = {\widehat{p}}\,^{-}\). Hence, we get:

$$\begin{aligned} {\varTheta }^p_{\mathcal T_h} = \sum _{K_j \in \mathcal T_h}{\varTheta }^p_{K_j}=\sum _j-\tau _{j + \frac{1}{2}}^{\;-}\left( u_{j + \frac{1}{2}}^{\;-} - \hat{u}_{j + \frac{1}{2}}^{\;}\right) ^2 - \tau _{j - \frac{1}{2}}^{\;+} \left( u_{j - \frac{1}{2}}^{\;+}-\hat{u}_{j - \frac{1}{2}}^{\;}\right) ^2.\qquad \quad \end{aligned}$$
(3.17)

which is nonnegative, for all \(\tau _{j \pm \frac{1}{2}}^{\;\mp } < 0\), or simply \(\tau < 0\).

Next, let us consider \({\varTheta }_{K_j}^q\) in (3.14), and choose \(\widehat{q}\) similar to (3.2):

$$\begin{aligned} \widehat{q}_{j - \frac{1}{2}}^{\;+}= & {} \hat{q}_{j - \frac{1}{2}}^{\;} + \sigma _{j - \frac{1}{2}}^{\;+} \left( q_{j - \frac{1}{2}}^{\;+} - \hat{q}_{j - \frac{1}{2}}^{\;}\right) \mathsf {n}_{j - \frac{1}{2}}^{\;+} = \hat{q}_{j - \frac{1}{2}}^{\;} - \sigma _{j - \frac{1}{2}}^{\;+} \left( q_{j - \frac{1}{2}}^{\;+} - \hat{q}_{j - \frac{1}{2}}^{\;}\right) ,\nonumber \\ \widehat{q}_{j + \frac{1}{2}}^{\;-}= & {} \hat{q}_{j + \frac{1}{2}}^{\;} + \sigma _{j + \frac{1}{2}}^{\;-} \left( q_{j + \frac{1}{2}}^{\;-} - \hat{q}_{j + \frac{1}{2}}^{\;}\right) \mathsf {n}_{j + \frac{1}{2}}^{\;-} = \hat{q}_{j + \frac{1}{2}}^{\;} + \sigma _{j + \frac{1}{2}}^{\;-} \left( q_{j + \frac{1}{2}}^{\;-} - \hat{q}_{j + \frac{1}{2}}^{\;}\right) .\qquad \qquad \end{aligned}$$
(3.18)

These fluxes should be used along with the flux conservation condition \(\llbracket \widehat{q}\, \mathsf {n}\rrbracket = {\widehat{q}\,}^{+} {\mathsf {n}}^{+} + {\widehat{q}\,}^{-} {\mathsf {n}}^{-} = 0\). Assuming \(\sigma \ne 0, q_{j + \frac{1}{2}}^{\;-}\) and \(q_{j - \frac{1}{2}}^{\;+}\) may be written as:

$$\begin{aligned} q_{j - \frac{1}{2}}^{\;+} = \frac{\left( 1+\sigma _{j - \frac{1}{2}}^{\;+}\right) \hat{q}_{j - \frac{1}{2}}^{\;} - \widehat{q}_{j - \frac{1}{2}}^{\;+}}{\sigma _{j - \frac{1}{2}}^{\;+}}, \quad q_{j + \frac{1}{2}}^{\;-} = \frac{\widehat{q}_{j + \frac{1}{2}}^{\;-} - \left( 1-\sigma _{j + \frac{1}{2}}^{\;-}\right) \hat{q}_{j + \frac{1}{2}}^{\;}}{\sigma _{j + \frac{1}{2}}^{\;-}}. \end{aligned}$$
(3.19)

Next, we consider \({\varTheta }_{K_j}^q\) from (3.14), and substitute the above \(q^{\pm }\), to obtain:

$$\begin{aligned} {\varTheta }_{K_j}^q&= -\frac{\left( \widehat{q}_{j + \frac{1}{2}}^{\;-}\right) ^2+\left( 1-\sigma _{j + \frac{1}{2}}^{\;-}\right) ^2 \left( \hat{q}_{j + \frac{1}{2}}^{\;} \right) - 2\left( 1- \sigma _{j + \frac{1}{2}}^{\;-}\right) {\widehat{q}_{j + \frac{1}{2}}^{\;-}} \hat{q}_{j + \frac{1}{2}}^{\;}}{2\left( \sigma _{j + \frac{1}{2}}^{\;-}\right) ^2} \nonumber \\&\quad +\,\frac{\left( \widehat{q}_{j + \frac{1}{2}}^{\;-}\right) ^2-\left( 1-\sigma _{j + \frac{1}{2}}^{\;-}\right) \widehat{q}_{j + \frac{1}{2}}^{\;-} \hat{q}_{j + \frac{1}{2}}^{\;}}{\sigma _{j + \frac{1}{2}}^{\;-}} - \frac{\left( 1+\sigma _{j - \frac{1}{2}}^{\;+}\right) {\widehat{q}_{j - \frac{1}{2}}^{\;+}} {\hat{q}_{j - \frac{1}{2}}^{\;}}-\left( \widehat{q}_{j - \frac{1}{2}}^{\;+}\right) ^2}{\sigma _{j - \frac{1}{2}}^{\;+}} \nonumber \\&\quad +\,\frac{\left( \widehat{q}_{j - \frac{1}{2}}^{\;+}\right) ^2+\left( 1+\sigma _{j - \frac{1}{2}}^{\;+}\right) ^2 \left( \hat{q}_{j - \frac{1}{2}}^{\;}\right) ^2 - 2\left( 1+\sigma _{j - \frac{1}{2}}^{\;+}\right) {\widehat{q}_{j - \frac{1}{2}}^{\;+}}\hat{q}_{j - \frac{1}{2}}^{\;}}{2\left( \sigma _{j - \frac{1}{2}}^{\;+}\right) ^2} \nonumber \\&= \frac{\left( 2\sigma _{j + \frac{1}{2}}^{\;-}-1\right) }{2\left( \sigma _{j + \frac{1}{2}}^{\;-}\right) ^2} \left[ \left( \widehat{q}_{j + \frac{1}{2}}^{\;-}\right) ^2 + \left( \hat{q}_{j + \frac{1}{2}}^{\;}\right) ^2 -2\widehat{q}_{j + \frac{1}{2}}^{\;-}\hat{q}_{j + \frac{1}{2}}^{\;}\right] - \frac{1}{2} \left( \hat{q}_{j + \frac{1}{2}}^{\;}\right) ^2 + \widehat{q}_{j + \frac{1}{2}}^{\;-}\hat{q}_{j + \frac{1}{2}}^{\;} \nonumber \\&\quad +\,\frac{\left( 2\sigma _{j - \frac{1}{2}}^{\;+} + 1\right) }{2\left( \sigma _{j - \frac{1}{2}}^{\;+}\right) ^2} \left[ \widehat{q}_{j - \frac{1}{2}}^{\;+} - \hat{q}_{j - \frac{1}{2}}^{\;}\right] ^2 + \frac{1}{2} \left( \hat{q}_{j - \frac{1}{2}}^{\;}\right) ^2 - \widehat{q}_{j - \frac{1}{2}}^{\;+}\hat{q}_{j - \frac{1}{2}}^{\;}. \end{aligned}$$
(3.20)

By summing over all elements, and applying the flux conservation and periodic boundary condition, we get:

$$\begin{aligned} {\varTheta }_{\mathcal T_h}^q= & {} \sum _{K_j\in \mathcal T_h} {\varTheta }_{K_j}^q = \sum _j \frac{\left( 2\sigma _{j + \frac{1}{2}}^{\;-}-1\right) }{2\left( \sigma _{j + \frac{1}{2}}^{\;-}\right) ^2} \left[ \widehat{q}_{j + \frac{1}{2}}^{\;-} - \hat{q}_{j + \frac{1}{2}}^{\;}\right] ^2\nonumber \\&+\,\frac{\left( 2\sigma _{j - \frac{1}{2}}^{\;+} + 1\right) }{2\left( \sigma _{j - \frac{1}{2}}^{\;+}\right) ^2} \left[ \widehat{q}_{j - \frac{1}{2}}^{\;+} - \hat{q}_{j - \frac{1}{2}}^{\;}\right] ^2. \end{aligned}$$
(3.21)

Which is non-negative for \(\sigma ^- > \frac{1}{2}\), and \(\sigma ^+ > -\frac{1}{2}\), or simply \(\sigma > \frac{1}{2} \mathsf {n}\), and also \(\sigma \ne 0\).

Eventually, if we sum (3.14) over all elements, we get:

$$\begin{aligned} \frac{1}{2}\frac{\partial }{\partial t} |\!|u|\!|^2_{\mathcal T_h} + {\varTheta }_{\mathcal T_h}^q + {\varTheta }_{\mathcal T_h}^p = 0, \end{aligned}$$

with \({\varTheta }_{\mathcal T_h}^q\) and \({\varTheta }_{\mathcal T_h}^p\) obtained in (3.17) and (3.21). According to the assumptions on \(\sigma \) and \(\tau \), these two are nonnegative. Hence, \(\partial |\!|u|\!|^2_{\mathcal T_h} / \partial t \le 0\), and the only solution to the problem with zero source term and zero initial condition is \(u=0\). By putting \(u=0\) in (3.17), and knowing that \({\varTheta }^p_{\mathcal T_h} = 0\), one gets \(\hat{u} = 0\). Next, set \(z=q\) in (3.13c) and use \(u=0\) and \(\hat{u} = 0\) to conclude \(q=0\). Also, we know \({\varTheta } _{\mathcal T_h}^q = 0\), which implies \(\widehat{q}\, ^+ = \widehat{q}\, ^- = \hat{q}\). Comparing this with the relationship of \(\widehat{q}\) and \(\hat{q}\) obtained from (3.19) and setting \(q=0\), one can see that \(\hat{q} = \widehat{q}= 0\). Finally, set \(w=p\) in (3.13b), and use \(q=0\) and \(\widehat{q}=0\) to deduce that \(p=0\). Consequently, the only solution to the problem with periodic boundary condition, zero initial condition and zero source term is the trivial solution.

Since we are working in a linear and finite dimensional setting, the trivial null-space implies existence and uniqueness of the solution. Therefore, the theorem follows. \(\square \)

Corollary 3.2

The proposed method with the boundary conditions \(u=0\) on \(x_R, x_L\), and \(q=0\) on \(x_L\), and the stabilization parameters: \(\sigma >\frac{1}{2} \mathsf {n}, \tau <0\), is stable and has a unique solution.

Proof

The proof follows similar steps as Theorem 3.1. However, in (3.16) the two terms \(-\hat{u}_{j + \frac{1}{2}}^{\; }\widehat{p}_{j + \frac{1}{2}}^{\;-}\) and \(\hat{u}_{j - \frac{1}{2}}^{\; }\widehat{p}_{j - \frac{1}{2}}^{\;+}\) will not cancel at the boundaries of the domain. Instead, by taking \(g_u =0\) both of these terms become zero. Moreover, in (3.20), by setting \(g_q = 0\), one can get \(\widehat{q}\,^+ \hat{q} =(\hat{q})^2 = 0\) at \(x=x_L\). On \(x=x_R\), using (3.19) with \(\widehat{q}\, ^- = q ^-\), results in \(\widehat{q}\, ^- = \hat{q}\). Hence, we get:

$$\begin{aligned} \frac{1}{2} \frac{\partial }{\partial t} |\!| u |\!|^2_{\mathcal T_h} + {\bar{{\varTheta }}}^q_{\mathcal T_h} + {\varTheta }_{\mathcal T_h}^p = 0. \end{aligned}$$

with, \({\bar{{\varTheta }}}^q_{\mathcal T_h} = {{\varTheta }}^q_{\mathcal T_h} + \frac{1}{2} (\hat{q}|_{x=x_R})^2\), which is non-negative. Therefore, based on the same logic as Theorem 3.1, the only solution to the problem with zero source term, zero initial condition, and zero boundary conditions is the trivial solution. Hence, we have stability. The existence and uniqueness will also follow. \(\square \)

Corollary 3.3

The proposed method with the boundary conditions \(u=0\) on \(x_L, p=0\) on \(x_R\), and \(q=0\) on \(x_L\), and the stabilization parameters: \(\sigma >\frac{1}{2} \mathsf {n}, \tau <0\), is stable and has a unique solution. The same is true for \(u=0\) on \(x_R, p=0\) on \(x_L\), and \(q=0\) on \(x_L\).

Proof

Similar to Corollary 3.2, one can show that in (3.16) the two terms \(-\hat{u}_{j + \frac{1}{2}}^{\; }\widehat{p}_{j + \frac{1}{2}}^{\;-}\) and \(\hat{u}_{j - \frac{1}{2}}^{\; }\widehat{p}_{j - \frac{1}{2}}^{\;+}\) are zero for \(g_u=g_p=0\). Hence, for zero initial condition, zero boundary condition and zero source term, the only solution to the problem is the trivial solution. Therefore, we have stability, existence, and uniqueness of the solution. \(\square \)

In the proof of Corollary 3.2, it is worthwhile noting that, supporting the boundary data for q on \(x_R\) instead of \(x_L\) can result in an unstable scheme. In that case, instead of \({\bar{{\varTheta }}}^q_{\mathcal T_h} = {{\varTheta }}^q_{\mathcal T_h} + \frac{1}{2} (\hat{q}|_{x=x_R})^2\), we get \({\bar{{\varTheta }}}^q_{\mathcal T_h} = {{\varTheta }}^q_{\mathcal T_h} - \frac{1}{2} (\hat{q}|_{x=x_L})^2\), which is not necessarily non-negative, and the stability cannot be inferred.

3.2 Nonlinear Solver

Let us consider (2.3), with \(\alpha =-1\) and \(\beta = 3\). We want to find the approximations \(u,q,p \in W_h^k\), such that for all test functions \(v,w,z \in W_h^k\),

$$\begin{aligned}&(u_t, v)_{K} - ({3 u^2}-p,v_x)_{K} + \left\langle (\widehat{3 u^2}-\widehat{p}) \, \mathsf {n}, v \right\rangle _{\partial K} = (f, v)_{K},\nonumber \\&(p, w)_{K} + (q,w_x)_{K} - \langle \widehat{q}\, \mathsf {n}, w \rangle _{\partial K} = 0,\nonumber \\&(q, z)_{K} + (u,z_x)_{K} - \langle \hat{u} , z \, \mathsf {n}\rangle _{\partial K} = 0, \end{aligned}$$
(3.22)

for all \(K \in \mathcal T_h\). For this nonlinear equation, we define the numerical fluxes as:

$$\begin{aligned} \widehat{q}= & {} \hat{q} + \sigma (q - \hat{q}) \, \mathsf {n}, \nonumber \\ \widehat{3u^2} - \widehat{p}= & {} 3 \hat{u}^2 - p + \tau (u - \hat{u}) \, \mathsf {n}. \end{aligned}$$
(3.23)

In order to apply the boundary conditions on uq, we use the same scheme as linear case, i.e. (3.3). Furthermore, we require our fluxes to be conserved across the element faces. This flux conservation will be enforced explicitly through a set of global equations, which can be written for a given face \(e \in \mathcal E_h\):

$$\begin{aligned} \llbracket \, \widehat{q}\, \mathsf {n}\, \rrbracket = \left\{ \begin{aligned}&q \, \mathsf {n},&e \in \mathcal E^\partial _h \backslash {\varGamma }_q, \\&0,&e \in \mathcal E_h^0. \end{aligned} \right. \qquad \left\{ \begin{aligned}&p \, \mathsf {n}= g_p,&e \in {\varGamma }_p, \\&\llbracket \, (\widehat{3 u^2} - \widehat{p}) \, \mathsf {n}\, \rrbracket = 0,&e \in \mathcal E_h^0. \end{aligned} \right. \end{aligned}$$
(3.24)

The difference of the above equations with (3.4), is the way that we apply the boundary condition on p. Since this boundary condition is applied through the numerical flux, and the flux is nonlinear, the boundary condition at \({\varGamma }_p\) is applied via \(p \, \mathsf {n}= g_p\). It should be noted that, we use local equations to derive p in terms of \(\hat{u}\) and \(\hat{q}\); therefore, the corresponding global equation will be in terms of the numerical traces.

Using the flux conservation relations together with (3.22) we can form our nonlinear system of equations. Moreover, in order to discretize in time, we use backward Euler time-stepping scheme with time-step \({\varDelta } t\) at time-level \(t_n\). Hence, we are looking for \(u,q,p \in W_h^k\) and \(\hat{u}, \hat{q} \in M_h^k(g_u) \times {\bar{M}}_h^k(g_q)\), such that:

$$\begin{aligned}&\begin{aligned}&\frac{1}{{\varDelta } t} (u, v)_{K} - (p_x,v)_K - ({3 u^2},v_x)_{K} + \langle 3 \hat{u} ^2 \, \mathsf {n}, v \rangle _{\partial K} \\&\quad + \langle \tau u, v \rangle _{\partial K} - \langle \tau \hat{u}, v \rangle _{\partial K} = (f, v)_{K} + \frac{1}{{\varDelta } t} (u^{n-1}, v)_{K}, \end{aligned} \nonumber \\&(p, w)_{K} + (q,w_x)_{K} - \langle \sigma q , w \rangle _{\partial K} - \langle (\mathsf {n}-\sigma ) \hat{q} , w \rangle _{\partial K} = 0, \nonumber \\&(q, z)_{K} + (u,z_x)_{K} - \langle \hat{u} , z \, \mathsf {n}\rangle _{\partial K} =0,\nonumber \\&\langle \hat{q} \, \mathsf {n}+ \sigma (q - \hat{q}) , \mu \rangle _{\partial \mathcal T_h} = 0 ,\nonumber \\&\langle 3 \hat{u}^2 \, \mathsf {n}+ \tau (u - \hat{u}) , \eta \rangle _{\partial \mathcal T_h \backslash {\varGamma }_p} - \langle p \, \mathsf {n}, \eta \rangle _{\partial \mathcal T_h} = -\langle g_p, \eta \rangle _{{\varGamma }_p}, \end{aligned}$$
(3.25)

For all \(v,w,z \in W_h^k\), and \((\mu , \eta ) \in {\bar{M}}_h^k(0) \times M_h^k(0)\).

3.2.1 Choice of the Numerical Fluxes

Theorem 3.1 gives the sufficient conditions on the stabilization parameters to make the linear solver stable. For the nonlinear solver, we use the same \(\sigma \) as we suggested for the linear one. However, choosing a constant \(\tau \) will not result in the best approximation in nonlinear problems. Therefore, we split \(\tau \) into \(\tau _0\) and \(\tau _1\) which are corresponding to the linear and nonlinear parts of total flux. Hence, in (3.23), \(-\widehat{p}= - p + \tau _0(u-u_0)\, \mathsf {n}\), and \(\widehat{3u^2} = 3 \hat{u}^2 + \tau _1 (u - \hat{u}) \, \mathsf {n}\). Based on Theorem 3.1, \(-\tau _0\) should be a constant negative real value; hence, \(\tau _0 > 0\). For \(\tau _1\), one option can be based on a Lax-Friedrichs type of flux [23, 25]; however, according to Theorem 3.1, we still want \(\tau _1 < 0\). Hence, we choose \(\tau _1 = - |\partial (3 {\hat{u}}^2) / \partial \hat{u}|\), and finally \(\tau \) can be written as:

$$\begin{aligned} \tau (\hat{u}) = -\left| \frac{\partial (3 \hat{u}^2)}{\partial \hat{u}}\right| + \tau _0 = -6 \left| \hat{u} \right| + \tau _0, \end{aligned}$$

with \(\tau _0\) being a constant positive real value.

3.2.2 Implementation

To implement the nonlinear solver, we apply the Newton–Raphson method to the system of equations (3.25). Hence, having the current iteration \(\bar{u}, \bar{q},\bar{p} \in W_h^k\) and \((\bar{\hat{u}},\bar{\hat{q}}) \in M_h^k(g_u) \times {\bar{M}}_h^k(g_q)\), and denoting \(\tau (\bar{\hat{u}})\) with \(\bar{\tau }\), we want to find the increments \(\delta u, \delta q, \delta p \in W_h^k\) and \((\delta \hat{u}, \delta \hat{q}) \in M_h^k(0) \times {\bar{M}_h^k(0)}\) such that:

(3.26)

with \(v,w,z \in W_h^k\), and \((\mu , \eta ) \in {\bar{M}}_h^k(0) \times M_h^k(0)\). The bilinear forms are similar to (3.10), except the following:

(3.27)

Next, let us discretize system of equations (3.26), to obtain the following matrix equations:

$$\begin{aligned}&\tilde{A} \, \delta U - B^{\mathrm T} \, \delta P + \tilde{C}_1 \, \delta {\varLambda } = \tilde{F},\nonumber \\&A \, \delta P + (B- D_2) \, \delta Q - C_2 \, \delta {\varPsi } = \tilde{H}, \nonumber \\&A \, \delta Q + B \, \delta U - C_3 \, \delta {\varLambda } = \tilde{K}, \nonumber \\&C_4^{\mathrm T} \, \delta Q + E_1 \, \delta {\varPsi } = \tilde{R}, \nonumber \\&C_5^{\mathrm T} \, \delta U - C_6^{\mathrm T} \, \delta P + \tilde{E}_2 \, \delta U = \tilde{S}. \end{aligned}$$
(3.28)

The process of solving this system of equations is similar to the linear case. We will use the first three equations to obtain \(\delta U, \delta Q\), and \(\delta P\) in terms of \(\delta {\varLambda }\) and \(\delta {\varPsi }\); then we solve for \(\delta {\varLambda }\) and \(\delta {\varPsi }\) using the last two equations. It is worth noting that, in the process of condensing the interior unknowns on the numerical traces, we just solve a series of independent local equations, which can be done simultaneously.

4 Numerical Experiments

In this section we will solve a number of simple examples to study the accuracy and capability of the proposed method. In all of these experiments we will use a first order backward difference scheme for time discretization. We will first examine the convergence rate of the computed uqp for linear and nonlinear problems. Afterwards, we use the method to solve a few well-known problems in the context of dispersive wave problems.

Example 1

In the first example, we solve the Eq. (2.3), with \(\alpha =-1, \beta = 0\), and \(f(x)=0\) in the domain \({\varOmega } = [0,\pi ]\). The initial condition is taken \(u_0 = \sin x\), and the boundary conditions are \(u(0,t) = -u(\pi ,t) = -\sin (t)\), and \(q(0,t) = \cos t\). Obviously, the exact solution to this problem is \(u=\sin (x-t)\). Meanwhile, the boundary conditions are not periodic, but would result in a well-posed problem. We use a constant and appropriately small time step with different mesh sizes. The values of \(\tau \), and \(\sigma \) are equal to \(-10\), and 10, respectively. Hence, the convergence rate of the computed solutions uqp at the final time level \(T=0.1\) is calculated. These rates are listed in Table 1 for different number of cells and different orders of the polynomial approximation. As one can observe, all of the approximate solutions uqp are converging with \(k+1\).

In the second part of this example we consider a similar problem, except at the right side of the domain we apply the boundary condition on p, leading to the boundary data: \(u(0,t)=-\sin t, p(\pi ,t) =-\sin t\), and \(q(0,t) = \cos t\). It is worth noting that the boundary condition on p is applied through the flux conservation condition (3.7). Since this set of boundary conditions provide a well-posed problem, one might expect the proposed numerical method to converge at the optimal rates for each \(k\ge 0\). We list the corresponding rates of convergence in Table 2. Note that unlike the previous case where, we obtain optimal convergence for all \(k\ge 0\), in this example, when boundary data on p is set in tandem with no information on the variation of the solution within the interior of the cell, i.e. the case of \(k=0\), we see a loss of uniform optimal convergence. Here, the solution of q will be unique up to a constant, and although we can satisfy all of the boundary conditions, we lose the optimal convergence. Nevertheless, the uniform optimal convergence is still observed for each uqp whenever \(k \ge 1\).

Table 1 Convergence rates of the solution of the linear problem (example 1), with the right side boundary condition on u
Table 2 Convergence rates of the solution of linear problem (example 1), with the right side boundary condition on p

Example 2

In this sample problem, we examine the convergence of the method in solving a nonlinear problem. In Eq. (2.3) we let \(\alpha =-1, \beta = 3\), and \(f(x) = 7 \cos (2x-t) + 6 \sin (4x-2t)\), and solve the equation in the domain \({\varOmega }=[0,\pi ]\). As for the initial condition we apply \(u(x,0) = \sin (2x)\), and the boundary conditions are \(u(0,t) = u(\pi ,t) = -\sin t\), and \(q(0,t) = 2\cos t\). Thus, the exact solution of the problem is \(u=\sin (2x-t)\). The stabilization parameters are \(\sigma = 1\), and \(\tau _0=20\). In this problem, the stabilization parameters have a noticeable effect on the accuracy of the solution, and need to be chosen carefully to result in optimal convergence. The convergence rates of the approximate solutions are presented in Table 3. It is worthwhile noting that the approximate solutions up, and q are converging with optimal convergence for polynomial orders \(0 \le k \le 3\).

Table 3 Convergence rates of the solution of nonlinear problem (example 2), with the right side boundary condition on u

Next, we test the method for the case where the boundary condition on the right side of the domain is applied on p instead of u. The convergence results for this problem are listed in Table 4. Similar to the linear case with the boundary condition on p, the method results in the optimal convergence for polynomial orders \(k \ge 1\).

Table 4 Convergence rates of the solution of nonlinear problem (example 2), with the right side boundary condition on p

Example 3

In the previous examples, we have shown the convergence properties of the method; in this example, we are solving for the classical solution of (2.3) with \(\alpha =1, \beta =3\), and \(f(x,t)=0\). We solve this equation taking \((x,t) \in [-10,0]\times (0,2]\), with initial condition \(u(x,0)=2\,\text{ sech }^2(x+4)\). An exact solution to this problem is \(u(x,t)=2\, \text{ sech }(x-4t+4)\); therefore, we extract the relevant boundary data for \(u(-10,t), u(0,t)\), and q(0, t) and include them in IBVP definition. Since, \(\alpha =1\), we have applied the q-boundary condition at the right end of the domain. Results are computed using 100 elements with third order polynomials. The time-step size in this example is \({\varDelta } t = 10^{-3}\).

The space–time graphs of the computed solution are shown in Fig. 1. Moreover, the relevant analytical solutions are also shown, for a side by side comparison. Although, we have not chosen our time-step small enough for error calculation, one can still observe a good match between the computed and analytical solutions.

Fig. 1
figure 1

Space–time graphs of one soliton in the domain \((x,t)\in [-10,0]\times (0,2]\). Evolution of the computed solution (left) and analytical solution (right) of a u, b q and c p

Example 4

In this experiment, we examine the interaction of two solitary waves with different propagation speeds [31]. We want to solve Eq. (2.3), with \(\alpha =1, \beta =3\), and \(f(x,t)=0\) with \((x,t) \in [-20,0]\times (0,2]\). The initial condition is assumed as:

$$\begin{aligned} u_0(x)=5 \, \frac{4.5\, \mathrm {csch}^2 \left[ 1.5(x+14.5)\right] +2\, \mathrm {sech}^2(x+12)}{\left\{ 3 \, \mathrm {coth}\left[ 1.5(x+14.5)\right] -2\tanh (x+12)\right\} ^2}. \end{aligned}$$

Next, we use the following exact solution to extract three required boundary data, to complete the problem definition:

$$\begin{aligned} u(x,t)=5 \, \frac{4.5\, \mathrm {csch}^2 \left[ 1.5(x-9t+14.5)\right] +2\, \mathrm {sech}^2(x-4t+12)}{\left\{ 3 \, \mathrm {coth}\left[ 1.5(x-9t+14.5)\right] -2\tanh (x-4t+12)\right\} ^2}. \end{aligned}$$

Similar to the previous example, \(\alpha =1\) in (2.3); hence we apply the boundary condition on p at the right end of the domain. The results are computed using 50 elements with 4th order polynomials. The time-step size is also taken as: \({\varDelta } t = 10^{-5}\).

Figure 2 shows the space–time graphs of the two solitons interacting with each other. In the first phase, the two waves are approaching, and around \(t=0.5\), they overlap each other. Afterwards, the faster soliton continues to propagate and leaves the domain of analysis. The analytical solutions are also presented in this figure, for comparison purposes. It is worthwhile to note that, one can achieve a better accuracy by using a smaller time-step; nevertheless, even with the current time-step size, we have obtained a very good match between the analytical and computed solutions.

Fig. 2
figure 2

Space–time graphs of two solitons with different propagation speeds (example 4). Evolution of the computed solution (left) and analytical solution (right) of a u, b q and c p

5 Conclusion

In this study, we have presented an implicit high-order hybridized discontinuous Galerkin method for solving linear and nonlinear KdV type equations. The proposed technique is different from previous DG variants in the following ways:

  • When HDG is applied to lower order equations, we express the approximate variables and numerical fluxes in terms of the numerical trace of u. Thus, we obtain a global system of equations which is smaller, and can be solved more efficiently. Here, in order to keep the same workflow as the common HDG schemes, we include the numerical trace of \(u_x\), along with u as our global unknowns. By using this technique, the method can be conveniently extended to higher order equations. Despite adding another global unknown, the number of global equations is still \(\mathcal O(k^{d-1}/h)\).

  • In some other DG variants, like LDG, the numerical fluxes are chosen explicitly as a function of approximate variables. By this choice, we enforce the conservation of the numerical fluxes as well. However, in HDG, we explicitly impose the flux continuity through an extra set of equations.

Although, we solve our global set of equations for two numerical traces, the solution procedure is similar to that of common HDG implementations. Hence, we expect to inherit the corresponding properties of the HDG, especially the optimal convergence of the method. In our method, the numerical fluxes are related to the unknown traces through two stabilization parameters \(\sigma \), and \(\tau \). We derived the sufficient conditions on \(\sigma \), and \(\tau \) to construct a stable method for the linear problem. Next, for the nonlinear case, we chose the stabilization parameter (\(\tau \)) based on a Lax–Fredriech choice of flux. Afterwards, through a set of numerical experiments we have shown that by using elements of order k, the computed solution would converge optimally with order \(k+1\) for every approximate solution, i.e. up, and q.

Finally, it is worth noting that, the proposed technique is easily extendable to higher order equations. This can perfectly fit into the optimal convergence of HDG in high order derivatives, and give rise to a family of accurate methods for higher order differential equations.