In this chapter we briefly outline some of the implementation aspects of DGFEMs posed on general computational meshes consisting of polytopic elements. To this end, we focus on three key topics: mesh generation, construction of the elemental polynomial basis, and efficient numerical integration over polytopic elements. Finally, we end this chapter by presenting some numerical examples to highlight the sharpness of the a priori error bounds derived in Chap. 5 for both a steady advection-diffusion-reaction problem and a (degenerate) evolution problem.

6.1 Mesh Generation

General meshes consisting of polytopic elements can be constructed in a number of different ways; in particular, a Voronoi tessellation of the underlying geometry may be generated, cf. [88, 165], for example. Alternatively, a flexible approach for meshing complicated geometries, is to exploit some form of agglomeration algorithm, whereby the underlying polytopic elements are formed by taking the union of a set of elements from a given geometry-conforming fine mesh \(\mathscr{T}_{h}^{\text{fine}}\). We point out that \(\mathscr{T}_{h}^{\text{fine}}\) is typically constructed by employing standard shaped elements, i.e., simplices or tensor-product elements; in this setting, the resulting underlying FEM is often referred to as a composite FEM, cf. [8, 12, 106, 107], or an agglomerated FEM, cf. [32, 34]. The construction of agglomerated meshes may be undertaken using two key approaches: firstly, in the series of articles [8, 12, 106, 107] a hierarchy of overlapping (so-called) reference and logical meshes, consisting of standard-shaped elements, are constructed based on successive adaptive refinement of elements which intersect the boundary ∂Ω of the computational domain Ω. Once a sufficiently fine logical mesh has been constructed, possibly by moving nodes onto ∂Ω, a sequence of coarse geometry-conforming physical meshes, consisting of general polytopic elements, may be constructed via agglomerating elements which share the same parent within the underlying refinement tree. Secondly, the fine mesh \(\mathscr{T}_{h}^{\text{fine}}\) may be constructed using a standard mesh generator, for example, Triangle [157] or Tetgen [158], and then subsequently agglomerated into polytopes using graph partitioning algorithms; for this purpose, in the numerical investigations presented in this volume, we employ METIS [130], though we stress that many other such packages also exist.

6.2 Construction of Basis Functions on Polytopes

In the case when the computational mesh \(\mathscr{T}_{h}\) consists of standard element shapes, the construction of the underlying finite element space \(V ^{\mathbf{p}}(\mathscr{T}_{h})\) is typically undertaken by mapping each element κ in \(\mathscr{T}_{h}\) to a given reference or canonical element, denoted by κ R. Thereby, on κ R local spaces of polynomials may be constructed in a simple manner, subject to the enforcement of any inter-element continuity constraints, for example, in the case when C 0-conforming elements are employed; for further details, we refer to, for example, [78, 129, 160], and the references cited therein. While this approach is used quite universally within most FEM software packages, a disadvantage is that the calculation of high-order derivatives of the computed numerical solution is rather cumbersome when non-affine element mappings are employed. Moreover, in this setting, the order of approximation of the underlying FEM may be adversely affected by mesh distortion, unless a sufficiently rich local space is employed, cf. [17, 19].

The flexibility of the DGFEM allows for the elemental basis to be constructed within the physical frame, without the need to map to a given reference/canonical element, cf. [33], for example; indeed, this is an essential feature of DGFEMs which allows them to admit general polytopic elements in a simple fashion. In [33] basis functions are constructed on general meshes consisting of agglomerated elements, based on employing a Gram-Schmidt orthogonalization process applied to a given set of polynomial functions defined on each κ, \(\kappa \in \mathscr{T}_{h}\). An alternative approach proposed in [54] is based on first defining polynomial spaces over a suitably chosen bounding box of each element κ, \(\kappa \in \mathscr{T}_{h}\); then the element basis is simply constructed by restricting this space to κ. More precisely, given an element \(\kappa \in \mathscr{T}_{h}\), we write B κ to denote its corresponding bounding box; selecting, for example, B κ to be the Cartesian bounding box, i.e., the sides of B κ are aligned with the Cartesian axes, then B κ can be easily constructed, such that \(\bar{\kappa }\subseteq \bar{ B}_{\kappa }\), cf. Figure 6.1 for the case of a polygonal element κ in \(\mathbb{R}^{2}\). On this Cartesian bounding box B κ we may define a standard polynomial space \(\mathscr{P}_{p_{\kappa }}(B_{\kappa })\) spanned by a set of basis functions {ϕ i, κ }, \(i = 1,\ldots,\dim (\mathscr{P}_{p_{\kappa }}(B_{\kappa }))\); note that tensor-product polynomial spaces \(\mathscr{Q}_{p_{\kappa }}(B_{\kappa })\) may also be employed, though in the absence of non-affine element mappings, the approximation order of both spaces will be identical. Writing \(B_{\kappa }:= \mathscr{I}_{1} \times \mathscr{I}_{2} \times \ldots \times \mathscr{I}_{d}\), where \(\mathscr{I}_{j}:= (x_{1}^{\,j},x_{2}^{\,j})\), j = 1, , d, and selecting κ R: = (−1, 1)d to be the reference hypercube, the bounding box B κ may be affinely mapped to κ R, via the mapping

