Introduction

Fluid flow through porous media has been the subject of interest in many areas, such as petroleum and resource engineering, geothermal energy extraction, and/or ground water hydrology, etc., for many years. Many analytical as well as numerical models have been developed to explain fluid flow through porous media. Although most of these models work well with reasonable accuracy in the case of reservoir consisting of homogenous media with simple geometry, they encourage huge uncertainty with erroneous results in the case of heterogeneous and discontinuous media, especially in presence of natural fractures and interacted induced hydraulic fractures with complex geometry.

In addition, numerical or analytical methods of solutions depend on the geometry of the reservoir, fluid flow type (Linear, Radial and Spherical), fluid flow regime (Transient, Late Transient, Steady State, Semi-Steady state), as well as discontinuity (conductive discontinuity with different permeability, sealed discontinuity with low permeability). To combine all of these factors to get a solution that can describe the flow, many assumptions need to be made. The more assumptions that are integrated into the solution, the more susceptible the solution will be to incur errors in results. Another problem with these methods is that they are not unique solutions. At any time, if one of the factors that are mentioned earlier is changed, the whole solution might change. A robust model is always desirable to address all of these issues and provide better and more accurate solution. In this view, study has been focused to develop a numerical tool to analyse fluid flow in the above mentioned complex scenarios.

Particle flow code (PFC) developed by Itasca consulting group which is based on distinct element method (DEM), is considered as a numerical tool to simulate fluid flow in porous media in this study. The initial fluid flow model was developed by Itasca. Further modifications were made on the model to simulate more realistic situations and validate the simulation results. The method developed is independent of the reservoir geometry, discontinuity, fluid flow type and regime; and is found to be more appropriate to simulate the reservoir that is heterogeneous in nature in relation to both the media and complex geometry (grain shape, size, as well as pore geometry).

A numerical model to simulate the fluid flow through heterogeneous porous media, especially in presence of natural fractures interacted with hydraulic fracture is presented in this paper. In this study, two cases of laminar and radial fluid flow conditions are simulated using the numerical model developed based on distinct element method. The accuracy of the model is validated by comparing the simulation results with analytical results.

After validation, this model is used to simulate fluid flow in a reservoir that is hydraulically fractured and contains two sets of natural fractures. Based on the results, it is demonstrated that proposed DEM based model can potentially be used to analyse fluid flow through complex reservoirs.

Discrete element method

Reservoir rock consists of grains, pores which are filled with pore fluids and possibly joints and faults or in a general term discontinuity which may or may not be filled with cement. If the size of discontinuities is not in the scale of the reservoir rock, a continuum based model may be accurate enough for simulation by incorporating some modification in the model to include the effect of these features. However, if the size of discontinuities are comparable with the size of the rock, continuum based models may lose their accuracy. In this case, a discontinues based model will provide better results (Morris et al. 2003). One of these discontinues models is Discrete Element Method, which is a family of numerical methods that defines the domain as a combination of independent elements. This method is mostly used for granular media, fractured rock systems, systems composed of multiple bodies in mechanical engineering and also fluid mechanics. During 1970s–1980s, this method has rapidly developed for geological and engineering applications. The major breakthrough was by Cundall in 1971, to study rock mechanical properties. In 1979, Cundall and Stark applied this method for soil mechanics. In Discrete Element Method, the independent particles can be either rigid or deformable, and can have circular or polygonal shape (Jing and Stephansson 2007). A great advantage of Discrete Element Method compared to continuum based model is that meshes are built by individual elements and there is no need for re-meshing as the simulation progresses. Figure 1 shows a structure that has been modelled by Discrete Element Method and Finite Element Method. It is evident from this figure that in case of Finite Element Method, meshes are rigid, and if a fracture initiates, the model needs to be re-meshed. On the other hand, in the model that is constructed based on Discrete Element Method, there is no need for re-meshing (Tavarez 2005) and this characteristic is because of the property of Discrete Element Method that:

Fig. 1
figure 1

A sample that has been simulated by: a Finite Element Method, b Discrete Element Method (Tavarez 2005)

  • Rotation, finite displacement and complete detachment of discretised bodies are allowed

  • While the calculation progresses, new contacts can be automatically recognized (Morris et al. 2003)

Four basic classes of computer programs can be defined based on the definition of Discrete Element Method (Cundall and Hart 1992):

  1. 1.

    Distinct Element Programs

  2. 2.

    Modal Methods

  3. 3.

    Discontinuous deformation analysis

  4. 4.

    Momentum-exchange methods

Figure 2 shows a summary of the characteristics of the Discrete Element Method classes, as well as Limit Equilibrium, Limit Analysis Method.

Fig. 2
figure 2

Characteristics of Discrete Element Method classes as well as Limit Equilibrium, Limit Analysis. After (Cundall and Hart 1992)

