1 Introduction

The well-posedness of relevant classes of partial differential equations hinges on subtle analytical and homological properties that underpin Hilbert complexes. A Hilbert complex is a sequence of Hilbert spaces \(X_i\) connected by closed densely defined linear operators \(\textrm{d}_{i}:X_i\rightarrow X_{i+1}\) such that the complex property holds, i.e., the range of \(\textrm{d}_{i}\) is contained in the kernel of \(\textrm{d}_{i+1}\). The best-known example is the de Rham complex which, for a connected domain \(\Omega \) of \(\mathbb {R}^3\), reads

figure a

where \(\mathfrak I\) identifies real numbers with constant functions, \(H^1(\Omega )\) is spanned by scalar-valued functions that are square-integrable over \(\Omega \) along with their gradient, while \(\varvec{H}({{\,\mathrm{\textbf{curl}}\,}};\Omega )\) and \(\varvec{H}({{\,\textrm{div}\,}};\Omega )\) are spanned by vector-valued functions that are square-integrable over \(\Omega \) along with their curl and divergence, respectively. The complex property corresponds, in this case, to the classical relations \({{\,\mathrm{\textbf{grad}}\,}}\mathfrak {I} = \varvec{0}\), \({{\,\mathrm{\textbf{curl}}\,}}{{\,\mathrm{\textbf{grad}}\,}}= \varvec{0}\), and \({{\,\textrm{div}\,}}{{\,\mathrm{\textbf{curl}}\,}}= 0\). We notice that we moreover have \({{\,\textrm{Im}\,}}{{\,\textrm{div}\,}}=L^2(\Omega )\). Depending on the topology of \(\Omega \), the previous properties can become stronger. Specifically, if \(\Omega \) is not crossed by any tunnel (i.e., its first Betti number \(b_1\) is zero), then \({{\,\textrm{Im}\,}}{{\,\mathrm{\textbf{grad}}\,}}= {{\,\textrm{Ker}\,}}{{\,\mathrm{\textbf{curl}}\,}}\). Similarly, if \(\Omega \) does not enclose any void (i.e., its second Betti number \(b_2\) is zero), then \({{\,\textrm{Im}\,}}{{\,\mathrm{\textbf{curl}}\,}}= {{\,\textrm{Ker}\,}}{{\,\textrm{div}\,}}\). When both these properties hold, the complex is said to be exact. For domains with more complicated topologies, the defect of exactness is reflected by the fact that certain among the following cohomology spaces may be non-trivial:

$$\begin{aligned} \begin{aligned} \mathcal {H}^{0}&:={{\,\textrm{Ker}\,}}{{\,\mathrm{\textbf{grad}}\,}}/{{\,\textrm{Im}\,}}\mathfrak {I},&\qquad \mathcal {H}^{1}&:={{\,\textrm{Ker}\,}}{{\,\mathrm{\textbf{curl}}\,}}/{{\,\textrm{Im}\,}}{{\,\mathrm{\textbf{grad}}\,}}, \\ \mathcal {H}^{2}&:={{\,\textrm{Ker}\,}}{{\,\textrm{div}\,}}/{{\,\textrm{Im}\,}}{{\,\mathrm{\textbf{curl}}\,}},&\qquad \mathcal {H}^{3}&:=L^2(\Omega )/{{\,\textrm{Im}\,}}{{\,\textrm{div}\,}}. \end{aligned} \end{aligned}$$

It holds \(\mathcal {H}^{0}=\{0\}\) (since \(\Omega \) is connected) and \(\mathcal {H}^{3}=\{0\}\) (since \({{\,\textrm{Im}\,}}{{\,\textrm{div}\,}}=L^2(\Omega )\) as mentioned above). However, \(\mathcal {H}^{1}\) or \(\mathcal {H}^{2}\) are non-trivial if, respectively, \(\Omega \) is crossed by tunnel(s) or encloses void(s). As a matter of fact, the de Rham theorem states that the above cohomology spaces, with the exception of \(\mathcal {H}^{0}\), are isomorphic to the simplicial cohomology spaces through the de Rham maps [22]. Notice, in passing, that the isomorphism could be extended to \(\mathcal {H}^{0}\) with the usual choice of replacing \(\mathbb {R}\) with the trivial space at the beginning of the sequence, but this would result in the impossibility for the complex to be exact. An important consequence of the de Rham theorem is that each \(\mathcal {H}^{i}\), \(i\in \{1,2,3\}\), has dimension equal to \(b_i\).

The compatible numerical approximation of problems whose stability hinges on Hilbert complexes is based on discrete versions of the relevant complex with cohomology spaces isomorphic to the continuous ones. The first Finite Element approximations of vector-valued spaces in the de Rham sequence date from the late 70s [26, 27]. Discrete \(\varvec{H}({{\,\textrm{div}\,}};\Omega )\)- and \(L^2(\Omega )\)-conforming Finite Element spaces mimicking the exactness property of the rightmost portion of the de Rham complex have been used since the early 80s to prove the stability of mixed formulations of scalar diffusion problems [23, 24]. The first use of the full de Rham complex, on the other hand, was made a few years later to devise stable approximations of problems in computational electromagnetism [10]. In recent years, the study of compatible Finite Elements has gravitated towards generalisations based on the formalism of exterior calculus (see, e.g., [1] and references therein).

While very powerful from certain points of view, the Finite Element paradigm is typically limited to meshes composed of elements with a limited number of shapes (usually, tetrahedra or hexahedra), which makes meshing complicated geometries or local mesh refinement more challenging. To circumvent this limitation, polytopal paradigms have emerged enabling the support of much more general meshes, including, e.g., non-matching interfaces and polyhedral elements. The high-level approach of polytopal paradigms can also lead, even on standard (e.g., hexahedral) meshes, to a lower number of unknowns compared to Finite Elements; see, e.g., [16, Table 2]. A first example of low-order polyhedral discrete Hilbert complex has been obtained using the Mimetic Finite Difference method (see, e.g., [6] and references therein). Related approach are the Discrete Geometric Approach [13] and Compatible Discrete Operators [8, 9], that hinge on the notions of dual mesh and discrete Hodge operators.

More recent developments have focused on the extension to high order of accuracy. We can cite, e.g., the Virtual Element Method, which has been used in [3, 4] to devise arbitrary-order discrete Hilbert complexes on general polyhedral meshes.

Recent works [16, 20] have introduced a fully discrete approach to the design and analysis of arbitrary-order discrete de Rham (DDR) complexes on general polyhedral meshes; see [11, 14, 15, 17, 18, 25] for applications and further developments, as well as [5] for an in-depth study of the links with the Virtual Element method. The basic idea of the DDR approach is to replace both spaces and operators with discrete counterparts. The discrete operators are constructed, through discrete integration by parts formulas, in order to fulfill suitable polynomial consistency properties. Assuming \(\Omega \) polyhedral and following the notations of [16, 20], the DDR complex corresponding to a polynomial degree \(k\ge 0\) reads

figure b

Precise definitions of the spaces and operators above are provided in Sect. 3. The cohomology spaces of this complex are

$$\begin{aligned} \begin{aligned} \mathcal {H}^{0,(k)}&:={{\,\textrm{Ker}\,}}\underline{\varvec{G}}_h^{k}/{{\,\textrm{Im}\,}}\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k},&\quad \mathcal {H}^{1,(k)}&:={{\,\textrm{Ker}\,}}\underline{\varvec{C}}_h^{k}/{{\,\textrm{Im}\,}}\underline{\varvec{G}}_h^{k},\\ \mathcal {H}^{2,(k)}&:={{\,\textrm{Ker}\,}}D_h^{k}/{{\,\textrm{Im}\,}}\underline{\varvec{C}}_h^{k},&\quad \mathcal {H}^{3,(k)}&:=\mathcal {P}^{k}(\mathcal {T}_{h})/{{\,\textrm{Im}\,}}D_h^{k}. \end{aligned} \end{aligned}$$

It has been proved in [16, Theorems 1 and 2] that these cohomology spaces are trivial for domains with trivial topology (i.e., such that \(b_0 = 1\) and \(b_1 = b_2 = b_3 = 0\)), so that the \(\textrm{DDR}(k)\) complex is exact in this case. The purpose of this paper is to study these spaces for domains with non-trivial topologies by proving the following theorem:

Theorem 1

(Cohomology of the \(\textrm{DDR}(k)\) complex) For any \(k\ge 0\), the cohomology spaces defined by (1.4) are isomorphic to the de Rham cohomology spaces (1.2).

In the context of finite element methods on standard meshes (interpreted in the exterior calculus framework), this isomorphism is proved in [2, Section 5.5]. Some polytopal methods are covered by [12, Proposition 5.16], but in a theoretical framework that does not describe computable polytopal methods, and does not immediately give a practical way to compute generators of the discrete cohomology groups. To the best of our knowledge, Theorem 1 is the first of its kind for an arbitrary-order fully computable polytopal complex; moreover, the technique of proof we develop provides an explicit and cheap way to describe the cohomology spaces (see Remark 13 at the end of the paper).

In the case of a topologically trivial domain, Theorem 1 also establishes the exactness of the global DDR complex in a more straightforward way than the previous proofs in [16, 17], using only the local exactness in each element. In a nutshell, the idea of the proof of Theorem 1 consists in showing that, for any \(k\ge 1\), the cohomology spaces (1.4) are isomorphic to \(\mathcal {H}^{0,(0)}\), \(\mathcal {H}^{1,(0)}\), \(\mathcal {H}^{2,(0)}\), and \(\mathcal {H}^{3,(0)}\), and, connecting through the de Rham map the DDR(0) complex to the CW complex defined by the mesh, that these spaces are in turn isomorphic to the de Rham cohomology spaces (1.2). This is done using the abstract framework originally introduced in [18, Section 2] in the context of serendipity DDR methods. In passing, as a consequence of Theorem 1 and of the discussion in [18, Section 6.6], we immediately have also the following result:

Corollary 2

(Cohomology of the serendipity DDR complex) The cohomology spaces of the serendipity DDR complex presented in [18, Section 5] are isomorphic to the de Rham cohomology spaces (1.2).

The rest of this work is organised as follows. In Sect. 2 we introduce the general setting (mesh, polynomial spaces, etc.). In Sect. 3 we briefly recall the DDR complex of [16]. Section 4 contains the proof of Theorem 1, and Sect. 5 provides a brief conclusion and perspectives to this work.

2 Setting

2.1 Domain and mesh

Denote by \(\Omega \subset \mathbb {R}^3\) a connected polyhedral domain. We consider a polyhedral mesh \(\mathcal {M}_{h}:=\mathcal {T}_{h}\cup \mathcal {F}_{h}\cup \mathcal {E}_{h}\cup \mathcal {V}_{h}\), where \(\mathcal {T}_{h}\) gathers the elements, \(\mathcal {F}_{h}\) the faces, \(\mathcal {E}_{h}\) the edges, and \(\mathcal {V}_{h}\) the vertices. Both elements and faces are assumed to be topologically trivial. The notations and assumptions are as in [16]. In particular, for each face \(F\in \mathcal {F}_{h}\), we fix a unit normal \(\varvec{n}_F\) to F and, for each edge \(E\in \mathcal {E}_{h}\), a unit tangent \(\varvec{t}_E\). Given \(T\in \mathcal {T}_{h}\), \(\mathcal {F}_{T}\) gathers the faces on the boundary \(\partial T\) of T and \(\mathcal {E}_{T}\) the edges in \(\partial T\). For \(F\in \mathcal {F}_{T}\), \(\omega _{TF}\in \{-1,+1\}\) is such that \(\omega _{TF}\varvec{n}_F\) is the outer normal on F to T.

Each face \(F\in \mathcal {F}_{h}\) is oriented counter-clockwise with respect to \(\varvec{n}_F\) and, for \(E\in \mathcal {E}_{F}\) with \(\mathcal {E}_{F}\) set of edges of F, we let \(\omega _{FE}\in \{-1,+1\}\) be such that \(\omega _{FE}=+1\) if \(\varvec{t}_E\) points along the boundary \(\partial F\) of F in the clockwise sense, and \(\omega _{FE}=-1\) otherwise; we also denote by \(\varvec{n}_{FE}\) the unit normal vector to E, in the plane spanned by F, such that \((\varvec{t}_E,\varvec{n}_{FE},\varvec{n}_F)\) is a right-handed system of coordinate; it can be checked that \(\omega _{FE}\varvec{n}_{FE}\) points outside F. For all \(V\in \mathcal {V}_{h}\), \(\varvec{x}_V\in \mathbb {R}^3\) denotes the coordinate vector of V. For any mesh face \(F\in \mathcal {F}_{h}\), we denote by \({{\,\mathrm{\textbf{grad}}\,}}_F\) and \({{\,\textrm{div}\,}}_F\) the tangent gradient and divergence operators acting on smooth enough functions. Moreover, for any \(r:F\rightarrow \mathbb {R}\) and \(\varvec{z}:F\rightarrow \mathbb {R}^2\) smooth enough, we let \({{\,\mathrm{\textbf{rot}}\,}}_F r:=({{\,\mathrm{\textbf{grad}}\,}}_F r)^\perp \) and \({{\,\textrm{rot}\,}}_F\varvec{z}={{\,\textrm{div}\,}}_F(\varvec{z}^\perp )\), with \(\perp \) denoting the rotation of angle \(-\frac{\pi }{2}\) in the oriented tangent space to F.

