1 Introduction

Realistic wave propagation problems often involve large three-dimensional domains consisting of heterogeneous materials with complex geometries and sharp interfaces. Solving such problems requires a numerical method that is efficient in terms of computation time and is flexible enough to capture the effect of a complex geometry.

Standard finite difference methods fall short, since they rely on Cartesian grids that cannot efficiently capture the effect of complex interfaces and boundaries. Finite element methods can overcome this problem when the elements are aligned with those surfaces. However, the accuracy of the finite element method quickly deteriorates when the elements are poorly shaped or are poorly aligned with the geometry. Obtaining a high quality mesh is therefore quintessential. While both hexahedral and tetrahedral elements are commonly used for three-dimensional problems, tetrahedral elements have a big advantage in this respect, since they offer more geometric flexibility and since robust tetrahedral mesh generators based on the Delaunay criterion are available [29, 35].

Apart from the construction of a high-quality mesh, finite element methods for wave propagation problems also require a (block)-diagonal mass matrix to enable explicit time-stepping. A diagonal mass matrix can be obtained with nodal basis functions and a quadrature rule, if the quadrature points coincide with the basis function nodes. This technique is known as mass-lumping. For quadrilaterals and hexahedra, mass-lumping is achieved by combining tensor-product basis functions with a Gauss–Lobatto quadrature rule, resulting in a scheme known as the spectral element method [20, 30, 33]. For triangles and tetrahedra, an efficient linear mass-lumped scheme is obtained by combining standard Lagrangian basis functions with a Newton–Cotes quadrature rule. For higher-degree triangles and tetrahedra, however, this approach results in an unstable, unsolvable, or inaccurate scheme. To remain accurate and stable, the space of the triangle or tetrahedron is enriched with higher-degree bubble functions. This approach has led to accurate mass-lumped triangles of degree 2 [15], 3 [7], 4 [25], 5 [5], 6 [27], 7–9 [9, 24] and tetrahedra of degree 2 [25] and 3 [5].

Another way to obtain a (block)-diagonal mass matrix is by using discontinuous basis functions. The resulting schemes are known as Discontinuous Galerkin (DG) methods. The first DG methods for wave propagation problems were based on a first-order formulation of the wave equation [6, 31]. In [32] and [17], DG methods were introduced that were based on the original second-order formulation of the wave problem. The advantage of finite element methods based on the second-order formulation is that they do not need to compute or store the auxiliary variables that appear in the first-order formulation. Moreover, they can be combined with a leap-frog or higher-order Lax–Wendroff time integration scheme that only requires K stages for a 2K-order accuracy. We focus on the symmetric interior penalty discontinuous Galerkin (SIPDG) method, presented and analysed in [17], which is based on the second-order formulation of the wave problem and which also remains energy-conservative on the discrete level. To remain accurate and stable, face integrals and interior penalty parameters are added to the discrete operator. We consider two choices for the penalty parameter: the penalty term derived in [28], based on the trace inequality of [36], and a recently developed sharper estimate [16], based on a more involved trace inequality.

To effectively apply these methods, it is crucial to know the required mesh resolution for a given accuracy. It is also useful to know which method is the most efficient for a given accuracy and how the mesh quality and material parameters, such as the P/S-wave velocity ratio for elastic waves, affect the accuracy. A practical and common measure for the accuracy of these type of methods is the amount of numerical dispersion and dissipation. In this paper, we will focus mainly on the numerical dispersion, since the methods we consider are all energy-conservative and therefore do not suffer from numerical dissipation. We do, however, also investigate the spurious modes that appear when projecting a physical wave onto the discrete space.

The dispersion properties of DG methods based on the first-order formulation of the wave problem have already been analysed for Cartesian meshes [1, 18], triangles [18, 22], and tetrahedra [19]. For the SIPDG method, these properties have already been analysed for Cartesian meshes in [2, 13] and triangles in [3] and for the mass-lumped finite element method this has already been analysed for quadrilaterals and hexahedra in [8, 11, 26] and for triangles in [23]. However, a dispersion analysis of the mass-lumped finite element and SIPDG methods for tetrahedra is, to the best of our knowledge, still missing, even though most realistic wave problems involve three-dimensional domains for which tetrahedral elements are particularly suitable. In this paper, we therefore present an extensive dispersion analysis of these methods for tetrahedra. This analysis is based on standard Fourier analysis. We use the analysis to obtain estimates for the required number of elements per wavelength and estimate the computational cost to obtain an indication of which method is the most efficient for a given accuracy. We consider both acoustic and elastic waves and also look at the effect of poorly shaped elements and high P/S-wave velocity ratios on the accuracy of the methods.

This paper is organised as follows: in Sect. 2, we introduce the tensor notation used in this paper. The acoustic and elastic wave equations are presented in Sect. 3 and the mass-lumped and discontinuous Galerkin finite element methods are presented in Sect. 4. In Sect. 5, we explain how we analyse the dispersion properties of these methods. The results of this analysis are presented in Sect. 6 and the main conclusions are summarised in Sect. 7.

2 Some Tensor Notation

Before we present the acoustic and elastic wave equations, we explain the tensor notation that we use throughout this paper. We let the dot product of two tensors denote the summation over the last index of the left and first index of the right tensor. For the double dot product we also sum over the last-but-one index of the left and second index of the right tensor. A concatenation of two tensors denotes the standard tensor product. To give some examples, let \(\hat{{\mathbf {n}}}\in \mathbb {R}^d, {\mathbf {u}}\in \mathbb {R}^m\) be two vectors, \({\varvec{\sigma }}\in \mathbb {R}^{d\times m}\) a second-order tensor, and \(C\in \mathbb {R}^{d\times m\times m\times d}\) a fourth-order tensor. Then

$$\begin{aligned} {[}\hat{{\mathbf {n}}}{\mathbf {u}}]_{ij}&{:}{=} \hat{n}_{i} u_{j},&[{\varvec{\sigma }}\cdot {\mathbf {u}}]_{i}&{:}{=} \sum _{l=1}^m \sigma _{il}u_{l}, \\ {[}C:{\varvec{\sigma }}]_{ij}&{:}{=} \sum _{k=1}^d\sum _{l=1}^m C_{ijlk}\sigma _{kl},&[\hat{{\mathbf {n}}}\cdot C]_{qji}&{:}{=} \sum _{k=1}^d \hat{n}_kC_{kqji}, \end{aligned}$$

for all \(i=1,\dots ,d\) and \(j,q=1,\dots ,m\).

In the next section we will use this tensor notation to present the acoustic and isotropic elastic wave equations.

3 The Acoustic and Isotropic Elastic Wave Equations

Let \(\varOmega \subset \mathbb {R}^3\) be a three-dimensional open domain with a Lipschitz boundary \(\partial \varOmega \), and let (0, T) be the time domain. Also, let \(\{\Gamma _d,\Gamma _n\}\) be a partition of \(\partial \varOmega \), corresponding to Dirichlet and von Neumann boundary conditions, respectively. We define the following linear hyperbolic problem:

$$\begin{aligned} \rho \partial _t^2{\mathbf {u}}&= \nabla \cdot C:\nabla {\mathbf {u}}+ {\mathbf {f}}&\text {in }\varOmega \times (0,T), \end{aligned}$$
(1a)
$$\begin{aligned} C:\hat{{\mathbf {n}}}{\mathbf {u}}&={\mathbf {0}}&\text {on }\Gamma _d\times (0,T), \end{aligned}$$
(1b)
$$\begin{aligned} \hat{{\mathbf {n}}}\cdot C:\nabla {\mathbf {u}}&= {\mathbf {0}}&\text {on }\Gamma _n\times (0,T), \end{aligned}$$
(1c)
$$\begin{aligned} {\mathbf {u}}|_{t=0}&= {\mathbf {u}}_0&\text {in }\varOmega , \end{aligned}$$
(1d)
$$\begin{aligned} \partial _t{\mathbf {u}}|_{t=0}&= {\mathbf {v}}_0&\text {in }\varOmega , \end{aligned}$$
(1e)

where \({\mathbf {u}}:\varOmega \times (0,T)\rightarrow \mathbb {R}^m\) is a vector of m variables that are to be solved, \(\nabla \) is the gradient operator, \(\rho :\varOmega \rightarrow \mathbb {R}^+\) is a positive scalar field, \(C:\varOmega \rightarrow \mathbb {R}^{3\times m\times m\times 3}\) a fourth-order tensor field, \({\mathbf {f}}:\varOmega \times (0,T)\rightarrow \mathbb {R}^{m}\) the source field, and \(\hat{{\mathbf {n}}}:\partial \varOmega \rightarrow \mathbb {R}^3\) the outward pointing normal unit vector.

By choosing the appropriate tensor and scalar field we can obtain the acoustic wave equation and the isotropic elastic wave equations.

Case 1

(Isotropic elastic wave equations) To obtain the isotropic elastic wave equations, set \(m=3\) and

$$\begin{aligned} C_{ijqp} = \lambda \delta _{ij}\delta _{pq} + \mu (\delta _{ip}\delta _{jq} + \delta _{iq}\delta _{jp}), \end{aligned}$$

for \(i,j,p,q=1,2,3\), where \(\delta \) is the Kronecker delta. Equation (1a) then becomes

$$\begin{aligned} \rho \partial _t^2 {\mathbf {u}}= \nabla \lambda (\nabla \cdot {\mathbf {u}}) + \nabla \cdot \mu (\nabla {\mathbf {u}}+ \nabla {\mathbf {u}}^t) + {\mathbf {f}}, \end{aligned}$$

