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 Navier-Stokes Equations

Mimetic discretizations aim to represent physics in a discrete sense, in contrast to differential formulations, which are concerned with the limit h → 0. For the case in which h ≠ 0 geometrical considerations play an important role in the correct discrete formulation, [1, 2, 4, 7, 10]. Application of these ideas to continuum models are described in [5, Appendix A] and [8, 13]. The novel aspect in this paper is that continuum ideas are applied to incompressible, viscous flows using spectral basis functions.

We start with the incompressible Navier-Stokes equations (ρ = 1), written in the integral formulation, as given in many textbooks and we try to make precise what these statements mean. It is important to give an accurate meaning to all variables, because when we want to represent these physical quantities on finite grids, we want to preserve the main structure of the equations. Conservation of mass (ρ = 1) is usually given by

$$\displaystyle{ \int _{\partial \varOmega }\mathbf{v} \cdot \mathbf{ n}\,\mathrm{d}S = 0\;, }$$
(1)

and conservation of momentum,

$$\displaystyle{ \int _{\varOmega }\dfrac{\partial \mathbf{v}} {\partial t} \;dV +\int _{\partial \varOmega }\mathbf{v} \otimes \mathbf{ v} \cdot \mathbf{ n}\;dS =\int _{\partial \varOmega }\boldsymbol{\sigma } \cdot \mathbf{ n}\;dS\; }$$
(2)

and Newtonian stress relation

$$\displaystyle{ \boldsymbol{\sigma }= -p\mathbb{I} +\mu \left (\nabla \mathbf{v} +{ \left (\nabla \mathbf{v}\right )}^{T}\right )\;. }$$
(3)

Here \(\mathbf{v},p,\sigma \mbox{ and }\mu\) denote velocity, pressure, total stress tensor and dynamic viscosity, respectively; \(\mathbb{I}\) and \(\mathbf{n}\) are the identity matrix and the outward unit normal to the boundary, respectively. The above are balance equations for volumetric quantities that depend on their fluxes through surfaces and are more physical than their differential counterparts.

1.1 Momentum and Velocity

The first term in (2) indicates that velocity (and its time derivative) can be integrated over a volume. But velocity is generally not associated to volumes, but is defined as the tangent vector at a given point along the trajectory of a particle. Velocity is therefore a vector-valued 0-form. This statement means that to every point in space-time (a zero-dimensional object) we associate a vector. Let V be the linear vector-space of all possible vectors at a given point in space, then we can define the space V of all linear functionals on V. Elements of V are called covectors. The spaces V and V are isomorphic, but there is no canonical isomorphism which relates an element v ∈ V to an element α ∈ V . Once a metric is defined, one can associate with every vector at a point a corresponding covector. This map is called the flat operator:  : V → V . The covector associated with a vector v is then denoted by v .

The linear vector space V associated to a point p is called the tangent space at p, denoted by T p Ω. The corresponding dual space is called the cotangent space at p denoted by \(T_{p}^{{\ast}}\varOmega\). The collection of all tangent spaces in the domain Ω is called the tangent bundle, T Ω and the collection of cotangent spaces is called the cotangent bundle, T Ω. Let α ∈ T Ω and \(\mathbf{v} \in T\varOmega\), then \(\langle \alpha,\mathbf{v}\rangle\) associates to each point p in Ω the value \(\left.\alpha \right \vert _{p}(\left.\mathbf{v}\right \vert _{p})\).

With every k-form we can associate a (nk)-form with a different type of orientation, see [2]. The collection of all k-forms on Ω is denoted by Λ k(Ω). The metric dependent operator which establishes this connection is the Hodge-⋆ operator. For continuum models we need to combine the and Hodge-⋆ into the operator ⋆, (see also [13] for such operations)

$$\displaystyle{{\star }^{\flat }\,:\, T\varOmega {\otimes \varLambda }^{k}(\varOmega ) \rightarrow {T}^{{\ast}}\varOmega {\otimes \varLambda }^{n-k}(\varOmega )\;.}$$

