an encyclopedia of finite element definitions

Complex families

You can find some information about how these familes are defined here

De Rham complex in 3D

Name(s)\(H^1\)\(\xrightarrow{\nabla}\)\(\textbf{H}(\text{curl})\)\(\xrightarrow{\nabla\times}\)\(\textbf{H}(\text{div})\)\(\xrightarrow{\nabla\cdot}\)\(L^2\)
\(S_{1,k}^\unicode{0x25FA}\), \(\mathcal{P}_{k}\Lambda^{r}(\Delta_3)\)Lagrange Nédélec (second kind) Brezzi–Douglas–Marini discontinuous Lagrange
\(S_{2,k}^\unicode{0x25FA}\), \(\mathcal{P}^-_{k}\Lambda^{r}(\Delta_3)\)Lagrange Nédélec (first kind) Raviart–Thomas discontinuous Lagrange
\(S_{4,k}^\square\), \(\mathcal{Q}^-_{k}\Lambda^{r}(\square_3)\)Lagrange Nédélec (first kind) Raviart–Thomas discontinuous Lagrange
\(S_{1,k}^\square\), \(\mathcal{S}_{k}\Lambda^{r}(\square_3)\)serendipity serendipity H(curl) serendipity H(div) dPc
\(S_{2,k}^\square\), \(\mathcal{S}^-_{k}\Lambda^{r}(\square_3)\)serendipity trimmed serendipity H(curl) trimmed serendipity H(div) dPc
\(S_{3,k}^\square\)Tiniest tensor Tiniest tensor H(curl) Tiniest tensor H(div) discontinuous Lagrange

De Rham complex in 2D

In 2D, \(\textbf{H}(\text{div})\) and \(\textbf{H}(\text{curl})\) are isomorphic via a 90 degree rotation \(R\). This means that we can define the de Rham complex in two ways.

One variant uses \(\textbf{H}(\text{div})\) and the vector-valued \(\textbf{curl}\) operator, \(\textbf{curl} \, u = (\partial_y u, -\partial_x u)\). Note that \(\textbf{curl} \, u = R \, \nabla u\).

Name(s)\(H^1\)\(\xrightarrow{\textbf{curl}}\)\(\textbf{H}(\text{div})\)\(\xrightarrow{\nabla\cdot}\)\(L_2\)
\(S_{1,k}^\unicode{0x25FA}\), \(\mathcal{P}_{k}\Lambda^{r}(\Delta_2)\)Lagrange Brezzi–Douglas–Marini discontinuous Lagrange
\(S_{2,k}^\unicode{0x25FA}\), \(\mathcal{P}^-_{k}\Lambda^{r}(\Delta_2)\)Lagrange Raviart–Thomas discontinuous Lagrange
\(S_{4,k}^\square\), \(\mathcal{Q}^-_{k}\Lambda^{r}(\square_2)\)Lagrange Raviart–Thomas discontinuous Lagrange
\(S_{1,k}^\square\), \(\mathcal{S}_{k}\Lambda^{r}(\square_2)\)serendipity serendipity H(div) dPc
\(S_{2,k}^\square\), \(\mathcal{S}^-_{k}\Lambda^{r}(\square_2)\)serendipity trimmed serendipity H(div) dPc
\(S_{3,k}^\square\)Tiniest tensor Tiniest tensor H(div) discontinuous Lagrange
\(\mathrm{C}\mathrm{P}^{3-r}\mathrm{\Lambda}^r(\mathcal{R})\)Hsieh–Clough–Tocher Alfeld–Sorokina P1 macro

The second variant uses \(\textbf{H}(\text{curl})\) and the scalar-valued \(\text{curl}\) operator, \(\text{curl} \, \mathbf{u} = \partial_x u_y - \partial_y u_x\). Note that \(\text{curl} \, \mathbf{u} = \nabla\cdot R \mathbf{u}\).

Name(s)\(H^1\)\(\xrightarrow{\nabla}\)\(\textbf{H}(\text{curl})\)\(\xrightarrow{\text{curl}}\)\(L_2\)
\(S_{1,k}^\unicode{0x25FA}\), \(\mathcal{P}_{k}\Lambda^{r}(\Delta_2)\)Lagrange Nédélec (second kind) discontinuous Lagrange
\(S_{2,k}^\unicode{0x25FA}\), \(\mathcal{P}^-_{k}\Lambda^{r}(\Delta_2)\)Lagrange Nédélec (first kind) discontinuous Lagrange
\(S_{4,k}^\square\), \(\mathcal{Q}^-_{k}\Lambda^{r}(\square_2)\)Lagrange Nédélec (first kind) discontinuous Lagrange
\(S_{1,k}^\square\), \(\mathcal{S}_{k}\Lambda^{r}(\square_2)\)serendipity serendipity H(curl) dPc
\(S_{2,k}^\square\), \(\mathcal{S}^-_{k}\Lambda^{r}(\square_2)\)serendipity trimmed serendipity H(curl) dPc
\(S_{3,k}^\square\)Tiniest tensor Tiniest tensor H(curl) discontinuous Lagrange