Distinct element programs have been developed based on Distinct Element Method (DEM) which is a sub-classification of Discrete Element Method. In this method, contacts are deformable and discretised elements can be either rigid or deformable (Cundall and Hart 1992). The solution scheme is based on explicit time stepping which time steps are chosen so small that the disturbances introduced by a single particle cannot propagate beyond neighbouring particles (Cundall and Strack 1979). Detailed description of the method can be found in (Cundall 1988) and (Hart et al. 1988).

PFC2d (Particle Flow Code in two dimensions) is a DEM based commercial software developed by Itasca Consulting Group. In this software, discretised bodies are composed of rigid circular particles that can have a random distribution of radius size from a range defined by the user. The analysis is based on Force–Displacement calculation for individual particles and applying Newton’s second law for calculating velocity and position of particles in each time step (Itasca 2008a). Figure 3 depicts the general algorithm used in PFC:

Fig. 3
figure 3

Algorithm used in PFC2D for force, velocity and displacement calculation. (Itasca 2008a)

Figure 4 shows a collection of particles that have been generated in PFC. Each particle in contact with other particles can cause normal and tangential forces. The magnitude of these forces depends on the overlap of particles, elastic properties of particles, contact model and contact model properties.

Fig. 4
figure 4

Particle Collection and relative normal and tangential forces. After (Huynh 2014)

More information about the formulation and analysis procedure can be found in PFC2D manual (Itasca 2008a).

DEM fluid flow

In PFC2D, porous medium, through which fluid flows, is considered to be composed of individual circular particles, which are connected together by contact or parallel bond. The void space between particles is assumed to be filled with fluid, which flows between these void spaces. To characterize fluid flow between these void spaces, it is required to define the domain term. A domain is defined as a closed loop polygon by particles that are connected to each other, as illustrated in Fig. 5. Each side of the polygon is a line segment connecting centres of two particles that are connected by contact bond (Itasca 2008b).

Fig. 5
figure 5

Particles and Domains

Figure 5 shows 10 particles and 3 domains. Particles are in grey colour. Domain 1 is in blue colour, domain 2 is in yellow colour and domain 3 is in red colour. Figure 6 shows a sample which is a compacted bonded assembly of particles. In this figure, particles are in grey colour. Black circles show centres of domains. Size of black circles is in direct relationship to volumes of domains with biggest size showing largest domain volume and smallest size showing the smallest domain volume. Black lines show connection of each domain to its neighbouring domains. Red lines show boundaries of domains and they connect centre of particles that build the domain.

Fig. 6
figure 6

A sample Composed of grey particles. Black circles are centres of domains and their size is based on size of domain volume. Black lines connect each domain to its neighbouring domains. Red lines show boundaries of each domain

Fluid flow happens between domains through a pipe centred at the contact point between each two particles. Pipe length is the sum of two particles radius. Aperture between parallel plates is denoted as “w”. The depth of the pipe is equal to unity (Itasca 2008b).

Figure 7a shows two domains connected by the pipe. Domains are denoted as \({\text{Domain}}_{i}\) and \({\text{Domain}}_{j}\), and the pipe connecting them is shown as a rectangle in red colour. Figure 7b shows the pipe. Aperture of the pipe is \(w\) and its length is \(L_{\text{P}}\). Depth of the pipe which is in out of plane direction is equal to one.

Fig. 7
figure 7

a Pipe connecting two domains. Pipe is shown in red colour. b Pipe with length L P, width w, and depth 1

Fluid flow through pipe is governed by the Poiseuille Equation for fluid flow through parallel plates (Garde 1997):

$$q = \frac{{w^{3} }}{12\mu }\frac{{P_{i} - P_{j} }}{{L_{\text{p}} }}$$
(1)

where;

q: Flow Rate, P i : Pressure in Domain i, P j : Pressure in Domain j, μ: Fluid Viscosity, L p: Pipe Length.

Pipes can be defined between two particles, only if they are in contact. However, after they have been initialized they will exist even if particles detach from each other. When particles are in contact, the aperture of the pipe will be zero. But to take into account the macroscopic permeability of the rock and to overcome the 2D limitation of the simulation, “w” will be set to a number greater than zero (Itasca 2008b).

After setting the initial value for aperture, its value should also take into account the nature of the contact between its two adjacent particles. That means, if particles are still in contact and apply a compressive force on each other, “w” can be found by Eq. 2 (Itasca 2008b):

$$w = \frac{{w_{0} F_{0} }}{{F - F_{0} }}$$
(2)

\(w_{0}\) is the initial aperture. \(F_{0}\) is fixed value and is the amount of normal force that changes the aperture to half of its initial value. F is the compressive force between particles and its value can change. If the value of F is much lower than F 0, the value of w would not change appreciably. If the value of F is negative (i.e. particles bond is under tension), the aperture value is obtained by Eq. 3 (Itasca 2008b):

$$w = w_{0} + m \; \times \;g$$
(3)

In this equation, g denotes the gap or the distance between particles. \(m\) is a calibration constant and can have a value between zero to one.