where \({\mathbf {u}}:\varOmega \times (0,T)\rightarrow \mathbb {R}^3\) is the displacement field, \(\rho :\varOmega \rightarrow \mathbb {R}^+\) is the mass density, \(\lambda , \mu :\varOmega \rightarrow \mathbb {R}^+\) are the Lamé parameters, and \({\mathbf {f}}:\varOmega \times (0,T)\rightarrow \mathbb {R}^{3}\) is the external volume force. The superscript t denotes the transposed.

Case 2

(Acoustic wave equation) To obtain the acoustic wave equation, set \(m=1\), \(u= p\), \(\rho =(\tilde{\rho }\tilde{c}^2)^{-1}\), and

$$\begin{aligned} C_{i11j} {:}{=} \frac{1}{\tilde{\rho }}\delta _{ij}, \end{aligned}$$

for \(i,j=1,2,3\), where \(\delta \) is the Kronecker delta. Equation (1a) then becomes

$$\begin{aligned} \frac{1}{\tilde{\rho }\tilde{c}^2}\partial _t^2 p = \nabla \cdot \frac{1}{\tilde{\rho }}\nabla p + {f}, \end{aligned}$$

where \(p:\varOmega \times (0,T)\rightarrow \mathbb {R}\) is the pressure field, \(\tilde{\rho }:\varOmega \rightarrow \mathbb {R}^+\) the mass density, \(\tilde{c}:\varOmega \rightarrow \mathbb {R}^+\) the acoustic velocity field, and \(f=\nabla \cdot (\tilde{\rho }^{-1}\tilde{\mathbf {f}})\) the source term with \(\tilde{{\mathbf {f}}}:\varOmega \times (0,T)\rightarrow \mathbb {R}^{3}\) the external volume force.

These equations can be solved with the finite element methods described in the next section.

4 The Discontinuous Galerkin and Mass-Lumped Finite Element Method

4.1 The Classical Finite Element Method

Let \(\mathcal {T}_h\) be a tetrahedral tessellation of \(\varOmega \), with h denoting the radius of the smallest sphere that can contain each element and let \(\mathcal {U}_h\) be the finite element space consisting of continuous element-wise polynomial basis functions satisfying boundary condition (1b). The classical conforming finite element formulation of (1) is finding \({{\mathbf {u}}_h}:[0,T]\rightarrow \mathcal {U}_h\) such that \({\mathbf {u}}_h|_{t=0}={\varPi _{h}}{\mathbf {u}}_0\), \(\partial _t{\mathbf {u}}_h|_{t=0}=\varPi _{h}{\mathbf {v}}_0\) and

$$\begin{aligned} (\rho \partial _t^2{\mathbf {u}}_h,{\mathbf {w}}) + a({\mathbf {u}}_h,{\mathbf {w}})&= ({\mathbf {f}},{\mathbf {w}}),&{\mathbf {w}}\in \mathcal {U}_h, t\in [0,T], \end{aligned}$$
(2)

where \((\cdot ,\cdot )\) denotes the standard \(L^2\) inner product, \(\varPi _{h}:L^2(\varOmega )\rightarrow \mathcal {U}_h\) denotes the weighted \(L^2\) projection operator defined such that \((\rho \varPi _{h}{\mathbf {u}},{\mathbf {w}})=(\rho {\mathbf {u}},{\mathbf {w}})\) for all \({\mathbf {w}}\in \mathcal {U}_h\), and \(a:H^1(\varOmega )^m\times H^1(\varOmega )^m\rightarrow \mathbb {R}\) is the (semi)-elliptic operator given by

$$\begin{aligned} a({\mathbf {u}},{\mathbf {w}})&{:}{=} \int _{\varOmega } (\nabla {\mathbf {u}})^t : C : \nabla {\mathbf {w}}\;dx. \end{aligned}$$

Let \(\{{{\mathbf {w}}^{(i)}}\}_{i=1}^{n}\) be the set of basis functions spanning \(\mathcal {U}_h\), and let, for any \({\mathbf {u}}\in L^2(\varOmega )^m\), the vector \(\underline{\mathbf {u}}\in \mathbb {R}^n\) be defined such that \(\sum _{i=1}^n \underline{u}_i{\mathbf {w}}^{(i)}=\varPi _{h}{\mathbf {u}}\). Also, let \(M,A\in \mathbb {R}^{n\times n}\) be the mass matrix and stiffness matrix, respectively, defined by \(M_{ij}{:}{=}(\rho {\mathbf {w}}^{(i)},{\mathbf {w}}^{(j)})\) and \(A_{ij}{:}{=}a({\mathbf {w}}^{(i)},{\mathbf {w}}^{(j)})\), and let \(\underline{\mathbf {f}}^*:[0,T]\rightarrow \mathbb {R}^n\) be given by \(\underline{f}_i^*{:}{=}({\mathbf {f}},{\mathbf {w}}^{(i)})\). The finite element method can then be formulated as finding \({\underline{\mathbf {u}}_h}:[0,T]\rightarrow \mathbb {R}^n\) such that \(\underline{\mathbf {u}}_h|_{t=0}=\underline{{\mathbf {u}}_0}\), \(\partial _t\underline{\mathbf {u}}_h|_{t=0} = \underline{{\mathbf {v}}_0}\), and

$$\begin{aligned} M\partial _t^2\underline{\mathbf {u}}_h + A\underline{\mathbf {u}}_h = \underline{\mathbf {f}}^*,&t\in [0,T]. \end{aligned}$$
(3)

The main drawback of the classical conforming finite element approach is that when an explicit time integration scheme is applied, a system of equations of the form \(M\underline{\mathbf {x}}=\underline{\mathbf {b}}\) needs to be solved at every time step, with M not (block)-diagonal. For large-scale problems, this results in a very inefficient time stepping scheme. This problem can be circumvented by lumping the mass matrix into a diagonal matrix or by using discontinuous basis functions.

4.2 Mass-Lumping

When using nodal basis functions, the mass matrix can be lumped into a diagonal matrix by taking the sum over each row. This is equivalent to replacing the inner product \((\cdot ,\cdot )\) by \((\cdot ,\cdot )_h^{(L)}\), in which the element integrals are approximated by a quadrature rule with quadrature points that coincide with the nodes of the basis functions. We can write

$$\begin{aligned} ({\mathbf {u}},{\mathbf {w}})_h^{(L)} = \sum _{e\in \mathcal {T}_h} \sum _{{\mathbf {x}}\in \mathcal {Q}_e} \omega _{e,{\mathbf {x}}}\rho ({\mathbf {x}}){\mathbf {u}}({\mathbf {x}})\cdot {\mathbf {w}}({\mathbf {x}}), \end{aligned}$$

where \(\mathcal {Q}_e\) denotes the quadrature points on element e and \(\omega _{e,{\mathbf {x}}}\) denote the quadrature weights. Let \(\{{\mathbf {x}}^{(i)}\}_{i=1}^n\) denote the global set of integration points and define \({\mathbf {w}}^{(i)}\) to be the nodal basis function corresponding to \({\mathbf {x}}^{(i)}\), so \({\mathbf {w}}^{(i)}({\mathbf {x}}^{(j)})=\delta _{ij}\), with \(\delta \) the Kronecker delta. Then the mass matrix becomes diagonal with entries \(M_{ii}=\sum _{e\in \mathcal {T}_{{\mathbf {x}}^{(i)}}} \omega _{e,{\mathbf {x}}^{(i)}}\rho ({\mathbf {x}}^{(i)})\), where \(\mathcal {T}_{{\mathbf {x}}}\) denotes the set of elements containing or adjacent to \({\mathbf {x}}\).

For quadrilaterals and hexahedra, mass-lumping is achieved by using tensor-product basis functions and Gauss–Lobatto integration points. The resulting scheme is known as the spectral element method. For triangles and tetrahedra, mass-lumping is less straight-forward. Combining standard Lagrangian basis functions with a Newton–Cotes quadrature rule results in an efficient mass-lumped scheme for linear tetrahedra, but for higher-degree basis functions, this approach results either in an unstable scheme due to non-positive quadrature weights or in a scheme with a reduced order of convergence. This problem can be resolved by enriching the finite element space with higher-degree bubble functions and by adding integration points to the interior of the elements and faces. For example, by enriching the space of the quadratic tetrahedron with 3 degree-4 face bubble functions and 1 degree-4 interior bubble function, an enriched degree-2 mass-lumped tetrahedron that remains third-order accurate can be obtained [25].

In this paper we will analyse the standard linear mass-lumped finite element method, the mass-lumped finite element method of degree 2 derived in [25], and the 2 versions of degree 3 mass-lumped finite element methods derived in [5]. We will refer to these methods as ML1, ML2, ML3a and ML3b, respectively.

4.3 The Symmetric Interior Penalty Discontinuous Galerkin Method

Another way to obtain a (block)-diagonal mass matrix is by allowing the finite element space \(\mathcal {U}_h\) to be discontinuous at the faces. When choosing basis functions that have support on only a single element, the mass matrix becomes block-diagonal with each block corresponding to a single element. When using orthogonal basis functions, the mass matrix even becomes strictly diagonal. In order to keep the finite element method stable and consistent with the analytic solution, the elliptic operator needs to be augmented. This can be accomplished with the symmetric interior penalty method [17], where a is replaced by the discrete (semi)-elliptic operator \(a_h^{(DG)}:\mathcal {U}_h\times \mathcal {U}_h\rightarrow \mathbb {R}\), given by