$$\displaystyle{ \mathbf{x} = J_{\kappa }\hat{\mathbf{x}} + \mathbf{c}, }$$
(6.1)

where J κ : = diag(h 1, , h d ), c: = (m 1, , m d ), and \(\hat{\mathbf{x}}\) is a general point in κ R. Furthermore, h j , j = 1, , d, is half of the length of the jth-side of B κ , respectively, i.e., h j : = (x 2 jx 1 j)∕2, j = 1, , d, and m j : = (x 1 j + x 2 j)∕2, j = 1, , d, is the midpoint of \(\mathscr{I}_{j}\).

Fig. 6.1
figure 1

Bounding box B κ of an element \(\kappa \in \mathscr{T}_{h}\)

For convenience, on κ R we employ tensor-product Legendre polynomials; to this end, writing \(\{\hat{L}_{i}(\hat{x})\}_{i=0}^{\infty }\) to denote the family of L 2(−1, 1)-orthogonal Legendre polynomials, cf. [156], for example, the space of polynomials \(\mathscr{P}_{p_{\kappa }}(\kappa _{\mathrm{R}})\) of total degree p k over κ R is given by

$$\displaystyle{ \mathscr{P}_{p_{\kappa }}(\kappa _{\mathrm{R}}):= \mathrm{span}\{\hat{\phi }_{i,\kappa }\}_{i=1}^{\dim (\mathscr{P}_{p_{\kappa }}(\kappa _{\mathrm{R}}))}, }$$

where

$$\displaystyle{ \hat{\phi }_{i,\kappa }(\hat{\mathbf{x}}) =\hat{ L}_{i_{1}}(\hat{x}_{1})\hat{L}_{i_{2}}(\hat{x}_{2})\cdots \hat{L}_{i_{d}}(\hat{x}_{d}),\quad i_{1} + i_{2} +\ldots +i_{d} \leq p_{\kappa },\ \ i_{k} \geq 0,\ k = 1,\ldots,d, }$$

and \(\hat{\mathbf{x}} = (\hat{x}_{1},\hat{x}_{2},\ldots,\hat{x}_{d})\). Writing \(L_{i}(x) =\hat{ L}_{i}((x - m_{j})/h_{j}),\) under the transformation (6.1), the space of polynomials \(\mathscr{P}_{p_{\kappa }}(B_{\kappa })\) of total degree p k over B κ is given by

$$\displaystyle{ \mathscr{P}_{p_{\kappa }}(B_{\kappa }) = \mathrm{span}\{\phi _{i,\kappa }\}_{i=1}^{\dim (\mathscr{P}_{p_{\kappa }}(B_{\kappa }))}, }$$

where

$$\displaystyle{ \phi _{i,\kappa }(\mathbf{x}) = L_{i_{1}}(x_{1})L_{i_{2}}(x_{2})\cdots L_{i_{d}}(x_{d}),\quad i_{1} + i_{2} +\ldots +i_{d} \leq p_{\kappa },\ \ i_{k} \geq 0,\ k = 1,\ldots,d, }$$

and x = (x 1, x 2, , x d ). Thereby, the polynomial basis over the general polytopic element κ may be defined by simply restricting the support of {ϕ i, κ }, \(i = 1,\ldots,\dim (\mathscr{P}_{p_{\kappa }}(B_{\kappa }))\) to κ; i.e., the polynomial basis defined over κ is given by {ϕ i, κ | κ }, \(i = 1,\ldots,\dim (\mathscr{P}_{p_{\kappa }}(B_{\kappa }))\).

Remark 1

We stress that the choice of B κ is arbitrary; indeed, alternative bounding boxes, other than the Cartesian aligned one presented above, may be employed, provided that the construction of the underlying polynomial basis may be undertaken in a simple fashion. For example, for anisotropic polytopic elements, it may be more desirable to select a ‘rotated’ bounded box which is aligned with the principle axes of the element.