The mesh we consider is such that \((\mathcal {T}_{h},\mathcal {F}_{h})\) belongs to a regular sequence as per [19, Definition 1.9]. This assumption ensures the existence, for each \({\textsf {P}}\in \mathcal {T}_{h}\cup \mathcal {F}_{h}\cup \mathcal {E}_{h}\), of a point \(\varvec{x}_{{\textsf {P}}}\in {\textsf {P}}\) such that a ball centered at \(\varvec{x}_{{\textsf {P}}}\) and of radius uniformly comparable to the diameter of \({\textsf {P}}\) is contained in \({\textsf {P}}\).

2.2 Polynomial spaces and \(L^2\)-orthogonal projectors

For any \({\textsf {P}}\in \mathcal {M}_{h}\) and an integer \(\ell \ge 0\), we denote by \(\mathcal {P}^{\ell }({\textsf {P}})\) the space spanned by the restriction to \({\textsf {P}}\) of three-variate polynomial functions of total degree \(\le \ell \), and by \(\mathcal {P}^{0,\ell }({\textsf {P}})\) its subspace made of polynomials whose integral over \({\textsf {P}}\) vanishes. Following standard conventions on degrees of polynomials, we moreover set \(\mathcal {P}^{-1}({\textsf {P}})=\{0\}\). For \(F\in \mathcal {F}_{h}\), \(\varvec{\mathcal {P}}^{\ell }(F)\) (boldface) is the space of vector-valued polynomials of degree \(\le \ell \) on F, that are tangent to the face. For \(T\in \mathcal {T}_{h}\), on the other hand, we set \(\varvec{\mathcal {P}}^{\ell }(T):=\mathcal {P}^{\ell }(T)^3\). We note the following decompositions of the above spaces of vector-valued polynomials (see [2, Eq. (3.11)] in the context of polynomial differential forms, and [1, Table 6.1] for the translation in terms of vector proxies): For all \(F\in \mathcal {F}_{h}\),

$$\begin{aligned} \begin{aligned}&\varvec{\mathcal {P}}^{\ell }(F) = \varvec{\mathcal {G}}^{\ell }(F) \oplus \varvec{\mathcal {G}}^{\textrm{c},\ell }(F)\quad \text { with}~ \varvec{\mathcal {G}}^{\ell }(F):={{\,\mathrm{\textbf{grad}}\,}}{}_{F}\mathcal {P}^{\ell +1}(F) \text { and } \varvec{\mathcal {G}}^{\textrm{c},\ell }(F):=(\varvec{x}-\varvec{x}_F)^\perp \mathcal {P}^{\ell -1}(F)\\&\quad = \varvec{\mathcal {R}}^{\ell }(F) \oplus \varvec{\mathcal {R}}^{\textrm{c},\ell }(F) \qquad \quad \text { with}~\varvec{\mathcal {R}}^{\ell }(F):={{\,\mathrm{\textbf{rot}}\,}}{}_{F}\mathcal {P}^{\ell +1}(F) \text { and }\varvec{\mathcal {R}}^{\textrm{c},\ell }(F):=(\varvec{x}-\varvec{x}_F)\mathcal {P}^{\ell -1}(F) \end{aligned} \end{aligned}$$

and, for all \(T\in \mathcal {T}_{h}\),

$$\begin{aligned} \begin{aligned}&\varvec{\mathcal {P}}^{\ell }(T) = \varvec{\mathcal {G}}^{\ell }(T) \oplus \varvec{\mathcal {G}}^{\textrm{c},\ell }(T)\quad \text { with}~\varvec{\mathcal {G}}^{\ell }(T):={{\,\mathrm{\textbf{grad}}\,}}\mathcal {P}^{\ell +1}(T) \text { and }\varvec{\mathcal {G}}^{\textrm{c},\ell }(T):=(\varvec{x}-\varvec{x}_T)\times \varvec{\mathcal {P}}^{\ell -1}(T)\\&\quad = \varvec{\mathcal {R}}^{\ell }(T) \oplus \varvec{\mathcal {R}}^{\textrm{c},\ell }(T) \qquad \quad \text { with}~\varvec{\mathcal {R}}^{\ell }(T):={{\,\mathrm{\textbf{curl}}\,}}\mathcal {P}^{\ell +1}(T)\text { and } \varvec{\mathcal {R}}^{\textrm{c},\ell }(T):=(\varvec{x}-\varvec{x}_T)\mathcal {P}^{\ell -1}(T). \end{aligned} \end{aligned}$$

Given a polynomial (sub)space \(\mathcal {X}^\ell ({\textsf {P}})\) on \({\textsf {P}}\in \mathcal {M}_{h}\), the corresponding \(L^2\)-orthogonal projector is denoted by \(\pi _{\mathcal {X},{\textsf {P}}}^\ell \), and boldface fonts will be used when the elements of \(\mathcal {X}^\ell ({\textsf {P}})\) are vector-valued. Similarly, when considering a complement \(\varvec{\mathcal {X}}^{\textrm{c},\ell }({\textsf {P}})\) with \(\varvec{\mathcal {X}}\in \{\varvec{\mathcal {G}},\varvec{\mathcal {R}}\}\), \(\varvec{\pi }_{\varvec{\mathcal {X}},{\textsf {P}}}^{\textrm{c},\ell }\) denotes the \(L^2\)-orthogonal projector on \(\varvec{\mathcal {X}}^{\textrm{c},\ell }({\textsf {P}})\).

3 DDR complex

In this section we briefly recall the DDR complex for a generic polynomial degree \(k\ge 0\). A complete exposition can be found in [16, Section 3]; see also [7], where a more compact and general presentation based on differential forms is provided. At the start of Sect. 4.1, we present the special case of the lowest-order degree \(k=0\), which can be described using simpler formulas.

3.1 Spaces

The DDR counterparts of \(H^1(\Omega )\), \(\varvec{H}({{\,\mathrm{\textbf{curl}}\,}};\Omega )\), \(\varvec{H}({{\,\textrm{div}\,}};\Omega )\), and \(L^2(\Omega )\) are respectively defined as follows:

$$\begin{aligned}{} & {} \begin{aligned} \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}&:=\Big \{ \underline{q}_h =\big ((q_T)_{T\in \mathcal {T}_{h}},(q_F)_{F\in \mathcal {F}_{h}},(q_E)_{E\in \mathcal {E}_{h}},(q_V)_{V\in \mathcal {V}_{h}}\big )\,:\,\\&\qquad q_T\in \mathcal {P}^{k-1}(T) \,\text { for all}\, T\in \mathcal {T}_{h}, q_F\in \mathcal {P}^{k-1}(F) \,\text { for all}\, F\in \mathcal {F}_{h},\\&\qquad q_E\in \mathcal {P}^{k-1}(E) \,\text { for all}\, E\in \mathcal {E}_{h}, \,\text { and}\, q_V\in \mathbb {R}\text { for all}\, V\in \mathcal {V}_{h}\Big \}, \end{aligned} \end{aligned}$$
$$\begin{aligned}{} & {} \begin{aligned} \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}&:=\Big \{ \underline{\varvec{v}}_h =\big ( (\varvec{v}_{\varvec{\mathcal {R}},T},\varvec{v}_{\varvec{\mathcal {R}},T}^\textrm{c})_{T\in \mathcal {T}_{h}},(\varvec{v}_{\varvec{\mathcal {R}},F},\varvec{v}_{\varvec{\mathcal {R}},F}^\textrm{c})_{F\in \mathcal {F}_{h}}, (v_E)_{E\in \mathcal {E}_{h}} \big )\,:\,\\&\qquad \varvec{v}_{\varvec{\mathcal {R}},T}\in \varvec{\mathcal {R}}^{k-1}(T) \,\text { and}\, \varvec{v}_{\varvec{\mathcal {R}},T}^\textrm{c}\in \varvec{\mathcal {R}}^{\textrm{c},k}(T) \,\text { for all}\, T\in \mathcal {T}_{h},\\&\qquad \varvec{v}_{\varvec{\mathcal {R}},F}\in \varvec{\mathcal {R}}^{k-1}(F) \,\text { and}\, \varvec{v}_{\varvec{\mathcal {R}},F}^\textrm{c}\in \varvec{\mathcal {R}}^{\textrm{c},k}(F) \,\text { for all}\, F\in \mathcal {F}_{h},\\&\qquad \text {and}\, v_E\in \mathcal {P}^{k}(E) \text { for all }\, E\in \mathcal {E}_{h}\Big \}, \end{aligned} \end{aligned}$$
$$\begin{aligned}{} & {} \begin{aligned} \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}&:=\Big \{ \underline{\varvec{w}}_h =\big ((\varvec{w}_{\varvec{\mathcal {G}},T},\varvec{w}_{\varvec{\mathcal {G}},T}^\textrm{c})_{T\in \mathcal {T}_{h}}, (w_F)_{F\in \mathcal {F}_{h}}\big )\,:\,\\&\qquad \varvec{w}_{\varvec{\mathcal {G}},T}\in \varvec{\mathcal {G}}^{k-1}(T) \,\text { and}\,\, \varvec{w}_{\varvec{\mathcal {G}},T}^\textrm{c}\in \varvec{\mathcal {G}}^{\textrm{c},k}(T) \,\text { for all}\, T\in \mathcal {T}_{h},\\&\qquad \text {and}\, w_F\in \mathcal {P}^{k}(F) \text { for all}\, F\in \mathcal {F}_{h}\Big \}, \end{aligned} \end{aligned}$$


$$\begin{aligned} \mathcal {P}^{k}(\mathcal {T}_{h}):=\left\{ r_h\in L^2(\Omega )\,:\,(r_h)_{|T}\in \mathcal {P}^{k}(T) \text { for all} \,T\in \mathcal {T}_{h}\right\} . \end{aligned}$$

The restrictions of the above spaces and of their elements to a mesh entity \({\textsf {P}}\in \mathcal {M}_{h}\) are obtained gathering the polynomial components on \({\textsf {P}}\) and its boundary, and will be denoted replacing the subscript h by \({\textsf {P}}\). So, for example, \(\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},E}^{k}\), \(\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},F}^{k}\) and \(\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\) are, respectively, the restrictions of \(\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\) to an edge \(E\in \mathcal {E}_{h}\), a face \(F\in \mathcal {F}_{h}\) or an element \(T\in \mathcal {T}_{h}\). Similarly, \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},F}^{k}\) and \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\) are the restrictions of \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) to a face \(F\in \mathcal {F}_{h}\) or an element \(T\in \mathcal {T}_{h}\). Following the usual DDR notations, underlined objects represent spaces or vectors having polynomial components, and we use boldface for vector-valued polynomial functions or operators. The sans-serif font is used for “complete” differential operators, that only appear in the DDR complex through projections on particular polynomial spaces.

3.2 Discrete vector calculus operators and potentials

3.2.1 Gradient

For any \(E\in \mathcal {E}_{h}\), the edge scalar trace \(\gamma _E^{k+1}:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},E}^{k}\rightarrow \mathcal {P}^{k+1}(E)\) is such that, for all \(\underline{q}_E\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},E}^{k}\), \(\gamma _E^{k+1}\underline{q}_E\) is the unique polynomial in \(\mathcal {P}^{k+1}(E)\) that takes the value \(q_V\) in each vertex V of E and satisfies \(\pi _{\mathcal {P},E}^{k-1}\gamma _E^{k+1}\underline{q}_E = q_E\). The edge gradient \(G_E^{k}:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},E}^{k}\rightarrow \mathcal {P}^{k}(E)\) is defined as: For all \(\underline{q}_E\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},E}^{k}\),

$$\begin{aligned} \int _E G_E^{k}\underline{q}_E r_E = -\int _E q_E r_E' +q_{V_2}r_E(\varvec{x}_{V_2})-q_{V_1}r_E(\varvec{x}_{V_1})\qquad \forall r_E\in \mathcal {P}^{k}(E),\nonumber \\ \end{aligned}$$