Macroscopic permeability value of the rock can be reproduced by adjusting values of w 0, F 0 and m. Each domain has pressure communication with other surrounding domains. Total flow in and out of each domain is \(\sum\limits_{i = 1}^{n} {q_{i} }\) with “n” being the number of surrounding domains that is different for each individual domain with a minimum value of one and maximum value can be any number greater than zero. Total flow volume into a domain in one time step is given by Eq. 4 (Itasca 2008b):

$$\Delta V_{\text{Domain}} = \Delta t \times \mathop \sum \limits_{i = 1}^{n} q_{i}$$
(4)

“n” is different for different domains and is equal to number of surrounding domains and \(\Delta t\) is time step. In each time step, domains experience a mechanical volume change because of movement of particles. These movements are because of changes that occur in forces between particles. Total pressure change in one time step for a single domain is (Itasca 2008b):

$$\Delta P = \frac{{K_{\text{f}} }}{{V_{\text{d}} }}\left( {\Delta t \times \mathop \sum \limits_{i = 1}^{n} q - \Delta V_{\text{d}} } \right)$$
(5)

\(\Delta V_{\text{d}}\) is mechanical volume change of the domain, \(V_{\text{d}}\) is the volume of the domain and \(K_{\text{f}}\) is the bulk modulus of the fluid.

After a sample is generated, it will be enclosed by four frictionless plates as shown in Fig. 8. These plates can move independent of each other toward or away from sample. Plates have no interaction on each other and only interact with particles of the sample. The purpose of these plates is to introduce principle stresses on the specimen to resemble tectonic stresses that are present underground.

Fig. 8
figure 8

Sample with principle stresses acting on its sides

Because of principle stresses, particles exert normal and tangential forces on each other. In addition to these forces, fluid inside pore spaces also exerts some force on particles. Figure 9a shows a domain with pressure \(P_{i}\) and Fig. 9b shows particle 1 and forces on it that are generated because of pressure in domain. Resultant of these forces is \(F\).

Fig. 9
figure 9

a Domain with pressure P, b Pressure applied to part of particle 1 that is exposed to domain 1 and generated force F because of pressure P

The magnitude of force that is exerted on Particle 1 by fluid pressure in domain i is the product of pressure by the area of the particle that is exposed to domain i.

$$F\; = \;P \times A = P_{i} \times (1 \times r_{1} \times \theta_{1} ) = P_{i} r_{1 } \theta_{1}$$
(6)

The depth of the particle is equal to 1. So the area is equal to 1 multiplied by the length of the arc. Length of arc is equal to radius of the particle multiplied by the angle that forms between the lines joining the centre of the particle to its neighbouring particles. Direction of force is outward from the domain in the direction of the line that divides the arc into two halves.

$$\beta_{1} = \beta_{2} = \frac{{\theta_{1} }}{2}$$
(7)

If θ in Eq. 6 is greater than π, then it should be subtracted from 2π and the result be substituted instead of θ. This is shown in Fig. 10. It is evident from figure that forces that are applied to the shaded section of the particle will balance each other out. The net force that remains on the particle as a result of pressure in domain i will be equal to the forces that are applied on the arc between the dashed lines. Also from figure, it can be seen that \(\beta = 2\pi - \theta\).

Fig. 10
figure 10

θ is greater than π. The value of θ should be replaced by β in Eq. (6)

For simplicity of calculations, the mechanical volume change in domains is neglected as its value is very small and will not make a noticeable change in results. On the other hand, domain volumes will be updated in every time step. The solution to fluid flow alternates between flow through pipes and pressure adjustments between domains. This means, in each time step, the fluid flow through pipes is calculated and the total net flow to or from each domain will cause pressure change in domains. For stability analysis, a critical time step needs to be calculated. The procedure is to first calculate the critical time step for each domain and then take the minimum time step of all critical time steps as the global time step (Itasca 2008b).

In every time step, total flow into a domain because of pressure perturbation, ∆P p is calculated by Eq. 8 (Zhao 2010).

$$q\; = \;\frac{{Nw^{3} \Delta P_{\text{p}} }}{{24\mu \bar{R}}}$$
(8)

N is the number of pipes for each domain, and \(\bar{R}\) is the average of radius of particles that surround the domain. Solving for ∆P p:

$$\Delta P_{\text{p}} = \frac{{24q\mu \bar{R}}}{{Nw^{3} }}$$
(9)

The pressure disturbance applied to domain because of the above flow rate is (Zhao 2010):

$$\Delta P_{\text{r}} = \frac{{K_{\text{f}} }}{{V_{\text{d}} }}\left( {\Delta t \times Q - \Delta V_{\text{d}} } \right)$$
(10)

To confirm stability, the pressure response needs to be less than or equal to pressure perturbation:

$$\Delta P_{\text{r}} \le \Delta P_{\text{p}}$$
(11)

If we replace Eqs. 9 and 10 in Eq. 11 we will get Eq. 12:

$$\frac{{K_{\text{f}} }}{{V_{\text{d}} }}(Q\; \times \;\Delta t - \Delta V_{\text{d}} ) \le \frac{{24q\mu \bar{R}}}{{Nw^{3} }}$$
(12)