6.3 Quadrature Rules

The design of efficient and accurate quadrature rules for general polytopes is a challenging task; while several approaches have been proposed within the literature, cf. below, this still remains an open and active area of research. Below we review three prominent approaches which have been proposed; for further details, we refer to [14].

6.3.1 Sub-Tessellation

The simplest, and perhaps most natural approach is to simply construct a sub-tessellation of each polytopic element into standard element shapes, upon which standard quadrature rules may be employed, cf. [54, 55, 125], for example. More precisely, given \(\kappa \in \mathscr{T}_{h}\), we first construct a non-overlapping sub-tessellation \(\kappa _{\mathscr{S}}:=\{\tau _{\kappa }\}\) consisting of standard element shapes; here, a general hybrid sub-tessellation consisting of quadrilateral and triangular elements in \(\mathbb{R}^{2}\), or tetrahedral, hexahedral, prismatic, and pyramidal elements in \(\mathbb{R}^{3}\), may be constructed. On agglomerated meshes, the sub-tessellation will already be available; however, for reasons of efficiency, one may still wish to construct an alternative sub-tessellation which comprises of a minimal number of elements. As an example, if we consider computing the DGFEM mass matrix, restricted to κ, \(\kappa \in \mathscr{T}_{h}\), then we have that

$$\displaystyle\begin{array}{rcl} \int _{\kappa }\!wv\,\mathrm{d}\mathbf{x} =\sum _{\tau _{\kappa }\in \kappa _{\mathscr{S}}}\int _{\tau _{\kappa }}wv\,\mathrm{d}\mathbf{x} \approx \sum _{\tau _{\kappa }\in \kappa _{\mathscr{S}}}\sum _{i=1}^{q_{\tau _{\kappa }}}w(F_{\kappa }(\boldsymbol{\xi }_{ i}))v(F_{\kappa }(\boldsymbol{\xi }_{i}))\det (J_{F_{\kappa }}(\boldsymbol{\xi }_{i}))w_{i},& & {}\\ \end{array}$$

where F κ : κ Rτ κ is the mapping from the reference element κ R to τ κ , with Jacobi matrix \(J_{F_{\kappa }}\), and \((\boldsymbol{\xi }_{i},w_{i})_{i=1}^{q_{\tau _{\kappa }}}\) denotes the quadrature rule defined on κ R. Quadrature rules on standard element shapes which form the sub-tessellation may be constructed based on employing tensor-product Gauss quadratures on the reference square or cube in \(\mathbb{R}^{2}\) or \(\mathbb{R}^{3}\), respectively; for non-tensor-product elements, such as simplices, for example, the resulting quadrature may be computed based on employing the Duffy transformation, whereby the reference tensor-product element is mapped to the reference simplex, cf. [86, 129, 171]. For alternative quadratures on non-tensor-product elements, we refer to, for example, [78, 87, 160], and the references cited therein.

An alternative approach based on employing Stokes’ theorem in \(\mathbb{R}^{2}\) over polygons has been studied in [161]. While this idea does not directly require a sub-tessellation of the underlying element domain κ, \(\kappa \in \mathscr{T}_{h}\), a judicious choice of parameters within the resulting formula, which ensures that all of the quadrature points lie within κ, essentially leads to a compound quadrature scheme defined on an appropriate sub-tessellation of κ.

We point out that while quadrature schemes based on employing a sub-tessellation of each polytopic element are straightforward to implement, they tend to be computationally expensive, in the sense that, depending on the cardinality of the sub-tessellation, the number of required function evaluations may be very large. This is particularly the case when the sub-tessellation employed is simply the background fine mesh \(\mathscr{T}_{h}^{\text{fine}}\) used to construct a coarse agglomerated grid. Thereby, it is desirable to attempt to minimise the resulting number of points; one such approach is outlined in the next section.

6.3.2 Moment Quadratures

Quadrature rules such as those based on sub-tessellation outlined above can be optimized based on employing a node elimination scheme, together with the least squares Newton method, cf. [175]; for related work, we refer to [141]. In this way, (near)-minimal quadrature schemes can be constructed. To illustrate this approach, following [175], let \(\kappa \in \mathscr{T}_{h}\) be a polytopic element. Given a user-defined set of functions \(\mathscr{V }_{\kappa } =\{\phi _{1},\phi _{2},\ldots,\phi _{n}\}\), n ≥ 1, defined over κ, and a quadrature rule \((\mathbf{x}_{j},w_{j})_{j=1}^{q_{\kappa }}\) on κ, q κ n, which is assumed to integrate all functions in \(\mathscr{V }_{\kappa }\) exactly, we arrive at the following system of equations:

$$\displaystyle{ A\mathbf{w} = \mathbf{I}, }$$
(6.2)

where A is an n × q κ matrix with entries A ij : = ϕ i (x j ), i = 1, , n, j = 1, , q κ , \(\mathbf{w}:= (w_{1},\ldots,w_{q_{\kappa }})^{\top }\) is the vector of quadrature weights, and I is a vector of dimension n, with entries I i : = κ ϕ i  dx, i = 1, , n. We note that as in [175] a weight function ω may also be included within the integral; for simplicity, here we set ω ≡ 1.

The initial quadrature rule \((\mathbf{x}_{i},w_{i})_{i=1}^{q_{\kappa }}\) may be selected in a number of different ways; for example, the sub-tessellation approach outlined above may be exploited. The essential idea to optimise the initial quadrature is to continuously eliminate points until the solution of (6.2) can no longer be determined. More precisely, for each quadrature point and weight, the corresponding significance index s j , j = 1, , q κ , is computed; in [175] the following two expressions are proposed:

$$\displaystyle{ s_{j}:= w_{j}\sum _{i=1}^{n}\phi _{ i}^{2}(\mathbf{x}_{ j}),\ \ \ \mbox{ or }\ \ \ s_{j}:=\sum _{ i=1}^{n}\phi _{ i}^{2}(\mathbf{x}_{ j}), }$$

j = 1, , q κ . Then, the quadrature point and weight (x k , w k ), for some k, 1 ≤ kq κ , which has the smallest significance factor is removed from the quadrature rule, i.e., \(s_{k}:=\min _{ j=1}^{q_{\kappa }}s_{j}\). The least-squares version of Newton’s method is then applied to (6.2) to compute a new quadrature \((\mathbf{x}_{j},w_{j})_{j=1}^{q_{\kappa }-1}\) with (q κ − 1) points and weights. This process is continuously repeated until the Newton algorithm fails to converge; at the end of this process, an optimized quadrature rule which can precisely integrate all of the functions present in the space \(\mathscr{V }_{\kappa }\) will be computed. An alternative approach proposed in [140] is to simply fix a set of quadrature points, which may even be randomly located points, and solve (6.2) to determine the corresponding weights.

While this approach is very appealing from a computational point of view, this process must first be applied to all elements κ in the computational mesh \(\mathscr{T}_{h}\), and the resulting quadrature scheme stored elementwise, before assembly of the underlying matrix system can be undertaken. We also stress that while the quadrature constructed using the above algorithm is exact for the set of functions in \(\mathscr{V }_{\kappa }\), their accuracy in terms of integrating general functions is unclear; moreover, for general polytopes, the resulting quadrature weights may be negative, cf. [140].

6.3.3 Integration of Homogeneous Functions

Lasserre’s method for integrating homogeneous functions over convex polytopes was first introduced in [134]; this technique was subsequently extended to general non-convex polytopes in the recent article [63]. The essential idea here is to exploit Stokes’ theorem, together with Euler’s homogeneous function theorem. More precisely, given a polytopic element \(\kappa \in \mathscr{T}_{h}\), and a sufficiently regular function f, defined over κ, we wish to evaluate

$$\displaystyle{ \int _{\kappa }f\,\mathrm{d}\mathbf{x}. }$$

Assuming that f is a positively homogeneous function of degree q, i.e.,

$$\displaystyle{ f(\lambda \mathbf{x}) =\lambda ^{q}\,f(\mathbf{x}), }$$

for λ > 0, then assuming f is continuously differentiable, Euler’s homogeneous function theorem states that

$$\displaystyle{ q\,f(\mathbf{x}) = \mathbf{x} \cdot \nabla f(\mathbf{x}). }$$
(6.3)

Moreover, given any vector-valued function g, again assumed to be sufficiently smooth, Stokes’ theorem states that

$$\displaystyle{ \int _{\kappa }(\nabla \cdot \mathbf{g})f\,\mathrm{d}\mathbf{x} =\int _{\partial \kappa }(\mathbf{g} \cdot \mathbf{n}_{\kappa })f\,\mathrm{d}s -\int _{\kappa }\mathbf{g} \cdot \nabla f\,\mathrm{d}\mathbf{x}, }$$
(6.4)

