1 Introduction

The FDTD method and the finite element method (FEM) are arguably the two most popular numerical methods for solving Maxwell’s equations. Due to the advantage of FEM in dealing with complex geometry problems, there exist many excellent works on FEMs for solving Maxwell’s equations in free space (e.g., [2, 6, 8, 10, 12, 13, 17, 29]) and in complex media (cf. [3, 5, 7, 9, 24, 32, 33, 35, 37] and references therein). A comprehensive review [34] of FDTD and FEMs on Maxwell’s equations in complex media contains more than 300 papers. Here we propose an unconditionally stable leapfrog scheme by combining the advantage of finite element method in dealing with complex geometry problems with the nice unconditional stability for the leapfrog scheme. Our newly proposed scheme not only inherits the simple implementation property of the traditional leapfrog scheme for the 3D Maxwell’s equations, but also is unconditionally stable. Compared to the classical Crank–Nicolson scheme for Maxwell’s equations [22, 25, 26], this scheme is much more efficient in computation and enjoys the same convergence rate.

The rest of the paper is organized as follows. In Sect. 2, we first provide the details on how to construct an unconditionally stable leapfrog scheme for the standard Maxwell’s equations. Then we prove an energy conservation identity for this leapfrog scheme, which immediately yields the unconditional stability. Furthermore, we prove the optimal error estimate for this scheme. In Sect. 3, we extend the similar idea to develop an unconditionally stable leapfrog scheme to solve the more complicated Drude metamaterial Maxwell’s equations. The unconditional stability and optimal error estimate are proved for the proposed scheme. For practical applications, we further extend the same idea to construct a leapfrog scheme for a perfectly matched layer (PML) model developed by Cohen and Monk [11]. In Sect. 5, we present some numerical results to confirm our theoretical analysis and further apply our scheme to simulate some interesting wave propagation phenomena which happen in metamaterials. We conclude the paper in Sect. 6.

2 The Unconditionally Stable Leapfrog Scheme for Maxwell’s Equations

In this section, first we demonstrate how to develop an unconditionally stable leapfrog scheme for the standard Maxwell’s equations, then we present the stability analysis and error estimate for the proposed scheme.

2.1 Construction of the Semi-Discrete Scheme

Consider the time-dependent Maxwell’s equations in a linear, lossy, and non-dispersive medium with electric conductivity \(\sigma \) in domain \(\Omega \):

$$\begin{aligned}&\epsilon _0 \frac{\partial {{\varvec{E}}}}{\partial t}=\nabla \times {{\varvec{H}}} - \sigma {{\varvec{E}}}, \quad \text{ in }~\Omega \times (0,T), \end{aligned}$$
(2.1)
$$\begin{aligned}&\mu _0 \frac{\partial {{\varvec{H}}}}{\partial t}= - \nabla \times {{\varvec{E}}}, \quad \text{ in }~\Omega \times (0,T), \end{aligned}$$
(2.2)

where T is the final simulation time, \(\epsilon _0\) and \(\mu _0\) are the vacuum permittivity and permeability, respectively, and \({{\varvec{E}}}(\mathbf{x} ,t)\) and \({{\varvec{H}}}(\mathbf{x} ,t)\) are the electric and magnetic fields, respectively. Furthermore, the conductivity is assumed to be spatially dependent and bounded above by positive constant \(\sigma _{max}\), i.e., \(\sigma (\varvec{x})\in [0,\sigma _{max}]\). To make the problem complete, we assume that the model (2.1)–(2.2) satisfies the perfect electric conductor (PEC) boundary condition:

$$\begin{aligned} {{\varvec{n}}} \times {{\varvec{E}}} =\mathbf{0}, ~~~~\text{ on }~~\partial \Omega , \end{aligned}$$
(2.3)

where \({{\varvec{n}}}\) is the unit outward normal vector on the boundary \(\partial \Omega \). Here we consider a bounded and simply connected Lipschitz polyhedral domain \(\Omega \subset R^3\).

To develop our unconditionally stable leapfrog scheme, we divide the time interval [0, T] into \(N_t\) uniform subintervals, i.e., we have discrete times \(t_k=k \tau \) for \(k=0, 1, \cdots , N_t\), where the time step size \(\tau =\frac{T}{N_t}\).

First, we consider a two step scheme for (2.1)–(2.2):

Step 1: backward

$$\begin{aligned}&\epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}}= \epsilon _0 {{\varvec{E}}}^{n} +\frac{\tau }{2}\left( \nabla \times {{\varvec{H}}}^{n+\frac{1}{2}} - \sigma {{\varvec{E}}}^{n+\frac{1}{2}}\right) , \end{aligned}$$
(2.4)
$$\begin{aligned}&\mu _0 {{\varvec{H}}}^{n+\frac{1}{2}}= \mu _0 {{\varvec{H}}}^{n} -\frac{\tau }{2} \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}, \end{aligned}$$
(2.5)

Step 2: forward

$$\begin{aligned}&\epsilon _0 {{\varvec{E}}}^{n+1}= \epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}} +\frac{\tau }{2}\left( \nabla \times {{\varvec{H}}}^{n+\frac{1}{2}} - \sigma {{\varvec{E}}}^{n+\frac{1}{2}}\right) , \end{aligned}$$
(2.6)
$$\begin{aligned}&\mu _0 {{\varvec{H}}}^{n+1}= \mu _0 {{\varvec{H}}}^{n+\frac{1}{2}} -\frac{\tau }{2} \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}. \end{aligned}$$
(2.7)

Note that Step 1 is a backward leapfrog scheme, and Step 2 is a forward leapfrog scheme. Now we will develop an unconditionally stable leapfrog scheme for (2.1)–(2.2) by using (2.4)–(2.7).

Substituting \({{\varvec{H}}}^{n+\frac{1}{2}}\) of (2.5) into (2.4), we have

$$\begin{aligned} \epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}}&= \epsilon _0 {{\varvec{E}}}^{n} +\frac{\tau }{2}\left[ \nabla \times ({{\varvec{H}}}^{n} -\frac{\tau }{2} \mu _0^{-1} \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}) -\sigma {{\varvec{E}}}^{n+\frac{1}{2}} \right] \nonumber \\&= \epsilon _0 {{\varvec{E}}}^{n} +\frac{\tau }{2}\left( \nabla \times {{\varvec{H}}}^{n}-\sigma {{\varvec{E}}}^{n+\frac{1}{2}}\right) - \frac{\tau ^2}{4} \nabla \times (\mu _0^{-1} \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}). \end{aligned}$$
(2.8)

Substituting \({{\varvec{H}}}^{n+\frac{1}{2}}\) of (2.7) into (2.6) and reducing all \(n's\) by 1 , we have

$$\begin{aligned} \epsilon _0 {{\varvec{E}}}^{n}&= \epsilon _0 {{\varvec{E}}}^{n-\frac{1}{2}} +\frac{\tau }{2}\left[ \nabla \times ({{\varvec{H}}}^{n} + \frac{\tau }{2} \mu _0^{-1} \nabla \times {{\varvec{E}}}^{n-\frac{1}{2}}) -\sigma {{\varvec{E}}}^{n-\frac{1}{2}} \right] \nonumber \\&= \epsilon _0 {{\varvec{E}}}^{n-\frac{1}{2}} +\frac{\tau }{2}\left( \nabla \times {{\varvec{H}}}^{n}-\sigma {{\varvec{E}}}^{n-\frac{1}{2}}\right) + \frac{\tau ^2}{4} \nabla \times (\mu _0^{-1} \nabla \times {{\varvec{E}}}^{n-\frac{1}{2}}). \end{aligned}$$
(2.9)

Adding (2.8) and (2.9) together, and adding (2.5) and (2.7) together, respectively, we obtain

$$\begin{aligned} \epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}}&= \epsilon _0 {{\varvec{E}}}^{n-\frac{1}{2}} +\tau \left( \nabla \times {{\varvec{H}}}^{n} - \sigma \frac{{{\varvec{E}}}^{n+\frac{1}{2}} + {{\varvec{E}}}^{n-\frac{1}{2}}}{2}\right) \nonumber \\&~~~~~~~~~~~~~~ - \frac{\tau ^2}{4}\nabla \times (\mu _0^{-1} \nabla \times ({{\varvec{E}}}^{n+\frac{1}{2}}-{{\varvec{E}}}^{n-\frac{1}{2}})), \end{aligned}$$
(2.10)
$$\begin{aligned} \mu _0 {{\varvec{H}}}^{n+1}&= \mu _0 {{\varvec{H}}}^{n} -\tau \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}. \end{aligned}$$
(2.11)

Using the average operator and central difference operator in time: \( {\overline{u}}^{n}=\frac{u^{n+\frac{1}{2}}+u^{n-\frac{1}{2}}}{2}\), and \(\delta _{\tau } u^{n}=\frac{u^{n+\frac{1}{2}}-u^{n-\frac{1}{2}}}{\tau }\), we can rewrite (2.10)–(2.11) as follows:

$$\begin{aligned}&\epsilon _0 \delta _{\tau }{{\varvec{E}}}^n + \sigma \overline{\varvec{E}}^n + \frac{\tau ^2}{4 \mu _0}\nabla \times (\nabla \times \delta _{\tau }\varvec{E}^n) =\nabla \times \varvec{H}^{n}, \end{aligned}$$
(2.12)
$$\begin{aligned}&\mu _0 \delta _{\tau }\varvec{H}^{n+\frac{1}{2}} = - \nabla \times \varvec{E}^{n+\frac{1}{2}}. \end{aligned}$$
(2.13)

It is interesting to note that (2.12) is a small perturbation of a discretization of (2.1) at time level n.

2.2 The Fully Discrete Finite Element Scheme

First, let us introduce some common Hilbert spaces to be used in the rest paper [22, 27]:

$$\begin{aligned} H(div, \Omega )= & {} \left\{ \varvec{u} \in (L^2(\Omega ))^3; \nabla \cdot \varvec{u} \in (L^2(\Omega ))^3 \right\} , \\ H(curl; \Omega )= & {} \{\varvec{u} \in (L^2(\Omega ))^3: \nabla \times \varvec{u} \in (L^2(\Omega ))^3 \}, \\ H_0(curl; \Omega )= & {} \{\varvec{u} \in H(curl; \Omega ): \mathbf{n} \times \varvec{u} =0, ~~ on~\partial \Omega \},\\ H^s(curl; \Omega )= & {} \{\varvec{u} \in (H^s(\Omega ))^3: \nabla \times \varvec{u} \in (H^s(\Omega ))^3 \}, \quad \forall ~s\ge 0, \end{aligned}$$

where \(H^s(curl; \Omega )\) is equipped with norm \(\Vert \varvec{u}\Vert _{H^s(curl; \Omega )} = (\Vert \varvec{u}\Vert _s^2 + \Vert \nabla \times \varvec{u}\Vert _s^2)^{\frac{1}{2}}\), where \(\Vert \cdot \Vert _s\) denotes the standard Sobolev space \(H^s\) norm over \(\Omega \). When \(s=0\), we simply denote \(H(curl; \Omega ):=H^0(curl; \Omega )\) and \(\Vert \cdot \Vert _0\) for the \(L^2(\Omega )\) norm.

To design our finite element method, we partition the domain \(\Omega \) by a family of regular cubic (or tetrahedral) elements \(T_h\). We denote \(h_K\) for the diameter of element \(K \in T_h\) and set the mesh size \(h=\max _{K\in T_h}h_K\). Depending on the regularity of the solution, a proper order \(Raviart-Thomas-N\acute{e}d\acute{e}lec\) (RTN) mixed finite element spaces can be chosen [27, 30]. For a cubic mesh, the RTN spaces are: For any \(l \ge 1\),

$$\begin{aligned} \mathbf{V} _h&=\left\{ \varvec{\Psi }_h \in H(div;\Omega ): \varvec{\Psi }_h \big |_K \in Q_{l,l-l,l-l} \times Q_{l-l,l,l-l} \times Q_{l-l,l-l,l}, \forall K \in T_h \right\} , \\ \mathbf{U} _h&=\left\{ \varvec{\Phi }_h \in H(curl;\Omega ): \varvec{\Phi }_h \big |_K \in Q_{l-l,l,l} \times Q_{l,l-l,l} \times Q_{l,l,l-l}, \forall K \in T_h \right\} , \end{aligned}$$

where \(Q_{i,j,k}\) denote the spaces of polynomials whose degrees are less than or equal to i, j and k in variables x, y and z, respectively. The RTN spaces on the tetrahedral mesh can be defined accordingly [27, 30]. To accommodate the PEC boundary condition, we introduce the subspace

$$\begin{aligned} \mathbf{U} ^0_h=\left\{ \varvec{\Phi }_h \in \mathbf{U} _h: {{\varvec{n}}} \times \varvec{\Phi }_h =\mathbf{0}~~~~\text{ on }~~\partial \Omega \right\} . \end{aligned}$$

From (2.12)–(2.13), we can develop the following leapfrog FEM scheme: Given proper initial approximations \({{\varvec{E}}}_h^{\frac{1}{2}}\) , \({{\varvec{H}}}_h^{1}\), for any \(n \in [1, N_t-1]\), find \(\varvec{E}_h^{n+\frac{1}{2}} \in \mathbf{U} ^0_h\) and \(\varvec{H}_h^{n+1} \in \mathbf{V} _h\) such that

$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } {{\varvec{E}}}_h^{n}, \varvec{\Psi }_h \right) + \left( \sigma \overline{{{\varvec{E}}}}_h^{n}, \varvec{\Psi }_h \right) + \frac{\tau ^2}{4\mu _0}\left( \nabla \times \delta _{\tau } {{\varvec{E}}}_h^{n} , \nabla \times \varvec{\Psi }_h \right) \nonumber \\&\quad - \left( {{\varvec{H}}}_h^{n} , \nabla \times \varvec{\Psi }_h \right) = 0, ~~ \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(2.14)
$$\begin{aligned}&\left( \mu _0 \delta _{\tau } {{\varvec{H}}}_h^{n+\frac{1}{2}} , \varvec{\Phi }_h \right) + \left( \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} ,\varvec{\Phi }_h \right) =0 , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h. \end{aligned}$$
(2.15)

Note that the scheme (2.14)–(2.15) can be implemented easily by first solving (2.14) for \(\varvec{E}_h^{n+\frac{1}{2}}\), then solving (2.15) for \(\varvec{H}_h^{n+1}.\) In next subsection, we will prove that this scheme is unconditionally stable and has the same convergence rate \(O(\tau ^2)\) in time as the classical implicit Crank–Nicolson (CN) scheme: Given proper initial approximations \({{\varvec{E}}}_h^{0}\) , \({{\varvec{H}}}_h^{0}\), for any \(n \in [0, N_t-1]\), find \(\varvec{E}_h^{n+1} \in \mathbf{U} ^0_h\) and \(\varvec{H}_h^{n+1} \in \mathbf{V} _h\) such that