$$\begin{aligned} a_h^{(DG)}({\mathbf {u}},{\mathbf {w}})&:= a_h^{(C)}({\mathbf {u}},{\mathbf {w}}) - a_h^{(D)}({\mathbf {u}},{\mathbf {w}}) - a_h^{(D)}({\mathbf {w}},{\mathbf {u}}) + a_h^{(IP)}({\mathbf {u}},{\mathbf {w}}) \end{aligned}$$

with

$$\begin{aligned} a_h^{(C)}({\mathbf {u}},{\mathbf {w}})&:= \sum _{e\in \mathcal {T}_h} \int _{e} (\nabla {\mathbf {u}})^t:C:\nabla {\mathbf {w}}\;d{\mathbf {x}}, \\ a_h^{(D)}({\mathbf {u}},{\mathbf {w}})&:= \sum _{f\in \mathcal {F}_{h,in}\cup \mathcal {F}_{h,d}} \int _f \llbracket {\mathbf {u}}\rrbracket ^t: \{\{C: \nabla {\mathbf {w}}\}\} \;d{\mathbf {s}}, \\ a_h^{(IP)}({\mathbf {u}},{\mathbf {w}})&:= \sum _{f\in \mathcal {F}_{h,in}\cup \mathcal {F}_{h,d}} \int _{f} \llbracket {\mathbf {u}}\rrbracket ^t: \{\{\alpha _h C\}\} :\llbracket {\mathbf {w}}\rrbracket \;d{\mathbf {s}}, \end{aligned}$$

where \(\mathcal {F}_{h,in}\) and \(\mathcal {F}_{h,d}\) are the internal faces and boundary faces on \(\Gamma _d\), respectively, \(\alpha _h\in \bigotimes _{e\in \mathcal {T}} L^{\infty }(\partial e)\) is the penalty function, and \( \{\{\cdot \}\} \), \(\llbracket \cdot \rrbracket \) are the average trace operator and jump operator, respectively, defined as

$$\begin{aligned} \{\{\phi \}\} \big |_f&{:}{=} \frac{1}{|\mathcal {T}_f|}\sum _{e\in \mathcal {T}_f} \phi |_{\partial e\cap f},&\llbracket {\mathbf {u}}\rrbracket \big |_f&{:}{=} \sum _{e\in \mathcal {T}_f} (\hat{{\mathbf {n}}}{\mathbf {u}})|_{\partial e\cap f}, \end{aligned}$$

for all faces \(f\in \mathcal {F}\), where \(\mathcal {T}_f\) denotes the set of elements adjacent to face f, and \(\hat{{\mathbf {n}}}|_{\partial e}\) denotes the outward pointing normal unit vector of element e. The bilinear form \(a^{(C)}_h\) is the same as the original elliptic operator a and is the part that remains when both input functions are continuous. The bilinear form \(a^{(D)}_h\) can be interpreted as the additional part that results from partial integration of the elliptic operator a when the first input function is discontinuous. Finally, the bilinear form \(a^{(IP)}_h\) is the part that contains the interior penalty function needed to ensure stability of the scheme.

The penalty term can have a significant impact on the performance of the SIPDG method, since a larger penalty term results in a more restrictive bound on the time step size, but also because it can have a significant effect on the accuracy, as we will show in Sect. 6. Several lower bounds for the penalty term are based on the trace inequality of [36], including [14, 28, 34], among which we found the bound in [28] to be the sharpest. Recently, a sharper penalty term bound was presented in [16], which is based on a more involved trace inequality. In this paper we will consider both the penalty term of [16], given by (4a), and the one of [28], given by (4b):

$$\begin{aligned} \alpha _h|_{\partial e{\cap f}}&{:}{=} {\frac{\nu _h|_{\partial e\cap f}}{|\mathcal {T}_f|}\sup _{\begin{array}{c} {\mathbf {u}}\in \mathcal {P}^p(e)^m\\ \;C:\nabla {\mathbf {u}}\ne {\mathbf {0}} \end{array}} } \frac{\displaystyle \int _{\partial e} (\hat{{\mathbf {n}}}\cdot C:\nabla {\mathbf {u}})\cdot \nu _h^{-1}{\mathbf {c}}_{\hat{{\mathbf {n}}}}^{-1}\cdot (\hat{{\mathbf {n}}}\cdot C:\nabla {\mathbf {u}}) \;ds}{ \displaystyle \int _e (\nabla {\mathbf {u}})^t : C : \nabla {\mathbf {u}}\;d{\mathbf {x}}}, \end{aligned}$$
(4a)
$$\begin{aligned} \alpha _h|_{\partial e{\cap f}}&{:}{=} \frac{p(p+2)}{\min _{e\in \mathcal {T}_f} d_{e}}, \end{aligned}$$
(4b)

for all \(e\in \mathcal {T}_h\), \(f\subset \partial e\), where p denotes the degree of the polynomial basis functions, \(\mathcal {P}^p(e)\) denotes the space of polynomial functions of degree p or less in element e, \(\nu _h|_{\partial e\cap f}{:}{=}|f|/|e|\) is a scaling function of order \(h^{-1}\), with |e|, |f| the volume of e and area of f, respectively, \({\mathbf {c}}_{\hat{{\mathbf {n}}}}^{-1}\) denotes the (pseudo)-inverse of the second-order tensor \({\mathbf {c}}_{\hat{{\mathbf {n}}}}{:}{=}\hat{{\mathbf {n}}}\cdot C\cdot \hat{{\mathbf {n}}}\), where \(\hat{{\mathbf {n}}}\) is the outward pointing normal unit vector, and \(d_{e}\) denotes the diameter of the inscribed sphere of e. Although the first version requires more preprocessing time, it allows for an approximately 1.5 times larger time step [16].

We will refer to the SIPDG method with \(p=1,2,3\) using the penalty term as defined by (4a) as DG1a, DG2a, and DG3a, respectively, and to the same methods using the penalty term as defined by (4b) as DG1b, DG2b, and DG3b.

4.4 The Lax–Wendroff Time Integration Scheme

To solve the resulting set of ODE’s (3) in time, we use the Lax–Wendroff method [12, 21], which is based on Taylor expansions in time and substitutes the time derivatives by matrix-vector operators using the original equations (3). For the second-order formulation, the resulting scheme is also known as Dablain’s scheme [10]. The advantage of this scheme is that it is time-reversible, energy-conservative, and only requires K stages for a 2K-order of accuracy.

To introduce the scheme, let \(\varDelta t>0\) denote the time step size, and let \(\underline{\mathbf {U}}_h(t_i)\) denote the approximation of \(\underline{\mathbf {u}}_h\) at time \(t_i{:}{=}i\varDelta t\) for \(i=0,\dots ,N_T\) with \(N_T\) the total number of time steps. The order-2K Lax–Wendroff method can be written as

$$\begin{aligned} \underline{\mathbf {U}}_h(t_{i+1})&= -\underline{\mathbf {U}}_h(t_{i-1}) + 2\sum _{k=0}^K\frac{1}{(2k)!} \varDelta t^{2k}(\partial _t^{2k}\underline{\mathbf {U}}_h)(t_i),&i=1,\dots , N_T-1, \end{aligned}$$
(5)

with \(\underline{\mathbf {U}}_h(t_0)=\underline{\mathbf {U}}_h(0){:}{=}\underline{\mathbf {u_0}}\) and \(\underline{\mathbf {U}}_h(t_1){:}{=}\sum _{k=0}^{2K+1} \frac{1}{k!} \varDelta t^k(\partial _t^{k}\underline{\mathbf {U}}_h)(0)\), and where \((\partial _t^{k}\underline{\mathbf {U}}_h)(t_i)\) is recursively defined by