where n κ denotes the unit outward normal vector to the boundary ∂κ of κ. Thereby, selecting g = x in (6.4) and employing (6.3), we deduce that

$$\displaystyle{ \int _{\kappa }f\,\mathrm{d}\mathbf{x} = \frac{1} {d + q}\int _{\partial \kappa }(\mathbf{x} \cdot \mathbf{n}_{\kappa })f\,\mathrm{d}s; }$$
(6.5)

i.e., the integral over κ is reduced to an integration over the boundary ∂κ. Writing \(\partial \kappa =\bigcup _{ i=1}^{n_{F}}F_{i}\), where F i , i = 1, , n F , denote the planar (d − 1)-dimensional facets which form the boundary of κ, Eq. (6.5) may be rewritten in the following equivalent form

$$\displaystyle{ \int _{\kappa }f\,\mathrm{d}\mathbf{x} = \frac{1} {d + q}\sum _{i=1}^{n_{F} }\int _{F_{i}}(\mathbf{x} \cdot \mathbf{n}_{F_{i}})f\,\mathrm{d}s, }$$
(6.6)

where \(\mathbf{n}_{F_{i}}\) denotes the restriction of the unit outward normal vector n κ to the facet F i , i = 1, , n F .

We note that this process can be repeated in order to yield a formula which involves integration on lower dimensional facets. For example, given F i , for some (fixed) i, 1 ≤ in F , we write

$$\displaystyle{ \partial F_{i} =\{ F_{ij} = F_{i} \cap F_{j}: F_{i} \cap F_{j}\neq \emptyset,\ i\neq j\} }$$

to denote the set of (d − 2)-dimensional facets of κ, i.e., F ij is an edge of a polyhedron in \(\mathbb{R}^{3}\) which lies on the boundary of the face F i . Furthermore, we define \(\mathbf{n}_{F_{ij}}\) to be the unit normal vector to F ij which lies in the plane F i . Given an arbitrary point x i F i and a (d − 1)-dimensional orthonormal basis {e j i} j = 1 d−1 on the facet F i , i.e., any xF i may be written in the form

$$\displaystyle{ \mathbf{x} = \mathbf{x}_{i} +\sum _{ k=1}^{d-1}\alpha _{ k}\mathbf{e}_{k}^{i}, }$$

for some scalars α k , k = 1, , d − 1. Then, upon application of (6.4) to a given facet F i , 1 ≤ in F , with g = xx i , we deduce that

$$\displaystyle{ \int _{F_{i}}f\,\mathrm{d}s = \frac{1} {d + q - 1}\left (\sum _{F_{ij}\subset \partial F_{i}}\int _{F_{ij}}((\mathbf{x} -\mathbf{x}_{j}) \cdot \mathbf{n}_{F_{ij}})f\,\mathrm{d}s +\int _{F_{i}}(\mathbf{x}_{i} \cdot \nabla f)\,\mathrm{d}s\right ), }$$
(6.7)

cf. [63, 134]. In \(\mathbb{R}^{2}\), we note that the first term on the right-hand side of (6.7) simply involves evaluations of the integrand at the points which form the underlying face (edge) F i , 1 ≤ in F . Thereby, for the integration of polynomial functions, repeated application of (6.7) yields an (exact) integration rule which only requires evaluation of f and its partial derivatives at the vertices of κ, \(\kappa \in \mathscr{T}_{h}\). In \(\mathbb{R}^{3}\), proceeding as above, we first rewrite the integral over F ij to be an integral over its (d − 2)-dimensional facets (points), and an integral involving the derivative of f over F ij ; thereby, again for polynomial functions, recursive application of this formula then only requires the evaluation of f and its partial derivatives at the vertices of κ in order to precisely evaluate the integral of f over κ, \(\kappa \in \mathscr{T}_{h}\). For further details and implementation of this approach in the context of DGFEMs, we refer to [14]. To give an example of the potential performance improvement of employing this approach in comparison to the use of quadrature schemes defined on a sub-tessellation of each polytopic element κ in the mesh \(\mathscr{T}_{h}\), in Fig. 6.2 we compare the time taken to assemble the local element stiffness matrix for the Poisson equation in two-dimensions, cf. the DGFEM bilinear form given in Sect. 4.1, cf. also Sect. 2.3. Here, the polygonal meshes are constructed using PolyMesher [165], cf. above. For clarity, in Fig. 6.2a we plot the time taken to assemble the element stiffness matrix via exact integration of homogeneous functions on a series of uniform polygonal meshes for polynomial degrees p between 1 and 6. Figure 6.2b then presents a comparison of these results with the corresponding timings based on employing quadrature on a sub-tessellation. Here, the sub-tessellation is constructed by inserting one internal point within each element κ, \(\kappa \in \mathscr{T}_{h}\), located at the element centroid, and connecting this point to each pair of nodes defining the faces of κ; thereby, the number of elements within the sub-tessellation is equal to the number of faces that each element \(\kappa \in \mathscr{T}_{h}\) possesses.