$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } {{\varvec{E}}}_h^{n+\frac{1}{2}}, \varvec{\Psi }_h \right) + \left( \sigma \overline{{{\varvec{E}}}}_h^{n+\frac{1}{2}}, \varvec{\Psi }_h \right) - \left( \overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}} , \nabla \times \varvec{\Psi }_h \right) = 0, ~~ \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(2.16)
$$\begin{aligned}&\left( \mu _0 \delta _{\tau } {{\varvec{H}}}_h^{n+\frac{1}{2}} , \varvec{\Phi }_h \right) + \left( \nabla \times \overline{{{\varvec{E}}}}_h^{n+\frac{1}{2}} ,\varvec{\Phi }_h \right) =0 , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h. \end{aligned}$$
(2.17)

Remark 2.1

To clarify the differences between our scheme (2.14)–(2.15) and some other CN schemes [25, 26] and leapfrog schemes [15, 16, 36], we introduce mass matrix \(M_E\), mass matrix \(M_{\sigma }\), stiff matrix \(M_S\), convection matrix \(M_C\), and mass matrix \(M_H\), whose elements are given as following:

$$\begin{aligned} (M_E)_{ij}&=\epsilon _0(\psi _j,\psi _i), ~~(M_{\sigma })_{ij}=(\sigma \psi _j,\psi _i), ~~(M_S)_{ij}=\mu _0^{-1}(\nabla \times \psi _j,\nabla \times \psi _i), \end{aligned}$$
(2.18)
$$\begin{aligned} (M_C)_{ij}&=(\phi _j,\nabla \times \psi _i), ~~ (M_H)_{ij}=\mu _0(\phi _j,\phi _i), \end{aligned}$$
(2.19)

where \(\psi _j\) and \(\phi _j\) are the elementary basis functions of \(\varvec{U}_h\) and \(\varvec{V}_h\).

With those matrices introduced, it is not difficult to see that our scheme (2.14)–(2.15) can be written as:

$$\begin{aligned}&\left( M_E+\frac{\tau }{2}M_{\sigma }+\frac{\tau ^2}{4}M_S\right) {{\varvec{E}}}_h^{n+\frac{1}{2}} = \tau M_C{{\varvec{H}}}_h^{n} + \left( M_E-\frac{\tau }{2}M_{\sigma }+\frac{\tau ^2}{4}M_S\right) {{\varvec{E}}}_h^{n-\frac{1}{2}}, \end{aligned}$$
(2.20)
$$\begin{aligned}&M_H{{\varvec{H}}}_h^{n+1} = M_H{{\varvec{H}}}_h^{n} - \tau M_C^T{{\varvec{E}}}_h^{n+\frac{1}{2}}, \quad \text{ or }~~ {{\varvec{H}}}_h^{n+1} = {{\varvec{H}}}_h^{n} - \tau M_H^{-1}M_C^T{{\varvec{E}}}_h^{n+\frac{1}{2}}, \end{aligned}$$
(2.21)

where \(M_C^T\) denotes the transpose of \(M_C\), and for simplicity we still use \({{\varvec{E}}}_h^{n+\frac{1}{2}}\) and \({{\varvec{H}}}_h^{n+1}\) to represent the unknown variables at each time step.

Similarly, we can rewrite the corresponding CN scheme (2.16)–(2.17) as:

$$\begin{aligned}&\left( M_E+\frac{\tau }{2}M_{\sigma }\right) {{\varvec{E}}}_h^{n+1} - \frac{\tau }{2}M_C{{\varvec{H}}}_h^{n+1} = \left( M_E-\frac{\tau }{2}M_{\sigma }\right) {{\varvec{E}}}_h^{n} + \frac{\tau }{2}M_C{{\varvec{H}}}_h^{n}, \end{aligned}$$
(2.22)
$$\begin{aligned}&M_H{{\varvec{H}}}_h^{n+1} + \frac{\tau }{2}M_C^T{{\varvec{E}}}_h^{n+1} = M_H{{\varvec{H}}}_h^{n} - \frac{\tau }{2}M_C^T{{\varvec{E}}}_h^{n}. \end{aligned}$$
(2.23)

The straight forward way to implement the CN scheme is to invert a big symmetric matrix\(\left[ \begin{array}{ll} M_E+\frac{\tau }{2}M_{\sigma } &{} - \frac{\tau }{2}M_C \\ -\frac{\tau }{2}M_C^T &{} -M_H \end{array} \right] \) at each time step (taking a minus sign of (2.23)), which takes much more memory and computational time than our scheme (2.20) -(2.21). To reduce the computational cost, we can first solve \({{\varvec{H}}}_h^{n+1}\) from (2.23):

$$\begin{aligned} {{\varvec{H}}}_h^{n+1}= & {} {{\varvec{H}}}_h^{n} -\frac{\tau }{2}M_H^{-1}M_C^T{{\varvec{E}}}_h^{n+1} - \frac{\tau }{2}M_H^{-1}M_C^T{{\varvec{E}}}_h^{n}\nonumber \\= & {} {{\varvec{H}}}_h^{n} -\frac{\tau }{2}M_H^{-1}M_C^T({{\varvec{E}}}_h^{n+1} + {{\varvec{E}}}_h^{n}), \end{aligned}$$
(2.24)

then substitute \({{\varvec{H}}}_h^{n+1}\) of (2.24) into (2.22) to obtain:

$$\begin{aligned}&\left( M_E+\frac{\tau }{2}M_{\sigma }+\frac{\tau ^2}{4}M_CM_H^{-1}M_C^T\right) {{\varvec{E}}}_h^{n+1} = \tau M_C{{\varvec{H}}}_h^{n} \nonumber \\&\quad + \left( M_E-\frac{\tau }{2}M_{\sigma }-\frac{\tau ^2}{4}M_CM_H^{-1}M_C^T\right) {{\varvec{E}}}_h^{n}. \end{aligned}$$
(2.25)

Comparing (2.20) with (2.25), we see clearly that they are different in both the signs and coefficient matrices. Hence our scheme (2.14)–(2.15) is not equivalent to the classical CN scheme (2.16)–(2.17).

As for computational cost, implementating the CN scheme by solving that big symmetric matrix of course takes more time and memory than inverting a submatrix as in (2.20). Even the improved CN implementation like (2.25) and (2.24) costs more than (2.21) and (2.20), by noting that (2.20) and (2.25) are almost the same, but (2.24) has one more extra matrix-vector multiplication than (2.21). Of course, we can save the extra matrix-vector multiplication if we do \({{\varvec{E}}}_h^{n+1} + {{\varvec{E}}}_h^{n}\), but this costs one extra memory space for storing \({{\varvec{E}}}_h^{n}\).

Furthermore, our scheme (2.14)–(2.15) is also different from another leapfrog scheme proposed by Verwer [36] and studied by Hochbruck et al. [15, 16]. The leapfrog method (3.7) of [16] (same as (5.13) of [15]) is given as (by dropping the source term \(j_h^n\)):

$$\begin{aligned}&{{\varvec{H}}}_h^{n+1} + \frac{\tau }{2}C_E{{\varvec{E}}}_h^{n+1} = {{\varvec{H}}}_h^{n} - \frac{\tau }{2}C_E{{\varvec{E}}}_h^{n}, \end{aligned}$$
(2.26)
$$\begin{aligned}&-\frac{\tau }{2}C_H{{\varvec{H}}}_h^{n+1} + \left( I-\frac{\tau ^2}{4}C_H^eC_E^e\right) {{\varvec{E}}}_h^{n+1} = \frac{\tau }{2}C_H{{\varvec{H}}}_h^{n} + \left( I-\frac{\tau ^2}{4}C_H^eC_E^e\right) {{\varvec{E}}}_h^{n}, \end{aligned}$$
(2.27)

where \(C_E, C_H, C_E^e, C_H^e\) are some matrices defined in [16]. Left-Multiplying (2.26) by \(\frac{\tau }{2}C_H\) and adding the result to (2.27), we have

$$\begin{aligned} \left( I+\frac{\tau ^2}{4}C_HC_E-\frac{\tau ^2}{4}C_H^eC_E^e\right) {{\varvec{E}}}_h^{n+1} = \tau C_H{{\varvec{H}}}_h^{n} + \left( I-\frac{\tau ^2}{4}C_HC_E-\frac{\tau ^2}{4}C_H^eC_E^e\right) {{\varvec{E}}}_h^{n}. \end{aligned}$$
(2.28)

Comparing (2.20) with (2.28), we see clearly that these two leapfrog schemes have at least different signs of coefficient matrices on the left and right hand sides even if we reduce \(M_E\) to the identity matrix I and assume \(\sigma =0\).

2.3 Stability Analysis and Error Estimate

Denote \(C_v=\frac{1}{\sqrt{\epsilon _0 \mu _0}} \approx 3\cdot 10^8m/s\) for the wave propagation speed in vacuum. First, we prove the following energy identity, which implies the unconditional stability of the scheme (2.14)–(2.15).

Theorem 2.1

For the solution of (2.14)–(2.15) and any \(m\in [1,N_t-1]\), we have

$$\begin{aligned}&\epsilon _0\Vert {{\varvec{E}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2} \nabla \times {{\varvec{E}}}_h^{m+\frac{1}{2}} \Vert _0^2 + 2 \tau \sum _{n=1}^{m}\Vert \sigma ^{1/2}\overline{{{\varvec{E}}}}_h^{n}\Vert _0^2 \nonumber \\&\quad = \epsilon _0\Vert {{\varvec{E}}}_h^{\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times {{\varvec{E}}}_h^{\frac{1}{2}} \Vert _0^2&. \end{aligned}$$
(2.29)

Proof

Let \(\varvec{\Psi }_h= \tau ({{\varvec{E}}}_h^{n+\frac{1}{2}} + {{\varvec{E}}}_h^{n-\frac{1}{2}})\) in (2.14) and let \(\varvec{\Phi }_h=\tau ({{\varvec{H}}}_h^{n+1} + {{\varvec{H}}}_h^{n})\) in (2.15), respectively, we have

$$\begin{aligned}&\epsilon _0(\Vert {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 - \Vert {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2) + 2 \tau \Vert \sigma ^{1/2}\overline{{{\varvec{E}}}}_h^{n}\Vert _0^2 + \frac{\tau ^2}{4\mu _0} (\Vert \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 - \Vert \nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2) \nonumber \\&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - \tau \left( {{\varvec{H}}}_h^{n} , \nabla \times ({{\varvec{E}}}_h^{n+\frac{1}{2}} + {{\varvec{E}}}_h^{n-\frac{1}{2}}) \right) =0, \end{aligned}$$
(2.30)
$$\begin{aligned}&\mu _0(\Vert {{\varvec{H}}}_h^{n+1}\Vert _0^2 - \Vert {{\varvec{H}}}_h^{n}\Vert _0^2) + \tau \left( {{\varvec{H}}}_h^{n+1} + {{\varvec{H}}}_h^{n} , \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} \right) =0. \end{aligned}$$
(2.31)

Adding (2.30) and (2.31) together, and using the identity

$$\begin{aligned}&\tau \left[ -\left( {{\varvec{H}}}_h^{n} , \nabla \times ({{\varvec{E}}}_h^{n+\frac{1}{2}} + {{\varvec{E}}}_h^{n-\frac{1}{2}}) \right) + \left( \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}}, {{\varvec{H}}}_h^{n+1} + {{\varvec{H}}}_h^{n} \right) \right] \nonumber \\&\quad = \tau \left[ \left( \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} , {{\varvec{H}}}_h^{n+1} \right) - \left( \nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}}, {{\varvec{H}}}_h^{n} \right) \right] , \end{aligned}$$
(2.32)

we have

$$\begin{aligned}&\epsilon _0\Vert {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 + \mu _0\Vert {{\varvec{H}}}_h^{n+1}\Vert _0^2 + \tau \left( \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} , {{\varvec{H}}}_h^{n+1} \right) \nonumber \\&\quad + \frac{\tau ^2}{4\mu _0} \Vert \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 + 2 \tau \Vert \sigma ^{1/2}\overline{{{\varvec{E}}}}_h^{n}\Vert _0^2 \nonumber \\&\quad = \epsilon _0 \Vert {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2 + \mu _0\Vert {{\varvec{H}}}_h^{n}\Vert _0^2 + \tau \left( \nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}}, {{\varvec{H}}}_h^{n} \right) + \frac{\tau ^2}{4\mu _0} \Vert \nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2. \end{aligned}$$
(2.33)

Using the notation \(C_v=\frac{1}{\sqrt{\epsilon _0 \mu _0}}\), we can rewrite (2.33) as

$$\begin{aligned}&\epsilon _0\Vert {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{n+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2} \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} \Vert _0^2 + 2 \tau \Vert \sigma ^{1/2}\overline{{{\varvec{E}}}}_h^{n}\Vert _0^2&\nonumber \\&\quad = \epsilon _0\Vert {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{n} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}} \Vert _0^2.&\end{aligned}$$
(2.34)

Summing up (2.34) from \(n=1\) to any \(m\le N_t-1\), we complete the proof. \(\square \)

By the definition of function spaces \(\mathbf{U} _h\) and \(\mathbf{V} _h\), we have \(\nabla \times \varvec{E}_h^{n+\frac{1}{2}} \in \mathbf{V} _h\). Hence, from (2.15), we have

$$\begin{aligned}&\sqrt{\mu _0} ({{\varvec{H}}}_h^{n+1} - {{\varvec{H}}}_h^{n}) =- \tau C_v \sqrt{\epsilon _0} \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}}, \end{aligned}$$

which leads to

$$\begin{aligned}&\sqrt{\mu _0} {{\varvec{H}}}_h^{n+1} + \frac{\tau C_v \sqrt{\epsilon _0}}{2} \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} = \sqrt{\mu _0} {{\varvec{H}}}_h^{n+1} + \sqrt{\mu _0} \frac{\varvec{H}_h^n - \varvec{H}_h^{n+1}}{2} = \sqrt{\mu _0} \overline{\varvec{H}}_h^{n+\frac{1}{2}}. \end{aligned}$$
(2.35)

Substituting (2.35) into (2.34), and summing up the result from \(n=1\) to any \(m\le N_t-1\), we obtain another energy identity.

Corollary 2.1

For the solution of (2.14)–(2.15) and any \(m\in [1,N_t-1]\), we have