Solving Eq. 12 for ∆t will result in Eq. 13:

$$\Delta t \le \frac{{24\mu \bar{R}V_{\text{d}} }}{{NK_{\text{f}} w^{3} }} + \frac{{\Delta V_{\text{d}} }}{Q}$$
(13)

To simplify the right hand side of Eq. 13, \(\frac{{\Delta V_{d} }}{Q}\) is neglected and the remaining terms are multiplied by a safety factor (Zhao 2010):

$$\Delta t \le \;\frac{{24\mu \bar{R}V_{\text{d}} }}{{NK_{\text{f}} w^{3} }} \times S.F.$$
(14)

The fluid flow calculation is explicit in time. Figure 11 shows the algorithm for fluid flow calculation. In every time step, fluid flow between domains and pressure change at domains is calculated, and domain pressures are updated. The loop in this figure does not mean that the calculations are iterative. Every one cycle of calculations progresses fluid flow one time step in time. Addition of time steps in all calculation cycles show how long fluid has flown in the porous medium.

Fig. 11
figure 11

Algorithm of fluid flow calculation. Calculations are explicit in time

It can be concluded from this section that the fluid flow at microscopic level is independent of the reservoir geometry because the fluid flows between the domains, can be created for any reservoir shape. This characteristic makes this method applicable for any reservoir geometry. Also, this method is independent of flow type (i.e., linear, radial, etc.) and flow regime (i.e., transient, late transient, steady state or semi steady state), and can be applied for any flow type and regime.

A discontinuity such as a fracture or a joint has a permeability that can be different from matrix permeability. These discontinuities can be incorporated into the system by using smooth-joint model. Domain pipes that are on smooth-joint can have different aperture (w) and by adjusting these apertures, discontinuity permeability can be reproduced. In this way, the only difference between pipes that represent discontinuity and pipes that represent pore throat is their aperture. Following this method simplifies the incorporation of discontinuities without requiring developing a whole new system to describe fluid flow. Analytical models, on the other hand, may require development of whole new solution as a new type of discontinuity is presented in the system. Figure 12 illustrates a sample with two sets of joints with dip angles of (60°) and (−20°).

Fig. 12
figure 12

Sample with two sets of natural fractures

Analytical methods

To validate numerical model, two cases of linear fluid flow and radial fluid flow in porous medium is considered. The formation in both cases is finite. For each case, the analytical formula with its boundary and initial conditions is presented in Sects. “Linear fluid flow condition” and “Radial fluid flow condition”. Derivation of these analytical equations is presented in Appendices A and B. Solutions of both cases are used in the comparison section to compare the results of numerical model against analytical models.

Linear fluid flow condition

One dimensional fluid flow is considered in a sample with dimensions of \(L \; \times \;H \; \times \;W\). The initial pore pressure of the sample is set equal to \(P_{i}\). Boundaries have constant pressure. The pressure at one end of the sample is \(P_{1}\) and on the other end is \(P_{2}\). Equation 15 shows the initial condition. Equations 16 and 17 show the boundary conditions:

$$P\left( {x,\;t = 0} \right) = P_{i}$$
(15)
$$P\left( {x = 0,\;t > 0} \right) = P_{1}$$
(16)
$$P\left( {x = L,\;t > 0} \right) = P_{2}$$
(17)

Equation 18 shows the linear form of pressure diffusion equation in porous media (Donnez 2012):

$$\frac{{\partial P}}{{\partial t}} = \alpha ^{2} \frac{{\partial ^{2} P}}{{\partial x^{2} }};\,t \ge 0,\quad0 \le x \le L$$
(18)

\(\alpha^{2}\) is called hydraulic diffusivity and is equal to fluid mobility divided by fluid storability (Donnez 2012):

$$\alpha^{2} = \frac{k}{{\varphi \mu c_{\text{t}} }}$$
(19)

The solution of Eq. 18 is presented in Appendix A. The final solution is shown in Eq. 20:

$$\begin{aligned} P\left( {x,\;t} \right) = & \left( {P_{1} + \frac{{P_{2} - P_{1} }}{L}x} \right) \\ \quad + \mathop \sum \limits_{{n = 1}}^{\infty } \left( \begin{gathered} \frac{{2\left( {P_{i} - P_{1} } \right)\left( {1 - \left( { - 1} \right)^{n} } \right)}}{{n\pi }} \hfill \\ + 2\left( {P_{2} - P_{1} } \right)\left( {\frac{{\left( { - 1} \right)^{n} }}{{n\pi }}} \right) \hfill \\ \end{gathered} \right)e^{{ - \frac{{\alpha ^{2} n^{2} \pi ^{2} }}{{L^{2} }}t}} {\text{sin}}\frac{{n\pi x}}{L},\quad n = 1,2,3, \ldots \\ \end{aligned}$$
(20)

