1 Introduction

The Virtual Element Method (VEM) was introduced in [6, 7] as a generalization of the Finite Element Method that allows to use general polygonal and polyhedral meshes. The VEM enjoyed a good success in this recent years both in the mathematics and in the engineering communities, a very brief list of papers being [5, 8, 11,12,13,14, 19, 21, 23, 24, 34,35,36, 38, 40], while for the specific framework of incompressible flows we refer to [3, 9, 10, 17, 18, 25, 33].

It was soon recognized that the more general construction of VEM, that is not limited to polynomial functions on the elements, may allow for further interesting features in additional to polytopal meshing. An example can be found in [9, 10] where the authors developed a (conforming) Virtual Element Method for the Stokes and Navier–Stokes problems that guarantees a divergence free velocity, a property that yields advantages with respect to standard inf-sup stable schemes (see for instance [29]). And, most importantly, the proposed approach fitted quite naturally in the virtual element setting, so that the ensuing element is not particularly complicated to code or to handle.

Our aim is to further develop the idea in [9, 10], also in order to get a deeper understanding of the underlying structure. In [22] the term “Stokes exact complex” was introduced; in that paper the authors underline that, if a given velocity/pressure FE scheme is associated to a discrete Stokes exact complex, then not only the existence of an unique solution is guaranteed, but also the divergence-free character of the discrete velocity. In addition, this allows to construct an equivalent \({\mathrm{curl}}\) formulation of the problem in a potential-like variable. This matter is one of interest in the FEM community, see for instance [29, 32], also due to the difficulty in deriving exact Stokes complexes for Finite Elements, that often yield quite “cumbersome” schemes.

In the present paper, we unveil the underlying 2D Stokes complex structure of the VEM in [9, 10] by introducing a Virtual Element space \({\varPhi }_h \subset H^2({\varOmega })\) and proving that the triad \(\{{\varPhi }_h, {\varvec{V}}_h, Q_h\}\) (with \({\varvec{V}}_h\) and \(Q_h\) velocity and pressure spaces of [10]) is an exact Stokes complex. Furthermore, we show the computability of the associated differential operators in terms of the adopted degrees of freedom (a key aspect in VEM discretizations) and we explore also a different discretization of the convective trilinear form. As a byproduct of the above exact-sequence construction, we obtain a discrete \({\mathrm{curl}}\) formulation of the Navier–Stokes problem (set in the smaller space \({\varPhi }_h\)) that yields the same velocity as the original method (while the pressure needs to be recovered by solving a global rectangular system). For completeness, we also briefly present and compare a stream-function formulation approach, that is based on a direct discretization (with \(C^1\) Virtual Elements) of the continuous stream function formulation of the problem. Some numerical tests are developed at the end of the paper, in order to show the performance of the methods, also comparing aspects such as condition number and size of the linear system. We note that a related study was developed in [3], but only for the lowest order case without enhancements (that is, suitable for Stokes but not for Navier–Stokes).

The paper is organized as follows. In Sect. 2 we review the Navier–Stokes problem in strong and variational form, together with some basic theoretical facts. In Sect. 4 (after introducing some preliminaries and definitions in Sect. 3) we review the Virtual scheme in [10], propose a third option for the discretization of the convective term and extend the convergence results also to this case. In Sect. 5 we introduce the space \({\varPhi }_h\) together with the associated degrees of freedom, prove the exact Stokes complex property and state the alternative curl formulation for the discrete problem. In Sect. 6 we present a set of numerical tests, that also compare the proposed method with a direct \(C^1\) discretization of the stream-function problem, briefly described in the Appendix, that is not associated to a Stokes complex.

Throughout the paper, we will follow the usual notation for Sobolev spaces and norms [1]. Hence, for an open bounded domain \(\omega \), the norms in the spaces \(W^s_p(\omega )\) and \(L^p(\omega )\) are denoted by \(\Vert {\cdot }\Vert _{W^s_p(\omega )}\) and \(\Vert {\cdot }\Vert _{L^p(\omega )}\) respectively. Norm and seminorm in \(H^{s}(\omega )\) are denoted respectively by \(\Vert {\cdot }\Vert _{s,\omega }\) and \(|{\cdot }|_{s,\omega }\), while \((\cdot ,\cdot )_{\omega }\) and \(\Vert \cdot \Vert _{\omega }\) denote the \(L^2\)-inner product and the \(L^2\)-norm (the subscript \(\omega \) may be omitted when \(\omega \) is the whole computational domain \({\varOmega }\)). Moreover with a usual notation, the symbols \(\nabla \), \(\varDelta \) and \({\varvec{\nabla }}^{\varvec{2}}\) denote the gradient, Laplacian and Hessian matrix for scalar functions, while \({\varvec{\Delta }}\), \({\varvec{\nabla }}\), and \(\mathrm{div}\) denote the vector Laplacian, the gradient operator and the divergence for vector fields. Furthermore for a scalar function \(\varphi \) and a vector field \({\varvec{v}}:= (v_1, \, v_2)\) we set

$$\begin{aligned} {\mathbf{curl}}\, \varphi := \left( \frac{\partial \varphi }{\partial y}, \, -\frac{\partial \varphi }{\partial x} \right) , \quad {\mathrm{curl}}\, {\varvec{v}}:= \frac{\partial v_2}{\partial x} - \frac{\partial v_1}{\partial y}, \quad \text {and}\quad \varphi \times {\varvec{v}}:= \varphi \left( -v_2, \, v_1\right) \,. \end{aligned}$$

2 The Navier–Stokes Equation

We consider the steady Navier–Stokes equation on a polygonal simply connected domain \({\varOmega }\subseteq \mathbb {R}^2\) (for more details, see for instance [27])