where \(V_1,V_2\) are the two vertices of E numbered according to \(\varvec{t}_E\).

Remark 3

(Definition of the edge trace and gradient) With the notation \(q_{\mathcal {E}_{h}}\) used, e.g., in [17], we have \(\gamma _E^{k+1}\underline{q}_E=(q_{\mathcal {E}_{h}})_{|E}\). Moreover, it is a simple matter to check that \(G_E^{k}\underline{q}_E=(\gamma _E^{k+1}\underline{q}_E)'\), with the derivative taken in the direction of \(\varvec{t}_E\).

For any \(F\in \mathcal {F}_{h}\), the face gradient \(\varvec{\textsf{G}}_F^{k}:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},F}^{k}\rightarrow \varvec{\mathcal {P}}^{k}(F)\) and the face scalar trace \(\gamma _F^{k+1}:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},F}^{k}\rightarrow \mathcal {P}^{k+1}(F)\) are such that, for all \(\underline{q}_F\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},F}^{k}\),

$$\begin{aligned} \int _F\varvec{\textsf{G}}_F^{k}\underline{q}_F\cdot \varvec{v}_F= & {} -\int _F q_F{{\,\textrm{div}\,}}_F\varvec{v}_F \nonumber \\{} & {} + \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E \gamma _E^{k+1}\underline{q}_E~(\varvec{v}_F\cdot \varvec{n}_{FE}) \qquad \forall \varvec{v}_F\in \varvec{\mathcal {P}}^{k}(F) \end{aligned}$$


$$\begin{aligned} \int _F\gamma _F^{k+1}\underline{q}_F{{\,\textrm{div}\,}}_F\varvec{v}_F= & {} -\int _F\varvec{\textsf{G}}_F^{k}\underline{q}_F\cdot \varvec{v}_F \\{} & {} +\sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E \gamma _E^{k+1}\underline{q}_E~(\varvec{v}_F\cdot \varvec{n}_{FE}) \qquad \forall \varvec{v}_F\in \varvec{\mathcal {R}}^{\textrm{c},k+2}(F). \end{aligned}$$

For all \(T\in \mathcal {T}_{h}\), the element gradient \(\varvec{\textsf{G}}_T^{k}:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\rightarrow \varvec{\mathcal {P}}^{k}(T)\) is defined such that, for all \(\underline{q}_T\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\),

$$\begin{aligned} \int _T\varvec{\textsf{G}}_T^{k}\underline{q}_T\cdot \varvec{v}_T \!= \!-\!\int _T q_T{{\,\textrm{div}\,}}\varvec{v}_T \!+\! \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F\gamma _F^{k+1}\underline{q}_F~(\varvec{v}_T\cdot \varvec{n}_F) \quad \forall \varvec{v}_T\in \varvec{\mathcal {P}}^{k}(T).\nonumber \\ \end{aligned}$$

Finally, the global discrete gradient \(\underline{\varvec{G}}_h^{k}:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\rightarrow \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) is obtained collecting the projections of local gradients on the polynomial components of \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\): For all \(\underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\),

$$\begin{aligned}{} & {} \underline{\varvec{G}}_h^{k}\underline{q}_h:=\big ( ( \varvec{\pi }_{\varvec{\mathcal {R}},T}^{k-1}\varvec{\textsf{G}}_T^{k}\underline{q}_T, \varvec{\pi }_{\varvec{\mathcal {R}},T}^{\textrm{c},k}\varvec{\textsf{G}}_T^{k}\underline{q}_T )_{T\in \mathcal {T}_{h}}, \nonumber \\{} & {} \quad \qquad \qquad ( \varvec{\pi }_{\varvec{\mathcal {R}},F}^{k-1}\varvec{\textsf{G}}_F^{k}\underline{q}_F,\varvec{\pi }_{\varvec{\mathcal {R}},F}^{\textrm{c},k}\varvec{\textsf{G}}_F^{k}\underline{q}_F )_{F\in \mathcal {F}_{h}},\nonumber \\{} & {} \quad \qquad \qquad ( G_E^{k} q_E )_{E\in \mathcal {E}_{h}} \big ). \end{aligned}$$

3.2.2 Curl

For all \(F\in \mathcal {F}_{h}\), the face curl \(C_F^{k}:\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},F}^{k}\rightarrow \mathcal {P}^{k}(F)\) and the face tangential trace \(\varvec{\gamma }_{\textrm{t},F}^{k}:\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},F}^{k}\rightarrow \varvec{\mathcal {P}}^{k}(F)\) are such that, for all \(\underline{\varvec{v}}_F\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},F}^{k}\),

$$\begin{aligned} \int _FC_F^{k}\underline{\varvec{v}}_F~r_F = \int _F\varvec{v}_{\varvec{\mathcal {R}},F}\cdot {{\,\mathrm{\textbf{rot}}\,}}_F r_F - \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E v_E~r_F \quad \forall r_F\in \mathcal {P}^{k}(F)\qquad \end{aligned}$$


$$\begin{aligned} \int _F\varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{v}}_F\cdot ({{\,\mathrm{\textbf{rot}}\,}}_F r_F + \varvec{w}_F)= & {} \int _FC_F^{k}\underline{\varvec{v}}_F~r_F + \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E v_E r_F\\{} & {} + \int _F\varvec{v}_{\varvec{\mathcal {R}},F}^\textrm{c}\cdot \varvec{w}_F \quad \forall (r_F,\varvec{w}_F)\in \mathcal {P}^{0,k+1}(F)\!\times \!\varvec{\mathcal {R}}^{\textrm{c},k}(F). \end{aligned}$$

For all \(T\in \mathcal {T}_{h}\), the element curl \(\varvec{\textsf{C}}_T^{k}:\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\rightarrow \varvec{\mathcal {P}}^{k}(T)\) and the vector potential reconstruction \(\varvec{P}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}:\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\rightarrow \varvec{\mathcal {P}}^{k}(T)\) are defined such that, for all \(\underline{\varvec{v}}_T\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\),

$$\begin{aligned} \int _T\varvec{\textsf{C}}_T^{k}\underline{\varvec{v}}_T\cdot \varvec{w}_T= & {} \int _T\varvec{v}_{\varvec{\mathcal {R}},T}\cdot {{\,\mathrm{\textbf{curl}}\,}}\varvec{w}_T \nonumber \\{} & {} + \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F\varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{v}}_F\cdot (\varvec{w}_T\times \varvec{n}_F) \quad \forall \varvec{w}_T\in \varvec{\mathcal {P}}^{k}(T)\qquad \end{aligned}$$


$$\begin{aligned} \int _T\varvec{P}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\underline{\varvec{v}}_T\cdot ({{\,\mathrm{\textbf{curl}}\,}}\varvec{w}_T \!+ \!\varvec{z}_T)= & {} \int _T\varvec{\textsf{C}}_T^{k}\underline{\varvec{v}}_T\cdot \varvec{w}_T \!-\! \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F\varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{v}}_F\cdot (\varvec{w}_T\times \varvec{n}_F)\\{} & {} + \int _T\varvec{v}_{\varvec{\mathcal {R}},T}^\textrm{c}\cdot \varvec{z}_T\\{} & {} \quad \forall (\varvec{w}_T,\varvec{z}_T)\in \varvec{\mathcal {G}}^{\textrm{c},k+1}(T)\times \varvec{\mathcal {R}}^{\textrm{c},k}(T). \end{aligned}$$

Finally, the global discrete curl \(\underline{\varvec{C}}_h^{k}:\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\rightarrow \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\) is obtained setting, for all \(\underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\),

$$\begin{aligned} \underline{\varvec{C}}_h^{k}\underline{\varvec{v}}_h:=\big ( ( \varvec{\pi }_{\varvec{\mathcal {G}},T}^{k-1}\varvec{\textsf{C}}_T^{k}\underline{\varvec{v}}_T,\varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{\textsf{C}}_T^{k}\underline{\varvec{v}}_T )_{T\in \mathcal {T}_{h}}, ( C_F^{k}\underline{\varvec{v}}_F )_{F\in \mathcal {F}_{h}} \big ). \end{aligned}$$

3.2.3 Divergence

For all \(T\in \mathcal {T}_{h}\), the element divergence \(D_T^{k}:\underline{\varvec{X}}_{{{\,\textrm{div}\,}},T}^{k}\rightarrow \mathcal {P}^{k}(T)\) and vector potential reconstruction \(\varvec{P}_{{{\,\textrm{div}\,}},T}^{k}:\underline{\varvec{X}}_{{{\,\textrm{div}\,}},T}^{k}\rightarrow \varvec{\mathcal {P}}^{k}(T)\) are defined by: For all \(\underline{\varvec{w}}_T\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},T}^{k}\),

$$\begin{aligned} \int _TD_T^{k}\underline{\varvec{w}}_T~r_T = -\int _T\varvec{w}_{\varvec{\mathcal {G}},T}\cdot {{\,\mathrm{\textbf{grad}}\,}}r_T + \sum _{F\in \mathcal {F}_{T}}\!\omega _{TF}\!\int _F w_F r_T \qquad \forall r_T\in \mathcal {P}^{k}(T)\nonumber \\ \end{aligned}$$


$$\begin{aligned} \int _T\varvec{P}_{{{\,\textrm{div}\,}},T}^{k}\underline{\varvec{w}}_T\cdot ({{\,\mathrm{\textbf{grad}}\,}}r_T + \varvec{z}_T)= & {} -\int _TD_T^{k}\underline{\varvec{w}}_T~r_T\\{} & {} + \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _Fw_F~r_T + \int _T\varvec{w}_{\varvec{\mathcal {G}},T}^\textrm{c}\cdot \varvec{z}_T \\{} & {} \forall (r_T,\varvec{z}_T)\in \mathcal {P}^{0,k+1}(T)\times \varvec{\mathcal {G}}^{\textrm{c},k}(T). \end{aligned}$$

The global discrete divergence \(D_h^{k}:\underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\rightarrow \mathcal {P}^{k}(\mathcal {T}_{h})\) is obtained setting, for all \(\underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\),

$$\begin{aligned} (D_h^{k}\underline{\varvec{w}}_h)_{|T}:=D_T^{k}\underline{\varvec{w}}_T\qquad \forall T\in \mathcal {T}_{h}, \end{aligned}$$

3.3 DDR complex

The definition of the DDR complex (1.3) is completed setting, for all \(q:\Omega \rightarrow \mathbb {R}\) smooth enough,

$$\begin{aligned} \underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k} q:=\big ( (\pi _{\mathcal {P},T}^{k-1} q_{|T})_{T\in \mathcal {T}_{h}}, (\pi _{\mathcal {P},F}^{k-1} q_{|F})_{F\in \mathcal {F}_{h}}, (\pi _{\mathcal {P},E}^{k-1} q_{|E})_{E\in \mathcal {E}_{h}}, (q(\varvec{x}_V))_{V\in \mathcal {V}_{h}} \big ).\nonumber \\ \end{aligned}$$

A synopsis of the definitions of the DDR spaces and operators is provided in Table 1.

Table 1 Definitions of the spaces and operators appearing in the DDR complex (1.3)

4 Cohomology of the DDR complex

This section contains the proof Theorem 1 preceded by some preliminary results.

4.1 Cohomology of the \(\textrm{DDR}(0)\) complex

To make the analysis of the cohomology of DDR(\(0\)) easier to read, we explicitly write here the definitions of the spaces and operators in this case. For \(k=0\), the gradient space only has scalar unknowns on the vertices, the curl space on the edges, the divergence space on the faces, and the \(L^2\)-like space on the elements. All these spaces can therefore be easily identified as follows:

$$\begin{aligned} \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}= & {} \Big \{\underline{q}_h=(q_V)_{V\in \mathcal {V}_{h}}\,:\,q_V\in \mathbb {R}\text { for all }V\in \mathcal {V}_{h}\Big \}\simeq \mathbb {R}^{\mathcal {V}_{h}}, \end{aligned}$$
$$\begin{aligned} \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}= & {} \Big \{\underline{\varvec{v}}_h=(v_E)_{E\in \mathcal {E}_{h}}\,:\,v_E\in \mathbb {R}\text { for all }E\in \mathcal {E}_{h}\Big \}\simeq \mathbb {R}^{\mathcal {E}_{h}}, \end{aligned}$$
$$\begin{aligned} \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0}= & {} \Big \{\underline{\varvec{w}}_h= (w_F)_{F\in \mathcal {F}_{h}}\,:\,w_F\in \mathbb {R}\text { for all }F\in \mathcal {F}_{h}\Big \}\simeq \mathbb {R}^{\mathcal {F}_{h}}, \end{aligned}$$
$$\begin{aligned} \mathcal {P}^{0}(\mathcal {T}_{h})= & {} \left\{ r_h\in L^2(\Omega )\,:\,(r_h)_{|T}\equiv r_T\in \mathbb {R} \text{ for } \text{ all } T\in \mathcal {T}_{h}\right\} \simeq \mathbb {R}^{\mathcal {T}_{h}}. \end{aligned}$$