Fig. 6.2
figure 2

Time required to assemble the element stiffness matrix for the Poisson equation in two-dimensions: (a) Exploiting exact integration of homogeneous functions; (b) Comparison between quadrature employed on a sub-tessellation and exact integration

As a final remark, we note that this approach may also be extended to integrate functions which may be represented as the sum of homogeneous functions; in particular, the integral may be computed without explicit knowledge of the individual terms which form this sum. However, this leads to the introduction of evaluation points within the interior of κ, \(\kappa \in \mathscr{T}_{h}\), and even points which may lie outside κ; in the simplest case, for example, for star-shaped polytopes, this can be viewed as undertaking a subdivision, relative to a point lying in the ball for which κ is star-shaped, cf. [63], for further details.

6.4 Numerical Experiments

In this section we present two computational examples to numerically to highlight the practical performance of the DGFEMs studied in Chap. 5 on general polytopic meshes; see also [54,55,56] for further numerical experiments.

6.4.1 Example 1: Advection-Diffusion-Reaction Problem

We consider the discretization of the advection-diffusion-reaction problem: find u such that

$$\displaystyle\begin{array}{rcl} -\nabla \cdot (a\nabla u) + \nabla \cdot (\mathbf{b}u) + cu& =& f\ \ \mbox{ in }(0,1)^{2},{}\end{array}$$
(6.8)

where a = δI 2, δ = ε e−20r, r 2 = x 2 + y 2, ε > 0, b = (2 − y 2, 2 − x), and c = (1 + x)(1 + y)2; f is then selected so that the analytical solution to (6.8), subject to appropriate inhomogeneous boundary conditions, is given by

$$\displaystyle{ u(x,y) = 1 +\sin (\pi (1 + x)(1 + y)^{2}/8), }$$

cf. [123].

We study the asymptotic behaviour of the DGFEM (5.8) on a sequence of successively finer square and polygonal meshes for different values of the polynomial degree p in both the diffusion-dominated and advection-dominated regimes. In each case we consider two types of polygonal meshes: grids generated using PolyMesher [165], cf. Fig. 6.3a, as well as grids stemming from the agglomeration of a given (fixed) fine mesh \(\mathscr{T}_{h}^{\text{fine}}\). In the latter case, we employ a fine mesh consisting of 262, 144 elements; the corresponding coarse agglomerated mesh \(\mathscr{T}_{h}\) is then constructed by exploiting the graph partitioning package METIS [130]. We note that for METIS to partition the fine mesh \(\mathscr{T}_{h}^{\text{fine}}\), the logical structure of \(\mathscr{T}_{h}^{\text{fine}}\) is first stored in the form of a graph, where each node represents an element domain of \(\mathscr{T}_{h}^{\text{fine}}\), and each link between two nodes represents a face shared by the two elements represented by the graph nodes. The resulting partition of \(\mathscr{T}_{h}^{\text{fine}}\) constructed by METIS is produced with the objective of minimizing the number of neighbours among each of the resulting partitions, or more precisely, the resulting polygonal elements. In Fig. 6.3b we show the resulting polygonal mesh generated by METIS with 256 elements.

Fig. 6.3
figure 3

Example 1. Polygonal meshes consisting of 256 elements generated based on employing: (a) Voronoi tessellation generated by PolyMesher [165]; (b) Agglomeration using METIS [130]

We first study the diffusion-dominated case; to this end, we set ε = 1. In Fig. 6.4 we investigate the convergence of the DGFEM on sequences of finer square and polygonal meshes with polynomial degrees p between 1 and 4. In each case we plot the error, measured in terms of both the L 2(Ω) and DGFEM norm, against the square root of the number of degrees of freedom in the underlying finite element space \(V ^{\mathbf{p}}(\mathscr{T}_{h})\). Here, we clearly observe that \(\|u - u_{h}\|_{L^{2}(\varOmega )}\) and | ∥uu h | ∥DG converge to zero at the optimal rates \(\mathscr{O}(h^{p+1})\) and \(\mathscr{O}(h^{p})\), respectively, as the mesh size h tends to zero for each fixed p. The latter set of numerical results confirm the optimality of Theorem 46 in the diffusion-dominated setting, cf. Remark 47. Moreover, from Fig. 6.4 we observe that the accuracy of the DGFEM is very similar on all three sets of meshes employed here, given the same number of degrees of freedom, though in general we observe a slight improvement in | ∥uu h | ∥DG when the polygonal elements generated by Polymesher are employed, in comparison to the corresponding quantity computed based on exploiting either square or agglomerated meshes. In Fig. 6.5 we investigate the convergence behaviour of the DGFEM under p-refinement, for a given fixed mesh. For each mesh, we plot | ∥uu h | ∥DG against the polynomial degree p on a linear-log scale; in each case we clearly observe exponential convergence of the DGFEM.

