Keywords

These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

1 Introduction

Let \(\varOmega \) be an open bounded connected subset of \(\mathbb {R}^d\), with \(d\in \lbrace 2,3\rbrace \), which is supposed to be polygonal if \(d=2\) and polyhedral if \(d=3\). Let \(T\in \mathbb {R}^+\). We address in this paper the system of incompressible Navier-Stokes equations:

$$\begin{aligned}&\partial _t \mathbf{u}+\mathbf div (\mathbf{u}\otimes \mathbf{u})-\mu {\varvec{\Delta }}\mathbf{u}+{\varvec{\nabla }}p=0,&\qquad \text {on}~\varOmega \times (0,T),\end{aligned}$$
(1a)
$$\begin{aligned}&\mathrm{div}\mathbf{u}= 0,&\qquad \text {on}~\varOmega \times (0,T),\end{aligned}$$
(1b)
$$\begin{aligned}&\mathbf{u}|_{\partial \varOmega }=\mathbf{u}_{\partial \varOmega }, \qquad \mathbf{u}|_{t=0}=\mathbf{u}_0. \end{aligned}$$
(1c)

The variables \(\mathbf{u}\in \mathbb {R}^d\) and \(p\in \mathbb {R}\) are the velocity and the pressure in the flow, and \(\mu \) is a positive constant viscosity. The initial condition \(\mathbf{u}_0\) is supposed to be divergence-free, and the integral of \(\mathbf{u}_{\partial \varOmega } \cdot \mathbf{n}_{\partial \varOmega }\) over \(\partial \varOmega \) vanishes, where \(\mathbf{n}_{\partial \varOmega }\) stands for the normal vector to \(\partial \varOmega \) outward \(\varOmega \).

We develop in this paper a projection scheme to approximate the solution of (1), based on a staggered space discretization and able to cope with non-conforming mesh refinement. During the last years, a research program has been undertaken to develop staggered schemes satisfying a discrete kinetic energy balance [1, 5]. This point is crucial with respect to many issues: it readily provides stability estimates, a property which is a prerequisite for LES applications, and, last but not least, it is a starting point for the extension of the schemes to compressible flows (shallow water, compressible Navier-Stokes and Euler equations). The difficulty lies in the definition of the velocity convection operator, which must be in some sense consistent with the discrete mass balance; the definition of this operator is thus intricate and, to our knowledge, novel, at least for density variable flows. The objective of the present paper is to show how to extend this definition to non-conforming meshes. We first define admissible meshes (Sect. 2), then describe the scheme (Sect. 3) and finally present some numerical experiments to assess its behavior (Sect. 4).

2 Definition of the Meshes

Let \({\fancyscript{M}}\) be a decomposition of the domain \(\varOmega \) either in convex quadrilaterals (\(d=2\)) or hexahedra (\(d=3\)). The mesh \({\fancyscript{M}}\) is supposed to be obtained from a usual finite element regular discretization (e.g. [4]) by recursively splitting some cells in \(2^d\) sub-cells obtained by joining every two opposite face centers (Fig. 1). We allow at most one hanging node at the mass center of a cell face, which means that the maximum level of refinement between two adjacent cells is one.

Fig. 1
figure 1

An exemple of admissible mesh refinement