To simplify calculations, the concept of dimensionless parameters is used. Dimensionless pressure, position and time are defined as (Ahmed and McKinney 2011):

$$P_{\text{D}} = \frac{{P_{1} - P(x,\;t)}}{{P_{1} - P_{2} }}$$
(21)
$$x_{\text{D}} = \frac{x}{L}$$
(22)
$$t_{\text{D}} = \frac{{t \times \alpha^{2} }}{{L^{2} }}$$
(23)

If \(P_{1}\) is set equal to \(P_{i}\) and \(P_{2}\) is set equal to zero, after re-arranging Eq. 20 and using Eqs. 2123 dimensionless pressure is:

$$P_{\text{D}} = x_{\text{D}} + \frac{2}{\pi }\mathop \sum \limits_{n = 1}^{\infty } \frac{{( - 1)^{n} }}{n}e^{{ - n^{2} \pi^{2} t_{\text{D}} }} {\text{sin}}(n\pi x_{\text{D}} ), \quad n = 1,2,3, \ldots$$
(24)

Equation 24 is the dimensionless form of pressure diffusion equation of laminar fluid flow in a sample with initial pore pressure of \(P_{i}\) and constant boundary pressures of \(P_{1} = P_{i}\) and \(P_{2} = 0\).

Radial fluid flow condition

Radial fluid flow is considered for a sample with external radius (\(R_{\text{e}}\)) and wellbore radius \((R_{\text{w}} )\). Initial pore pressure is \(P_{i}\). Pressure at outer boundary \((R_{\text{e}} )\) is kept constant at \(P_{i}\) while wellbore pressure changes to ensure constant wellbore flow rate. Equations 25 and 26 show inner and outer boundary conditions (Ahmed and McKinney 2011). Equation 27 is the initial condition.

$$\left( {\frac{{2\pi {\text{kh}}}}{\mu }R\frac{\partial P}{\partial R}} \right)|_{{\left( {R\; = \;R_{\text{w}} , t > 0} \right)}} = Q = {\text{constant}} = \frac{{2\pi {\text{kh}}(P_{\text{e}} - P_{\text{w}} |_{\text{steady state}} )}}{{\mu \ln \left( {\frac{{R_{\text{e}} }}{{R_{\text{w}} }}} \right)}}$$
(25)
$$P\left( {R_{\text{e}} ,\;t > 0} \right) = P_{i}$$
(26)
$$P\left( {R,\;t = 0} \right) = P_{i}$$
(27)

The radial form of pressure diffusion equation in porous media is shown in Eq. 28 (Dake 1978):

$$\frac{1}{R}\frac{\partial }{\partial R}\left( {R\frac{\partial P}{\partial R}} \right) = \frac{{\varphi \mu c_{\text{t}} }}{k}\frac{\partial P}{\partial t}, \quad t \ge 0, \quad R_{\text{w}} \le R \le R_{\text{e}}$$
(28)

Solution of Eq. 28 is shown in Appendix B. The final solution in dimensionless form is:

$$\begin{aligned} P_{\text{D}} = 1 - \frac{{\ln \left( {R_{D} } \right)}}{{\ln \left( {R_{\text{De}} } \right)}} + \hfill \\ \frac{{\mathop \sum \nolimits_{n = 1}^{\infty } \frac{{\pi J_{0}^{2} \left( {\lambda_{n} R_{\text{De}} } \right)}}{{\lambda_{n} \,\left( {J_{1}^{2} \left( {\lambda_{n} } \right) - J_{0}^{2} \left( {\lambda_{n} R_{\text{De}} } \right)} \right)}}\left( {Y_{1} \left( {\lambda_{n} } \right)J_{0} \left( {\lambda_{n} R_{\text{D}} } \right) - J_{1} \left( {\lambda_{n} } \right)Y_{0} \left( {\lambda_{n} R_{\text{D}} } \right)} \right)e^{{ - \lambda_{n}^{2} t_{\text{D}} }} }}{{\ln \left( {R_{\text{De}} } \right)}} \hfill \\ \end{aligned}$$
(29)

Equation 29 is the dimensionless form of pressure distribution across a circular reservoir with constant outer boundary pressure and constant wellbore flow rate. \(\lambda_{n}\) in this equation are roots of Eq. 30. \(Y_{1}\) is first order of second kind Bessel function, \(Y_{0}\) is zeroth order of second kind Bessel function, \(J_{0}\) is zeroth order of first kind Bessel function and \(J_{1}\) is first order of first kind Bessel function.

$$Y_{1} \left( {\lambda_{n} } \right)J_{0} \left( {\lambda_{n} R_{\text{De}} } \right) - J_{1} \left( {\lambda_{n} } \right)Y_{0} \left( {\lambda_{n} R_{\text{De}} } \right) = 0$$
(30)

Knowing \(R_{\text{De}}\), Eq. 30 can be solved to get the values of \(\lambda_{n}\). There are infinite numbers of \(\lambda_{n}\) that will satisfy this equation and they are called eigenvalues of this equation. Dimensionless parameters in Eq. 29 are defined as:

$$R_{D} = \frac{R}{{R_{\text{w}} }}$$
(31)
$$t_{D} = \frac{kt}{{\varphi \mu cR_{w}^{2} }}$$
(32)
$$P_{\text{D}} \left( {R_{\text{D}} ,\;t_{\text{D}} } \right) = \frac{{P_{i} - P}}{{P_{i} - P_{\text{w}} |_{{\left( {\text{steady state}} \right)}} }}$$
(33)

\(R_{\text{D}}\) is dimensionless radius, \(t_{\text{D}}\) is dimensionless time and \(P_{\text{D}}\) is dimensionless pressure.

Comparison of numerical and analytical models

Linear fluid flow with constant boundary pressures

Figure 13 shows a sample before setting the pore pressure (a) and the same sample with pore pressure being set (b). Right hand side of the sample in (b) has no pore pressure as its pore pressure is set equal to zero and will be kept at zero during fluid flow. The left hand side pressure will be kept constant at initial pressure. Sample length is 14 meter, its height is 14 meter and its width which is an out of plane dimension is equal to one meter. The sample length between the left boundary and the right boundary is 13.5 meters. Brown circles in Fig. 13b represent domain pressure.

Fig. 13
figure 13

a Sample. Each yellow circle shows a partible, b Sample after setting pore pressure. Each brown circle shows the domain pore pressure

Figure 14 shows the simulation results at four different times. Each point shows the pressure of a domain. Vertical axis shows pressure in Mega Pascal (MPa) and horizontal axes show the x and y position of the domain. The pressure at left hand side is kept constant at initial pressure and pressure at right hand side is kept constant at zero. At the beginning of simulation, flow rate on the left hand side is zero as pressure reduction wave has not reached it and the flow rate on the right hand side is \(1.101\; \times \;10^{ - 3}\; {\text{m}}^{3} / {\text{s}}\). The flow rate quickly drops on the right hand side as the pressure on the right hand side start to fall down. As soon as the pressure reduction wave reaches the left hand side, the flow rate on left hand side start to increase. Flow rate keeps increasing on left and falling on right until steady-state flow rate is established. At steady-state condition, flow rate on both sides is equal to \(1.365\; \times \;10^{ - 5}\; {\text{m}}^{ 3} / {\text{s}}\). Figure 15 shows pressure distribution across sample with each point representing the pressure of its domain. At \(t\; = \;15067 \,{\text{s}}\), a steady state flow regime is established.

Fig. 14
figure 14

Simulation results at four different times a t = 67 Seconds, b t = 267 Second, c t = 667 Seconds and d t = 15,067 Second

Fig. 15
figure 15

Simulation results. Pressure of domains against linear distance from left hand side of sample at different times. As time increases, domain pressures decrease until a steady state condition is established

To make sure that simulation results are correct, they are compared against analytical results. To do so, data in Fig. 15 are converted to dimensionless form by using Eqs. 2123.

The permeability of the simulated sample can be obtained by using Darcy equation for linear flow in steady-state condition as given by Eq. 34.

$$q = \frac{{0.001127kA(P_{1} - P_{2} )}}{\mu L}$$
(34)

By inserting the values of different parameters from Table 1 into Eq. 34, permeability is found to be \(2.67\; \times \;10^{3} \;{\text{md}}\). To confirm that this is the correct value, another simulation has been conducted with different initial pressure of \(8.00 \;{\text{MPa}}\). Steady state flow rate was \(2.18\; \times \;10^{ - 5}\; {\text{m}}^{ 3} / {\text{s}}\). Rest of the parameters were kept constant. By inserting new values for initial pressure and flow rate, permeability is calculated to be \(2.67\; \times \;10^{3} \;{\text{md}}\), which is same as the value calculated before. Dimensionless times and position are also inserted in Eq. 24 to compare simulated versus analytical results. Equation 35 is the dimensionless time in field units. Table 2 shows simulation time in seconds and day and calculated dimensionless time.

Table 1 Parameters of simulation at steady state condition
Table 2 Simulation time (t) and dimensionless time (t D)
$$t_{\text{D}} = \frac{0.006336kt}{{\varphi \mu c_{t} L^{2} }}$$
(35)

The units for different parameters are:

k: md, t: day, μ: cp, c t: psi−1, L: ft.

Figure 16 shows results of simulation in dimensionless form versus analytical results. It shows that data from simulation match very well with analytical results and validates the model for linear fluid flow.

Fig. 16
figure 16

Simulated versus analytical results. Vertical axis shows dimensionless pressure and horizontal axis shows dimensionless position. On each curve, coloured dots are simulation results and black dots are analytical results

Radial fluid flow

Radial fluid flow is simulated for a reservoir with constant external boundary pressure and constant wellbore flow rate. Figure 17a shows the reservoir with wellbore in the centre. Figure 17b shows the reservoir with boundary pressure set. Pressure at distances more than external radius \(R_{\text{e}}\) is constant. Wellbore radius is \(R_{\text{w}}\) and height of the reservoir which is out of plane dimension is equal to one. Each brown circle represents pore pressure of a domain which is kept constant at \(7\;{\text{MPa}}\) at distances greater than external radius.