If we apply this operator to velocity \(\mathbf{v} \in T\varOmega {\otimes \varLambda }^{0}(\varOmega )\) we obtain

$$\displaystyle{m:= {\star }^{\flat }(\mathbf{v}) \in {T}^{{\ast}}\varOmega {\otimes \varLambda }^{n}\varOmega \;.}$$

Similarly, we can define \({\star }^{\sharp }\,:\, {T}^{{\ast}}\varOmega {\otimes \varLambda }^{k}(\varOmega ) \rightarrow T\varOmega {\otimes \varLambda }^{n-k}(\varOmega )\). The physical quantity m is called momentum density or the momentum per unit volume. This is a covector-valued volume form. So instead of integrating ‘velocity’ over the domain we are tempted to write

$$\displaystyle{\int _{\varOmega }m =\int _{\varOmega } {\star }^{\flat }(\mathbf{v})\;.}$$

This integral is not defined, because it assumes that we can integrate over the tangent spaces in Ω. The basis in each tangent space, however, may differ from point to point. In order to define the momentum integral we introduce the operator \(\stackrel{\cdot }{\wedge }\)

$$\displaystyle{\stackrel{\cdot }{\wedge }\,:\, \left ({T}^{{\ast}}\varOmega {\otimes \varLambda }^{k}(\varOmega )\right ) \otimes \left (T\varOmega {\otimes \varLambda }^{l}(\varOmega )\right ) {\rightarrow \varLambda }^{k+l}(\varOmega )\;,}$$

given by \(\alpha \in {T}^{{\ast}}\varOmega {\otimes \varLambda }^{k}(\varOmega )\) and \(\mathbf{w} \in T\varOmega {\otimes \varLambda }^{l}(\varOmega )\)

$$\displaystyle{\alpha \stackrel{\cdot }{\wedge }\mathbf{w} =\langle \alpha,\mathbf{w}\rangle \mathrm{d}{x}^{(k)} \wedge \mathrm{ d}{x}^{(l)}\;.}$$

This operation yields a (k + l)-form which can be integrated over (k + l)-dimensional submanifolds.

If we apply momentum density m to any vector field \(\mathbf{w}\) (not necessarily a velocity field) using this operator we get \(m\stackrel{\cdot }{\wedge }\mathbf{w} {\in \varLambda }^{n}(\varOmega )\) and this can be integrated over a volume. So the proper way to interpret the time rate of change of momentum should be

$$\displaystyle{ \int _{\varOmega } \frac{\partial } {\partial t} {\star }^{\flat }(\mathbf{v})\stackrel{\cdot }{\wedge }\mathbf{w}\;,\;\;\;\forall \mathbf{w} \in T\varOmega {\otimes \varLambda }^{0}(\varOmega )\;. }$$
(4)

In many textbooks on fluid dynamics the distinction between momentum density (usually called ‘momentum’) and velocity is ignored; one is just a scalar multiple of the other, \(m =\rho \mathbf{ v}\), but the use of the vector \(\mathbf{w}\) in (4) is generally incorporated. The textbooks then say: ‘We consider this equation for each component separately …’. This is a strange sentence, because components have no physical relevance, only vectors, i.e. components plus associated basis vectors are physically relevant. But what is meant by this statement is that for the vector field \(\mathbf{w}\) in (4) a uniform vector field in the x i-direction is taken. The generality ‘all vector fields’ is in these textbooks compensated by the fact that momentum conservation should hold for ‘all volumes’.

1.2 Convection

Now that we understand how momentum density should be integrated over a volume, we can also define convection of momentum density. After pairing with an arbitrary vector field, \(\mathbf{w}\), we obtain a volume form and we apply the Lie derivative to this volume form, see [11]. The Lie derivative for a volume form, β (n), is given by

$$\displaystyle{\mathcal{L}{_{\mathbf{v}}\beta }^{(n)} =\mathrm{ d}\mathfrak{i}{_{\mathbf{ v}}\beta }^{(n)}\;,}$$

