1 Introduction

The study of damage and fracture in brittle solids has numerous engineering applications, such as aerospace metal optimization, construction design and hydraulic fracturing techniques used in the oil and gas industry. Hydraulic fracturing is used to stimulate well production, both in regular and tight formations. It is a complex process that involves host rock deformation, fracture propagation, fluid flow and fluid leak-off. Solving the problem of hydraulic fracturing either analytically or numerically is still very challenging because of the nonlinear, history dependent fluid flow with moving boundary conditions and also because of the anisotropic nonlinear behavior of the host rock.

Pioneering work on hydraulic fracturing dates back from the 1950s [36, 50, 78]. Classical solutions are based on the so-called PKN and KDG models. In 1961, Perkins and Kern [68] used the theory of elasticity to solve for the fracture width w and the fluid pressure p along the fracture length l in plane strain conditions, in which the fracture height h was constant. Later, Nordgren [60] improved the model by accounting for the fluid leak-off into the surrounding rock matrix (hence the name, PKN model). By further assuming that the width of the fracture w is constant in the direction perpendicular to the fracture plane, Khristianvic and Zheltov [50] and Geertsma and De Klerk [32] independently developed another set of analytical solutions for hydraulic fracturing—the so-called KGD model. Spence and Sharp [80] extended the KGD model with self-similar relations (power law relations between the cavity volume and the injection time), and they accounted for rock toughness. In addition to the plane strain models, analytical solutions for the radial or penny-shaped fracture growth under constant fluid injection pressure was obtained by Sneddon [78] and later extended to elliptical fracture growth [36]. The penny-shaped fracture growth model was further applied to hot, dry rock [1, 2]. Note that by invoking scaling laws, Detournay [17] found that there are three competing energy dissipation mechanisms that control the process of hydraulic fracturing, depending on the value of the fracture toughness, the fluid viscosity and the leak-off term. Based on Detournay’s analyses, numerous semi-analytical solutions were developed for plane strain conditions [3, 4, 27,28,29, 38] and for penny-shaped fractures [7, 8, 72]. These solutions, based on a variety of governing laws for fluid rheology (viscosity), fluid flow in the matrix (leak-off) and rock toughness, are important tools to understand hydraulic fracture propagation regimes. As pointed out by Detournay and Peirce [18], the analytical solutions reviewed above were all obtained with ad hoc assumptions and did not properly account for the boundary conditions at the tip and near the tip. To address these limitations, a number of studies were carried out to find analytical solutions for the singularity of the tip and to predict the limiting propagation regimes, such as the toughness dominated regime (index k), the leak-off dominated regime (index \({{\tilde{m}}}\)), and the viscous dominated regime (index m). The \(m-\)vertex solution was explained by Desroches et al. [16] for the zero-toughness and impermeable case, the \({{\tilde{m}}}\)-vertex solution was presented by Lenoach [53] for the zero-toughness and leak-off dominated case, and the k-vertex solution was obtained from Linear Elastic Fracture Mechanics (LEFM) asymptotes. In the general case, fracture propagation may evolve within the parametric space of the three limiting cases. Recently, Garagash et al. [30] and Dontsov and Peirce [20] obtained the universal tip asymptotic solution that can be used for any location in the parametric space.

Analytical solutions were used for industry applications at the inception of hydraulic fracturing. However, the overly constraining assumptions limit their application. So-called pseudo-3D (P3D) models were the first numerical simulators developed to relax those constraints. Numerical P3D models are still based on the assumption that a vertical plane fracture propagates in a homogeneous rock formation, but fracture height growth is accounted for. In lumped P3D models, fractures are assumed to be ellipsoids [55]. In cell-based P3D models, fractures are regarded as connected rectangular elements [61, 74]. The latest P3D models include the stacked height [11] and the enhanced [19] models. The planar 3D numerical models (PL3D) were proposed to account for the variation of elasticity, toughness and confining pressure across formation layers [5, 67, 75, 84], which relaxes analytical constraints even further. Either the adaptive mesh method or the structured mesh enhanced with level set method is used to obtain the dynamic planar fracture footprint. The two-dimensional fluid flow as well as the elastic equilibrium are considered. The PL3D model significantly increases the accuracy of the hydraulic fracturing model, but also increases dramatically its computational cost.

In the past years, research on hydraulic fracturing modeling focused on three major objectives. The first one is to reduce the computational cost while maintaining solution accuracy in P3D and PL3D models, by incorporating the tip asymptotic solutions [21, 22, 66] into the simulation code. The second is to relax the constraints of the P3D and PL3D models, by considering non-planar fracture geometries [9, 37], by simulating the simultaneous propagation of multiple hydraulic fractures [21, 83] and by incorporating the interaction with natural fractures [46, 48, 51]. To meet these two first objectives, the force equilibrium in elastic formation, the mass balance equation for the fluid with leak-off and the propagation of fracture tip are accounted for. However, the process of fluid flow within the porous matrix, as well as the nonlinear rock deformation and the cohesive fracture propagation are ignored. The third objective is thus to incorporate these physical processes by employing advanced numerical methods, such as interface elements [10], the eXtended Finite Element Method (XFEM) [24] and the phase field method [56].

The XFEM allows simulating fracture propagation in arbitrary directions explicitly, without remeshing. The XFEM was used extensively in the last decade to simulate hydraulic fracturing. For instance, considering an impermeable matrix, Gordeliy and Peirce [33,34,35] investigated the enrichment strategy, the coupling scheme, and the convergence of the XFEM hydraulic fracturing models. Dontsov and Peirce [21] later enriched the fracture tip with a universal tip asymptotic solution to account for all possible cases in the toughness/viscosity/leak-off dominated regimes. Considering a fully saturated matrix, De Borst et al. [15] pioneered the formulation of XFEM models for stationary fractures. Afterward, fracture propagation in saturated porous media was simulated using XFEM-cohesive segments [49, 57, 59, 69], in which different enrichment functions were adopted to represent the pore pressure distribution across the fracture. This idea was further extended to model the propagation of multiple fluid-driven fractures [83] and to model the intersection with natural fractures [47]. Considering a partially unsaturated matrix, Salimzadeh and Khalili [71] employed the XFEM to model hydraulic fracturing in a three-phase system.

The numerical methods reviewed above for modeling hydraulic fracturing have addressed a wide range of challenges and have significant value; however, some assumptions on host rock deformation and fracture propagation are overly simplified. As explained in [12, 14, 45, 77, 85], quasi-brittle materials fail following two stages: diffused damage inception followed by extensive damage localization leading to macro-fracture propagation. The singularity at the fracture tip from LEFM does not exist physically, and the cohesive segment concept by which the diffuse damage process zone is condensed into a surface or line was never assessed for its accurate representation of fracture propagation. In addition, most of reservoir sedimentary host rocks (e.g., shale) behave anisotropically [54, 73]. The propagation direction of fluid-driven fractures remains as a puzzle when material anisotropy and stress anisotropy compete.

In this paper, we thus propose a numerical scheme to predict multi-scale hydraulic fracture propagation in transversely isotropic porous materials based on the XFEM. To capture the two-stage fracture propagation process, we couple a nonlocal damage model with a cohesive zone method, following the methods previously presented by the authors [42]. We first present the strong and weak forms of the governing equations of the problem of hydraulic fracturing in saturated porous media, in Sect. 2. We detail the momentum balance equations for the solid and fluid phases as well as the mass balance equations for the fluid phase inside the solid skeleton and inside the fracture. Constitutive equations include a nonlocal anisotropic damage model (for the deformation and damage of the porous matrix), the Park–Paulino–Roesler (PPR) cohesive model (for fracture propagation), Darcy’s law (for fluid flow in the solid matrix) and the cubic law (for fluid flow within the fractures). In Sect. 3, we present the XFEM used for space discretization and the finite difference method used for time discretization. A Newton–Raphson iterative scheme is employed to solve the global nonlinear system of equations. In Sect. 4, we first validate the formulation and implementation of the computational model by simulating the Khristianovic–Geertsma–de Klerk (KGD) problem; we then conduct parametric studies in plane strain conditions to understand the mechanisms that control fracture path formation in the presence of both material and stress anisotropy.

2 Coupled hydro-mechanical governing equations for saturated porous media with intrinsic transverse isotropy

2.1 Strong formulation

Hydraulic fracturing in porous media is a complex problem, which involves coupled physical processes that happen simultaneously, mainly micro-crack propagation and coalescence in the solid porous matrix; fluid flow through the porous medium; fluid flow within the macro-fracture; fluid exchange between the porous matrix and the fracture. Correspondingly, the governing equations required to model these processes shall include: momentum balance equations and constitutive laws for predicting the deformation field, micro-crack development in the solid matrix and the propagation of macro-fractures; fluid mass balance equation and fluid transport constitutive equation, both in the solid matrix and in the macro-fracture.

We start with the classical Biot theory [6] to describe the mechanical behavior of elastic porous media saturated with a single-phase fluid. Following Dormieux’s approach [23], we consider that the development of micro-cracks (damage) will have a direct influence on elasticity parameters and on porosity. For the sake of simplicity, we assume that damage development (i.e., the initiation and propagation of micro-cracks) does not generate inelastic deformation, i.e., damage only affects the stiffness tensor. Porosity and permeability are affected indirectly by damage, through the expression of Biot’s effective stress. Consequently, the potential energy density of a Representative Elementary Volume (REV) of transversely isotropic porous material can be expressed as:

$$\begin{aligned} H_s(\varvec{\epsilon },p,\varvec{\omega }) = \frac{1}{2}\varvec{\epsilon }:{\mathbb {C}}(\varvec{\omega }): \varvec{\epsilon } - \frac{p^2}{2N}-p\varvec{\alpha }:\varvec{\epsilon } \end{aligned}$$
(1)

where \(H_s\) is also called Helmholtz free energy, \(\varvec{\epsilon }\) is the strain tensor, p is the fluid pressure, \(\varvec{\omega }\) stands for the damage variable, \({\mathbb {C}}\) is the elastoplastic stiffness tensor and \(\alpha _{ij}=-\partial ^2H_s/\partial \epsilon _{ij}\partial p\) is Biot’s coefficient tensor. \(\varvec{\alpha }\) linearly relates the porosity change to the strain variation when pressure is held constant (\(p=0\)). Due to Maxwell’s symmetry [13], \(\varvec{\alpha }\) also linearly relates the stress increment to the pressure increment when strain is held constant (\(\varvec{\epsilon }=0\)). \(1/N=-\partial ^2H_s/\partial p^2\) is the inverse of Biot’s skeleton modulus, linking pressure variation dp with the porosity variation when strain is held constant (\(\varvec{\epsilon }=0\)). According to the thermodynamic conjugation relationships, the Biot’s effective stress tensor \(\varvec{\sigma }\) and the porosity \(\phi\) can be expressed in following state equations:

$$\begin{aligned} \begin{aligned} \varvec{\sigma }&=\frac{\partial H_s}{\partial \varvec{\epsilon }} = {\mathbb {C}}(\varvec{\omega }): \varvec{\epsilon } -\varvec{\alpha }p \\ \phi - \phi _0&= - \frac{\partial H_s}{\partial p} = \varvec{\alpha }:\varvec{\epsilon } + \frac{ p}{N} \\ \end{aligned} \end{aligned}$$
(2)

where \(\phi _0\) is the initial porosity.

2.1.1 Mixture governing equations

Under quasi-static conditions, the momentum balance equation of the REV (made of the mixture solid + fluid) is:

$$\begin{aligned} \nabla \cdot \varvec{\sigma } + \rho \varvec{g}= 0. \end{aligned}$$
(3)

where \(\rho\) is the average mass density of the mixture, defined as \(\rho = (1-\phi )\rho _s+\phi \rho _{\text {f}}\), in which \(\rho _s\) (respectively \(\rho _{\text {f}}\)) stands for the mass density of the solid phase (respectively, density of the fluid phase). \(\varvec{g}\) is the body force vector. Substituting the state Eq. 2 into Eq. 3, we get the strong form of the governing equation for the mixture, as follows:

$$\begin{aligned} \nabla \cdot \left[ {\mathbb {C}}(\varvec{\omega }): \varvec{\epsilon } - \varvec{\alpha }p \right] + \rho \varvec{g} = 0 \end{aligned}$$
(4)

2.1.2 Fluid governing equations in the saturated porous matrix

Fluid flow inside the porous matrix is fundamentally governed by the fluid mass balance equation, which expresses that the mass change within the considered REV should be equal to the difference between the fluid mass flowing out the REV and the fluid mass flowing in the REV, as follows:

$$\begin{aligned} \nabla \cdot (\rho _{\text {f}} \varvec{v} )+ \frac{\partial m_{\text {f}}}{\partial t}=0 \end{aligned}$$
(5)

where \(\varvec{v}\) is the velocity vector of the fluid. \(\rho _{\text {f}}\) and \(m_{\text {f}}\) represent the mass density and the mass of the fluid, respectively. Since the porous medium is saturated with the fluid, we have: \(m_{\text {f}} = \rho _{\text {f}} \phi\), where \(\phi\) is the porosity. According to the state equation of the fluid, the mass density of the fluid is related to the pore pressure through the following equation:

$$\begin{aligned} \frac{{\text{ d }} \rho _{\text {f}}}{\rho _{\text {f}}} = \frac{{\text{ d }} p}{K_{\text {f}}} \end{aligned}$$
(6)

where \(K_{\text {f}}\) is the bulk modulus of the fluid. We assume that fluid flow inside the porous matrix is laminar and that it is governed by Darcy’s seepage equation as:

$$\begin{aligned} \varvec{v} = - \frac{\varvec{k}_{\rm m} }{\mu }( \nabla p - \rho _{\text {f}} \varvec{g}) \end{aligned}$$
(7)

where \(\mu\) is the dynamic viscosity of the fluid, \(\varvec{k}_{\rm m}\) is the intrinsic anisotropic permeability tensor of the solid skeleton. For simplicity, we assume that permeability remains constant in this paper. Note that future developments are necessary to account for the dependence of permeability to the geometry and connectivity of pores and cracks within the solid skeleton. By substituting the state equations (Eqs. 2, 6), the Darcy’s law (Eq. 7) into Eq. 5, we get the governing equation for the fluid flow through the permeable porous medium surrounding the fracture, as follows:

$$\begin{aligned} \varvec{\alpha }: \frac{\partial \varvec{\epsilon }}{\partial t} + \frac{1}{M} \frac{\partial p}{\partial t} = \nabla \cdot \frac{\varvec{k}_{\rm m}}{\mu } ( \nabla p - \rho _{\text {f}} \varvec{g}), \end{aligned}$$
(8)

where it is assumed that the spatial variability of the fluid mass density is negligible (i.e., \(\nabla \rho _{\text {f}}\ne 0\)). M is the so-called Biot’s modulus, defined by

$$\begin{aligned} \frac{1}{M}=\frac{1}{N}+\frac{\phi }{K_{\text {f}}}. \end{aligned}$$
(9)

2.1.3 Fluid governing equations along the fracture

Different from the fluid flow inside the porous matrix, the mass balance equation that governs the fluid flow inside the fracture involves a direction-dependent hydraulic conductivity. Consider a plane strain REV such that a face of the REV is a unit fracture surface, as sketched in Fig. 1. The local fracture width is noted w (perpendicular to fracture faces). The fluid mass change per unit of time within the REV is equal to the variation of flow rate in the direction of the fracture plane, plus the variation of flow rate in the direction perpendicular to the fracture surfaces. The mass balance equation is thus expressed as:

$$\begin{aligned} \nabla _s\cdot \left[ \rho _{\text {f}} \varvec{q} (\varvec{ s} ) \right] + [\![ \rho _{\text {f}} \varvec{v}( \varvec{ s}) ]\!] \cdot \varvec{n}_{\varGamma _d} + \frac{\partial }{\partial t} (\rho _{\text {f}} w ) =0. \end{aligned}$$
(10)

where \(\nabla _s\) represents the gradient in the tangent direction of the local fracture surface, in which \(\varvec{s}\) denotes the natural coordinate of the fracture. \(\varvec{q}\) is the flow rate inside the fracture. Accordingly, the first term represents the change of fluid mass due to a flow rate variation within the fracture. The velocity \(\varvec{v}\) is related to the flow in the matrix and can be discontinuous at the two fracture surfaces: \(\varvec{v}^+\ne \varvec{v}^-\). We note \([\![ \varvec{v}( \varvec{ s}) ]\!]\) the velocity jump across the fracture. After multiplying by the normal direction of the fracture surfaces \(\varvec{n}_{\varGamma _d}\) and the fluid density \(\rho _{\text {f}}\), the second term represents the amount of fluid exchanged between the matrix and the fracture.

Fig. 1
figure 1

Sketch of a unit plane strain REV for fluid flow along the fracture. \(\varvec{s}\) is the natural coordinate along fracture surface, \(\varvec{q}(\varvec{s})\) is the flow rate across the fracture width w at \(\varvec{s}\), \(\varvec{v}\) is the fluid velocity inside matrix and \(\varvec{n}_{\varGamma _d}\) is the unit normal direction of the fracture

The flow rate \(\varvec{q}\) is typically computed by the integral of the velocity over the thickness of the fracture. It can vary with the location s of the point on the fracture surface, and it is related to the pressure gradient in the fracture surface by the following law:

$$\begin{aligned} \varvec{q} (\varvec{s} )= & {} - c (\varvec{s}) ( \nabla _s p (\varvec{ s}) - \rho _{\text {f}} \varvec{g}) \\= & {} - \frac{w^3(\varvec{ s})}{12\mu } ( \nabla _s p (\varvec{ s}) - \rho _{\text {f}} \varvec{g}) \end{aligned}$$
(11)

where \(c (\varvec{ s})\) is the hydraulic conductivity of the fracture at the natural coordinate \(\varvec{ s}\). Here, we use Poiseuille fluid flow equation and accordingly, we calculate \(c (\varvec{ s})\) from the cubic law.

By substituting the constitutive law (Eq. 11) and the state equation (Eq. 6) into Eq. 10, we get the governing equation for the fluid flow within the fracture, as follows:

$$\begin{aligned}&[\![ \varvec{v}( \varvec{ s}) ]\!] \cdot \varvec{n}_{\varGamma _d} + \frac{\partial w (\varvec{ s} )}{\partial t} + \frac{w (\varvec{ s} ) }{K_{\text {f}}} \frac{\partial p(\varvec{s})}{\partial t} \nonumber \\&\quad = \nabla _s \cdot \left[ \frac{w^3(\varvec{ s})}{12\mu } ( \nabla _s p (\varvec{ s}) -\rho _{\text {f}} \varvec{g} )\right] . \end{aligned}$$
(12)

Since \(\varvec{\epsilon }\) and w can be both expressed in terms of the displacement field in the solid skeleton and of the fluid pressure, the unknowns in Eqs. 48, and 12 can all be related to \(\varvec{u}\) and p. Thus, these governing equations are usually referred to as the \(\varvec{u} - p\) formulation.

2.2 Weak formulation

In order to obtain the weak formulation of the problem from its strong formulation, it is necessary to define the essential and natural boundary conditions at the exterior and interior boundaries of the domain. In this chapter, we focus on two-dimensional problems, as described in Fig. 2. The domain \(\varOmega\) with exterior boundary \(\varGamma\) has a discontinuity \(\varGamma _d\), which is treated as an interior boundary and may evolve due to fluid pressurization. The two surfaces of the discontinuity \(\varGamma _d\) are noted \(\varGamma _d^+\) and \(\varGamma _d^-\). We note \(\varvec{n}_{\varGamma _d}\) the unit normal vector on the fracture surface, pointing toward \(\varOmega ^+\), i.e., \((\varvec{n}_{\varGamma _d}=\varvec{n}_{\varGamma _d^-}=-\varvec{n}_{\varGamma _d^+})\).

Fig. 2
figure 2

Boundary conditions on a domain \(\varOmega\) that contains a discontinuity \(\varGamma _d\). \(\varOmega\) is subjected to boundary conditions, as follows: \(\varGamma _u\) (respectively, \(\varGamma _p\)) is subjected to displacement \(\varvec{\bar{u}}\) (respectively, pore pressure \({\bar{p}}\)); and \(\varGamma _t\) (respectively, \(\varGamma _q\)) is subjected to traction \(\bar{\varvec{t}}\) (respectively, fluid flux \({\bar{q}}\)). \(\varGamma _u \cup \varGamma _t = \varGamma\) and \(\varGamma _u \cap \varGamma _t = \emptyset\) hold for the solid phase, \(\varGamma _p \cup \varGamma _q = \varGamma\) and \(\varGamma _p \cap \varGamma _q = \emptyset\) hold for the fluid phase. The discontinuity \(\varGamma _d\) is treated as an interior boundary with a positive surface \({\varGamma _d^+}\) and a negative surface \({\varGamma _d^-}\), subjected to cohesive traction \(\varvec{t}_d^+\) and \(\varvec{t}_d^-\), respectively. Unit normal vectors are noted \(\varvec{n}_{\varGamma _d^+}\) and \(\varvec{n}_{\varGamma _d^-}\) for the positive and negative fracture surface, respectively. Note that the level set function \(\phi\) is defined so as that it is positive on the side of the domain that contains \({\varGamma _d^+}\), and negative on the side of the domain that contains \({\varGamma _d^-}\)

As shown in Fig. 2, the essential boundary conditions (respectively, natural boundary conditions) are imposed on the external boundary of the domain by the prescribing the primary variables \(\varvec{\bar{u}}\) and \(\bar{p}\) (respectively, the secondary variables, traction \(\varvec{\bar{t}}\) and fluid outflow rate \({{\bar{q}}}\)), as follows:

$$\begin{aligned} \begin{aligned}&\varvec{u} = \bar{\varvec{u}} \quad \text {on} \quad \varGamma _u \\&p = \bar{p} \quad \text {on}\quad \varGamma _p \\ \end{aligned} \end{aligned}$$
(13)

and

$$\begin{aligned} \begin{aligned}&\varvec{\sigma }\cdot \varvec{n}_\varGamma = \varvec{\bar{t}} \quad \text {on} \quad \varGamma _t \\&\varvec{v} \cdot \varvec{n}_\varGamma = {{\bar{q}}} \quad \text {on}\quad \varGamma _q \\ \end{aligned} \end{aligned}$$
(14)

where \(\varvec{n}_\varGamma\) is the unit outward normal vector to the external boundary \(\varGamma\). Note: \(\varGamma _u \cup \varGamma _t = \varGamma\) and \(\varGamma _u \cap \varGamma _t = \emptyset\) hold for the solid phase, and \(\varGamma _p \cup \varGamma _q = \varGamma\) and \(\varGamma _p \cap \varGamma _q = \emptyset\) hold for the fluid phase.

From a physics perspective, the existence of the fracture \(\varGamma _d\) in the domain \(\varOmega\) leads to a hydro-mechanical coupling between the fracture and the bounding matrix. Fluid flow along the fracture exerts pressure on the two fracture surfaces and pushes them apart, while the two surfaces transmit cohesive traction. Reversely, pressure gradients drive fluid flow into/out of the bounding matrix surrounding the fracture. Thus, the essential and natural boundary conditions at the interior boundary \(\varGamma _d\) are expressed as

$$\begin{aligned} \begin{aligned}&\varvec{\sigma }\cdot \varvec{n}_{\varGamma _d} = \varvec{t}_d - p \varvec{n}_{\varGamma _d} \quad \text {on} \quad \varGamma _d \\&( \varvec{v}^+ - \varvec{v}^-) \cdot \varvec{n}_{\varGamma _d} = [\![ \varvec{v} ]\!] \cdot \varvec{n}_{\varGamma _d} =q_d \quad \text {on} \quad \varGamma _d \\ \end{aligned} \end{aligned}$$
(15)

where \(\varvec{t}_d\) is the cohesive traction which governs the mechanical behavior of the macro-fracture once the fracture is initiated. In this paper, we employ the potential-based PPR [65] cohesive model detailed in Sect. 2.4. Moreover, \(q_d\) represents the fluid flow into the matrix, i.e., leak-off in the fracture flow model.

For the hydraulic fracturing problem, an additional boundary conditions needs to be specified at the fracture tip and at the fracture mouth (i.e., at the intersection point between the domain surface \(\varGamma\) and the fracture \(\varGamma _d\)). In typical field operations, a fluid injection rate \(Q_{\text {in}}\) is applied at the fracture mouth \((\varvec{s} = \varvec{0})\) and a zero flux is applied at the fracture tip \((\varvec{s} = \varvec{s}_{\text {max}})\):

$$\begin{aligned} \varvec{q} |_{\varvec{s} = \varvec{0}} = Q_{\text {in}} , \quad \varvec{q} |_{\varvec{s} = \varvec{s}_{\text {max}}} = 0, \quad \text {on} \quad \partial \varGamma _d \end{aligned}$$
(16)

We first obtain the weak form of the mixture governing equation by multiplying Eq. 4 with a virtual displacement \(\delta \varvec{u}\) and by integrating over the whole domain \(\varOmega\). After applying the divergence theorem and the boundary conditions, we have:

$$\begin{aligned} \begin{aligned}&\int _\varOmega \nabla ^s \delta \varvec{u}: {\mathbb {C}}(\varvec{\omega }) : \nabla ^s \varvec{u} d \varOmega - \int _\varOmega \nabla ^s \delta \varvec{u} : \varvec{\alpha }p d \varOmega \\&\quad + \int _{\varGamma _d} \delta [\![ \varvec{u} ]\!] \cdot ( \varvec{t}_d - p \varvec{n}_{\varGamma _d} ) d \varGamma = \int _{\varGamma _t} \delta \varvec{u} \cdot \bar{\varvec{t}} d \varGamma \\&\quad+ \int _{\varOmega } \rho \delta \varvec{u} \cdot \varvec{g} d \varOmega \end{aligned} \end{aligned}$$
(17)

where the kinematic strain-displacement relation \(\nabla ^s \varvec{u} = \varvec{\epsilon }\) is used. We use \(\nabla ^s\) to denote the symmetric part of the gradient operator. Note that Ritz method is adopted, in which the interpolation functions (shape functions) used to approximate the displacement field also serve as weight functions to calculate the weighted integral residuals. In order to ensure that the above equation holds for all admissible solutions of displacement, the virtual displacement must satisfy the essential boundary condition \(\delta \varvec{u}|_ {\varGamma _u} = 0\). It is worth noting that the mechanical coupling term comes from the boundary condition along the fracture surfaces \(\varGamma _d\), derived as follows:

$$\begin{aligned} \begin{aligned}&- \int _{\varGamma _d^+} \delta \varvec{u} \cdot ( \varvec{\sigma }\cdot \varvec{n}_{\varGamma _d^+} ) {\text{ d }} \varGamma - \int _{\varGamma _d^-} \delta \varvec{u} \cdot ( \varvec{\sigma }\cdot \varvec{n}_{\varGamma _d^-} ) {\text{ d }} \varGamma \\&\quad = \int _{\varGamma _d} (\delta \varvec{u}^+ - \delta \varvec{u}^-) \cdot ( \varvec{\sigma }\cdot \varvec{n}_{\varGamma _d} ) {\text{ d }} \varGamma \\&\quad = \int _{\varGamma _d} \delta [\![ \varvec{u} ]\!] \cdot (\varvec{t}_d - p \varvec{n}_{\varGamma _d} ) {\text{ d }} \varGamma \end{aligned} \end{aligned}$$
(18)

We recall that \((\varvec{n}_{\varGamma _d}=\varvec{n}_{\varGamma _d^-}=-\varvec{n}_{\varGamma _d^+})\).

Similarly, we can obtain the weak form of the governing equation of the fluid flowing in the matrix (Eq. 8), as follows:

$$\begin{aligned} \begin{aligned}&\int _\varOmega \delta p \frac{1}{M} \frac{\partial p}{\partial t} {\text{ d }}\varOmega + \int _\varOmega \delta p \varvec{\alpha } : \nabla ^s \frac{\partial \varvec{u}}{\partial t} {\text{ d }}\varOmega \\&\quad+ \int _\varOmega \nabla \delta {p} \cdot \left( \frac{\varvec{k}_{\rm m}}{\mu } \nabla p \right) {\text{ d }}\varOmega \\&\quad - \int _{\varGamma _d} \delta {p} { q_d } {\text{ d }} \varGamma = - \int _{\varGamma _q} \delta {p} \bar{q} {\text{ d }} \varGamma + \int _\varOmega \frac{ \rho _{\text {f}} \varvec{k}_{\rm m}}{\mu } \nabla \delta p \cdot \varvec{g} {\text{ d }}\varOmega \end{aligned} \end{aligned}$$
(19)

Note that \(\delta p\) is the virtual pressure that satisfies \(\delta p |_{\varGamma _p} = 0\). The boundary condition \(\frac{\varvec{k}_{\rm m}}{\mu }( - \nabla p + \rho _{\text {f}} \varvec{g} ) \cdot \varvec{n}_{\varGamma } = \varvec{v} \cdot \varvec{n}_{\varGamma }= {{\bar{q}}}\) is used for the exterior boundary \(\varGamma _q\). Note that the hydraulic coupling term in the above formula results from the interior boundary conditions at the fracture surfaces, in virtue of the following equation:

$$\begin{aligned} \begin{aligned}&\int _{\varGamma _d^+} \delta p ( \varvec{v} \cdot \varvec{n}_{\varGamma _d^+} ) {\text{ d }} \varGamma + \int _{\varGamma _d^-} \delta p ( \varvec{v} \cdot \varvec{n}_{\varGamma _d^-} ) {\text{ d }} \varGamma \\&\quad =- \int _{\varGamma _d} \delta p ( \varvec{v}^+ - \varvec{v}^-) \cdot \varvec{n}_{\varGamma _d} {\text{ d }} \varGamma \\&\quad = -\int_{\varGamma _d} \delta p q_d {\text{ d }} \varGamma \end{aligned} \end{aligned}$$
(20)

The above equation states that the velocity of the fluid normal to the fracture is discontinuous, which indicates, according to Darcy’s law, that the gradient of fluid pressure along the normal to the fracture surface is discontinuous. At the same time, the fluid pressure field as well as the virtual pressure should be continuous across the fracture so that Darcy’s law can be applied. Thus, we use the same virtual pressure \(\delta p\) as in Eq. 19 to multiply the governing equation of the fluid flowing in the fracture (Eq. 12), and we integrate it over the fracture domain \(\varGamma _d\) to obtain the following weak form:

$$\begin{aligned} \begin{aligned} \int _{\varGamma _d} \delta {p} [\![ \varvec{v} ]\!] \cdot \varvec{n}_{\varGamma _d} {\text{ d }} \varGamma&= \int _{\varGamma _d} \delta {p} {q_d } {\text{ d }} \varGamma \\&= - \int _{\varGamma _d} \delta p \frac{\partial w }{\partial t} {\text{ d }}\varGamma - \int _{\varGamma _d} \delta p \frac{w }{K_{\text {f}}} \frac{\partial p}{\partial t} {\text{ d }}\varGamma \\&\quad - \int _{\varGamma _d} \nabla _{m} \delta {p} \cdot \left[ \frac{w^3}{12\mu } \nabla _{m} p \right] {\text{ d }}\varGamma \\&\quad + \delta p Q_{\text {in}} | _{\varvec{s} = \varvec{0}} \end{aligned} \end{aligned}$$
(21)

where \(\nabla _{m}\) denotes the one-dimensional gradient along the fracture tangent direction (\(\varvec{m}_{\varGamma _d}\), as shown in Fig. 2). The width of the fracture is computed through the following relationship:

$$\begin{aligned} w = ( \varvec{u}^+ - \varvec{u}^-) \cdot \varvec{n}_{\varGamma _d} = [\![ \varvec{u} ]\!] \cdot \varvec{n}_{\varGamma _d}. \end{aligned}$$
(22)

The weak form of governing equation for the fluid flow inside the fracture can be directly injected into the weak form of the governing equation for the fluid flowing in the matrix (Eq. 19), since the same virtual field \(\delta p\) is used.

2.3 Nonlocal continuum damage model for transversely isotropic materials

As explained by Roth et al. [70], Wang and Waisman [85] and Leclerc et al. [52], the mechanical failure of quasi-brittle materials occurs in two phases: the process starts with diffused material degradation due to microscopic defects inception and evolution and continues with localized macroscopic fracture propagation. The first phase can be modeled with continuum damage mechanics. Nonlocal enhancement is needed to capture softening. The evolution of damage can then be used to predict the initiation of a localized macroscopic fracture in the second phase.

In the following, we briefly introduce the nonlocal damage model for transversely isotropic materials, proposed by the authors in [40, 41] and used to govern matrix behavior in this paper. Note that we focus on plane strain conditions with tensile damage development. The model is built on the principle of strain equivalence, which states that the deformation of the damaged material under the actual stress \(\varvec{\sigma }\) is the same as that of the non-damaged material under the so-called effective stress, \(\varvec{\hat{\sigma }}\), defined as:

$$\begin{aligned} \hat{ \varvec{\sigma } }= {\mathbb {M}}: \varvec{ \sigma } \end{aligned}$$
(23)

where \({\mathbb {M}}\) is a fourth-order damage operator (second-order with Voigt notation \({\mathcal {M}}\)). Assuming that damage components in each direction evolve independently, the damage operator \({\mathcal {M}}\) has a diagonal form, as follows:

$$\begin{aligned} {\mathcal {M}}_{ii}=\frac{1}{1-\omega _i} \quad i=1,2,3,4 \end{aligned}$$
(24)

where \(\omega _i\) are the components of damage variable \(\varvec{\omega }\) ( in Eq. 1). Note that Voigt notations are adopted here, so that \({\hat{\sigma }}_4={\hat{\tau }}_{12}=\frac{\tau _{12}}{1-\omega _4}\), in which \(\omega _4=1-(1-\omega _{1})(1-\omega _{2})\). The diagonal form of \({\mathcal {M}}\) ensures that the damaged compliance matrix resulting from Eq. 23 is symmetric. We consider transversely isotropic materials, in which the local coordinate system is oriented so that direction 1, called the axial direction, is perpendicular to the bedding plane. Directions 2 and 3, along the bedding plane, are called transverse directions. Correspondingly, in Eq. 24, \(\omega _1\) is called axial damage and \(\omega _2\) and \(\omega _3\) are the transverse damage variables. Damage components are directly related to equivalent strains, as explained below. We focus on plane strain conditions, in which the equivalent strain in the out-of-plane direction is zero, which implies that the damage component \(\omega _3\) is zero.

We focus on quasi-brittle materials, in which the nonlinear stress/strain relation results from damage evolution only (micro-crack development), with negligible inelastic deformation. Adopting the principle of strain equivalence, the constitutive relation is expressed as

$$\begin{aligned} \varvec{\epsilon }= {\mathbb {S}}^0 :\mathbb {M} : \varvec{ \sigma }. \end{aligned}$$
(25)

where \({\mathbb {S}}^0\) is the material elastic compliance matrix, which depends on 5 independent parameters for transversely isotropic materials, and they are Young’s modulus in axial and transverse direction \((E_{1}/E_2\)), shear modulus \(G_{12}\), Poisson’s ratio in the bedding plane \(\nu _{23}\) and in the plane perpendicular to the bedding plane \((\nu _{12})\). In plane strain conditions, the damaged stiffness tensor \({\mathbb {C}}(\varvec{\omega }) = ({\mathbb {S}}^0\,:\,{\mathbb {M}})^{-1}\) can be explicitly expressed by using Voigt notation, as follows:

$$\begin{aligned} {\mathcal {C}} = \left( \begin{array}{cccc} {{\mathcal {C}}}_{11} &{}\quad {\mathcal {C}}_{12} &{}\quad {\mathcal {C}}_{13} &{}\quad 0\\ {\mathcal {C}}_{21} &{}\quad {\mathcal {C}}_{22} &{}\quad {\mathcal {C}}_{23} &{}\quad 0\\ {\mathcal {C}}_{31} &{} \quad {\mathcal {C}}_{32} &{}\quad {\mathcal {C}}_{33} &{}\quad 0\\ 0 &{} \quad 0 &{} 0\quad &{}\quad {\mathcal {C}}_{44} \\ \end{array} \right) \end{aligned}$$
(26)

in which

$$\begin{aligned} \begin{aligned}&{\mathcal {C}}_{11} = E_1 (1-\omega _1)\Big ( (1-\omega _2)\nu _{23}^2-1 \Big )/D \\&{\mathcal {C}}_{22} = E_2 (1-\omega _2)\Big ( (1-\omega _1)\nu _{12}\nu _{21}-1 \Big )/D\\&{\mathcal {C}}_{33} = E_2(1-\omega _1)(1-\omega _2)(\nu _{21}\nu _{12}-1)/D \\&{\mathcal {C}}_{44} = G_{12}(1-\omega _1)(1-\omega _2) \\&{\mathcal {C}}_{12} =-{E_1}\nu _{21} (1-\omega _1)(1-\omega _2)(1+\nu _{23})/D \\&{\mathcal {C}}_{21} =-{E_2}\nu _{12} (1-\omega _1)(1-\omega _2)(1+\nu _{23})/D \\&{\mathcal {C}}_{13} = -{E_1}\nu _{21} (1-\omega _1)\Big (1+(1-\omega _2)\nu _{23}\Big )/D \\&{\mathcal {C}}_{31} = -{E_2}\nu _{12} (1-\omega _1)\Big (1+(1-\omega _2)\nu _{23}\Big ) /D \\&{\mathcal {C}}_{32} =C_{23} =-{E_2}(1-\omega _2)\Big (\nu _{23} +(1-\omega _1)\nu _{12}\nu _{21}\Big )/D \\ \end{aligned} \end{aligned}$$
(27)

where \({E_2}\nu _{12} = {E_1}\nu _{21}\), and \(D= (1-\omega _2)\nu _{23}^2 + 2(1-\omega _1)(1-\omega _2)\nu _{12}\nu _{21}\nu _{23}+(1-\omega _1)(2-\omega _2)\nu _{12}\nu _{21}-1.\)

Fig. 3
figure 3

The two primary failure modes in transversely isotropic materials

In order to distinguish damage development in axial and transverse directions, two loading surfaces \(g_{1}/g_2\) are defined as:

$$\begin{aligned} \begin{aligned} g_{1}(\varvec{\epsilon }, \kappa _1) = \epsilon _{1}^{\rm eq} - \kappa _1, \quad g_{2}(\varvec{\epsilon }, \kappa _2) = \epsilon _{2}^{\rm eq} - \kappa _2 \\ \end{aligned} \end{aligned}$$
(28)

where the equivalent strains \(\epsilon _1^{\rm eq}/\epsilon _2^{\rm eq}\) are scalar measures of strain defined in the axial and transverse directions. \(\kappa _1\) and \(\kappa _2\) are the internal state variables that control the evolution of damage: they represent the equivalent strain thresholds before the initiation of damage in directions 1 and 2, respectively. After damage initiation, \(\kappa _1\) and \(\kappa _2\) are the largest equivalent strains ever reached during the past loading history of the material.

Field investigation and laboratory experiments [26, 81] indicate that there are two primary failure modes in transversely isotropic rock (Fig. 3): the sliding mode, in which failure is controlled by the tensile and shear strength of the bedding planes, and the non-sliding mode, in which failure is controlled by the strength of the matrix material. Correspondingly, the two equivalent strains in two loading surfaces (Eq. 28) for direction-dependent transverse isotropic materials under plane strain condition are defined as:

$$\begin{aligned} \epsilon _{1}^{\rm eq}= & {} \sqrt{ (\epsilon _{11})^2 + (\epsilon _{12})^2 \left( \frac{\epsilon _{11}^{t0}}{\epsilon _{12}^{s0}}\right) ^2 },\nonumber \\ \epsilon _{2}^{\rm eq}= & {} \sqrt{ (\epsilon _{22})^2 + (\epsilon _{12})^2 \left( \frac{\epsilon _{22}^{t0}}{\epsilon _{12}^{s0}}\right) ^2 } \end{aligned}$$
(29)

where \(\epsilon _{11}^{t0}\) (respectively \(\epsilon _{22}^{t0}\)) is the initial tensile strain threshold for the sliding mode (respectively for the non-sliding mode), and \(\epsilon _{12}^{s0}\) is the initial out-of-bedding-plane shear strain threshold. They are all material properties and are calibrated from experimental data.

The loading surfaces in Eq. 28, together with the definition of equivalent strains in Eq. 29, determine the current boundary of the elastic domain \(g_i<0\). Damage can only grow if the current strain state reaches the boundary \(g_i=0\). Karush-Kuhn-Tucker complementary conditions are used to account for loading-unloading stress paths:

$$\begin{aligned} \begin{aligned}&g_1 \le 0, \quad {\dot{\kappa }}_1 \ge 0, \quad {\dot{\kappa }}_1 g_1 = 0 \\&g_2 \le 0, \quad {\dot{\kappa }}_2 \ge 0, \quad {\dot{\kappa }}_2 g_2 = 0 \\ \end{aligned} \end{aligned}$$
(30)

Now, we establish a relationship between the internal state variables \(\kappa _1\), \(\kappa _2\), defined as the maximum equivalent strains ever encountered in the material, and the damage variable components \(\omega _i, (i=1, 2)\). Since both the internal variables and the damage components grow monotonically, it is admissible to postulate the evolution law of damage in the form \(\omega _i = f (\kappa _i),\,i=1,2\). The exact form of the function f should be identified from actual stress paths monitored in experiments, such as uniaxial stress–strain curve in axial and transverse directions. In the absence of such data, we assume that in tension, the axial damage component follows an exponential law, which reflects rapid micro-crack propagation in mixed I–II mode:

$$\begin{aligned} \omega _{1}= {\left\{ \begin{array}{ll} 0, &{}\quad \text {if }\quad \kappa _1 \le \epsilon _{11}^{t0} \\ 1-\text {exp}\left( -\frac{ \kappa _1 - \epsilon _{11}^{t0}}{ \alpha _{11}^t}\right) , &{} \quad \text {if }\quad \kappa _1 > \epsilon _{11}^{t0} \end{array}\right. } \end{aligned}$$
(31)

where \(\alpha _{11}^t\) is a material parameter that controls the damage growth rate. We use a similar evolution law for tensile damage growth in the transverse directions:

$$\begin{aligned} \omega _{2}= {\left\{ \begin{array}{ll} 0, &{} \quad \text {if }\quad \kappa _2 \le \epsilon _{22}^{t0} \\ 1-\text {exp}\left( -\frac{ \kappa _{2} - \epsilon _{22}^{t0}}{ \alpha _{22}^t}\right) , &{}\quad \text {if }\quad \kappa _2 > \epsilon _{22}^{t0} \end{array}\right. } \end{aligned}$$
(32)

where \(\alpha _{22}^t\) controls the ductility of the response in the transverse directions.

The constitutive law in Eq. 25 leads to stress-strain softening behavior, which results in the well-known mesh dependence issue in finite element simulations. Specifically, the size of the damage zone, which is linearly related to energy release rate and should be a material constant, does not converge upon mesh refinement [43]. Mathematically, the partial differential equations governing quasi-static problems loose ellipticity, which makes the boundary problem ill-posed. To address this issue, we adopt the integral-based nonlocal regularization technique, in which the damage evolution at a material point not only depends on the stress state at that point, but also on the stress of points located within a certain neighborhood, the size of which is controlled by internal length parameters. Numerically, we replace the local equivalent strains \(\epsilon _{i}^{\rm eq}\) in the loading surfaces (Eq. 28) by their nonlocal counterparts \({\overline{\epsilon }}_{i}^{\rm eq}\), which are calculated as the weighted averages of the local equivalent strains over an influence volume V:

$$\begin{aligned} {\overline{\epsilon }}_{i}^{\rm eq} (\varvec{x}) =\int _V \alpha (\varvec{x}, \varvec{\xi }) \epsilon _{i}^{\rm eq} (\varvec{\xi }) \mathbf d V(\varvec{\xi }), \quad (i=1/2). \end{aligned}$$
(33)

where \(\varvec{x}\) and \(\varvec{\xi }\) are the position vectors of the local point considered and of a point located in the influence volume, respectively. \(\alpha (\varvec{x}, \varvec{\xi })\) is a weight function and is normalized to preserve constant fields, as follows:

$$\begin{aligned} \alpha (\varvec{x}, \varvec{\xi }) = \frac{\alpha _0 (\Vert \varvec{x} -\varvec{\xi }\Vert )}{\int _V \alpha _0 (\Vert \varvec{x} - \varvec{\xi }\Vert ) {d} V(\varvec{\xi })}. \end{aligned}$$
(34)

where the function \(\alpha _0 (r)\) monotonically decreases with the increasing distance \(r=\Vert \varvec{x} - \varvec{\xi }\Vert\). We choose \(\alpha _0(r)\) to be a bell-shaped function with a bounded nonlocal influence zone \(l_c\) as

$$\begin{aligned} \alpha _0 (r)=\bigg \langle 1 - \frac{r^2}{l_{c}^2} \bigg \rangle ^2. \end{aligned}$$
(35)

in which \(l_c\) provides an internal length parameter that serves as a localization limiter to alleviate mesh sensitivity. In addition, the size of \(l_c\) also determines the size of the damage process zone.

2.4 Macro cohesive zone model: PPR

The nonlocal damage model performs well for modeling diffused damage development during micro-crack propagation. However, it suffers spurious damage growth during macro-fracture localization because the fixed interaction domain used in the nonlocal formulation enables the transfer of energy from the damage process zone to a neighboring unloading elastic region [31, 76]. In addition, macro-fracture surfaces are not explicitly represented. Therefore, in this paper, we employ the nonlocal damage model to simulate micro-crack propagation (i.e., the damage process zone development) and we define a damage threshold \(\omega _{crit}\) above which a macroscopic fracture segment represented by a cohesive zone model is inserted to simulate the macro-fracture localization. We adopt the potential-based PPR cohesive model [65]. The main traction-separation equations are explained in the following.

Fig. 4
figure 4

PPR cohesive model of macro-fracture propagation. \(\sigma _{\max }\) (respectively, \(\tau _{\max }\)) denotes normal (respectively, shear) cohesive strength at normal separation \(\delta _{nc}\) (respectively, at shear separation \(\delta _{tc}\)). \(\delta _{n}\) (respectively, \(\delta _{t}\)) is the normal (respectively, shear) separation at which cohesive traction is zero. \(\phi _n\) and \(\phi _t\) are the mode I and mode II cohesive energy release rates, respectively

The PPR meets the following requirements: (1) Complete normal and shear failure are reached when normal or tangential separation reaches a maximum value; (2) the traction rate is equal to zero when the traction is equal to the cohesive strength; (3) the energy release rate is equal to the area enclosed by the traction-separation curve. The expression of the potential is

$$\begin{aligned} \begin{aligned} \varPsi (\varDelta _n, \varDelta _t)&= \min (\phi _n, \phi _t)\\&\quad +\,\bigg [\varGamma _n\bigg (1-\frac{\varDelta _n}{\delta _n}\bigg )^\alpha \bigg (\frac{m}{\alpha }+\frac{\varDelta _n}{\delta _n}\bigg )^m + \langle \phi _n -\phi _t \rangle \bigg ] \\&\quad \times \, \bigg [\varGamma _t\bigg (1-\frac{|\varDelta _t|}{\delta _t}\bigg )^\beta \bigg (\frac{n}{\beta }+\frac{|\varDelta _t|}{\delta _t}\bigg )^n + \langle \phi _t -\phi _n \rangle \bigg ]. \end{aligned} \end{aligned}$$
(36)

where \(\varDelta _n\) and \(\varDelta _t\) (respectively \(\delta _n\) and \(\delta _t\)) stand for the separations in the normal and shear directions at the current time (respectively, at failure) as shown in Fig. 4. \(\phi _n\) (respectively \(\phi _t\)) is the mode I (respectively, mode II) cohesive energy release rate. \(\alpha\) and \(\beta\) are the shape factors that control the concave or convex nature of the softening curve. The mechanical response of brittle materials is best represented by power law softening equations or bilinear softening laws [79]. Accordingly, we use \(\alpha =\beta =4\), which allows representing concave shaped softening curves with a power law. \(\varGamma _n\) and \(\varGamma _t\) are energy constants, related to \(\phi _n\) and \(\phi _t\) as follows:

$$\begin{aligned} \begin{aligned} \varGamma _n&=(-\phi _n)^{\langle \phi _n -\phi _t \rangle /( \phi _n -\phi _t)}\bigg (\frac{\alpha }{m}\bigg )^m, \\ \varGamma _t&=(-\phi _t)^{\langle \phi _t -\phi _n \rangle /( \phi _t -\phi _n)}\bigg (\frac{\beta }{n}\bigg )^n. \end{aligned} \end{aligned}$$
(37)

where mn, called the non-dimensional exponents, are expressed in terms of the shape factors \(\alpha , \beta\) (\(\alpha =\beta =4\) in this study) and of the initial slope indicator \((\lambda _n, \lambda _t)\), as follows:

$$\begin{aligned} m = \frac{\alpha (\alpha -1)\lambda _n^2}{(1-\alpha \lambda _n^2)}, \quad n = \frac{\beta (\beta -1)\lambda _t^2}{(1-\beta \lambda _t^2)} \end{aligned}$$
(38)

The initial slope indicators are defined as the ratios of critical crack opening width to the final crack opening width (Fig. 4), i.e., \(\lambda _n = \delta _{nc}/\delta _n, \lambda _t = \delta _{tc}/\delta _t\).

According to thermodynamic principles, the traction vector in the local coordinate system \((T_n, T_t)\), noted \(\varvec{t}_d\) in the global coordinate system shown in Fig. 2, is obtained directly from the derivative of the potential in equation 36:

$$\begin{aligned} \begin{aligned} T_n(\varDelta _n, \varDelta _t)&= \frac{\varGamma _n}{\delta _n} \bigg [ m \bigg (1-\frac{\varDelta _n}{\delta _n}\bigg )^\alpha \bigg (\frac{m}{\alpha }+\frac{\varDelta _n}{\delta _n}\bigg )^{m-1} \\&\quad -\,\alpha \bigg (1-\frac{\varDelta _n}{\delta _n}\bigg )^{\alpha -1}\bigg (\frac{m}{\alpha }+\frac{\varDelta _n}{\delta _n}\bigg )^m \bigg ] \\&\quad \times \, \bigg [\varGamma _t\bigg (1-\frac{|\varDelta _t|}{\delta _t}\bigg )^\beta \bigg (\frac{n}{\beta }+\frac{|\varDelta _t|}{\delta _t}\bigg )^n \\&\quad +\, \langle \phi _t -\phi _n \rangle \bigg ] \\ T_t ( \varDelta _n, \varDelta _t)&= \frac{\varGamma _t}{\delta _t} \bigg [ n \bigg (1-\frac{|\varDelta _t|}{\delta _t}\bigg )^ {\beta } \bigg (\frac{n}{\beta } +\frac{|\varDelta _t|}{\delta _t}\bigg )^{n-1} \\&\quad -\, \beta \bigg (1-\frac{|\varDelta _t|}{\delta _t}\bigg )^{\beta -1} \bigg (\frac{n}{\beta } +\frac{|\varDelta _t|}{\delta _t}\bigg )^n \bigg ] \\&\quad \times \, \bigg [\varGamma _n\bigg (1-\frac{\varDelta _n}{\delta _n}\bigg )^\alpha \bigg (\frac{m}{\alpha }+\frac{\varDelta _n}{\delta _n}\bigg )^m\\&\quad +\, \langle \phi _n -\phi _t \rangle \bigg ] \frac{\varDelta _t}{|\varDelta _t|} \end{aligned} \end{aligned}$$
(39)

Usually, the extrinsic CZM, in which the elastic behavior (or initial ascending slope) is excluded, is used to model fracture propagation when a cohesive segment or a cohesive interface element is adaptively inserted. Only the softening branch is used, because the elastic deformation of the material is already accounted for by the continuum damage model. However, numerical simulations indicate that the absence of one-to-one relationship at the point \(\varDelta _n=\varDelta _t=0\) causes stability issues. In the following, we use the intrinsic cohesive zone model with \(\lambda _n=\lambda _t=0.01\) to improve the convergence rate, and to avoid unwanted elastic separation.

To close the formulation of the PPR cohesive model, relationships between the cohesive strengths \((\sigma _{\text {max}}, \tau _{\text {max}})\) and the final normal and shear crack opening widths \((\delta _n, \delta _t)\) are needed. The traction rate is equal to zero when traction is equal to the cohesive strength, so we have:

$$\begin{aligned} \begin{aligned}&\delta _n=\frac{\phi _n}{\sigma _{\text {max}}} \alpha \lambda _n\bigg (1-\lambda _n\bigg )^{\alpha -1}(\frac{\alpha }{m}+1)\bigg (\frac{\alpha }{m}\lambda _n+1\bigg )^{m-1}\\&\delta _t=\frac{\phi _t}{\tau _{\text {max}}} \beta \lambda _t\bigg (1-\lambda _t\bigg )^{\beta -1}(\frac{\beta }{n}+1)\bigg (\frac{\beta }{n}\lambda _t+1\bigg )^{n-1} \end{aligned} \end{aligned}$$
(40)

As explained in [63], the tangent Jacobian matrix can be calculated analytically from the potential-based cohesive segment model, which is critical to achieve quadratic convergence in the Newton–Raphson iterative scheme. The reader is referred to [64, 65] for the expression of the Jacobian matrix for loading, unloading and reloading stress paths.

3 Discretization and resolution procedure

3.1 XFEM spatial discretization for displacement and pressure

To model fracture propagation without remeshing, we adopt the XFEM to discretize the primary variables. The Heaviside enrichment function is employed to account for the displacement jump across the macro-fracture. Note that the bounding medium is modeled by the proposed anisotropic damage model with softening, so there is no singularity at the macro-fracture tip. Thus, the classical branching functions are not necessary here. As a result, the approximate function of displacement \(\varvec{u}^h(\varvec{x},t)\) is expressed in the following form:

$$\begin{aligned} \begin{aligned} \varvec{u}^h(\varvec{x},t)&=\sum _{i \in S} N_{ui}(\varvec{x}) \varvec{u}_i(t)\\ &\quad+ \sum _{i \in S_H} N_{ui}(\varvec{x}) \frac{1}{2}\left[ H_{\varGamma _d}(\varvec{x}) - H_{\varGamma _d}(\varvec{x}_i) \right] \varvec{a}_i(t) \\&=\varvec{N}_{u}(\varvec{x}) \varvec{U}(t) + \varvec{N}_{a}(\varvec{x}) \varvec{A}(t) \end{aligned} \end{aligned}$$
(41)

where \(N_{ui}(\varvec{x})\) is the standard shape function associated with node i, S is the set of all nodal points and \(S_H\) is the set of enriched nodes, the supports of which are bisected by the fracture. \(\varvec{u}_i(t)\) and \(\varvec{a}_i(t)\) denote the nodal value of the displacement field associated with the standard and enriched degree of freedoms respectively. The Heaviside jump function \({H}(\varvec{x})\) is defined as

$$\begin{aligned} H_{\varGamma _d}(\varvec{x})= {\left\{ \begin{array}{ll} +1, &{}\quad \phi (\varvec{x}) > 0 \\ -1, &{}\quad \phi (\varvec{x}) < 0 \end{array}\right. } \end{aligned}$$
(42)

where \(\phi (\varvec{x})\) is the level set function, which is defined as the closest distance from the fracture surface, with positive or negative, depending on which side of the fracture the point \(\varvec{x}\) is located—see Fig. 2. It is worth noting that the shifted jump function \(1/2\left[ H_{\varGamma _d}(\varvec{x}) - H_{\varGamma _d}(\varvec{x}_i) \right]\) is used to avoid the problem of postprocessing and blending elements [25]. The analytical form of the displacement jump across the fracture \(\varGamma _d\) is:

$$\begin{aligned}{}[\![ \varvec{u}(\varvec{x},t) ]\!] = \sum _{i \in S_H} N_{ui}(\varvec{x}) \varvec{a}_i(t) = \varvec{N}_{a}(\varvec{x}) \varvec{A}(t) \end{aligned}$$
(43)

Note that the displacement jump is directly used to calculate the fracture aperture w in the fluid flow governing equation, as \(w = [\![ \varvec{u}(\varvec{x},t) ]\!]\cdot \varvec{n}_{\varGamma _d}\) (Eq. 22). For the fluid pressure field, enrichment is done with the distance function. The approximate pressure field is expressed as:

$$\begin{aligned} \begin{aligned} p^h(\varvec{x},t)&=\sum _{i \in S} N_{pi}(\varvec{x}) p_i(t) \\&\quad + \,\sum _{i \in S_H} N_{pi}(\varvec{x}) \left[ D_{\varGamma _d}(\varvec{x}) - D_{\varGamma _d}(\varvec{x}_i) \right] R(\varvec{x}) {b}_i(t) \\&=\varvec{N}_{p}(\varvec{x}) \varvec{P}(t) + \varvec{N}_{b}(\varvec{x}) \varvec{B}(t) \end{aligned} \end{aligned}$$
(44)

where \(N_{pi}(\varvec{x})\) is the standard finite element shape function associated with node i. Nodal sets S and \(S_H\) are the same as for the displacement field. \(p_i(t)\) and \({b}_i(t)\) denote the nodal value of the fluid pressure associated with the standard and enriched degree of freedom, respectively. \(D_{\varGamma _d}(\varvec{x})\) is the distance function, defined as:

$$\begin{aligned} D_{\varGamma _d}(\varvec{x})= {\left\{ \begin{array}{ll} +\phi (\varvec{x}), &{}\quad \text {if } \phi (\varvec{x}) > 0 \\ -\phi (\varvec{x}), &{}\quad \text {if } \phi (\varvec{x}) < 0 \\ \end{array}\right. } \end{aligned}$$
(45)

The gradient of the distance function along the direction normal to the fracture is discontinuous, with: \(\nabla D_{\varGamma _d} \cdot \varvec{n}_ {\varGamma _d} = H_{\varGamma _d}\). As a result, enriching the FEM with the distance function for the pressure field allows ensuring a continuous pressure field and a discontinuous gradient of pressure across the fracture. Thus, the fluid exchange between the fracture and the matrix can be accounted for. Similar to the displacement approximation, the shifted enrichment function \(\left[ D_{\varGamma _d}(\varvec{x}) - D_{\varGamma _d}(\varvec{x}_i) \right]\) is used and \(R(\varvec{x})\) is a weight function, defined as \(R(\varvec{x}) = \sum _{i \in S_H} N_{pi}(\varvec{x})\) as proposed by Mohammadnejad and Khoei [58]. It is worth noting that the pressure field at the tip of the fracture does not need to be enriched to satisfy the “no leakage flux” boundary condition.

From now on, we use the following (simplified) notations: \(\varvec{N}_{u}(\varvec{x})\) and \(\varvec{N}_{p}(\varvec{x})\) (respectively, \(\varvec{N}_{a}(\varvec{x})\) and \(\varvec{N}_{b}(\varvec{x})\)) are the matrices of standard (respectively, enriched) shape functions for the displacement field \(\varvec{u}\) and for the pressure field p, respectively. \(\varvec{U}(t)\) and \(\varvec{P}(t)\) (respectively, \(\varvec{A}(t)\) and \(\varvec{B}(t)\)) are the vectors of the standard (respectively, enriched) displacement and pressure degrees of freedom, respectively. By substituting the approximations (Eqs. 4144) into the governing weak form equations (Eqs. 4, 8, 12 ), we can obtain the discretized form of the governing equations, as follows:

$$\begin{aligned} \begin{aligned}&\varvec{K}_{uu}\varvec{U} + \varvec{K}_{ua}\varvec{A} - \varvec{Q}_{up}\varvec{P} - \varvec{Q}_{ub}\varvec{B} - \varvec{F}_u^{{\text {ext}}} = 0 \\&\varvec{K}_{ua}^T\varvec{U} + \varvec{K}_{aa}\varvec{A} - \varvec{Q}_{ap}\varvec{P} - \varvec{Q}_{ab}\varvec{B} - \varvec{Q}_{ad} \varvec{P}_d +\varvec{F}_a^{{\text {int}}} - \varvec{F}_a^{{\text {ext}}} = 0 \\&\varvec{Q}_{up}^T\varvec{{\dot{U}}} + \varvec{Q}_{ap}^T\varvec{{\dot{A}}} \\&\quad +\varvec{M}_{pp}\varvec{{\dot{P}}} + \varvec{M}_{pb}\varvec{{\dot{B}}} + \varvec{H}_{pp}\varvec{{P}} + \varvec{H}_{pb}\varvec{{B}} - \varvec{F}_p^{{\text {int}}} - \varvec{F}_p^{{\text {ext}}} = 0 \\&\varvec{Q}_{ub}^T\varvec{{\dot{U}}} + \varvec{Q}_{ab}^T\varvec{{\dot{A}}} + \varvec{M}_{pb}^T\varvec{{\dot{P}}} + \varvec{M}_{bb}\varvec{{\dot{B}}} \\&\quad + \varvec{H}_{pb}^T\varvec{{P}} + \varvec{H}_{bb}\varvec{{B}} - \varvec{F}_b^{{\text {int}}} - \varvec{F}_b^{{\text {ext}}} = 0 \\ \end{aligned} \end{aligned}$$
(46)

where the Ritz method is used, i.e., in which the virtual displacement \(\delta \varvec{u}\) and the virtual pressure \(\delta p\) are used as weight functions. The matrices \(\varvec{K}_{\alpha \beta } (\alpha ,\beta = u,a)\) are the mechanical stiffness matrices, which can be expressed as:

$$\begin{aligned} \varvec{K}_{\alpha \beta } = \int _\varOmega \varvec{B}_\alpha ^T {\mathcal {C}} \varvec{B}_\beta \text {d} \varOmega \end{aligned}$$
(47)

where \(\varvec{B}\) is the strain–displacement matrix (derivative of shape functions with respect to the coordinates), and \({\mathcal {C}}\) is the Voigt matrix of damage stiffness tensor \({\mathbb {C}}\).

The matrices \(\varvec{Q}_{\alpha \beta } (\alpha ,\beta = u,p)\) are hydro-mechanical coupling terms, which can be expressed as:

$$\begin{aligned} \begin{aligned}&\varvec{Q}_{up} = \int _\varOmega \varvec{B}_u^T \varvec{\alpha } \varvec{N}_p\text {d} \varOmega , \quad \varvec{Q}_{ub} = \int _\varOmega \varvec{B}_u^T \varvec{\alpha } \varvec{N}_b\text {d} \varOmega \\&\varvec{Q}_{ap} = \int _\varOmega \varvec{B}_a^T \varvec{\alpha } \varvec{N}_p\text {d} \varOmega , \quad \varvec{Q}_{ab} = \int _\varOmega \varvec{B}_a^T \varvec{\alpha } \varvec{N}_b\text {d} \varOmega \end{aligned} \end{aligned}$$
(48)

in which \(\varvec{N}\) is the shape function vector.

The matrices \(\varvec{M}_{\alpha \beta } (\alpha ,\beta = p,b)\) represent the compressibility of the fluid and of the solid skeleton and they are expressed as:

$$\begin{aligned} \begin{aligned}&\varvec{M}_{pp} = \int _\varOmega \varvec{N}_p^T \frac{1}{ M} \varvec{N}_p \text {d} \varOmega , \quad \varvec{M}_{pb} = \int _\varOmega \varvec{N}_p^T \frac{1}{M} \varvec{N}_b \text {d} \varOmega ,\\&\varvec{M}_{bb} = \int _\varOmega \varvec{N}_b^T \frac{1}{ M} \varvec{N}_b \text {d} \varOmega \end{aligned} \end{aligned}$$
(49)

where M is the Biot modulus defined in Eq. 9. The matrices \(\varvec{H}_{\alpha \beta } (\alpha ,\beta = p,b)\) represent the hydraulic conductivity and are expressed as

$$\begin{aligned} \begin{aligned} \varvec{H}_{pp}&= \int _\varOmega \nabla \varvec{N}_p^T \frac{\varvec{k}_{\rm m}}{\mu } \nabla \varvec{N}_p \text {d} \varOmega , \\ \varvec{H}_{pb}&= \int _\varOmega \nabla \varvec{N}_p^T \frac{\varvec{k}_{\rm m}}{\mu } \nabla \varvec{N}_b \text {d} \varOmega ,\\ \varvec{H}_{bb}&= \int _\varOmega \nabla \varvec{N}_b^T \frac{\varvec{k}_{\rm m}}{\mu } \nabla \varvec{N}_b \text {d} \varOmega \end{aligned} \end{aligned}$$
(50)

It is worth noting that the mass balance equation for the fluid flow in the fracture does not explicitly appear in the discrete form (Eq. 46). Instead, we introduce the internal force (flux) vector \((\varvec{F}_p^{\text {int}}, \varvec{F}_b^{\text {int}})\) to account for the mass exchange between the matrix and the fracture, as follows:

$$\begin{aligned} \begin{aligned} \varvec{F}_p^{{\text {int}}}&= \int _{\varGamma _{\text {q}}} \varvec{N}_{p}^T {q_d} \text{ d } \varGamma \\&= -\int _{\varGamma _d} \varvec{N}_p^T \frac{w}{K_{\text {f}}} {\dot{p}} \text {d} \varGamma - \int _{\varGamma _d} \varvec{N}_p^T [\![ \varvec{\dot{u}} ]\!] \cdot \varvec{n}_{\varGamma _d} \text {d} \varGamma \\&\quad - \int _{\varGamma _d} \nabla \varvec{N}_p^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla p \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma } + \varvec{N}_p Q_{\text {in}}|_{s=0} \\ \varvec{F}_b^{{\text {int}}}&= \int _{\varGamma _{\text {q}}} \varvec{N}_{b}^T {q_d} \text{ d } \varGamma \\&= -\int _{\varGamma _d} \varvec{N}_b^T \frac{w}{K_{\text {f}}} {\dot{p}} \text {d} \varGamma - \int _{\varGamma _d} \varvec{N}_b^T [\![ \varvec{\dot{u}} ]\!] \cdot \varvec{n}_{\varGamma _d} \text {d} \varGamma \\&\quad - \int _{\varGamma _d} \nabla \varvec{N}_b^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla p \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma } \end{aligned} \end{aligned}$$
(51)

The mechanical coupling term between the fracture and the matrix constitutes another internal force vector \(\varvec{F}_a^{\text {int}}\) in the equilibrium equation, expressed as

$$\begin{aligned} \varvec{F}_a^{{\text {int}}}= & {} \int _{\varGamma _d} \varvec{N}_{a}^T (\varvec{t}_d- p \varvec{n}_{\varGamma _d} ) \text{ d } \varGamma = \int _{\varGamma _d} \varvec{N}_{a}^T \varvec{t}_d \text{ d } \varGamma \nonumber \\&- \int _{\varGamma _d} \varvec{N}_{a}^T \varvec{n}_{\varGamma _d} p \text{ d } \varGamma . \end{aligned}$$
(52)

where the fluid pressure p and the cohesive traction \(\varvec{t}_d\) are both exerted on the fracture surfaces. The remainder of the external force (flux) vectors in Eq. 46 are listed in the following:

$$\begin{aligned} \begin{aligned} \varvec{F}_u^{{\text {ext}}}&= \int _{\varGamma _{\text {t}}} \varvec{N}_{u}^T \bar{ \varvec{t}} \text{ d } \varGamma + \int _{\varOmega } \rho \varvec{N}_{u}^T \varvec{g} \text{ d } \varOmega \\ \varvec{F}_a^{{\text {ext}}}&= \int _{\varGamma _{\text {t}}} \varvec{N}_{a}^T \bar{ \varvec{t}} \text{ d } \varGamma + \int _{\varOmega } \rho \varvec{N}_{a}^T \varvec{g} \text{ d } \varOmega \\ \varvec{F}_p^{{\text {ext}}}&= - \int _{\varGamma _{\text {q}}} \varvec{N}_{p}^T \bar{q} \text{ d } \varGamma + \int _\varOmega \frac{ \rho _{\text {f}} \varvec{k}_{\rm m}}{\mu } \nabla \varvec{N}_{p}^T \cdot \varvec{g} d\varOmega \\ \varvec{F}_b^{{\text {ext}}}&= - \int _{\varGamma _{\text {q}}} \varvec{N}_{b}^T \bar{q} \text{ d } \varGamma + \int _\varOmega \frac{ \rho _{\text {f}} \varvec{k}_{\rm m}}{\mu } \nabla \varvec{N}_{b}^T \cdot \varvec{g} d\varOmega \\ \end{aligned} \end{aligned}$$
(53)

3.2 Finite difference temporal discretization and resolution procedure

In order to further simplify the notations in the following derivations for time discretization, we condense the enriched and standard degree of freedoms for displacement and pressure as \({\mathbb {U}}(\varvec{U}, \varvec{A})\) and \({\mathbb {P}} (\varvec{P}, \varvec{B})\). The weak form of the governing equation discretized in space (Eq. 46) can be rewritten as

$$\begin{aligned} \begin{aligned}&\varvec{K} {\mathbb {U}} - \varvec{Q} {\mathbb {P}} + F_{{\mathbb {U}}}^{{\text {int}}}(\mathbb {{\dot{U}}}, \mathbb {{\dot{P}}}) - F_{{\mathbb {U}}}^{{\text {ext}}} = \varvec{0} \\&\varvec{Q}^T \mathbb {{\dot{U}}} + \varvec{M} \mathbb {{\dot{P}}} + \varvec{H} {\mathbb {P}} - F_{{\mathbb {P}}}^{{\text {int}}}(\mathbb {{\dot{U}}}, \mathbb {{\dot{P}}}) - F_{{\mathbb {P}}}^{{\text {ext}}} = \varvec{0} \\ \end{aligned} \end{aligned}$$
(54)

To solve the above equations, we use a linear discretization scheme in time: first-order time derivatives \(\varvec{{\dot{X}}}\) are expressed in terms of the difference between \(\varvec{X}\) at time step \(n+1\) and \(\varvec{X}\) at time step n:

$$\begin{aligned} \dot{\varvec{X}}_{n+\theta } \approx \frac{\varvec{X}_{n+1} - \varvec{X}_{n}}{\varDelta t} \end{aligned}$$
(55)

where \(\varDelta t\) is the time step. \(\varvec{X}\) at the current time is the weighted value between time step \(n+1\) and time step n:

$$\begin{aligned} {\varvec{X}}_{n+\theta } = (1-\theta )\varvec{X}_n + \theta \varvec{X}_{n+1} \end{aligned}$$
(56)

in which the weight \(\theta\) can be any value between 0 and 1. If \(\theta = 0\), the time discretization method is the explicit forward Euler scheme; if \(\theta = 1\), the time discretization method is the implicit Euler scheme. We use \(\theta = 2/3\) to ensure unconditional stability. After injecting the time discretization equations into the spatially discretized governing equations (Eq. 54), we obtain the residual at time step \(n+1\), as follows:

$$\begin{aligned} \begin{aligned} \varvec{R}_{{\mathbb {U}},{n+1}}&= \varvec{K} {\mathbb {U}}_{n+1} - \varvec{Q} {\mathbb {P}}_{n+1} + F_{{\mathbb {U}}_{n+1}}^{{\text {int}}} - F_{{\mathbb {U}}_{n+1}}^{{\text {ext}}}= \varvec{0} \\ \varvec{R}_{{\mathbb {P}},{n+1}}&= \varvec{Q}^T {\mathbb {U}}_{n+1} + ( \varvec{M} + {\theta \varDelta t} \varvec{H}) {\mathbb {P}}_{n+1} \\&\quad - F_{{\mathbb {P}}_{n+1}}^{{\text {int}}} - G_{{\mathbb {P}}_{n+1}} = \varvec{0} \\ \end{aligned} \end{aligned}$$
(57)

where \(G_{{\mathbb {P}}_{n+1}}\) is the vector of known values at time step n, expressed as:

$$\begin{aligned} \begin{aligned} G_{{\mathbb {P}}_{n+1}}&= \varDelta t F_{{\mathbb {P}}_{n+1}}^{{\text {ext}}} + \varvec{Q}^T \mathbb {{U}}_{n} + \bigg ( \varvec{M} - \varDelta t (1- \theta ) \varvec{H} \bigg )\mathbb {{P}}_{n} \\&\quad +\, \int _{\varGamma _d} \varvec{N}_{{\mathbb {P}}}^T \frac{w}{K_{\text {f}}} p_{n} \text {d} \varGamma + \int _{\varGamma _d} \varvec{N}_{{\mathbb {P}}}^T [\![ \varvec{u} ]\!]_{n} \cdot \varvec{n}_{\varGamma _d} \text {d} \varGamma \\&\quad -\, \varDelta t (1- \theta ) \int _{\varGamma _d} \nabla \varvec{N}_{{\mathbb {P}}}^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla p_{n} \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma } \\ \end{aligned} \end{aligned}$$
(58)

and \(F_{{\mathbb {P}}_{n+1}}^{{\text {int}}}\) is the flux vector that accounts for the mass exchange between the matrix and the fracture at time step \(n+1\):

$$\begin{aligned} \begin{aligned} F_{{\mathbb {P}}_{n+1}}^{{\text {int}}} =&- \int _{\varGamma _d} \varvec{N}_{{\mathbb {P}}}^T \frac{w}{K_{\text {f}}} {p}_{n+1} \text {d} \varGamma - \int _{\varGamma _d} \varvec{N}_{{\mathbb {P}}}^T [\![ \varvec{u} ]\!] _{n+1} \cdot \varvec{n}_{\varGamma _d} \text {d} \varGamma \\&- \varDelta t \theta \int _{\varGamma _d} \nabla \varvec{N}_{{\mathbb {P}}}^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla p_{n+1} \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma }\\&+ \varDelta t \varvec{N}_{{\mathbb {P}}} Q_{\text {in}}|_{s=0} \end{aligned} \end{aligned}$$
(59)