The differential operators are linear combinations of values on the boundary of the relevant mesh entities: For all \((\underline{q}_h,\underline{\varvec{v}}_h,\underline{\varvec{w}}_h)\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}\times \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}\times \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0}\),

$$\begin{aligned} \underline{\varvec{G}}_h^{0}\underline{q}_h= & {} (G_E^{0}\underline{q}_E)_{E\in \mathcal {E}_{h}} \quad \text{ with } G_E^{0}\underline{q}_E =\frac{q_{V_2}-q_{V_1}}{|E|} \quad \forall E\in \mathcal {E}_{h}, \end{aligned}$$
$$\begin{aligned} \underline{\varvec{C}}_h^{0}\underline{\varvec{v}}_h= & {} (C_F^{0}\underline{\varvec{v}}_F)_{F\in \mathcal {F}_{h}} \quad \text{ with } C_F^{0}\underline{\varvec{v}}_F =-\frac{1}{|F|}\sum _{E\in \mathcal {E}_{F}}\omega _{FE}|E|v_E \quad \forall F\in \mathcal {F}_{h}, \nonumber \\ \end{aligned}$$
$$\begin{aligned} D_h^{0}\underline{\varvec{w}}_h= & {} (D_T^{0}\underline{\varvec{w}}_T)_{T\in \mathcal {T}_{h}} \quad \text{ with } D_T^{0}\underline{\varvec{w}}_T =\frac{1}{|T|}\sum _{F\in \mathcal {E}_{F}}\omega _{TF}|F|w_F \quad \forall T\in \mathcal {T}_{h}. \nonumber \\ \end{aligned}$$

Above, \(|{\textsf {P}}|\) represents the Hausdorff measure of the mesh entity \({\textsf {P}}\in \mathcal {M}_{h}\) (its length for an edge, area for a face, volume for an element) and, in (4.2a), we have numbered the vertices \(V_1,V_2\) of E so that \(\varvec{t}_E\) points from \(V_1\) to \(V_2\).

Lemma 4

(Cohomology of the \(\textrm{DDR}(0)\) complex) The cohomology spaces defined by (1.4) with \(k=0\) are isomorphic to the de Rham cohomology spaces (1.2).


The mesh \(\mathcal {M}_{h}\) can be seen as a cellular (CW) complex with vertices in \(\mathcal {V}_{h}\) as 0-cells, edges in \(\mathcal {E}_{h}\) as 1-cells, faces in \(\mathcal {F}_{h}\) as 2-cells, and elements in \(\mathcal {T}_{h}\) as 3-cells. With this interpretation, “discrete de Rham” maps create isomorphisms between the \(\textrm{DDR}(0)\) spaces (with first space \(\mathbb {R}\) instead of \(\{0\}\)). Specifically, we have the following diagram:

figure c

in which \(\mathcal {V}_{h}^*\), \(\mathcal {E}_{h}^*\), \(\mathcal {F}_{h}^*\), and \(\mathcal {T}_{h}^*\) denote the sets of dual vertices, edges, faces, and volumes, \(\partial _i^*\) are the coboundary operators on the cochain complex, \(i_\mathbb {R}\) is the embedding of \(\mathbb {R}\) in \(\mathcal {V}_{h}^*\) as the map \(i_\mathbb {R}(s)(V)=s\) for all \(V\in \mathcal {V}_{h}\), and, recalling (4.1), the discrete de Rham maps are defined by:

$$\begin{aligned} \kappa _{{{\,\mathrm{\textbf{grad}}\,}}}(\underline{q}_h)(V)= & {} {}q_V\qquad \qquad \,\,\forall \underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0},\forall V\in \mathcal {V}_{h},\\ \kappa _{{{\,\mathrm{\textbf{curl}}\,}}}(\underline{\varvec{v}}_h)(E)= & {} {}|E|v_E\qquad \,\,\,\forall \underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0},\forall E\in \mathcal {E}_{h},\\ \kappa _{{{\,\textrm{div}\,}}}(\underline{\varvec{w}}_h)(F)= & {} {}|F|v_F\qquad \,\,\,\forall \underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0},\forall F\in \mathcal {F}_{h},\\ \kappa _{\mathcal {P}^{}}(r_h)(T)= & {} {}|T|r_T\qquad \,\,\,\,\forall r_h\in \mathcal {P}^{0}(\mathcal {T}_{h}), \forall T\in \mathcal {T}_{h}. \end{aligned}$$

It is trivial to verify that these de Rham maps are isomorphisms, and that the diagram (4.3) is commutative (the latter property simply consists in using (4.2) and translating the definitions of the coboundary operators). This proves that the \(\textrm{DDR}(0)\) complex is isomorphic to the cochain complex, and thus has the same cohomology spaces. Since, in turn, these cohomology spaces are isomorphic to the de Rham cohomology spaces (1.2) (see, e.g., [28]), this concludes the proof. \(\square \)

4.2 Framework for isomorphisms in cohomology

The proof of Theorem 1 hinges on the following result, which provides a simplified version of the framework developed in [18].

Theorem 5

(Complexes with isomorphic cohomologies) Consider two sequences of spaces and operators \((X_{i},\textrm{d}_{i})_i\) and \((\widetilde{X}_{i},\mathrm{\widetilde{d}}_{i})_i\) connected by the graded maps \((R_{i})_i\) and \((E_{i})_i\), respectively called reductions and extensions, as depicted in the following diagram:

figure d

Further assume that \((X_{i},\textrm{d}_{i})_i\) is a complex and that the following properties hold:


The reductions are left-inverses of the extensions, i.e., \(R_{i}E_{i}=\textrm{Id}_{\widetilde{X}_{i}}\) for all i;


\((E_{i+1}R_{i+1}-\textrm{Id}_{X_{i+1}})(\ker \textrm{d}_{i+1})\subset {{\,\textrm{Im}\,}}\textrm{d}_{i}\) for all i;


The extensions and reductions are cochain maps.

Then, \((\widetilde{X}_{i},\mathrm{\widetilde{d}}_{i})_i\) is a complex and its cohomology is isomorphic to that of \((X_{i},\textrm{d}_{i})_i\); more precisely, the extensions and reductions induce reciprocal isomorphisms in cohomology.


By (C3) and (C1) (applied to \(i+1\)) we have \(R_{i+1}\textrm{d}_{i}E_{i} = R_{i+1}E_{i+1}\mathrm{\widetilde{d}}_{i}=\mathrm{\widetilde{d}}_{i}\) for all i. We deduce from this fact that \((\widetilde{X}_{i},\mathrm{\widetilde{d}}_{i})_i\) is a complex by invoking (C3) and the complex property of \((X_{i},\textrm{d}_{i})_i\) to write

$$\begin{aligned} \mathrm{\widetilde{d}}_{i+1}\mathrm{\widetilde{d}}_{i}= & {} (R_{i+2}\underbrace{\textrm{d}_{i+1}E_{i+1}}_{=E_{i+2}\mathrm{\widetilde{d}}_{i+1}})(R_{i+1}\textrm{d}_{i}E_{i}) =R_{i+2}E_{i+2}\underbrace{\mathrm{\widetilde{d}}_{i+1}R_{i+1}}_{=R_{i+2}\textrm{d}_{i+1}}\textrm{d}_{i}E_{i}\\= & {} R_{i+2}E_{i+2}R_{i+2} \underbrace{\textrm{d}_{i+1}\textrm{d}_{i}}_{=0}E_{i}=0. \end{aligned}$$

Since extensions and reductions are cochain maps, they induce mappings \([E_{i}]\) and \([R_{i}]\) between the cohomology groups of the complexes. Property (C1) then gives \([\textrm{Id}_{\widetilde{X}_{i}}]=[R_{i}E_{i}]=[R_{i}][E_{i}]\). On the other hand, (C2) applied to i instead of \(i+1\) implies \([E_{i}R_{i}-\textrm{Id}_{X_{i}}]=0\) and thus \([E_{i}][R_{i}]=[\textrm{Id}_{X_{i}}]\), which concludes the proof that \([E_{i}]\) and \([R_{i}]\) are reciprocal isomorphisms. \(\square \)

Lemma 4 proves that the cohomology of \(\textrm{DDR}(0)\) is isomorphic to the continuous de Rham cohomology. To prove Theorem 1, we therefore only need to show that, for \(k\ge 1\), the cohomologies of \(\textrm{DDR}(k)\) and \(\textrm{DDR}(0)\) are isomorphic; this will be done by constructing reduction and extension maps between these two complexes and using Theorem 5. In Sect. 4.3 we design these maps and show that they satisfy (C1) and (C3), while Sect. 4.4 establishes (C2).

4.3 Reduction and extension cochain maps, and proofs of (C1) and (C3)

The specialisation of diagram (4.4) linking the \(\textrm{DDR}(k)\) and \(\textrm{DDR}(0)\) complexes takes the following form:

figure e

where i is the natural inclusion and \(\pi _{\mathcal {P},h}^{0}\) is the \(L^2\)-orthogonal projection on \(\mathcal {P}^{0}(\mathcal {T}_{h})\). In the rest of this section we provide the definitions of the reductions \(\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\), \(\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\), \(\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\), and of the extensions \(\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}\), \(\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\), \(\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\), and show that they satisfy (C1) and (C3).

4.3.1 Reductions

The reduction maps are naturally obtained taking the \(L^2\)-orthogonal projections of the components attached to the lowest-dimensional mesh entities in each space, i.e.,

$$\begin{aligned}{} & {} \underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{q}_h :=(q_V)_{V\in \mathcal {V}_{h}} \qquad \qquad \,\, \forall \underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k},\\{} & {} \underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h :=(\pi _{\mathcal {P},E}^{0} v_E)_{E\in \mathcal {E}_{h}} \qquad \forall \underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k},\\{} & {} \underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{w}}_h :=(\pi _{\mathcal {P},F}^{0} w_F)_{F\in \mathcal {F}_{h}} \qquad \forall \underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}. \end{aligned}$$

By definition of the discrete differential and reduction operators, one can easily check that \(\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}=\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}\), \(\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{G}}_h^{k} = \underline{\varvec{G}}_h^{0}\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\), \(\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{C}}_h^{k} = \underline{\varvec{C}}_h^{0}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\), and \(\pi _{\mathcal {P},h}^{0}D_h^{k} = D_h^{0}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\), showing that the reductions yield a cochain map, as required by (C3).

4.3.2 Extensions

The definition of the extension maps is, on the other hand, more subtle. Concerning the gradient space, we set, for all \(\underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}\),

$$\begin{aligned} \underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{q}_h :=\big ( (E_{\mathcal {P},T}^{k-1}\underline{q}_T)_{T\in \mathcal {T}_{h}}, (E_{\mathcal {P},F}^{k-1}\underline{q}_F)_{F\in \mathcal {F}_{h}}, (E_{\mathcal {P},E}^{k-1}\underline{q}_E)_{E\in \mathcal {E}_{h}}, (q_V)_{V\in \mathcal {V}_{h}} \big )\nonumber \\ \end{aligned}$$

with, for all \(E\in \mathcal {E}_{h}\), \(E_{\mathcal {P},E}^{k-1}\underline{q}_E\in \mathcal {P}^{k-1}(E)\) such that

$$\begin{aligned} \int _EE_{\mathcal {P},E}^{k-1}\underline{q}_E~r_E' = -\int _EG_E^{0}\underline{q}_E~r_E + q_{V_2}~r_E(\varvec{x}_{V_2}) - q_{V_1}~r_E(\varvec{x}_{V_1}) \qquad \forall r_E\in \mathcal {P}^{k}(E),\nonumber \\ \end{aligned}$$

for all \(F\in \mathcal {F}_{h}\), \(E_{\mathcal {P},F}^{k-1}\underline{q}_F\in \mathcal {P}^{k-1}(F)\) such that

$$\begin{aligned} \int _FE_{\mathcal {P},F}^{k-1}\underline{q}_F~{{\,\textrm{div}\,}}_F\varvec{v}_F= & {} \!-\!\int _F\varvec{\textsf{G}}_F^{0}\underline{q}_F\cdot \varvec{v}_F \!+\! \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E\gamma _E^{k+1}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},E}\underline{q}_E~(\varvec{v}_F\cdot \varvec{n}_{FE})\nonumber \\{} & {} \forall \varvec{v}_F\!\in \!\varvec{\mathcal {R}}^{\textrm{c},k}(F), \end{aligned}$$