$$\begin{aligned} \epsilon _0\Vert {{\varvec{E}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \mu _0 \Vert \overline{\varvec{H}}_h^{m+\frac{1}{2}}\Vert _0^2 + 2 \tau \sum _{n=1}^{m}\Vert \sigma ^{1/2}\overline{{{\varvec{E}}}}_h^{n}\Vert _0^2 = \epsilon _0\Vert {{\varvec{E}}}_h^{\frac{1}{2}}\Vert _0^2 + \mu _0 \Vert \overline{\varvec{H}}_h^{\frac{1}{2}} \Vert _0^2. \end{aligned}$$
(2.36)

To prove the error estimate, we need the following estimates (cf., Lemma 3.16 and Lemma 3.19 of [22]).

Lemma 2.1

For any \(u \in H^2(0,T;L^2(\Omega ))\), denoting \(u(t_{n})\) as \(u^n\), we have

$$\begin{aligned}&\mathrm{(i)}~~\Vert \delta _{\tau } u^{n+\frac{1}{2}}\Vert _0^2 = \Vert \frac{u^{n+1}-u^{n}}{\tau } \Vert _0^2 \le \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} \Vert u_t(t)\Vert _0^2dt, \end{aligned}$$
(2.37)
$$\begin{aligned}&\mathrm{(ii)}~~\Vert {\overline{u}}^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}}u(t)dt \Vert _0^2 \le \frac{\tau ^3}{4} \int _{t_{n}}^{t_{n+1}} \Vert u_{tt}(t)\Vert _0^2dt, \end{aligned}$$
(2.38)
$$\begin{aligned}&\mathrm{(iii)}~~\Vert u^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}}u(t)dt \Vert _0^2 \le \frac{\tau ^3}{4} \int _{t_{n}}^{t_{n+1}} \Vert u_{tt}(t)\Vert _0^2dt. \end{aligned}$$
(2.39)

To make our error analysis easy to follow, we use the script letters to describe the corresponding errors. For example, we define the errors between the exact solutions \((\varvec{E},\varvec{H})\) of (2.1)–(2.2) and the finite element solutions \((\varvec{E}_h^{n+\frac{1}{2}},\varvec{H}_h^{n+1})\) of (2.14)–(2.15):

$$\begin{aligned}&\varvec{\mathcal {E}}^{n+\frac{1}{2}} = {{\varvec{E}}}(t_{n+\frac{1}{2}}) - {{\varvec{E}}}_h^{n+\frac{1}{2}} = {{\varvec{E}}}(t_{n+\frac{1}{2}}) - \Pi _c{{\varvec{E}}}^{n+\frac{1}{2}} + (\Pi _c\varvec{E}^{n+\frac{1}{2}} - \varvec{E}_h^{n+\frac{1}{2}}) \\&\qquad \qquad := {{\varvec{E}}}(t_{n+\frac{1}{2}}) - \Pi _c{{\varvec{E}}}(t_{n+\frac{1}{2}}) + \varvec{\mathcal {E}}_h^{n+\frac{1}{2}},\\&\quad \varvec{\mathcal {H}}^{n+1} = {{\varvec{H}}}(t_{n+1}) - {{\varvec{H}}}_h^{n+1} = {{\varvec{H}}}(t_{n+1}) - P_h{{\varvec{H}}}^{n+1}\nonumber \\&\qquad \qquad + (P_h\varvec{H}^{n+1} - \varvec{H}_h^{n+1}) := {{\varvec{H}}}(t_{n+1}) - P_h{{\varvec{H}}}^{n+1} + \varvec{\mathcal {H}}_h^{n+1}, \end{aligned}$$

where we denote \({{\varvec{E}}}^{n+\frac{1}{2}} = {{\varvec{E}}}(t_{n+\frac{1}{2}})\) and \({{\varvec{H}}}^{n+1} = {{\varvec{H}}}(t_{n+1})\), \(\Pi _c{{\varvec{E}}}\in \varvec{U}_h\) for the Nédélec interpolation (i.e., \(H(curl;K)\)) of \({{\varvec{E}}}\), and \(P_h{{\varvec{H}}} \in \varvec{V}_h\) for the \(L^2(\Omega )\) projection of \(\varvec{H}\), i.e.,

$$\begin{aligned} \left( P_h{{\varvec{H}}} - {{\varvec{H}}}, \varvec{\Psi }_h \right) =0, \quad \forall \varvec{\Psi }_h \in \mathbf{V} _h. \end{aligned}$$
(2.40)

Moreover, we have the following interpolation and projection error estimates:

$$\begin{aligned}&\Vert {{\varvec{E}}} - \Pi _c{{\varvec{E}}} \Vert _0 + \Vert \nabla \times ({{\varvec{E}}} - \Pi _c{{\varvec{E}}}) \Vert _0 \le Ch^l \Vert {{\varvec{E}}}\Vert _{H^l(curl,\Omega )}, \quad \forall ~\varvec{E}\in H^l(curl, \Omega ), l \ge 1, \nonumber \\ \end{aligned}$$
(2.41)
$$\begin{aligned}&\Vert \varvec{H}- P_h\varvec{H}\Vert _0 \le Ch^l \Vert \varvec{H}\Vert _{l}, \qquad \forall \varvec{H}\in (H^l( \Omega ))^3, l \ge 1. \end{aligned}$$
(2.42)

To prove the error estimate, for simplicity we assume that the scheme (2.14)–(2.15) uses the following initial conditions:

$$\begin{aligned} \varvec{E}_h^{\frac{1}{2}}(\varvec{x})=\Pi _c\varvec{E}^{\frac{1}{2}}(\varvec{x})=\Pi _c\varvec{E}(\varvec{x},t_{\frac{1}{2}}), \quad \varvec{H}_h^{1}(\varvec{x})= P_h\varvec{H}^{1}(\varvec{x})=P_h\varvec{H}(\varvec{x},t_1). \end{aligned}$$
(2.43)

Lemma 2.2

For the errors \(\varvec{\mathcal {H}}_h^{m+1}\) and \(\varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\), we have: For any \(m\ge 1\),

$$\begin{aligned}&\Vert \sqrt{\mu _0}\varvec{\mathcal {H}}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\Vert _0^2 \nonumber \\&\quad = \mu _0 \Vert \overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \left( \frac{\tau C_v\sqrt{\epsilon _0}}{2}\right) ^2 \Vert P_h\left( \nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})\right) \Vert _0^2 \nonumber \\&\qquad + \tau (\overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}, \nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})). \end{aligned}$$
(2.44)

Proof

From the error definitions of \(\varvec{\mathcal {H}}_h^{m+1}\) and \(\varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\), we first note that

$$\begin{aligned}&\sqrt{\mu _0}\varvec{\mathcal {H}}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{\mathcal {E}}_h^{m+\frac{1}{2}} \nonumber \\&\quad = \left( \sqrt{\mu _0}P_h\varvec{H}^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \Pi _c\varvec{E}^{m+\frac{1}{2}}\right) \nonumber \\&\qquad - \left( \sqrt{\mu _0}\varvec{H}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{E}_h^{m+\frac{1}{2}}\right) \nonumber \\&\quad = P_h\left( \sqrt{\mu _0}\varvec{H}^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{E}^{m+\frac{1}{2}} \right. \nonumber \\&\left. \qquad + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})\right) - \sqrt{\mu _0}\overline{\varvec{H}}_h^{m+\frac{1}{2}}, \end{aligned}$$
(2.45)

where in the last step we used the identity (2.35), and the identity \(P_h\left( \nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}})\right) =\nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}})\) due to the fact that \(\nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}})\in \varvec{V}_h.\)

Note that we can rewrite (2.11) as

$$\begin{aligned} \sqrt{\mu _0} {{\varvec{H}}}^{m+1} = \sqrt{\mu _0} {{\varvec{H}}}^{m} - \tau C_v\sqrt{\epsilon _0}\nabla \times {{\varvec{E}}}^{m+\frac{1}{2}}. \end{aligned}$$
(2.46)

Taking the projection \(P_h\) of (2.46), we have

$$\begin{aligned} P_h\left( \sqrt{\mu _0}\varvec{H}^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{E}^{m+\frac{1}{2}}\right) =P_h\left( \sqrt{\mu _0}\overline{\varvec{H}}^{m+\frac{1}{2}}\right) . \end{aligned}$$
(2.47)

Substituting (2.47) into (2.45), and using the error definition of \(\varvec{\mathcal {H}}_h^{m+1}\), we obtain

$$\begin{aligned}&\Vert \sqrt{\mu _0}\varvec{\mathcal {H}}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\Vert _0^2 \nonumber \\&\quad = \Vert \sqrt{\mu _0}\overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}} + P_h\left( \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})\right) \Vert _0^2 \nonumber \\&\quad = \mu _0 \Vert \overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \left( \frac{\tau C_v\sqrt{\epsilon _0}}{2}\right) ^2 \Vert P_h\left( \nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})\right) \Vert _0^2 \nonumber \\&\qquad +2(\sqrt{\mu _0}\overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}, \frac{\tau C_v\sqrt{\epsilon _0}}{2}P_h\nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})) \nonumber \\&\quad = \mu _0 \Vert \overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \left( \frac{\tau C_v\sqrt{\epsilon _0}}{2}\right) ^2 \Vert P_h\left( \nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})\right) \Vert _0^2 \nonumber \\&\qquad + \tau (\overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}, \nabla \times (\Pi _c\varvec{E}^{m+\frac{1}{2}}-\varvec{E}^{m+\frac{1}{2}})), \end{aligned}$$
(2.48)

where we used the property of projection operator \(P_h\) in the last step. This concludes our proof. \(\square \)

With the above preparations, we finally can prove the following optimal estimate for the scheme (2.14)–(2.15).

Theorem 2.2

Suppose that the solutions \((\varvec{E},\varvec{H})\) of (2.1)–(2.2) satisfy the following regularity assumptions:

$$\begin{aligned}&{{\varvec{E}}} \in L^{\infty }(0,T; (H^l(curl, \Omega ))^3), ~~ \partial _t\varvec{E}, ~\nabla \times \partial _t\varvec{E}\in L^{2}(0,T; (H^l(curl, \Omega ))^3),\\&\quad \nabla \times \partial _{tt}\varvec{H}, ~~\partial _{tt}\varvec{E}, ~~\nabla \times \partial _{tt}\varvec{E}, ~~\nabla \times \nabla \times \partial _t\varvec{E}\in L^{2}(0,T;(L^{2}(\Omega )^3)), \end{aligned}$$

then the numerical solutions \((\varvec{E}_h^{m+\frac{1}{2}},\varvec{H}_h^{m+1})\) of the scheme (2.14)–(2.15) have the optimal error estimate:

$$\begin{aligned} \max _{1 \le m \le N_t-1} \left\{ \epsilon _0\Vert {{\varvec{E}}}^{m+\frac{1}{2}} - {{\varvec{E}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \mu _0 \Vert (\overline{\varvec{H}}^{m+\frac{1}{2}} - \overline{\varvec{H}}_h^{m+\frac{1}{2}}) \Vert _0^2 \right\} ^{\frac{1}{2}} \le CT(\tau ^2 + h^l), \end{aligned}$$
(2.49)

where \(l \ge 1\) is the order of basis function of space \(\mathbf{U} ^0_h\) and \(\mathbf{V} _h\), and the positive constant \(C = C(\epsilon _0, \mu _0, {{\varvec{E}}}, {{\varvec{H}}})\) is independent of \(\tau \), h and T.

Proof

Integrating (2.1) form \(t_{n-\frac{1}{2}}\) to \(t_{n+\frac{1}{2}}\), and integrating (2.2) form \(t_{n}\) to \(t_{n+1}\), then multiplying the respective results by \(\frac{1}{\tau }\varvec{\Phi }_h \in \mathbf{U} ^0_h\) and \(\frac{1}{\tau }\varvec{\Psi }_h \in \mathbf{V} _h\), and integrating over \(\Omega \), we have

$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } {{\varvec{E}}}^{n}, \varvec{\Psi }_h \right) + \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{E}}}(s)ds , \sigma \varvec{\Psi }_h \right) \nonumber \\&\quad - \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{H}}}(s)ds , \nabla \times \varvec{\Psi }_h \right) = 0 , ~~ \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(2.50)
$$\begin{aligned}&\left( \mu _0 \delta _{\tau } {{\varvec{H}}}^{n+\frac{1}{2}} , \varvec{\Phi }_h \right) + \left( \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} \nabla \times {{\varvec{E}}}(s)ds ,\varvec{\Phi }_h \right) =0, \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h . \end{aligned}$$
(2.51)

Subtracting (2.50)–(2.51) from (2.14)–(2.15), respectively, we obtain

$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } \varvec{\mathcal {E}}_h^{n}, \varvec{\Psi }_h \right) + \left( \overline{\varvec{\mathcal {E}}}_h^{n} , \sigma \varvec{\Psi }_h \right) - \left( \varvec{\mathcal {H}}^n_h , \nabla \times \varvec{\Psi }_h \right) + \frac{\tau ^2}{4\mu _0}\left( \delta _{\tau } (\nabla \times \varvec{\mathcal {E}}_h^{n}) , \nabla \times \varvec{\Psi }_h \right) \nonumber \\&\quad = \left( \epsilon _0 \delta _{\tau } (\Pi _c{{\varvec{E}}}^{n} - {{\varvec{E}}}^{n}), \varvec{\Psi }_h \right) + \left( \Pi _c \overline{{{\varvec{E}}}}^{n} - \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{E}}}(s)ds , \sigma \varvec{\Psi }_h \right) \nonumber \\&\qquad +\left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{H}}}(s)ds - P_h{{\varvec{H}}}^{n} , \nabla \times \varvec{\Psi }_h \right) \nonumber \\&\qquad + \frac{\tau ^2}{4\mu _0} \left( \delta _{\tau } (\nabla \times \Pi _c \overline{{{\varvec{E}}}}^{n}) , \nabla \times \varvec{\Psi }_h \right) , \qquad \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(2.52)

and

$$\begin{aligned}&\left( \mu _0 \delta _{\tau } \varvec{\mathcal {H}}_h^{n+\frac{1}{2}} , \varvec{\Phi }_h \right) + \left( \nabla \times \varvec{\mathcal {E}}_h^{n+\frac{1}{2}},\varvec{\Phi }_h \right) \nonumber \\&\quad = \left( \mu _0 \delta _{\tau } (P_h{{\varvec{H}}}^{n+\frac{1}{2}} - {{\varvec{H}}}^{n+\frac{1}{2}}) , \varvec{\Phi }_h \right) \nonumber \\&\qquad + \left( \nabla \times (\Pi _c{{\varvec{E}}}^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} {{\varvec{E}}}(s)ds),\varvec{\Phi }_h \right) , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h. \end{aligned}$$
(2.53)

Choosing \(\varvec{\Psi }_h= \tau (\varvec{\mathcal {E}}_h^{n+\frac{1}{2}} + \varvec{\mathcal {E}}_h^{n-\frac{1}{2}})=2\tau \overline{\varvec{\mathcal {E}}_h^n}\) in (2.52) and \(\varvec{\Phi }_h=\tau (\varvec{\mathcal {H}}_h^{n+1} + \varvec{\mathcal {H}}_h^{n})=2\tau \overline{\varvec{\mathcal {E}}}_h^{n+\frac{1}{2}} \) in (2.53), adding the results together, and using the projection property of \(P_h\), we obtain