and then the generalized Stokes theorem converts this exact form to a boundary integral

$$\displaystyle{ \int _{\varOmega }\mathcal{L}_{\mathbf{v}}m\stackrel{\cdot }{\wedge }\mathbf{w} =\int _{\partial \varOmega }\mathfrak{i}_{\mathbf{v}}(m\stackrel{\cdot }{\wedge }\mathbf{w})\;. }$$
(5)

Compare this expression with the convective term in (2) and note that it does not require an inner product nor the definition of an outward unit normal. The inner product is avoided since we work with differential forms and duality pairing is metric-free and the orientation of the elements in the mesh, [7], avoids the use of explicitly defined normals.

1.3 Stress Tensor and Surface Force Density

The last term in (2) denotes the action of the viscous forces on the flow represented by the stress tensor \(\boldsymbol{\sigma }\). The stress tensor is an infinitesimal quantity in the limit for h → 0. On a finite mesh we can identify volumes over which we integrate the momentum density and the boundary of these volumes where surface forces act. In continuum mechanics forces are ‘smeared out’, so we introduce the surface force density given by \(\mathfrak{t} \in {T}^{{\ast}}\varOmega {\otimes \varLambda }^{n-1}(\varOmega )\). This is a covector-valued (n − 1)-form. Forces are generally associated with covectors, [2, 12], and in the current setting need to be covectors in order to equate them to the time rate of change of momentum which was also covector-valued. It is furthermore a (n − 1)-form since it acts on the boundary of n-dimensional volumes, see also [5, Appendix A] and [8, 13]. Again, covector-valued forms cannot be integrated, so the proper way is to pair it with an arbitrary vector field \(\mathbf{w}\) before integration over surfaces is possible. The momentum equation then becomes

$$\displaystyle\begin{array}{rcl} \frac{d} {\mathit{dt}}\int _{\varOmega } {\star }^{\flat }(v)\stackrel{\cdot }{\wedge }\mathbf{w} +\int _{ \partial \varOmega }\mathfrak{i}_{\mathbf{v}}({\star }^{\flat }(v)\stackrel{\cdot }{\wedge }\mathbf{w}) =\int _{ \partial \varOmega }\mathfrak{t}\stackrel{\cdot }{\wedge }\mathbf{w}\;,\;\;\;\forall \mathbf{w} \in T\varOmega {\otimes \varLambda }^{0}(\varOmega )\;.\quad & &{}\end{array}$$
(6)

1.4 Newtonian Stress Relation

The pressure scalar is an outer-oriented volume form, p (n). Pressure force density is represented as a covector-valued (n − 1)-form

$$\displaystyle{\mathbf{p} = \left (\star p\right )\,\mathrm{d}{x}^{i} \otimes \mathrm{ d}{x}^{1} \wedge \ldots \widehat{\mathrm{ d}{x}^{i}}\ldots \wedge \mathrm{ d}{x}^{n}\;,}$$

where the notation \(\hat{\cdot }\) indicates that this term is omitted and \(\mathrm{d}{x}^{i} \otimes \mathrm{ d}{x}^{1} \wedge \ldots \widehat{\mathrm{ d}{x}^{i}}\ldots \wedge \mathrm{ d}{x}^{n}\) is the identity tensor, see also example [5, §9.3a]. This description agrees with [9] for Stokes flow. Note that \(\mathbf{p}\stackrel{\cdot }{\wedge }\mathbf{w} = \mathfrak{i}_{\mathbf{w}}{p}^{(n)}\).

The velocity gradient is represented as the covariant differential of the velocity vector field, \(\nabla \mathbf{v}\) which is a vector-valued 1-form, see [5, §9.3b]. In this paper we restrict ourselves to Euclidean space for which the connection 1-forms vanish. Applying \(\star _{\mu }^{\flat }(\nabla \mathbf{v})\) transforms the vector-valued 1-form into a covector-valued (n − 1)-form, where the diffusion coefficient is contained in the Hodge-⋆ operator. In this paper we assume μ to be constant.