The nonlinear system (Eq. 57) is solved iteratively. We adopt the Newton–Raphson method to linearize the system with respect to displacement and pressure at the equilibrium iteration i within the time step \(n+1\), as follows:

$$\begin{aligned} \begin{bmatrix} \varvec{R}_{{\mathbb {U}},{n+1}}^{i+1} \\ \varvec{R}_{{\mathbb {P}},{n+1}}^{i+1} \\ \end{bmatrix}= & {} \begin{bmatrix} \varvec{R}_{{\mathbb {U}},{n+1}}^{i} \\ \varvec{R}_{{\mathbb {P}},{n+1}}^{i} \\ \end{bmatrix}\nonumber \\&+ \begin{bmatrix} \frac{ \partial \varvec{R}_{{\mathbb {U}}} }{\partial {\mathbb {U}}}&\frac{ \partial \varvec{R}_{{\mathbb {U}}} }{\partial {\mathbb {P}}} \\ \frac{ \partial \varvec{R}_{{\mathbb {P}}} }{\partial {\mathbb {U}}}&\frac{ \partial \varvec{R}_{{\mathbb {P}}} }{\partial {\mathbb {P}}} \\ \end{bmatrix}^i_{n+1} \begin{bmatrix} d {\mathbb {U}}_{n+1}^{i} \\ d {\mathbb {P}}_{n+1}^{i} \\ \end{bmatrix}= \varvec{0} \end{aligned}$$
(60)

The derivative of the residual with respect to the unknown degrees of freedom is the Jacobian matrix \(\varvec{J}\). Note that the mechanical stiffness \(\varvec{K}(\varvec{\omega })\) depends on damage and is therefore a function of the unknown displacement. The internal forces and flux vectors \((F_{{\mathbb {U}}}^{\text {int}}, F_{{\mathbb {P}}}^{\text {int}})\) are also functions of the unknowns at time step \(n+1\). As a result, the full consistent tangent matrix \(\varvec{J}\) is:

$$\begin{aligned} \varvec{J}&= \begin{bmatrix} \frac{ \partial \varvec{R}_{{\mathbb {U}}} }{\partial {\mathbb {U}}}&\quad \frac{ \partial \varvec{R}_{{\mathbb {U}}} }{\partial {\mathbb {P}}} \\ \frac{ \partial \varvec{R}_{{\mathbb {P}}} }{\partial {\mathbb {U}}}&\quad \frac{ \partial \varvec{R}_{{\mathbb {P}}} }{\partial {\mathbb {P}}} \\ \end{bmatrix} \\&= \begin{bmatrix} \varvec{K} + \frac{ \partial \varvec{K} }{\partial {\mathbb {U}}} {\mathbb {U}} + \frac{ \partial F_{{\mathbb {U}}}^{{\text {int}}} }{\partial {\mathbb {U}}}&\quad -\varvec{Q} + \frac{ \partial F_{{\mathbb {U}}}^{{\text {int}}} }{\partial {\mathbb {P}}} \\ \varvec{Q}^T - \frac{ \partial F_{{\mathbb {P}}}^{{{\text {int}}}} }{\partial {\mathbb {U}}}&\quad \varvec{M} + \theta \varDelta t \varvec{H} - \frac{ \partial F_{{\mathbb {P}}}^{{\text {int}}} }{\partial {\mathbb {P}}} \\ \end{bmatrix} \\&= \left[\begin{array}{cc}\widetilde{ \varvec{K}}_{uu}&\quad \widetilde{\varvec{K}}_{ua}\\ \widetilde{\varvec{K}}_{ua}^T&\quad \widetilde{\varvec{K}}_{aa} + \frac{ \partial F_{ a}^{{\text {int}}} }{\partial {a}}\\ \varvec{Q}_{up}^T&\quad \varvec{Q}_{ap}^T - \frac{ \partial F_{p}^{{\text {int}}} }{\partial {b}}\\ \varvec{Q}_{ub}^T&\quad \varvec{Q}_{ab}^T - \frac{ \partial F_{b}^{{\text {int}}} }{\partial {b}}\end{array}\right.\\ &\quad \left.\begin{array}{cc}\quad -\varvec{Q}_{up}&\quad -\varvec{Q}_{ub} \\\quad -\varvec{Q}_{ap} + \frac{ \partial F_{a}^{{\text {int}}} }{\partial {p}}&\quad - \varvec{Q}_{ab} + \frac{ \partial F_{a}^{{\text {int}}} }{\partial {b}} \\\quad \varvec{M}_{pp} + \theta \varDelta t \varvec{H}_{pp} - \frac{ \partial F_{p}^{{\text {int}}} }{\partial {p}}&\quad \varvec{M}_{pb} + \theta \varDelta t \varvec{H}_{pb} - \frac{ \partial F_{p}^{{\text {int}}} }{\partial {b}} \\\quad \varvec{M}_{pb}^T+ \theta \varDelta t \varvec{H}_{pb}^T - \frac{ \partial F_{b}^{{\text {int}}} }{\partial {p}}&\quad \varvec{M}_{bb} + \theta \varDelta t \varvec{H}_{bb} - \frac{ \partial F_{b}^{{\text {int}}} }{\partial {b}} \end{array}\right]. \end{aligned}$$
(61)

where \(\widetilde{\varvec{K}} = \varvec{K} + \frac{ \partial \varvec{K} }{\partial {\mathbb {U}}} {\mathbb {U}}\). The analytical expression for \(\widetilde{\varvec{K}}\) is complex due to the nonlocal contribution, detailed in Sect. 3.3. The other terms in Eq. 61 are expressed as:

$$\begin{aligned} \begin{aligned} \frac{ \partial F_{{\mathbb {U}}}^{{\text {int}}} }{\partial {\mathbb {U}}}&= \frac{ \partial F_{ a}^{{\text {int}}} }{\partial {a}} = \int _{\varGamma _d} \varvec{N}_a^T \varvec{\varLambda }^T \varvec{T}_{coh} \varvec{\varLambda }\varvec{N}_a \text {d} \varGamma \\ \frac{ \partial F_{a}^{{\text {int}}} }{\partial {p}}&= \bigg ( \frac{ \partial F_{p}^{{\text {int}}} }{\partial {a}} \bigg )^T = - \int _{\varGamma _d} \varvec{N}_a^T \varvec{n}_{\varGamma _d} \varvec{N}_p \text {d} \varGamma \\ \frac{ \partial F_{a}^{{\text {int}}} }{\partial {b}}&= \bigg ( \frac{ \partial F_{b}^{{\text {int}}} }{\partial {a}} \bigg )^T = - \int _{\varGamma _d} \varvec{N}_a^T \varvec{n}_{\varGamma _d} \varvec{N}_b \text {d} \varGamma \\ \frac{ \partial F_{p}^{{\text {int}}} }{\partial {p}}&= - \int _{\varGamma _d} \varvec{N}_p^T \frac{w}{K_{\text {f}}} \varvec{N}_p \text {d} \varGamma \\&\quad -\theta \varDelta t \int _{\varGamma _d} \nabla \varvec{N}_p^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla \varvec{N}_p \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma } \\ \frac{ \partial F_{p}^{{\text {int}}} }{\partial {b}}&= \bigg ( \frac{ \partial F_{b}^{{\text {int}}} }{\partial {p}} \bigg )^T = - \int _{\varGamma _d} \varvec{N}_p^T \frac{w}{K_{\text {f}}} \varvec{N}_b \text {d} \varGamma \\&\quad - \theta \varDelta t \int _{\varGamma _d} \nabla \varvec{N}_p^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla \varvec{N}_b \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma } \\ \frac{ \partial F_{b}^{{\text {int}}} }{\partial {b}}&= - \int _{\varGamma _d} \varvec{N}_b^T \frac{w}{K_{\text {f}}} \varvec{N}_b \text {d} \varGamma - \theta \varDelta t \int _{\varGamma _d} \nabla \varvec{N}_b^T \cdot \varvec{m}_{\varGamma _d} \frac{w^3}{12 \mu } \nabla \varvec{N}_b \cdot \varvec{m}_{\varGamma _d} \text {d} {\varGamma } \\ \end{aligned} \end{aligned}$$
(62)

in which \(\varvec{\varLambda }\) is the rotation matrix used to transform the expression of the displacement jumps from the local coordinate system \((\varDelta _n, \varDelta _t)\) to the global coordinate system \([\![ \varvec{u} ]\!]\). It is defined as

$$\begin{aligned} \varvec{\varLambda }= \begin{bmatrix} \text {cos} {{\overline{\theta }}}&\quad \text {sin} {{\overline{\theta }}} \\ -\text {sin} {{\overline{\theta }}}&\quad \text {cos} {{\overline{\theta }}} \\ \end{bmatrix} \end{aligned}$$
(63)

where \({{\overline{\theta }}}\) is the angle between the fracture path and the horizontal axis.

\(\varvec{T}_{\text{ c }oh}\) in Eq. 62 is the derivative of the cohesive traction force \(\varvec{t}_d(T_n, T_t)\) with respect to the local displacement jump \((\varDelta _n, \varDelta _t)\). Since we adopt the PPR cohesive model, \(\varvec{T}_{coh}\) can be explicitly calculated from the expression of \(\partial (T_n, T_t) / \partial (\varDelta _n, \varDelta _t)\), as shown by Park and Paulino [64]. Note that the above formulation does not account for fluid flow within the fracture explicitly. Instead, for those elements with enriched degrees of freedom, the XFEM is used to account for the influence of the fracture on the permeability matrix \(\varvec{H}\), on the coupling term \(\varvec{Q}\) and on the compressibility term \(\varvec{M}\), through the terms \((\partial F_{{\mathbb {U}}}^{\text {int}} / \partial {{\mathbb {U}}}, \partial F_{{\mathbb {P}}}^{\text {int}} / \partial {{\mathbb {P}}})\). This approach integrates fluid flow in both the fracture and the matrix and requires few degrees of freedom, which makes the implementation of the model easier and allows achieving faster convergence rates. It is also important to note that the extra terms \(\frac{ \partial F^{{\text {int}}} }{\partial {\mathbb {P}}}\) are added to the coupling and permeability matrixes, which allows using the same linear interpolation function without concerning stability issue.

3.3 Analytical expression of the mechanical tangent stiffness matrix

Due to the adopted nonlocal formulation, the calculation of internal variables at a point requires calculating the average of the values taken by those variables at the Gauss points located in the influence zone. Consequently, additional terms need to be added to the consistent stiffness matrix \(\widetilde{\varvec{K}}_{\alpha \beta } ( \alpha ,\beta = u,a)\) due to nonlocal enhancement. Following the procedure of Jirásek and Patzák [44], we have

$$\begin{aligned} \widetilde{\varvec{K}}_{\alpha \beta }= & {} \varvec{K}_{\alpha \beta } + \frac{ \partial \varvec{K}_{\alpha \beta } }{\partial \varvec{u}} \varvec{u} \nonumber \\= & {} \int _\varOmega \Bigg ( \varvec{B}_\alpha ^T {\mathcal {C}} \varvec{B}_\beta + \varvec{B}_\alpha ^T \frac{\partial {\mathcal {C}}}{\partial \varvec{u}} \varvec{B}_\beta \varvec{u} \Bigg ) \text {d} \varOmega . \end{aligned}$$
(64)

where the first term on the right-hand side is the local Gauss point contribution, which can be numerically expressed as

$$\begin{aligned} \int _\varOmega \varvec{B}_\alpha ^T {\mathcal {C}} \varvec{B}_\beta \text {d} \varOmega = \sum _{I=1}^{N_I} w_I (\varvec{B}_\alpha ^{I})^T {\mathcal {C}} \varvec{B}_\beta ^I, \end{aligned}$$
(65)

where \(N_I\) is the total number of Gauss points, and \(w_I\) are the corresponding integration weights. The second term on the right-hand side of Eq. 64 constitutes the nonlocal Gauss points contribution. According to the chain rule, the derivative of the stiffness tensor with respect to the displacement reads:

$$\begin{aligned} \frac{\partial {\mathcal {C}} (\omega _{i}) }{\partial \varvec{u}} =\frac{\partial {\mathcal {C}}}{\partial \omega _{i}} \frac{\partial \omega _{i} }{ \partial \kappa _i } \frac{ \partial \kappa _i }{ \partial {\bar{\epsilon }}_{i}^{\rm eq} } \frac{ \text {d} {\bar{\epsilon }}_{i}^{\rm eq} }{ \text {d} \varvec{u} } \end{aligned}$$
(66)

For the plane strain case studied in this paper, it is possible to obtain the explicit expression of each of the partial derivatives involved in the above equation. In particular, the derivative of stiffness with respect to damage is:

$$\begin{aligned} \frac{ \partial {\mathcal {C}} }{\partial {\omega _{i}}} = \frac{1}{D^2} \left( \begin{array}{ccc} \partial _{\omega _{i}} {\mathcal {C}}_{11} D - \partial _{\omega _{i}} D {\mathcal {C}}_{11} &{} \quad \partial _{\omega _{i}} {\mathcal {C}}_{12} D - \partial _{\omega _{i}} D {\mathcal {C}}_{12} &{}\quad 0\\ \partial _{\omega _{i}} {\mathcal {C}}_{12} D - \partial _{\omega _{i}} D {\mathcal {C}}_{12} &{} \quad \partial _{\omega _{i}} {\mathcal {C}}_{22} D - \partial _{\omega _{i}} D {\mathcal {C}}_{22} &{}\quad 0\\ 0 &{} \quad 0 &{}\quad \partial _{\omega _{i}} {\mathcal {C}}_{33} {D^2} \\ \end{array} \right) \end{aligned}$$
(67)

in which

$$\begin{aligned} \begin{aligned}&\partial _{\omega _{1}} D= -2 (1-\omega _{2})\nu _{12}\nu _{21}\nu _{23} - (2-\omega _{2})\nu _{12}\nu _{21} \\&\partial _{\omega _{2}} D= - \nu _{23}^2 - 2(1-\omega _{1})\nu _{12}\nu _{21}\nu _{23} - (1-\omega _{1})\nu _{12}\nu _{21} \\&\partial _{\omega _{1}} {\mathcal {C}}_{11} = - E_{1} \Big ( (1-\omega _{2})\nu _{23}^2-1 \Big ) \\&\partial _{\omega _{2}} {\mathcal {C}}_{11} = - E_{1} \nu _{23}^2 (1-\omega _{1}) \\&\partial _{\omega _{1}} {\mathcal {C}}_{22} = -E_{2} \nu _{12}\nu _{21} (1-\omega _{2})\\&\partial _{\omega _{2}} {\mathcal {C}}_{22} = - E_{2} \Big ( (1-\omega _{1})\nu _{12}\nu _{21}-1 \Big )\\&\partial _{\omega _{1}} {\mathcal {C}}_{33} = - G_{12}(1-\omega _{2}) \\&\partial _{\omega _{2}} {\mathcal {C}}_{33} = - G_{12}(1-\omega _{1}) \\&\partial _{\omega _{1}} {\mathcal {C}}_{12} = {E_{1}}\nu _{21} (1-\omega _{2})(1+\nu _{23}) \\&\partial _{\omega _{2}} {\mathcal {C}}_{12} = {E_{1}}\nu _{21} (1-\omega _{1})(1+\nu _{23}) \\ \end{aligned} \end{aligned}$$
(68)

According to Eqs. 31 and 32, the partial derivatives of the damage components with respect to \(\kappa _i\) can be calculated as

$$\begin{aligned}&\frac{\partial \omega _{1} }{ \partial \kappa _1 } = \frac{1}{\alpha _{11}^t} \text {exp}\left( -\frac{ \kappa _1 - \epsilon _{11}^{t0}}{ \alpha _{11}^t}\right) , \nonumber \\&\frac{\partial \omega _{2} }{ \partial \kappa _2 } = \frac{1}{\alpha _{22}^t} \text {exp}\left( -\frac{ \kappa _2 - \epsilon _{22}^{t0}}{ \alpha _{22}^t}\right) . \end{aligned}$$
(69)

Note that the partial derivative terms