$$\begin{aligned}&\left( \epsilon _0 \Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}} \Vert _0^2 + \Vert \sqrt{\mu _0}\varvec{\mathcal {H}}_h^{n+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2} \nabla \times \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 \right) + 2 \tau \Vert \sigma ^{1/2}\overline{\mathcal {E}}_h^{n}\Vert _0^2 \nonumber \\&\quad - \left( \epsilon _0 \Vert \varvec{\mathcal {E}}_h^{n-\frac{1}{2}} \Vert _0^2 + \Vert \sqrt{\mu _0}\varvec{\mathcal {H}}_h^{n} + \frac{\tau C_v\sqrt{\epsilon _0}}{2} \nabla \times \varvec{\mathcal {E}}_h^{n-\frac{1}{2}}\Vert _0^2 \right) \nonumber \\&\quad = 2 \tau \left( \epsilon _0 \delta _{\tau } (\Pi _c{{\varvec{E}}}^{n} - {{\varvec{E}}}^{n}), \overline{\varvec{\mathcal {E}}}_h^{n} \right) + 2 \tau \left( \Pi _c \overline{{{\varvec{E}}}}^{n} - \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{E}}}(s)ds , \sigma \overline{\varvec{\mathcal {E}}}_h^{n} \right) \nonumber \\&\qquad +2 \tau \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{H}}}(s)ds - {{\varvec{H}}}^{n} , \nabla \times \overline{\varvec{\mathcal {E}}}_h^{n} \right) + 2 \tau \left( \frac{\tau ^2}{4\mu _0} \delta _{\tau } (\nabla \times \Pi _c {{\varvec{E}}}^{n}) , \nabla \times \overline{\varvec{\mathcal {E}}}_h^{n} \right) \nonumber \\&\qquad + 2 \tau \left( \nabla \times (\Pi _c{{\varvec{E}}}^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} {{\varvec{E}}}(s)ds), \overline{\varvec{\mathcal {H}}}_h^{n+\frac{1}{2}} \right) = \sum _{k=1}^{5} Err_k. \end{aligned}$$
(2.54)

Using the arithmetic and geometric means (AGM) inequality:

$$\begin{aligned} (a,b) \le \delta \Vert a\Vert _0^2 + \frac{1}{4 \delta }\Vert b\Vert _0^2, ~~\forall \delta > 0, \end{aligned}$$
(2.55)

Lemma 2.1, and the interpolation estimate (2.41), we have

$$\begin{aligned} Err_1&\le \tau \epsilon _0 \left( 2 \delta _1 \Vert \overline{\varvec{\mathcal {E}}}_h^{n}\Vert _0^2 + \frac{1}{2 \delta _1}\Vert \delta _{\tau } (\Pi _c{{\varvec{E}}}^{n} - {{\varvec{E}}}^{n})\Vert _0^2 \right)&\nonumber \\&\le \tau \epsilon _0 \left[ \delta _1 \left( \Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \varvec{\mathcal {E}}_h^{n-\frac{1}{2}}\Vert _0^2 \right) + \frac{1}{2 \delta _1 \tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} \Vert \partial _t (\Pi _c{{\varvec{E}}}^{n} - {{\varvec{E}}}^{n})\Vert _0^2ds \right] \nonumber \\&\le \tau \epsilon _0 \left[ \delta _1 \left( \Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \varvec{\mathcal {E}}_h^{n-\frac{1}{2}}\Vert _0^2 \right) + \frac{1}{2 \delta _1 \tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} C h^{2l}\Vert \partial _t\varvec{E}\Vert _{l;curl}^2ds \right] . \end{aligned}$$
(2.56)

Similarly, under the assumption that \(\sigma \le \sigma _{max}\), we can obtain

$$\begin{aligned} Err_2&= 2 \tau \left( \Pi _c \overline{{{\varvec{E}}}}^{n} - \overline{{{\varvec{E}}}}^{n} + \overline{{{\varvec{E}}}}^{n} - \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{E}}}(s)ds , \sigma \overline{\varvec{\mathcal {E}}}_h^{n} \right)&\nonumber \\&\le \tau \sigma _{max} \left[ 2 \delta _2 \Vert \overline{\varvec{\mathcal {E}}}_h^{n}\Vert _0^2 + \frac{1}{2 \delta _2}\left( \Vert \Pi _c \overline{{{\varvec{E}}}}^{n} - \overline{{{\varvec{E}}}}^{n}\Vert _0^2 + \Vert \overline{{{\varvec{E}}}}^{n} - \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{E}}}(s)ds\Vert _0^2 \right) \right] \nonumber \\&\le \tau \sigma _{max} \left[ \delta _2 \left( \Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \varvec{\mathcal {E}}_h^{n-\frac{1}{2}}\Vert _0^2 \right) \right. \nonumber \\&\quad \left. + \frac{1}{2 \delta _2} \left( C h^{2l}\Vert {{\varvec{E}}}\Vert _{L^{\infty }(0,T;H^l(curl,\Omega ))}^2 + \frac{\tau ^3}{4} \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}\Vert \partial _{tt}\varvec{E}\Vert _0^2ds\right) \right] . \end{aligned}$$
(2.57)

Using integration by parts, the PEC boundary condition (2.3) and inequality (2.55), we have

$$\begin{aligned} Err_3&\le \tau \left[ 2 \delta _3 \Vert \overline{\varvec{\mathcal {E}}}_h^{n}\Vert _0^2 + \frac{1}{2 \delta _3} \Vert \nabla \times \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{H}}}(s)ds - {{\varvec{H}}}^{n}\right) \Vert _0^2 \right]&\nonumber \\&\le \tau \left[ \delta _3 \left( \Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \varvec{\mathcal {E}}_h^{n-\frac{1}{2}}\Vert _0^2\right) + \frac{\tau ^3}{8 \delta _3}\int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}\Vert \nabla \times \partial _{tt}\varvec{H}\Vert _0^2ds \right] . \end{aligned}$$
(2.58)

Again, using integration by parts, Lemma 2.1 and inequality (2.55), we have

$$\begin{aligned} Err_4&= 2 \tau \left( \frac{\tau ^2}{4\mu _0} \delta _{\tau } (\nabla \times \nabla \times (\Pi _c {{\varvec{E}}}^{n} - {{\varvec{E}}}^{n} + {{\varvec{E}}}^{n})) , \overline{\varvec{\mathcal {E}}}_h^{n} \right) \nonumber \\&\le \tau \left[ 2 \delta _4 \Vert \overline{\varvec{\mathcal {E}}}_h^{n}\Vert _0^2 + \frac{1}{2 \delta _4 \tau } \left( \frac{\tau ^2}{4\mu _0}\right) ^2 \right. \nonumber \\&\quad \left. \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} \left( \Vert \nabla \times \nabla \times \partial _t(\Pi _c {{\varvec{E}}} - {{\varvec{E}}})\Vert _0^2 + \Vert \nabla \times \nabla \times \partial _t{{\varvec{E}}}\Vert _0^2\right) ds \right] \nonumber \\&\le \tau \left[ \delta _4 \left( \Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \varvec{\mathcal {E}}_h^{n-\frac{1}{2}}\Vert _0^2\right) + \frac{\tau ^3}{2 \delta _4 (4\mu _0)^2}\right. \nonumber \\&\quad \left. \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} C h^{2l} \left( \Vert \nabla \times \partial _t\varvec{E}\Vert _{l,curl}^2 + \Vert \nabla \times \nabla \times \partial _t\varvec{E}\Vert _0^2\right) ds \right] . \end{aligned}$$
(2.59)

Finally, by the inequality (2.55), we have

$$\begin{aligned} Err_5&= 2 \tau \left( \nabla \times (\Pi _c{{\varvec{E}}}^{n+\frac{1}{2}} - {{\varvec{E}}}^{n+\frac{1}{2}}) + \nabla \times ({{\varvec{E}}}^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} {{\varvec{E}}}(s)ds), \overline{\varvec{\mathcal {H}}}_h^{n+\frac{1}{2}} \right) \nonumber \\&\le \tau \left[ \delta _5 \Vert \overline{\varvec{\mathcal {H}}}_h^{n+\frac{1}{2}}\Vert _0^2 + \frac{1}{\delta _5} \left( \Vert \nabla \times (\Pi _c{{\varvec{E}}}^{n+\frac{1}{2}} - {{\varvec{E}}}^{n+\frac{1}{2}})\Vert _0^2 \right. \right. \nonumber \\&\quad \left. \left. + \Vert \nabla \times ({{\varvec{E}}}^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} {{\varvec{E}}}(s)ds\Vert _0^2\right) \right] \nonumber \\&\le \tau \left[ \delta _5 \Vert \overline{\varvec{\mathcal {H}}}_h^{n+\frac{1}{2}}\Vert _0^2 + \frac{1}{\delta _5} \left( C h^{2l}\Vert {{\varvec{E}}}\Vert _{L^{\infty }(0,T;H^l(curl,\Omega ))}^2 + \frac{\tau ^3}{4} \int _{t_{n}}^{t_{n+1}} \Vert \nabla \times \partial _{tt}\varvec{E}\Vert _0^2 ds\right) \right] . \end{aligned}$$
(2.60)

Substituting the estimates of \(Err_k\) into (2.54), summing up the result from \(n=1\) to any \(m\in [1,N_t]\), then choosing

$$\begin{aligned} \delta _2=\frac{\delta _1}{\sigma _{max}}, ~~\delta _3=\delta _4=\epsilon _0\delta _1, ~~\delta _5=\mu _0\delta _1, \end{aligned}$$

and using the initial assumptions (2.43) and the facts \(m\tau \le T\) , we can obtain

$$\begin{aligned} \epsilon _0\Vert \varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\Vert _0^2&+ \Vert \sqrt{\mu _0}\varvec{\mathcal {H}}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\Vert _0^2 \nonumber \\&\le 8\delta _1 \tau \sum _{n=1}^{m} \left( \epsilon _0\Vert \varvec{\mathcal {E}}_h^{n+\frac{1}{2}}\Vert _0^2 + \mu _0\Vert \overline{\varvec{\mathcal {H}}}_h^{n+\frac{1}{2}}\Vert _0^2\right) + \frac{C}{\delta _1} \left( Th^{2l} + \tau ^4 \right) . \end{aligned}$$
(2.61)

Using Lemma 2.2 in (2.61), inequality (2.55) and interpolation estimate (2.41), we have

(2.62)

where in the last step we first took the maximum over all \(n\in [1,N_t-1]\) for the right hand side (RHS) term, and used the fact that \(m\tau \le T\).

Now taking the maximum over m for the left hand side (LHS) terms, then choosing \(\delta _1\) small enough (e.g., \(\delta _1\le \frac{1}{18T}\)) so that the RHS terms can be bounded by the corresponding LHS terms, we obtain

$$\begin{aligned} \max _{1\le m\le N_t-1} \left( \epsilon _0\Vert \varvec{\mathcal {E}}_h^{m+\frac{1}{2}}\Vert _0^2 + \mu _0\Vert \overline{\varvec{\mathcal {H}}}_h^{m+\frac{1}{2}}\Vert _0^2 \right) \le CT^2\left( h^{2l} + \tau ^4 \right) . \end{aligned}$$
(2.63)

Finally, using the triangle inequality, the estimates (2.41) and (2.42), we completes the proof. \(\square \)

3 Extension to the Drude Metamaterial Model

In this section, we show how to use the similar idea as last section to develop an unconditionally leapfrog scheme for solving the Drude metamaterial model.

3.1 Construction of the Leapfrog Scheme

We consider the Drude metamaterial model given as follows [22]:

$$\begin{aligned}&\epsilon _0 \frac{\partial {{\varvec{E}}}}{\partial t}=\nabla \times {{\varvec{H}}} - {{\varvec{J}}}, \end{aligned}$$
(3.1)
$$\begin{aligned}&\mu _0 \frac{\partial {{\varvec{H}}}}{\partial t}=-\nabla \times {{\varvec{E}}} - {{\varvec{K}}}, \end{aligned}$$
(3.2)
$$\begin{aligned}&\frac{1}{\epsilon _0 \omega ^2_{pe}}\frac{\partial {{\varvec{J}}}}{\partial t} + \frac{\Gamma _e}{\epsilon _0 \omega ^2_{pe}} {{\varvec{J}}} = {{\varvec{E}}}, \end{aligned}$$
(3.3)
$$\begin{aligned}&\frac{1}{\mu _0 \omega ^2_{pm}}\frac{\partial {{\varvec{K}}}}{\partial t} + \frac{\Gamma _m}{\mu _0 \omega ^2_{pm}} {{\varvec{K}}} = {{\varvec{H}}}, \end{aligned}$$
(3.4)

where \(\omega _{pe}\) and \(\omega _{pm}\) are the electric and magnetic plasma frequencies respectively, \(\Gamma _e\) and \(\Gamma _m\) are the electric and magnetic damping frequencies respectively, \(\varvec{E}(\varvec{x},t)\) and \(\varvec{H}(\varvec{x},t)\) are the electric and magnetic fields respectively, and \(\varvec{J}(\varvec{x},t)\) and \(\varvec{K}(\varvec{x},t)\) are the induced electric and magnetic currents respectively. To make the problem well-posed, we simply assume that the model (3.1)–(3.4) satisfies the PEC boundary condition (2.3) and the initial conditions:

$$\begin{aligned} \varvec{E}(\mathbf{x},0) = \varvec{E}_0(\mathbf{x}), \quad \varvec{H}(\mathbf{x},0)=\varvec{H}_0(\mathbf{x}), \quad \varvec{J}(\mathbf{x},0)=\varvec{J}_0(\mathbf{x}), \quad \varvec{K}(\mathbf{x},0)=\varvec{K}_0(\mathbf{x}), \end{aligned}$$
(3.5)

where \(\varvec{E}_0, \varvec{H}_0, \varvec{J}_0\) and \(\varvec{K}_0\) are some given functions.

To derive our unconditionally stable leapfrog scheme, we first consider the following two step scheme for (3.1)–(3.4):

Step 1:

$$\begin{aligned}&\epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}}= \epsilon _0 {{\varvec{E}}}^{n} +\frac{\tau }{2}\left( \nabla \times {{\varvec{H}}}^{n+\frac{1}{2}} - {{\varvec{J}}}^{n+\frac{1}{2}}\right) , \end{aligned}$$
(3.6)
$$\begin{aligned}&\mu _0 {{\varvec{H}}}^{n+\frac{1}{2}}= \mu _0 {{\varvec{H}}}^{n} +\frac{\tau }{2}\left( -\nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}-{{\varvec{K}}}^{n}\right) , \end{aligned}$$
(3.7)
$$\begin{aligned}&{{\varvec{J}}}^{n+\frac{1}{2}}={{\varvec{J}}}^{n} +\frac{\tau }{2}\left( -\Gamma _e {{\varvec{J}}}^{n+\frac{1}{2}} + \epsilon _0 \omega ^2_{pe}{{\varvec{E}}}^{n+\frac{1}{2}}\right) , \end{aligned}$$
(3.8)
$$\begin{aligned}&{{\varvec{K}}}^{n+\frac{1}{2}}={{\varvec{K}}}^{n} +\frac{\tau }{2}\left( -\Gamma _m {{\varvec{K}}}^{n} + \mu _0 \omega ^2_{pm}{{\varvec{H}}}^{n}\right) , \end{aligned}$$
(3.9)