and, for all \(T\in \mathcal {T}_{h}\), \(E_{\mathcal {P},T}^{k-1}\underline{q}_T\in \mathcal {P}^{k-1}(T)\) such that

$$\begin{aligned} \int _TE_{\mathcal {P},T}^{k-1}\underline{q}_T~{{\,\textrm{div}\,}}\varvec{v}_T= & {} -\int _T\varvec{\textsf{G}}_T^{0}\underline{q}_T\cdot \varvec{v}_T + \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F\gamma _F^{k+1}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F~(\varvec{v}_T\cdot \varvec{n}_F)\nonumber \\{} & {} \forall \varvec{v}_T\in \varvec{\mathcal {R}}^{\textrm{c},k}(T). \end{aligned}$$

In (4.6c) and (4.6d), we have respectively introduced the notations \(\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},E}\underline{q}_E:=\big (E_{\mathcal {P},E}^{k-1}\underline{q}_E,(q_V)_{V\in \mathcal {V}_{E}}\big )\) and \(\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F:=\big (E_{\mathcal {P},F}^{k-1}\underline{q}_F, (E_{\mathcal {P},E}^{k-1}\underline{q}_E)_{E\in \mathcal {E}_{F}}, (q_V)_{V\in \mathcal {V}_{F}}\big )\) (with \(\mathcal {V}_{E}\), resp. \(\mathcal {V}_{F}\), denoting the set of vertices of E, resp. F).

Remark 6

(Test functions in the definition of the extension operators) To properly define \(E_{\mathcal {P},E}^{k-1}\), we should only consider in (4.6b) test functions \(r_E\in \mathcal {P}^{0,k}(E)\) (as the derivative is an isomorphism \(\mathcal {P}^{0,k}(E)\rightarrow \mathcal {P}^{k-1}(E)\)); however, we note that (4.6b) is also satisfied for constant \(r_E\) since the right-hand side then vanishes by definition of \(G_E^{0}\). This is why we can actually consider test functions in the entire space \(\mathcal {P}^{k}(E)\). Similar considerations hold for (4.7b) and (4.9b) below.

The extension operator from \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}\) to \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) is such that, for all \(\underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}\),

$$\begin{aligned} \underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h :={} & {} \big ( (\varvec{E}_{\varvec{\mathcal {R}},T}^{k-1}\underline{\varvec{v}}_T,\varvec{\pi }_{\varvec{\mathcal {R}},T}^{\textrm{c},k}\varvec{P}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{0}\underline{\varvec{v}}_T)_{T\in \mathcal {T}_{h}},\nonumber \\{} & {} \quad (\varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\underline{\varvec{v}}_F,\varvec{\pi }_{\varvec{\mathcal {R}},F}^{\textrm{c},k}\varvec{\gamma }_{\textrm{t},F}^{0}\underline{\varvec{v}}_F)_{F\in \mathcal {F}_{h}}, (v_E)_{E\in \mathcal {E}_{h}} \big ), \end{aligned}$$

where, for all \(F\in \mathcal {F}_{h}\), \(\varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\underline{\varvec{v}}_F\in \varvec{\mathcal {R}}^{k-1}(F)\) is such that

$$\begin{aligned} \int _F\varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\underline{\varvec{v}}_F\cdot {{\,\mathrm{\textbf{rot}}\,}}_F r_F = \int _FC_F^{0}\underline{\varvec{v}}_F~r_F + \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E v_E~r_F \qquad \forall r_F\in \mathcal {P}^{k}(F),\nonumber \\ \end{aligned}$$

and, for all \(T\in \mathcal {T}_{h}\), \(\varvec{E}_{\varvec{\mathcal {R}},T}^{k-1}\underline{\varvec{v}}_T\in \varvec{\mathcal {R}}^{k-1}(T)\) is such that

$$\begin{aligned} \int _T\varvec{E}_{\varvec{\mathcal {R}},T}^{k-1}\underline{\varvec{v}}_T\cdot {{\,\mathrm{\textbf{curl}}\,}}\varvec{w}_T= & {} \int _T\varvec{\textsf{C}}_T^{0}\underline{\varvec{v}}_T\cdot \varvec{w}_T \!-\! \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F\varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\underline{\varvec{v}}_F\!\cdot \! (\varvec{w}_T\times \varvec{n}_F)\nonumber \\{} & {} \forall \varvec{w}_T\in \varvec{\mathcal {G}}^{\textrm{c},k}(T), \end{aligned}$$


$$\begin{aligned} \underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\underline{\varvec{v}}_F:=\big (\varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\underline{\varvec{v}}_F,\varvec{\pi }_{\varvec{\mathcal {R}},F}^{\textrm{c},k}\varvec{\gamma }_{\textrm{t},F}^{0}\underline{\varvec{v}}_F,(v_E)_{E\in \mathcal {E}_{F}}\big ). \end{aligned}$$

The extension operator from \(\underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0}\) to \(\underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\) is such that, for all \(\underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0}\),

$$\begin{aligned} \underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{w}}_h = \big ( (\varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\underline{\varvec{w}}_T,\varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{P}_{{{\,\textrm{div}\,}},T}^{0}\underline{\varvec{w}}_T)_{T\in \mathcal {T}_{h}}, (w_F)_{F\in \mathcal {F}_{h}} \big ), \end{aligned}$$

where, for all \(T\in \mathcal {T}_{h}\), \(\varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\underline{\varvec{w}}_T\in \varvec{\mathcal {G}}^{k-1}(T)\) is such that

$$\begin{aligned} \int _T\varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\underline{\varvec{w}}_T\cdot {{\,\mathrm{\textbf{grad}}\,}}r_T = -\int _TD_T^{0}\underline{\varvec{w}}_T~r_T + \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _Fw_F~r_T \qquad \forall r_T\in \mathcal {P}^{k}(T).\nonumber \\ \end{aligned}$$

A simple inspection of the reductions and extensions shows that (C1) holds for these maps, that is:

$$\begin{aligned} \begin{aligned} \underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}&= \textrm{Id}_{\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}},&\qquad \underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}&=\textrm{Id}_{\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}},\\ \underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}&=\textrm{Id}_{\underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0}},&\qquad \pi _{\mathcal {P},h}^{0}i&=\textrm{Id}_{\mathcal {P}^{0}(\mathcal {T}_{h})}. \end{aligned} \end{aligned}$$

The fact that the above-defined extensions form a cochain map (i.e., they satisfy (C3)) requires, on the other hand, a detailed proof, provided in the following lemma.

Lemma 7

(Cochain map properties for the extensions) The extensions are cochain maps, that is:



(i) Proof of (4.11). This amounts to checking that, for any mesh entity \({\textsf {P}}\in \mathcal {T}_{h}\cup \mathcal {F}_{h}\cup \mathcal {E}_{h}\), \(E_{\mathcal {P},{\textsf {P}}}^{k-1}\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},{\textsf {P}}}^{0}C=\pi _{\mathcal {P},{\textsf {P}}}^{k-1}C\) for all \(C\in \mathbb {R}\), which is straightforward from the definition of the extension operators and the polynomial consistency of the edge and face gradients and scalar traces.

(ii) Proof of(4.12). Let \(\underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}\). Combining the definition (3.2) of \(G_E^{k}\) with the definition (4.6b) of \(E_{\mathcal {P},E}^{k-1}\) immediately gives \(G_E^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},E}\underline{q}_E=G_E^{0}\underline{q}_E\), which shows the equality of the edge components in (4.12). Applying the definition (3.3) of \(\varvec{\textsf{G}}_F^{k}\) with \(\varvec{v}_F\in \varvec{\mathcal {R}}^{\textrm{c},k}(F)\subset \varvec{\mathcal {P}}^{k}(F)\) and invoking the definition (4.6c) of \(E_{\mathcal {P},F}^{k-1}\) gives \(\varvec{\pi }_{\varvec{\mathcal {R}},F}^{\textrm{c},k}\varvec{\textsf{G}}_F^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F=\varvec{\pi }_{\varvec{\mathcal {R}},F}^{\textrm{c},k}\varvec{\textsf{G}}_F^{0}\underline{q}_F=\varvec{\pi }_{\varvec{\mathcal {R}},F}^{\textrm{c},k}\varvec{\gamma }_{\textrm{t},F}^{0}\underline{\varvec{G}}_F^{0}\underline{q}_F\), where the second equality comes from [17, Eq. (3.26)]. The same arguments, based on (3.4), (4.6d), and [17, Eq. (4.29)], give \(\varvec{\pi }_{\varvec{\mathcal {R}},T}^{\textrm{c},k}\varvec{\textsf{G}}_T^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},T}\underline{q}_T=\varvec{\pi }_{\varvec{\mathcal {R}},T}^{\textrm{c},k}\varvec{P}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{0}\underline{\varvec{G}}_T^{0}\underline{q}_T\). This establishes the equality of the components in \(\varvec{\mathcal {R}}^{\textrm{c},k}({\textsf {P}})\), \({\textsf {P}}\in \mathcal {T}_{h}\cup \mathcal {F}_{h}\), in (4.12).

We next show that, for all \(F\in \mathcal {F}_{h}\),

$$\begin{aligned} \varvec{\pi }_{\varvec{\mathcal {R}},F}^{k-1}\varvec{\textsf{G}}_F^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F = \varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\underline{\varvec{G}}_F^{0}\underline{q}_F. \end{aligned}$$

Apply the definition (3.3) of \(\varvec{\textsf{G}}_F^{k}\) to \(\varvec{v}_F={{\,\mathrm{\textbf{rot}}\,}}_F r_F\) for some \(r_F\in \mathcal {P}^{k}(F)\) and use \({{\,\textrm{div}\,}}_F{{\,\mathrm{\textbf{rot}}\,}}_F=0\) together with \({{\,\mathrm{\textbf{rot}}\,}}_F r_F\cdot \varvec{n}_{FE}=-(r_F)_{|E}'\), the derivative being taken in the direction of \(\varvec{t}_E\) (see [20, Eq. (4.20)]) to write

where the introduction of the projector in the second line is justified by \((r_F)_{|E}'\in \mathcal {P}^{k-1}(E)\), and the third line follows from \(\pi _{\mathcal {P},E}^{k-1}(\gamma _E^{k+1}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},E}\underline{q}_E)=E_{\mathcal {P},E}^{k-1}\underline{q}_E\) (by definition of \(\gamma _E^{k+1}\)) and the definition (4.6b) of \(E_{\mathcal {P},E}^{k-1}\) (we have added the index E in the vertices to clearly show that they are related to each edge in the sum); the final cancellation is obtained by noticing that each vertex of F appears twice in the sum with opposite orientations \(\omega _{FE}\). We then apply the definition (4.7b) of \(\varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\) to \(\underline{\varvec{v}}_F=\underline{\varvec{G}}_F^{0}\underline{q}_F\) together with the complex property \(C_F^{0}\underline{\varvec{G}}_F^{0}=0\) to deduce

$$\begin{aligned} \int _F \varvec{\textsf{G}}_F^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F\cdot {{\,\mathrm{\textbf{rot}}\,}}_F r_F=\int _F \varvec{E}_{\varvec{\mathcal {R}},F}^{k-1}\underline{\varvec{G}}_F^{0}\underline{q}_F\cdot {{\,\mathrm{\textbf{rot}}\,}}_F r_F, \end{aligned}$$

which concludes the proof of (4.15). Together with the equality of the components in \(\varvec{\mathcal {R}}^{\textrm{c},k}(F)\) and on the edges, this shows that

$$\begin{aligned} \underline{\varvec{G}}_F^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F=\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\underline{\varvec{G}}_F^{0}\underline{q}_F\qquad \forall F\in \mathcal {F}_{h}. \end{aligned}$$

Let us now take \(T\in \mathcal {T}_{h}\) and let us prove the equality of the components in \(\varvec{\mathcal {R}}^{k-1}(T)\) in (4.12), i.e.,

$$\begin{aligned} \varvec{\pi }_{\varvec{\mathcal {R}},T}^{k-1}\varvec{\textsf{G}}_T^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},T}\underline{q}_T = \varvec{E}_{\varvec{\mathcal {R}},T}^{k-1}\underline{\varvec{G}}_T^{0}\underline{q}_T. \end{aligned}$$

For all \(\varvec{w}_T\in \varvec{\mathcal {G}}^{\textrm{c},k}(T)\), using the link between element and face discrete gradients together with the property \(\varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{G}}_F^{k}=\varvec{\textsf{G}}_F^{k}\) of the tangential trace (see [17, Proposition 1 and Eq. (3.26)]), we have