$$\begin{aligned} (\partial _t^{k}\underline{\mathbf {U}}_h)(0)&{:}{=} {\left\{ \begin{array}{ll} \underline{\mathbf {u_0}} &{} k=0, \\ \underline{\mathbf {v_0}} &{} k=1, \\ -M^{-1}A(\partial _t^{k-2}\underline{\mathbf {U}}_h)(0)+\partial _t^{k-2}\underline{\mathbf {f}}(0) &{} k\ge 2, \end{array}\right. } \end{aligned}$$

and

$$\begin{aligned} (\partial _t^{k}\underline{\mathbf {U}}_h)(t_i)&{:}{=} {\left\{ \begin{array}{ll} \underline{\mathbf {U}}_h(t_i) &{} k=0, \\ -M^{-1}A(\partial _t^{k-2}\underline{\mathbf {U}}_h)(t_i)+\partial _t^{k-2}\underline{\mathbf {f}}(t_i) &{} k=2,4,6,\dots ,2K, \end{array}\right. } \end{aligned}$$

for \(i\ge 1\), with \(\underline{\mathbf {f}}{:}{=}M^{-1}\underline{\mathbf {f}}^*\). In case \(K=1\), this scheme reduces to the standard leap-frog or central difference scheme. When there is no source term, (5) simplifies to

$$\begin{aligned} \underline{\mathbf {U}}_h(t_{i+1})&= -\underline{\mathbf {U}}_h(t_{i-1}) + 2\sum _{k=0}^K \frac{1}{(2k)!} \varDelta t^{2k} (-M^{-1}A)^k\underline{\mathbf {U}}_h(t_i), \end{aligned}$$
(6)

for \(i=1,\dots ,N_T-1\).

For the dispersion analysis, we will choose K equal to the polynomial degree p of the spatial discretization, since this will result in a 2p-order convergence rate of the dispersion error as shown in Sect. 6.

5 Dispersion Analysis

A common measure for the quality of a numerical method for wave propagation modelling is the amount of numerical dispersion and dissipation. Numerical dispersion refers in this context to the discrepancy between the numerical and physical wave propagation speed and numerical dissipation is the loss of energy in the numerical scheme. Since the schemes that we consider are all energy-conservative, they do not suffer from numerical dissipation. However, when projecting a physical wave onto the discrete space, this results in a superposition of a well-matching numerical wave and several numerical waves that have a completely different shape and frequency. We compute the number of these non-matching or spurious waves and refer to it as the eigenvector error, since it is related to the accuracy of the eigenvectors of \(M^{-1}A\), while the dispersion error is related to the accuracy of the eigenvalues of \(M^{-1}A\).

Fig. 1
figure 1

Unit cell subdivided into tetrahedra (a), and periodic mesh made from \(3\times 3\times 3\) copies of this unit cell (b)

We analyse the dispersion and eigenvector error using standard Fourier analysis, which is also known in this context as plane wave analysis. The main idea of this analysis is to compare physical plane waves with numerical plane waves on a homogeneous periodic domain, free from external forces, using a periodic mesh. To obtain a periodic tetrahedral mesh we subdivide a small cell into tetrahedra and repeat this pattern to fill the entire domain as illustrated in Fig. 1. By using Fourier modes, we can then efficiently compute the numerical plane waves and their dispersion properties by solving eigenvalue problems on only a single cell.

Our analysis is similar to [11], but with the following extensions:

  • We extend the analysis to parallellepiped cells, since this allows for a more regular tetrahedral mesh.

  • We also compute the number of spurious modes that appear in the projection of the physical wave.

  • In the three-dimensional elastic case, there are two distinct secondary or shear waves with the same wave vector. To compute the dispersion and eigenvector error in this case, we consider the two best matching numerical plane waves.

We explain the dispersion analysis in more detail in the following subsections. First, we show how we can derive an analytical expression for the numerical plane waves using Fourier modes. After that, we show how we use this to compute the numerical dispersion and eigenvector error. In the last subsection we explain how we estimate the computational cost for each method.

5.1 Analytic Expression for the Numerical Plane Waves

We first consider a periodic cubic domain of the form \(\varOmega {:}{=}[0,N)^3\), with N a positive integer, and later extend the results to parallelepiped domains which allow for more regular tetrahedral meshes. The physical plane wave has the following form:

(7)

where is the imaginary number, \(\varvec{\kappa }\in \mathbb {R}^3\) is the wave vector, \(\omega \in \mathbb {R}\) is the angular velocity, and \({\mathbf {a}}\in \mathbb {R}^m\) is the amplitude vector. The wave vector must be of the form \(\varvec{\kappa }=\varvec{\kappa }_{{\mathbf {z}}}=\frac{2\pi }{N}{\mathbf {z}}\), with \({\mathbf {z}}\in \mathbb {Z}_N^3\), in order to satisfy the periodic boundary conditions.

The numerical plane wave can be written in a similar form when using a periodic mesh. To obtain a periodic tetrahedral mesh, we subdivide the unit cell \(\varOmega _0{:}{=}[0,1)^3\) into tetrahedra and repeat this pattern \(N\times N\times N\) times to fill the entire domain as illustrated in Fig. 1. We equip the mesh with a translation-invariant set of basis functions where each basis function has minimal support. In case of mass-lumping we use nodal basis functions and in case of DG we use basis functions that have support on only a single element. The numerical plane wave \(\underline{\mathbf {U}}_h\) of the fully discrete scheme then has the form

(8)

Here, \(\underline{\mathbf {U}}_h(\varOmega _{\mathbf {k}},t_i)\) denotes the coefficients of the basis functions corresponding to cell \(\varOmega _{{\mathbf {k}}}{:}{=}{\mathbf {k}}+\varOmega _0\) at time \(t_i\). In case of mass-lumping, these basis functions are the nodal basis functions corresponding to the nodes on \(\varOmega _{{\mathbf {k}}}={\mathbf {k}}+[0,1)^3\), while in case of DG, these are the basis functions that have support on one of the tetrahedra in \(\varOmega _{{\mathbf {k}}}\). The vector \(\underline{\mathbf {U}}_{h,\varOmega _0}\in \mathbb {R}^{n_0}\) denotes the basis function coefficients corresponding to cell \(\varOmega _0\) at time 0 and \({\mathbf {x}}_{{\mathbf {k}}}={\mathbf {k}}\) are the coordinates of the front-left-bottom vertex of cell \(\varOmega _{{\mathbf {k}}}\).

To show that this is indeed a numerical plane wave, let \(M^{(\varOmega _{\mathbf {k}},\varOmega _{\mathbf {m}})}, A^{(\varOmega _{\mathbf {k}},\varOmega _{\mathbf {m}})} \in \mathbb {R}^{n_{0}\times n_{0}}\), for \({\mathbf {k}},{\mathbf {m}}\in \mathbb {Z}_N^3\), be submatrices of M and A, respectively, defined as follows:

$$\begin{aligned} M^{(\varOmega _{\mathbf {k}},\varOmega _{\mathbf {m}})}_{ij}&{:}{=} \left( \rho {\mathbf {w}}^{(\varOmega _{\mathbf {k}},i)}, {\mathbf {w}}^{(\varOmega _{\mathbf {m}},j)}\right) _h,&i,j=1,\dots ,n_{0}, \\ A^{(\varOmega _{\mathbf {k}},\varOmega _{\mathbf {m}})}_{ij}&{:}{=} a_h\left( {\mathbf {w}}^{(\varOmega _{\mathbf {k}},i)}, {\mathbf {w}}^{(\varOmega _{\mathbf {m}},j)}\right) ,&i,j=1,\dots ,n_{0}, \end{aligned}$$

where \(\{{\mathbf {w}}^{(\varOmega _{{\mathbf {k}}},i)}\}_{i=0}^{n_0}\) denote the basis functions corresponding to cell \(\varOmega _{{\mathbf {k}}}\) and where \(a_h = a_h^{(DG)}\) and \((\cdot ,\cdot )_h = (\cdot ,\cdot )\) in case of the DG method and \(a_h=a\) and \((\cdot ,\cdot )_h=(\cdot ,\cdot )_h^{(L)}\) in case of the mass-lumped method.

Since the basis functions are translation invariant, the submatrices \(M^{(\varOmega _{\mathbf {k}},\varOmega _{{\mathbf {k}}+\varDelta {\mathbf {k}}})}\) and \(A^{(\varOmega _{\mathbf {k}},\varOmega _{{\mathbf {k}}+\varDelta {\mathbf {k}}})}\) are the same for any \({\mathbf {k}}\in \mathbb {Z}_N^3\) with \(\varDelta {\mathbf {k}}\in \mathbb {Z}_N^3\) fixed. Furthermore, the submatrices \(M^{(\varOmega _{\mathbf {k}},\varOmega _{\mathbf {m}})}\) are only non-zero when \({\mathbf {k}}={\mathbf {m}}\), since the mass matrix is diagonal in case of mass-lumping and block-diagonal, with each block corresponding to an element, in case of DG. The submatrices \(A^{(\varOmega _{\mathbf {k}},\varOmega _{{\mathbf {k}}+\varDelta {\mathbf {k}}})}\) are only non-zero when \(\varDelta {\mathbf {k}}\in \{-1,0,1\}^3\), since the nodal basis functions for mass-lumping and the local basis functions for DG do not interact when they are two or more cells apart. This implies that we only need to consider the submatrices \(M^{(\varOmega _0)}{:}{=}M^{(\varOmega _0,\varOmega _0)}\) and \(A^{(\varOmega _0,\varOmega _{\varDelta {\mathbf {k}}})}\) for \(\varDelta {\mathbf {k}}=\{-1,0,1\}^3\).

Now let \(\varvec{\kappa }=\varvec{\kappa }_{\mathbf {z}}{:}{=}\frac{2\pi }{N}{\mathbf {z}}\), for some \({\mathbf {z}}\in \mathbb {Z}_N^3\), and let \(\underline{\mathbf {U}}_{h,0}\in \mathbb {R}^{N^3\times n_0}\) be the numerical wave at time \(t=0\):

(9)

Then \(M^{-1}A\underline{\mathbf {U}}_{h,0}\) satisfies

for all \({\mathbf {k}}\in \mathbb {Z}_N^3\), with \(M^{(\varOmega _0)}_{inv}\) the inverse of \(M^{(\varOmega _0)}\) and

This implies that if \((s_h,\underline{\mathbf {U}}_{h,\varOmega _0})\) is an eigenpair of \(S^{(\varvec{\kappa })}{:}{=}M^{(\varOmega _0)}_{inv}A^{(\varvec{\kappa })}\), then \((s_h,\underline{\mathbf {U}}_{h,0})\) is an eigenpair of \(M^{-1}A\). In other words, we can obtain eigenpairs of \(M^{-1}A\) by computing the eigenpairs of a small matrix \(S^{(\varvec{\kappa })}\in \mathbb {R}^{n_0\times n_0}\). Note that since \(M^{(\varOmega _0)}\) is symmetric positive definite, and \(A^{(\varvec{\kappa })}\) is Hermitian, \(S^{(\varvec{\kappa })}\) has \(n_0\) distinct eigenpairs. Since there are \(N^3\) choices for \({\mathbf {z}}\in \mathbb {Z}_N^3\) and \(S^{(\varvec{\kappa }_{\mathbf {z}})}\) has \(n_0\) eigenpairs, we can obtain all of the \(N^3\times n_0\) eigenpairs of \(M^{-1}A\) in this way.

Now consider the numerical plane wave in (8) with \((s_h,\underline{\mathbf {U}}_{h,\varOmega _0})\) an eigenpair of \(S^{(\varvec{\kappa })}\), so with \((s_h,\underline{\mathbf {U}}_{h,0})\) an eigenpair of \(M^{-1}A\). We can rewrite \(\underline{\mathbf {U}}_h\) as . If we then substitute this wave into (6) we obtain

$$\begin{aligned} \cos (\varDelta t\omega _h)\underline{\mathbf {U}}_h(t_i)&= \sum _{k=0}^K\frac{1}{(2k)!}(-\varDelta t^2s_h)^{k}\underline{\mathbf {U}}_h(t_i),&i=1,\dots ,n_T-1. \end{aligned}$$

From this, it follows that \(\underline{\mathbf {U}}_h\) in (8) is a discrete plane wave if \((s_h,\underline{\mathbf {U}}_{h,\varOmega _0})\) is an eigenpair of \(S^{(\varvec{\kappa })}\) and if \(\omega _h\) satisfies \(\cos (\varDelta t\omega _h) =\sum _{k=0}^K\frac{1}{(2k)!}(-\varDelta t^{2}s_h)^{k}\), so if

$$\begin{aligned} \omega _h&=\pm \frac{1}{\varDelta t}\arccos \left( \sum _{k=0}^K\frac{1}{(2k)!}(-\varDelta t^{2}s_h)^{k}\right) . \end{aligned}$$
(10)

It remains to determine the time step size \(\varDelta t\). In the “Appendix” we show that the numerical scheme is stable, if

$$\begin{aligned} \varDelta t\le \sqrt{c_K/\sigma _{max}(M^{-1}A)}, \end{aligned}$$
(11)

where \(\sigma _{max}(M^{-1}A)\) denotes the spectral radius of \(M^{-1}A\) and \(c_K\) is a constant, given by

$$\begin{aligned} c_K {:}{=} \inf \left\{ x\ge 0 \;|\; \left| \sum _{k=0}^K \frac{1}{(2k)!}(-x)^k\right| > 1 \right\} . \end{aligned}$$
(12)

To obtain a bound on the spectral radius, recall that we can write every eigenpair of \(M^{-1}A\) in the form of \((s_h,\underline{\mathbf {U}}_{h,0})\), with \(\underline{\mathbf {U}}_{h,0}\) given in (9) and with \((s_h,\underline{\mathbf {U}}_{h,\varOmega _0})\) an eigenpair of \(S^{(\varvec{\kappa }_{{\mathbf {z}}})}\) for some \({\mathbf {z}}\in \mathbb {Z}_N^3\). This implies that \(\sigma _{max}(M^{-1}A)\) is equal to \(\sup _{{\mathbf {z}}\in \mathbb {Z}_N^3}\sigma _{max}(S^{(\varvec{\kappa }_{\mathbf {z}})})\). We can therefore bound \(\sigma _{max}(M^{-1}A)\) as follows:

$$\begin{aligned} \sigma _{max}(M^{-1}A) = \sup _{{\mathbf {z}}\in \mathbb {Z}_N^3}\sigma _{max}(S^{(\varvec{\kappa }_{\mathbf {z}})}) \le \sup _{\varvec{\kappa }\in \mathcal {K}_0} \sigma _{max}(S^{(\varvec{\kappa })}) =:s_{h,max}, \end{aligned}$$
(13)

with \(\mathcal {K}_0{:}{=}[0,2\pi )^3\supset \{\varvec{\kappa }_{\mathbf {z}}\}_{{\mathbf {z}}\in \mathbb {Z}_N^3}\) the space of all distinct wave vectors \(\varvec{\kappa }\).

The constants \(c_K\) can be computed numerically. For example, \(c_K=4,12,7.57\) for \(K=1,2,3\), respectively. For higher values of K, see, for example, [27], where his \(\sigma _t\) satisfies \(c_K=2\sigma _t\).

We can extend the results of this section to parallelepiped cells by applying a linear transformation \({\mathbf {x}}\rightarrow {\mathbf {T}}\cdot {\mathbf {x}}\), with \({\mathbf {T}}\in \mathbb {R}^{3\times 3}\) a second-order tensor. The parallelepiped domain is then given by \(\varOmega ={\mathbf {T}}\cdot (0,N)^3\) and the cells are given by \(\varOmega _0={\mathbf {T}}\cdot [0,1)^3\) and \(\varOmega _{{\mathbf {k}}}={\mathbf {x}}_{{\mathbf {k}}} + \varOmega _0\), with \({\mathbf {x}}_{{\mathbf {k}}}={\mathbf {T}}\cdot {\mathbf {k}}\) the front-left-bottom vertex. The wave vectors \(\varvec{\kappa }_{\mathbf {z}}\) are of the form \(\varvec{\kappa }_{{\mathbf {z}}}=\frac{2\pi }{N}({\mathbf {T}}^{-t}\cdot {\mathbf {z}})\) and the wave vector space \(\mathcal {K}_0\) is given by \(\mathcal {K}_0{:}{=}{\mathbf {T}}^{-t}\cdot [0,2\pi )^3\), with \({\mathbf {T}}^{-t}\) the transposed inverse of \({\mathbf {T}}\).

5.2 Computing the Dispersion and Eigenvector Error

To explain how we compute the dispersion error, we first consider the acoustic wave equation. Let \(\varvec{\kappa }\) be a given wave vector and let \({\mathbf {u}}^{(\varvec{\kappa })}\) be the acoustic plane wave given by . The angular velocity is given by \(\omega =\pm \, c|\varvec{\kappa }|\) with c the acoustic wave propagation speed. We compare this plane wave with the numerical plane waves.

To do this, we use the results from the previous subsection. There, we showed that for any eigenpair \((s_h,\underline{\mathbf {U}}_{h,\varOmega _0})\) of \(S^{(\varvec{\kappa })}\) we can obtain a numerical plane wave in the form of (8) with angular velocity \(\pm \,\omega _h\) given by (10). Since \(S^{(\varvec{\kappa })}\) has \(n_0\) eigenpairs, this means we can obtain \(n_0\) discrete plane waves \(\{\underline{\mathbf {U}}^{(\varvec{\kappa },i)}_h\}_{i=1}^{n_0}\), with angular velocities \(\{\pm \,\omega ^{(\varvec{\kappa },i)}_{h}\}_{i=1}^{n_0}\), for a given wave vector \(\varvec{\kappa }\). The corresponding wave propagation speeds \(\{c^{(\varvec{\kappa },i)}_{h}\}_{i=1}^{n_0}\) can be computed by \(c^{(\varvec{\kappa },i)}_{h}=|\omega ^{(\varvec{\kappa },i)}_{h}|/|\varvec{\kappa }|\) and we can order the numerical plane waves such that

$$\begin{aligned} |c-c^{(\varvec{\kappa },1)}_{h}|\le |c-c^{(\varvec{\kappa },2)}_{h}|\le \dots . \end{aligned}$$

We consider \(\underline{\mathbf {U}}^{(\varvec{\kappa },1)}_h\) to be the matching numerical plane wave and \(\underline{\mathbf {U}}^{(\varvec{\kappa },i)}_h\), with \(i>1\), to be spurious modes. We then define the dispersion error as follows

$$\begin{aligned} e_{disp}(\varvec{\kappa })&= \frac{|c-c_{h}^{(\varvec{\kappa },1)}|}{c}. \end{aligned}$$

The complete procedure for computing \(e_{disp}(\varvec{\kappa })\) in the acoustic case is given by

  1. a.

    Compute all eigenpairs \((s_h^{(\varvec{\kappa },i)}, \underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },i)})\) of \(S^{(\varvec{\kappa })}{:}{=}M^{(\varOmega _0)}_{inv}A^{(\varvec{\kappa })}\).

  2. b.

    Compute the angular velocities \(\omega _{h}^{(\varvec{\kappa },i)}=\frac{1}{\varDelta t}\arccos \left( \sum _{k=0}^K \frac{1}{(2k)!}(-\varDelta t^2s_{h}^{(\varvec{\kappa },i)})^k\right) \).

  3. c.

    Compute the wave propagation speeds \(c_h^{(\varvec{\kappa },i)}=\omega _{h}^{(\varvec{\kappa },i)}/|\varvec{\kappa }|\) and order everything such that \(|c-c^{(\varvec{\kappa },1)}_{h}|\le |c-c^{(\varvec{\kappa },2)}_{h}|\le \dots \).

  4. d.

    Compute \(e_{disp}(\varvec{\kappa })=|c-c_h^{(\varvec{\kappa },1)}|/c\).