We denote by \({\fancyscript{E}}(K)\) the set of the faces of an element \(K \in {\fancyscript{M}}\). We exclude the presence of a node in the interior of a face, i.e. we split an initial face in \(2^{d-1}\) faces if one of the cells adjacent to the face is split. The number of faces, \(N_K^{\fancyscript{E}}\), of a cell \(K\) thus ranges between \(2d\) and \(2^dd\). Let \({\fancyscript{E}}=\cup _{K\in {\fancyscript{M}}}{\fancyscript{E}}(K)\), \({\fancyscript{E}}_{\mathrm{ext}}=\lbrace \sigma \in {\fancyscript{E}}, \sigma \subset \partial \varOmega \rbrace \) and \({\fancyscript{E}}_{\mathrm{int}}={\fancyscript{E}}\setminus {\fancyscript{E}}_{\mathrm{ext}}\). A face \(\sigma \in {\fancyscript{E}}_{\mathrm{int}}\) separating the cells \(K\) and \(L\) is denoted by \(K|L\). For \(\sigma \in {\fancyscript{E}}(K)\), \(\mathbf{n}_{K,\sigma }\) is the unit normal vector to \(\sigma \) outward \(K\). Hereafter, \(|\cdot |\) stands for the \(d\)- or \((d-1)\)-dimensional measure of a subset of \(\mathbb {R}^d\) or \(\mathbb {R}^{d-1}\) respectively.

We define a dual mesh associated with the faces \({\fancyscript{E}}\) as follows. When \(K\in {\fancyscript{M}}\) is a rectangle or a cuboid, for \(\sigma \in {\fancyscript{E}}(K)\), we define the half-diamond cell \(D_{K,\sigma }\) as the cone with basis \(\sigma \) and with vertex the mass center of \(K\) (see Fig. 2). We thus obtain a partition of \(K\) in \(N_K^{\fancyscript{E}}\) sub-volumes, each sub-volume having a measure \(|D_{K,\sigma }|\) equal to \(|K|/(2d)\), when \(\sigma \) has not been split, or \(|K|/(2^dd)\) otherwise. We extend this definition to general quadrangles and hexahedra, by supposing that we have built a partition with the same connectivities and the same ratio between the volumes of the half-diamonds and of the cell. For \(\sigma \in {\fancyscript{E}}_{\mathrm{int}}\), \(\sigma =K|L\), we now define the dual (or diamond) cell \(D_\sigma \) associated with \(\sigma \) by \(D_\sigma =D_{K,\sigma } \cup D_{L,\sigma }\). For \(\sigma \in {\fancyscript{E}}(K)\cap {\fancyscript{E}}_{\mathrm{ext}}\), we define \(D_\sigma =D_{K,\sigma }\). We denote by \(\tilde{{\fancyscript{E}}}(D_\sigma )\) the set of faces of \(D_\sigma \), and by \(\varepsilon =D_\sigma |D_{\sigma '}\) the face separating two dual cells \(D_\sigma \) and \(D_{\sigma '}\) (see Fig. 2).

Fig. 2
figure 2

Notations for control volumes and diamond cells

3 The Pressure Correction Scheme

3.1 General Form of the Scheme

The space discretization is staggered in the sense that the pressure and the velocity are piecewise constant functions respectively on the primal and dual mesh. The initial discrete velocity is defined on a dual cell \(D_\sigma ,~\sigma \in {\fancyscript{E}}_{\mathrm{int}}\), by the mean value \(\mathbf{u}_\sigma ^0\) of the function \(\mathbf{u}_0\) over the face \(\sigma \). The Dirichlet boundary condition is taken into account by setting \(\mathbf{u}_\sigma ^n\) to the mean value of \(\mathbf{u}_{\partial \varOmega }\) over \(\sigma \), for all \(\sigma \in {\fancyscript{E}}_{\mathrm{ext}}\) and all \(n\ge 0\). We consider a constant time step \(\delta t\). As usual [3, 6, 9], the projection scheme is a two-step algorithm:

$$\begin{aligned} \nonumber&Prediction~step - \text {Find} (\mathbf{u}_\sigma ^\star )_{\sigma \in {\fancyscript{E}}_{\mathrm{int}}}~\text {such that:}\\&\displaystyle \dfrac{1}{\delta t}(\mathbf{u}^{\star }_{\sigma }-\mathbf{u}_{\sigma }^{n}) + \frac{1}{|D_\sigma |}\sum _{\varepsilon \in \tilde{{\fancyscript{E}}}(D_\sigma )} F_{\sigma ,\varepsilon }^{n} \mathbf{u}^{\star }_{\varepsilon } - \mu \, ({\varvec{\Delta }}\mathbf{u})_{\sigma }^{\star } + ({\varvec{\nabla }}p)_{\sigma }^{n} =0,&\sigma \in {\fancyscript{E}}_{\mathrm{int}},\end{aligned}$$
(2a)
$$\begin{aligned}&\nonumber Correction~step - \text {Find} (\mathbf{u}_\sigma ^{n+1})_{\sigma \in {\fancyscript{E}}_{\mathrm{int}}}~\text {and}~(p_K^{n+1})_{K\in {\fancyscript{M}}}~\text {such that:} \\&\displaystyle \dfrac{1}{\delta t}(\mathbf{u}^{n+1}_{\sigma }-\mathbf{u}_{\sigma }^{\star }) + ({\varvec{\nabla }}p)_{\sigma }^{n+1}-({\varvec{\nabla }}p)_{\sigma }^{n} =0,&\sigma \in {\fancyscript{E}}_{\mathrm{int}}, \end{aligned}$$
(2b)
$$\begin{aligned}&\sum _{\sigma \in {\fancyscript{E}}(K)} F_{K,\sigma }^{n+1}=0, \quad \text {with } \ F_{K,\sigma }^{n+1}=|\sigma |\ \mathbf{u}_\sigma ^{n+1}\cdot \mathbf{n}_{K,\sigma },&K \in {\fancyscript{M}}. \end{aligned}$$
(2c)

The pressure gradient is built as the dual operator of the discrete divergence:

$$ ({\varvec{\nabla }}p)_{\sigma }=\frac{|\sigma |}{|D_\sigma |}(p_L-p_K)\, \mathbf{n}_{K,\sigma }, \qquad \sigma =K|L. $$

The discretization of the diffusion term relies on the so-called “rotated bi-linear element” introduced by Rannacher and Turek [8]. The reference element \(\widehat{K}\) is the unit \(d\)-cube \((0,1)^d\), and the discrete functional space is:

$$ \tilde{Q}_{1}(\widehat{K})= \mathrm{span}\left\{ 1,\,(\mathbf{x}_{i})_{i=1,\ldots ,d},\,(\mathbf{x}_{i}^{2}-\mathbf{x}_{i+1}^{2})_{i=1,\ldots ,d-1}\right\} . $$

When there is no hanging node on a face \(\sigma \), we impose the jump through the face to have a zero mean value. When there is a hanging node, we only impose to zero the integral of the jump through the initial face. Hence, the set \(\lbrace \zeta _\sigma ,~ \sigma \in {\fancyscript{E}}_{\mathrm{int}}\rbrace \) of nodal functions associated with the Rannacher-Turek element is defined as follows. When no vertices of \(\sigma =K|L\) is a hanging node, we define \(\zeta _\sigma \) such that \(\mathrm{supp}(\zeta _\sigma ) \subset K\cup L\), for all \(K\in {\fancyscript{M}}\), \(\zeta _\sigma |_{K}\) belongs to the Rannacher-Turek local discrete space of \(K\) (i.e.  the image of the space \(\tilde{Q}_{1}(\widehat{K})\) by the \(Q_1\) mapping) and:

$$\begin{aligned} \frac{1}{|\sigma |} \int _{\sigma } \zeta _\sigma =1 \text{ and, } \text{ for } \text{ all } \sigma '\in {\fancyscript{E}},\ \sigma ' \ne \sigma ,\ \int _{\sigma '} \zeta _\sigma =0. \end{aligned}$$
(3)

When one of the vertices of \(\sigma =K|L\) is a hanging node, it means that \(\sigma \) separates a cell obtained by splitting the mesh, say \(L\), from an unsplit one, say \(K\). The support of \(\zeta _\sigma \) is still \(K \cup L\) and on \(L\), \(\zeta _\sigma \) is still given by (3). Let \(\Sigma \) be the initial face of \(K\) including \(\sigma \), and let \(\zeta _\Sigma \) be the Rannacher-Turek usual shape function (i.e. the function satisfying an analogue of (3) on the initial mesh). Then, we define \(\zeta _\sigma \) on \(K\) by \(\zeta _\sigma (\mathbf{x})=\dfrac{|\sigma |}{|\Sigma |}\zeta _\Sigma (\mathbf{x})\).

Fig. 3
figure 3

Piecewise definition of \(\zeta _{\sigma }\)

Finally, dropping the time index, the discretization of the diffusion term reads:

$$\begin{aligned} -({\varvec{\Delta }}\mathbf{u})_{\sigma } = \frac{1}{|D_\sigma |} \sum _{K \in {\fancyscript{M}}} \int _K \sum _{\sigma '\in {\fancyscript{E}}(K)} \mathbf{u}_{\sigma '} ({\varvec{\nabla }}\zeta _{\sigma '} \cdot {\varvec{\nabla }}\zeta _{\sigma }). \end{aligned}$$
(4)

In the convection term, the velocity interpolates at the internal dual faces \(\mathbf{u}_{\varepsilon }^{\star }\) is chosen centered: \(\mathbf{u}_{\varepsilon } = ( \mathbf{u}_\sigma + \mathbf{u}_{\sigma '})/2\), for \(\varepsilon =D_\sigma |D_\sigma '\). To make the description of the scheme complete, we now only need to define the mass fluxes through the dual faces (\(F_{\sigma ,\varepsilon }^{n})_{\varepsilon \in \tilde{{\fancyscript{E}}}}\): this is the purpose of Sect. 3.2.

3.2 Discrete Kinetic Energy and Mass Fluxes

The discrete mass fluxes through the faces of the dual mesh are built so that a finite volume discretization of the divergence constraint (1b) holds over the dual cells:

$$\begin{aligned} \sum _{\varepsilon \in \tilde{{\fancyscript{E}}}(D_\sigma )} F_{\sigma ,\varepsilon }^{n}=0, \qquad \sigma \in {\fancyscript{E}}_{\mathrm{int}}. \end{aligned}$$
(5)

This is crucial in order to reproduce, at the discrete level, the derivation of a kinetic energy balance equation, thus ensuring discrete analogues of the usual \(\mathrm{L}^\infty (\mathrm{L}^2)\)- and \(\mathrm{L}^2(\mathrm{H}^1)\)- stability estimates for the velocity. It may be shown that Relation (5) holds if the dual fluxes are computed from the primal ones \((F_{K,\sigma }^n)_{\sigma \in {\fancyscript{E}}(K)}\) at the previous time-step so as to satisfy the following three constraints (see [1, 5] for details):

  • (H1)—For all primal cell \(K\) in \({\fancyscript{M}}\), the set \((F_{\sigma ,\varepsilon })_{\varepsilon \subset K}\) of dual fluxes through faces included in \(K\) satisfies the following linear system, with \(\xi _K^\sigma =|D_{K,\sigma }|/|K|\):

    $$\begin{aligned} F_{K,\sigma } + \sum _{\varepsilon \in \tilde{{\fancyscript{E}}}(D_\sigma ),\ \varepsilon \subset K} F_{\sigma ,\varepsilon }= \xi _K^\sigma \ \sum _{\sigma ' \in {\fancyscript{E}}(K)} F_{K,\sigma '}, \qquad \forall \sigma \in {\fancyscript{E}}(K). \end{aligned}$$
    (6)
  • (H2)—The dual fluxes are conservative: \(F_{\sigma ,\varepsilon }=-F_{\sigma ',\varepsilon }\) for all \(\varepsilon =D_\sigma |D_\sigma '\).

  • (H3)—The dual fluxes are a bounded function of the primal ones \((F_{K,\sigma })_{\sigma \in {\fancyscript{E}}(K)}\):

    $$ |F_{\sigma ,\varepsilon }| \le \ C \max \,\left\{ |F_{K,\sigma }|,\ \sigma \in {\fancyscript{E}}(K) \right\} , \qquad K \in {\fancyscript{M}},\ \sigma \in {\fancyscript{E}}(K),\ \varepsilon \in \tilde{{\fancyscript{E}}}(D_{\sigma }), \ \varepsilon \subset K. $$

3.2.1 Dual Fluxes for Non-refined Meshes

The system of equations (6) has an infinity of solutions, which makes necessary to impose in addition the constraint (H3). Since (6) is linear with respect to the \(F_{\sigma ,\varepsilon },\ \sigma \in {\fancyscript{E}}(K), \varepsilon \in \tilde{{\fancyscript{E}}}(D_{\sigma }),\ \varepsilon \subset K\), a solution of (6) may thus be expressed as:

$$ F_{\sigma ,\varepsilon } = \sum _{\sigma ' \in {\fancyscript{E}}(K)} (\alpha _K)_\sigma ^{\sigma '} F_{K,\sigma '},\qquad \sigma \in {\fancyscript{E}}(K), \varepsilon \in \tilde{{\fancyscript{E}}}(D_{\sigma }) \text{ and } \varepsilon \subset K, $$

and (H3) is equivalent to requiring bounded coefficients \(((\alpha _K)_\sigma ^{\sigma '})_{\sigma ,\sigma '\in {\fancyscript{E}}(K)}\). In addition, since \(\xi _K^\sigma = 1/(2d)\) for all \(K \in {\fancyscript{M}}\) and \(\sigma \in {\fancyscript{E}}(K)\), system (6) is completely independent from the cell \(K\) under consideration. We may thus consider a particular geometry for \(K\), let us say \(K=(0,1)^d\), and find an expression for the coefficients \(((\alpha _K)_\sigma ^{\sigma '})_{\sigma ,\sigma '\in {\fancyscript{E}}(K)}\) which we will apply to all the cells, thus automatically satisfying the constraint (H3). A technique for this computation is described in [1, Sect. 3.2]. The idea is to build a momentum field \(\mathbf{w}\) with a constant divergence and such that \(\int _\sigma \mathbf{w}\cdot \mathbf{n}_{K,\sigma } d\sigma (\mathbf{x}) = F_{K,\sigma }\), for all \(\sigma \in {\fancyscript{E}}(K)\). Then, an easy computation shows that the definition \(F_{\sigma ,\varepsilon } = \int _\varepsilon \mathbf{w}\cdot \mathbf{n}_{\sigma ,\varepsilon } d\sigma (\mathbf{x})\) satisfies (6). The set of coefficients \(((\alpha _K)_\sigma ^{\sigma '})_{\sigma ,\sigma '\in {\fancyscript{E}}(K)}\) obtained for a quadrangle is given in [1, Sect. 3.2]; extension to the three-dimensional case is straightforward.

3.2.2 Dual Fluxes for 2D-Refined Meshes

Here again, we may restrict the computation to square cells. In 2D, if a primal cell is surrounded with four refined cells, the half-diamond cells are obtained by splitting the cell in four sub-squares, each one being split in two triangles. Hence, eight dual fluxes must be computed; if some of the neighboring cells are not refined, one uses a coarsening procedure. We begin with computing the dual fluxes across the four sub-squares faces (solid gray color in Fig. 4) so that (6) holds, with \((F_{K,\sigma })_{\sigma \in {\fancyscript{E}}(K)}\) denoted here by \(F_i\) \((4\le i \le 11)\) and \(F_{\sigma ,\varepsilon },\ \sigma \in {\fancyscript{E}}(K), \varepsilon \subset K\) denoted here by \(\widetilde{F}_i\) \((4\le i \le 7)\). The linear system to solve has a one dimensional kernel and a particular solution satisfying \((H3)\) is given in Fig. 4. Then, the dual fluxes across the diagonal faces \(\bar{F}_i\) \((0\le i \le 3)\) (dashed gray color in Fig. 4) are computed by isolating the sub-squares and applying the procedure described above for the non-refined case.

Fig. 4
figure 4

Dual fluxes for the neighboring cell of refined cells (2D case)

3.2.3 Dual Fluxes for 3D-Refined Meshes

The procedure is the same as in the 2D-case. The first step consists in splitting the cube in eight sub-cubes and computing the dual fluxes across the faces of these sub-cubes. The formula of one of these intermediate fluxes \(\widetilde{F}\) is given in Fig. 5. The computation of the other fluxes across the faces separating two sub-cubes is deduced by permutations of the indices.

Fig. 5
figure 5

Intermediate dual fluxes for the neighboring cell of refined cells (3D case)

In the second step, each sub-cube is split in 3 half-diamonds of equal volumes. One obtains 24 half-diamonds and 48 internal half-diamond faces of two possible types (see Fig. 6). The dual fluxes across these faces are obtained by isolating the sub-cubes and applying the procedure described above for the non-refined case.

Fig. 6
figure 6

Two possible types of internal half-diamond faces (3D case)

4 Numerical Test

We assess the behavior of the proposed numerical scheme on an exact analytical solution to the stationary Navier-Stokes equations known as the Kovasznay flow [7]. Computations are performed with the free software CALIF\(^3\)S developed at IRSN [2]. The velocity and pressure fields are given by:

$$ \mathbf{u}= \begin{bmatrix} 1 - e^{\displaystyle \lambda x}\, \cos (2 \pi y) \\ \displaystyle \frac{\lambda }{2 \pi }\, e^{\displaystyle \lambda x}\, \sin (2 \pi y) \end{bmatrix}, \quad p = \frac{1}{2}\ (1 - e^{\displaystyle 2 \lambda x}), \quad \lambda = \frac{1}{2 \mu } - \bigl ( \frac{1}{4 \mu ^2} + 4 \pi ^2 \bigr )^{1/2}, $$

where \(\mu \) stands for the viscosity of the flow, taken here as \(\mu =1/40\). The computational domain is \(\varOmega =(-0.5,1) \times (-0.5,1.5)\). The mesh is built from a regular \(n \times n\) grid, where we refine the sub-domain \(\varOmega _f=(-0.5,0.5) \times (-0.5,0.5) \cup (0.5,1) \times (0.5,1.5) \) by splitting each (square) cell included in \(\varOmega _f\) in four sub-squares. The solution is computed by the projection scheme, by letting a fictitious transient tend to the desired steady state. Boundary conditions are given by the analytical solution. The obtained numerical errors for various values of \(n\) are gathered in the following table, where \(\mathbf{u}_\mathrm{exact}\) and \(p_\mathrm{exact}\) stand for the exact velocity and pressure, respectively.

   \(n\)    

\({||\mathbf{u}-\mathbf{u}_\mathrm{exact} ||}_{\mathrm{L}^2(\varOmega )}\)

\({||p-p_{\mathrm{exact}} ||}_{\mathrm{L}^2(\varOmega )}\)

10

0.183

0.0812

20

0.0384

0.0334

40

0.00825

0.0158

80

0.00211

0.00782

The observed order of convergence in \(\mathrm{L}^2\)-norm is approximately 2 for the velocity and 1 for the pressure. The contour lines of the first component of the velocity are drawn on Fig. 7. We may check that no spurious perturbation appears along the lines separating the refined and non-refined parts of the computational domain (in other words, the lines composed by the union of the faces including a hanging node). The theoretical study of this scheme is underway, and the error analysis confirms these experiments.

Fig. 7
figure 7

Contour lines of the field \(\mathbf{u}_1\). The dashed lines materialize the boundary of the refined area (bottom-left and top-right sub-domains)