$$\begin{aligned} \int _T \varvec{\textsf{G}}_T^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},T}\underline{q}_T\cdot {{\,\mathrm{\textbf{curl}}\,}}\varvec{w}_T&={}-\sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F \varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{G}}_F^{k}\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},F}\underline{q}_F\cdot (\varvec{w}_T\times \varvec{n}_F)\\&={}-\sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F \varvec{\gamma }_{\textrm{t},F}^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\underline{\varvec{G}}_F^{0}\underline{q}_F\cdot (\varvec{w}_T\times \varvec{n}_F)\\&={}\int _T \varvec{E}_{\varvec{\mathcal {R}},T}^{k-1}\underline{\varvec{G}}_T^{0}\underline{q}_T\cdot {{\,\mathrm{\textbf{curl}}\,}}\varvec{w}_T, \end{aligned}$$

where the second equality follows from (4.16), and the third one from the definition (4.7c) of \(\varvec{E}_{\varvec{\mathcal {R}},T}^{k-1}\) together with the complex property \(\underline{\varvec{C}}_T^{0}\underline{\varvec{G}}_T^{0}=0\) (which implies \(\varvec{\textsf{C}}_T^{0}\underline{\varvec{G}}_T^{0}=\varvec{0}\) since \(\varvec{P}_{{{\,\textrm{div}\,}},T}^{0}\underline{\varvec{C}}_T^{0}=\varvec{\textsf{C}}_T^{0}\) by [17, Eq. (4.30)]). This concludes the proof of (4.17).

(iii) Proof of (4.13). Let \(\underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}\) and \(F\in \mathcal {F}_{h}\). The definitions (3.6) of \(C_F^{k}\) and (4.8) of \(\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\) show that

$$\begin{aligned} C_F^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\underline{\varvec{v}}_F=C_F^{0}\underline{\varvec{v}}_F, \end{aligned}$$

which proves the equality of the face components in (4.13). Take now \(T\in \mathcal {T}_{h}\) and consider the component in \(\varvec{\mathcal {G}}^{\textrm{c},k}(T)\). Applying the definitions (3.7) of \(\varvec{\textsf{C}}_T^{k}\) and (4.7c) of \(\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\) to a generic \(\varvec{w}_T\in \varvec{\mathcal {G}}^{\textrm{c},k}(T)\subset \varvec{\mathcal {P}}^{k}(T)\) yields \(\varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{\textsf{C}}_T^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\underline{\varvec{v}}_T=\varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{\textsf{C}}_T^{0}\underline{\varvec{v}}_T=\varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{P}_{{{\,\textrm{div}\,}},T}^{0}\underline{\varvec{C}}_T^{0}\underline{\varvec{v}}_T\), where the second equality is obtained applying [17, Eq. (4.30)]. It remains to show the equality of the components in \(\varvec{\mathcal {G}}^{k-1}(T)\) in (4.13), i.e.,

$$\begin{aligned} \varvec{\pi }_{\varvec{\mathcal {G}},T}^{k-1}\varvec{\textsf{C}}_T^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\underline{\varvec{v}}_T = \varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\underline{\varvec{C}}_T^{0}\underline{\varvec{v}}_T. \end{aligned}$$

We use the link between element and face discrete curls [17, Proposition 4] together with (4.18) to write, for all \(r_T\in \mathcal {P}^{k}(T)\),

$$\begin{aligned} \int _T \varvec{\textsf{C}}_T^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\underline{\varvec{v}}_T\cdot {{\,\mathrm{\textbf{grad}}\,}}r_T\!=\!\sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F C_F^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},F}\underline{\varvec{v}}_Fr_T\!=\!\sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F C_F^{0}\underline{\varvec{v}}_Fr_T. \end{aligned}$$

Invoking then the definition (4.9b) of \(\varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\) with \(\underline{\varvec{w}}_T=\underline{\varvec{C}}_T^{0}\underline{\varvec{v}}_T\) and using the complex property \(D_T^{0}\underline{\varvec{C}}_T^{0}=0\), we infer

$$\begin{aligned} \int _T \varvec{\textsf{C}}_T^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\underline{\varvec{v}}_T\cdot {{\,\mathrm{\textbf{grad}}\,}}r_T=\int _T\varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\underline{\varvec{C}}_T^{0}\underline{\varvec{v}}_T\cdot {{\,\mathrm{\textbf{grad}}\,}}r_T, \end{aligned}$$

which concludes the proof of (4.19).

(iv) Proof of (4.14). Let \(\underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{0}\). For all \(T\in \mathcal {T}_{h}\), apply the definitions (3.9) of \(D_T^{k}\) and (4.9b) of \(\varvec{E}_{\varvec{\mathcal {G}},T}^{k-1}\) to get \(D_T^{k}\underline{\varvec{E}}_{{{\,\textrm{div}\,}},T}\underline{\varvec{w}}_T=D_T^{0}\underline{\varvec{w}}_T\).

\(\square \)

4.4 Proof of (C2)

To conclude the proof of Theorem 1, we need to show that the reduction and extension maps satisfy (C2), which is the purpose of the following lemma.

Lemma 8

(Property (C2)) The maps in (4.5) satisfy the following properties:

$$\begin{aligned}{} & {} \text { For all}\, \underline{q}_h\in {{\,\textrm{Ker}\,}}\underline{\varvec{G}}_h^{k}, \text { there exists}\,C\in \mathbb {R}\text { such that}\, \underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{q}_h-\underline{q}_h = \underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k} C,\nonumber \\ \end{aligned}$$
$$\begin{aligned}{} & {} \text { For all}\, \underline{\varvec{v}}_h\in {{\,\textrm{Ker}\,}}\underline{\varvec{C}}_h^{k}, \text { there exists}\, \underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k} \text { such that}\, \underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h \underline{\varvec{v}}_h = \underline{\varvec{G}}_h^{k}\underline{q}_h,\nonumber \\ \end{aligned}$$
$$\begin{aligned}{} & {} \text { For all}\, \underline{\varvec{w}}_h\in {{\,\textrm{Ker}\,}}D_h^{k}, \text { there exists}\, \underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k} \text { such that} \,\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{w}}_h - \underline{\varvec{w}}_h = \underline{\varvec{C}}_h^{k}\underline{\varvec{v}}_h,\nonumber \\ \end{aligned}$$
$$\begin{aligned}{} & {} \text { For all}\, r_h\in \mathcal {P}^{k}(\mathcal {T}_{h}), \text { there exists}\, \underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k} \text { such that}\, \pi _{\mathcal {P},h}^{0}r_h-r_h = D_h^{k}\underline{\varvec{w}}_h.\nonumber \\ \end{aligned}$$


(i) Proof of (4.20a). For all \(\underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\), \(\underline{\varvec{G}}_h^{k}\underline{q}_h = \underline{\varvec{0}}\) implies \(\underline{\varvec{G}}_T^{k}\underline{q}_T = \underline{\varvec{0}}\) for all \(T\in \mathcal {T}_{h}\) which, by exactness of the local DDR sequence (see the proof of [16, Theorem 2] applied to T, which is topologically trivial by assumption), implies the existence of \(Q_T\in \mathbb {R}\) such that \(\underline{q}_T=\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}Q_T\) (where \(\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\) is the restriction to \(\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\) of \(\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\)). The definition (3.11) of the interpolator then shows that \(q_V=Q_T\) for all vertex \(V\in \mathcal {V}_{T}\). We deduce that \(Q_T=Q_{T'}\) whenever \(T,T'\in \mathcal {T}_{h}\) share a vertex which yields, by connectedness of \(\Omega \), the existence of \(Q\in \mathbb {R}\) such that \(Q_T = Q\) for all \(T\in \mathcal {T}_{h}\). As a consequence, \(\underline{q}_h=\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}Q\). Using this fact along with the cochain property of the extension and reduction, we infer that \(\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{q}_h=\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{0}Q=\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}Q\), and thus that \(\underline{E}_{{{\,\mathrm{\textbf{grad}}\,}}, h}\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{q}_h - \underline{q}_h=\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}0\). This proves (4.20a).

(ii) Proof of (4.20b). We start by noticing that, since the reductions and extensions are cochain maps, if \(\underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) is such that \(\underline{\varvec{C}}_h^{k}\underline{\varvec{v}}_h = \underline{\varvec{0}}\) then

$$\begin{aligned} \underline{\varvec{C}}_h^{k}\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h=\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{C}}_h^{0}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h=\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{C}}_h^{k}\underline{\varvec{v}}_h=\underline{\varvec{0}}. \end{aligned}$$

Hence, \(\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h - \underline{\varvec{v}}_h\in {{\,\textrm{Ker}\,}}\underline{\varvec{C}}_h^{k}\), and the exactness of the local DDR complex implies, for all \(T\in \mathcal {T}_{h}\), the existence of \(\underline{q}_T^T\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\) such that

$$\begin{aligned} \underline{\varvec{z}}_T:=\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},T}\underline{\varvec{v}}_T - \underline{\varvec{v}}_T = \underline{\varvec{G}}_T^{k}\underline{q}_T^T. \end{aligned}$$

We then have to check that the \(\underline{q}_T^T\), \(T\in \mathcal {T}_{h}\), can be glued together to form an element of \(\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\). Let \(T\in \mathcal {T}_{h}\) and notice that, by definition of the reduction and extension operators, for all \(E\in \mathcal {E}_{T}\), \(G_E^{k}\underline{q}_E^T=z_E=\pi _{\mathcal {P},E}^{0}v_E-v_E\) has a zero integral over E. The definition (3.2) of \(G_E^{k}\) thus shows that \(\underline{q}_T^T\) takes the same value at the vertices of E; since this holds for any edge of T and the boundary of T is connected, this implies the existence of \(C_T\in \mathbb {R}\) such that \(q_V^T = C_T\) for all \(V\in \mathcal {V}_{T}\). By the substitution \(\underline{q}_T^T\leftarrow \underline{q}_T^T - \underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k} C_T\), which leaves (4.21) unaltered since \(\underline{\varvec{G}}_T^{k}\underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k} C_T= \underline{\varvec{0}}\) by the complex property, we obtain local vectors \(\underline{q}_T^T\), \(T\in \mathcal {T}_{h}\), that vanish (hence match) at mesh vertices. We next notice that, for all \(E\in \mathcal {E}_{h}\) and any T such that \(E\in \mathcal {E}_{T}\), using (4.21) along with the definition (3.2) of the edge gradient and the fact that the vertex values of \(\underline{q}_T^T\) vanish,

$$\begin{aligned} \int _E z_E~r_E = \int _EG_E^{k}\underline{q}_E^T~r_E = -\int _E q_E^T r_E' \quad \forall r_E\in \mathcal {P}^{0,k}(E). \end{aligned}$$

The relation (4.22) implies that \(q_E^T\) is in fact independent of T, and thus that there exists \(q_E\in \mathcal {P}^{k-1}(E)\) such that \(q_E^T = q_E\) for all \(T\in \mathcal {T}_{h}\) such that \(E\in \mathcal {E}_{T}\). We therefore set \(\underline{q}_E:=(q_E, (0)_{V\in \mathcal {V}_{E}})\) for all \(E\in \mathcal {E}_{h}\), where we remind the reader that \(\mathcal {V}_{E}\) collects the vertices of E.

Having proved the single-valuedness of the \(\underline{q}_T^T\), \(T\in \mathcal {T}_{h}\), on the mesh edge skeleton, we next notice that, for all \(F\in \mathcal {F}_{h}\) and all \(T\in \mathcal {T}_{h}\) such that \(F\in \mathcal {F}_{T}\), (4.21) followed by the definition (3.3) of \(\varvec{\textsf{G}}_F^{k}\) implies, for all \(\varvec{w}_F\in \varvec{\mathcal {R}}^{\textrm{c},k}(F)\),

$$\begin{aligned} \int _F \varvec{z}_{\varvec{\mathcal {R}},F}^\textrm{c}\cdot \varvec{w}_F = \int _F \varvec{\textsf{G}}_F^{k}\underline{q}_{F}^T\cdot \varvec{w}_F ={} & {} -\int _F q_F^T{{\,\textrm{div}\,}}_F\varvec{w}_F \\{} & {} + \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E\gamma _E^{k+1}\underline{q}_E~(\varvec{w}_F\cdot \varvec{n}_{FE}), \end{aligned}$$