$$\begin{aligned} \left\{ \begin{aligned}&\text { find} \, ({\varvec{u}},p) \, \text {such that}&\\&- \nu \, {\varvec{\Delta }}{\varvec{u}}+ ({\varvec{\nabla }}{\varvec{u}}) \,{\varvec{u}}- \nabla p = {\varvec{f}}\qquad&\text {in} \, {\varOmega }, \\&\mathrm{div}\, {\varvec{u}}= 0 \qquad&\text {in} \, {\varOmega }, \\&{\varvec{u}}= 0 \qquad&\text {on} \, \partial {\varOmega }, \end{aligned} \right. \end{aligned}$$
(1)

where \({\varvec{u}}\), p are the velocity and the pressure fields, respectively, \(\nu \in {{\mathbb {R}}}\), \(\nu > 0\) is the viscosity of the fluid and \({\varvec{f}}\in [L^2({\varOmega })]^2\) represents the external force. For sake of simplicity we here consider Dirichlet homogeneous boundary conditions, different boundary conditions can be treated as well. Problem (1) can be written in the equivalent rotational form

$$\begin{aligned} \left\{ \begin{aligned}&\text{ find } \, ({\varvec{u}}, P) \, \hbox {such that}&\\&- \nu \, {\varvec{\Delta }}{\varvec{u}}+ ({\mathrm{curl}}\, {\varvec{u}}) \times {\varvec{u}}- \nabla P = {\varvec{f}}\qquad&\text {in} \, {\varOmega }, \\&\mathrm{div}\, {\varvec{u}}= 0 \qquad&\text {in} \, {\varOmega }, \\&{\varvec{u}}= 0 \qquad&\text {on} \, \partial {\varOmega }. \end{aligned} \right. \end{aligned}$$
(2)

Systems (1) and (2) are equivalent in the sense that the velocity solutions \({\varvec{u}}\) coincide and the rotational pressure solution P of Problem (2), the so-called Bernoulli pressure, and the convective pressure solution p of Problem (1) are jointed by the relation

$$\begin{aligned} P := p - \frac{1}{2} \,{\varvec{u}}\cdot {\varvec{u}}+ \lambda \,, \end{aligned}$$
(3)

where, for the time being, \(\lambda \) denotes a suitable constant.

Let us consider the spaces

$$\begin{aligned} {\varvec{V}}:= \left[ H_0^1({\varOmega }) \right] ^2, \qquad Q:= L^2_0({\varOmega }) = \left\{ q \in L^2({\varOmega }) \quad \text {s.t.} \quad \int _{{\varOmega }} q \,\mathrm{d}{\varOmega }= 0 \right\} \end{aligned}$$

endowed with natural norms

$$\begin{aligned} \Vert {\varvec{v}}\Vert _{{\varvec{V}}} := | {\varvec{v}}|_{ H^1({\varOmega })} \,, \qquad \Vert q\Vert _Q := \Vert q\Vert _{L^2({\varOmega })}. \end{aligned}$$

Let us introduce the bilinear forms

$$\begin{aligned} a(\cdot , \cdot ) :{\varvec{V}}\times {\varvec{V}}\rightarrow \mathbb {R}, \qquad a ({\varvec{u}}, {\varvec{v}})&:= \int _{{\varOmega }} \, {\varvec{\nabla }} {\varvec{u}}: {\varvec{\nabla }} {\varvec{v}}\,\mathrm{d} {\varOmega }, \qquad \text {for all} \, {\varvec{u}}, {\varvec{v}}\in {\varvec{V}}, \end{aligned}$$
(4)
$$\begin{aligned} b(\cdot , \cdot ) :{\varvec{V}}\times Q \rightarrow \mathbb {R}\qquad b({\varvec{v}}, q)&:= \int _{{\varOmega }}q\, \mathrm{div} \,{\varvec{v}}\,\mathrm{d}{\varOmega }\qquad \text {for all} \, {\varvec{v}}\in {\varvec{V}}, \, q \in Q, \end{aligned}$$
(5)

and the trilinear forms

$$\begin{aligned} c_{\mathrm{conv}}(\cdot ; \, \cdot , \cdot )&:{\varvec{V}}\times {\varvec{V}}\times {\varvec{V}}\rightarrow \mathbb {R}&\quad&c_{\mathrm{conv}}({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) := \int _{{\varOmega }} ( {\varvec{\nabla }}{\varvec{u}}) \, {\varvec{w}}\cdot {\varvec{v}}\,\mathrm{d}{\varOmega }\,, \end{aligned}$$
(6)
$$\begin{aligned} c_{\mathrm{skew}}(\cdot ; \, \cdot , \cdot )&:{\varvec{V}}\times {\varvec{V}}\times {\varvec{V}}\rightarrow \mathbb {R}&\quad&c_{\mathrm{skew}}({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) := \frac{1}{2} c_{\mathrm{conv}}({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) - \frac{1}{2} c_{\mathrm{conv}}({\varvec{w}}; \, {\varvec{v}}, {\varvec{u}}) \,, \end{aligned}$$
(7)
$$\begin{aligned} c_{\mathrm{rot}}(\cdot ; \, \cdot , \cdot )&:{\varvec{V}}\times {\varvec{V}}\times {\varvec{V}}\rightarrow \mathbb {R}&\quad&c_{\mathrm{rot}}({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) := \int _{{\varOmega }} ( {\mathrm{curl}}{\varvec{w}}\times \, {\varvec{u}}) \cdot {\varvec{v}}\,\mathrm{d}{\varOmega }\,. \end{aligned}$$
(8)

Direct computations give that

$$\begin{aligned} c_{\mathrm{conv}}({\varvec{u}}; \, {\varvec{u}}, {\varvec{v}})&= c_{\mathrm{skew}}({\varvec{u}}; \, {\varvec{u}}, {\varvec{v}}) \qquad \text {for all} \, {\varvec{u}}, {\varvec{v}}\in {\varvec{V}}\, \text {with}\,\, \mathrm{div}\, {\varvec{u}}= 0, \end{aligned}$$
(9)
$$\begin{aligned} c_{\mathrm{conv}}({\varvec{u}}; \, {\varvec{u}}, {\varvec{v}})&= c_{\mathrm{rot}}({\varvec{u}}; \, {\varvec{u}}, {\varvec{v}}) + \frac{1}{2} \int _{{\varOmega }} \nabla ({\varvec{u}}\cdot {\varvec{u}}) \, {\varvec{v}}\, \mathrm{d}{\varOmega }\qquad \text {for all} \, {\varvec{u}}, {\varvec{v}}\in {\varvec{V}}. \end{aligned}$$
(10)

In the following we denote with \(c(\cdot ; \, \cdot , \cdot )\) one of the trilinear forms listed above. Then a standard variational formulation of Problem (1) is:

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, ({\varvec{u}}, p) \in {\varvec{V}}\times Q, \, \text {such that} \\&\nu \, a({\varvec{u}}, {\varvec{v}}) + c({\varvec{u}}; \, {\varvec{u}}, {\varvec{v}}) + b({\varvec{v}}, p) = ({\varvec{f}}, {\varvec{v}}) \qquad&\text {for all} \, {\varvec{v}}\in {\varvec{V}}, \\&b({\varvec{u}}, q) = 0 \qquad&\text {for all}\, q \in Q. \end{aligned} \right. \end{aligned}$$
(11)

From (10) it is clear that if \(c(\cdot ; \, \cdot , \cdot ) = c_{\mathrm{rot}}(\cdot ; \, \cdot , \cdot )\) we recover instead the variational formulation of system (2) and the pressure solution p is actually the Bernoulli pressure P where \(\lambda \) in (3) is the mean value of \(\frac{1}{2} \,{\varvec{u}}\cdot {\varvec{u}}\).

In the context of the analysis of incompressible flows, it is useful to introduce the concept of Helmholtz–Hodge projector (see for instance [29, Lemma 2.6] and [26, Theorem 3.3]). For every \({\varvec{w}}\in [L^2({\varOmega })]^2\) there exist \({\varvec{w}}_0 \in H(\mathrm{div}; \, {\varOmega })\) and \(\zeta \in H^1({\varOmega }) / \mathbb {R}\) such that

$$\begin{aligned} {\varvec{w}}= {\varvec{w}}_0 + \nabla \, \zeta , \end{aligned}$$
(12)

where \({\varvec{w}}_0\) is \(L^2\)-orthogonal to the gradients, that is \(({\varvec{w}}_0 , \, \nabla \varphi ) = 0\) for all \(\varphi \in H^1({\varOmega })\) (which implies, in particular, that \({\varvec{w}}_0\) is solenoidal, i.e. \(\mathrm{div} \, {\varvec{w}}_0 = 0\)). The orthogonal decomposition (12) is unique and is called Helmholtz–Hodge decomposition, and \({\mathcal {P}}({\varvec{w}}) :={\varvec{w}}_0\) is the Helmholtz–Hodge projector of \({\varvec{w}}\).

Combining the argument in [27, Theorem IV.2.2] and the definition of Helmholtz–Hodge projector, it can be shown that in the diffusion dominated regime, i.e. under the assumption

$$\begin{aligned} \mathbf {(A0)} \qquad \gamma := \frac{{\widehat{C}} \, \Vert {\mathcal {P}}({\varvec{f}})\Vert _{H^{-1}}}{\nu ^2} < 1 \end{aligned}$$
(13)

where \({\widehat{C}}\) denotes the continuity constant of \(c(\cdot ; \, \cdot , \cdot )\) with respect to the \({\varvec{V}}\)-norm, Problem (11) is well-posed and the unique solution \(({\varvec{u}}, p) \in {\varvec{V}}\times Q\) satisfies

$$\begin{aligned} \Vert {\varvec{u}}\Vert _{{\varvec{V}}} \le \frac{\Vert {\mathcal {P}}({\varvec{f}})\Vert _{H^{-1}}}{\nu } \,. \end{aligned}$$
(14)

Let us introduce the kernel of bilinear form \(b(\cdot ,\cdot )\) that corresponds to the functions in \({\varvec{V}}\) with vanishing divergence

$$\begin{aligned} {\varvec{Z}}:= \{ {\varvec{v}}\in {\varvec{V}}\quad \text {s.t.} \quad b({\varvec{v}}, q) = 0 \quad \text {for all} \, q \in Q \}\,. \end{aligned}$$
(15)

Then, Problem (11) can be formulated in the equivalent kernel form:

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, {\varvec{u}}\in {\varvec{Z}}, \, \text {such that} \\&\nu \, a({\varvec{u}}, {\varvec{v}}) + c({\varvec{u}}; \, {\varvec{u}}, {\varvec{v}}) = ({\varvec{f}}, {\varvec{v}}) = ({\mathcal {P}}({\varvec{f}}), {\varvec{v}}) \qquad&\text {for all} \, {\varvec{v}}\in {\varvec{Z}}. \end{aligned} \right. \end{aligned}$$
(16)

If \({\varOmega }\) is a simply connected domain, a well known result (see [27] for the details) states that a vector function \({\varvec{v}}\in {\varvec{Z}}\) if and only if there exists a scalar potential function \(\varphi \in H^2({\varOmega })\), called stream function such that

$$\begin{aligned} {\varvec{v}}= {\mathbf{curl}}\, \varphi \,. \end{aligned}$$

Clearly the function \(\varphi \) is defined up to a constant. Let us consider the space

$$\begin{aligned} {\varPhi } := H^2_0({\varOmega }) = \left\{ \varphi \in H^2({\varOmega }) \quad \text {s.t.} \quad \varphi = 0, \quad \frac{\partial \varphi }{\partial n} = 0 \quad \text {on} \, \partial {\varOmega }\right\} \end{aligned}$$
(17)

endowed with norm

$$\begin{aligned} \Vert \varphi \Vert _{{\varPhi }} := |\varphi |_{H^2({\varOmega })} \qquad \text {for all} \, \varphi \in {\varPhi }. \end{aligned}$$

Then, Problem (16) can be formulated in the following \({\mathbf{curl}}\)formulation:

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, \psi \in {\varPhi }, \, \text {such that} \\&\nu \, a({\mathbf{curl}}\psi , \, {\mathbf{curl}}\varphi ) + c({\mathbf{curl}}\psi ; \, {\mathbf{curl}}\psi , {\mathbf{curl}}\varphi ) = ({\varvec{f}}, {\mathbf{curl}}\varphi ) \qquad&\text {for all} \, \varphi \in {\varPhi }. \end{aligned} \right. \end{aligned}$$
(18)

Since the formulation (18) is equivalent to Problem (16) (in turn equivalent to Problem (11)), the well-posedness of \({\mathbf{curl}}\) formulation follows from assumption \(\mathbf {(A0)}\).

3 Definitions and Preliminaries

In the present section we introduce some basic tools and notations useful in the construction and theoretical analysis of Virtual Element Methods. Let \(\{{\varOmega }_h\}_h\) be a sequence of decompositions of \({\varOmega }\) into general polygonal elements E where \(h_E\) is the diameter of E and \(h := \sup _{E \in {\varOmega }_h} h_E\). We suppose that for all h, each element E in \({\varOmega }_h\) fulfils the following assumptions:

\(\mathbf {(A1)}\) :

E is star-shaped with respect to a ball \(B_E\) of radius \( \ge \, \varrho \, h_E\),

\(\mathbf {(A2)}\) :

the distance between any two vertexes of E is \(\ge \varrho \, h_E\),

where \(\varrho \) is a uniform positive constant. We remark that the hypotheses above, though not too restrictive in many practical cases, can be further relaxed, as investigated in [8]. For any \(E \in {\varOmega }_h\), using standard VEM notations, for \(n \in \mathbb {N}\) let us introduce the spaces:

  • \(\mathbb {P}_n(E)\) the set of polynomials on E of degree \(\le n\) (with the extended notation \(\mathbb {P}_{-1}(E)=\emptyset \)),

  • \({\widehat{\mathbb {P}}}_{n / m}(E) := \mathbb {P}_{n}(E) / \mathbb {P}_{m}(E)\) for \(m \le n\) denotes the polynomials in \(\mathbb {P}_{n}(E)\) that are \(L^2\)-orthogonal to all polynomials of \(\mathbb {P}_{m}(E)\),

  • \(\mathbb {B}_n(\partial E) := \{v \in C^0(\partial E) \quad \text {s.t.} \quad v_{|e} \in \mathbb {P}_n(e) \quad \text {for all edge} \, e \subset \partial E \}\).

Note that

$$\begin{aligned} {[}\mathbb {P}_n(E)]^2 = \nabla (\mathbb {P}_{n+1}(E)) \oplus {\varvec{x}}^{\perp } \,\mathbb {P}_{n-1}(E) \end{aligned}$$
(19)

with \({\varvec{x}}^{\perp }:= (x_2, -x_1)\).

Remark 3.1

Note that (19) implies that the operator \({\mathrm{curl}}\) is an isomorphism from \({\varvec{x}}^{\perp } \, \mathbb {P}_{n-1}(E)\) to the whole \(\mathbb {P}_{n-1}(E)\), i.e. for any \(q_{n-1} \in \mathbb {P}_{n-1}(E)\) there exists a unique \(p_{n-1} \in \mathbb {P}_{n-1}(E)\) such that

$$\begin{aligned} q_{n-1} = {\mathrm{curl}}({\varvec{x}}^{\perp } \,p_{n-1} ) \,. \end{aligned}$$

On the other hand, we also have that

$$\begin{aligned} \dim \left( \mathbb {P}_n(E) \right) = \frac{(n+2)(n+1)}{2} \,, \qquad \dim \left( \mathbb {B}_n(\partial E)\right) = n_E \, n, \end{aligned}$$
(20)

where \(n_E\) is the number of edges (or the number of vertexes) of the polygon E.

One core idea in the VEM construction is to define suitable (computable) polynomial projections. For any \(n \in \mathbb {N}\) and \(E \in {\varOmega }_h\) we introduce the following polynomial projections:

  • the \(\mathbf {L^2}\)-projection\({\varPi }_n^{0, E} :L^2(E) \rightarrow \mathbb {P}_n(E)\), given by

    $$\begin{aligned} \int _Eq_n (v - \, {{\varPi }}_{n}^{0, E} v) \, \mathrm{d} E = 0 \qquad \text {for all} \, v \in L^2(E) \, \text {and for all} \, q_n \in \mathbb {P}_n(E), \end{aligned}$$
    (21)

    with obvious extension for vector functions \({\varPi }_n^{0, E} :[L^2(E)]^2 \rightarrow [\mathbb {P}_n(E)]^2\), and tensor functions \({\varvec{\Pi }}_{n}^{0, E} :[L^2(E)]^{2 \times 2} \rightarrow [\mathbb {P}_{n}(E)]^{2 \times 2}\),

  • the \(\mathbf {H^1}\)-seminorm projection\({{\varPi }}_{n}^{\nabla ,E} :H^1(E) \rightarrow \mathbb {P}_n(E)\), defined by

    $$\begin{aligned} \left\{ \begin{aligned}&\int _E \nabla \,q_n \cdot \nabla ( v - \, {{\varPi }}_{n}^{\nabla ,E} v) \, \mathrm{d} E = 0 \qquad \text {for all} \, v \in H^1(E) \, \text {and for all} \, q_n \in \mathbb {P}_n(E), \\&{\varPi }_0^{0,E}(v - \, {{\varPi }}_{n}^{\nabla , E} v) = 0 \, , \end{aligned} \right. \end{aligned}$$
    (22)

    with obvious extension for vector functions \({\varPi }_n^{\nabla , E} :[H^1(E)]^2 \rightarrow [\mathbb {P}_n(E)]^2\).

In the following the symbol C will indicate a generic positive constant, independent of the mesh size h, the viscosity \(\nu \) and the constant \(\gamma \) appearing in \(\mathbf {(A0)}\), but which may depend on \({\varOmega }\), the integer k (representing the “polynomial” order of the method) and on the shape constant \(\varrho \) in assumptions \(\mathbf {(A1)}\) and \(\mathbf {(A2)}\). Furthermore, C may vary at each occurrence.

4 Virtual Elements Velocity–Pressure Formulation

In the present section we outline a short overview of the Virtual Element discretization of the Navier–Stokes formulation presented in Problem (11). We will make use of various tools from the virtual element technology, that will be described briefly; we refer the interested reader to the papers [3, 9, 10, 39]. We recall that in [9] a new family of Virtual Elements for the Stokes Equation has been introduced. The core idea is to define suitable Virtual space of velocities, associated to a Stokes-like variational problem on each element, such that the discrete velocity kernel is pointwise divergence-free. In [39] has been presented an enhanced Virtual space to be used in place of the original one, that, taking the inspiration from [2], allows the explicit knowledge of the \(L^2\)-projection onto the polynomial space \(\mathbb {P}_k\) (being k the order of the method). In [10] a Virtual Element scheme for the Navier–Stokes equation in classical velocity–pressure formulation has been proposed. In the following we give some basic tools and a brief overview of such scheme. We focus particularly on the virtual element discretization of Navier–Stokes equation in rotation form (2) related to the trilinear form \(c_{\mathrm{rot}}(\cdot ; \, \cdot , \cdot )\) defined in (8) that was not treated in [10]. Specifically for the resulting discrete scheme we develop the convergence analysis for both the Bernoulli and the related convective pressure.

4.1 Virtual Elements Spaces

Let \(k \ge 2\) the polynomial degree of accuracy of the method. We consider on each element \(E \in {\varOmega }_h\) the finite dimensional local virtual space (cf. [10]):

$$\begin{aligned} {\varvec{V}}_h^E&:= \biggl \{ {\varvec{v}}\in [H^1(E)]^2&\text {s.t.}&\quad \left( {\varvec{v}}- {\varPi }^{\nabla ,E}_k {\varvec{v}}, \, {\varvec{x}}^{\perp } \, {\widehat{p}}_{k-1} \right) _{E} = 0&\quad \text {for all} \, {\widehat{p}}_{k-1} \in {\widehat{\mathbb {P}}}_{k-1 / k-3}(E) \biggr .\nonumber \\ \,&\quad \biggl . \left\{ \begin{aligned}&- {\varvec{\Delta }} {\varvec{v}}- \nabla s \in {\varvec{x}}^{\perp } \, \mathbb {P}_{k-1}\,, \\&\mathrm{div} \, {\varvec{v}}\in \mathbb {P}_{k-1}(E)\,, \\&{\varvec{v}}_{|{\partial E}} \in [\mathbb {B}_k(\partial E)]^2 \,, \end{aligned} \right.&\quad \text { for some} \, s \in L^2(E) / \mathbb {R}\quad \biggr \}\,. \end{aligned}$$
(23)
Fig. 1
figure 1

DoFs for \(k=2\) (left), \(k=3\) (right). We denote \(\mathbf {D_V1}\) with green dots, \(\mathbf {D_V2}\) with orange dots, \(\mathbf {D_V3}\) with blue stars, \(\mathbf {D_V4}\) with red squares (Color figure online)

We here summarize the main properties of the virtual space \({\varvec{V}}_h^E\) (we refer [10, 39] for a deeper analysis):

  • dimension: the dimension of \({\varvec{V}}_h^E\) is

    $$\begin{aligned} \begin{aligned} \dim \left( {\varvec{V}}_h^E \right)&= 2n_E \, k + \frac{(k-1)(k-2)}{2} + \frac{(k+1)k}{2} - 1, \end{aligned} \end{aligned}$$
    (24)

    where \(n_E\) is the number of vertexes of E;

  • degrees of freedom: the following linear operators \(\mathbf {D_V}\), split into four subsets (see Fig. 1) constitute a set of DoFs for \({\varvec{V}}_h^E\):

    • \(\mathbf {D_V1}\): the values of \({\varvec{v}}\) at the vertexes of the polygon E,

    • \(\mathbf {D_V2}\): the values of \({\varvec{v}}\) at \(k-1\) distinct points of every edge \(e \in \partial E\),

    • \(\mathbf {D_V3}\): the moments of \({\varvec{v}}\)

      $$\begin{aligned} \int _E {\varvec{v}}\cdot {\varvec{x}}^{\perp }\, p_{k-3} \, \mathrm{d}E \qquad \text {for all} \, p_{k-3} \in \mathbb {P}_{k-3}(E), \end{aligned}$$
    • \(\mathbf {D_V4}\): the moments of \(\mathrm{div} \,{\varvec{v}}\)

      $$\begin{aligned} \int _E (\mathrm{div} \,{\varvec{v}}) \, q_{k-1} \, \mathrm{d}E \qquad \text {for all} \, q_{k-1} \in \mathbb {P}_{k-1}(E) /\mathbb {R}; \end{aligned}$$
  • projections: the DoFs \(\mathbf {D_V}\) allow us to compute exactly (cf. (22) and (21))

    $$\begin{aligned}&{{\varPi }^{\nabla , E}_k}:{\varvec{V}}_h^E \rightarrow [\mathbb {P}_k(E)]^2, \qquad {{\varPi }^{0, E}_k} :{\varvec{V}}_h^E \rightarrow [\mathbb {P}_k(E)]^2, \\&{{\varvec{\Pi }}^{0, E}_{k-1}} :{\varvec{\nabla }}({\varvec{V}}_h^E) \rightarrow [\mathbb {P}_{k-1}(E)]^{2 \times 2}, \end{aligned}$$

    in the sense that, given any \({\varvec{v}}_h \in {\varvec{V}}_h^E\), we are able to compute the polynomials \({{\varPi }^{\nabla , E}_k}{\varvec{v}}_h\), \({{\varPi }^{0, E}_k} {\varvec{v}}_h\) and \({{\varvec{\Pi }}^{0, E}_{k-1}}\nabla {\varvec{v}}_h\) only using, as unique information, the degree of freedom values \(\mathbf {D_V}\) of \({\varvec{v}}_h\).

The global virtual element space is obtained as usual by combining the local spaces \({\varvec{V}}_h^E\) accordingly to the local degrees of freedom, as in standard finite elements and considering the homogeneous boundary conditions. We obtain the global space

$$\begin{aligned} {\varvec{V}}_h := \{ {\varvec{v}}\in [H^1_0({\varOmega })]^2 \quad \text {s.t.} \quad {\varvec{v}}_{|E} \in {\varvec{V}}_h^E \quad \text {for all} \, E \in {\varOmega }_h \} \,. \end{aligned}$$
(25)

The space \({\varvec{V}}_h\) has an optimal interpolation order of accuracy with respect to \(k\ge 2\) (see Theorem 4.1 in [10]). The pressure space is simply given by the piecewise polynomial functions

$$\begin{aligned} Q_h := \{ q \in L_0^2({\varOmega }) \quad \text {s.t.} \quad q_{|E} \in \mathbb {P}_{k-1}(E) \quad \text {for all} \, E \in {\varOmega }_h\}, \end{aligned}$$
(26)

with the obvious associated set of global degrees of freedom:

  • \(\mathbf {D_Q}\): the moments up to order \(k-1\) of q, i.e.

    $$\begin{aligned} \int _E q \, p_{k-1} \, \mathrm{d}E \qquad \text {for all} \, p_{k-1} \in \mathbb {P}_{k-1}(E) \, \text {and for all} \, E \in {\varOmega }_h. \end{aligned}$$

A crucial observation is that, by definitions (25) and (26), it holds

$$\begin{aligned} \mathrm{div}\, {\varvec{V}}_h\subseteq Q_h \,. \end{aligned}$$
(27)

Therefore the discrete kernel

$$\begin{aligned} {\varvec{Z}}_h := \{ {\varvec{v}}_h \in {\varvec{V}}_h \quad \text {s.t.} \quad b({\varvec{v}}_h, q_h) = 0 \quad \hbox { for all}\ q_h \in Q_h\}, \end{aligned}$$
(28)

is a subspace of the continuous kernel \({\varvec{Z}}\) (cf. (15)), i.e.

$$\begin{aligned} {\varvec{Z}}_h \subseteq {\varvec{Z}}\,. \end{aligned}$$
(29)

This leads to a series of important advantages, as explored in [10, 29, 30, 39]. Finally, we remark that the kernel \({\varvec{Z}}_h\) is obtained by gluing the local kernels explicitly defined by

$$\begin{aligned} {\varvec{Z}}_h^E := \biggl \{ {\varvec{v}}\in [H^1(E)]^2 \quad \text {s.t.} \quad&\left( {\varvec{v}}- {\varPi }^{\nabla ,E}_k {\varvec{v}}, \, {\varvec{x}}^{\perp } \, {\widehat{p}}_{k-1} \right) _{E} = 0 \quad \text {for all} \, {\widehat{p}}_{k-1} \in {\widehat{\mathbb {P}}}_{k-1 / k-3}(E) \biggr . \nonumber \\&\biggl . \left\{ \begin{aligned}&- {\varvec{\Delta }} {\varvec{v}}- \nabla s \in {\varvec{x}}^{\perp } \, \mathbb {P}_{k-1}\,, \\&\mathrm{div} \, {\varvec{v}}= 0\,, \\&{\varvec{v}}_{|{\partial E}} \in [\mathbb {B}_k(\partial E)]^2 \,, \end{aligned} \right. \qquad \text { for some} \, s \in L^2(E) / \mathbb {R}\quad \biggr \} \,. \end{aligned}$$
(30)

It can be shown that \({\varvec{v}}\in {\varvec{Z}}_h^E\) if and only if \(\mathbf {D_V4} = {\varvec{0}}\) and \(\mathbf {D_V1}\) and \(\mathbf {D_V2}\) are such that \(\int _{\partial E} {\varvec{v}}\cdot {\varvec{n}} \, \mathrm{d}S = 0\). Therefore, employing (24) and (20), the dimension of \({\varvec{Z}}_h^E\) is

$$\begin{aligned} \begin{aligned} \dim \left( {\varvec{Z}}_h^E \right)&= \mathrm{dim} \left( {\varvec{V}}_h^E \right) - \mathrm{number} \left( \mathbf {D_V4} \right) - 1 = 2n_E k + \frac{(k-1)(k-2)}{2} - 1, \end{aligned} \end{aligned}$$
(31)

where \(n_E\) is the number of vertexes of E.

4.2 Discrete Bilinear forms and Load Term Approximation

In this subsection, we briefly describe the construction of a discrete version of the bilinear form \(a(\cdot , \cdot )\) (cf. (4)) and trilinear forms \(c(\cdot ; \cdot , \cdot )\) (cf. (6), (7), (8)). We can follow in a rather slavish way the procedure initially introduced in [6] for the Laplace problem and further developed in [9, 10, 39] for flow problems. First, we decompose into local contributions the bilinear form \(a(\cdot , \cdot )\) and the trilinear forms \(c(\cdot ; \cdot , \cdot )\) by considering:

$$\begin{aligned} a ({\varvec{u}}, {\varvec{v}}) =: \sum _{E \in {\varOmega }_h} a^E ({\varvec{u}}, {\varvec{v}}) \,, \qquad c({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) =: \sum _{E \in {\varOmega }_h} c^E({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) \, \qquad \text {for all} \, {\varvec{w}}, {\varvec{u}}, {\varvec{v}}\in {\varvec{V}}. \end{aligned}$$

Therefore, following a standard procedure in the VEM framework, we define a computable discrete local bilinear form

$$\begin{aligned} a_h^E(\cdot , \cdot ) :{\varvec{V}}_h^E \times {\varvec{V}}_h^E \rightarrow \mathbb {R}\end{aligned}$$
(32)

approximating the continuous form \(a^E(\cdot , \cdot )\), and defined by

$$\begin{aligned} a_h^E({\varvec{u}}_h, {\varvec{v}}_h) := a^E \left( {{\varPi }^{\nabla , E}_k}{\varvec{u}}_h, \, {{\varPi }^{\nabla , E}_k}{\varvec{v}}_h \right) + {\mathcal {S}}^E \left( (I - {{\varPi }^{\nabla , E}_k}) {\varvec{u}}_h, \, (I -{{\varPi }^{\nabla , E}_k}) {\varvec{v}}_h \right) \end{aligned}$$
(33)

for all \({\varvec{u}}_h, {\varvec{v}}_h \in {\varvec{V}}_h^E\), where the (symmetric) stabilizing bilinear form \({\mathcal {S}}^E :{\varvec{V}}_h^E \times {\varvec{V}}_h^E \rightarrow \mathbb {R}\) satisfies

$$\begin{aligned} \alpha _* a^E({\varvec{v}}_h, {\varvec{v}}_h) \le {\mathcal {S}}^E({\varvec{v}}_h, {\varvec{v}}_h) \le \alpha ^* a^E({\varvec{v}}_h, {\varvec{v}}_h) \qquad \text {for all} \, {\varvec{v}}_h \in {\varvec{V}}_h^E, {{\varPi }}_{k}^{\nabla ,E} {\varvec{v}}_h= {\varvec{0}} \end{aligned}$$
(34)

with \(\alpha _*\) and \(\alpha ^*\) positive constants independent of the element E. For instance, a standard choice is \({\mathcal {S}}^E({\varvec{u}}_h, {\varvec{v}}_h) = \sum _{i=1}^{N_{DoFs}}\mathbf {D_V}_i({\varvec{u}}_h) \, \mathbf {D_V}_i({\varvec{v}}_h)\) where \(\mathbf {D_V}_i({\varvec{v}}_h)\) denotes the i-th DoFs value of \({\varvec{v}}_h\), opportunely scaled. It is straightforward to check that the definition of the \(H^1\)-seminorm projection \({\varPi }^{\nabla , E}_{k}\) (cf. (22)) and (34) imply that the discrete form \(a_h^E(\cdot , \cdot )\) satisfies the well-known consistency and stability properties (see [10] for further details). The global approximated bilinear form \(a_h(\cdot , \cdot ) :{\varvec{V}}_h \times {\varvec{V}}_h \rightarrow \mathbb {R}\) is defined by simply summing the local contributions:

$$\begin{aligned} a_h({\varvec{u}}_h, {\varvec{v}}_h) := \sum _{E \in {\varOmega }_h} a_h^E({\varvec{u}}_h, {\varvec{v}}_h) \qquad \text {for all} \, {\varvec{u}}_h, {\varvec{v}}_h \in {\varvec{V}}_h. \end{aligned}$$
(35)

We now define discrete versions of the forms \(c(\cdot ; \,\cdot , \cdot )\). Referring to (6), (7) and (8), we set for all \({\varvec{w}}_h, {\varvec{u}}_h, {\varvec{v}}_h \in {\varvec{V}}_h^E\):

$$\begin{aligned} c_{\mathrm{conv}, h}^E({\varvec{w}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h)&:= \int _E \left[ \left( {{\varvec{\Pi }}^{0, E}_{k-1}} \, {\varvec{\nabla }}{\varvec{u}}_h \right) \left( {{\varPi }^{0, E}_k} {\varvec{w}}_h \right) \right] \cdot {{\varPi }^{0, E}_k} {\varvec{v}}_h \, \mathrm{d}E \end{aligned}$$
(36)
$$\begin{aligned} c_{\mathrm{skew}, h}^E({\varvec{w}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h)&:= \frac{1}{2}c_{\mathrm{conv}, h}^E({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}}) - \frac{1}{2}c_{\mathrm{conv}, h}^E({\varvec{w}}; \, {\varvec{v}}, {\varvec{u}}) \end{aligned}$$
(37)
$$\begin{aligned} c_{\mathrm{rot}, h}^E({\varvec{w}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h)&:= \int _E \left[ \left( {\varPi }_{k-1}^{0,E} \, {\mathrm{curl}}{\varvec{w}}_h \right) \times \left( {{\varPi }^{0, E}_k} {\varvec{u}}_h \right) \right] \cdot {{\varPi }^{0, E}_k} {\varvec{v}}_h \, \mathrm{d}E \end{aligned}$$
(38)

and note that all quantities in the previous formulas are computable. Let \(c_h^E(\cdot ; \, \cdot , \cdot )\) be one of the discrete trilinear forms listed above. As usual, we define the global approximated trilinear form by adding the local contributions:

$$\begin{aligned} c_h({\varvec{w}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h) := \sum _{E \in {\varOmega }_h} c_h^E({\varvec{w}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h), \qquad \forall {\varvec{w}}_h, {\varvec{u}}_h, {\varvec{v}}_h \in {\varvec{V}}_h. \end{aligned}$$
(39)

The forms \(c_h(\cdot ; \, \cdot , \cdot )\) are immediately extendable to the whole \({\varvec{V}}\) (simply apply the same definition for any \({\varvec{w}}, {\varvec{u}}, {\varvec{v}}\in {\varvec{V}}\)). Moreover, the trilinear forms \(c_h(\cdot ; \, \cdot , \cdot )\) are continuous on \({\varvec{V}}\), i.e. there exists a uniform bounded constant \({\widehat{C}}_h\) such that

$$\begin{aligned} |c_h({\varvec{w}}; \, {\varvec{u}}, {\varvec{v}})| \le {\widehat{C}}_h \, \Vert {\varvec{w}}\Vert _{{\varvec{V}}} \Vert {\varvec{u}}\Vert _{{\varvec{V}}} \Vert {\varvec{v}}\Vert _{{\varvec{V}}} \qquad \forall {\varvec{w}}, {\varvec{u}}, {\varvec{v}}\in {\varvec{V}}. \end{aligned}$$
(40)

The proof of the continuity for the trilinear forms \(c_{\mathrm{conv}, h}(\cdot ; \, \cdot , \cdot )\) and \(c_{\mathrm{skew}, h}(\cdot ; \, \cdot , \cdot )\) can be found in Proposition 3.3 in [10]. Analogous techniques can be used to prove the continuity of the trilinear form \(c_{\mathrm{rot}, h}(\cdot ; \, \cdot , \cdot )\). On the other hand, For what concerns \(b(\cdot , \cdot )\) (cf. (5)), as noticed in [9], we do not need to introduce any approximation, since it can be exactly computed by the DoFs \(\mathbf {D_{{\varvec{V}}}}\).

The last step consists in constructing a computable approximation of the right-hand side \(({\varvec{f}}, \, {\varvec{v}})\) in (11). We define the approximated load term \({\varvec{f}}_h\) as

$$\begin{aligned} {\varvec{f}}_h|_E := {\varPi }_{k}^{0,E} {\varvec{f}}\qquad \text {for all} \, E \in {\varOmega }_h. \end{aligned}$$
(41)

4.3 The Discrete Problem

Referring to (25), (26), (35), (39), (5) and (41), the virtual element approximation of the Navier–Stokes equation in the velocity–pressure formulation is given by:

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, ({\varvec{u}}_h, p_h) \in {\varvec{V}}_h \times Q_h, \, \text {such that} \\&\nu \, a_h({\varvec{u}}_h, {\varvec{v}}_h) + c_h({\varvec{u}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h) + b({\varvec{v}}_h, p_h) = ({\varvec{f}}_h, {\varvec{v}}_h) \qquad&\text {for all} \, {\varvec{v}}_h \in {\varvec{V}}_h, \\&b({\varvec{u}}_h, q_h) = 0 \qquad&\text {for all} \, q_h \in Q_h, \end{aligned} \right. \end{aligned}$$
(42)

with \(c_h(\cdot ; \, \cdot , \cdot )\) given by (36), (37) or (38). Whenever the choice (38) is adopted, the pressure output in (42) approximates the Bernoulli pressure P in (3) instead of the convective pressure p. Recalling the kernel inclusion (29), Problem (42) can be also formulated in the equivalent kernel form

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, {\varvec{u}}_h \in {\varvec{Z}}_h, \, \text {such that} \\&\nu \, a_h({\varvec{u}}_h, {\varvec{v}}_h) + c_h({\varvec{u}}_h; \, {\varvec{u}}_h, {\varvec{v}}_h) = ({\varvec{f}}_h, {\varvec{v}}_h) \qquad&\text {for all} \, {\varvec{v}}_h \in {\varvec{Z}}_h. \end{aligned} \right. \end{aligned}$$
(43)

The well-posedness of the discrete problems is stated in the following theorem. Note that an analogous result could be stated making use of a discrete Helmholtz–Hodge projector in the spirit of [26], but the result below is more suitable to the current presentation.

Theorem 4.1

Under the assumption

$$\begin{aligned} \mathbf {(A0)_h} \qquad \gamma _h := \frac{{\widehat{C}}_h \, \Vert {\varvec{f}}_h \Vert _{{\varvec{Z}}_h^{*}}}{\alpha _*^2 \, \nu ^2} < 1 \, , \end{aligned}$$
(44)

with the usual definition of dual norm. Problem (42) has a unique solution \(({\varvec{u}}_h, p_h) \in {\varvec{V}}_h \times Q_h\) such that

$$\begin{aligned} \Vert {\varvec{u}}_h\Vert _{{\varvec{V}}} \le \frac{\Vert {\varvec{f}}_h \Vert _{{\varvec{Z}}_h^\star }}{\alpha _* \, \nu } \,. \end{aligned}$$
(45)

Proof

The proof of this result is essentially identical to that of Theorem 3.5 in [10] when \(c_h(\cdot ; \, \cdot , \cdot )\) is given by (37). The proof for the choices of \(c_h(\cdot ; \, \cdot , \cdot )\) given by (36) or (38) can be obtained repeating the same arguments. \(\square \)

In addition, we have the following approximation results (see Theorem 4.6 and Remark 4.2 in [10] for the choices (36) and (37)).

Theorem 4.2

Under the assumptions \(\mathbf {(A0)}\) and \(\mathbf {(A0)_h}\), let \(({\varvec{u}}, p) \in {\varvec{V}}\times Q\) be the solution of Problem (11) and \(({\varvec{u}}_h, p_h) \in {\varvec{V}}_h \times Q_h\) be the solution of Problem (42). Assuming moreover \({\varvec{u}}, {\varvec{f}}\in [H^{s+1}({\varOmega })]^2\) and \(p \in H^s({\varOmega })\), \(0 < s \le k\), then

$$\begin{aligned} \Vert {\varvec{u}}- {\varvec{u}}_h \Vert _{{\varvec{V}}}&\le \, h^{s} \, {\mathcal {F}}({\varvec{u}}; \, \nu , \gamma , \gamma _h) + \, h^{s+2} {\mathcal {H}}(\nu , \gamma _h)\, |{\varvec{f}}|_{s+1} \end{aligned}$$
(46)
$$\begin{aligned} \Vert p - p_h\Vert _Q&\le C \, h^{s} \, |p|_{s} + h^s \, {\mathcal {K}}({\varvec{u}}; \nu , \gamma , \gamma _h) + C \, h^{s+2} \, |{\varvec{f}}|_{s+1} \end{aligned}$$
(47)

for a suitable functions \({\mathcal {F}}\), \({\mathcal {H}}\), \({\mathcal {K}}\) independent of h.

Following the same steps as in [10], Theorem 4.2 easily extends also to the choice (38). In such case we preliminary observe that if the velocity solution \({\varvec{u}}\in [H^{s+1}({\varOmega })]^2\) and the convective pressure \(p \in H^s({\varOmega })\) then the Bernoulli pressure \(P\in H^s({\varOmega })\). In fact, recalling (3) by the Hölder inequality and Sobolev embedding \(H^{s+1}({\varOmega }) \subset W^{s}_4({\varOmega })\), we recover

$$\begin{aligned} \Vert P\Vert _s\le & {} \Vert p\Vert _s + \frac{1}{2} \, \Vert {\varvec{u}}\cdot {\varvec{u}}\Vert _s + \Vert \lambda \Vert _s \le \Vert p\Vert _s + \frac{1}{2} \, \Vert {\varvec{u}}\Vert _{W^s_4}^2 + \Vert \lambda \Vert _s \\\le & {} \Vert p\Vert _s + \frac{1}{2} \, \Vert {\varvec{u}}\Vert ^2_{s+1} + |\lambda | |{\varOmega }|^{1/2}\,. \end{aligned}$$

Now let \(({\varvec{u}}_h,\, P_h)\) be the solution of the virtual problem (42) with the trilinear form (38) and \(({\varvec{u}}, \, P)\) be the solution of the Navier–Stokes equation (2). Then (47) is substituted by

$$\begin{aligned} \Vert P - P_h\Vert _Q \le C \, h^{s} \, |P|_{s} + h^s \, {\mathcal {K}}({\varvec{u}}; \nu , \gamma , \gamma _h) + C \, h^{s+2} \, |{\varvec{f}}|_{s+1} \,. \end{aligned}$$
(48)

In such case the following computable approximation \(p_h\) of the convective pressure p is available:

$$\begin{aligned} {p_h}_{|E} := {P_h}_{|E} + \frac{1}{2} \,{\varPi }_k^{0, E} {\varvec{u}}_h \cdot {\varPi }_k^{0, E} {\varvec{u}}_h - \lambda _h, \end{aligned}$$
(49)

where \(\lambda _h\) is the mean value of the piecewise polynomial function \(\frac{1}{2} \,{\varPi }_k^{0, E} {\varvec{u}}_h \cdot {\varPi }_k^{0, E} {\varvec{u}}_h\). The optimal order of accuracy for the convective pressure can established as follows. Definitions (3) (taking \(\lambda \) as the mean value of \(\frac{1}{2} \, {\varvec{u}}\cdot {\varvec{u}}\)) and (49) easily imply

$$\begin{aligned} \begin{aligned} \Vert p - p_h\Vert _Q&\le \Vert P - P_h\Vert _Q + \biggl \Vert \frac{1}{2} \left( {\varvec{u}}\cdot {\varvec{u}}- \, \sum _{E \in {\varOmega }_h} {\varPi }_k^{0, E} {\varvec{u}}_h \cdot {\varPi }_k^{0, E} {\varvec{u}}_h \right) - (\lambda - \lambda _h) \biggr \Vert _Q \\&\le \Vert P - P_h\Vert _Q + \frac{1}{2} \biggl \Vert {\varvec{u}}\cdot {\varvec{u}}- \, \sum _{E \in {\varOmega }_h} {\varPi }_k^{0, E} {\varvec{u}}_h \cdot {\varPi }_k^{0, E} {\varvec{u}}_h \biggr \Vert _Q \\&= \Vert P - P_h\Vert _Q + \frac{1}{2} \, \Big ( \sum _{E \in {\varOmega }_h} \left\| {\varvec{u}}\cdot {\varvec{u}}- {\varPi }_k^{0, E} {\varvec{u}}_h \cdot {\varPi }_k^{0, E} {\varvec{u}}_h \right\| _{Q, E}^2 \Big )^{1/2} \\&=: \Vert P - P_h\Vert _Q + \frac{1}{2} \, \Big ( \sum _{E \in {\varOmega }_h} \mu _E^2 \Big )^{1/2} \,, \end{aligned} \end{aligned}$$
(50)

where in the second inequality we have used the fact that all terms inside the norms are zero averaged. The first term in the right hand side of (50) is bounded by (48). Whereas for the terms \(\mu ^E\) the triangular inequality and the Hölder inequality entail

$$\begin{aligned} \begin{aligned} \mu _E&\le \Vert {\varvec{u}}\cdot {\varvec{u}}- {\varPi }_k^{0, E} {\varvec{u}}\cdot {\varPi }_k^{0, E} {\varvec{u}}\Vert _E + \Vert {\varPi }_k^{0, E} {\varvec{u}}\cdot {\varPi }_k^{0, E} {\varvec{u}}- {\varPi }_k^{0, E} {\varvec{u}}_h \cdot {\varPi }_k^{0, E} {\varvec{u}}_h\Vert _E \\&= \Vert ({\varvec{u}}- {\varPi }_k^{0, E} {\varvec{u}}) \cdot ({\varvec{u}}+ {\varPi }_k^{0, E} {\varvec{u}})\Vert _E + \Vert {\varPi }_k^{0, E} ({\varvec{u}}-{\varvec{u}}_h) \cdot {\varPi }_k^{0, E} ({\varvec{u}}+{\varvec{u}}_h)\Vert _E \\&\le \Vert {\varvec{u}}- {\varPi }_k^{0, E} {\varvec{u}}\Vert _{L^4(E)} \, \Vert {\varvec{u}}+ {\varPi }_k^{0, E} {\varvec{u}}\Vert _{L^4(E)} \\&\quad + \Vert {\varPi }_k^{0, E} ({\varvec{u}}-{\varvec{u}}_h) \Vert _{L^4(E)} \, \Vert {\varPi }_k^{0, E} ({\varvec{u}}+{\varvec{u}}_h) \Vert _{L^4(E)} \,. \end{aligned} \end{aligned}$$
(51)

Using the Sobolev embedding \(H^{1}({\varOmega }) \subset L^4({\varOmega })\), the continuity of the projection \({\varPi }_k^{0, E}\) with respect to the \(L^4\)-norm and the \(H^1\)-norm (see, for instance, [10]), and polynomial approximation estimates on star shaped polygons (see [15]), from (51) we infer

$$\begin{aligned} \begin{aligned} \mu _E&\le \Vert {\varvec{u}}- {\varPi }_k^{0, E} {\varvec{u}}\Vert _{{\varvec{V}}, E} \, \Vert {\varvec{u}}+ {\varPi }_k^{0, E} {\varvec{u}}\Vert _{{\varvec{V}}, E} + \Vert {\varvec{u}}-{\varvec{u}}_h \Vert _{L^4(E)} \, \Vert {\varvec{u}}+{\varvec{u}}_h\Vert _{L^4(E)} \\&\le C \, h^s \, |{\varvec{u}}|_{s+1, E} \, \Vert {\varvec{u}}\Vert _{{\varvec{V}}, E} + \Vert {\varvec{u}}-{\varvec{u}}_h \Vert _{{\varvec{V}}, E} \, \Vert {\varvec{u}}+{\varvec{u}}_h\Vert _{{\varvec{V}}, E} \\&\le C \, h^s \, |{\varvec{u}}|_{s+1, E} \, \Vert {\varvec{u}}\Vert _{{\varvec{V}}, E} + \Vert {\varvec{u}}-{\varvec{u}}_h \Vert _{{\varvec{V}}, E} \, \left( \Vert {\varvec{u}}\Vert _{{\varvec{V}}, E} +\Vert {\varvec{u}}_h\Vert _{{\varvec{V}}, E} \right) \,. \end{aligned} \end{aligned}$$
(52)

Combining bound (52) with the Hölder inequality for sequences, the velocity error estimate (46) and with the stability estimates (14) and (45), it follows

$$\begin{aligned} \begin{aligned}&\Big ( \sum _{E \in {\varOmega }_h} \mu _E^2 \Big )^{1/2} \\&\quad \le \Big ( \sum _{E \in {\varOmega }_h} C \, h^{2s} \, |{\varvec{u}}|_{s+1, E}^2 \, \Vert {\varvec{u}}\Vert _{{\varvec{V}}, E}^2 + \sum _{E \in {\varOmega }_h} \Vert {\varvec{u}}-{\varvec{u}}_h \Vert _{{\varvec{V}}, E}^2 \, ( \Vert {\varvec{u}}\Vert _{{\varvec{V}}, E}^2 +\Vert {\varvec{u}}_h\Vert _{{\varvec{V}}, E}^2 ) \Big )^{1/2} \\&\quad \le C \, h^s \, |{\varvec{u}}|_{s+1} \, \Vert {\varvec{u}}\Vert _{{\varvec{V}}} + \Vert {\varvec{u}}-{\varvec{u}}_h \Vert _{{\varvec{V}}} \, \left( \Vert {\varvec{u}}\Vert _{{\varvec{V}}} +\Vert {\varvec{u}}_h\Vert _{{\varvec{V}}} \right) \\&\quad \le C \, h^s \, |{\varvec{u}}|_{s+1} \, \frac{\Vert {\mathcal {P}}({\varvec{f}})\Vert _{H^{-1}}}{\nu } +\Vert {\varvec{u}}-{\varvec{u}}_h \Vert _{{\varvec{V}}} \, \left( \frac{\Vert {\mathcal {P}}({\varvec{f}})\Vert _{H^{-1}}}{\nu } + \frac{\Vert {\varvec{f}}_h\Vert _{{\varvec{Z}}_h^*}}{\alpha _* \, \nu } \right) \\&\quad \le h^s \, {\mathcal {L}} ({\varvec{u}}, {\varvec{f}}; \nu , \gamma , \gamma _h) + \, h^{s+2} \, {\mathcal {I}}({\varvec{f}}; \nu , \gamma _h) \end{aligned} \end{aligned}$$
(53)

for a suitable functions \({\mathcal {L}}\) and \({\mathcal {I}}\) independent of h. Finally, inserting estimates (48) and (53) in (50) we obtain the optimal convergence result for the convective pressure also for choice (38).

In the context of the approximation of the Navier–Stokes equation, a numerical method is said to be pressure-robust (see e.g. [29]) if the discrete velocity solution depends only on the Helmholtz–Hodge projector \({\mathcal {P}}({\varvec{f}})\) of the load \({\varvec{f}}\) (as it happens for the exact velocity field). In particular, assume that the load in (11) is a gradient field, i.e. \({\varvec{f}}= \nabla \zeta \), then \({\mathcal {P}}(\nabla \zeta ) = {\varvec{0}}\) and thus the solution of (1) satisfies \({\varvec{u}}=0\). The discrete velocity solution \({\varvec{u}}_h^{\mathrm{PR}}\) computed by means of a pressure-robust method also satisfies \({\varvec{u}}_h^{\mathrm{PR}} = {\varvec{0}}\) , while a generic inf-sup stable scheme does not guarantee such property.

The proposed VEM scheme (42) is divergence free (namely \({\varvec{Z}}_h \subset {\varvec{Z}}\)), which leads to certain benefits when compared to standard inf-sup stable elements, that enforce the div-free condition only in a relaxed sense [10]. On the other hand, method (42) is not pressure-robust. The discrete velocity solution \({\varvec{u}}_h^{\mathrm{VEM}}\) depends (although “weakly”) on the full load and not only on its Helmholtz–Hodge projector. For instance, when the load is a gradient field, from (45) and since \((\nabla \zeta ,\mathbf{z}_h)=0\) for all \(\mathbf{z}_h \in {\varvec{Z}}_h^*\), one can easily derive

$$\begin{aligned} \Vert {\varvec{u}}_h^{\mathrm{VEM}}\Vert _{{\varvec{V}}} \le \frac{\Vert {\varvec{f}}_h \Vert _{{\varvec{Z}}_h^\star }}{\alpha _* \, \nu } = \frac{\Vert {\varvec{f}}_h - {\varvec{f}}\Vert _{{\varvec{Z}}_h^\star }}{\alpha _* \, \nu } \le C \, \frac{h^{s+2}}{\nu } \, |{\varvec{f}}|_{s+1}, \end{aligned}$$

for \(s \le k\), where we assume \({\varvec{f}}\in [H^{s+1}({\varOmega })]^2\) (it is actually sufficient that this holds separately in each mesh element). Notice that in the same situation the velocity solution of classical mixed finite element methods would have the form (again \(s \le k\))

$$\begin{aligned} \Vert {\varvec{u}}_h^{\mathrm{FEM}}\Vert _{{\varvec{V}}} \le C \, \frac{h^{s}}{\nu } \, |{\varvec{f}}|_{s-1} \,. \end{aligned}$$

Hence the proposed method is not pressure-robust, but the dependence on the full load is much weaker with respect to standard mixed schemes. For a deeper analysis of pressure-robust methods we refer to [29] and the references therein.

Remark 4.1

A careful investigation of the proof of Theorem 4.2 (see Lemma 4.3 in [10]) shows that if the exact velocity solution \({\varvec{u}}\in [\mathbb {P}_k({\varOmega })]^2\) and the trilinear form \(c_{\mathrm{conv}, h}(\cdot ; \, \cdot , \cdot )\) or the trilinear form \(c_{\mathrm{rot}, h}(\cdot ; \, \cdot , \cdot )\) are adopted in (42), the corresponding schemes provide a higher order approximation errors, that are respectively

$$\begin{aligned} \Vert {\varvec{u}}- {\varvec{u}}_h \Vert _{{\varvec{V}}}&\le C \, h^{k+2} \, \left\| ({\varvec{\nabla }}{\varvec{u}}) {\varvec{u}}\right\| _{k+1} + C \, h^{k+2} \, \Vert {\varvec{f}}\Vert _{k+1} \,, \\ \Vert {\varvec{u}}- {\varvec{u}}_h \Vert _{{\varvec{V}}}&\le C \, h^{k+2} \, \left\| ({\mathrm{curl}}\, {\varvec{u}}) \times {\varvec{u}}\right\| _{k+1} + C \, h^{k+2} \, \Vert {\varvec{f}}\Vert _{k+1} \,. \end{aligned}$$

These are to be compared with the error of standard inf-sup stable Finite Elements, that in the same situations would be \(O(h^k)\) due to the pressure contribution to the velocity error. On the other hand, in the same situation a (consistent) pressure robust scheme would attain machine precision error, assuming all integrals are computed “exactly”.

Remark 4.2

Another interesting aspect related to method (42) is the so called “reduced” version. Noting that the discrete solution satisfies \(\mathrm{div}\,{\varvec{u}}_h=0\), one can immediately set to zero all \(\mathbf {D_V4}\) degrees of freedom, and correspondingly eliminate also the associated (locally zero average) discrete pressures. The local reduced velocity space becomes

$$\begin{aligned} {\widetilde{{\varvec{V}}}}_h^E := \left\{ {\varvec{v}}\in {{\varvec{V}}}_h^E \quad \text {s.t.} \quad \mathrm{div}\, {\varvec{v}}\in \mathbb {P}_0(E) \right\} , \end{aligned}$$

with the obvious global counterpart \({\widetilde{{\varvec{V}}}}_h\), while the reduced pressure space is given by the piecewise constant functions. The resulting equivalent scheme has much less internal-to-element velocity DoFs and only piecewise constant pressures (we refer to [9, 10] for further details).

5 Virtual Elements Stokes Complex and \({\mathbf{curl}}\) Formulation

In this section, we present the VEM stream function space and the associated Stokes Complex.

5.1 Virtual Element Space of the Stream Functions

The aim of the present section is to introduce a suitable virtual space \({\varPhi }_h\) approximating the continuous space of the stream functions \({\varPhi }\) defined in (17), such that

$$\begin{aligned} {\mathbf{curl}}\, {\varPhi }_h = {\varvec{Z}}_h \,. \end{aligned}$$
(54)

In particular this will allow to exploit the kernel formulation (43) in order to define an equivalent VEM approximation for the Navier–Stokes equation in \({\mathbf{curl}}\) form (cf. (18)). Note that a related approach, but limited to a lowest order case and suitable only for the Stokes problem, was presented in [3].

In order to construct the space of the virtual stream functions \({\varPhi }_h\), we proceed step by step, following the enhanced technique used in Sect. 4.2. On each element \(E \in {\varOmega }_h\) we consider the enlarged local virtual space for \(k\ge 2\):

$$\begin{aligned} \begin{aligned} {\varPsi }_h^E := \biggl \{ \varphi \in H^2(E) \quad \text {s.t.} \quad \varphi _{|\partial E} \in \mathbb {B}_{k+1}(\partial E)\, ,\quad (\nabla \varphi )_{|\partial E} \in [\mathbb {B}_{k}(\partial E)]^2\, , \varDelta ^2 \varphi \in \mathbb {P}_{k-1}(E) \biggr \} \,. \end{aligned}\nonumber \\ \end{aligned}$$
(55)

Then, we define the enhanced space of the stream functions

$$\begin{aligned} {\varPhi }_h^E := \biggl \{ \varphi \in {\varPsi }_h^E \quad \text {s.t.} \, \, \, \left( {\mathbf{curl}}\varphi - {\varPi }^{\nabla ,E}_k ({\mathbf{curl}}\varphi ), \, {\varvec{x}}^{\perp } \, {\widehat{p}}_{k-1} \right) _{E} = 0 \text {for all} \, {\widehat{p}}_{k-1} \in {\widehat{\mathbb {P}}}_{k-1 / k-3}(E) \biggr \}\,.\nonumber \\ \end{aligned}$$
(56)

It is straightforward to see that \(\mathbb {P}_{k+1}(E) \subseteq {\varPhi }_h^E\). We are now ready to introduce a suitable set of degrees of freedom for the local space of virtual stream functions \({\varPhi }_h^E\). Given a function \(\varphi \in {\varPhi }_h^E\), we take the following linear operators \({\mathbf {D}}_{{\varvec{\Phi }}}\), split into five subsets (see Fig. 2)

  • \({\mathbf {D}}_{{\varvec{\Phi }}}1\): the values of \(\varphi \) at the vertices of the polygon E,

  • \({\mathbf {D}}_{{\varvec{\Phi }}}2\): the values of \(\nabla \varphi \) at the vertices of the polygon E,

  • \({\mathbf {D}}_{{\varvec{\Phi }}}3\): the values of \(\varphi \) at \(k-2\) distinct points of every edge \(e \in \partial E\),

  • \({\mathbf {D}}_{{\varvec{\Phi }}}4\): the values of \(\frac{\partial \varphi }{\partial n}\) at \(k-1\) distinct points of every edge \(e \in \partial E\),

  • \({\mathbf {D}}_{{\varvec{\Phi }}}5\): the moments of \({\mathbf{curl}}\, \varphi \)

    $$\begin{aligned} \int _E {\mathbf{curl}}\, \varphi \cdot {\varvec{x}}^{\perp }\, p_{k-3} \, \mathrm{d}E \qquad \text {for all} \, p_{k-3} \in \mathbb {P}_{k-3}(E). \end{aligned}$$
Fig. 2
figure 2

Degrees of freedom for \(k=2\) (left), \(k=3\) (right). We denote \({\mathbf {D}}_{{\varvec{\Phi }}}1\) with blue dots, \({\mathbf {D}}_{{\varvec{\Phi }}}2\) with red circles, \({\mathbf {D}}_{{\varvec{\Phi }}}3\) with blued dots, \({\mathbf {D}}_{{\varvec{\Phi }}}4\) with green lines, \({\mathbf {D}}_{{\varvec{\Phi }}}5\) with yellow stars (Color figure online)

We note that the linear operators \({\mathbf {D}}_{{\varvec{\Phi }}}1\) and \({\mathbf {D}}_{{\varvec{\Phi }}}2\) are always needed to enforce the \(C^1\)-continuity at the vertices. Moreover it is immediate to check that for any stream function \(\varphi \in {\varPhi }_h^E\) (the same holds for \({\varPsi }_h^E\)), the linear operator evaluations of \({\mathbf {D}}_{{\varvec{\Phi }}}1\), \({\mathbf {D}}_{{\varvec{\Phi }}}2\), \({\mathbf {D}}_{{\varvec{\Phi }}}3\), \({\mathbf {D}}_{{\varvec{\Phi }}}4\) uniquely determine \(\varphi \) and its gradient on \(\partial E\). We now prove the following result.

Proposition 5.1

The linear operators \({\mathbf {D}}_{{\varvec{\Phi }}}\) are a unisolvent set of degrees of freedom for the virtual space of stream functions \({\varPhi }_h^E\) and the dimension of \({\varPhi }_h^E\) is

$$\begin{aligned} \dim \left( {\varPhi }_h^E \right) = 2 \, n_E \, k + \frac{(k-1)(k-2)}{2} \end{aligned}$$
(57)

where as usual \(n_E\) denotes the number of vertices of the polygon E.

Proof

We preliminary prove that the linear operators \({\mathbf {D}}_{{\varvec{\Phi }}}\) plus the additional moments of \({\mathbf{curl}}\, \varphi \)

$$\begin{aligned} {\mathbf {D}}_{{\varvec{\Psi }}}5: \qquad \int _E {\mathbf{curl}}\, \varphi \cdot {\varvec{x}}^{\perp } \, {\widehat{p}}_{k-1} \, \mathrm{d}E \qquad \text {for all} \, {\widehat{p}}_{k-1} \in {\widehat{\mathbb {P}}}_{k-1 / k-3}(E) \end{aligned}$$

constitute a set of degrees of freedom for \({\varPsi }_h^E\). An integration by parts and recalling Remark 3.1 imply that the linear operators \({\mathbf {D}}_{{\varvec{\Psi }}}5 + {\mathbf {D}}_{{\varvec{\Phi }}}5\) are equivalent to prescribe the moments \(\int _E \varphi \, q_{k-1} \, \mathrm{d}E\) for all \(q_{k-1} \in \mathbb {P}_{k-1}(E)\). Indeed, Remark 3.1 and simple computations give

$$\begin{aligned} \begin{aligned} \int _E \varphi \, q_{k-1} \, \mathrm{d}E&= \int _E \varphi \, {\mathrm{curl}}( {\varvec{x}}^{\perp }\, p_{k-1}) \, \mathrm{d}E \\&= \int _E \left( {\mathbf{curl}}\, \varphi \right) \cdot {\varvec{x}}^{\perp }\, p_{k-1} \, \mathrm{d}E - \sum _{e \in \partial E} \int _{e} \varphi \, {\varvec{x}}^{\perp }\, p_{k-1} \cdot {\varvec{t}}_e\, \mathrm{d}S \,, \end{aligned} \end{aligned}$$

where the boundary integral is computable using the DoFs values. Now the assertion follows by a direct application of Proposition 4.2 in [16]. In particular, from (20) it holds that

$$\begin{aligned} \dim \left( {\varPsi }_h^E \right) = 2 \, n_E \, k + \frac{k(k+1)}{2} \,. \end{aligned}$$
(58)

The next step is to prove that the linear operators \({\mathbf {D}}_{{\varvec{\Phi }}}\) are unisolvent for \({\varPhi }_h^E\). From (20) it holds

$$\begin{aligned} \dim \left( {\widehat{\mathbb {P}}}_{k-1 / k-3}(E) \right) = \dim \left( \mathbb {P}_{k-1}(E) \right) - \dim \left( \mathbb {P}_{k-3}(E)\right) = 2 \, k - 1 \,. \end{aligned}$$

Hence, neglecting the independence of the additional \((2\,k - 1)\) conditions in (56), the dimension of \({\varPhi }_h^E\) is bounded from below by

$$\begin{aligned} \dim \left( {\varPhi }_h^E \right)\ge & {} \dim \left( {\varPsi }_h^E \right) - (2\,k - 1) = 2 \, n_E \, k + \frac{(k-1)(k-2)}{2} \nonumber \\= & {} \text {number of DoFs} \, {\mathbf {D}}_{{\varvec{\Phi }}}. \end{aligned}$$
(59)

Due to (59), the proof is concluded if we show that a function \(\varphi \in {\varPhi }_h^E\) such that \({\mathbf {D}}_{{\varvec{\Phi }}}(\varphi ) = 0\) is identically zero. In such case, \(\varphi = 0\) and \(\nabla \varphi = {\varvec{0}}\) on the skeleton \(\partial E\) and this entails \({\mathbf{curl}}\, \varphi = {\varvec{0}}\) on \(\partial E\). Moreover we note that in this case the \({\varPi }^{\nabla ,E}_k ({\mathbf{curl}}\, \varphi ) = 0\); as a matter of fact, by definition (22), we get

$$\begin{aligned} \int _E {\varvec{\nabla }}({\mathbf{curl}}\, \varphi ) : {\varvec{\nabla }}{\varvec{p}}_k \, \mathrm{d}E = - \int _E {\mathbf{curl}}\, \varphi \cdot {\varvec{\Delta }}{\varvec{p}}_k \, \mathrm{d}E + \int _{\partial E} {\mathbf{curl}}\, \varphi \cdot {\varvec{\nabla }}{\varvec{p}}_k \, {\varvec{n}}_E \, \mathrm{d}S \,. \end{aligned}$$

The boundary integral is zero being \({\mathbf{curl}}\, \varphi = {\varvec{0}}\) on the skeleton \(\partial E\). For the internal integral, in the light of (19), let us set \({\varvec{\Delta }}{\varvec{p}}_k = \nabla q_{k-1} + {\varvec{x}}^{\perp } \, p_{k-3}\) with \(q_{k-1} \in \mathbb {P}_{k-1}(E) / \mathbb {R}\). Then we infer

$$\begin{aligned} \begin{aligned} \int _E {\varvec{\nabla }}({\mathbf{curl}}\, \varphi ) : {\varvec{\nabla }}{\varvec{p}}_k \, \mathrm{d}E&= - \int _E {\mathbf{curl}}\, \varphi \, \cdot \nabla q_{k-1} \, \mathrm{d}E - \int _E {\mathbf{curl}}\, \varphi \cdot {\varvec{x}}^{\perp } \, p_{k-3} \, \mathrm{d}E \\&= \sum _{e \in \partial E} \int _e \varphi \, \frac{\partial q_{k-1}}{\partial t} \, \mathrm{d}S - \int _E {\mathbf{curl}}\, \varphi \cdot {\varvec{x}}^{\perp } \, p_{k-3} \, \mathrm{d}E = 0 \, , \end{aligned} \end{aligned}$$

where the boundary integral is zero since \(\varphi = 0\) on \(\partial E\), whereas the second term is zero since \({\mathbf {D}}_{{\varvec{\Phi }}}5(\varphi )= 0\). In particular we proved that, since \({\varPi }_k^{\nabla , E}( {\mathbf{curl}}\, \varphi ) =0\), recalling (56) also the moments \({\mathbf {D}}_{{\varvec{\Psi }}}5\) of \(\varphi \) are zero. Since \({\mathbf {D}}_{{\varvec{\Phi }}}(\varphi ) = 0\) by assumption, recalling that \(\varphi \in {\varPhi }_h^E \subset {\varPsi }_h^E\) and that \(\{{\mathbf {D}}_{{\varvec{\Phi }}}, \, {\mathbf {D}}_{{\varvec{\Psi }}}5\}\) are a set of degrees of freedom for \({\varPsi }_h^E\), it follows \(\varphi = 0\). \(\square \)

Remark 5.1

An alternative way to define a unisolvent set of DoFs for the space \({\varPhi }_h^E\) is to provide in the place of \({\mathbf {D}}_{{\varvec{\Phi }}}5\) the following operators (see [16]):

  • \(\widetilde{{\mathbf {D}}_{{\varvec{\Phi }}}5}\) : the moments of \(\varphi \) against the polynomial of degree up to degree \(k-3\)

    $$\begin{aligned} \int _E \varphi \, p_{k-3} \, \mathrm{d}E \qquad \text {for all} \, p_{k-3} \in \mathbb {P}_{k-3}(E), \end{aligned}$$
    (60)

but such choice is less suitable for the exact sequence construction of the present work.

The global virtual space \({\varPhi }_h\) is obtained by combining the local spaces \({\varPhi }_h^E\) accordingly to the local degrees of freedom, taking into account the boundary conditions:

$$\begin{aligned} {\varPhi }_h := \left\{ \varphi \in {\varPhi } \quad \text {s.t.} \quad \varphi _{| E} \in {\varPhi }_h^E \quad \text {for all} \, E\in {\varOmega }_h \right\} \,. \end{aligned}$$
(61)

The dimension is

$$\begin{aligned} \dim \left( {\varPhi }_h \right) = 3 \, n_V + (2 \, k - 3) n_e + n_P \, \frac{(k-1)(k-2)}{2} \,, \end{aligned}$$
(62)

where \(n_P\) (resp., \(n_e\) and \(n_V\)) is the number of elements (resp., internal edges and vertices) in the decomposition \({\varOmega }_h\).

5.2 Virtual Element Stokes Complex

The aim of the present subsection is to provide a virtual element counterpart of the continuous Stokes complex [28]:

(63)

where i denotes the mapping that to every real number r associates the constant function identically equal to r and we recall that a sequence is exact if the image of each operator coincides with the kernel of the following one. The case without boundary conditions is handled analogously.

We start by characterizing the space \({\varPhi }_h^E\) as the space of the stream functions associated to the discrete kernel \({\varvec{Z}}_h^E\).

Proposition 5.2

For any \(E \in {\varOmega }_h\) let \({\varvec{Z}}_h^E\) and \({\varPhi }_h^E\) be the spaces defined in (30) and (56), respectively. Then, it holds that

$$\begin{aligned} {\mathbf{curl}}\, {\varPhi }_h^E = {\varvec{Z}}_h^E \,. \end{aligned}$$

Proof

For any \(\varphi _h \in {\varPhi }_h^E\), we show that the function \({\varvec{v}}_h : = {\mathbf{curl}}\, \varphi _h \in {\varvec{Z}}_h^E\). First of all, it is straightforward to check that

$$\begin{aligned} \mathrm{div}\, {\varvec{v}}_h = \mathrm{div}\left( {\mathbf{curl}}\, \varphi _h \right) = 0 \,. \end{aligned}$$
(64)

Concerning the condition on the skeleton \(\partial E\), we observe that \({\varphi _h}_{| \partial E} \in \mathbb {B}_{k+1}(\partial E)\) and \((\nabla \varphi _h)_{| \partial E} \in [\mathbb {B}_{k}(\partial E)]^2\) easily imply that

$$\begin{aligned} {{\varvec{v}}_h}_{| \partial E} = ({\mathbf{curl}}\,\varphi _h)_{| \partial E} \in [\mathbb {B}_{k}(\partial E)]^2 \,. \end{aligned}$$
(65)

Inside the element, by simple calculations and by definition (56), we infer \( {\mathrm{curl}}\, {\varvec{\Delta }}{\varvec{v}}_h = {\mathrm{curl}}\, {\varvec{\Delta }}({\mathbf{curl}}\, \varphi _h) = \varDelta ^2\varphi _h \in \mathbb {P}_{k-1}(E) \). In the light of Remark 3.1, the previous relation is equivalent to

$$\begin{aligned} {\mathrm{curl}}\, {\varvec{\Delta }}{\varvec{v}}_h \, \in \, {\mathrm{curl}}\left( {\varvec{x}}^{\perp } \, \mathbb {P}_{k-1}(E) \right) \,. \end{aligned}$$

Therefore, there exists \(p_{k-1} \in \mathbb {P}_{k-1}(E)\) such that \({\mathrm{curl}}( {\varvec{\Delta }}{\varvec{v}}_h - {\varvec{x}}^{\perp } \, p_{k-1}) = 0\). Since E is simply connected, there exists s such that \({\varvec{\Delta }}{\varvec{v}}_h - {\varvec{x}}^{\perp } \, p_{k-1} = \nabla s\). Thus we have shown that

$$\begin{aligned} ({\varvec{\Delta }}{\varvec{v}}_h - \nabla \, s) \, \in \, {\varvec{x}}^{\perp } \, \mathbb {P}_{k-1}(E)\,. \end{aligned}$$
(66)

Moreover, by definition (56), for all \({\widehat{p}}_{k-1} \in {\widehat{\mathbb {P}}}_{k-1 / k-3}(E)\) it holds

$$\begin{aligned} \left( {\varvec{v}}_h - {\varPi }^{\nabla ,E}_k \, {\varvec{v}}_h, \, {\varvec{x}}^{\perp } \, {\widehat{p}}_{k-1} \right) _{E} = \left( {\mathbf{curl}}\varphi _h - {\varPi }^{\nabla ,E}_k ({\mathbf{curl}}\varphi _h), \, {\varvec{x}}^{\perp } \, {\widehat{p}}_{k-1} \right) _{E} = 0 \,. \end{aligned}$$
(67)

At this point is clear that (64), (65), (66), (67) and definition (30), imply \({\varvec{v}}_h = {\mathbf{curl}}\, \varphi _h \in {\varvec{Z}}_h^E\) for any scalar potential \(\varphi _h \in {\varPhi }_h^E\), i.e. \({\mathbf{curl}}\, {\varPhi }_h^E \subseteq {\varvec{Z}}_h^E\). The proof now follows by a dimensional argument. In fact, from (57) and (31) easily follows that

$$\begin{aligned} \dim \left( {\mathbf{curl}}({\varPhi }_h^E) \right) = \dim \left( {\varPhi }_h^E \right) - 1 = 2 \, n_E \, k + \frac{(k-2)(k-1)}{2} - 1 = \dim \left( {\varvec{Z}}_h^E \right) \,. \end{aligned}$$

Therefore we can conclude that \({\mathbf{curl}}\, {\varPhi }_h^E = {\varvec{Z}}_h^E\) for all \(E \in {\varOmega }_h\). \(\square \)

Remark 5.2

Given any \(\varphi _h \in {\varPhi }_h^E\), from the degrees of freedom values \({\mathbf {D}}_{{\varvec{\Phi }}}\) of \(\varphi _h\), we are able to compute the DoFs values \(\mathbf {D_V}\) of \({\mathbf{curl}}\, \varphi _h\). In particular it holds that

$$\begin{aligned} \mathbf {D_V3}({\mathbf{curl}}\, \varphi _h) = {\mathbf {D}}_{{\varvec{\Phi }}}5(\varphi _h) \qquad \text {and} \qquad \mathbf {D_V4}({\mathbf{curl}}\, \varphi _h) = 0 \,. \end{aligned}$$

Therefore, for any \(\varphi _h \in {\varPhi }_h^E\), the DoFs \({\mathbf {D}}_{{\varvec{\Phi }}}\) allow to compute the polynomial projections \({{\varPi }^{\nabla , E}_k}({\mathbf{curl}}\, \varphi _h)\), \({{\varPi }^{0, E}_k} ({\mathbf{curl}}\, \varphi _h)\) and \({{\varvec{\Pi }}^{0, E}_{k-1}}\nabla ({\mathbf{curl}}\, \varphi _h)\).

Proposition 5.3

For any \(E \in {\varOmega }_h\) let \({\varvec{V}}_h^E\) be the space defined in (23). Then, it holds that

$$\begin{aligned} \mathrm{div} \, {\varvec{V}}_h^E = \mathbb {P}_{k-1}(E) \,. \end{aligned}$$

Proof

We show briefly the simple proof. Let \(p_{k-1} \in \mathbb {P}_{k-1}(E)\), then we need to show that there exists \({\varvec{v}}_h \in {\varvec{V}}_h^E\) such that \(\mathrm{div} \, {\varvec{v}}_h = p_{k-1}\). We construct \({\varvec{v}}_h\) by defining its degrees of freedom \(\mathbf {D_V}({\varvec{v}}_h)\). Let us set \(\mathbf {D_V3}({\varvec{v}}_h) = {\varvec{0}}\), and

$$\begin{aligned} \mathbf {D_V4}({\varvec{v}}_h) = \int _E p_{k-1} \, q_{k-1} \, \mathrm{d}E \qquad \text {for all} \, q_{k-1} \in \mathbb {P}_{k-1}(E) /\mathbb {R}. \end{aligned}$$
(68)

For the boundary DoFs, we chose \(\mathbf {D_V1}({\varvec{v}}_h)\) and \(\mathbf {D_V2}({\varvec{v}}_h)\) such that

$$\begin{aligned} \int _{\partial E} {\varvec{v}}_h \cdot {\varvec{n}} \, \mathrm{d}S = \int _E p_{k-1} \, \mathrm{d}E \,. \end{aligned}$$
(69)

Note that for doing this we essentially require to fix the value of the normal component of \({\varvec{v}}_h\) on each edge of E (that is available being \(k \ge 2\)). Recalling that \(\mathrm{div} \, {\varvec{v}}_h \in \mathbb {P}_{k-1}(E)\) by (23), equations (68) and (69) imply \(\mathrm{div} \, {\varvec{v}}_h = p_{k-1}\). \(\square \)

As a consequence of Propositions 5.2 and 5.3 we have the following Stokes exact sequence for our discrete VEM spaces and its reduced version (see also Figs. 3 and 4).

Theorem 5.1

Let \({\varPhi }_h^E\) and \({\varvec{V}}_h^E\) be the spaces defined in (56) and (23), respectively, and let \({\widetilde{{\varvec{V}}}}_h^E\) denote the reduced velocity space, see Remark 4.2. Then, the following sequences are exact

(70)
(71)
Fig. 3
figure 3

\(H^2\)-conforming stream virtual element \({\varPhi }_h^E\) (left), \(H^1\)-conforming virtual velocity space \({\varvec{V}}_h^E\) (middle), and pressure space \(\mathbb {P}_{k-1}(E)\) (right) satisfying the exact complex (70)

Fig. 4
figure 4

Reduced version of the Virtual Element Stokes complex (see Remark 4.2)

Remark 5.3

In terms of degrees of freedom, our lowest order element (when restricted to triangles!) can be compared with the Zienkiewicz element [20, 28], all other FEM elements in the literature being either higher order or needing a sub-element partition and more DoFs. The reduced version of our VEM element for \(k=2\) (see Remark 4.2 and Fig. 4) has piecewise constant pressures and no internal degrees of freedom for velocities, and thus in terms of degrees of freedom exactly corresponds to the above finite element (the difference is that we use the VE approach instead of introducing rational basis functions). But note that the element here presented yields \(O(h^2)\) convergence rate for velocities and also for the local pressure average (full \(O(h^2)\) pressure convergence can be recovered by a local post-processing), instead of linear convergence as [28]. In addition, we avoid integration of rational functions. Clearly, this comes at the price of having a virtual formulation and thus the absence of an explicit expression of the shape functions.

The following results are the global counterpart of Proposition 5.2 and Theorem 5.1.

Proposition 5.4

Let \({\varvec{Z}}_h\) and \({\varPhi }_h\) be the spaces defined in (28) and (61), respectively. Then, it holds that

$$\begin{aligned} {\mathbf{curl}}\, {\varPhi }_h = {\varvec{Z}}_h \,. \end{aligned}$$

Proof

We note that Proposition 5.2 endowed with the boundary condition in the definitions (28) and (61) imply \({\mathbf{curl}}\, {\varPhi }_h \subseteq {\varvec{Z}}_h\). The proof as before follows by a dimensional argument. From (31) we infer that

$$\begin{aligned} \dim \left( {\varvec{Z}}_h\right) = 2 \, n_V + 2(k - 1) n_e + n_P \left( \frac{(k-1)(k-2)}{2} -1 \right) \,, \end{aligned}$$

where we recall \(n_P\) (resp., \(n_e\) and \(n_V\)) is the number of elements (resp., internal edges and vertices) in the decomposition \({\varOmega }_h\). Therefore from (62) we obtain

$$\begin{aligned} \dim \left( {\mathbf{curl}}({\varPhi }_h)\right) - \dim \left( {\varvec{Z}}_h\right) = \dim \left( {\varPhi }_h\right) - \dim \left( {\varvec{Z}}_h\right) -1 = n_V - n_e + n_P - 1 = 0 \end{aligned}$$

for the Euler formula. \(\square \)

Theorem 5.2

Let \({\varPhi }_h^E\), \({\varvec{V}}_h\) and \(Q_h\) be the spaces defined in (61), (25) and (26), respectively, and let \({\widetilde{{\varvec{V}}}}_h\) and \({\widetilde{Q}}_h\) denote the reduced velocity space and the piecewise constant pressures, respectively, see Remark 4.2. Then, the following sequences are exact

(72)
(73)

The case without boundary conditions follows analogously.

5.3 The Discrete Problem

In the light of Proposition 5.2, referring to (43) and (61) we can set the virtual element approximation of the Navier–Stokes equation in the \({\mathbf{curl}}\) formulation:

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, \psi _h \in {\varPhi }_h, \, \text {such that} \\&\nu \, a_h({\mathbf{curl}}\, \psi _h, \, {\mathbf{curl}}\, \varphi _h) + c_h({\mathbf{curl}}\, \psi _h; \, {\mathbf{curl}}\, \psi _h, \, {\mathbf{curl}}\, \varphi _h) = ({\varvec{f}}_h, \, {\mathbf{curl}}\, \varphi _h) \, \\&\quad \text {for all} \, \varphi _h \in {\varPhi }_h. \end{aligned} \right. \end{aligned}$$
(74)

Due to Proposition 5.4, Problem (74) is equivalent to (43). We remark that all forms in (74) are exactly computable by the DoFs \({\mathbf {D}}_{{\varvec{\Phi }}}\). In fact, recalling Remark 5.2, the polynomials \({{\varPi }^{\nabla , E}_k}({\mathbf{curl}}\, \varphi _h)\), \({{\varPi }^{0, E}_k} ({\mathbf{curl}}\, \varphi _h)\) and \({{\varvec{\Pi }}^{0, E}_{k-1}}\nabla ({\mathbf{curl}}\, \varphi _h)\) are computable on the basis of \({\mathbf {D}}_{{\varvec{\Phi }}}\), so that, referring to (35), (39) and (41), we infer that

$$\begin{aligned} a_h({\mathbf{curl}}\, \cdot , \, {\mathbf{curl}}\, \cdot ) \,, \qquad c_h({\mathbf{curl}}\, \cdot ; \, {\mathbf{curl}}\, \cdot , \, {\mathbf{curl}}\, \cdot ) \,, \qquad ({\varvec{f}}_h, \, {\mathbf{curl}}\, \cdot ) \end{aligned}$$

are exactly computable from DoFs \({\mathbf {D}}_{{\varvec{\Phi }}}\), see also Remark 6.1. The well-posedness of Problem (74) under the assumption \(\mathbf {(A0)_h}\) immediately follows from Theorem 5.2. In fact the \({\mathbf{curl}}\) operator on the global space \({\varPhi }_h\) is an isomorphism into \({\varvec{Z}}_h\). Owing to this isomorphism, the existence and uniqueness result of Theorem 4.1 carry over to Problem (74), yielding the following theorem.

Theorem 5.3

Under the assumption \(\mathbf {(A0)_h}\) Problem (74) has a unique solution \(\psi _h \in {\varPhi }_h\) such that

$$\begin{aligned} \Vert \psi _h\Vert _{{\varPhi }} \le \frac{\Vert {\varvec{f}}_h \Vert _{Z_h^*}}{\alpha _* \, \nu } \,. \end{aligned}$$
(75)

The convergence of the discrete solution \({\mathbf{curl}}\, \psi _h\) of (74) to the continuous solution \({\mathbf{curl}}\, \varphi \) of (18) follows immediately from Theorem 4.2, taking \({\varvec{u}}= {\mathbf{curl}}\, \varphi \) and \({\varvec{u}}_h = {\mathbf{curl}}\, \varphi _h\).

Clearly Problem (74) does not provide any information on the pressure p. Nevertheless, the Stokes complex associated to the proposed scheme turns out to be very helpful if we are interested in computing suitable approximation \(p_h\) of p. Indeed referring to (25) and (42), starting from the solution \(\psi _h\) of Problem (74), we infer the following problem

$$\begin{aligned} \left\{ \begin{aligned}&\text {find} \, p_h \in Q_h, \text {such that} \\&b({\varvec{v}}_h, \, p_h) = - \nu \, a_h({\mathbf{curl}}\, \psi _h, \, {\varvec{v}}_h) - c_h({\mathbf{curl}}\, \psi _h; \, {\mathbf{curl}}\, \psi _h, \, {\varvec{v}}_h) + ({\varvec{f}}_h, \, {\varvec{v}}_h) \\&\quad \text {for all} \, {\varvec{v}}_h \in {\varvec{V}}_h. \end{aligned} \right. \end{aligned}$$
(76)

Since \(\dim ({\varvec{V}}_h) > \dim (Q_h)\), the previous system, is actually an overdetermined system, i.e. there are more equations than unknowns. Nevertheless the well-posedness of Problem (76) is guaranteed by Theorem 4.1. We refer to Sect. 6 for a deeper analysis and computational aspects of (76).

We stress that the \({\mathbf{curl}}\) virtual formulation (74) exhibits important differences from the computational point of view compared with the velocity–pressure formulation (42). First of all the linear system associated to Problem (74) has \(2(n_P - 1)\) less DoFs than Problem (42), even if considering its equivalent reduced form (see Remark 4.2). Moreover the first iteration of the Newton method applied to the the non-linear virtual stream formulation (74) results in a linear system which is symmetric and positive definite, whereas applied to the virtual element method (42) in velocity–pressure formulation leads to an indefinite linear system. These advantages come at the price of a higher condition number of the involved linear systems.

Remark 5.4

Simple integration by parts gives \( ({\varvec{f}}, \, {\mathbf{curl}}\, \varphi ) = ({\mathrm{curl}}\, {\varvec{f}}, \, \varphi ) \) for any \(\varphi \in {\varPhi }\). By Remark 5.1, the DoFs \({\mathbf {D}}_{{\varvec{\Phi }}}\) allow us to compute the \(L^2\)-projection \({\varPi }^{0,E}_{k-1} :{\varPhi }_h^E \rightarrow \mathbb {P}_{k-1}(E)\), so that we can consider a new computable right hand-side

$$\begin{aligned} \left( ({\mathrm{curl}}\, {\varvec{f}})_h, \varphi _h \right) := \sum _{E \in {\varOmega }_h} \int _E {\varPi }_{k-1}^{0, E} ({\mathrm{curl}}\, {\varvec{f}}) \, \varphi _h \, \mathrm{d}E = \sum _{E \in {\varOmega }_h} \int _E ({\mathrm{curl}}\, {\varvec{f}}) \, {\varPi }_{k-1}^{0,E} \varphi _h \, \mathrm{d}E \,. \end{aligned}$$
(77)

This new formulation of the right-hand side gets the same order of accuracy of the original one.

In particular if the external force is irrotational, i.e. \({\varvec{f}}= \nabla \zeta \), we improve the error estimate in (46) by removing the dependence of the error by the load. More generally, with the choice (77), the error depends only on the Helmholtz–Hodge decomposition of the load being \({\mathrm{curl}}\, {\varvec{f}}= {\mathrm{curl}}\, {\mathcal {P}}({\varvec{f}})\). Clearly (77) can be applied only when \({\varvec{f}}\) is given as an explicit function.

6 Numerical Tests

In this section we present two sets of numerical experiments to test the practical performance of the proposed virtual element methods (74), also compared with a direct \(C^1\) VEM discretization of the stream formulation (78) described in the Appendix, see equation (87). For the scheme (74), in all tests we investigate the three possible options for the trilinear form in (36), (37), (38). In Test 6.1 we study the convergence of the proposed virtual element schemes (74) and (87) for the discretization of the Navier–Stokes equation in \({\mathbf{curl}}\) formulation and stream formulation respectively. A comparison of (74) (in terms of errors, number of DoFs, condition number of the resulting linear systems) with the equivalent virtual element scheme (42) for the Navier–Stokes equation in velocity–pressure formulation is also performed. In Test 6.2 we consider a benchmark problem for the Navier–Stokes equation (78) with the property of having the velocity and stream solution in the corresponding discrete spaces. It is well known that classical mixed finite element methods lead to significant velocity errors, stemming from the velocity/pressure coupling in the error estimates. This effect is greatly reduced by the presented methods (cf. Theorem 4.2, estimate (46) and Remark 4.1). In order to compute the VEM errors, we consider the computable error quantities:

$$\begin{aligned} {\texttt {error}}({\varvec{u}}, H^1) := \left( \sum _{E \in {\varOmega }_h} \left\| {\varvec{\nabla }} \, {\varvec{u}}- {\varvec{\Pi }}_{k-1}^{0, E} ({\varvec{\nabla }} \, {\varvec{u}}_h) \right\| _{0,E}^2 \right) ^{1/2} \end{aligned}$$

for the velocity–pressure formulation (42) and

$$\begin{aligned} {\texttt {error}}(\psi , H^2) := \left( \sum _{E \in {\varOmega }_h} \left\| {\varvec{\nabla }} \, {\mathbf{curl}}\psi - {\varvec{\Pi }}_{k-1}^{0, E} ({\varvec{\nabla }} \, {\mathbf{curl}}\psi _h) \right\| _{0,E}^2 \right) ^{1/2} \end{aligned}$$

for the \({\mathbf{curl}}\) and stream formulations (see (74) and (87), respectively). For what concerns the pressures we simply compute the standard \(L^2\) error \( {\texttt {error}}(p, L^2) := \Vert p - p_h\Vert _0 \). For the computation of the discrete pressure for the virtual element scheme (74) we follow (76) and solve the overdetermined system by means of the least squares method. We briefly sketch the construction of the least square formula. Let \(\{{\varvec{v}}_j\}_{j=1}^{\mathrm{dim}({\varvec{V}}_h)}\) be the canonical basis functions of \({\varvec{V}}_h\) and let us denote with \(\overline{\mathbf {r}}_h\) the vector with component

$$\begin{aligned}&\overline{\mathbf {r}}_{h, j} := - \nu \, a_h({\mathbf{curl}}\, \psi _h, \, {\varvec{v}}_j) - c_h({\mathbf{curl}}\, \psi _h; \, {\mathbf{curl}}\, \psi _h, \, {\varvec{v}}_j) + ({\varvec{f}}_h, \, {\varvec{v}}_j) \\&\qquad \text {for} \, j=1, \dots , \mathrm{dim}({\varvec{V}}_h), \end{aligned}$$

i.e. \(\overline{\mathbf {r}}_h\) contains the values of the degrees of freedom associated to the right hand side of (76) with respect to the basis \(\{{\varvec{v}}_j\}_{j=1}^{\mathrm{dim}({\varvec{V}}_h)}\). Similarly, let \(\{q_i\}_{i=1}^{\mathrm{dim}(Q_h)}\) be the canonical basis functions of \(Q_h\) and for any piecewise polynomial \(p_{k-1} \in Q_h\) we denote with \(\overline{\mathbf {p}}_h\) the vector containing the values of the coefficients with respect to the basis \(\{q_i\}\) associated to \(p_{k-1}\). Then the least squares formula associated to (76) is

$$\begin{aligned} B \,B^T \, \overline{\mathbf {p}}_h = B \, \overline{\mathbf {r}}_h \end{aligned}$$

where the matrix \(B \in \mathbb {R}^{\mathrm{dim}(Q_h) \times \mathrm{dim}({\varvec{V}}_h)}\) is defined by

$$\begin{aligned} B_{i,j} = b({\varvec{v}}_j, \, q_i) \qquad \text {for} \, i=1, \dots , \mathrm{dim}(Q_h) \, \text {and} \, j=1, \dots , \mathrm{dim}({\varvec{V}}_h). \end{aligned}$$

Remark 6.1

We note that, if a code for formulation (42) is available, all is needed in order to implement (74) is the construction of the rectangular matrixes that represent, in terms of the degrees of freedom, the local operator \({\mathbf{curl}}: {\varPhi }_h^E \rightarrow {\varvec{V}}_h^E\). Once this matrixes are built, one just needs to combine them with the local stiffness matrixes of scheme (74) and finally assemble the global systems for the space \({\varPhi }_h\).

The polynomial degree of accuracy for the numerical tests is \(k=2\). In the experiments we consider the computational domains \({\varOmega }_{\mathrm{Q}} := [0,1]^2\) and \({\varOmega }_{\mathrm{D}} := \{{\varvec{x}} \in \mathbb {R}^2 \, \text {s.t.} \, |{\varvec{x}}| \le 1 \}\). The square domain \({\varOmega }_{\mathrm{Q}}\) is partitioned using the following sequences of polygonal meshes:

  • \(\{ {\mathcal {V}}_h\}_h\): sequence of CVT (Centroidal Voronoi tessellation) with \(h=1/8, 1/16, 1/32, 1/64\),

  • \(\{ {\mathcal {Q}}_{h} \}_h\): sequence of distorted quadrilateral meshes with \(h=1/10, 1/20, 1/40, 1/80\).

An example of the adopted meshes is shown in Fig. 5. For the generation of the Voronoi meshes we use the code Polymesher [37]. The distorted quadrilateral meshes are obtained starting from the uniform square meshes and displacing the internal vertexes with a proportional “distortion amplitude” of 0.3.

Fig. 5
figure 5

Example of polygonal meshes: \({\mathcal {V}}_{1/16}\), \({\mathcal {Q}}_{1/20}\)

For what concerns the disk \({\varOmega }_{\mathrm{D}}\) we consider the sequences of polygonal meshes:

  • \(\{ {\mathcal {T}}_h\}_h\): sequence of triangular meshes with \(h=1/5, 1/10, 1/20, 1/40\),

  • \(\{ {\mathcal {W}}_h\}_h\): sequence of mapped CVT with \(h= 1/4, 1/8, 1/16, 1/20\).

The meshes \({\mathcal {W}}_h\) are obtained by mapping a CVT on the square \([-1, 1]^2\) on the disk \({\varOmega }_{\mathrm{D}}\) through the map

$$\begin{aligned} {\varSigma }:[-1, 1]^2 \rightarrow {\varOmega }_{\mathrm{D}} \, \qquad \text {with} \qquad {\varSigma }:(x, y) \mapsto \left( x \sqrt{1 - \frac{y^2}{2}}, \, y \sqrt{1 - \frac{x^2}{2}}\right) \,. \end{aligned}$$

Figure 6 displays an example of the adopted meshes.

Fig. 6
figure 6

Example of polygonal meshes: \({\mathcal {T}}_{1/10}\), \({\mathcal {W}}_{1/8}\)

Fig. 7
figure 7

Test 6.1. Errors computed with the VEM (74) and (87), meshes \({\mathcal {V}}_h\)

Fig. 8
figure 8

Test 6.1. Errors computed with the VEM (74) and (87), meshes \({\mathcal {Q}}_h\)

Test 6.1

In this test we solve the Navier–Stokes equation on the square domain \({\varOmega }_{\mathrm{Q}}\) with viscosity \(\nu = 1\) and with the load term \({\varvec{f}}\) chosen such that the analytical velocity–pressure solution and the corresponding stream function solution are respectively

We test the virtual element scheme (74). In Figs. 7 and 8 we show the results obtained with the sequences of Voronoi meshes \({\mathcal {V}}_h\) and quadrilateral meshes \({\mathcal {Q}}_h\), by considering the three possible choices of the trilinear forms. We stress that in all cases considered we compare the discrete convective pressure \(p_h\) (for the trilinear form in \(c_{\mathrm{rot}, h}(\cdot ; \cdot , \cdot )\) we consider the definition (49)). We notice that the theoretical predictions of Sect. 5 are confirmed. Moreover, we observe that the virtual element methods obtained with the three different trilinear forms exhibit almost identical results, at least for this example and with the adopted meshes. In Figs. 7 (left) and 8 (left) we also depict the error for the direct \(C^1\) discretization of the stream formulation (87), that follows a similar behaviour to (74). Note that we do not compute a pressure error for scheme (87) since the computation of a discrete pressure is a more complex issue in this case, see Remark 7.1. Finally we test the corresponding virtual element method (42) with the same sequences of polygonal meshes \({\mathcal {V}}_h\), \({\mathcal {Q}}_h\). Table 1 shows the results obtained respectively with VEM (42) and (74) obtained considering the trilinear form \(c_{\mathrm{rot}, h}(\cdot ; \cdot , \cdot )\). The outcomes confirm the theoretical predictions of Sect. 5: the two schemes produces for this example identical solution errors up to the first ten digits. The results are analogous also for the other two proposed trilinear forms (not shown). In Table 2 we compare the number of DoFs and the condition number of the resulting linear systems (stemming from the fist iteration of the Newton method) for both formulations (42) and (74). As observed in Sect. 5, the scheme (74) has the advantage of having \((2\, n_P - 2)\) less of unknowns, even when considering the reduced version (see Remark 4.2) for formulation (42). The drawback is that the condition number of the system resulting from the velocity–pressure scheme (42) behaves as \(h^{-2}\), while the asymptotic rate of the condition number of the linear system resulting from the scheme (74) formulation is \(h^{-4}\).

Table 1 Test 6.1. Errors computed with virtual elements schemes (42) and (74) for the meshes \({\mathcal {V}}_h\) and \({\mathcal {Q}}_h\)
Table 2 Test 6.1. Number of DoFs and condition numbers for the virtual elements schemes (42) and (74) for the meshes \({\mathcal {V}}_h\) and \({\mathcal {Q}}_h\)
Fig. 9
figure 9

Test 6.2. Errors computed with the VEM (74) and (87), meshes \({\mathcal {T}}_h\)

Fig. 10
figure 10

Test 6.2. Errors computed with the VEM (74) and (87), meshes \({\mathcal {W}}_h\)

Test 6.2

In this test, inspired by [31], we consider a problem for the Navier–Stokes with the property of having the velocity and stream solution in the corresponding discrete spaces. In particular we consider the Navier–Stokes (78) on the disk \({\varOmega }_{\mathrm{D}}\) with viscosity \(\nu = 1\) and with the load \({\varvec{f}}\) chosen such that the analytical velocity–pressure solution and the corresponding stream function solution are respectively

$$\begin{aligned} {\varvec{u}}(x,y)&= \begin{pmatrix} x^2 + y^2 \\ -2 \, x y \end{pmatrix} \qquad p(x,y) = x^3 y^3 - \frac{1}{16} \,, \\&\qquad \psi (x, y) = x^2 y + \frac{1}{3} y^3 \,. \end{aligned}$$

We notice that the stream function solution \(\psi \) belongs to the discrete spaces \({\varPhi }_h\) and \({\widetilde{{\varPhi }}}_h\) (cf. (56) and (81) respectively) and the corresponding velocity \({\varvec{u}}= {\mathbf{curl}}\, \psi \) belongs to \([\mathbb {P}_k({\varOmega })]^2 \subset {\varvec{V}}_h\). In the light of Remark 4.1, the methods (74) obtained considering the trilinear forms \(c_{\mathrm{conv}, h}(\cdot ; \cdot , \cdot )\) or \(c_{\mathrm{rot}, h}(\cdot ; \cdot , \cdot )\) provide a higher order approximation error, that is \(h^{k+2}\) (instead of \(h^k\) as a standard inf-sup stable FEM would do). Note that instead an exactly divergence-free FEM would acquire machine precision velocity error on this test, but this comes at the price of the additional complications of these methods. Figures 9 and 10 plot the results obtained with the sequence of triangular meshes \({\mathcal {T}}_h\) and mapped Voronoi meshes \({\mathcal {W}}_h\) considering the scheme (74) (with all possible choices of the trilinear forms) and the scheme (87). The error for the \(C^1\) discretization of the stream formulation (87) provides the same higher order of convergence \(h^{k+2}\). The error for scheme (87) in the case of the finest Voronoi mesh is not depicted since the Newton iterations did not converge in that case, probably an indication on the reduced robustness of such scheme when compared to (74).