$$\begin{aligned} \frac{ \partial \kappa _1 }{ \partial {{\bar{\epsilon }}}_{1}^{\rm eq} }= & {} {\left\{ \begin{array}{ll} 0, &{}\quad \text {if } {{\bar{\epsilon }}}_{1}^{\rm eq}< \kappa _1 \\ 1, &{}\quad \text {if } {{\bar{\epsilon }}}_{1}^{\rm eq} = \kappa _1 \end{array}\right. },\nonumber \\ \frac{ \partial \kappa _2 }{ \partial {{\bar{\epsilon }}}_{2}^{\rm eq} }= & {} {\left\{ \begin{array}{ll} 0, &{}\quad \text {if } {{\bar{\epsilon }}}_{2}^{\rm eq} < \kappa _2 \\ 1, &{}\quad \text {if } {{\bar{\epsilon }}}_{2}^{\rm eq} = \kappa _2 \end{array}\right. } \end{aligned}$$
(70)

are actually the loading-unloading indicators.

Differentiating the nonlocal strains defined in Eq. 33 with respect to displacement, we obtain

$$\begin{aligned} \begin{aligned} \frac{ \partial {{\bar{\epsilon }}}_{i}^{\rm eq}{\left( \varvec{x}_I\right) } }{ \partial \varvec{u} }&= \sum _{J=1}^{N_J} w_J \alpha _{IJ} {\bigg ( \frac{ \partial \epsilon _{i}^{\rm eq} }{ \partial \varvec{u} } \bigg )_J} \\&=\sum _{J=1}^{N_J} w_J \alpha _{IJ} \bigg ( \frac{ \text {d} \epsilon _{i}^{\rm eq} }{ \text {d} \varvec{\epsilon } } \bigg )_J \frac{ \partial \varvec{\epsilon }_J }{ \partial \varvec{ u} } = \sum _{J=1}^{N_J} w_J \alpha _{IJ} \bigg ( \frac{ \text {d} \epsilon _{i}^{\rm eq} }{ \text {d} \varvec{\epsilon } } \bigg )_J \varvec{B}_J \end{aligned} \end{aligned}$$
(71)

in which:

$$\begin{aligned} \alpha _{IJ} = \frac{ \alpha _0( \Vert \varvec{x} -\varvec{\xi }\Vert ) }{ \sum _{J=1}^{N_{J}}\alpha _0(\Vert \varvec{x} -\varvec{\xi }\Vert ^T) w_J } \end{aligned}$$
(72)

and in which the notation of \(w_J\) in Eqs. 71 and 72 is the volume \(\varDelta V\) associated to Gauss point J. \(N_J\) is the total number of Gauss points within the nonlocal influence zone for Gauss point I. \({ \text {d} \epsilon _{i}^{\rm eq} }\) and \({ \text {d} \varvec{\epsilon } }\) are vectors, which can be calculated from the definition of the equivalent strains as

$$\begin{aligned} \begin{aligned} \frac{ \text {d} \epsilon _{1}^{\rm eq} }{ \text {d} \varvec{\epsilon }}&= \frac{1}{\epsilon _{1}^{\rm eq}} \left[ \begin{array}{ccc} \epsilon _{11}&\quad 0&\quad \epsilon _{12}\left( \frac{\epsilon _{11}^{t0}}{\epsilon _{12}^s}\right) ^2 \end{array} \right] ,\\ \frac{\text {d} \epsilon _{2}^{\rm eq} }{ \text {d} \varvec{\epsilon }}&= \frac{1}{\epsilon _{2}^{\rm eq}} \left[ \begin{array}{ccc} 0&\quad \epsilon _{22}&\quad \epsilon _{12}\left( \frac{\epsilon _{22}^{t0}}{\epsilon _{12}^{s0}}\right) ^2 \end{array} \right] \\ \end{aligned} \end{aligned}$$
(73)

Combining all the above expressions, we can obtain the analytical expression of the consistent tangent stiffness \(( \widetilde{\varvec{K}}_{\alpha \beta }, \alpha ,\beta = u,a)\) as:

$$\begin{aligned} \begin{aligned} \widetilde{ \varvec{K}}_{\alpha \beta }&= \sum _{I=1}^{N_I} w_I (\varvec{B}_\alpha ^{I})^T {\mathcal {C}} \varvec{B}_\beta ^I \\&\quad + \, \sum _{I=1}^{N_I}\sum _{J=1}^{N_J}\sum _{i=1}^{2} w_I w_J \alpha _{IJ} (\varvec{B}_\alpha ^{I})^T \bigg ( \frac{\partial {\mathcal {C}}}{\partial \omega _i} \frac{\partial \omega _{i} }{ \partial \kappa _i } \frac{ \partial \kappa _i }{ \partial \epsilon _{i}^{\rm eq} }\bigg )_I \\&\quad \bigg ( \frac{ \text {d} \epsilon _{i}^{\rm eq} }{ \text {d} \varvec{\epsilon } } \bigg )_J \varvec{B}_\beta ^J \varvec{B}_\beta ^I \varvec{u}_I \end{aligned} \end{aligned}$$
(74)

3.4 Damage-driven cohesive fracture propagation

The transition from continuum damage to macro-fracture is modeled by inserting cohesive segments to regular finite elements when damage reaches a critical threshold. Because the damage model employed in this paper is phenomenological, the transition can be triggered at any level of damage. We set \(\omega _{crit}= 0.1\) for all simulation cases presented in this paper. To compute the damage value at the crack tip, we adopt the method proposed by Wang and Waisman [85] and Wells et al. [86]. As shown in Fig. 5, we assume that the fracture propagates when the maximum component of the weighted damage vector (\(\omega _i, i= 1, 2\) for 2D) over the half-circle patch (shaded in blue) exceeds the threshold \(\omega _{crit} = 0.1\). Mathematically, we first obtain \(\bar{ \omega _i}\) by using the bell-shaped weight function \(\alpha _0(\Vert \varvec{x}- \varvec{\xi }\Vert )\), through

$$\begin{aligned} \begin{aligned} \bar{\omega _i} (\varvec{x}_{tip})&=\int _{\varOmega _T} \alpha (\varvec{x}_{tip}, \varvec{\xi }) \omega _i (\varvec{\xi }) \text {d} {\varOmega _T} (\varvec{\xi })\\&= \frac{\sum _{j=1}^{N_{GP}}{\alpha _0(\Vert \varvec{x}_{tip}- \varvec{\xi }_j \Vert )} \omega _i (\varvec{\xi }_j) \varDelta V_j }{ \sum _{j=1}^{N_{GP}}{\alpha _0(\Vert \varvec{x}_{tip}- \varvec{\xi }_j \Vert )} \varDelta V_j}, \quad (i=1, 2) \end{aligned} \end{aligned}$$
(75)

where \(\varvec{x}_{tip}\) and \(\varvec{\xi }\) are the global coordinates of fracture tip and the Gauss points in \(\varOmega _T\), respectively. \(N_{GP}\) is the total number of Gauss points in \(\varOmega _T\), and \(\varDelta V_J\) is the geometrical volume associated with Gauss point j. Note that the size of \(\varOmega _T\) is controlled by the internal length \(l_c\) because the weight function used for nonlocal enhancement is the bell-shaped function (Eq. 35).

Fig. 5
figure 5

Principle of the transition between continuum damage and discrete fracture in the hydraulic fracturing problem

The macro-fracture propagates in the direction \(\bar{\varvec{d}_i}\), calculated as the weighted average of the damage directions in the half-circle patch, as follows:

$$\begin{aligned} \begin{aligned} \bar{\varvec{d}_i} (\varvec{x}_{tip})&=\int _{\varOmega _T} \alpha (\varvec{x}_{tip}, \varvec{\xi }) \omega _i (\varvec{\xi }) \frac{\varvec{d}}{\Vert \varvec{d}\Vert } \text {d} {\varOmega _T} (\varvec{\xi }), \quad (i=1, 2) \end{aligned} \end{aligned}$$
(76)

where \(\varvec{d} = \varvec{\xi }- \varvec{x}_{tip}\), as shown in Fig. 5. To summarize, we first compare \({\text {max}}(\bar{\omega _i}), i = 1,2\) with \(\omega _{crit}\). If \({\text {max}}(\bar{\omega _i}) \ge \omega _{crit}\), we propagate the fracture in the direction of \(\bar{\varvec{d}_i}\) with a user-defined growth length \(\varDelta a\). For all the simulations presented in this chapter, we choose \(\varDelta a = l_c\). Since only the Heaviside function is used for XFEM discretization, no cohesive segment is inserted into the tip element if the fracture tip is located inside an element. It is worth noting that for a given time increment, the size of the zone in which damage satisfies the transition criterion may exceed the growth length \(\varDelta a\). Thus, we repeat the above calculation until \({\text {max}}(\bar{\omega _{i}}) < \omega _{crit}\). Within a single time increment, the length of the propagated fracture equals several times \(\varDelta a\). Every time the fractures grows by a length \(\varDelta a\), we add extra degrees of freedom at the enriched nodes and we add enriched shaped functions for the elements that contain newly enriched nodes. In addition, to ensure consistent displacement jumps across the fracture, we adopt the classical sub-region quadrature technique to divide a quadrilateral element into multiple triangles, as illustrated in Fig. 5. We use three Gauss points within each triangle to calculate the Jacobian matrix and the residual. To transform the internal and state variables from the initial to the new set of Gauss points, we adopt the super-convergent patch recovery method proposed by Zienkiewicz and Zhu [87]. After remapping, we recheck the propagation criterion and repeat all the follow-up steps. Once the propagation criterion is not satisfied, we march to the next increment and construct the global matrix equations, and the problem is iteratively solved. When convergence is reached and the results are postprocessed, the fracture propagation procedure is repeated. For clarification, the overall computational steps of the proposed numerical tool is presented in Algorithm 1.

figure a

4 Engineering applications

We implemented the proposed numerical framework in MATLAB for modeling fluid-driven multi-scale fracture propagation in transversely isotropic porous media. In the following, we validate the formulation and implementation of the multi-scale hydraulic fracturing model by comparing simulation results to analytical solutions for the classical Khristianovic–Geertsma–de Klerk (KGD) problem of hydraulic fracturing. Then, we investigate the relative influence of material and stress anisotropy on the fracture path during hydraulic fracturing. Note that linear quadrilateral plane strain elements are used to discretize the domain in all cases.

4.1 Model verification: KGD Injection Problem

The KGD problem is that of fracture propagation due to the injection of a viscous fluid in a borehole embedded in an infinite isotropic porous medium. Figure 6 presents the geometry, dimensions, boundary conditions and mesh used for the simulations. Only a half of the plane strain domain is modeled due to symmetry, and the size of the domain is chosen to avoid boundary effects. The internal length \(l_c\) is set to 0.05 m. We refine the mesh along the expected fracture propagation path with an element size 0.015 m. Note this element size satisfies the requirement of nonlocal regularization as it is less than 1/3 of the internal length \(l_c = 0.05\) m. In addition, the proposed cohesive element size is 10 times smaller than the cohesive process zone, which can be estimated as \(l_p = 0.1EG/\sigma _{max}^2\) according to Turon et al. [82]. An initial fracture with length 0.1 m is placed at the borehole, and a constant injection rate of \(Q=0.0002 m^2/s\) is applied at the fracture mouth. For all the simulation cases in this section, we set the initial effective stress and fluid pressure to zero, and we employ a constant time increment \(\varDelta t = 0.01 s\) for a total simulation time of 10 s. The remainder of the material parameters for the porous medium is given in Table 1.

Fig. 6
figure 6

The geometry, boundary conditions and finite element mesh of the KGD problem

Table 1 Material parameters for the KGD problem: hydraulic fracturing in an infinite isotropic porous medium
Fig. 7
figure 7

Trial and error calibration process for the multi-scale model of hydraulic fracturing: (1) Simulation of a splitting test with pre-inserted cohesive segments without damage evolution inside the matrix to obtain the global force-displacement curve; (2) simulation of the same splitting test with the proposed multi-scale framework, in which cohesive segments are dynamically inserted, to obtain the \(F-u\) curve; (3) adjustment of the material parameters used in simulation (2) until the two \(F-u\) curves match

Given that the considered domain is isotropic, the elastic constants as well as the damage evolution parameters are not direction dependent (Table 1). In addition, we assume that the cohesive strength and the cohesive energy release rate have the same value for mode I and mode II fracture propagation (\(\phi _n=\phi _t=G, \sigma _{\text {max}}=\tau _{\text {max}}\)) in all simulation cases. It is also worth noting that the damage initiation and evolution parameters (\(\epsilon _{11}^{t0}, \epsilon _{12}^{t0}, \alpha _{11}^{t}\)) as well as the cohesive fracture parameters (\(G, \sigma _{\text {max}}\)) are calibrated to ensure a consistent transition from damage to fracture. In this work, a constant cohesive strength and a constant energy release rate are assigned to each new cohesive segment inserted during fracture propagation. Note that it is possible to track the amount of energy dissipated by damage and to dynamically calculate the cohesive energy release rate as the difference between the total energy release rate and the damage energy release rate (see [39, 42]). The calibration of the multi-scale fracture propagation model is explained in Fig. 7. We first simulate a mode I splitting test using cohesive segments without damage development within the matrix. All the cohesive segments are inserted along the predefined fracture path (assumed to be known a priori in this particular case) and we use \(G = 100 N/m, \sigma _{\text {max}} = 1MPa\). We choose the rest of the parameters of the PPR cohesive model (\(m=n=4, \lambda _n = \lambda _t =0.01\)) so as to represent brittle fracture propagation and to ensure fast convergence. We track the global response of the opening displacement (u) and the reaction force (F) at the point where the displacement boundary is applied and we obtain the displacement–force curve marked with red circles in Fig. 7. We carry out another simulation with the same boundary conditions, with the proposed multi-scale fracturing model this time, in which nonlocal damage is modeled in the matrix at the first place, and cohesive segments are dynamically inserted once the maximum weighted damage component exceeds the threshold \((\omega _{crit})\). We adjust the damage initiation and evolution parameters (\(\epsilon _{11}^{t0}, \epsilon _{12}^{t0}, \alpha _{11}^{t}\)) and the cohesive fracture parameters (\(G, \sigma _{\text {max}}\)) by trial and error, until the global response (\(u-F\) curve marked with blue plus signs in Fig. 7) matches the response obtained when only cohesive segments are considered. For both simulation cases, the same Young’s modulus and Poisson ratio are used (Table 1), and the nonlocal internal length is \(l_c = 0.05 m\). After calibration, we obtain the same cohesive strength \(\sigma _{\text {max}} = 1 MPa\) for the multi-scale framework as for the cohesive segment model, but a lower cohesive energy release rate \(G_I = 90 N/m\). In summary, simulating multi-scale fracture propagation with the calibrated parameters represents fracture propagation in a porous material that has a 1 MPa strength and a total 100 N / m energy release rate according to laboratory measurements.

Fig. 8
figure 8

Distribution of damage component \(\omega _2\), nonlocal equivalent strain \({\bar{\epsilon }}^{\rm eq}\), pore pressure, and stress component \(\sigma _2\) on the deformed mesh (displacements multiplied \(10^3\) times) at the end of the simulation (\(t=10\) s). Note that the fracture propagates in direction 1 (x-axis)

Fig. 9
figure 9

Comparison of injection simulation results for various bounding medium permeabilities against the KGD analytical solution, in which the medium is assumed to be impermeable

Figure 8 shows the distribution of damage, nonlocal equivalent strain, pore pressure and stress on the deformed mesh (displacements multiplied by 1000) at \(t=10\) s. As expected, diffused damage \(\omega _2\) (horizontal micro-cracks) is obtained within the process zone surrounding the macro-fracture. Note that damaged elements are replaced by cohesive segments when the weighted damage exceeds the threshold \(\omega _{crit}=0.1\), and not when a particular component of damage exceeds that threshold. That explains why the fracture tip does not advance when \({\text {max}}(\bar{\omega _i}) < \omega _{crit}\), even when the value of damage components at a few Gauss points within the tip detection region \(\varOmega _T\) exceed the threshold, \({\text {max}}( {\omega _i}) \ge \omega _{crit}\) (Fig. 5). The distribution of the nonlocal equivalent strain \(\bar{\epsilon }^{\rm eq}\) shown in Fig. 8 indicates that tensile strains only exist in the area near the fracture tip. The fracture surface behind the tip is under compressive strain even when the pore pressure in this area is positive. Note that we assume that the entire simulation domain including the macro-fracture is saturated, i.e., the fluid lag is not considered. However, a suction zone with negative pore pressure is obtained at the fracture tip, which indicates that a mathematical fluid lag exists. We will consider multi-phase flow with explicit consideration of fluid lag in future studies. The distribution of \(\sigma _2\) further confirms that only a limited zone close to the fracture tip is under tension during hydraulic fracturing; the rest of the domain is under compression.

An analytical solution to the KGD problem was obtained for an elastic and impermeable medium in which a fracture propagates due to the injection of an incompressible fluid [32], as follows:

$$\begin{aligned} \begin{aligned} \text {CMOD}&= 1.87 \bigg (\frac{\mu (1-\nu )Q^3}{G_s}\bigg )^{1/6}t^{1/3} \\ L&= 0.68\bigg (\frac{G_s Q^3 }{\mu (1-\nu )}\bigg )^{1/6} t^{2/3} \\ \text {CMP}&= 1.135 \bigg (\frac{G_s^3Q\mu }{(1-\nu )^3L^2}\bigg )^{1/4} \\ \end{aligned} \end{aligned}$$
(77)

where \(G_s\) is the shear modulus, L is the fracture length at time t, CMOD stands for crack mouth opening displacement, and CMP stands for crack mouth pressure. The other notations are the same as in Table 1.

Figure 9 shows our simulation results of CMP, CMOD and L, plotted against injection time. We also simulated the KGD test with different permeabilities (\(\kappa = 2\times 10^{-13} m^2\), and \(\kappa =2\times 10^{-15} m^2\)), keeping the rest of the parameters the same (Table 1). Results are compared to the analytical KGD solution [32]. As expected, results highlight the significant influence of the intrinsic permeability on the evolution of the fracture geometry (\(\kappa = 2\times 10^{-13} m^2\) vs \(\kappa = 2\times 10^{-14} m^2\)). The CMP builds up and lasts longer for porous media with high permeability (Fig. 9a). Because the fluid leak-off decreases the fluid pressure in the fracture, the final fracture length is smaller in porous media with higher permeability. On the contrary, the CMP quickly decreases for porous media with low permeability, because the macro-fracture propagates quickly, thus creating space for the fluid to flow into. This phenomenon does not hold for all permeabilities. Below a certain permeability value, the CMP does not change any longer (\(\kappa = 2\times 10^{-14} m^2\) vs \(\kappa = 2\times 10^{-15} m^2\)). For \(t\le 1\)s, with a very low intrinsic permeability, the evolutions of L and of the CMOD found numerically match the analytical solution, in which the bounding medium is assumed to be impermeable. After 1s, the analytical solution overestimates the fracture length L and underestimates the CMOD. This discrepancy is because: (1) even for media with very low permeability, the assumption of impermeability does not hold because the fluid flow into the matrix decreases the effective stress that applies to the fracture faces; (2) the proposed multi-scale hydraulic fracture propagation model depends on the material’s strength and energy release rate, while the analytical solution is for a purely brittle fracture propagation problem, independent of strength or energy release rate.

Fig. 10
figure 10

Simulation results for a fluid-driven fracture in a porous medium with different injection rates

We further investigate the influence of the fluid injection rate on hydraulic fracturing for the KGD problem. All the material parameters are kept the same as in Table 1, and we vary the injection rate from \(Q=0.0002 m^2/s\) to \(Q=0.0005 m^2/s\). Figure 10 shows the calculated CMOD and fracture length evolution against the injection time, and the fracture opening displacement profile, the hydraulic water pressure profile as well as the effective cohesive attraction profile along the propagated fracture surface at the end of the simulation (at \(t=10\) s). The evolution of the CMOD and of the fracture length show that a higher injection rate results in faster fracture propagation and a wider fracture mouth opening. The profile of fracture opening at the end of the simulation further confirms that both the length and the width of the fracture increase with the injection rate. However, the increase rate is not linear, since the difference of CMOD and fracture length for the same injection rate interval \(d Q=0.0001 m^2/s\) at the same time is not the same. Due to the assumption of saturation, water pressure profile shown in Fig. 10d show negative value near the fracture tip area, and the magnitude of which increases with increasing injection rate. Figure 10e plot the effective cohesive attraction along the propagated fracture surface at time of \(t=10s\). For all of the injection rates, the cohesive attraction starts at the fracture tip and increases to cohesive strength \(\sigma _{\max } = 1 MPa\) and then gradually decreases to zero as the displacement jump increases. It is worth noting that the starting cohesive attraction for COD = 0 mm varies with the injection rate, because that the transition from continuum damage to discrete fracture is triggered from weighted damage, not from stress.

4.2 Influence of material and stress anisotropy on hydraulic fracturing

The following engineering problem illustrates the performance of the proposed computational framework in modeling the hydro-mechanical behavior of saturated media subjected to both material and stress anisotropy. A square domain 500 mm by 500 mm is considered. The solid skeleton is transversely isotropic with horizontal layers. We carry out three series of simulations (Fig. 11). In test 1, all normal displacements at the boundary are fixed. An initial fracture, 40 mm in length, oriented at an angle \(\theta\) with respect to the horizontal axis, is placed at the center of the domain (Fig. 11a). We investigate the effect of material anisotropy on hydraulic fracturing by varying the angle \(\theta\) under a constant fluid injection rate \(Q = 10\,{mm}^2/s\). About 6500 linear plane strain elements were used to discretize the domain. We set the initial pore pressure to zero, and we run the simulation in 0.2 s with the time increment \(\varDelta t = 0.005\) s. In test 2, we use the same initial and boundary conditions, but we change the fluid injection rate from \(Q = 10\,{mm}^2/s\) to \(Q = 20\,{mm}^2/s\). Comparing the results of tests 1 and 2 informs on the influence of injection rate on hydraulic fracturing in an anisotropic material. In test 3, anisotropic in situ stress is applied at the boundary and the injection angle \(\theta\) is nonzero, as shown in Fig. 11b. The other initial and boundary conditions are the same as in the previous two cases. The parameters used for the three simulations are listed in Table 2.

Fig. 11
figure 11

Geometry and boundary conditions used to investigate the influence of material and stress anisotropy on hydraulic fracturing in transversely isotropic materials

Table 2 Material parameters used in the simulations that investigate the influence material and stress anisotropy on hydraulic fracturing

Like in the KGD case, we calibrate by trial and error the material parameters that control damage evolution (\(\epsilon _{11}^{t0}, \epsilon _{22}^{t0}, \epsilon _{12}^{t0}, \alpha _{11}^{t},\alpha _{22}^{t}\)) and those that govern the cohesive fracture behavior (\(G_{,1}, G_{,2}, \sigma _{\text {max},1} , \sigma _{\text {max},2}\)) in the directions perpendicular and parallel to the layer. We use the local coordinate system in which axis-1 is perpendicular to the layer, and axis-2 is parallel to the layer. Note that in the following simulations, we fix the local coordinate system in such a way that axis-1 is always vertical. As explained in Fig. 12, we first simulate two splitting tests with pre-inserted cohesive segments parallel and perpendicular the layer, for which the cohesive energy values are \(G_{,1} = 0.1\,{N/mm}, G_{,2} =0.2 \,{N/mm}\) and the cohesive strengths are \(\sigma _{\text {max},1} =1\) MPa, \(\sigma _{\text {max},2} = 2\) MPa. Let us recall that in the PPR cohesive model, we employ \(\phi _n=\phi _t=G, \sigma _{\text {max}}=\tau _{\text {max}}, m=n=4, \lambda _n = \lambda _t =0.01\) to account for mixed mode fracture propagation and brittle fracture propagation [62, 64, 65]. We extract the global force–displacement curves (red circles for fractures parallel to the layer and green squares for fractures perpendicular to the layer). Then we run the same two simulations using the multi-scale hydraulic fracturing model, in which cohesive segments are dynamically inserted when the weighted damage at the fracture tip exceeds the critical value \(\omega _{crit}=0.1\). After a number of simulations with different input parameters, which control meso-scale damage evolution and macro-scale cohesive fracture propagation, we find the best match for the \(F-u\) curve, as shown in Fig. 12. The calibrated parameters are listed in Table 2. In summary, the calibrated multi-scale fracture propagation model is globally equivalent to a model of fracture propagation in a transversely isotropic material with \(G_{,1} = 0.1 {N/mm}, \sigma _{\text {max},1} =1\) MPa in direction parallel to the layer, and \(G_{,2} =0.2 {N/mm}, \sigma _{\text {max},2} = 2\) MPa in direction perpendicular to the layer.

Fig. 12
figure 12

Trial and error calibration process for coupling nonlocal damage with cohesive fracture for transversely isotropic materials: (1) simulation of two splitting tests with pre-inserted cohesive segments parallel (respectively perpendicular) to the layer to obtain the global force-displacement curve in the case of horizontal (respectively vertical) bedding; (2) simulation of the same splitting tests with the multi-scale hydraulic fracturing model, in which the cohesive segments are dynamically inserted, to obtain the \(F-u\) curves; (3) adjustment of the multi-scale hydraulic fracturing model parameters until the \(F-u\) curves match for both fracture propagation directions

Fig. 13
figure 13

Elliptical failure curve used to determine cohesive parameters when the fracture propagates at an angle \(\theta\) relative to the layer

The calibration process only provides the cohesive parameters when the fracture propagates in the direction parallel or perpendicular to the bedding. To determine the cohesive parameters when the fracture propagation direction is neither parallel or perpendicular to the bedding, a whole series of laboratory experiments would need to be carried out. In this paper, we propose to obtain the cohesive parameters by projection on an elliptical failure curve, as shown in Fig. 13. The cohesive strength and the energy release rate of a fracture that propagate at an angle \(\theta\) to the layer are expressed as:

$$\begin{aligned} \begin{aligned} \sigma _{\text {max},\theta }&= \sqrt{( \cos \theta \cdot \sigma _{\text {max},1} )^2 + (\sin \theta \cdot \sigma _{\text {max},2} )^2}\\ G_{,\theta }&= \sqrt{( \cos \theta \cdot G_{,1})^2 + (\sin \theta \cdot G_{,2})^2} \\ \end{aligned}, \end{aligned}$$
(78)

Fundamentally, we assume that the strength and the energy release rate at different propagation angles form an ellipse in plane strain condition.

Fig. 14
figure 14

Pore pressure and effective stress distributions shown on the deformed mesh (fracture opening magnified 50 times) at the end of the test 3 with \(\sigma _v = 4\) MPa, \(\sigma _h = 2\) MPa, and \(Q = 20\,{mm}^2/s\)

Figure 14 shows the pore pressure p, the effective stress component \(\sigma _x\) and the fracture paths at the end of the simulation (at \(t=0.02\) s) for test 3 with the boundary conditions \(\sigma _v = 4\) MPa, \(\sigma _h = 2\) MPa, and \(Q = 20\,{mm}^2/s\). The increased pore pressure near the fracture in Fig. 14a, b demonstrates that the proposed numerical tool can predict the fluid leak-off from the macro-fracture to the porous matrix. Compared to the case \(\theta =90^\circ\), the higher pore pressure observed for \(\theta =0^\circ\) is due to the lower permeability in the direction perpendicular to the layer (Table 2): more fluid pressure builds up and less fracture space is created (less fracture length and less width). In agreement with physical expectations, for \(\theta =30^\circ , 60^\circ\), compressive effective stress is observed in the area behind the fracture tip, and tensile effective stress only concentrates in the areas ahead of fracture tip. For \(\theta =30^\circ , 60^\circ , 90^\circ\), the fracture propagates in the direction of maximum compressive in situ stress, which is exactly what is reported in the literature. For \(\theta =0^\circ\), we expect to see two branches emerging from the tips of the initial horizontal fracture, that finally form vertical fractures. Instead, we obtain the horizontal fracture shown in Fig. 14a, because of the continuum damage to fracture transition criterion, based on a weighted damage threshold (Sect. 3.4). Even if the continuum damage model predicts damage development in the two vertical branch directions, the weighted damage direction is horizontal.

Fig. 15
figure 15

Pore pressure distribution shown on the deformed mesh (crack opening magnified 50 times) at the end of the tests simulated

Figure 15 shows the pore pressure distribution and the fracture paths at the end of the simulations (at \(t=0.02 s\)) for the three tests, when \(\theta = 30 ^\circ\) and when \(\theta = 60 ^\circ\). In test 1 (no in situ stress, \(Q=10\,{mm}^2/s\)), the fracture propagates in the horizontal direction parallel to the layer, for both \(\theta = 30 ^\circ\) (Fig. 15a) and \(\theta = 60 ^\circ\) (Fig. 15b). However, when the injection rate increases to \(Q=20\,{mm}^2/s\) (tests 2 and 3), the fracture path is horizontal only for \(\theta = 30 ^\circ\) under zero in situ stress (Fig. 15c), while a vertical fracture path is predicted for \(\theta = 60 ^\circ\) under the same boundary conditions (Fig. 15d). This questionable result can be attributed to: (1) The weighted damage-driven fracture propagation criterion, which, similar to all other continuum theory based propagation criteria, is not capable of predicting fracture branching; (2) the rapid injection of the fluid, which can change the fracture propagation direction if it does not align with the weak layer. Further laboratory experiments are needed to understand which of these two phenomena is the primary cause of the discrepancy. In tests 3, the fracture path is parallel to maximum compressive stress, irrespective of the initial fracture direction (the figure shows the case of \(\sigma _v= 4 MPa, \sigma _h = 2 MPa\)).

Fig. 16
figure 16

Simulated fracture paths

We further extracted the propagated fracture paths for all the tests simulated, as illustrated in Fig. 16. When only material anisotropy is considered, results show that a horizontal fracture path parallel to the layer forms (Fig. 16a). Typically, the fracture length and width increase with the injection rate. Questionable results are obtained in some of the cases with \(\theta \ge 60 ^\circ\), due to the weighted damage-driven fracture proposition criterion. Figure 16b presents a comparison between the cases with material anisotropy only (tests 1 and 2) and the cases with both material and stress anisotropy (test 3). For all orientations \(\theta\) considered, the predicted fracture length is shorter when in situ stress is applied. This is because a part of the energy is dissipated to overcome the compressive in situ stress. Some cases need further experimental assessment and more advanced fracture propagation criteria, especially when a horizontal fracture path is predicted under nonzero in situ stress or when a vertical fracture is predicted under zero in situ stress.

5 Conclusions

In this paper, we formulated and implemented a numerical tool to model multi-scale mixed mode fluid-driven fracture propagation in transversely isotropic porous media. We first presented the strong and weak forms of the governing equations for the hydraulic fracturing problem, including the equilibrium of forces for the mixture, the balance of fluid mass within the matrix, and the balance of fluid mass along the fracture. A nonlocal anisotropic damage model was coupled to the PPR cohesive macro-fracture model to simulate the transition between microscopic crack propagation and macroscopic fracture localization. The transition from continuum damage to cohesive fracture is done by dynamically inserting cohesive segments once the weighted damage exceeds a certain threshold. Diffusion equations are used to model fluid flow inside the porous matrix and within the macro-fracture, in which conductivity is obtained by Darcy’s law and the cubic law, respectively. The XFEM is employed to approximate the solution for the fully coupled \(\varvec{u}-p\) formulation: The macro-fracture is modeled with Heaviside jump functions for the displacement field and with modified distance functions for the fluid pressure. After discretizing the system of equations in time, the entire nonlinear system is linearized and solved by using a Newton–Raphson iteration scheme, in which the consistent tangent stiffness is derived analytically, accounting for the nonlocal terms, in the plane strain case.

We validate the formulation and implementation by simulating the KGD mode I fracture propagation problem in an infinite porous medium. We check that for low volumes of fluid injected in a porous medium of low permeability, the model provides predictions that are in agreement with the analytical solution proposed for impermeable media. We then examine the effect of material and stress anisotropy on hydraulic fracturing by simulating a series of injection tests in an inclined fracture embedded in a transversely anisotropic porous medium. As expected, the fracture propagates along the bedding direction in the absence of in situ stress and along the direction of maximum compressive stress when anisotropic stress boundary conditions are applied. The length and width of the fracture increase with the injection rate.

The validation against the KGD analytical solution shows that the widely used LEFM model might over-predict the propagation length. The proposed computational framework, the first of its kind, allows simulating multi-scale hydraulic fracturing. Improvements are still needed. For example, some discrepancies are noted, especially when both material and stress anisotropy are accounted for, because of the choice of the damage-to-fracture transition criterion, which cannot account for fracture branching (but works perfectly well for unidirectional fractures). On the one hand, a more detailed algorithm is needed to process the evolution of damage at the tip and predict branching paths; on the other hand, the level set method used to identify fracture paths in the XFEM has inherent limitations to account for multiple fracture branches and intersections, especially in 3D. To overcome these limitations, other numerical methods will be explored in future work, such as techniques based on the dynamic insertion of cohesive interface elements, peridynamics and the phase field method.