Fig. 6.4
figure 4

Example 1. Convergence of the DGFEM with h-refinement for ε = 1: (a) \(\|u - u_{h}\|_{L^{2}(\varOmega )}\); (b) | ∥uu h | ∥DG

Fig. 6.5
figure 5

Example 1. Convergence of the DGFEM with p-refinement for ε = 1

Secondly, we consider the convergence of the DGFEM in the advection-dominated regime, whereby, we now set ε = 10−6. In Fig. 6.6 we plot \(\|u - u_{h}\|_{L^{2}(\varOmega )}\) and | ∥uu h | ∥DG against the square root of the number of degrees of freedom in the underlying finite element space \(V ^{\mathbf{p}}(\mathscr{T}_{h})\) on a sequence of uniform square and polygonal meshes for fixed p. In this case, we observe that while the L 2(Ω) norm of the error converges to zero at the optimal rate \(\mathscr{O}(h^{p+1})\), the DGFEM norm behaves like \(\mathscr{O}(h^{p+1/2})\), as h tends to zero, for each fixed p; in the latter case, this is indeed the optimal rate predicted by Theorem 46, cf. Remark 48. As above, we again observe a slight improvement in the computed error when the Voronoi meshes generated by PolyMesher are employed, as opposed to square or agglomerated meshes. Figure 6.7 plots | ∥uu h | ∥DG against the polynomial degree p for a given set of fixed uniform meshes; as above, we observe exponential convergence of the DGFEM under p-refinement.

Fig. 6.6
figure 6

Example 1. Convergence of the DGFEM with h-refinement for ε = 10−6: (a) \(\|u - u_{h}\|_{L^{2}(\varOmega )}\); (b) | ∥uu h | ∥DG

Fig. 6.7
figure 7

Example 1. Convergence of the DGFEM with p-refinement for ε = 10−6

For further numerical experiments, and in particular, for comparisons between both standard (conforming) Galerkin FEMs and DGFEMs employing local tensor-product polynomial bases (\(\mathscr{Q}_{p}\)-basis), we refer to the articles [54, 55].

6.4.2 Example 2: Degenerate Evolution Equation

Computational experiments for the space-time DGFEM (5.54), cf., also, (5.56), have been presented in the recent article [56] for the case when a is positive definite, i.e., when (5.52) holds. Thereby, to test the necessity of this hypothesis in terms of generalizing the a priori error bounds derived in Sect. 5.3 to degenerate parabolic PDEs, we consider the following example: find u = u(t, x, y) such that

$$\displaystyle\begin{array}{rcl} \partial _{t}u - x^{2}\partial _{ xx}^{2}u - x\partial _{ y}u = f\ \ \mbox{ in }\varOmega:= J \times D,& &{}\end{array}$$
(6.9)

where J = (0, 1) and D = (0, 1)2. We note that (6.9) can be written in the general form (2.1), cf., also, (5.1); indeed, setting x: = (t, x, y) and ∇: = ( t ,  x ,  y ), we select a 22 = x 2, a ij = 0 for i, j = 1, 2, 3, i, j ≠ 2, b = (1, 2x, −x), and c = −2. Furthermore, we stress that the PDE (6.9) is not hypoelliptic on the plane {x = 0} which is contained in J × ∂D and may, therefore, lead to singularities in the analytical solution u in the vicinity of the boundary, depending on the choice of the boundary conditions imposed and/or the selection of f.

In this section, the forcing function f is selected so that, upon supplementing (6.9) with appropriate inhomogeneous Dirichlet boundary conditions and initial condition, the analytical solution is given by

$$\displaystyle{u(t,x,y) = \mathrm{e}^{-5((x-1/2)^{2}+(y-1/2)^{2}) }\,\sin (x - t + 2y).}$$