Now let be the acoustic plane wave at \(t=0\). Also, let \(\underline{\mathbf {u}}^{(\varvec{\kappa })}_0\) be the projection of \({\mathbf {u}}_0^{(\varvec{\kappa })}\) onto the numerical space, and let \(\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },i)}\) be the discrete plane wave at \(t=0\). In the ideal case, \(\underline{\mathbf {u}}_0^{(\varvec{\kappa })}\) is equal to \(\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)}\) up to a constant. In most cases, however, the projection \(\underline{\mathbf {u}}_0^{(\varvec{\kappa })}\) is a superposition of a well-matching plane wave \(\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)}\) and several other plane waves \(\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },i)}\), for \(i>1\), that may have a completely different shape and velocity. We can compute the number of these spurious waves by computing the projection error.

To do this, we let \(\underline{\mathbf {U}}^{(\varvec{\kappa })}_0\in \mathrm {span}\{\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)}\}\) denote the projection of \(\underline{\mathbf {u}}^{(\varvec{\kappa })}_0\) onto \(\mathrm {span}\{\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)}\}\), such that \((\underline{\mathbf {U}}^{(\varvec{\kappa })}_0,\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)})_M=(\underline{\mathbf {u}}^{(\varvec{\kappa })}_0,\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)})_M\), with \((\underline{\mathbf {u}},\underline{\mathbf {v}})_M{:}{=}\underline{\mathbf {u}}^tM\underline{\mathbf {v}}\). We then define the projection error as