1.5 Conservation of Mass

Let ω (n) be the standard volume form, then the divergence of a vector field is defined as \({(\mbox{ div}\,\mathbf{v})\omega }^{(n)} = \mathcal{L}{_{\mathbf{v}}\omega }^{(n)} =\mathrm{ d}\mathfrak{i}{_{\mathbf{v}}\omega }^{(n)}\). Integration over a volume and applying Stokes theorem gives

$$\displaystyle{\int _{\varOmega }\mathrm{d}\mathfrak{i}{_{\mathbf{v}}\omega }^{(n)} =\int _{ \partial \varOmega }\mathfrak{i}{_{\mathbf{v}}\omega }^{(n)}\;.}$$

This is the proper translation of (1) as found in textbooks on incompressible flow. The velocity flux field, \(\mathfrak{i}{_{\mathbf{v}}\omega }^{(n)}\), is isomorphic to the velocity vector field. The velocity flux field will be used in the discrete representation of velocity in the Navier-Stokes equations. The relation between the velocity fluxes \(\mathfrak{i}{_{\mathbf{v}}\omega }^{(n)}\) and \({\star }^{\flat }(\mathbf{v})\) is given by

$$\displaystyle{ {\star }^{\flat }(\mathbf{v})\stackrel{\cdot }{\wedge }\mathbf{w} =\mathbf{ {w}}^{\flat } \wedge \mathfrak{i}{_{\mathbf{ v}}\omega }^{(n)}\;,\;\;\forall \mathbf{w} \in T\varOmega {\otimes \varLambda }^{0}(\varOmega )\;. }$$
(7)

The volume forms and (n − 1)-forms appearing in all integrals are all outer-oriented.

2 Discrete Representation

In the full differential geometric setting as described above, the integration only makes sense when paired with all vector fields \(\mathbf{w}\). Here we choose the uniform vector field in the x- and y-direction only and impose that conservation should hold for all volumes in our spectral elements. These volumes are generated by the Gauss-Lobatto grid in the spectral element and will be denoted by Ω ij . So in this section \(\mathbf{w}\) is either \(\boldsymbol{\partial _{x}}\) or \(\boldsymbol{\partial _{y}}\).

Figure 1 displays one spectral element and its Gauss-Lobatto grid (solid lines) in 2D. The dotted gray lines represent the dual grid, see [7, 10].

Fig. 1
figure 1

The velocities are discretized as outer-oriented mass-fluxes, and live on surfaces (S) of the Gauss-Lobatto grid shown above, while pressure is discretized on volumes (Ω). Momenta are discretized on staggered volumes (\(\tilde{\varOmega }\)) and their fluxes on the surfaces (\(\tilde{S}\)) surrounding these staggered volumes

Momentum is reduced onto a volume consisting of a primal (n − 1)-chain and a dual 1-chain. In 2D these volumes consist of tensor products of primal and dual edge as shown in Fig. 1 by volumes enclosed by solid (primal) and dashed (dual) lines. The location of the unknowns coincides with those in staggered finite volume methods. The difference is that in this formulation the unknowns represent integral values, whereas in finite volume methods the unknowns either represent average or nodal values. Let us denote the primal surfaces by S i , then discrete velocity is given by

$$\displaystyle{\bar{v}_{i} =\int _{S_{i}}\mathfrak{i}{_{\boldsymbol{\mathbf{v}}}\omega }^{(n)}\;.}$$

This yields a metric-free description of conservation as mass as shown in [6, 9]. The reduction of the pressure field is on outer-oriented volumes, see also [9].

Integrals of momentum flux, \({\mathcal{F}}^{(n-1)}\), pressure force, \(\mathfrak{i}_{\boldsymbol{\mathbf{w}}}{p}^{(n)}\), and velocity gradients are represented on the boundary of the momentum volumes indicated in Fig. 1.