Step 2:

$$\begin{aligned}&\epsilon _0 {{\varvec{E}}}^{n+1}= \epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}} +\frac{\tau }{2}\left( \nabla \times {{\varvec{H}}}^{n+\frac{1}{2}} - {{\varvec{J}}}^{n+\frac{1}{2}}\right) , \end{aligned}$$
(3.10)
$$\begin{aligned}&\mu _0 {{\varvec{H}}}^{n+1}= \mu _0 {{\varvec{H}}}^{n+\frac{1}{2}} +\frac{\tau }{2}\left( -\nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}-{{\varvec{K}}}^{n+1}\right) , \end{aligned}$$
(3.11)
$$\begin{aligned}&{{\varvec{J}}}^{n+1}={{\varvec{J}}}^{n+\frac{1}{2}} +\frac{\tau }{2}\left( -\Gamma _e {{\varvec{J}}}^{n+\frac{1}{2}} + \epsilon _0 \omega ^2_{pe}{{\varvec{E}}}^{n+\frac{1}{2}}\right) , \end{aligned}$$
(3.12)
$$\begin{aligned}&{{\varvec{K}}}^{n+1}={{\varvec{K}}}^{n+\frac{1}{2}} +\frac{\tau }{2}\left( -\Gamma _m {{\varvec{K}}}^{n+1} + \mu _0 \omega ^2_{pm}{{\varvec{H}}}^{n+1}\right) . \end{aligned}$$
(3.13)

Reducing all \(n's\) of (3.10) by 1 and adding the result with (3.6), we have

$$\begin{aligned} \epsilon _0 {{\varvec{E}}}^{n+\frac{1}{2}} = \epsilon _0 {{\varvec{E}}}^{n-\frac{1}{2}} + \tau \nabla \times \frac{{{\varvec{H}}}^{n+\frac{1}{2}} + {{\varvec{H}}}^{n-\frac{1}{2}}}{2} - \tau \frac{{{\varvec{J}}}^{n+\frac{1}{2}} + {{\varvec{J}}}^{n-\frac{1}{2}}}{2}. \end{aligned}$$
(3.14)

Reducing (3.11)’s n by 1, then subtracting the result from (3.7), we have

$$\begin{aligned} \mu _0(\varvec{H}^{n+\frac{1}{2}} + \varvec{H}^{n-\frac{1}{2}}) =2\mu _0\varvec{H}^n - \frac{\tau ^2}{2}\nabla \times \delta _{\tau }\varvec{E}^{n}. \end{aligned}$$
(3.15)

Then substituting (3.15) into (3.14), we obtain

$$\begin{aligned} \epsilon _0 \delta _{\tau }\varvec{E}^{n} = \nabla \times {{\varvec{H}}}^{n} - \overline{\varvec{J}}^{n} - \frac{\tau ^2}{4\mu _0}\nabla \times \nabla \times \delta _{\tau }\varvec{E}^{n}. \end{aligned}$$
(3.16)

Adding (3.7) and (3.11) together, we have

$$\begin{aligned} \mu _0 \delta _{\tau }\varvec{H}^{n+\frac{1}{2}} = - \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}} - \overline{\varvec{K}}^{n+\frac{1}{2}}. \end{aligned}$$
(3.17)

Reducing all \(n's\) of (3.12) by 1 and adding the result with (3.8), we obtain

$$\begin{aligned} \delta _{\tau }\varvec{J}^{n}= - \Gamma _e \overline{\varvec{J}}^{n} + \epsilon _0 \omega ^2_{pe}\overline{\varvec{E}}^{n}. \end{aligned}$$
(3.18)

Finally, adding (3.9) and (3.13) together, we have

$$\begin{aligned} \delta _{\tau }\varvec{K}^{n+\frac{1}{2}}= - \Gamma _m \overline{\varvec{K}}^{n+\frac{1}{2}} + \mu _0 \omega ^2_{pm}\overline{\varvec{H}}^{n+\frac{1}{2}}. \end{aligned}$$
(3.19)

Based on (3.16)–(3.19), we propose the following leapfrog scheme for (3.1)–(3.4): Given proper initial approximations \({{\varvec{E}}}_h^{\frac{1}{2}}\), \({{\varvec{J}}}_h^{\frac{1}{2}}\), \({{\varvec{H}}}_h^{1}\), \({{\varvec{K}}}_h^{1}\), for any \(n \ge 1\), find \({{\varvec{E}}}_h^{n+\frac{1}{2}}\), \({{\varvec{J}}}_h^{n+\frac{1}{2}}\) \(\in \mathbf{U} ^0_h\), \({{\varvec{H}}}_h^{n+1}\), \({{\varvec{K}}}_h^{n+1}\) \(\in \mathbf{V} _h\) such that

$$\begin{aligned}&\epsilon _0\left( \delta _{\tau } {{\varvec{E}}}_h^{n}, \varvec{\Psi }_h \right) = \left( {{\varvec{H}}}_h^{n} , \nabla \times \varvec{\Psi }_h \right) -\left( \overline{{{\varvec{J}}}}_h^{n} , \varvec{\Psi }_h \right) \nonumber \\&\qquad \qquad \qquad \qquad - \frac{\tau ^2}{4\mu _0}\left( \nabla \times \delta _{\tau } {{\varvec{E}}}_h^{n} , \nabla \times \varvec{\Psi }_h \right) , \qquad \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(3.20)
$$\begin{aligned}&\mu _0\left( \delta _{\tau } {{\varvec{H}}}_h^{n+\frac{1}{2}}, \varvec{\Phi }_h \right) = -\left( \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} ,\varvec{\Phi }_h \right) - \left( \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}} , \varvec{\Phi }_h \right) , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h, \end{aligned}$$
(3.21)
$$\begin{aligned}&\frac{1}{\epsilon _0 \omega ^2_{pe}} \left( \delta _{\tau } {{\varvec{J}}}_h^{n} , \widetilde{\varvec{\Psi }}_h \right) + \frac{\Gamma _e}{\epsilon _0 \omega ^2_{pe}} \left( \overline{{{\varvec{J}}}}_h^{n}, \widetilde{\varvec{\Psi }}_h \right) = \left( \overline{{{\varvec{E}}}}_h^{n}, \widetilde{\varvec{\Psi }}_h \right) , \qquad \forall \widetilde{\varvec{\Psi }}_h \in \varvec{U}^0_h, \end{aligned}$$
(3.22)
$$\begin{aligned}&\frac{1}{\mu _0 \omega ^2_{pm}} \left( \delta _{\tau } {{\varvec{K}}}_h^{n+\frac{1}{2}} , \widetilde{\varvec{\Phi }}_h \right) + \frac{\Gamma _m}{\mu _0 \omega ^2_{pm}} \left( \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}}, \widetilde{\varvec{\Phi }}_h \right) = \left( \overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}}, \widetilde{\varvec{\Phi }}_h \right) , \qquad \forall \widetilde{\varvec{\Phi }}_h \in \varvec{V}_h. \end{aligned}$$
(3.23)

The scheme (3.20)–(3.23) can be implemented as follows:

Step 1: Regrouping (3.22), we obtain

$$\begin{aligned} {{\varvec{J}}}_h^{n+\frac{1}{2}} = \frac{2 - \tau \Gamma _e}{2 + \tau \Gamma _e} {{\varvec{J}}}_h^{n-\frac{1}{2}} + \frac{\tau \epsilon _0 \omega ^2_{pe}}{2 + \tau \Gamma _e} ({{\varvec{E}}}_h^{n+\frac{1}{2}}+{{\varvec{E}}}_h^{n-\frac{1}{2}}). \end{aligned}$$
(3.24)

Then substituting (3.24) into (3.20), and we can solve the resulting equation for \({{\varvec{E}}}_h^{n+\frac{1}{2}}\).

Step 2: Update \({{\varvec{J}}}_h^{n+\frac{1}{2}}\) by using (3.24).

Step 3: Rewritting (3.23), we have

$$\begin{aligned} {{\varvec{K}}}_h^{n+1} = \frac{2 - \tau \Gamma _m}{2 + \tau \Gamma _m} {{\varvec{K}}}_h^{n} + \frac{\tau \mu _0 \omega ^2_{pm}}{2 + \tau \Gamma _m} ({{\varvec{H}}}_h^{n+1}+{{\varvec{H}}}_h^{n}). \end{aligned}$$
(3.25)

Substituting (3.25) into (3.21), and we can solve the resulting equation for \({{\varvec{H}}}_h^{n+1}\).

Step 4: Finally, update \({{\varvec{K}}}_h^{n+1}\) by using (3.25).

3.2 The Stability Analysis and Error Estimate

Below we will establish the stability analysis and error estimate analysis.

Theorem 3.1

For the solution \((\varvec{E}_h^{n+\frac{1}{2}}, \varvec{H}_h^{n+1},\varvec{J}_h^{n+\frac{1}{2}},\varvec{K}_h^{n+1})\) of (3.1)–(3.4), we have: For any \(m\in [1,N_t-1]\),

$$\begin{aligned}&\epsilon _0\Vert {{\varvec{E}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{m+1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2} \nabla \times {{\varvec{E}}}_h^{m+\frac{1}{2}} \Vert _0^2\nonumber \\&\qquad \qquad + \frac{1}{\epsilon _0 \omega ^2_{pe}} \Vert {{\varvec{J}}}_h^{m+\frac{1}{2}}\Vert _0^2 + \frac{1}{\mu _0 \omega ^2_{pm}} \Vert {{\varvec{K}}}_h^{m+1}\Vert _0^2 \nonumber \\&\qquad \qquad + \frac{2 \tau \Gamma _e}{\epsilon _0 \omega ^2_{pe}} \sum _{n=1}^{m}\Vert \overline{{{\varvec{J}}}}_h^{n}\Vert _0^2 + \frac{2 \tau \Gamma _m}{\mu _0 \omega ^2_{pm}} \sum _{n=1}^{m}\Vert \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}}\Vert _0^2 \nonumber \\&\quad = \epsilon _0\Vert {{\varvec{E}}}_h^{\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{1} + \frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times {{\varvec{E}}}_h^{\frac{1}{2}} \Vert _0^2\nonumber \\&\qquad + \frac{1}{\epsilon _0 \omega ^2_{pe}} \Vert {{\varvec{J}}}_h^{\frac{1}{2}}\Vert _0^2 + \frac{1}{\mu _0 \omega ^2_{pm}} \Vert {{\varvec{K}}}_h^{1}\Vert _0^2. \end{aligned}$$
(3.26)

Proof

Let \(\varvec{\Psi }_h= \tau ({{\varvec{E}}}_h^{n+\frac{1}{2}} + {{\varvec{E}}}_h^{n-\frac{1}{2}})\) in (3.20), \(\varvec{\Phi }_h=\tau ({{\varvec{H}}}_h^{n+1} + {{\varvec{H}}}_h^{n})\) in (3.21), \(\widetilde{\varvec{\Psi }}_h = \tau ({{\varvec{J}}}_h^{n+\frac{1}{2}} + {{\varvec{J}}}_h^{n-\frac{1}{2}})\) in (3.22), \(\widetilde{\varvec{\Phi }}_h=\tau ({{\varvec{K}}}_h^{n+1} + {{\varvec{K}}}_h^{n})\) in (3.23), respectively, we have

$$\begin{aligned}&\epsilon _0(\Vert {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 - \Vert {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2) + \frac{\tau ^2}{4\mu _0} (\Vert \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 - \Vert \nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2) \nonumber \\&\quad - \tau \left( {{\varvec{H}}}_h^{n} , \nabla \times ({{\varvec{E}}}_h^{n+\frac{1}{2}} + {{\varvec{E}}}_h^{n-\frac{1}{2}}) \right) + 2 \tau \left( \overline{{{\varvec{J}}}}_h^{n} ,\overline{{{\varvec{E}}}}_h^{n}\right) =0, \end{aligned}$$
(3.27)
$$\begin{aligned}&\mu _0(\Vert {{\varvec{H}}}_h^{n+1}\Vert _0^2 - \Vert {{\varvec{H}}}_h^{n}\Vert _0^2) + \tau \left( {{\varvec{H}}}_h^{n+1} + {{\varvec{H}}}_h^{n} , \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} \right) + 2 \tau \left( \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}} ,\overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}}\right) =0, \end{aligned}$$
(3.28)
$$\begin{aligned}&\frac{1}{\epsilon _0 \omega ^2_{pe}}( \Vert {{\varvec{J}}}_h^{n+\frac{1}{2}}\Vert _0^2 - \Vert {{\varvec{J}}}_h^{n-\frac{1}{2}}\Vert _0^2) + 2 \tau \frac{\Gamma _e}{\epsilon _0 \omega ^2_{pe}} \Vert \overline{{{\varvec{J}}}}_h^{n}\Vert _0^2 - 2 \tau \left( \overline{{{\varvec{E}}}}_h^{n} ,\overline{{{\varvec{J}}}}_h^{n}\right) = 0, \end{aligned}$$
(3.29)
$$\begin{aligned}&\frac{1}{\epsilon _0 \omega ^2_{pm}}( \Vert {{\varvec{K}}}_h^{n+1}\Vert _0^2 - \Vert {{\varvec{K}}}_h^{n}\Vert _0^2) + 2 \tau \frac{\Gamma _m}{\epsilon _0 \omega ^2_{pm}} \Vert \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}}\Vert _0^2 - 2 \tau \left( \overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}} ,\overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}}\right) = 0. \end{aligned}$$
(3.30)

Adding the above four equations together and using (2.32), we have

$$\begin{aligned}&\epsilon _0\Vert {{\varvec{E}}}_h^{n+\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{n+1} + \frac{\tau C_v}{2}\sqrt{\epsilon _0} \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} \Vert _0^2\nonumber \\&\qquad \qquad + \frac{1}{\epsilon _0 \omega ^2_{pe}} \Vert {{\varvec{J}}}_h^{n+\frac{1}{2}}\Vert _0^2 + \frac{1}{\mu _0 \omega ^2_{pm}} \Vert {{\varvec{K}}}_h^{n+1}\Vert _0^2 \nonumber \\&\qquad \qquad + 2 \tau \frac{\Gamma _e}{\epsilon _0 \omega ^2_{pe}} \Vert \overline{{{\varvec{J}}}}_h^{n}\Vert _0^2 + 2 \tau \frac{\Gamma _m}{\mu _0 \omega ^2_{pm}} \Vert \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}}\Vert _0^2 \nonumber \\&\quad = \epsilon _0\Vert {{\varvec{E}}}_h^{n-\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}{{\varvec{H}}}_h^{n} + \frac{\tau C_v}{2}\sqrt{\epsilon _0}\nabla \times {{\varvec{E}}}_h^{n-\frac{1}{2}} \Vert _0^2\nonumber \\&\qquad + \frac{1}{\epsilon _0 \omega ^2_{pe}} \Vert {{\varvec{J}}}_h^{n-\frac{1}{2}}\Vert _0^2 + \frac{1}{\mu _0 \omega ^2_{pm}} \Vert {{\varvec{K}}}_h^{n}\Vert _0^2. \end{aligned}$$
(3.31)