$$\begin{aligned} e_{vec}(\varvec{\kappa }) {:}{=} \frac{\Vert \underline{\mathbf {u}}^{(\varvec{\kappa })}_0-\underline{\mathbf {U}}_{0}^{(\varvec{\kappa })}\Vert _M}{\Vert \underline{\mathbf {u}}_{0}^{(\varvec{\kappa })}\Vert _M}, \end{aligned}$$

where \(\Vert \underline{\mathbf {u}}\Vert _M{:}{=}\sqrt{\underline{\mathbf {u}}^tM\underline{\mathbf {u}}}\). We refer to this as the eigenvector error, since it is related to the accuracy of \(\underline{\mathbf {U}}_{h,0}^{(\varvec{\kappa },1)}\), which is an eigenvector of \(M^{-1}A\) [26].

Since the physical plane wave, the mesh, and the set of basis functions are all translation invariant, we can efficiently compute this error by only considering \({\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\), the part of \({\mathbf {u}}^{(\varvec{\kappa })}_0\) restricted to cell \(\varOmega _0\). We define \(\underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\) to be the projection of \({\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\) onto the discrete space restricted to \(\varOmega _0\) and define \(\underline{\mathbf {U}}^{(\varvec{\kappa })}_{\varOmega _0}\in \mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}\}\) the projection of \(\underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\) onto \(\mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}\}\) such that \((\underline{\mathbf {U}}^{(\varvec{\kappa })}_{\varOmega _0},\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)})_{M_0}=(\underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0},\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)})_{M_0}\), with \(M_0{:}{=}M^{(\varOmega _0)}\). We can then compute \(e_{vec}(\varvec{\kappa })\) by

$$\begin{aligned} e_{vec}(\varvec{\kappa })=\frac{\Vert \underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa })}\Vert _{M_0}}{\Vert \underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa })}\Vert _{M_0}}. \end{aligned}$$

The complete procedure for computing \(e_{vec}(\varvec{\kappa })\) in the acoustic case is given by

  1. A.

    Compute all eigenpairs \((s_h^{(\varvec{\kappa },i)}, \underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },i)})\) of \(S^{(\varvec{\kappa })}{:}{=}M^{(\varOmega _0)}_{inv}A^{(\varvec{\kappa })}\).

  2. B.

    Compute the angular velocities \(\omega _{h}^{(\varvec{\kappa },i)}=\frac{1}{\varDelta t}\arccos \left( \sum _{k=0}^K \frac{1}{(2k)!}(-\varDelta t^2s_{h}^{(\varvec{\kappa },i)})^k\right) \).

  3. C.

    Compute the wave propagation speeds \(c_h^{(\varvec{\kappa },i)}=\omega _{h}^{(\varvec{\kappa },i)}/|\varvec{\kappa }|\) and order everything such that \(|c-c^{(\varvec{\kappa },1)}_{h}|\le |c-c^{(\varvec{\kappa },2)}_{h}|\le \dots \).

  4. D.

    Compute \(\underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\): the projection of \({\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\) onto the discrete space of cell \(\varOmega _0\).

  5. E.

    Compute \(\underline{\mathbf {U}}^{(\varvec{\kappa })}_{\varOmega _0}\): the projection of \(\underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\) onto \(\mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}\}\)

  6. F.

    Compute \(e_{vec}(\varvec{\kappa })={\Vert \underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa })}\Vert _{M_0}}/{\Vert \underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa })}\Vert _{M_0}}\).

For the isotropic elastic case, the procedure is very similar. Let \(\varvec{\kappa }\) be the wave vector and let \({\mathbf {u}}^{(\varvec{\kappa })}\) denote the elastic plane wave of the form , with \({\mathbf {a}}\) the amplitude vector, \(\omega =\pm \, c|\varvec{\kappa }|\) the angular velocity, and c the elastic wave propagation speed. In the elastic isotropic case, we have to distinguish between longitudinal or primary waves, where \({\mathbf {a}}\) is parallel with \(\varvec{\kappa }\) and the propagation speed is \(c=c_P=\sqrt{(\lambda +2\mu )/\rho }\), and transversal, shear or secondary waves, where \({\mathbf {a}}\) is perpendicular to \(\varvec{\kappa }\) and the propagation speed is \(c=c_S=\sqrt{\mu /\rho }\).

For the analysis, we will only consider the secondary wave, since the wavelength \(\lambda =2\pi /|\kappa |=2\pi c/\omega \) of this wave is shorter and therefore governs the required mesh resolution. In 3D, there are two linear independent amplitude vectors, \({\mathbf {a}}^{(\varvec{\kappa },1)}\) and \({\mathbf {a}}^{(\varvec{\kappa },2)}\), that are perpendicular to \(\varvec{\kappa }\) and we will refer to the corresponding secondary plane waves as \(\underline{\mathbf {u}}^{(\varvec{\kappa },1)}\) and \(\underline{\mathbf {u}}^{(\varvec{\kappa },2)}\). We will compare these physical plane waves with the numerical plane waves in a similar way as for the acoustic case.

Since, for a given \(\varvec{\kappa }\) and \(\omega =\pm \, c_S|\varvec{\kappa }|\), there are two linearly independent secondary waves, we compare the secondary wave velocity \(c=c_S\) with the wave propagation speed of the two best matching numerical plane waves. In particular, we define the dispersion error as

$$\begin{aligned} e_{disp}(\varvec{\kappa })&= \frac{|c-c_{h}^{(\varvec{\kappa },2)}|}{c}. \end{aligned}$$

The procedures for computing this error is the same as for the acoustic case, with step d replaced by

  1. d*.

    Compute \(e_{disp}(\varvec{\kappa }) = {|c-c_{h}^{(\varvec{\kappa },2)}|}/{c}.\)

The eigenvector is now computed by

$$\begin{aligned} e_{vec}(\varvec{\kappa }) = \sup _{\underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}\in \mathrm {span}\{\underline{\mathbf {u}}^{(\varvec{\kappa },1)}_{\varOmega _0},\underline{\mathbf {u}}^{(\varvec{\kappa },2)}_{\varOmega _0}\}} \frac{\Vert \underline{\mathbf {u}}^{(\varvec{\kappa })}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa })}\Vert _{M_0}}{\Vert \underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa })}\Vert _{M_0}}, \end{aligned}$$

where \(\underline{\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}\) is the projection of \({\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}\) onto the discrete space of cell \(\varOmega _0\), and \(\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa })}\in \mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}, \underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },2)}\}\) is the projection of \(\underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa })}\in \mathrm {span}\{\underline{\mathbf {u}}^{(\varvec{\kappa },1)}_{\varOmega _0},\underline{\mathbf {u}}^{(\varvec{\kappa },2)}_{\varOmega _0}\}\) onto \(\mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}, \underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },2)}\}\). In other words, we compute the worst possible projection error for a linear combination of \(\underline{\mathbf {u}}^{(\varvec{\kappa },1)}_{\varOmega _0}\) and \(\underline{\mathbf {u}}^{(\varvec{\kappa },2)}_{\varOmega _0}\) projected onto the span of the two best-matching numerical plane waves \(\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}\) and \(\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },2)}\). We can efficiently compute this by

$$\begin{aligned} e_{vec}(\varvec{\kappa }) = \sqrt{\sigma _{max}(B^{-1}R)}, \end{aligned}$$

where \(\sigma _{max}(B^{-1}R)\) denotes the largest eigenvalue of \(B^{-1}R\) and \(B,R\in \mathbb {R}^{2\times 2}\) are matrices given by \(B_{ij}{:}{=}(\underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa },i)},\underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa },j)})_{M_0}\) and \(R_{ij}{:}{=}(\underline{\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa },i)},\underline{\mathbf {u}}^{(\varvec{\kappa },j)}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa },j)})_{M_0}\), with \(\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa },i)}\) the projection of \(\underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa },i)}\) onto \(\mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}, \underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },2)}\}\).