Once we have the discrete variables for mass flux, momentum and pressure, we use the spectral element functions described in [6, 10], to interpolate these values in such a way that the integral values are preserved.

Using (7) we can write the relation between momentum and velocity flux as

$$\displaystyle{ \int _{\tilde{\varOmega }_{\mathit{ij}}}m\stackrel{\cdot }{\wedge }\mathbf{w} -\int _{\tilde{\varOmega }_{\mathit{ij}}}\mathbf{{w}}^{\flat } \wedge \mathfrak{i}{_{\mathbf{ v}}\omega }^{(n)} = 0\;\longrightarrow \bar{m}_{\mathbf{ w}} - P_{\mathbf{w}}^{m}\bar{u} = 0\;, }$$
(8)

where \(\tilde{\varOmega }_{\mathit{ij}}\) are the volume where momentum is reduced, see Fig. 1, and \(P_{\mathbf{w}}^{m}\) is the matrix which maps discrete velocity (which is discretized as mass-fluxes) to discrete momentum (on the staggered-grid). The discrete representation of momentum-flux, pressure force \(\mathfrak{i}_{\boldsymbol{\mathbf{w}}}{p}^{(n)}\) and traction forces, \(\star _{\mu }^{\flat }(\nabla _{\mathbf{w}}\mathbf{v})\) (which can be equivalently written as \(\star _{\mu }^{\flat }(\nabla {\star }^{\sharp } {\star }^{\flat }\mathbf{v})\stackrel{\cdot }{\wedge }\mathbf{w} = \star _{\mu }^{\flat }(\nabla {\star }^{\sharp }m)\stackrel{\cdot }{\wedge }\mathbf{w}\), which, in Cartesian coordinates and with constant \(\mathbf{w}\) becomes \(d_{\mu }^{\star }(m\stackrel{\cdot }{\wedge }\mathbf{w})\)), are given by

  • Convective-flux, see [11], \(\mathcal{F}_{\mathbf{w}}^{(1)} = \mathfrak{i}_{\mathbf{v}}(m\stackrel{\cdot }{\wedge }\mathbf{w})\):

    $$\displaystyle\begin{array}{rcl} \left (\mathcal{F}_{\mathbf{w}}^{(1)}{,\beta }^{(1)}\right )_{\varOmega }& -&\left (m\stackrel{\cdot }{\wedge }\mathbf{w},\mathbf{{v}}^{\flat } {\wedge \beta }^{(1)}\right )_{\varOmega }\;,= 0\;, \\ & \longrightarrow & \tilde{M}_{11}\bar{\mathcal{F}}_{\mathbf{w}} -\tilde{ C}_{\mathbf{v}}\bar{m}_{\mathbf{w}} = 0\;. {}\end{array}$$
    (9)
  • Pressure-force, \(\mathcal{H}_{\mathbf{w}}^{(1)} = \mathfrak{i}_{\mathbf{w}}{p}^{(2)}\):

    $$\displaystyle{ \mathcal{H}_{\mathbf{w}}^{(1)} - {p}^{(2)}(\mathbf{w}) = 0\longrightarrow \bar{\mathcal{H}}_{\mathbf{ w}} - P_{\mathbf{w}}^{p}\bar{p} =\tilde{ B}_{ P}\;. }$$
    (10)
  • Diffusive-fluxes, \(\mathcal{T}_{\mathbf{w}}^{(1)} = d_{\mu }^{\star }(m\stackrel{\cdot }{\wedge }\mathbf{w})\):

    $$\displaystyle\begin{array}{rcl} \left (\mathcal{T}_{\mathbf{w}}^{(1)}{,\beta }^{(1)}\right )_{\varOmega }& -&\left (m\stackrel{\cdot }{\wedge }\mathbf{w},{\mbox{ d}\beta }^{(1)}\right )_{\varOmega } = -\int {_{ \partial \varOmega }\beta }^{(1)} \wedge \star (m\stackrel{\cdot }{\wedge }\mathbf{w})\;, \\ & \longrightarrow & \tilde{M}_{11}\bar{\mathcal{T}}_{\mathbf{w}} -\tilde{ D}_{21}^{T}\tilde{M}_{ 22}\bar{m} =\tilde{ B}_{T}\;. {}\end{array}$$
    (11)