which shows, since \({{\,\textrm{div}\,}}_F:\varvec{\mathcal {R}}^{\textrm{c},k}(F)\rightarrow \mathcal {P}^{k-1}(F)\) is an isomorphism, that \(q_F^T\) only depends on \(\varvec{z}_{\varvec{\mathcal {R}},F}^\textrm{c}\) and \(\gamma _E^{k+1}\underline{q}_E\), quantities that are, in turn, independent of T. We therefore conclude that \(q_F^T = q_F\) for all \(F\in \mathcal {F}_{h}\) and all \(T\in \mathcal {T}_{h}\) having F as a face. Setting \(\underline{q}_h :=((q_T^T)_{T\in \mathcal {T}_{h}},(q_F)_{F\in \mathcal {F}_{h}},(q_E)_{E\in \mathcal {E}_{h}},(0)_{V\in \mathcal {V}_{h}})\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\), we then have \(\underline{q}_T=\underline{q}_T^T\) for all \(T\in \mathcal {T}_{h}\); recalling (4.21), this concludes the proof of (4.20b).

(iii) Proof of (4.20c). Let \(\underline{\varvec{w}}_h\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\) be such that \(D_h^{k}\underline{\varvec{w}}_h = 0\). Since the reductions and extensions are cochain maps, as in Point (ii) above we have \(D_h^{k}\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{w}}_h=i\pi _{\mathcal {P},h}^{0}D_h^{k}\underline{\varvec{w}}_h=0\). Hence, \(\underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{w}}_h-\underline{\varvec{w}}_h\in {{\,\textrm{Ker}\,}}D_h^{k}\), and the exactness of the local DDR complex yields, for all \(T\in \mathcal {T}_{h}\), the existence of \(\underline{\varvec{v}}_T^T\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\) such that

$$\begin{aligned} \underline{\varvec{z}}_T:=\underline{\varvec{E}}_{{{\,\textrm{div}\,}},T}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},T}\underline{\varvec{w}}_T - \underline{\varvec{w}}_T = \underline{\varvec{C}}_T^{k}\underline{\varvec{v}}_T^T. \end{aligned}$$

The above relation implies, accounting for the definitions of the reduction and extension operators, \(\pi _{\mathcal {P},F}^{0}C_F^{k}\underline{\varvec{v}}_T^T = 0\) for all \(F\in \mathcal {F}_{T}\). By virtue of Proposition 9 below, we can assume that \(\int _E v_E^T = 0\) for all \(E\in \mathcal {E}_{T}\) without loss of generality. We additionally notice that, by the complex property of the local DDR sequence, (4.23) holds up to the substitution \(\underline{\varvec{v}}_T^T\leftarrow \underline{\varvec{v}}_T^T + \underline{\varvec{G}}_T^{k}\underline{q}_T^T\) with \(\underline{q}_T^T\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\).

We leverage these observations as described hereafter. Let \(E\in \mathcal {E}_{h}\), denote by \(\mathcal {T}_{E}\subset \mathcal {T}_{h}\) the set of mesh elements sharing E, and fix one \(T_E\in \mathcal {T}_{E}\). For all \(T\in \mathcal {T}_{E}\setminus \{T_E\}\), we select \(\underline{q}_E^{T}\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},E}^{k}\) such that \(q_V^{T} = 0\) for all \(V\in \mathcal {V}_{E}\) and \(v_E^{T} + G_E^{k}\underline{q}_E^{T} = v_E^{T_E}=:v_E\) (the existence of such \(\underline{q}_E^{T}\) is guaranteed by the conditions \(\int _E (v_E-v_E^{T}) = 0\)).

Given a mesh element \(T\in \mathcal {T}_{h}\), we use the vectors \(\underline{q}_E^T = (q_E^T, (0)_{V\in \mathcal {V}_{E}})\), \(E\in \mathcal {E}_{T}\), constructed above to form a vector \((0, (q_F^T)_{F\in \mathcal {F}_{T}}, (q_E^T)_{E\in \mathcal {E}_{T}}, (0)_{V\in \mathcal {V}_{T}})\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},T}^{k}\) with face components selected so as to ensure that \(\hat{\underline{\varvec{v}}}_T^T:=\underline{\varvec{v}}_T^T + \underline{\varvec{G}}_T^{k}\underline{q}_T^T\) can be glued together at faces shared by two different elements. Let us describe this selection. By construction, the edge components of \(\hat{\underline{\varvec{v}}}_T^T\) are independent of T, hence we denote them without the superscript “T”. We moreover notice that, by (4.23) combined with the definition (3.6) of the face curl, for all \(F\in \mathcal {F}_{T}\), \(\hat{\varvec{v}}_{\varvec{\mathcal {R}},F}^T = \hat{\varvec{v}}_{\varvec{\mathcal {R}},F}\) with \(\hat{\varvec{v}}_{\varvec{\mathcal {R}},F}\in \varvec{\mathcal {R}}^{k-1}(F)\) such that

$$\begin{aligned} \int _F\hat{\varvec{v}}_{\varvec{\mathcal {R}},F}\cdot {{\,\mathrm{\textbf{rot}}\,}}r_F = \int _F z_F~r_F + \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _Ev_E~r_F \quad \forall r_F\in \mathcal {P}^{k}(F). \end{aligned}$$

The right-hand side of the above expression does not depend on T, showing that, as announced, \(\hat{\varvec{v}}_{\varvec{\mathcal {R}},F}\) is indeed single-valued (that is, it only depends on F and not the elements to which F belongs). For any \(F\in \mathcal {F}_{T}\) shared with an element \(T'\in \mathcal {T}_{h}\), we then proceed as follows to select \(q_F\) in order to ensure that the face components in \(\varvec{\mathcal {R}}^{\textrm{c},k}(F)\) are also single-valued: If \(\omega _{TF} = 1\), we let \(q_F^T = 0\), otherwise we take \(q_F^T\in \mathcal {P}^{k-1}(F)\) such that the components of \(\hat{\underline{\varvec{v}}}_T^T = \underline{\varvec{v}}_T^T + \underline{\varvec{G}}_T^{k}\underline{q}_T^T\) and \(\hat{\underline{\varvec{v}}}_{T'}^{T'}=\underline{\varvec{v}}_{T'}^{T'} + \underline{\varvec{G}}_{T'}^{k}\underline{q}_{T'}^{T'}\) (with \(\underline{q}_{T'}^{T'} = (0,(0)_{F\in \mathcal {F}_{T'}},(q_E^{T'})_{E\in \mathcal {E}_{T'}},(0)_{V\in \mathcal {V}_{T'}})\)) on \(\varvec{\mathcal {R}}^{\textrm{c},k}(F)\) match, i.e., recalling the definition (3.3) of \(\varvec{\textsf{G}}_F^{k}\),

$$\begin{aligned} \int _F q_F^T~{{\,\textrm{div}\,}}\varvec{y}_F= & {} \sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E\gamma _E^{k+1}(\underline{q}_E^T-\underline{q}_E^{T'})~(\varvec{y}_F\cdot \varvec{n}_F)\\{} & {} + \int _F(\varvec{v}_{\varvec{\mathcal {R}},F}^{\textrm{c},T} - \varvec{v}_{\varvec{\mathcal {R}},F}^{\textrm{c},T'})\cdot \varvec{y}_F \quad \forall \varvec{y}_F\in \varvec{\mathcal {R}}^{\textrm{c},k}(F). \end{aligned}$$

This relation defines \(q_F^T\) uniquely since \({{\,\textrm{div}\,}}:\varvec{\mathcal {R}}^{\textrm{c},k}(F)\rightarrow \mathcal {P}^{k-1}(F)\) is an isomorphism. This concludes the construction of local vectors \(\hat{\underline{\varvec{v}}}_T^T\), \(T\in \mathcal {T}_{h}\), that can be glued at faces to form a global vector \(\underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) satisfying (4.20c).

(iv) Proof of (4.20d). Let \(r_h\in \mathcal {P}^{k}(\mathcal {T}_{h})\) and define \(\underline{\varvec{w}}_h=((\varvec{w}_{\varvec{\mathcal {G}},T},\varvec{0})_{T\in \mathcal {T}_{h}},(0)_{F\in \mathcal {F}_{h}})\in \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\) such that, for all \(T\in \mathcal {T}_{h}\), \(\varvec{w}_{\varvec{\mathcal {G}},T}\in \varvec{\mathcal {G}}^{k-1}(T)\) satisfies

$$\begin{aligned} \int _T \varvec{w}_{\varvec{\mathcal {G}},T}\cdot {{\,\mathrm{\textbf{grad}}\,}}s_T \!=\! -\!\int _T (\pi _{\mathcal {P},T}^{0}r_T-r_T)s_T\quad \forall s_T\in \mathcal {P}^{k}(T). \end{aligned}$$

Since \({{\,\mathrm{\textbf{grad}}\,}}:\mathcal {P}^{0,k}(T)\rightarrow \varvec{\mathcal {G}}^{k-1}(T)\) is an isomorphism, this formula restricted to \(s_T\in \mathcal {P}^{0,k}(T)\) entirely defines \(\varvec{w}_{\varvec{\mathcal {G}},T}\); we then notice that (4.24) is also satisfied for constant polynomials \(s_T\) (since \(\int _T (\pi _{\mathcal {P},T}^{0}r_T-r_T)=0\)), which justifies that it holds for all \(s_T\in \mathcal {P}^{k}(T)\).

Since the components of \(\underline{\varvec{w}}_h\) on the faces are all equal to zero, (4.24) and the definition (3.9) of \(D_T^{k}\) shows that \(D_T^{k}\underline{\varvec{w}}_T=\pi _{\mathcal {P},T}^{0}r_T-r_T\) for all \(T\in \mathcal {T}_{h}\), which shows that \(D_h^{k}\underline{\varvec{w}}_h=\pi _{\mathcal {P},h}^{0}r_h-r_h\) and concludes the proof of (4.20d). \(\square \)

Proposition 9

(Elements of the local curl space with zero-average face curl) Let \(T\in \mathcal {T}_{h}\) and \(\underline{\varvec{v}}_T\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\) be such that, for all \(F\in \mathcal {F}_{T}\) with area |F|,

$$\begin{aligned} \pi _{\mathcal {P},F}^{0}C_F^{k}\underline{\varvec{v}}_F = -\frac{1}{|F|}\sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E v_E = 0. \end{aligned}$$

Then, there exists \(\underline{\varvec{w}}_T\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},T}^{k}\) such that

$$\begin{aligned} \pi _{\mathcal {P},E}^{0}w_E = 0~\quad \text {for all}~E\in \mathcal {E}_{T},\quad \text {and}\quad \underline{\varvec{C}}_T^{k}\underline{\varvec{w}}_T = \underline{\varvec{C}}_T^{k}\underline{\varvec{v}}_T. \end{aligned}$$


Setting, for all \(E\in \mathcal {E}_{T}\), \(w_E:=v_E - \pi _{\mathcal {P},E}^{0} v_E\) ensures that the first condition in (4.25) is verified. Recalling the definition (3.6) of the face curl, and noticing that we already have \(\pi _{\mathcal {P},F}^{0}C_F^{k}\underline{\varvec{w}}_F=0\), enforcing \(C_F^{k}\underline{\varvec{w}}_F = C_F^{k}\underline{\varvec{v}}_F\) amounts to selecting \(\varvec{w}_{\varvec{\mathcal {R}},F}\in \varvec{\mathcal {R}}^{k-1}(F)\) such that

$$\begin{aligned} \int _F\varvec{w}_{\varvec{\mathcal {R}},F}\cdot {{\,\mathrm{\textbf{rot}}\,}}_Fr_F \!=\! \int _F\varvec{v}_{\varvec{\mathcal {R}},F}\cdot {{\,\mathrm{\textbf{rot}}\,}}_Fr_F \!-\!\sum _{E\in \mathcal {E}_{F}}\omega _{FE}\int _E\pi _{\mathcal {P},E}^{0}v_E~r_F \quad \forall r_F\in \mathcal {P}^{0,k}(F). \end{aligned}$$

Since \({{\,\mathrm{\textbf{rot}}\,}}_F:\mathcal {P}^{0,k}(F)\rightarrow \varvec{\mathcal {R}}^{k-1}(F)\) is an isomorphism, this condition defines, for all \(F\in \mathcal {F}_{T}\), a unique value for \(\varvec{w}_{\varvec{\mathcal {R}},F}\). We then set \(\underline{\varvec{w}}_F :=(\varvec{w}_{\varvec{\mathcal {R}},F},\varvec{0},(w_E)_{E\in \mathcal {E}_{F}})\). The equality of face curls enforced above implies, by the relation between face and element curls of [16, Proposition 4], that \(\varvec{\pi }_{\varvec{\mathcal {G}},T}^{k-1}\varvec{\textsf{C}}_T^{k}\underline{\varvec{v}}_T = \varvec{\pi }_{\varvec{\mathcal {G}},T}^{k-1}\varvec{\textsf{C}}_T^{k}\underline{\varvec{w}}_T\). Finally, to enforce \(\varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{\textsf{C}}_T^{k}\underline{\varvec{v}}_T = \varvec{\pi }_{\varvec{\mathcal {G}},T}^{\textrm{c},k}\varvec{\textsf{C}}_T^{k}\underline{\varvec{w}}_T\), recalling the definition (3.7) of the element curl, we select \(\varvec{w}_{\varvec{\mathcal {R}},T}\in \varvec{\mathcal {R}}^{k-1}(T)\) such that, for all \(\varvec{z}_T\in \varvec{\mathcal {G}}^{\textrm{c},k}(T)\),

