1 Introduction

Poroelasticity is an important problem in science and engineering. The Biot’s model for linear poroelasticity has been well accepted and commonly used. It couples solid displacement \( \mathbf {u} \) and fluid pressure p through the following partial differential equations (PDEs)

$$\begin{aligned} \left\{ \begin{array}{l} \displaystyle -\nabla \cdot \left( 2\mu \varepsilon (\mathbf {u}) + \lambda (\nabla \cdot \mathbf {u}) \mathbf {I} \right) + \alpha \nabla p = \mathbf {f}, \\ \partial _t \left( c_0 p + \alpha \nabla \cdot \mathbf {u} \right) + \nabla \cdot \left( -\mathbf {K} \nabla p \right) = s, \end{array} \right. \end{aligned}$$
(1)

where \( \varepsilon (\mathbf {u}) = \frac{1}{2} \left( \nabla \mathbf {u} + (\nabla \mathbf {u})^T \right) \) is the strain tensor with \( \lambda>0, \mu >0 \) being the Lamé constants, \( \mathbf {f} \) a given body force, \( \mathbf {K} \) a conductivity tensor, s a known fluid source, \( \alpha \) (usually close to 1) the Biot-Williams constant, and \( c_0 \ge 0 \) the constrained storage capacity. Appropriate boundary and initial conditions are posed to close the system.

Finite element methods (FEMs) are common tools for solving the Biot’s model. Depending on the unknown quantities to be solved, poroelasticity solvers are usually grouped into 3 types:

  • 2-field: Solid displacement and fluid pressure are to be solved;

  • 3-field: Solid displacement, fluid pressure and velocity are to be solved;

  • 4-field: Solid stress & displacement, fluid pressure & velocity are to be solved.

A major issue in numerical solvers for poroelasticity is the poroelasticity locking, which usually appears as nonphysical pressure oscillations. This happens when the porous media are low-permeable or low-compressible [12, 28, 36].

Early on, the continuous Galerkin (CG) FEMs were applied respectively to solve for displacement and pressure. But it was soon recognized that such solvers were subject to poroelasticity locking and the 2-field approach was nearly abandoned. The mixed finite element methods can be used to solve for pressure and velocity simultaneously and meanwhile coupled with a FEM for linear elasticity that is free of Poisson-locking. Therefore, the 3-field approach has been the main stream [5, 25,26,27, 33, 34]. The 4-field approach is certainly worth of investigation, but it just involves too many unknowns (degrees of freedom) [35].

The weak Galerkin (WG) finite element methods [31] have emerged as a new class of numerical methods with nice features that can be applied to a wide variety of problems including Darcy flow and linear elasticity [14, 18, 24, 30]. Certainly, WG solvers can be developed for linear poroelasticity [17], they are free of poroelasticity locking but may involve a lot of degrees of freedom.

Recently, our efforts have been devoted to reviving the 2-field approach for development of efficient and robust finite element solvers for poroelasticity [13]. This may involve incorporation of WG FEMs with WG FEMs or classical FEMs. In this paper, we continue such efforts to develop a poroelasticity solver that couples the WG finite elements for Darcy flow and the classical Lagrangian elements with reduced integration for linear elasticity. Moreover, we provide an accessible efficient implementation of this new solver on deal.II, a popular finite element package [3].

2 Discretization of Linear Elasticity by Lagrangian Elements with Reduced Integration

This section discusses discretization of linear elasticity by Lagrangian \( Q_1^d \) finite elements (\( d=2,3 \)) with reduced integration that is needed for our new FE solver for poroelasticity. For convenience of presentation, we consider the linear elasticity in its usual form

$$\begin{aligned} \left\{ \begin{array}{l} \displaystyle -\nabla \cdot \sigma = \mathbf {f}(\mathbf {x}), \quad \mathbf {x} \in \varOmega , \\ \mathbf {u}|_{\varGamma ^D} = \mathbf {u}_D, \quad \displaystyle (\sigma \mathbf {n})|_{\varGamma ^N} = \mathbf {t}_N, \end{array} \right. \end{aligned}$$
(2)

where \( \varOmega \) is a 2d- or 3d-bounded domain occupied by a homogeneous and isotropic elastic body, \( \mathbf {f} \) a body force, \( \mathbf {u}_D, \mathbf {t}_N \) respectively Dirichlet and Neumann data, \( \mathbf {n} \) the outward unit normal vector on the domain boundary that has a non-overlapping decomposition \( \partial \varOmega = \varGamma ^D \cup \varGamma ^N \). As mentioned in Sect. 1, \( \mathbf {u} \) is the solid displacement, \( \varepsilon (\mathbf {u}) = \frac{1}{2} \left( \nabla \mathbf {u} + (\nabla \mathbf {u})^T \right) \) the strain tensor, and \( \sigma = 2\mu \; \varepsilon (\mathbf {u}) + \lambda ({\nabla }{\cdot }{\mathbf {u}}) \mathbf {I} \) the Cauchy stress tensor with \( \mathbf {I} \) being the identity matrix. The Lamé constants \( \lambda ,\mu \) are given by

$$ \displaystyle \lambda = \frac{E \nu }{(1+\nu )(1-2\nu )}, \quad \quad \mu = \frac{E}{2(1+\nu )}, $$

where E is the elasticity modulus and \( \nu \in (0,\frac{1}{2}) \) is Poisson’s ratio.

One major issue in finite element solvers for linear elasticity is that as the elastic material becomes nearly incompressible or \( \nu \rightarrow \frac{1}{2} \), mathematically as \( \lambda \rightarrow \infty \), a FE solver may fail to produce correct results. This often appears as loss of convergence rates in displacement errors or spurious behaviors in numerical stress and dilation (divergence of displacement). This is the so-called “Poisson locking” [6]. It is well known that the classical linear (bilinear, trilinear) Lagrangian finite elements are subject to Poisson locking.

Many remedies for Poisson locking have been developed. Reduced integration is probably the easiest technique aiming at a quick fix for the classical Lagrangian elements, although the theory was less elegant [7, 9, 22].

In this paper, we adopt the remedy in [9] and extend it to 3-dim. In other words, we consider vector-valued Lagrangian bilinear and trilinear finite elements with reduced integration CG.\(Q_1^d\) (R.I.) (here \( d=2,3 \)) for solving linear elasticity and provide deal.II implementation of these solvers. Specifically, the 1-point Gaussian quadrature is employed for handling the dilation term.

Let E be a convex quadrilateral with vertices \( P_i(x_i,y_i) (i=1,2,3,4) \) that are oriented counterclockwise. A bilinear mapping F from \( (\hat{x},\hat{y}) \) in the reference element \( \hat{E}=[0,1]^2 \) to \( (x,y) \in E \) is established. Its Jacobian determinant is denoted as \( J(\hat{x}, \hat{y}) \). On \( \hat{E} \), we have 4 scalar-valued bilinear basis functions

$$\begin{aligned} \begin{array}{lccl} \displaystyle \hat{\phi }_4(\hat{x},\hat{y}) = (1-\hat{x}) \hat{y}, &{}&{}&{} \hat{\phi }_3(\hat{x},\hat{y}) = \hat{x} \hat{y}, \\ \hat{\phi }_1(\hat{x},\hat{y}) = (1-\hat{x}) (1-\hat{y}), &{}&{}&{} \hat{\phi }_2(\hat{x},\hat{y}) = \hat{x} (1-\hat{y}). \end{array} \end{aligned}$$
(3)

They are mapped to the quadrilateral E as rational functions of xy:

$$\begin{aligned} \phi _i(x,y) = \hat{\phi }_i(\hat{x},\hat{y}), \;\; i=1,2,3,4. \end{aligned}$$
(4)

On E, we have 8 node-based vector-valued local basis functions:

$$\begin{aligned} \left[ \begin{array}{c} \phi _1 \\ 0 \end{array} \right] , \left[ \begin{array}{c} 0 \\ \phi _1 \end{array} \right] , \left[ \begin{array}{c} \phi _2 \\ 0 \end{array} \right] , \left[ \begin{array}{c} 0 \\ \phi _2 \end{array} \right] , \left[ \begin{array}{c} \phi _3 \\ 0 \end{array} \right] , \left[ \begin{array}{c} 0 \\ \phi _3 \end{array} \right] , \left[ \begin{array}{c} \phi _4 \\ 0 \end{array} \right] , \left[ \begin{array}{c} 0 \\ \phi _4 \end{array} \right] . \end{aligned}$$
(5)

They span CG.\(Q_1^2(E)\). The notation is a bit confusing, since the shape functions are now rationals instead of polynomials. For any \( \mathbf {v} \in \text{ CG }.Q_1^2(E) \), we consider

$$\begin{aligned} \displaystyle \overline{\nabla \cdot \mathbf {v}} = \frac{1}{|E|} \int _{E} \mathbf {v}(x,y) dxdy = \frac{1}{|E|} \int _{\hat{E}} \mathbf {v}(x,y) J(\hat{x},\hat{y}) d\hat{x}d\hat{y}, \end{aligned}$$
(6)

where |E| is the volume of E.

Let \( \mathbf {V}_h \) be the space of vector-valued shape functions constructed from the CG.\(Q_1^2\) elements on a quasi-uniform quadrilateral mesh \( \mathcal {E}_h \). Let \( \mathbf {V}_h^0 \) be the subspace of \( \mathbf {V}_h \) consisting of shape functions that vanish on \( \varGamma ^D \). A finite element scheme for linear elasticity in the strain-div formulation seeks \( \mathbf {u}_h \in \mathbf {V}_h \) so that

$$\begin{aligned} \mathcal {A}_h^{SD}(\mathbf {u}_h, \mathbf {v}) = \mathcal {F}_h(\mathbf {v}), \quad \forall \mathbf {v} \in \mathbf {V}_h^0, \end{aligned}$$
(7)

where

$$\begin{aligned} \mathcal {A}_h^{SD}(\mathbf {u}_h, \mathbf {v}) = \sum _{E \in \mathcal {E}_h} 2\mu \left( \varepsilon (\mathbf {u}_h), \varepsilon (\mathbf {v}) \right) _E + \lambda (\overline{\nabla \cdot \mathbf {u}_h}, \overline{\nabla \cdot \mathbf {v}})_E, \end{aligned}$$
(8)
$$\begin{aligned} \mathcal {F}_h(\mathbf {v}) = \sum _{E \in \mathcal {E}_h} (\mathbf {f},\mathbf {v})_E + \sum _{\gamma \in \varGamma _h^N} \langle \mathbf {t}_N, \mathbf {v} \rangle . \end{aligned}$$
(9)

3 WG Finite Element Discretization for Darcy Flow

This section briefly discusses the weak Galerkin finite element discretization for Darcy flow that is needed for our new 2-field solver for linear poroelasticity.

Among the existing finite element solvers for Darcy flow [4, 8, 10, 11, 15, 18,19,20,21, 23, 29, 31, 32], the newly developed weak Galerkin solvers have some nice features that are attractive for large-scale computing tasks. In particular, the WG\((Q_k,Q_k;RT_{[k]})\) methods (with integer \( k \ge 0 \)) approximate the primal unknown pressure by using polynomial shape function of degree at most k separately defined in element interiors and on edges/faces. Their discrete weak gradients are reconstructed in the unmapped Raviart-Thomas spaces \( RT_{[k]} \) and used to approximate the classical gradient in the variational form. The WG Darcy solvers based on these novel notions

  1. (i)

    are locally mass-conservative;

  2. (ii)

    provide continuous normal fluxes;

  3. (iii)

    result in SPD linear systems that are easy to be solved.

In [32], we discussed deal.II implementation of such WG Darcy solvers for \( 0 \le k \le 5 \). The numerical tests on SPE10 Model 2 have demonstrated the aforementioned nice features and practical usefulness of the novel WG methodology.

In this section, we briefly review the basic concepts of weak Galerkin by recapping WG\((Q_0,Q_0;RT_{[0]})\) for Darcy flow on quadrilateral meshes. For ease of presentation, we consider the Darcy flow problem in its usual form

$$\begin{aligned} \left\{ \begin{array}{l} \displaystyle \nabla \cdot \left( -\mathbf {K} \nabla p \right) \equiv \nabla \cdot \mathbf {u} = s, \\ \displaystyle p|_{\varGamma ^D} = p_D, \quad \text{ on } \varGamma ^D \\ \displaystyle \mathbf {u} \cdot \mathbf {n} = u_N, \quad \text{ on } \varGamma ^N, \end{array} \right. \end{aligned}$$
(10)

where \( \varOmega \) is a polygonal domain, p the primal unknown pressure, \( \mathbf {u} \) the Darcy velocity, \( \mathbf {K} \) conductivity tensor (medium permeability divided fluid dynamic viscosity) that is uniformly SPD over the domain, s a known source, \( p_D \) a Dirichlet boundary condition, \( u_N \) a Neumann boundary condition, \( \mathbf {n} \) the outward unit normal vector on \( \partial \varOmega \), which has a nonoverlapping decomposition \( \varGamma ^D \cup \varGamma ^N \).

First we define the lowest-order unmapped Raviart-Thomas space as

$$\begin{aligned} RT_{[0]}(E) = \text{ Span }(\mathbf {w}_1, \mathbf {w}_2, \mathbf {w}_3, \mathbf {w}_4), \end{aligned}$$
(11)

where

$$\begin{aligned} \mathbf {w}_1 = \left[ \begin{array}{c} 1 \\ 0 \end{array} \right] , \quad \mathbf {w}_2 = \left[ \begin{array}{c} 0 \\ 1 \end{array} \right] , \quad \mathbf {w}_3 = \left[ \begin{array}{c} X \\ 0 \end{array} \right] , \quad \mathbf {w}_4 = \left[ \begin{array}{c} 0 \\ Y \end{array} \right] , \end{aligned}$$
(12)

and \( X=x-x_c \), \( Y=y-y_c \) are the normalized coordinates using the element center \( (x_c,y_c) \).

For a given quadrilateral element E, we consider 5 discrete weak functions \( \phi _i (0 \le i \le 4) \) as follows:

  • \( \phi _0 \) for element interior: It takes value 1 in the interior \( E^\circ \) but 0 on the boundary \( E^\partial \);

  • \( \phi _i (1 \le i \le 4) \) for the four sides respectively: Each takes value 1 on the i-th edge but 0 on all other three edges and in the interior.

The discrete weak gradient \( \nabla _{w} \phi \) is established in \( RT_{[0]}(E) \) via integration by parts [31]:

$$\begin{aligned} \displaystyle \int _{E} (\nabla _{w} \phi ) \cdot \mathbf {w} = \int _{E^\partial } \phi ^\partial (\mathbf {w} \cdot \mathbf {n}) - \int _{E^\circ } \phi ^\circ (\nabla \cdot \mathbf {w}), \quad \forall \mathbf {w} \in RT_{[0]}(E). \end{aligned}$$
(13)

For implementation, this involves solving a size-4 SPD linear system.

However, when E becomes a rectangle \( [x_1,x_2] \times [y_1,y_2] \) with \( \varDelta x = x_2 - x_1 \), \( \varDelta y = y_2 - y_1 \), one can obtain these discrete weak gradients explicitly:

$$\begin{aligned} \left\{ \begin{array}{rrrrr} \displaystyle \nabla _w \phi _0 = &{} 0 \mathbf {w}_1 \;\; + &{} 0 \mathbf {w}_2 \;\; + &{} \frac{-12}{(\varDelta x)^2} \mathbf {w}_3 \;\; + &{} \frac{-12}{(\varDelta y)^2} \mathbf {w}_4, \\ \displaystyle \nabla _w \phi _1 = &{} \frac{-1}{\varDelta x} \mathbf {w}_1 \;\; + &{} 0 \mathbf {w}_2 \;\; + &{} \frac{6}{(\varDelta x)^2} \mathbf {w}_3 \;\; + &{} 0 \mathbf {w}_4, \\ \displaystyle \nabla _w \phi _2 = &{} \frac{1}{\varDelta x} \mathbf {w}_1 \;\; + &{} 0 \mathbf {w}_2 \;\; + &{} \frac{6}{(\varDelta x)^2} \mathbf {w}_3 \;\; + &{} 0 \mathbf {w}_4, \\ \displaystyle \nabla _w \phi _3 = &{} 0 \mathbf {w}_1 \;\; + &{} \frac{-1}{\varDelta y} \mathbf {w}_2 \;\; + &{} 0 \mathbf {w}_3 \;\; + &{} \frac{6}{(\varDelta y)^2} \mathbf {w}_4, \\ \displaystyle \nabla _w \phi _4 = &{} 0 \mathbf {w}_1 \;\; + &{} \frac{1}{\varDelta y} \mathbf {w}_2 \;\; + &{} 0 \mathbf {w}_3 \;\; + &{} \frac{6}{(\varDelta y)^2} \mathbf {w}_4. \end{array} \right. \end{aligned}$$
(14)

These discrete weak gradients are used to approximate the classical gradient in the variational form for the Darcy flow problem.

Let \( \mathcal {E}_h \) be a quasi-uniform convex quadrilateral mesh for the given polygonal domain \( \varOmega \). Let \( \varGamma _h^D \) be the set of all edges on the Dirichlet boundary \( \varGamma ^D \) and \( \varGamma _h^N \) be the set of all edges on the Neumann boundary \( \varGamma ^N \). Let \( S_h \) be the space of discrete shape functions on \( \mathcal {E}_h \) that are degree 0 polynomials in element interiors and also degree 0 polynomials on edges. Let \( S_h^0 \) be the subspace of functions in \( S_h \) that vanish on \( \varGamma ^D_h \). For (10), we seek \( p_h = \{p_h^\circ ,p_h^\partial \} \in S_h \) such that \( p_h^\partial |_{\varGamma ^D_h} = Q_h^\partial (p_D) \) (the \( L^2 \)-projection of Dirichlet boundary data into the space of piecewise constants on \( \varGamma ^D_h \)) and

$$\begin{aligned} \mathcal {A}_h(p_h,q) = \mathcal {F}(q), \qquad \forall q=\{q^\circ ,q^\partial \} \in S_h^0, \end{aligned}$$
(15)

where

$$\begin{aligned} \displaystyle \mathcal {A}_h(p_h,q) = \sum _{E \in \mathcal {E}_h} \int _E \frac{\mathbf {K}}{\mu } \nabla _{w} p_h \cdot \nabla _{w} q, \end{aligned}$$
(16)
$$\begin{aligned} \displaystyle \mathcal {F}(q) = \sum _{E \in \mathcal {E}_h} \int _{E^\circ } s q^\circ - \sum _{\gamma \in \varGamma _h^N} \int _\gamma u_N q^\partial . \end{aligned}$$
(17)

Clearly, (15) is a large-size sparse SPD system.

After the numerical pressure \( p_h \) is solved from (15), an elementwise numerical velocity is obtained by a local \( L_2 \)-projection back into the subspace \( RT_{[0]} \):

$$\begin{aligned} \mathbf {u}_h = \mathbf {Q}_h (-\mathbf {K} \nabla _{w} p_h). \end{aligned}$$
(18)

The projection can be skipped if \( \mathbf {K} \) is an elementwise constant scalar matrix. Furthermore, the bulk normal flux on any edge is defined as

$$\begin{aligned} \int _{e \in E^\partial } \mathbf {u}_h \cdot \mathbf {n}_e. \end{aligned}$$
(19)

It has been proved [21] that such a WG solver is locally conservative and guarantees normal flux continuity.

4 Coupling WG\((Q_0,Q_0;RT_{[0]})\) and CG.\(Q_1^2\) (R.I.) for Poroelasticity

In this section, the continuous Galerkin \( Q_1^d \) (\( d=2,3 \)) elements with reduced integration and the weak Galerkin WG\((Q_0,Q_0;RT_{[0]})\) elements are combined with the implicit Euler temporal discretization to solve linear poroelasticity problems.

Assume a given domain \( \varOmega \) is already partitioned into a quasi-uniform quadrilateral mesh \( \mathcal {E}_h \). For a given time period [0, T], let

$$ 0 = t^{(0)}< t^{(1)}< \ldots< t^{(n-1)}< t^{(n)}< \ldots < t^{(N)} = T $$

be a temporal partition. We denote \( \varDelta t_n = t^{(n)} - t^{(n-1)} \) for \( n=1,2,\ldots ,N \).

Let \( \mathbf {V}_h \) and \( \mathbf {V}_h^0 \) be the spaces of vector-valued shape functions based on the first-order CG elements. Let \( \mathbf {u}_h^{(n)}, \mathbf {u}_h^{(n-1)} \in \mathbf {V}_h \) be the approximations to solid displacement at time moments \( t^{(n)} \) and \( t^{(n-1)} \), respectively.

Let \( S_h \) and \( S_h^0 \) be the spaces of scalar-valued discrete weak functions constructed in Sect. 3 based on the WG\((Q_0,Q_0;RT_{[0]})\) elements. Similarly, let \( p_h^{(n)}, p_h^{(n-1)} \in S_h \) be the approximations to fluid pressure at time moments \( t^{(n)} \) and \( t^{(n-1)} \), respectively. Note that the discrete weak trial function has two parts:

$$\begin{aligned} p_h^{(n)} = \{ p_h^{(n),\circ }, p_h^{(n),\partial } \}, \end{aligned}$$
(20)

where \( p_h^{(n),\circ } \) lives in element interiors and \( p_h^{(n),\partial } \) lives on the mesh skeleton.

Applying the implicit Euler discretization, we establish the following time-marching scheme, for any \( \mathbf {v} \in \mathbf {V}_h^0 \) and any \( q \in S_h^0 \),

$$\begin{aligned} \left\{ \begin{array}{l} 2\mu \Big ( \varepsilon (\mathbf {u}^{(n)}_h), \varepsilon (\mathbf {v}) \Big ) + \lambda (\overline{\nabla \cdot \mathbf {u}_h^{(n)}}, \overline{\nabla \cdot \mathbf {v}}) - \alpha (p_h^{(n),\circ }, \overline{\nabla \cdot \mathbf {v}}) = (\mathbf {f}^{(n)}, \mathbf {v}), \\ \displaystyle c_0 \left( p_h^{(n),\circ }, q^\circ \right) + \varDelta t_n \left( \mathbf {K} \nabla p^{(n)}_h, \nabla q \right) + \alpha (\overline{\nabla \cdot \mathbf {u}_h^{(n)}}, q^\circ ) \\ \quad \quad \displaystyle = c_0 \left( p^{(n-1),\circ }_h, q^\circ \right) + \varDelta t_n \left( s^{(n)}, q^\circ \right) + \alpha (\overline{\nabla \cdot \mathbf {u}_h^{(n-1)}}, q^\circ ), \end{array} \right. \end{aligned}$$
(21)

for \( n=1,2,\ldots ,N \), where \( \overline{\nabla \cdot \mathbf {v}} \) is the elementwise average that represents the reduced integration technique. The above two equations are further augmented with appropriate boundary and initial conditions. This results in a large monolithic system at each time step.

Theses errors are calculated to assess the accuracy of our poroelasticity solver:

  • \(L_2([0,T];L_2(\varOmega ))\)-norm for interior pressure errors

    $$\begin{aligned} \Vert p-p_h^\circ \Vert _{L_2(L_2)}^2 = {\sum _{n=1}^{N} \varDelta t_n \Vert p^{(n)} -p_h^{((n),\circ )} \Vert _{L_2(\varOmega )}^{2}}, \end{aligned}$$
    (22)
  • \(L_2([0,T];L_2(\varOmega ))\)-norm for displacement errors

    $$\begin{aligned} \Vert \mathbf {u}-\mathbf {u}_h\Vert _{L_2(L_2)}^2 = {\sum _{n=1}^{N} \varDelta t_n \Vert \mathbf {u}^{(n)} - \mathbf {u}_h^{(n)} \Vert _{L_2(\varOmega )}^{2}}, \end{aligned}$$
    (23)
  • \(L_2([0,T];H^1(\varOmega ))\)-norm for displacement errors

    $$\begin{aligned} \Vert \mathbf {u}-\mathbf {u}_h\Vert _{L_2(H^1)}^2 = {\sum _{n=1}^{N} \varDelta t_n \Vert \nabla \mathbf {u}^{(n)} - \nabla \mathbf {u}_h^{(n)} \Vert _{L_2(\varOmega )}^{2}}, \end{aligned}$$
    (24)
  • \(L_2([0,T];L_2(\varOmega ))\)-norm for stress errors

    $$\begin{aligned} \Vert \sigma -\sigma _h\Vert _{L_2(L_2)}^2 = {\sum _{n=1}^{N} \varDelta t_n \Vert \sigma ^{(n)} - \sigma _h^{(n)}\Vert _{L_2(\varOmega )}^{2}}. \end{aligned}$$
    (25)

5 Code Excerpts with Comments

This section provides some code excerpts with comments. More details can be found in our code modules for deal.II (subject to minor changes). We want to point that the elasticity discretization can also be replaced by the so-called \( EQ_1 \) or \( BR_1 \) elements [3, 16], which are now available in deal.II Version 9.1.

5.1 Code Excerpts for WG\((Q_0,Q_0;RT_{[0]})\)

There was a discussion on this in [32]. Here we recap the most important concepts very briefly. Note that FE_RaviartThomas is a Raviart-Thomas space for vector-valued functions, FESystem defines WG finite element spaces in the interiors and on edges/faces. Shown below is the code for the lowest-order WG finite elements.

figure a
figure b

5.2 Code Excerpts for CG.\( Q_1^2 \) with Reduced Integration

This part shows how we use CG.\( Q_1^2 \) with reduced integration to discretize linear elasticity. FE_Q defines the finite element space for displacement vectors. Each component of the vector is in the FE_Q space.

figure c

Here, the reduced integration technique with one-point Gaussian quadrature is used to calculate the dilation (divergence of displacement).

figure d

5.3 Code Excerpts for Coupled Discretizations for Poroelasticity

We couple CG.\(Q_1^2\)(R.I.) and WG\((Q_0,Q_0;RT_{[0]})\) to solve linear poroelasticity. FESystem defines the finite element spaces for displacement, interior pressure, and face pressure. Shown below is the coupled finite elements.

figure e
figure f

We use block structures to store matrices and variables. The following piece defines the degrees of freedom associated with displacement, interior pressure, and face pressure.

figure g

The implementation for the WG Darcy solver discussed in [32] is naturally re-used and incorporated. The following piece calculates the coupling terms with reduced integration in the local matrix. However, we only use the reduced integration for divergence of vector-valued shape functions.

figure h

Finally, this piece hands the coupling term in the local right-hand side.

figure i

6 Numerical Experiments

This section presents numerical examples to demonstrate the accuracy and robustness of this new finite element solver for poroelasticity.

Example 1

(A 2-dim smooth example for convergence rates). Here our domain is \(\varOmega = (0,1)^2 \). Analytical solutions for solid displacement and fluid pressure are given as

$$\begin{aligned} \mathbf {u} = \sin \left( \frac{\pi }{2} t \right) \left[ \begin{array}{l} \displaystyle \frac{\pi }{2} \sin ^2 \left( \pi x \right) \sin \left( 2\pi y\right) + \frac{1}{\lambda }\sin \left( \pi x\right) \sin \left( \pi y\right) \\ \displaystyle -\frac{\pi }{2} \sin \left( 2\pi x\right) \sin ^2\left( \pi y\right) + \frac{1}{\lambda }\sin \left( \pi x\right) \sin \left( \pi y\right) \end{array} \right] , \end{aligned}$$
(26)
$$\begin{aligned} \displaystyle p = \frac{\pi }{\lambda } \sin \left( \frac{\pi }{2} t\right) \sin \left( \pi (x+y)\right) . \end{aligned}$$
(27)

It is interesting to see that

$$\begin{aligned} \displaystyle \nabla \cdot \mathbf {u} = p, \end{aligned}$$
(28)

and hence \( \nabla \cdot \mathbf {u} \rightarrow 0 \) as \( \lambda \rightarrow \infty \). Dirichlet boundary conditions for both displacement and pressure are specified on the whole boundary using the exact solutions. For the parameters, we have \( \mathbf {K} = \kappa \mathbf {I} \) with \( \kappa = 1 \), \( \mu = 1 \), \( \alpha = 1 \), and \( c_0 = 0 \). To examine the solver’s locking-free property, we shall consider \( \lambda = 1 \) and \( \lambda = 10^6 \), respectively. The time period is \( [0,T] = [0,1] \).

For numerical simulations, we consider uniform rectangular meshes. Shown in Tables 1 and 2 are the numerical results obtained with this new solver. Clearly, the convergence rates do not deteriorate as \( \lambda \) increases from 1 to \( 10^6 \). In other words, our new 2-field solver is locking-free.

Table 1. Ex.1 with \( \lambda =1 \): Numerical results of CG.\(Q_1^2\)(R.I.) + WG\((Q_0,Q_0;RT_{[0]})\) solver on rectangular meshes
Table 2. Ex.1 with \( \lambda =10^6 \): Numerical results of CG.\(Q_1^2\)(R.I.) + WG\((Q_0,Q_0;RT_{[0]})\) solver on rectangular meshes
Fig. 1.
figure 1

Ex.2: Numerical results from the new FE solver at final time \( T=0.01 \) with \( h=1/32 \) and \( \varDelta t = 10^{-3} \). (a) Problem illustration; (b) Numerical pressure contours for \( x=0.5 \); (c) Numerical displacement magnitude elementwise average; (d) Numerical pressure cell averages and velocity at element centers.

Example 2

(A 3-dim example with a sandwiched low permeability layer). The domain is the unit cube \( \varOmega = (0,1)^3 \). The permeability is \( \mathbf {K} = \kappa \mathbf {I} \). Specifically, the middle region \( 0.25 \le z \le 0.75 \) has a low permeability \( \kappa = 10^{-8} \), whereas \( \kappa = 1 \) in other parts, see Fig. 1(a). There is no body force for solid or source for fluid. Other parameters are \( \lambda =1 \), \( \mu =1 \), \( \alpha =1 \), \( c_0=0 \).

The boundary conditions are as follows.

  1. (i)

    For the solid, a downward traction (Neumann) condition \( \mathbf {t}_N = (0,0,-1)^T \) is posed on the top face, whereas all five other faces are clamped, i.e., \( \mathbf {u} = \mathbf {0} \);

  2. (ii)

    For the fluid, the top face (\( z=1 \)) has a Dirichlet condition \( p=0 \); whereas all five other faces have a no-flow condition, in other words, zero Neumann boundary condition.

A similar 2-dim problem has been tested in [12, 13, 17]. But we shall observe richer features in this 3-dim problem.

For numerical simulations, we use uniform rectangular meshes and a uniform temporal partition. Specifically, \( h=\frac{1}{32} \) and \( \varDelta t = 10^{-3} \) so that \( \varDelta t \approx h^2 \). The final time is \( T=0.01 \), which means 10 time steps for simulation. Shown in Fig. 1 are the profiles of numerical pressure and velocity along with solid displacement magnitude. There is no pressure oscillation, even though there is a layer with a very low permeability. A pressure steep front is observed near \( z=0.75 \). The low permeability layer provides some kind of insulation. There is basically no solid deformation or fluid pressure change below this layer.

7 Concluding Remarks

A new finite element solver for poroelasticity is presented and proven numerically to be locking-free. This new solver is in the 2-field approach, i.e., only solid displacement and fluid pressure are treated as unknowns. Specifically, the new solver discretizes displacement using the classical Lagrangian Q-type elements with reduced integration, whereas the pressure is approximated by piecewise constants respectively defined inside elements and on inter-element boundaries. Discrete weak gradients of such piecewise constant shape functions are established in the unmapped lowest-order Raviart-Thomas spaces on quadrilaterals and hexahedra, which are required to be asymptotically parallelogram or parallelopiped. This new solver has been implemented in the dimension-independent paradigm on the deal.II platform. Our code modules are openly accessible.

The new solver in this paper is different than the one presented in [13]. Now the elasticity part is discretized using the classical Lagrangian Q-type elements with reduced integration. This results in even less degrees of freedom.

There are several directions one can go from here.

  1. (i)

    Code optimization, especially, preconditioning and parallelization, shall make this new solver more efficient;

  2. (ii)

    A rigorous analysis on this new solver is to be established for the locking-free property and convergence rates;

  3. (iii)

    A similar solver can be developed for simplicial (triangular and tetrahedral) meshes; Implementation on FEniCS or FreeFEM++ platforms are surely attractive for scientific computing tasks;

  4. (iv)

    To remove the restriction asymptotically parallelogram or parallelopiped, we could utilize the newly developed Arbogast-Correa and Abogast-Tao elements [1, 2] for more general convex quadrilaterals and cuboidal hexahedra. Again deal.II implementation will be attractive.

These are under our investigation and will be reported in our future work.