Fig. 17
figure 17

a Reservoir with wellbore at centre, b Reservoir with boundary pressure of \(7\;{\text{MPa}}\). Brown circles show domain pressure

Figure 18 shows the reservoir with initial pore pressure set to \(7\;{\text{MPa}}\). The initial and boundary pressure are equal.

Fig. 18
figure 18

Reservoir with initial pore pressure set to \(7\; {\text{MPa}}\)

Figure 19 shows simulation results within the external radius of the reservoir. Before starting production from wellbore, the pressure across the whole reservoir is same and equal to \(P_{i}\). As production starts with constant wellbore flow rate, pressure starts to decrease near the wellbore. As simulation continuous, the pressure reduction wave propagates toward the outer boundary. Before pressure reduction arrives at outer boundary, flow rate at outer boundary is zero. As soon as the pressure reduces near the outer boundary, the flow rate starts to increase. Flow rate keeps rising until steady-state condition is reached. At steady-state condition, outer boundary flow rate is equal to wellbore flow rate.

Fig. 19
figure 19

Simulation results at four different times a t = 120.03 Seconds, b t = 420.03, c t = 1420.03 and d t = 24,086.70 s

Table 3 shows simulation parameters:

Table 3 Parameters of Simulation

At steady state condition, wellbore pressure becomes constant and equal to \(3.49\; \times \;10^{6} {\text{ Pa}}\) and is used to determine the permeability of the reservoir. Steady state radial flow in field units is:

$$Q|_{\text{steady state}} = \frac{{0.00708kh\;(P_{\text{e}} - P_{\text{w}} )}}{{\mu \ln \;(\frac{{R_{\text{e}} }}{{R_{\text{w}} }})}}$$
(36)

The units for different parameters are:

k: md, P: psia, μ: cp, h: ft, R: ft.

Using Eq. 36, permeability is found to be equal to \(2.44\; \times \;10^{3} \;{\text{md}}\).

Figure 20 shows simulation results of pressure versus radius. Vertical axis shows pressure in \({\text{Pa}}\) and horizontal axis shows radius in \({\text{meters}}\). Each point shows the pressure of its domain versus the radial distance of the domain with respect to wellbore centre. The figure shows that pressure at outer boundary is kept constant while wellbore pressure keeps reducing until steady state is reached. To make sure that simulated results are correct, they are compared against analytical results. To do so, Eq. 29 is used to find the dimensionless pressure versus dimensionless radius. In this equation, dimensionless time is required which is calculated by Eq. 37:

Fig. 20
figure 20

Simulation results of Pressure vs. Radius

$$t_{D} = \frac{0.000264kt}{{\varphi \mu c_{t} r_{w}^{2} }}$$
(37)

The units for different parameters in Eq. 37 are:

k: md, t: hr, μ: cp, c t: psi−1, r w: ft.

Table 4 shows simulation time in the left column and calculated dimensionless time in the right column.

Table 4 Simulation time (t) and dimensionless time (t D)

Equation 29 also requires values of \(\lambda_{n}\), which are the roots of Eq. 30. A plot of \([Y_{1} \left( \lambda \right)J_{0} \left( {\lambda R_{De} } \right) - J_{1} \left( \lambda \right)Y_{0} \left( {\lambda R_{De} } \right)]\) versus \(\lambda\) is drawn in Maple and is shown in Fig. 21. \(R_{\text{De}}\) is equal to 14.26. It is evident from the graph that values of function approaches zero very quickly as value of \(\lambda\) increases. So to solve Eq. 29, only first few roots of the function will be sufficient to get acceptable results. This equation is solved in maple for first 50 roots. The values of \(\lambda\) are shown in Table 5:

Fig. 21
figure 21

\([Y_{1} \left( \lambda \right)J_{0} \left( {\lambda R_{De} } \right) - J_{1} \left( \lambda \right)Y_{0} \left( {\lambda R_{De} } \right)]\) vs. \(\lambda\). The function approaches Zero very quickly as the value of λ increases

Table 5 Values of first 50 λ n

Simulation and analytical dimensionless pressures versus dimensionless radius are calculated and plotted in Fig. 22. This plot shows that simulation results match with analytical results very well and validates the applicability of the model for radial fluid flow.

Fig. 22
figure 22

Simulated dimensionless pressure and Analytical dimensionless pressure vs. dimensionless radius

Fractured reservoir