Summing up (3.31) from \(n = 1\) to any \(m\in [1,N_t-1]\), we complete the proof. \(\square \)

Remark 3.1

Using the similar technique as Sect. 2, we can only obtain

$$\begin{aligned} \sqrt{\mu _0}\varvec{H}_h^{n+1}+\frac{\tau C_v\sqrt{\epsilon _0}}{2}\nabla \times \varvec{E}_h^{n+\frac{1}{2}} =\sqrt{\mu _0}\overline{\varvec{H}}_h^{n+\frac{1}{2}} -\frac{\tau }{2\sqrt{\mu _0}}\overline{\varvec{K}}_h^{n+\frac{1}{2}}. \end{aligned}$$

Hence, for the Drude model, we cannot get any simpler stability result like Corrollary 2.1.

Theorem 3.2

For the solution \((\varvec{E}_h^{n+\frac{1}{2}}, \varvec{H}_h^{n+1},\varvec{J}_h^{n+\frac{1}{2}},\varvec{K}_h^{n+1})\) of scheme (3.1)–(3.4) with the following initial conditions:

$$\begin{aligned} \varvec{E}_h^{\frac{1}{2}}(\varvec{x}) = \Pi _c \varvec{E}(\varvec{x},\frac{\tau }{2}), \varvec{J}_h^{\frac{1}{2}}(\varvec{x}) = \Pi _c \varvec{J}(\varvec{x},\frac{\tau }{2}), \varvec{H}_h^{1}(\varvec{x}) = \Pi _c \varvec{H}(\varvec{x},\tau ), \varvec{K}_h^{1}(\varvec{x}) = \Pi _c \varvec{K}(\varvec{x},\tau ), \end{aligned}$$

we have the optimal error estimate: For any \(m\in [1,N_t-1]\),

$$\begin{aligned}&\max _{1\le m\le N_t-1}\left( \epsilon _0 \Vert \varvec{E}^{m+\frac{1}{2}} - \varvec{E}_h^{m+\frac{1}{2}}\Vert _0^2 + \Vert \sqrt{\mu _0}(\varvec{H}^{m+1}-\varvec{H}_h^{m+1}) + \frac{\tau C_v\sqrt{\epsilon _0}}{2} \nabla \times (\varvec{E}^{m+\frac{1}{2}} - \varvec{E}_h^{m+\frac{1}{2}}) \Vert _0^2 \right. \nonumber \\&\quad \left. + \frac{1}{\epsilon _0 \omega ^2_{pe}} \Vert \varvec{J}^{m+\frac{1}{2}} - \varvec{J}_h^{m+\frac{1}{2}}\Vert _0^2 + \frac{1}{\mu _0 \omega ^2_{pm}} \Vert \varvec{K}^{m+1} - \varvec{K}_h^{m+1}\Vert _0^2 \right) ^{\frac{1}{2}} \le CT(\tau ^2 + h^l), \end{aligned}$$
(3.32)

where \(l \ge 1\) is the order of basis function of space \(\varvec{U}^0_h\) and \(\varvec{V}_h\), and the positive constant \(C = C(\epsilon _0, \mu _0, \varvec{E}, \varvec{H})\) is independent of \(\tau , h\) and T.

Proof

Before we start the error estimate analysis, we denote the script letters \(\varvec{\mathcal {E}}^{n+\frac{1}{2}}\) and \(\varvec{\mathcal {H}}^{n}\), \(\varvec{\mathcal {J}}^{n+\frac{1}{2}}\), \(\varvec{\mathcal {K}}^{n}\) for the errors as defined in last section.

Integrating (3.1) from \(t_{n-\frac{1}{2}}\) to \(t_{n+\frac{1}{2}}\), multiplying the result by \(\frac{1}{\tau }\varvec{\Psi }_h \in \mathbf{U} ^0_h\), integrating over \(\Omega \), then subtracting (3.20), we have

$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } \varvec{\mathcal {E}}^{n}, \varvec{\Psi }_h \right) -\left( \frac{1}{\tau }\int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}\varvec{H}ds - \varvec{H}_h^{n}, \nabla \times \varvec{\Psi }_h \right) \\&\quad +\left( \frac{1}{\tau }\int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}\varvec{J}ds - \overline{\varvec{J}}_h^{n}, \varvec{\Psi }_h \right) - \frac{\tau ^2}{4\mu _0}\left( \delta _{\tau } (\nabla \times \varvec{E}_h^{n}) , \nabla \times \varvec{\Psi }_h \right) = 0, \end{aligned}$$

which leads to the first error equation

$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } \varvec{\mathcal {E}}_h^{n}, \varvec{\Psi }_h \right) - \left( \varvec{\mathcal {H}}_h^n , \nabla \times \varvec{\Psi }_h \right) +\left( \overline{\varvec{\mathcal {J}}}_h^{n}, \varvec{\Psi }_h \right) + \frac{\tau ^2}{4\mu _0}\left( \delta _{\tau } (\nabla \times \varvec{\mathcal {E}}_h^{n}) , \nabla \times \varvec{\Psi }_h \right) \nonumber \\&\quad = \left( \epsilon _0 \delta _{\tau } (\Pi _c{{\varvec{E}}}^{n} - {{\varvec{E}}}^{n}), \varvec{\Psi }_h \right) + \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{H}}}ds - P _h{{\varvec{H}}}^{n} , \nabla \times \varvec{\Psi }_h \right) \nonumber \\&\qquad - \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}}{{\varvec{J}}}ds - \Pi _c \overline{{{\varvec{J}}}}^{n} , \varvec{\Psi }_h \right) + \frac{\tau ^2}{4\mu _0} \left( \delta _{\tau } (\nabla \times \Pi _c \overline{{{\varvec{E}}}}^{n}) , \nabla \times \varvec{\Psi }_h \right) , \qquad \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(3.33)

here and in the rest of this section, we denote \({{\varvec{E}}}^{n+\frac{1}{2}} = {{\varvec{E}}}(t_{n+\frac{1}{2}})\) for simplicity. Similar notations \({{\varvec{J}}}^{n+\frac{1}{2}} = {{\varvec{J}}}(t_{n+\frac{1}{2}})\) , \({{\varvec{H}}}^n = {{\varvec{H}}}(t_n)\), \({{\varvec{K}}}^n = {{\varvec{K}}}(t_n)\) are adopted also.

Similarly, integrating (3.2) form \(t_{n}\) to \(t_{n+1}\), multiplying the resultant by \(\frac{1}{\tau }\varvec{\Phi }_h \in \mathbf{V} _h\), integrating over \(\Omega \), then subtracting (3.21), we obtain the second error equation

$$\begin{aligned}&\left( \mu _0 \delta _{\tau } \varvec{\mathcal {H}}_h^{n+\frac{1}{2}}, \varvec{\Phi }_h \right) - \left( \nabla \times \varvec{\mathcal {E}}_h^{n+\frac{1}{2}} , \varvec{\Phi }_h \right) +\left( \overline{\varvec{\mathcal {K}}}_h^{n+\frac{1}{2}}, \varvec{\Phi }_h \right) \nonumber \\&\quad = \left( \mu _0 \delta _{\tau } (P_h{{\varvec{H}}}^{n+\frac{1}{2}} - {{\varvec{H}}}^{n+\frac{1}{2}}), \varvec{\Phi }_h \right) +\left( \nabla \times \left( \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} {{\varvec{E}}}ds - \Pi _c {{\varvec{E}}}^{n+\frac{1}{2}}\right) , \varvec{\Phi }_h \right) \nonumber \\&\qquad +\left( \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}}{{\varvec{K}}}ds - P_h \overline{{{\varvec{K}}}}^{n} , \varvec{\Phi }_h \right) , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h. \end{aligned}$$
(3.34)

Integrating (3.3) form \(t_{n-\frac{1}{2}}\) to \(t_{n+\frac{1}{2}}\), multiplying the resultant by \(\frac{1}{\tau }\widetilde{\varvec{\Psi }}_h \in \mathbf{U} ^0_h\), and integrating over \(\Omega \), then subtracting (3.22), we obtain the third error equation

$$\begin{aligned}&\left( \frac{1}{\epsilon _0 \omega ^2_{pe}} \delta _{\tau } \varvec{\mathcal {J}}_h^{n}, \widetilde{\varvec{\Psi }}_h \right) + \left( \frac{\Gamma _e}{\epsilon _0 \omega ^2_{pe}} \overline{\varvec{\mathcal {J}}}_h^{n}, \widetilde{\varvec{\Psi }}_h \right) - \left( \overline{\varvec{\mathcal {E}}}_h^{n}, \widetilde{\varvec{\Psi }}_h \right) \nonumber \\&\quad = \left( \frac{1}{\epsilon _0 \omega ^2_{pe}} \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} \partial _t( \Pi _c {{\varvec{J}}} - {{\varvec{J}}})ds, \widetilde{\varvec{\Psi }}_h \right) + \left( \frac{\Gamma _e}{\epsilon _0 \omega ^2_{pe}} \left( \Pi _c \overline{{{\varvec{J}}}}^{n} - \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} {{\varvec{J}}} ds\right) , \widetilde{\varvec{\Psi }}_h \right) \nonumber \\&\qquad + \left( \frac{1}{\tau } \int _{t_{n-\frac{1}{2}}}^{t_{n+\frac{1}{2}}} {{\varvec{E}}}ds - \Pi _c \overline{{{\varvec{E}}}}^{n} , \widetilde{\varvec{\Psi }}_h \right) , \qquad \forall \widetilde{\varvec{\Psi }}_h \in \varvec{U}^0_h. \end{aligned}$$
(3.35)

Similarly, integrating (3.4) form \(t_{n}\) to \(t_{n+1}\), multiplying the resultant by \(\frac{1}{\tau }\widetilde{\varvec{\Phi }}_h \in \mathbf{V} _h\), and integrating over \(\Omega \), then subtracting (3.23), we obtain the fourth error equation

$$\begin{aligned}&\left( \frac{1}{\mu _0 \omega ^2_{pe}} \delta _{\tau } \varvec{\mathcal {K}}_h^{n+\frac{1}{2}}, \widetilde{\varvec{\Phi }}_h \right) + \left( \frac{\Gamma _m}{\mu _0 \omega ^2_{pm}} \overline{\varvec{\mathcal {K}}}_h^{n+\frac{1}{2}}, \widetilde{\varvec{\Phi }}_h \right) - \left( \overline{\varvec{\mathcal {H}}}_h^{n+\frac{1}{2}}, \widetilde{\varvec{\Phi }}_h \right) \nonumber \\&\quad = \left( \frac{1}{\mu _0 \omega ^2_{pm}} \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} \partial _t( P_h {{\varvec{K}}} - {{\varvec{K}}})ds, \widetilde{\varvec{\Phi }}_h \right) + \left( \frac{\Gamma _m}{\mu _0 \omega ^2_{pm}}\left( P_h \overline{{{\varvec{K}}}}^{n+\frac{1}{2}} - \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}}{{\varvec{K}}}ds \right) , \widetilde{\varvec{\Phi }}_h \right) \nonumber \\&\qquad + \left( \frac{1}{\tau } \int _{t_{n}}^{t_{n+1}} {{\varvec{H}}}ds - P_h \overline{{{\varvec{H}}}}^{n+\frac{1}{2}} , \widetilde{\varvec{\Phi }}_h \right) , \qquad \forall \widetilde{\varvec{\Phi }}_h \in \varvec{V}_h. \end{aligned}$$
(3.36)

Note that the error equations (3.33)–(3.36) have exactly the same form as the finite element scheme (3.20)–(3.23), except those extra terms added to the right hand sides of (3.33)–(3.36) due to the time and spatial discretization. Moreover, by the interpolation error estimates of \(\Pi _c\) and \(P_h\) , these extra terms have the local truncation errors \(\mathcal {O}(\tau ^2 + h^l)\), where \(l \ge 1\) is the order of basis function of space \(\mathbf{U} ^0_h\) and \(\mathbf{V} _h\). Hence, by following the same techniques developed for proving the discrete stability given in Theorem 3.1 and the error estimate given in Theorem 2.2, we conclude the proof. \(\square \)

4 Extension to the Cohen-Monk PML Model

To simulate a practical wave propagation problem, we usually use a PML model to reduce the unbounded domain simulation problem to a bounded domain simulation. There are many studies on the mathematical analysis of PML models for Maxwell’s equations (cf. [1, 2, 4] and references therein), here we consider the Cohen-Monk PML model, which was originally developed in 1999 by Cohen and Monk [11] by using the stretched coordinates approach. In 2014, we [19] proved the existence, uniqueness, and stability of this PML model. To develop a leapfrog scheme, we introduce two auxiliary variables \(\varvec{J}\) and \(\varvec{K}\) based on the governing equations (1)-(4) of [19] and rewrite the governing equations of the Cohen-Monk PML model as follows:

$$\begin{aligned}&\frac{\partial {{\varvec{J}}}}{\partial t} = {{\varvec{E}}}, \end{aligned}$$
(4.1)
$$\begin{aligned}&\frac{\partial {{\varvec{K}}}}{\partial t} = {{\varvec{H}}}, \end{aligned}$$
(4.2)
$$\begin{aligned}&\epsilon _0 \frac{\partial {{\varvec{E}}}^{*}}{\partial t}-\nabla \times {{\varvec{H}}} =0, \end{aligned}$$
(4.3)
$$\begin{aligned}&\mu _0 \frac{\partial {{\varvec{H}}}^{*}}{\partial t}+\nabla \times {{\varvec{E}}} =0, \end{aligned}$$
(4.4)
$$\begin{aligned}&\frac{\partial {{\varvec{E}}}}{\partial t} + C_m {{\varvec{E}}} + D {{\varvec{J}}} = \frac{\partial {{\varvec{E}}}^{*}}{\partial t} + G {{\varvec{E}}}^{*}, \end{aligned}$$
(4.5)
$$\begin{aligned}&\frac{\partial {{\varvec{H}}}}{\partial t} + C_m {{\varvec{H}}} + D {{\varvec{K}}} = \frac{\partial {{\varvec{H}}}^{*}}{\partial t} + G {{\varvec{H}}}^{*}, \end{aligned}$$
(4.6)

where \(\epsilon _0\) and \(\mu _0\) are the vacuum permittivity and permeability, respectively, \({{\varvec{E}}}(\mathbf{x} ,t)\) and \({{\varvec{H}}}(\mathbf{x} ,t)\) are the electric and magnetic fields, respectively, and \({{\varvec{E}}}^{*}(\mathbf{x} ,t)\) and \({{\varvec{H}}}^{*}(\mathbf{x} ,t)\) are the auxiliary electric and magnetic fields, respectively. Moreover, \(C_m\), D and G are \(3 \times 3\) diagonal matrices given by