The procedure for computing \(e_{vec}(\varvec{\kappa }) \) is the same as for the acoustic case, with steps D-F replaced by

  1. D*.

    Compute \(\underline{\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}\): the projection of \({\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}\) onto the discrete space of cell \(\varOmega _0\), for \(i=1,2\).

  2. E*.

    Compute \(\underline{\mathbf {U}}^{(\varvec{\kappa },i)}_{\varOmega _0}\): the projection of \(\underline{\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}\) onto \(\mathrm {span}\{\underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },1)}, \underline{\mathbf {U}}_{h,\varOmega _0}^{(\varvec{\kappa },2)}\}\), for \(i=1,2\).

  3. F*.

    Compute \(B_{ij}{:}{=}(\underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa },i)},\underline{\mathbf {u}}_{\varOmega _0}^{(\varvec{\kappa },j)})_{M_0}\) and \(R_{ij}{:}{=}(\underline{\mathbf {u}}^{(\varvec{\kappa },i)}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa },i)},\underline{\mathbf {u}}^{(\varvec{\kappa },j)}_{\varOmega _0}-\underline{\mathbf {U}}_{\varOmega _0}^{(\varvec{\kappa },j)})_{M_0}\), for \(i,j=1,2\), and use this to compute \(e_{vec}(\varvec{\kappa })=\sqrt{\sigma _{max}(B^{-1}R)}\).

So far, we only considered the dispersion error and eigenvector error for a given wave vector \(\varvec{\kappa }\). For a given wavelength \(\lambda =2\pi /|\varvec{\kappa }|\), we define the dispersion and eigenvector error as the worst case among all wave vectors of length \(|\varvec{\kappa }|=\lambda /(2\pi )\), so among wave vectors in all possible directions:

$$\begin{aligned} e_{disp}(\lambda )&{:}{=} \sup _{\varvec{\kappa }\in \mathbb {R}^3, \;|\varvec{\kappa }|=\lambda /(2\pi )} e_{disp}(\varvec{\kappa }), \end{aligned}$$
(14a)
$$\begin{aligned} e_{vec}(\lambda )&{:}{=} \sup _{\varvec{\kappa }\in \mathbb {R}^3, \;|\varvec{\kappa }|=\lambda /(2\pi )} e_{vec}(\varvec{\kappa }). \end{aligned}$$
(14b)

We can use these errors to determine the required number of elements per wavelength. To compute these errors, we use a search algorithm, which requires the computation of \(e_{disp}(\varvec{\kappa })\) and \(e_{vec}(\varvec{\kappa })\) for a large number of wave vectors \(\varvec{\kappa }\). The complete procedure for computing the dispersion and eigenvector error is given by:

  1. 1.

    Construct a cell \(\varOmega _0\) and subdivide it into tetrahedra.

  2. 2.

    Compute the submatrices \(M^{(\varOmega _0)}\) and \(A^{(\varOmega _0,\varOmega _{\varDelta {\mathbf {k}}})}\) for \(\varDelta {\mathbf {k}}\in \{-1,0,1\}^3\).

  3. 3.

    Compute \(s_{h,max}\), given by (13). This is done with a search algorithm which requires the computation of \( \sigma _{max}(S^{(\varvec{\kappa })})\), with \(S^{(\varvec{\kappa })}{:}{=}M^{(\varOmega _0)}_{inv}A^{(\varvec{\kappa })}\), for a large number of wave vectors \(\varvec{\kappa }\).

  4. 4.

    Compute \(\varDelta t\le \sqrt{c_K/s_{h,max}}\), with \(c_K\) given by (12).

  5. 5.

    For a given wavelength \(\lambda \), compute the errors \(e_{disp}(\lambda )\) and \(e_{vec}(\lambda )\) given in (14). For each \(\lambda \), this requires the computation of \(e_{disp}(\varvec{\kappa })\) and \(e_{vec}(\varvec{\kappa })\), using steps a-d and A-F, for a large number of wave vectors \(\varvec{\kappa }\).

5.3 Estimating the Computational Cost

To compare the efficiency of the different methods, we also compute the number of degrees of freedom \(n_{vec}\), the number of non-zero entries of the stiffness matrix \(n_{mat}\), and the estimated computational cost \(n_{comp}\), for each wavelength \(\lambda \).

We define \(n_{vec}\) to be the number of degrees of freedom per \(\lambda ^3\)-volume. This is computed by

$$\begin{aligned} n_{vec}&= n_0\frac{\lambda ^3}{|\varOmega _0|}, \end{aligned}$$

where \(n_0\) is the number of basis functions corresponding to cell \(\varOmega _0\), and \(|\varOmega _0|\) is the volume of \(\varOmega _0\).

We define \(n_{mat}\) to be the number of non-zero entries of the stiffness matrix per \(\lambda ^3\)-volume. In case of mass-lumping, we estimate this number by

$$\begin{aligned} n^{(ML)}_{mat}&= \left( \sum _{q\in \mathcal {Q}_{\varOmega _0}} \sum _{q'\in \mathcal {N}(q)} |\mathcal {U}_q||\mathcal {U}_{q'}| \right) \frac{\lambda ^3}{|\varOmega _0|} , \end{aligned}$$

where \(|\mathcal {U}_q|\) is the number of degrees of freedom per node (\(|\mathcal {U}_q|=1\) in the acoustic and \(|\mathcal {U}_q|=3\) in the elastic case), \(\mathcal {Q}_{\varOmega _0}\) is the set of nodes on \(\varOmega _0\), and \(\mathcal {N}(q)\) are the neighbouring nodes of q that are connected with q through an element.

In case of the SIPDG method, we estimate this number by

$$\begin{aligned} n^{(DG)}_{mat}&= \left( \sum _{e\in \mathcal {T}_{\varOmega _0}}\sum _{e'\in \mathcal {N}(e)}|\mathcal {U}_e||\mathcal {U}_{e'}| \right) \frac{\lambda ^3}{|\varOmega _0|} , \end{aligned}$$

where \(|\mathcal {U}_e|\) is the number of basis functions with support on element e, \(\mathcal {T}_{\varOmega _0}\) are the elements in \(\varOmega _0\), and \(\mathcal {N}(e)\) are the neighbouring elements of e that are connected with e through a face.

To estimate the computational cost we look at the size of the matrix times the number of matrix-vector products. The resulting estimates gives a rough estimate of the relative CPU time of the different methods, since it estimates the number of computations when using a globally assembled matrix.

We define the computational cost \(n_{comp}\) as the number of non-zero matrix entries per \(\lambda ^3\)-volume times the number of matrix-vector products during one oscillation in time. The duration of one oscillation is \(T_0=\lambda /c\), with c the wave propagation speed. The number of matrix-vector products during one oscillation is the number of stages of the Lax–Wendroff scheme K times the number of time steps \(N_{\varDelta t}=T_0/\varDelta t=\lambda /(c\varDelta t)\), where \(\varDelta t=\sqrt{c_K/s_{h,max}}\), with \(c_K\) given by (12) and \(s_{h,max}\) given by (13). We use this to compute \(n_{comp}\) as follows:

$$\begin{aligned} n_{comp}&= n_{mat} K N_{\varDelta t}. \end{aligned}$$

6 Results and Comparisons

An overview of the different finite element methods that we analyse is given in Table 1. Each method is combined with an order-2p Lax–Wendroff time integration scheme, where p denotes the degree of the spatial discretization.

Table 1 Analysed finite element methods
Fig. 2
figure 2

Tetragonal disphenoid honeycomb restricted to cell \(\varOmega _0\) (a) and restricted to \(3\times 3\times 3\) cells (b)

To analyse the dispersion properties of these methods, we use standard Fourier analysis, as explained in Sect. 5. We consider a periodic mesh of congruent nearly-regular equifacial tetrahedra, known as the tetragonal disphenoid honeycomb. To obtain this mesh, we slice the unit cell \(\varOmega _0{:}{=}[0,1)^3\) into 6 tetrahedra with the planes \(x=y\), \(x=z\), and \(y=z\) and then apply the linear transformation \({\mathbf {x}}\rightarrow {\mathbf {T}}\cdot {\mathbf {x}}\), with

$$\begin{aligned} {\mathbf {T}} {:}{=} \begin{bmatrix} 1&-1/3&-1/3 \\ 0&\sqrt{8/9}&-\sqrt{2/9} \\ 0&0&\sqrt{2/3} \end{bmatrix}. \end{aligned}$$
(15)

An illustration of this mesh is given in Fig. 2.

6.1 Acoustic Waves on a Regular Mesh

We first consider the acoustic wave model with \(c=\rho =1\). Figure 3 illustrates the dispersion and eigenvector error with respect to the number of elements per wavelength \(N_E{:}{=}\root 3 \of {\lambda ^3/|e|_{av}}\), with \(\lambda \) the wavelength and \(|e|_{av}\) the average element volume. The eigenvector error for ML1 is always zero, since it has only one degree of freedom per cell \(\varOmega _{{\mathbf {k}}}\) and therefore allows only one numerical plane wave for a given wave vector. From this figure we can obtain the order of convergence, which is 2p for the dispersion error and \(p+1\) for the eigenvector error. These convergence rates are typical for symmetric finite element methods for eigenvalue problems, see, for example, [4] and the references therein. The 2p-order superconvergence of the dispersion error is also in accordance with the results of [2, 13, 26].

Fig. 3
figure 3

Dispersion error (a) and eigenvector error (b) for the acoustic wave model

By extrapolating the results shown in Fig. 3 we can obtain approximations of the errors of the form \(e=\alpha (N_E)^{-\beta }\), where \(\alpha \) is the leading constant and \(\beta \) is the order of convergence. The approximations are given in Table 2.

Table 2 Approximation of the dispersion and eigenvector error for the acoustic case