In this section, fluid flow in a fractured reservoir is simulated. Figure 23 shows the reservoir with wellbore at the centre, a bi-wing hydraulic fracture and two sets of natural fractures. The angle of the hydraulic fracture is \(0^\circ\) and first and second sets of natural fractures have \(65^\circ\) and \(- 45^\circ\) angle with respect to x axis, respectively. Each brown circle shows the domain pressure at distances greater than external radius of the reservoir. Pore pressure of the reservoir is not shown in this picture, but its initial value is same as the boundary pressure and equal to \(7 \;{\text{MPa}}\). Boundary pressure is kept constant and reservoir pore pressure is allowed to drop to keep a constant wellbore flow rate at \(2\; \times \;10^{ - 10} \;{\text{m}}^{ 3} / {\text{s}}\). Permeability of rock matrix is \(0.458 \;{\text{md}}\) and fracture permeability is \(2.67\; \times \;10^{3}\; {\text{md}}\).

Fig. 23
figure 23

Reservoir with wellbore at centre, a bi-wing hydraulic fracture and two sets of natural fractures. Brown circles show the reservoir pressure at distances greater than external radius

Figure 24 shows two-dimensional view of pressure distribution in the reservoir at six different times. In this figure, it can be seen that pressure in the fractures drops at a faster rate with respect to rock matrix pressure. Figure 25 shows a three-dimensional view of the pressure distribution at time \(38287.82\;{\text{s}}\). Because all the fractures have a T-shaped connection at intersection with other fractures, their pressure shows a V-shaped plot and the pressure data of corresponding fracture can be identified easily.

Fig. 24
figure 24

Two dimensional view of reservoir pressure at different times. Each circle shows its domain pressure. a 207.67 s, b 825.19 s, c 2266.46 s, d 5354.02 s, e 17,704.28 s and f 38,287.82 s

Fig. 25
figure 25

Three-dimensional view of reservoir pressure at time t = 38,287.82 s. Pressure in fractures is dropped at a fast rate

Figure 26 shows three-dimensional view of the pressure distribution at six different times. In Fig. 26a and b, only pressure drop in hydraulic fracture can be seen. As the pressure reduction wave arrives at the intersection of hydraulic fracture and first set of natural fracture, pressure start to drop in natural fracture and this can be seen in Fig. 26c. Figure 26d shows the start of pressure drop in second set natural fractures. The permeability of fractures is adjusted by adjusting the aperture of the pipes that fall on the position of the fracture. For simplicity of observing the clear plot of pressure data in fractures, all fractures permeability was set to be same. But to account for the permeability difference between different sets of natural fractures as well as hydraulic fracture, the pipe apertures can be adjusted.

Fig. 26
figure 26

Three-dimensional view of reservoir pressure at different times. Each circle shows its domain pressure. a 207.67 s, b 825.19 s, c 2266.46 s, d 5354.02 s, e 17,704.28 s and f 38,287.82 s. Pressure in fractures dropped at quicker rate with respect to pressure in the rock matrix

This section showed how easily this model was modified from simple circular reservoir to a hydraulically and naturally fractured reservoir.

Potential application of the model

As stated earlier in introduction, fluid flow through porous media has been the subject of interest in many fields of study. The proposed model is expected to be considered in areas associated with fluid flow through complex heterogeneous porous media subjected to anisotropic stress system. The model is also expected to be used to study many issues related to fluid production from, and injection into porous media with complex situations, especially in case of naturally fractured media, and hydraulic fractures interacted with natural fractures in anisotropic stress system. However, below are some of examples where the model can potentially be used for simulation study:

  1. 1.

    Oil and gas flow in oil and gas reservoirs.

  2. 2.

    Injection of water or surfactants into oil and gas reservoirs.

  3. 3.

    Both the injection and production simulation in oil and gas reservoirs.

  4. 4.

    Single stage as well as multi stage hydraulic fracturing of the oil and gas reservoirs such as shale gas reservoirs.

  5. 5.

    Water flow in mines both in rock matrix as well as in joints, faults and fractures for the application in mining industry.

  6. 6.

    Water flow underground in soil to be used by civil engineers for simulating water flow into tunnels.

  7. 7.

    Water movement in soil to be used by agricultural engineers to simulate the rate of hydration, dehydration or draining of soil.

Conclusion

Deriving analytical expressions to describe fluid flow in porous medium is a complex task. This is because for any change in the reservoir geometry or any change in the condition of fluid flow (e.g., transient, late transient, semi-steady state or steady state) a new analytic expression needs to be developed. In this view, a DEM based numerical model is proposed to analyse the fluid flow through reservoir’s porous media with complex characteristics, especially in the case of existence of natural fractures, hydraulic fractures and interaction of hydraulic and natural fractures for any condition of fluid flow.

Proposed model is used to simulate and analyse some of these field representative cases as an example case studies. Both simple and complex cases are considered in this study. The simple case is used to validate the accuracy of the model. The DEM model that was used in this study is observed to be independent of reservoir geometry as well as the condition of fluid flow since it was shown that it worked for both linear and radial flow without modification. The simulation results are found to be in good agreement with analytical results. It is also demonstrated that the model can potentially be used as a powerful numerical simulation tool to handle both simple and complex reservoir conditions such as complex formations with irregular shapes, and complex set of discontinuity and fluid flow regime.