$$\begin{aligned} C_m=diag(\sigma _y+\sigma _z, \sigma _x+\sigma _z, \sigma _x+\sigma _y), D=diag(\sigma _y\sigma _z, \sigma _x\sigma _z, \sigma _x\sigma _y), G=diag(\sigma _x, \sigma _y, \sigma _z), \end{aligned}$$
(4.7)

where \(\sigma _x\), \(\sigma _y\) and \(\sigma _z\) are nonnegative functions and represent the dampings along the x, y, and z directions, respectively.

First, we consider the following two step scheme for (4.1)–(4.6):

Step 1:

$$\begin{aligned}&{{\varvec{J}}}^{n+\frac{1}{2}} = {{\varvec{J}}}^{n} + \frac{\tau }{2}{{\varvec{E}}}^{n+\frac{1}{2}}, \end{aligned}$$
(4.8)
$$\begin{aligned}&{{\varvec{K}}}^{n+\frac{1}{2}} = {{\varvec{K}}}^{n} + \frac{\tau }{2}{{\varvec{H}}}^{n}, \end{aligned}$$
(4.9)
$$\begin{aligned}&\epsilon _0{{\varvec{E}}}^{*n+\frac{1}{2}} = \epsilon _0 {{\varvec{E}}}^{*n} + \frac{\tau }{2} \nabla \times {{\varvec{H}}}^{n+\frac{1}{2}}, \end{aligned}$$
(4.10)
$$\begin{aligned}&\mu _0{{\varvec{H}}}^{*n+\frac{1}{2}} = \mu _0 {{\varvec{H}}}^{*n} - \frac{\tau }{2} \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}, \end{aligned}$$
(4.11)
$$\begin{aligned}&{{\varvec{E}}}^{n+\frac{1}{2}} = {{\varvec{E}}}^{n} + \left( {{\varvec{E}}}^{*n+\frac{1}{2}} - {{\varvec{E}}}^{*n}\right) + \frac{\tau }{2}\left( G{{\varvec{E}}}^{*n+\frac{1}{2}} - C_m{{\varvec{E}}}^{n+\frac{1}{2}} - D {{\varvec{J}}}^{n+\frac{1}{2}} \right) , \end{aligned}$$
(4.12)
$$\begin{aligned}&{{\varvec{H}}}^{n+\frac{1}{2}} = {{\varvec{H}}}^{n} + \left( {{\varvec{H}}}^{*n+\frac{1}{2}} - {{\varvec{H}}}^{*n}\right) + \frac{\tau }{2}\left( G{{\varvec{H}}}^{*n} - C_m{{\varvec{H}}}^{n} - D {{\varvec{K}}}^{n} \right) , \end{aligned}$$
(4.13)

Step 2:

$$\begin{aligned}&{{\varvec{J}}}^{n+1} = {{\varvec{J}}}^{n+\frac{1}{2}} + \frac{\tau }{2}{{\varvec{E}}}^{n+\frac{1}{2}}, \end{aligned}$$
(4.14)
$$\begin{aligned}&{{\varvec{K}}}^{n+1} = {{\varvec{K}}}^{n+\frac{1}{2}} + \frac{\tau }{2}{{\varvec{H}}}^{n+1}, \end{aligned}$$
(4.15)
$$\begin{aligned}&\epsilon _0{{\varvec{E}}}^{*n+1} = \epsilon _0 {{\varvec{E}}}^{*n+\frac{1}{2}} + \frac{\tau }{2} \nabla \times {{\varvec{H}}}^{n+\frac{1}{2}}, \end{aligned}$$
(4.16)
$$\begin{aligned}&\mu _0{{\varvec{H}}}^{*n+1} = \mu _0 {{\varvec{H}}}^{*n+\frac{1}{2}} - \frac{\tau }{2} \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}, \end{aligned}$$
(4.17)
$$\begin{aligned}&{{\varvec{E}}}^{n+1} = {{\varvec{E}}}^{n+\frac{1}{2}} + \left( {{\varvec{E}}}^{*n+1} - {{\varvec{E}}}^{*n+\frac{1}{2}}\right) + \frac{\tau }{2}\left( G{{\varvec{E}}}^{*n+\frac{1}{2}} - C_m{{\varvec{E}}}^{n+\frac{1}{2}} - D {{\varvec{J}}}^{n+\frac{1}{2}} \right) , \end{aligned}$$
(4.18)
$$\begin{aligned}&{{\varvec{H}}}^{n+1} = {{\varvec{H}}}^{n+\frac{1}{2}} + \left( {{\varvec{H}}}^{*n+1} - {{\varvec{H}}}^{*n+\frac{1}{2}}\right) + \frac{\tau }{2}\left( G{{\varvec{H}}}^{*n+1} - C_m{{\varvec{H}}}^{n+1} - D {{\varvec{K}}}^{n+1} \right) . \end{aligned}$$
(4.19)