We can use these results to obtain estimates for the number of elements per wavelength required for a given accuracy, but we can also use them to obtain other properties, such as the number of time steps or the computational cost required for a given accuracy. An overview for a dispersion error of 0.01 and 0.001 is given in Tables 3 and 4, respectively, and the relation between the accuracy and the computational cost is illustrated in Fig. 4.

Table 3 Number of elements per wavelength \(N_E\), number of degrees of freedom \(n_{vec}\), size of the global matrix \(n_{mat}\), number of time steps \(N_{\varDelta t}\), computational cost \(n_{comp}\) and eigenvector error \(e_{vec}\) for a dispersion error of 0.01 for different finite element methods for the acoustic wave model
Table 4 Same as Table 3, but for a dispersion error of 0.001
Fig. 4
figure 4

Dispersion error of different finite element methods for the acoustic wave model plotted against the estimated computational cost

Figure 4 shows that for linear elements, the mass-lumped method ML1 is significantly more efficient than the DG methods DG1a and DG1b, while for quadratic elements, DG2a is significantly more efficient than ML2 and DG2b, and for cubic functions, DG3a is slightly more efficient than ML3b and significantly more efficient than DG3b and ML3a. In all cases, the DG methods using the sharper penalty term given by (4a) are significantly more efficient than those using the penalty term given by (4b). For a dispersion error of around 0.01 and higher, the linear mass-lumped method ML1 performs best in terms of computational cost, while for a dispersion error below 0.001 the best method is the DG method with cubic basis functions DG3a or the second degree-3 mass-lumped finite element method ML3b.

Tables 3 and 4 also show that for the case \(p=1\), the eigenvector error is always smaller than the dispersion error, but that for higher-order elements, the eigenvector error can become almost 5 times as large when the dispersion error is 0.01 and 10 times as large when the dispersion error is 0.001. This is due to the fact that the dispersion error converges with a faster rate (order 2p) than the eigenvector error (order \(p+1\)) for higher-degree methods.

6.2 The Effect of Mesh Distortions

We also investigate the effect of the mesh quality on the dispersion error. To do this, we first create meshes of very flat elements by scaling the regular disphenoid mesh in the z-direction. After that, we create distorted meshes by displacing some of the vertices of the disphenoid honeycomb.

Fig. 5
figure 5

Relative dispersion error for the disphenoid mesh scaled in the z-direction by a factor \(T_z\) for the acoustic wave model. Here, \(e_{disp,0}\) denotes the error for the original mesh

To create flat elements, we scale the disphenoid mesh in the z-direction by a factor \(T_z\). The effect on the dispersion error is illustrated in Fig. 5. For a mesh flattened by a factor 2, the dispersion error does not grow more than a factor 2.5, but flattening the mesh by a factor 10 increases the error by a factor between 10 and 100. In all cases, the mesh resolution remains the same and even becomes smaller in the z-direction. This means that the mesh quality can have a strong effect on the accuracy of the method and that using flat tetrahedra can significantly reduce the accuracy. The methods using lower-order elements are more sensitive to the mesh quality than the higher-order methods.

Fig. 6
figure 6

Repeated subcells with a small distortion (a) and corresponding tetrahedral mesh (b)

Fig. 7
figure 7

Dispersion error (a) and eigenvector error (b) for the acoustic wave model for a distorted mesh with distortion \(\delta =0.9\)

To create distorted meshes, we displace some of the vertices of the disphenoid mesh. In particular, we create a distorted mesh using the following steps:

  1. 1.

    Slice the cube \([0,0.5)^3\) into 6 tetrahedra with the planes \(x=y\), \(x=z\), \(y=z\).

  2. 2.

    Repeat this pattern \(2\times 2\times 2\) times to pack the unit cell [0, 1) with 48 tetrahedra.

  3. 3.

    Displace the central node by moving it from (0.5, 0.5, 0.5) to \(\big (0.5(1+\delta ),0.5(1+\delta ),0.5(1+\delta )\big )\), where \(\delta \in [0,1)\) denotes the size of the distortion.

  4. 4.

    Apply the transformation \({\mathbf {x}}\rightarrow {\mathbf {T}}\cdot {\mathbf {x}}\), with \({\mathbf {T}}\) defined as in (15).

In case of zero distortion, \(\delta =0\), we obtain the original disphenoid honeycomb, scaled by a factor 0.5. When the distortion \(\delta \) approaches 1, some of the elements become completely flat with zero volume.

An illustration of the mesh with distortion \(\delta =0.4\) is given in Fig. 6. In Fig. 7, the dispersion and eigenvector error are plotted against the number of elements per wavelength for a heavily distorted mesh with \(\delta =0.9\). These results show that the order of convergence remains 2p for the dispersion and \(p+1\) for the eigenvector error, even though the mesh is distorted. The distortion does, however, affect the leading constant of the errors. The effect of the mesh distortion on the dispersion error is illustrated in Fig. 8. Again, the accuracy is not significantly affected by small distortions, but large distortions can reduce the accuracy by an order of magnitude.

Fig. 8
figure 8

Relative dispersion error for meshes with a distortion \(\delta \). Here, \(e_{disp,0}\) denotes the error of the regular mesh with \(\delta = 0\)

6.3 Elastic Waves and the Effect of the P/S-Wave Velocity Ratio

Besides the acoustic wave model, we also consider the isotropic elastic wave model. Figure 9 illustrates the dispersion and eigenvector error with respect to the number of elements per wavelength for the isotropic elastic wave model with \(\mu =\rho =1\) and \(\lambda =2\), so with a P/S-wave velocity ratio of 2. Again, the order of convergence is 2p for the dispersion error and \(p+1\) for the eigenvector error.

By extrapolating these results we can again obtain approximations of the errors of the form \(e=\alpha (N_E)^{-\beta }\), which are given in Table 5. Figure 10 illustrates the relation between the dispersion error and the computational cost, based on these results. The relative performance of the different methods is similar to the acoustic case.

Fig. 9
figure 9

Dispersion error (a) and eigenvector error (b) for the isotropic elastic wave model with a P/S-wave velocity ratio of 2

Table 5 Approximation of the dispersion and eigenvector error for the elastic wave model with a P/S-wave velocity ratio of 2
Fig. 10
figure 10

Dispersion error of different finite element methods for the isotropic elastic wave model with a P/S-wave velocity ratio of 2, plotted against the estimated computational cost. The graphs of DG3a and ML3b and of DG3b and ML3a are almost identical

We also look at the influence of the P/S-wave velocity ratio \(c_P/c_S\) on the dispersion error, where \(c_S=\sqrt{\mu }\) denotes the S-wave velocity and \(c_P=\sqrt{\lambda +2\mu }\) denotes the P-wave velocity. This relation is illustrated in Fig. 11. This figure shows that the DG methods are not really sensitive to the \(c_P/c_S\) ratio, since the dispersion error never grows more than a factor 1.5. The higher-order mass-lumped methods are slightly more sensitive, with a dispersion error becoming around 3 times as large for \(c_P/c_S=10\), compared to \(c_P/c_S=2\), while the linear mass-lumped method is very sensitive, with a dispersion error becoming almost 40 times as large in this case.

Fig. 11
figure 11

Relative dispersion error for the isotropic elastic wave model with different \(c_P/c_S\) ratios. Here, \(e_{disp,0}\) denotes the error for the original mesh with \(c_P/c_S=2\)

7 Conclusions

We analysed the dispersion properties of two types of explicit finite element methods for modelling wave propagation on tetrahedral meshes, namely mass-lumped finite elements methods and symmetric interior penalty discontinuous Galerkin (SIPDG) methods, both for degrees \(p=1,2,3\) and combined with an order-2p Lax–Wendroff time integration method. The analysed methods are listed in Table 1.

The dispersion properties are obtained semi-analytically using standard Fourier analysis. We used this to give an indication of which method is the most efficient for a given accuracy, how many elements per wavelength are required for a given accuracy, and how sensitive the accuracy of the method is to poorly shaped elements and high P/S-wave velocity ratios.

Based on the results we draw the following conclusions with regard to efficiency:

  • The linear mass-lumped method is the most efficient method for a dispersion error of around \(1\%\) when using approximately regular tetrahedra. Heavily distorted elements, however, can significantly reduce its accuracy.

  • The degree-3 SIPDG method, with the penalty term derived in [16] and given by (4a), and the second degree-3 mass-lumped finite element method of [5] are the most efficient methods for a dispersion error of around \(0.1\%\) and less.

  • The SIPDG methods using the sharper penalty term bound derived in [16] are significantly more efficient than those using the penalty term of [28], which is based on the trace inequality of [36].

The required number of elements for a given accuracy can be obtained from the approximations given in Tables 2 and 5. We also draw the following conclusions with regard to accuracy:

  • Higher-order methods suffer more from spurious modes for the same dispersion error. This is due to the fact that for higher-order methods, the convergence rate of the dispersion error, 2p, is larger than the convergence rate of the eigenvector, \(p+1\).

  • All methods are significantly affected by a poor mesh quality, although lower-order methods are more sensitive to this than higher-order methods. Flattening the tetrahedra by a factor 10 reduces the accuracy of the methods by 1–2 orders of magnitude, even though the mesh resolution remains the same and even improves in one direction.

  • The SIPDG methods are not really sensitive to high P/S-wave velocity ratios, while the accuracy of the higher-order mass-lumped methods reduces slightly when the P/S-wave velocity ratio is increased. The accuracy of the linear mass-lumped method, however, reduces by an order of magnitude when the P/S-wave velocity ratio is raised from 2 to 10.