$$\begin{aligned} \int _T\varvec{w}_{\varvec{\mathcal {R}},T}\cdot {{\,\mathrm{\textbf{curl}}\,}}\varvec{z}_T = \int _T\varvec{v}_{\varvec{\mathcal {R}},T}\cdot {{\,\mathrm{\textbf{curl}}\,}}\varvec{z}_T + \sum _{F\in \mathcal {F}_{T}}\omega _{TF}\int _F\varvec{\gamma }_{\textrm{t},F}^{k}(\underline{\varvec{v}}_F-\underline{\varvec{w}}_F)\cdot (\varvec{z}_T\times \varvec{n}_F). \end{aligned}$$

This relation defines \(\varvec{w}_{\varvec{\mathcal {R}},T}\) uniquely since \({{\,\mathrm{\textbf{curl}}\,}}:\varvec{\mathcal {G}}^{\textrm{c},k}(T)\rightarrow \varvec{\mathcal {R}}^{k-1}(T)\) is an isomorphism. The vector \(\underline{\varvec{w}}_T=(\varvec{w}_{\varvec{\mathcal {R}},T},\varvec{0},(\varvec{w}_{\varvec{\mathcal {R}},F},\varvec{0})_{F\in \mathcal {F}_{T}},(w_E)_{E\in \mathcal {E}_{T}})\) constructed above then fulfils the second condition in (4.25), thus concluding the proof. \(\square \)

Remark 10

(Chain homotopy between the \(\textrm{DDR}(k)\) and \(\textrm{DDR}(0)\) complexes) The proof of Theorem 1, can also be interpreted through the concept of chain homotopy. Specifically, it can be shown that the reduction \(\underline{R}_{\bullet ,h}\) is a chain equivalence with extension \(\underline{E}_{\bullet ,h}\) as a chain-homotopy inverse for \(\bullet \in \{{{\,\mathrm{\textbf{grad}}\,}}, {{\,\mathrm{\textbf{curl}}\,}}, {{\,\textrm{div}\,}}\}\). Since (4.10) already shows that \(\underline{R}_{\bullet ,h} \underline{E}_{\bullet ,h} = \textrm{Id}_{\underline{X}_{\bullet ,h}^{k}}\), it is sufficient to find a chain homotopy between \(\underline{E}_{\bullet ,h} \underline{R}_{\bullet ,h}\) and \(\textrm{Id}_{\underline{X}_{\bullet ,h}^{k}}\), namely, mappings \(\underline{\mathcal D}_{{{\,\mathrm{\textbf{grad}}\,}}}^k:\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k} \rightarrow {\mathbb {R}}\), \(\underline{\mathcal D}_{{{\,\mathrm{\textbf{curl}}\,}}}^k: \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k} \rightarrow \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\), \(\underline{\mathcal D}_{{{\,\textrm{div}\,}}}^k: \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k} \rightarrow \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\), \(\mathcal D_{\mathcal {P}^{k}(\mathcal {T}_{h})}: \mathcal {P}^{k}(\mathcal {T}_{h}) \rightarrow \underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}\) such that

$$\begin{aligned}{} & {} \textrm{Id}_{\underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}} - \underline{E}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h} = \underline{I}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k} \underline{\mathcal D}_{{{\,\mathrm{\textbf{grad}}\,}}}^k+ \underline{\mathcal D}_{{{\,\mathrm{\textbf{curl}}\,}}}^k\underline{\varvec{G}}_h^{k}, \end{aligned}$$
$$\begin{aligned}{} & {} \textrm{Id}_{\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}} - \underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h} = \underline{\varvec{G}}_h^{k}\underline{\mathcal D}_{{{\,\mathrm{\textbf{curl}}\,}}}^k+ \underline{\mathcal D}_{{{\,\textrm{div}\,}}}^k\underline{\varvec{C}}_h^{k},\end{aligned}$$
$$\begin{aligned}{} & {} \textrm{Id}_{\underline{\varvec{X}}_{{{\,\textrm{div}\,}},h}^{k}} - \underline{\varvec{E}}_{{{\,\textrm{div}\,}},h}\underline{\varvec{R}}_{{{\,\textrm{div}\,}},h} = \underline{\varvec{C}}_h^{k}\underline{\mathcal D}_{{{\,\textrm{div}\,}}}^k+ \mathcal D_{\mathcal {P}^{k}(\mathcal {T}_{h})} D_h^{k},\end{aligned}$$
$$\begin{aligned}{} & {} \textrm{Id}_{\mathcal {P}^{k}(\mathcal {T}_{h})} - \pi _{\mathcal {P},h}^{0} = D_h^{k} \mathcal D_{\mathcal {P}^{k}(\mathcal {T}_{h})}. \end{aligned}$$

The design of these mappings relies on two key points. First, the fields \(\underline{q}_h\in \underline{X}_{{{\,\mathrm{\textbf{grad}}\,}},h}^{k}\) and \(\underline{\varvec{v}}_h\in \underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) constructed in Points (ii) and (iii) of the proof of Theorem 1, respectively, are unique if we impose \(\underline{R}_{{{\,\mathrm{\textbf{grad}}\,}},h}\underline{q}_h=\underline{0}\) and \(\underline{\varvec{R}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\underline{\varvec{v}}_h=\underline{\varvec{0}}\). Second, by setting \(\underline{\Pi }_{\bullet ,h} :=\textrm{Id}_{\underline{X}_{\bullet ,h}^{k}} - \underline{E}_{\bullet ,h}\underline{R}_{\bullet ,h}\) for \(\bullet \in \{{{\,\mathrm{\textbf{grad}}\,}},{{\,\mathrm{\textbf{curl}}\,}},{{\,\textrm{div}\,}}\}\), it can be shown that \(\underline{\Pi }_{\bullet ,h}\) is a cochain map and that \({{\,\textrm{Im}\,}}\underline{\Pi }_{\bullet ,h} = \widetilde{\underline{X}}_{\bullet ,h}^{k}\).

Remark 11

(Zero-reduction sub-complex) Let us define the zero-reduction subspaces of the DDR spaces (3.1) (which are simply the kernels of the reductions):

$$\begin{aligned}{} & {} \widetilde{\underline{X}}_{\bullet ,h}^{k} :=\left\{ \underline{x}_h\in \underline{X}_{\bullet ,h}^{k}\,:\,\underline{R}_{\bullet ,h}\underline{x}_h = \underline{0} \right\} \text { for } \bullet \in \{{{\,\mathrm{\textbf{grad}}\,}},{{\,\mathrm{\textbf{curl}}\,}},{{\,\textrm{div}\,}}\}, \text { and}\\{} & {} \quad \widetilde{P}_h^k:=\left\{ r_h\in \mathcal {P}^{k}(\mathcal {T}_{h})\,:\,\pi _{\mathcal {P},h}^{0}r_h = 0\right\} . \end{aligned}$$

It can then be checked that the zero-reduction subcomplex

figure f

is well defined, and an equivalent formulation of Lemma 8 is that this subcomplex is exact, irrespective of the topology of \(\Omega \). With a standard inclusion of the \(\textrm{DDR}(0)\) spaces into the \(\textrm{DDR}(k)\) spaces, we have \(\underline{X}_{\bullet ,h}^{k}=\widetilde{\underline{X}}_{\bullet ,h}^{k}\oplus \underline{X}_{\bullet ,h}^{0}\) for \(\bullet \in \{{{\,\mathrm{\textbf{grad}}\,}},{{\,\mathrm{\textbf{curl}}\,}},{{\,\textrm{div}\,}}\}\) and \(\mathcal {P}^{k}(\mathcal {T}_{h})=\widetilde{P}_h^k\oplus \mathcal {P}^{0}(\mathcal {T}_{h})\). Hence, the exactness of the zero-reduction subcomplex is another way of seeing that the information on the topology of the domain is completely encapsulated in the lowest-order portion of the \(\textrm{DDR}(k)\) complex.

Remark 12

(Cohomology of FEEC) The standard technique to analyse the cohomology of FEEC is through the usage of \(L^2\)-bounded projection operators between the de Rham complex (1.1) and the FEEC complex [1, Section 7.5]. The design of these operators is not trivial [2, Section 5], and they must satisfy approximation properties which sometimes requires to consider fine enough meshes.

Our approach, on the contrary, does not rely on any analytical property of a cochain map between the discrete and continuous complexes. It only uses the fact (widely known in algebraic topology), that CW complexes have the same cohomology as the continuous de Rham complex, and establishes that the higher-order portion of the discrete complex does not play any role in its cohomology.

In passing, we note that this approach could be applied to the FEEC setting, using as reduction maps the canonical embedding of a low-order polynomial space into its high-order version, and as extension maps the interpolations based on the degrees of freedom. We also refer the reader to the recent work [7], in which two exterior calculus polytopal complexes are designed and their cohomology is analysed using the same technique as above.

Remark 13

(Computation of the cohomology spaces of the DDR complex) The proof of Theorem 1 suggests the following efficient procedure to construct generators of cohomology spaces \(\mathcal {H}^{1, (k)}\) and \(\mathcal {H}^{2, (k)}\) (the relevant cohomology spaces in practical applications, since \(\mathcal {H}^{0,(k)}\) and \(\mathcal {H}^{3,(k)}\) are trivial). Let us focus on \(\mathcal {H}^{1, (k)}\), the other case being similar. Efficient graph-based algorithms are available to compute generators of the first cohomology space of the CW complex, see for instance [21]. Let \((\mathfrak {g}_j)_{j\in \{1, \dots , b_1\}}\) be representatives in \(\mathcal {E}_{h}^*\) of these generators. An inverse \(\kappa _{{{\,\mathrm{\textbf{curl}}\,}}}^{-1}\) of the de Rham map in (4.3) can trivially be constructed, and provides representatives \((\kappa _{{{\,\mathrm{\textbf{curl}}\,}}}^{-1}\mathfrak {g}_j)_{j\in \{1, \dots , b_1\}}\) in \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{0}\) of generators of \(\mathcal {H}^{1,(0)}\). We can then explicitly get \(\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\) through local computations on mesh elements (see (4.7)), and thus obtain representatives \((\underline{\varvec{E}}_{{{\,\mathrm{\textbf{curl}}\,}},h}\kappa _{{{\,\mathrm{\textbf{curl}}\,}}}^{-1}\mathfrak {g}_j)_{j\in \{1, \dots , b_1\}}\) in \(\underline{\varvec{X}}_{{{\,\mathrm{\textbf{curl}}\,}},h}^{k}\) of generators of \(\mathcal {H}^{1,(k)}\).

5 Conclusion and perspectives

In this work, we establish that the discrete de Rham complex DDR(k) and its serendipity version are isomorphic in cohomology to the continuous de Rham complex. The proof hinges on the construction of reduction and extension cochain maps between the \(\textrm{DDR}(k)\) complex for \(k\ge 1\) and the \(\textrm{DDR}(0)\) complex, which is representative of the usual low-order cochain complex defined on the CW complex of the mesh. This result represents an essential theoretical and practical step towards using the DDR construction (and, more generally, high-order polytopal complexes) to discretise physical problems on domains with non-trivial topologies.

On the theoretical side, one of the virtues of our result is that extension maps allow to extend standard cohomology constructions of the low-order cochain complex to the high-order complex. As an example, the well-posedness of certain electromagnetic boundary value problems requires the usage of so-called relative cohomology spaces. In this case, instead of trying to develop a relative cohomology theory on the sequence \(\textrm{DDR}(k)\), we can exploit extension maps to define such relative cohomology spaces starting from those of \(\textrm{DDR}(0)\), where a standard de Rham isomorphism (relative, in this case) with respect to the continuous de Rham complex can be readily established.

On the practical side, the computation of cohomology spaces consists in finding the quotient vector spaces (1.4). Obtaining bases of these quotient spaces requires the solution of expensive linear algebra problems. The fundamental computational advantage of our construction is that it provides an explicit and inexpensive way to find generators of the cohomology spaces of the DDR complex starting from those of the CW complex associated with the mesh.

Future work will explore the application of this result to obtain representations of the cohomology spaces of the DDR complex, and the study of their analytical properties required for their usage in schemes for relevant problems on non-trivial topologies.