Then using (4.8)–(4.19), we can construct our leapfrog scheme for (4.1)–(4.6). Reducing all \(n's\) of (4.14) by 1, and adding the resultant with (4.8), we can obtain the scheme for \({{\varvec{J}}}\):

$$\begin{aligned} {{\varvec{J}}}^{n+\frac{1}{2}} = {{\varvec{J}}}^{n-\frac{1}{2}} + \frac{\tau }{2} \left( {{\varvec{E}}}^{n+\frac{1}{2}} + {{\varvec{E}}}^{n-\frac{1}{2}}\right) , ~~\text{ or }~~ \delta _{\tau }\varvec{J}^n=\overline{\varvec{E}}^n. \end{aligned}$$
(4.20)

Adding (4.9) and (4.15) together, we obtain the scheme for \({{\varvec{K}}}\):

$$\begin{aligned} {{\varvec{K}}}^{n+1} = {{\varvec{K}}}^{n} + \frac{\tau }{2} \left( {{\varvec{H}}}^{n+1} + {{\varvec{H}}}^{n}\right) , ~~\text{ or }~~ \delta _{\tau }\varvec{K}^{n+\frac{1}{2}} =\overline{\varvec{H}}^{n+\frac{1}{2}}. \end{aligned}$$
(4.21)

Reducing all \(n's\) of (4.16) by 1, and adding the resultant with (4.10), we have

$$\begin{aligned} \epsilon _0 {{\varvec{E}}}^{*n+\frac{1}{2}} = \epsilon _0 {{\varvec{E}}}^{*n-\frac{1}{2}} + \frac{\tau }{2} \nabla \times \left( {{\varvec{H}}}^{n+\frac{1}{2}} + {{\varvec{H}}}^{n-\frac{1}{2}}\right) . \end{aligned}$$
(4.22)

Reducing all \(n's\) of (4.19) by 1, and subtracting the result from (4.13), we have

$$\begin{aligned}&\frac{{{\varvec{H}}}^{n+\frac{1}{2}} + {{\varvec{H}}}^{n-\frac{1}{2}}}{2} = {{\varvec{H}}}^{n} + \frac{{{\varvec{H}}}^{*n+\frac{1}{2}} -2\varvec{H}^{*n} + {{\varvec{H}}}^{*n-\frac{1}{2}}}{2} .&\end{aligned}$$
(4.23)

Substituting (4.23) into (4.22) we have

$$\begin{aligned}&\epsilon _0 {{\varvec{E}}}^{*n+\frac{1}{2}} = \epsilon _0 {{\varvec{E}}}^{*n-\frac{1}{2}} +\tau \nabla \times {{\varvec{H}}}^{n} + \tau \nabla \times \frac{{{\varvec{H}}}^{*n+\frac{1}{2}} -2\varvec{H}^{*n} + {{\varvec{H}}}^{*n-\frac{1}{2}}}{2}.&\end{aligned}$$
(4.24)

Substituting \({{\varvec{H}}}^{*n+\frac{1}{2}}\) of (4.11) into (4.24), reducing all \(n's\) of (4.17) by 1 and substituting \({{\varvec{H}}}^{*n-\frac{1}{2}}\) of the resultant into (4.24), we can obtain the scheme for \({{\varvec{E}}}^{*}\):

$$\begin{aligned} \epsilon _0 \delta _{\tau }\varvec{E}^{*n} = \nabla \times {{\varvec{H}}}^{n} - \frac{\tau ^2}{4 \mu _0} \nabla \times \nabla \times \delta _{\tau }\varvec{E}^{n}. \end{aligned}$$
(4.25)

Adding (4.11) and (4.17) together, we obtain the scheme for \({{\varvec{H}}}^*\):

$$\begin{aligned} \mu _0 {{\varvec{H}}}^{*n+1} = \mu _0 {{\varvec{H}}}^{*n} - \tau \nabla \times {{\varvec{E}}}^{n+\frac{1}{2}}, ~~\text{ i.e., }~~ \mu _0\delta _{\tau }\varvec{H}^{*n+\frac{1}{2}} = -\nabla \times \varvec{E}^{n+\frac{1}{2}}. \end{aligned}$$
(4.26)

Reducing all \(n's\) of (4.18) by 1, and adding the resultant with (4.12), we can obtain the scheme for \({{\varvec{E}}}\):

$$\begin{aligned} \delta _{\tau }\varvec{E}^n = \delta _{\tau }\varvec{E}^{*n} + G\overline{\varvec{E}}^{*n} - C_m \overline{\varvec{E}}^n - D \overline{\varvec{J}}^n. \end{aligned}$$
(4.27)

Adding (4.13) and (4.19) together, we can obtain the scheme for \({{\varvec{H}}}\):

$$\begin{aligned} \delta _{\tau }\varvec{H}^{n+\frac{1}{2}} = \delta _{\tau }\varvec{H}^{*n+\frac{1}{2}} + G \overline{\varvec{H}}^{*n+\frac{1}{2}} - C_m \overline{\varvec{H}}^{n+\frac{1}{2}} - D \overline{\varvec{K}}^{n+\frac{1}{2}}. \end{aligned}$$
(4.28)

From (4.20), (4.21), (4.25), (4.26), (4.27), (4.28) and using the finite element spaces \(\mathbf{U} ^0_h\) and \(\mathbf{V} _h\), we can construct the following leapfrog scheme for (4.1)–(4.6): given initial approximations \({{\varvec{E}}}_h^{\frac{1}{2}}\), \({{\varvec{E}}}_h^{*\frac{1}{2}}\), \({{\varvec{J}}}_h^{\frac{1}{2}}\), \({{\varvec{H}}}_h^{1}\), \({{\varvec{H}}}_h^{*1}\), \({{\varvec{K}}}_h^{1}\), for any \(n \ge 1\), find \({{\varvec{E}}}_h^{n+\frac{1}{2}}\), \({{\varvec{E}}}_h^{*n+\frac{1}{2}}\), \({{\varvec{J}}}_h^{n+\frac{1}{2}}\) \(\in \mathbf{U} ^0_h\), \({{\varvec{H}}}_h^{n+1}\), \({{\varvec{H}}}_h^{*n+1}\), \({{\varvec{K}}}_h^{n+1}\) \(\in \mathbf{V} _h\) such that

$$\begin{aligned}&\left( \delta _{\tau } {{\varvec{J}}}_h^{n} , \varvec{\Psi }_h \right) = \left( \overline{{{\varvec{E}}}}_h^{n}, \varvec{\Psi }_h \right) , \qquad \forall \varvec{\Psi }_h \in \varvec{U}^0_h, \end{aligned}$$
(4.29)
$$\begin{aligned}&\left( \delta _{\tau } {{\varvec{K}}}_h^{n+\frac{1}{2}}, \varvec{\Phi }_h \right) = \left( \overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}}, \varvec{\Phi }_h \right) , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h, \end{aligned}$$
(4.30)
$$\begin{aligned}&\left( \epsilon _0 \delta _{\tau } {{\varvec{E}}}_h^{*n}, \widetilde{\varvec{\Psi }}_h \right) = \left( {{\varvec{H}}}_h^{n} , \nabla \times \widetilde{\varvec{\Psi }}_h \right) - \frac{\tau ^2}{4\mu _0}\left( \nabla \times \delta _{\tau } {{\varvec{E}}}_h^{n} , \nabla \times \widetilde{\varvec{\Psi }}_h \right) , \qquad \forall \widetilde{\varvec{\Psi }}_h \in \varvec{U}^0_h, \end{aligned}$$
(4.31)
$$\begin{aligned}&\left( \mu _0 \delta _{\tau } {{\varvec{H}}}_h^{*n+\frac{1}{2}}, \widetilde{\varvec{\Phi }}_h \right) = -\left( \nabla \times {{\varvec{E}}}_h^{n+\frac{1}{2}} ,\widetilde{\varvec{\Phi }}_h \right) , \qquad \forall \widetilde{\varvec{\Phi }}_h \in \varvec{V}_h, \end{aligned}$$
(4.32)
$$\begin{aligned}&\left( \delta _{\tau } {{\varvec{E}}}_h^{n}, \widehat{\varvec{\Psi }}_h \right) + \left( C_m \overline{{{\varvec{E}}}}_h^{n} , \widehat{\varvec{\Psi }}_h \right) + \left( D \overline{{{\varvec{J}}}}_h^{n}, \widehat{\varvec{\Psi }}_h \right) \nonumber \\&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ = \left( \delta _{\tau } {{\varvec{E}}}_h^{*n}, \widehat{\varvec{\Psi }}_h \right) + \left( G \overline{{{\varvec{E}}}}_h^{*n}, \widehat{\varvec{\Psi }}_h \right) , \qquad \forall \widehat{\varvec{\Psi }}_h \in \varvec{U}^0_h, \end{aligned}$$
(4.33)
$$\begin{aligned}&\left( \delta _{\tau } {{\varvec{H}}}_h^{n+\frac{1}{2}}, \widehat{\varvec{\Phi }}_h \right) + \left( C_m \overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}} , \widehat{\varvec{\Phi }}_h \right) + \left( D \overline{{{\varvec{K}}}}_h^{n+\frac{1}{2}}, \widehat{\varvec{\Phi }}_h \right) \nonumber \\&~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ = \left( \delta _{\tau } {{\varvec{H}}}_h^{*n+\frac{1}{2}} , \widehat{\varvec{\Phi }}_h \right) + \left( G \overline{{{\varvec{H}}}}_h^{*n+\frac{1}{2}}, \widehat{\varvec{\Phi }}_h \right) , \qquad \forall \widehat{\varvec{\Phi }}_h \in \varvec{V}_h. \end{aligned}$$
(4.34)

The scheme (4.29)–(4.34) can be implemented as follows:

Step 1: Obtain \(\varvec{J}_h^{n+\frac{1}{2}}\) from (4.29) and \(\varvec{E}_h^{*n+\frac{1}{2}}\) from (4.31), respectively, then substitute them into (4.33), which can be solved for \(\varvec{E}_h^{n+\frac{1}{2}}\).

Step 2: Solve for \(\varvec{J}_h^{n+\frac{1}{2}}\) from (4.29), \(\varvec{H}_h^{*n+1}\) from (4.32), and \(\varvec{E}_h^{*n+\frac{1}{2}}\) from (4.31), respectively. Note that these three solvers can be done in parallel.

Step 3: Obtain \(\varvec{K}_h^{n+1}\) from (4.30), then substitute the result into (4.34), which can be solved for \(\varvec{H}_h^{n+1}\).

Step 4: Update \(\varvec{K}_h^{n+1}\) by using (4.30).

5 Numerical Results

In this section, we present some numerical results to demonstrate the performance of our proposed leapfrog scheme. Since our 3D theoretical analysis holds true for the corresponding 2D models, all our numerical tests are carried out for 2D models. More specifically, we focus on solving the 2D \(TE_z\) model with unknowns \({{\varvec{E}}} = [E_x, E_y]^T\) and \({{\varvec{H}}}=H_z\). For simplicity, we only employ the lowest order Raviart-Thomas-Nédélec mixed finite element spaces on rectangular elements [22]:

$$\begin{aligned}&\mathbf{V} _h=\left\{ \psi _h \in L^2(\Omega ): \psi _h \big |_K =Q_{0,0}, \forall K \in T_h \right\} , \\&\mathbf{U} _h=\left\{ \phi _h \in H(curl;\Omega ): \phi _h \big |_K = Q_{0,1} \times Q_{1,0} , \forall K \in T_h \right\} , \end{aligned}$$

and on triangular elements [22]:

$$\begin{aligned}&\mathbf{V} _h=\left\{ \psi _h \in L^2(\Omega ): \psi _h \big |_K =\text{ constant }, \forall K \in T_h \right\} , \\&\mathbf{U} _h=\left\{ \phi _h \in H(curl;\Omega ): \phi _h \big |_K = \text{ span }\{\lambda _i\nabla \lambda _j - \lambda _j\nabla \lambda _i\}, \forall K \in T_h \right\} , \end{aligned}$$

where \(Q_{i,j}\) denotes the set of polynomials of degrees of i and j in x and y variables, and \(\lambda _i\) are the barycentric coordinate functions.

Example 1

The first example is used to justify the convergence rate of our scheme with an exact solution. The \(TE_z\) governing equations of (2.1)–(2.2) with added source terms \({{\varvec{g}}}=[g_x, g_y]^T\) and \({{\varvec{f}}}=f_z\) are given as follows:

$$\begin{aligned}&\epsilon _0 \frac{\partial {{\varvec{E}}}}{\partial t}-\nabla \times H _z + \sigma {{\varvec{E}}} = {{\varvec{g}}}, \end{aligned}$$
(5.1)
$$\begin{aligned}&\mu _0 \frac{\partial H _z}{\partial t} - \nabla \times {{\varvec{E}}} = f_z, \end{aligned}$$
(5.2)

where \(\nabla \times {{\varvec{E}}} =\frac{\partial E_y}{\partial x} - \frac{\partial E_x}{\partial y}\) and \(\nabla \times H_z =[\frac{\partial H_z}{\partial y}, -\frac{\partial H_z}{\partial x}]^T\). Moreover, the exact solution and corresponding source terms are given as:

$$\begin{aligned} \begin{aligned}&{{\varvec{E}}}= \left( \begin{array}{l} E_x \\ E_y \end{array} \right) = \left( \begin{array}{l} e^{-\pi t}\cos (\pi x)\sin (\pi y) \\ -e^{-\pi t}\sin (\pi x)\cos (\pi y) \end{array} \right) , \\&H_z = e^{-\pi t}\cos (\pi x)\cos (\pi y), ~~ {{\varvec{g}}} = \sigma {{\varvec{E}}}, ~~ f_z = -3 \pi e^{-\pi t}cos(\pi x)cos(\pi y). \end{aligned} \end{aligned}$$
(5.3)

We choose \(\sigma = 3 \pi \), \(\epsilon _0 = \mu _0 = 1\), mesh size h varying from 1/10 to 1/160 for the physical domain \(\Omega =[0,1]^2\), and solve this model problem by the scheme (2.14)–(2.15) till \(T=1\) with various time step sizes satisfying \(\frac{\tau }{h} = 2, 1, \frac{1}{2}\). The obtained errors at \(T = 1\) and convergence rates are presented in Tables 1, 2 and 3. The results clearly show that our scheme is indeed unconditionally stable and convergences as \(\mathcal {O}(h^2 + \tau ^2)\) in both \(L_{\infty }\) and \(L_{2}\) norms (approximated by the numerical solution at element centers). The superconvergence \(O(h^2)\) in the discrete \(L_{2}\) norm for the lowest-order rectangular edge element has been proved in our early work [18].

Table 1 The \(L_{\infty }\) and \(L_{2}\) errors obtained by the leapfrog scheme with \(\tau = 2 h\) at T=1
Table 2 The \(L_{\infty }\) and \(L_{2}\) errors obtained by the leapfrog scheme with \(\tau = h\) at T=1
Table 3 The \(L_{\infty }\) and \(L_{2}\) errors obtained by the leapfrog scheme with \(\tau = h/2\) at T=1

To compare the numerical performance of our proposed scheme to the classical Crank–Nicolson (CN) scheme, we also solve this example by the CN scheme given as: Given initial approximations \({{\varvec{E}}}_h^{0}\) , \({{\varvec{H}}}_h^{0}\), find \({{\varvec{E}}}_h^{n+1} \in \mathbf{U} ^0_h\) , \({{\varvec{H}}}_h^{n+1} \in \mathbf{V} _h\) for any \(n \ge 0\) such that

$$\begin{aligned}&(\epsilon _0 \delta _{\tau } {{\varvec{E}}}_h^{n+\frac{1}{2}}, \varvec{\Psi }_h) + (\sigma \overline{{{\varvec{E}}}}_h^{n+\frac{1}{2}}, \varvec{\Psi }_h) - (\overline{{{\varvec{H}}}}_h^{n+\frac{1}{2}} , \nabla \times \varvec{\Psi }_h) = (\varvec{g}^{n+\frac{1}{2}}, \varvec{\Psi }_h), ~~\forall \varvec{\Psi }_h \in \varvec{U}^0_h,\nonumber \\ \end{aligned}$$
(5.4)
$$\begin{aligned}&(\mu _0 \delta _{\tau } {{\varvec{H}}}_h^{n+\frac{1}{2}} , \varvec{\Phi }_h) + (\nabla \times \overline{{{\varvec{E}}}}_h^{n+\frac{1}{2}} ,\varvec{\Phi }_h) = (f_z^{n+\frac{1}{2}} , \varvec{\Phi }_h) , \qquad \forall \varvec{\Phi }_h \in \varvec{V}_h. \end{aligned}$$
(5.5)

The obtained errors at \(T = 1\) and convergence rates are presented in Tables 4, 5 and 6, which clearly shows \(\mathcal {O}(h^2 + \tau ^2)\) in both \(L_{\infty }\) and the discrete \(L_{2}\) norms. The CPU times used by the CN scheme (denoted as \(T_{CN}\)), the improved CN scheme (2.24)–(2.25) (denoted as \(T_{ICN}\)) and our scheme (denoted as \(T_{LF}\)) are compared in Table 7. The ratios \(T_{CN}/T_{LF}\) and \(T_{ICN}/T_{LF}\) show that the CN and ICN schemes take more CPU time than our scheme. We observed that the condition number of the system matrix for our scheme (denoted as \(Cond_{LF}\) in Table 7) deteriorates as the time step increments becomes larger as observed in [28]. Though the overall total simulation time decreases as the Courant number \(C=\frac{u\tau }{h}\) (the velocity \(u=\frac{1}{\sqrt{\epsilon _0\mu _0}}=1\) in our test) becomes larger, a large Courant number increases the solution error as pointed in [28] for general unconditionally stable finite element time-domain schemes. Note that \(Cond_{LF}\) is smaller than the condition number of CN scheme \(Cond_{CN}\) (except the case when \(\tau =2h\)) and always larger than the condition number of ICN scheme \(Cond_{ICN}\). A complicated algebraic multigrid preconditioner such as the auxiliary-space Maxwell solver [14, 20, 31] may be needed to efficiently invert the leapfrog coefficient matrix. We like to remark that our simulation implemented in MATLAB is carried out on a 2009 LENOVO V3000 laptop with a processor of 2.40 GHz Intel Core i7, 4 GB RAM and Ghost Windows7 Sp1 64 system. In our implementation, we just used the direct solver provided in MATLAB.

Table 4 The \(L_{\infty }\) and \(L_{2}\) errors obtained by the CN scheme with \(\tau = 2 h\) at T=1
Table 5 The \(L_{\infty }\) and \(L_{2}\) errors obtained by the CN scheme with \(\tau = h\) at T=1
Table 6 The \(L_{\infty }\) and \(L_{2}\) errors obtained by the CN scheme with \(\tau = h/2\) at T=1
Table 7 Comparison of the CPU times used (in seconds) by the CN, improved CN and leapfrog schemes

Example 2

In this example, we consider a popular model showing the backward wave propagation phenomenon in metamaterials originally introduced by Ziolkowski [38] and simulated by various numerical methods (e.g., [23, 33]). In this example, a rectangular metamaterial slab is chosen to be \([0.024, 0.044]m \times [0.002, 0.062]m\), which is embedded in a vacuum with dimension \([0, 0.07]m \times [0, 0.064]m\). The vacuum is surrounded by a PML with thickness \(dd = 20h\), where h denotes the mesh size. Similar to Example 1, we solve the corresponding 2D version of the PML model (4.1)–(4.6) and Drude model (3.1)–(3.4). The 2D Cohn-Monk PML model can be written as follows:

$$\begin{aligned}&\frac{\partial K_z}{\partial t} = H_z, \end{aligned}$$
(5.6)
$$\begin{aligned}&\epsilon _0 \frac{\partial {{\varvec{E}}}^{*}}{\partial t}-\nabla \times H_z =0, \end{aligned}$$
(5.7)
$$\begin{aligned}&\mu _0 \frac{\partial H_z^{*}}{\partial t}+\nabla \times {{\varvec{E}}} =0, \end{aligned}$$
(5.8)
$$\begin{aligned}&\frac{\partial {{\varvec{E}}}}{\partial t} + C_{2d} {{\varvec{E}}} = \frac{\partial {{\varvec{E}}}^{*}}{\partial t} + G_{2d} {{\varvec{E}}}^{*} , \end{aligned}$$
(5.9)
$$\begin{aligned}&\frac{\partial H_z}{\partial t} + C_{1d} H_z + D_{1d} K_z = \frac{\partial H_z^{*}}{\partial t} , \end{aligned}$$
(5.10)

where we denote

$$\begin{aligned} C_{2d}=diag(\sigma _y, \sigma _x),~~ G_{2d}=diag(\sigma _x, \sigma _y),~~ C_{1d}=\sigma _x+\sigma _y,~~ D_{1d}=\sigma _x\sigma _y. \end{aligned}$$

We choose the damping functions \(\sigma _x\) and \(\sigma _y\) as fourth-order polynomial functions, more specifically,

$$\begin{aligned} \sigma _x(x) = \left\{ \begin{array}{l l} \sigma _{max}\left( \frac{x-0.07}{dd}\right) ^4, &{} ~~~\text{ if }~~~ x \ge 0.07, \\ \sigma _{max}\left( \frac{x}{dd}\right) ^4, &{} ~~~\text{ if }~~~ x \le 0.0, \\ 0, &{} ~~~\text{ elsewhere }, \end{array} \right. \end{aligned}$$

where \(\sigma _{max}=-\log (err)\cdot 5 \cdot 0.07 \cdot c_v/(2\cdot dd)\) with \(err=10^{-7}\). The function \(\sigma _y\) has the same form but varies with respect to the y variable.

The source wave is imposed as \(H_z\) field and is excited at the line segment \(x=0.004m\) with y ranging from \(y=0.025m\) to \(y=0.035m\). The source wave varies in space as \(e^{-(y-0.03)^2 / (50h)^2}\) and in time same as [38] (see also [21, p.927]).

The mesh size \(h=2 \cdot 10^{-4}\) and various time step sizes \(\tau =\beta \cdot 10^{-13} \) with \(\beta =1,2,4,8\) (to demonstrate the unconditional stability of our scheme) are used for our simulation. The contour plots of the magnetic field \(H_z\) at various times are presented in Figs. 1 and 2 with \(\beta =1,8\), respectively. The figures clearly show that the wave propagates backwards in the metamaterial slab and demonstrate the refocusing property of metamaterials. Of course the image quality becomes worse as the time step size increases.

Fig. 1
figure 1

Plots of \(H_z\) obtained with \(\tau =1 \cdot 10^{-13} \) at 1000, 2000, 3000, 4000, and 5000 time steps

Fig. 2
figure 2

Plots of \(H_z\) obtained with \(\tau =8 \cdot 10^{-13} \) at 125, 250, 375, 500, and 625 time steps

Fig. 3
figure 3

The hybrid grid used for the triangular metamaterial slab simulation

Fig. 4
figure 4

Example 3. Plots of \(H_z\) obtained with \(\tau =1 \cdot 10^{-13} \) at 1000, 2000, 3000, 4000, and 5000 time steps

Fig. 5
figure 5

Example 3. Plots of \(H_z\) obtained with \(\tau =8 \cdot 10^{-13} \) at 125, 250, 375, 500, and 625 time steps

Example 3

The setup of this model is basically same as Example 2, and the only difference is that the rectangular metamaterial slab is replaced by a triangular slab with vertices (0.024, 0.002), (0.054, 0.002), and (0.024, 0.062). In this case, a hybrid grid shown as Fig. 3 is used for this example, where triangular mesh is used in the metamaterial slab and its neighboring elements, rectangular mesh is used in the vacuum region and PML region. Some snapshots of \(H_z\) with \(\tau =1 \cdot 10^{-13} \) and \(\tau =8 \cdot 10^{-13} \) are presented in Figs. 4 and 5, respectively. The results clearly show that the propagating wave bends toward the same side after crossing the interface between the metamaterial and the vacuum by obeying the Snell’s Law. Also the image quality becomes worse as the time step size increases, but the wave still propagates correctly and obeys the Snell’s Law.

6 Conclusion

In this paper, we first propose a new idea for constructing unconditionally stable leapfrog schemes for solving the time-dependent Maxwell’s equations with the finite element method. The unconditional stability and second-order in time error estimate of the proposed leapfrog scheme are proved. We then extend the idea to construct an unconditionally stable leapfrog finite element scheme for the Drude metamaterial Maxwell’s equations. Similar unconditional stability and error estimate as the standard Maxwell’s equations are established for this complicated metamaterial Maxwell’s equations. Finally, we extend the similar idea to solve for the Cohen-Monk PML model. Numerical results are presented to support our theoretical analysis with interesting backward wave propagation simulations. The idea of constructing unconditionally stable leapfrog schemes with finite element methods is very interesting, and we will further extend this to more complicated Maxwell’s equations in the future.Maxwell’s equations in the future.