The discrete continuity equation is given by

$$\displaystyle{ D_{21}\bar{u} = 0\;. }$$
(12)
Fig. 2
figure 2

Convergence plots for Kovasznay flow with mesh size, h, and order, p. Optimal rates are shown () for the h-refinement cases. nElemX and nElemY refer to the number of elements in X and Y directions, and p refers to the order of elements used. (a) Pressure, h-refinement. (b) Pressure, p-refinement. (c) Velocity, h-refinement. (d) Velocity, p-refinement

In the above, β (1) is an arbitrary 1-form; \(\tilde{M}_{11}\) and \(\tilde{M}_{22}\) are mass-matrices for 1- and 2-forms on the staggered mesh; \(C_{\mathbf{v}}\) is the convection matrix and depends on \(\mathbf{v}\) (which can be retrieved from reconstruction of \(\bar{v}\) using the edge basis, [7]); \(P_{\mathbf{w}}^{p}\) is the matrix which converts the scalar \(\bar{p}\) to pressure-force 1-forms; \(\tilde{B}_{P}\) and \(\tilde{B}_{T}\) are the boundary integrals for pressure and stress, respectively, obtained from integration by parts; and \(D_{21}\) and \(\tilde{D}_{21}\) are incidence matrices which discretely represent the exterior-derivative with entries containing only { − 1, 0, 1}. The algebraic system thus obtained is solved for \(\bar{v}\) and \(\bar{p}\) for \(\mathbf{w} =\{ \boldsymbol{\partial _{x}},\boldsymbol{\partial _{y}}\}\).

3 Results

3.1 Kovasznay Flow

Kovasznay flow is an analytical solution to Navier-Stokes’ equations. The solution is \(u = 1 - {e}^{\lambda x}\mathit{cos}(2\pi y)\), \(v = \frac{\lambda } {2\pi }{e}^{\lambda x}\mathit{sin}(2\pi y)\) and \(p = \frac{1} {2}(1 - {e}^{2\lambda x})\), where \(\lambda = \frac{1} {2\nu } -\sqrt{ \frac{1} {{4\nu }^{2}} + {4\pi }^{2}}\). The kinematic-viscosity chosen for this flow was \(\nu = \frac{\mu }{\rho } = \frac{1} {40}\) and the computational domain considered was \(\varOmega = [-0.5\;1] \times [-0.5\; - 0.5]\).

Fig. 3
figure 3

(Top) Streamfunction and pressure contours with a single spectral element of order 16. (Bottom) Centerline velocities are plotted () and compared with the solutions of [3] (), and the solutions are found to be reasonably close. Mesh size is 4 × 4 and made up of elements of order 6. (a) Stream-function contours. (b) Pressure contours. (c) X-velocity at x  = 0.5. (d) Y-velocity at y  = 0.5

The h, p-adaptivity plots for this problem are given in Fig. 2 for pressures (Fig. 2a, b) and velocities (Fig. 2c, d). It can be seen that the solutions converge exponentially and optimally. Some oscillatory behaviour is observed in convergence for a mesh with a single element, and this is attributed to the fact that our basis may not be capturing certain modes (even/odd).

3.2 Lid-Driven Cavity Flow

The second numerical test-case chosen was the classic lid-driven cavity flow on a unit square domain with the top-lid velocity, \(u_{L} = -1\) and a Reynolds number of 1000. The solutions for the pressure and streamfunction contours calculated for a single spectral element of order p = 16 are shown in the top-half of Fig. 3. Centerline-velocity solutions with a lower order of p = 6 but with multiple elements (4 × 4 mesh) and comparisons with the results of [3] are also shown in the bottom-half of Fig. 3. Good agreement is seen between the benchmark results and our results.