In Fig. 6.8 we investigate the convergence of the space-time DGFEM on sequences of finer (space-time) hexahedral (rectangular in space) and prismatic (polygonal prism base in space) meshes, for polynomial degrees p between 1 and 4. In each case we plot the error measured in terms of both the L 2((0, 1); L 2(D)) and \(L^{2}((0,1);H^{1}(D,\mathscr{T}_{h}))\) norms with respect to the third root of the number of degrees of freedom in the underlying space-time finite element space \(V ^{\mathbf{p}}(\mathscr{U};\mathscr{T}_{h})\). Here, we employ spatial meshes consisting of 16, 64, 256, 1024, and 4096 elements, with 8, 16, 32, 64, and 128 time-steps, respectively. Firstly, from Fig. 6.8b we observe that \(\|u - u_{h}\|_{L^{2}((0,1);H^{1}(D,\mathscr{T}_{h}))}\) converges to zero at the optimal rate \(\mathscr{O}(h^{p})\) as the space-time mesh size h tends to zero for each fixed p; this is in accordance with the rate predicted by Corollary 56, though we stress that in this generalized setting, the conditions of Theorem 55 (and, therefore, of Corollary 56) are not fulfilled. Secondly, from Fig. 6.8a we observe some deterioration in the rate of convergence of the space-time DGFEM with respect to the L 2((0, 1); L 2(D)) norm, cf. the discussion at the end of Sect. 5.3; indeed these numerics seem to indicate a loss of (roughly) between half and one order in h, as the mesh is refined for each fixed p.

Fig. 6.8
figure 8

Example 2. Convergence of the space-time DGFEM with h-refinement on cubic (square elements in space) and prismatic (polygonal elements in space) meshes: (a) \(\|u - u_{h}\|_{L^{2}((0,1);L^{2}(D))}\); (b) \(\|u - u_{h}\|_{L^{2}((0,1);H^{1}(D,\mathscr{T}_{h}))}\)

Finally, we investigate the computational efficiency of employing the space-time DGFEM (5.54) with different space-time elemental polynomial bases on both hexahedral and prismatic meshes. In particular, writing κ n : = I n ×κ to denote a given space-time element, where \(\kappa \in \mathscr{T}_{h}\) is a spatial element and I n , n = 1, , N t , is a given time interval, we consider the following three choices for the (elementwise) polynomial space, denoted by \(\mathscr{R}_{p}(\kappa _{n})\): (1) \(\mathscr{R}_{p}(\kappa _{n}):= \mathscr{P}_{p}(\kappa _{n})\), i.e., polynomials of total degree p are employed on each element, cf. Sect. 5.3; (2) \(\mathscr{R}_{p}(\kappa _{n}):= \mathscr{P}_{p}(I_{n}) \times \mathscr{P}_{p}(\kappa )\), i.e., polynomials of total degree p are employed in time and space, and these are tensorized to form a space-time basis defined on κ n ; (3) \(\mathscr{R}_{p}(\kappa _{n}):= \mathscr{P}_{p}(I_{n}) \times \mathscr{Q}_{p}(\kappa )\), i.e., polynomials of total degree p are employed in time, while tensor-product polynomials of degree p in each coordinate direction are exploited in space; these spaces are then tensorized to form a space-time basis defined on κ n . These schemes will be denoted, respectively, by DG(P), DG(QP), and DG(Q).

In Fig. 6.9 we investigate the convergence behaviour of these three schemes under p-refinement for fixed h; for brevity, we only consider space-time prismatic meshes for the first scheme, i.e., for DG(P). Here, we have employed 64 spatial elements and 16 time-steps. Firstly, we observe exponential convergence for all three choices of the elemental polynomial bases, in the sense that, on the linear-log scale, the convergence plots become straight lines as p is increased. Moreover, we observe that, under p-refinement, DG(P) is more efficient than both DG(QP) and DG(Q), in the sense that the error, computed in terms of both the L 2((0, 1); L 2(D)) and \(L^{2}((0,1);H^{1}(D,\mathscr{T}_{h}))\) norms is smaller, for a given number of degrees of freedom, when the former scheme is employed.

Fig. 6.9
figure 9

Example 2. Comparison of the space-time DGFEMs: DG(P), DG(QP), and DG(Q) under p-refinement with 64 spatial elements and 16 time-steps: (a) \(\|u - u_{h}\|_{L^{2}((0,1);L^{2}(D))}\); (b) \(\|u - u_{h}\|_{L^{2}((0,1);H^{1}(D,\mathscr{T}_{h}))}\)