Proppant Characteristics and Application Design

Hoss Belyadi , ... Fatemeh Belyadi , in Hydraulic Fracturing in Unconventional Reservoirs, 2017

Proppant Transport and Distribution in Hydraulic Fracture

During hydraulic fracturing, different proppant concentrations are pumped based on the initial frac design and to the extent that reservoir formation permits. The pumped proppants move in both horizontal and vertical directions. In the horizontal direction, proppant follows the fracture tip with the same velocity as fracturing fluid. However, in the vertical direction the proppant velocity, i.e., settling velocity, is different than fluid vertical velocity due to gravitational forces and slippage between proppant particles and fluid. Proppant movement in the direction of the fracture width is commonly neglected due to scale effect (fracture width is much smaller than fracture length and height). As proppant particles settle, they fill up the fracture width and, therefore, increase the proppant concentration in the vertical cross section. There is a critical proppant concentration beyond which screening out (sanding off) occurs. Rate of proppant bank growth or screening out is a function of proppant settling velocity. Settling velocity of a single and perfectly spherical proppant particle can be obtained using Stokes' law assuming infinitely large fracture (boundary effects are neglected). Settling velocity is derived for different flow regimes based on the dimensionless Reynolds number. If the Reynolds number is less than 2, proppant settling velocity can be obtained using Eq. (6.1).

Equation 6.1. Proppant settling velocity Re ≤ 2.0.

If the Reynolds number falls between 2 and 500, proppant velocity can be obtained using Eq. (6.2).

Equation 6.2. Proppant settling velocity ( 2 < Re < 500 )

For flow regimes with high Reynolds number (i.e., >500), Eq. (6.3) will be used.

Equation 6.3. Proppant settling velocity ( Re 500 )

In the above equations, ρ p and ρ f stand for proppant and fracturing fluid density, μ is the fluid dynamic viscosity, d p is proppant diameter, and V p s is the uncorrected proppant settling velocity. As mentioned earlier, proppant velocity obtained using Stokes' law neglects the boundary (fracture width) effect by assuming an infinitely large fracture. It also ignores interactions between proppant particles, since it has been developed for a single particle. Gadde et al. (2004) defined a correlation to correct the proppant settling velocity for these two factors as follows:

Equation 6.4. Corrected proppant settling velocity

In Eq. (6.4), V p s is the corrected proppant settling velocity and c is the proppant concentration. As proppant settling occurs, the frac fluid viscosity will change. The change in frac fluid viscosity as a function of proppant concentration can be obtained using Eq. (6.5).

Equation 6.5. Frac fluid viscosity

In Eq. (6.5), μ 0 is uncorrected fluid viscosity to proppant concentration and n and γ are the non-Newtonian fluid constants.

Kong et al. (2015) investigated the effect of proppant settling velocity on proppant distribution and fracture conductivity in the Marcellus Shale reservoir and showed that ignoring proppant settling velocity could lead to more than 18% overestimation in dimensionless productivity index. They showed that in tighter formations and using larger proppant size the overestimation in dimensionless productivity index can be as large as 32%. A more realistic prediction of proppant distribution in hydraulic fractures can significantly help operators to design the optimum frac job. In ultralow permeability formations such as shale with permeability less than 1   µD, there is a critical proppant size that can lead to the highest hydraulic fracturing efficiency, as shown in Fig. 6.7. In the hydraulic fracturing process, multisize proppant combinations are injected into the wellbore. Usually a smaller-size proppant is injected first, followed by a larger-size proppant. In ultralow permeability formations such as shales, there is a critical combination of small and large proppant sizes that will result in maximum well productivity index as shown in Fig. 6.8.

Figure 6.7. Effect of proppant size on dimensionless productivity index for different reservoir permeability.

Modified from Kong, B., Fathi, E., Ameri, S. 2015. Coupled 3-D numerical simulation of proppant distribution and hydraulic fracturing performance optimization in Marcellus shale reservoirs. Int. J. Coal Geol. 147–148, 35–45.

Figure 6.8. Effect of different proppant size and volume combination on well dimensionless productivity index.

Modified from Kong, B., Fathi, E., Ameri, S. 2015. Coupled 3-D numerical simulation of proppant distribution and hydraulic fracturing performance optimization in Marcellus shale reservoirs. Int. J. Coal Geol. 147–148, 35–45.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B978012849871200006X

Proppant characteristics and application design

Hoss Belyadi , ... Fatemeh Belyadi , in Hydraulic Fracturing in Unconventional Reservoirs (Second Edition), 2019

Proppant transport and distribution in hydraulic fracture

During hydraulic fracturing, different proppant concentrations are pumped based on the initial frac design and to the extent that reservoir formation permits. The pumped proppants move in both horizontal and vertical directions. In the horizontal direction, proppant follows the fracture tip with the same velocity as fracturing fluid. However, in the vertical direction the proppant velocity, that is, settling velocity, is different than fluid vertical velocity due to gravitational forces and slippage between proppant particles and fluid. Proppant movement in the direction of the fracture width is commonly neglected due to scale effect (fracture width is much smaller than fracture length and height). As proppant particles settle, they fill up the fracture width and, therefore, increase the proppant concentration in the vertical cross section. There is a critical proppant concentration beyond which screening out (sanding off) occurs. Rate of proppant bank growth or screening out is a function of proppant settling velocity. Settling velocity of a single and perfectly spherical proppant particle can be obtained using Stokes' law assuming infinitely large fracture (boundary effects are neglected). Settling velocity is derived for different flow regimes based on the dimensionless Reynolds number. If the Reynolds number is less than 2, proppant settling velocity can be obtained using Eq. (6.1).

(6.1) Proppant settling velocity Re 2.0 : V ps = g ρ p ρ f d p 2 18 μ

If the Reynolds number falls between 2 and 500, proppant velocity can be obtained using Eq. (6.2).

(6.2) Proppant settling velocity 2 < Re < 500 : V ps = 20.34 ρ p ρ f 0.71 d p 1.14 ρ f 0.29 μ 0.43

For flow regimes with high Reynolds number (i.e., >   500), Eq. (6.3) will be used.

(6.3) Proppant settling velocity Re 500 : V ps = 1.74 g ρ p ρ f d p ρ f

In Eq. (6.3), ρ p and ρ f stand for proppant and fracturing fluid density, μ is the fluid dynamic viscosity, d p is proppant diameter, and V ps is the uncorrected proppant settling velocity. As mentioned earlier, proppant velocity obtained using Stokes' law neglects the boundary (fracture width) effect by assuming an infinitely large fracture. It also ignores interactions between proppant particles, since it has been developed for a single particle. Gadde et al. (2004) defined a correlation to correct the proppant settling velocity for these two factors as follows:

(6.4) Corrected proppant settling velocity : V ps = V ps 0.563 d p w 2 1.563 d p w + 1 2.37 c 2 3.08 c + 1

In Eq. (6.4), V ps′ is the corrected proppant settling velocity and c is the proppant concentration. As proppant settling occurs, the frac fluid viscosity will change. The change in frac fluid viscosity as a function of proppant concentration can be obtained using Eq. (6.5).

(6.5) Frac fluid viscosity : μ = μ 0 1 + 0.75 e 1.5 n 1 e γ 1 n 1000 1.25 c 1 1.5 c 2

In Eq. (6.5), μ 0 is uncorrected fluid viscosity to proppant concentration and n and γ are the non-Newtonian fluid constants.

Kong et al. (2015) investigated the effect of proppant settling velocity on proppant distribution and fracture conductivity in the Marcellus Shale reservoir and showed that ignoring proppant settling velocity could lead to more than 18% overestimation in dimensionless productivity index. They showed that in tighter formations and using larger proppant size the overestimation in dimensionless productivity index can be as large as 32%. A more realistic prediction of proppant distribution in hydraulic fractures can significantly help operators to design the optimum frac job. In ultra-low permeability formations such as shale with permeability less than 1   μD, there is a critical proppant size that can lead to the highest hydraulic fracturing efficiency, as shown in Fig. 6.7. In the hydraulic fracturing process, multisize proppant combinations are injected into the wellbore occasionally. Usually a smaller-size proppant is injected first, followed by a larger-size proppant. In ultra-low permeability formations such as shales, there is a critical combination of small and large proppant sizes that will result in maximum well productivity index as shown in Fig. 6.8.

Fig. 6.7

Fig. 6.7. Effect of proppant size on dimensionless productivity index for different reservoir permeability.

(Modified from Kong, B., Fathi, E., Ameri, S., 2015. Coupled 3-D numerical simulation of proppant distribution and hydraulic fracturing performance optimization in Marcellus shale reservoirs. Int. J. Coal Geol. 147–148, 35–45.)

Fig. 6.8

Fig. 6.8. Effect of different proppant size and volume combination on well dimensionless productivity index.

(Modified from Kong, B., Fathi, E., Ameri, S., 2015. Coupled 3-D numerical simulation of proppant distribution and hydraulic fracturing performance optimization in Marcellus shale reservoirs. Int. J. Coal Geol. 147–148, 35–45.)

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128176658000060

Integrated Hydraulic Fracture Design and Well Performance Analysis

Mei Yang , ... Guan Qin , in Unconventional Oil and Gas Resources Handbook, 2016

12.1.3 Pump Schedule Design

The pump schedule is designed to deliver the desired fracture geometry according to the following method.

Solve the material balance for injection time, t i :

(12.3) q i , 1 wing h f x f t i 2 C L t 2 S p w avg = 0

Then, the injected slurry volume can be calculated:

(12.4) V i , 1 wing = q i t i

Therefore, the fluid efficiency is:

(12.5) η = h f x f w avg V i , 1 wing

The pad injection time will be determined according to Nolte (1986).

(12.6) c = c e ( t t pad t i t pad ) ε

where t pad  =   εt i , ε = 1 η 1 + η and c e = m i , 1 wing η V i , 1 wing

The concentration for dirty fluid which, after clean fluid, went through the blender is:

(12.7) c added = c 1 ( c ρ p )

We can use material balance to relate the input proppant concentration during the injection time to determine the concentration of proppant in the fracture that exists at the end of the pump schedule. The end of job proppant concentration can be calculated under the assumption of uniform concentration at end of pumping. Or a more "accurate" end of job proppant concentration value can be calculated by including advection effects to model various possible proppant transport mechanisms and proppant settling.

With either a fixed aspect ratio or net pressure to stress contrast and fracture toughness, the fracture height, proppant placement efficiency should be recalculated until convergence.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128022382000122

Operations and Execution

Hoss Belyadi , ... Fatemeh Belyadi , in Hydraulic Fracturing in Unconventional Reservoirs, 2017

Sand Screws

As previously mentioned in a hydraulic frac job, proppant concentration is gradually increased each time proppant hits the perforations (more aggressive design schedules do not wait for the proppant to hit the perforations and proppant is staged up faster) depending on the design schedule and pressure response throughout the stage. There are typically two to three sand screws on a blender depending on the blender manufacturer and type. In slick water frac, two screws are typically used and the third one is a backup. The third screw is normally used with very high proppant concentration frac jobs such as cross-linked jobs. Every blender has a maximum rpm per screw that can be obtained from the blender manufacturer. The reason more than one rpm is needed for the job is to be able to pump higher sand concentrations at higher rates. The most commonly used sand screws have 12" and 14" diameters. Normally the maximum output for a 12" screw is approximately 100 sacks per min (one sack of proppant is equal to 100  lbs), and for a 14" screw is 130 sacks per min with a maximum rpm of 350–360 (different depending on the blender manufacturer and type). Note that maximum rpm of 350–360 is only for one screw and since typically two screws are used in slick water frac jobs, up to 700   rpm can be obtained to fulfill the client's needs and design schedule. Different types of proppant yield different pounds per revolution (PPR). PPR decreases at higher sand concentrations and as the screws wear out. For example, if proppant delivery of Ottawa sand is about 36   PPR with a brand new screw, as sand concentration increases, PPR decreases. In addition, if lower sand concentration is run (e.g., 0.25   ppg) and PPR is run at 29 (if typical is 36), there could be a high possibility that the screws are worn out.

Equation 16.2. Round per minute (rpm) calculation

rpm=Round per minute

Q=Slurry rate, bpm

SC=Sand concentration, ppg

PPR=Pounds per revolution.

Eq. (16.2) is constantly used in the field to calculate the amount of rpm needed on the screws to achieve the designed sand concentration. For example, after pumping the designed volume of pad, and once the sand stage is ready to start, the person responsible for adjusting the sand screws on the blender is notified by radio to bring his/her rpm to a certain value to achieve the required proppant concentration requested by the operating company's designed proppant schedule. This is referred to as running the blender on "manual." On the other hand, the majority of service companies run their blender screws on "auto" for simplicity. Running the blender on auto means entering the proppant concentration needed on the blender, which will automatically calculate the required rpm. This is the preferred method since every time the slurry rate is changed throughout the stage for any reason, the auto system calculates the new rpm needed and adjusts the screws. For example, if a pump is dropped for any reason (e.g., mechanical issues), a new rpm is automatically calculated. If a manual system was being used, the new rpm would need to be manually calculated and changed on the blender, which might take some time. It is strongly recommended that any service company knows how to run the blender in both auto and manual. This way, if there are any issues throughout the stage while running the sand system in auto, a manual system can be substituted and the frac stage can continue instead of coming offline while the problem is being fixed.

Example: Calculate the rpm needed at 100   bpm slurry rate if 0.25   ppg proppant concentration is to be achieved with 36   PPR.

rpm = Q × SC × 42 PPR = 100 × 0.25 × 42 36 = 29 rpm

The rpm needed to achieve 0.25   ppg proppant concentration is 29   rpm. At this stage, typically the company representative waits until proppant hits the perforations to see the reaction of the formation. If everything looks promising on the surface-treating pressure chart, proppant concentration is increased by increasing rpm. Let's assume the next designed proppant concentration is 0.5   ppg and the rate had to be dropped to 94   bpm. Calculate the new rpm needed to achieve this concentration.

pm = Q × SC × 42 PPR = 94 × 0.5 × 42 36 = 55 rpm

As can be seen in this example, as proppant concentration increases, rpm increases as well. Please note that if, throughout the stage, rate is increased or decreased, rpm needs to be adjusted as well if the system is not set up for auto. Rate is directly proportional to rpm and as rate increases or decreases, rpm increases or decreases as well. There is a person called a treater who is responsible for calculating the new rpm every time rate, proppant concentration, or PPR is altered if and only if the manual rpm system is used. If the auto system is used the only parameter that needs to be entered is proppant concentration and everything else will be automatically calculated.

PPR is typically adjusted throughout the job as well to stay at the required proppant concentration and volume. Throughout the job, there is a person on the sand master who takes proppant straps (the amount of proppant that is left in the bin or sand master). Newer sand master systems can actually measure the amount of proppant pumped out of each bin or sand master via a scale. There are two ways to measure proppant. The first one is the calculated amount located on the frac monitors inside the frac van from the blender screws. The second one is through the gentleman/lady on the sand master who measures the amount of proppant that is left in the bin (or in the newer system via a scale). For example, let's assume that after taking a bin strap, the person responsible for keeping track of the proppant announces 30,000   lbs of proppant has been pumped. On the other hand, the monitor located in the frac van shows the total proppant pumped is 40,000   lbs (calculated from sand screws). This means less proppant has been pumped compared to the proppant volume that must have been pumped. This condition is referred to as sand light. In this situation, PPR needs to be decreased in order to increase the rpm and catch up with the required proppant.

In contrast, if the monitor shows 20,000   lbs instead, proppant is referred to as sand heavy because more proppant (30,000   lbs) was actually pumped. In this case, PPR is increased in order to decrease rpm and slow down the actual amount of proppant. The difference in proppant can be easily caught up if and only if the difference is 5000–15,000   lbs at lower proppant concentrations. If the difference is drastic, such as 30,000   lbs, it is strongly recommended not to catch up. If proppant is running 30,000   lbs light and we have 50,000   lbs of proppant left to go in a frac stage, it means more proppant needs to be pumped in order to compensate for the lack of proppant concentration accuracy throughout the stage. This can be devastating because proppant is now run at very high concentrations in an attempt to catch up, which can cost the operating company a screen-out. Therefore, it is very important to remind the person in charge that if proppant is light or heavy by a drastic amount, do not try to catch up and run it as it is all the way to the end of the frac stage. The most important part about blender screws is the difference between rpm and PPR. As can be seen from Eq. (16.2), rpm and PPR are inversely proportional. When PPR decreases, rpm increases and more proppant will be pumped. PPR is typically decreased by a small amount when proppant is running light. When PPR increases, rpm decreases and proppant will be pumped slower. PPR is typically increased by a small amount when proppant is running heavy. Fig. 16.9 is another example of sand screws and a blender tub where sand, water, and some of the chemicals get mixed.

Figure 16.9. Blender tub and blender screws.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128498712000162

13th International Symposium on Process Systems Engineering (PSE 2018)

Abhinav Narasingam , ... Joseph Sang-Il Kwon , in Computer Aided Chemical Engineering, 2018

3 Optimal pumping schedule design

Following the parameter estimation, we focus on the design of a model-based feedback controller for achieving uniform final proppant concentration in the hydraulic fracturing process. However, due to the infinite-dimensional nature of the high-fidelity model, it cannot be directly used for the controller design. Alternatively, we seek computationally efficient reduced-order models generated by employing the LDMDc methodology developed in our previous work. Once the reduced-order models are generated, we formulate the following MPC problem to design an optimal pumping schedule that will allow us to achieve uniform concentration of the proppant across the fracture at the end of pumping.

(7) Min C 0 , k C ̂ t f C target T Q c C ̂ t f C target s . t Reduced order models x ̂ t k = x t k C min C ̂ t k + j Δ C max , j = 0 , , 10 k C 0 , k 1 + m C 0 , k + m C 0 , k 1 + m + 4 , m = 1 , , 10 k 2 Q 0 Δ k C 0 , k = M prop L t f = L opt , W 0 t f W opt

where ̂ indicates the predicted state trajectory, C target is the desired set-point value for the final proppant concentration, Q c is a positive definite matrix used to compute the weighted norm, t f denotes the total treatment time, Δ is the sampling time, t k is the current time, C ̂ is the vector of proppant concentrations, and C 0, k is the inlet proppant concentration (i.e., manipulated input) corresponding to k th time interval i.e., t ∈ [t k , t k  +   1). The constraints in the above optimization problem correspond to optimality, safety, and economical considerations that need to be accounted for in the controller design. Please refer to Narasingam and Kwon (2017) for complete details on the MPC formulation adopted above.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780444642417501178

Operation Parameters Calculation

Zhongwei Huang , ... Subhash Shah , in Abrasive Water Jet Perforation and Multi-Stage Fracturing, 2018

6.2.1.2 Calculation of Friction Reduction Ratio

Friction reduction ratio is the function of the average velocity of fracturing fluid, the gelled agent concentration, and the proppant concentration. Based on the linear regression of 1049 experimental and field data, Lord et al. put forward the following empirical formula to calculate the friction reduction ratio of HPG fracturing fluid ( Lord, 1987):

(6.9) ln ( 1 δ ) = 2.38 8.024 u 0.2365 C HPG u 0.1639 ln C HPG 0.028 C p ( 1 C HPG )

where C p is the concentration of proppant in kg/m3, C HPG is the concentration of gelled agent in kg/m3, and u is the average velocity of fracturing fluid in m/s.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128128077000066

Fracture Treatment Design

Hoss Belyadi , ... Fatemeh Belyadi , in Hydraulic Fracturing in Unconventional Reservoirs, 2017

Slurry Factor (SF)

Slurry factor is one of the most important calculations that must be performed for designing a foam frac job. Since the proppant concentration at bottom hole and blender are different, slurry factor at surface (blender) and bottom hole must both be calculated. Since adding sand to fluid on foam jobs decreases foam quality, the slurry factor calculation becomes very important. Increasing sand concentration will decrease clean rate when designing a foam job schedule.

Equation 10.13. Slurry factor (SF).

Sand concentration=ppg

AVF=Absolute volume factor, gal/lb.

Example

Calculate slurry factor at bottom hole and surface (blender) assuming regular sand with SG of 2.65 at various BH sand concentrations of 1 and 2   ppg, assuming 70% foam quality.

AVF = 1 2.65 × 8.33 = 0.0453 gal / lb

Slurry factor @ 1 ppg BH conc . = 1 + ( sand conc . × AVF ) = 1 + ( 1 × 0.0453 ) = 1.0453

Slurry factor @ 2 ppg BH conc . = 1 + ( 2 × 0.0453 ) = 1.0906

The 1- and 2-ppg bottom-hole sand concentrations are calculated to be 3.33 and 6.67   ppg sand concentrations at the blender, assuming 70% foam quality.

Slurry factor @ 3.33 ppg blender conc . = 1 + ( 3.33 × 0.0453 ) = 1.151

Slurry factor @ 6.67 ppg blender conc . = 1 + ( 6.67 × 0.0453 ) = 1.302

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128498712000101

Fracture treatment design

Hoss Belyadi , ... Fatemeh Belyadi , in Hydraulic Fracturing in Unconventional Reservoirs (Second Edition), 2019

Stage fluid slurry (dirty) volume (BBLs)

As previously mentioned, slurry volume refers to the volume of water, proppant, and chemicals. Stage fluid slurry volume at different proppant concentrations can be calculated and is provided to the field personnel as part of the frac schedule. Slurry volume is always more than the clean volume since sand is considered part of the volume. Stage fluid slurry volume can be calculated using Eq. (10.4).

(10.4) Slurry volume : Dirty volume = Clean volume + sand conc . × clean volume × AVF

where clean volume is measured in BBLs, sand concentration is in ppg, and AVF is in gal/lb.

Example

Calculate the dirty volume needed at 2   ppg Ottawa sand if 250 BBLs of clean volume is used.

Dirty volume = Clean volume + sand conc . × clean volume × AVF = 250 + 2 × 250 × 0.0453 = 273 BBLs

As can be seen in the above calculation, the dirty volume is 23 BBLs more than the clean volume. This is because the 2   ppg Ottawa sand is used in that stage of treatment. As sand concentration increases throughout each stage, dirty volume increases too.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128176658000102

Hydraulic Fracturing

Boyun Guo PhD , ... Xuehao Tan PhD , in Petroleum Production Engineering (Second Edition), 2017

14.5.2 Observed Net Pressure Calculation

Among all the variables measured during a hydraulic treatment, the three parameters that are the most important ones are pressure, rate, and proppant concentration. The proppant concentration is inferred from the slurry density measured with densometers. Net pressure observed from the fracturing treatment is used in all fracturing pressure analysis methods, including the Nolte-Smith pressure analysis just discussed. As defined in Eq. (14.25), net pressure is defined as the pressure inside the fracture minus the rock closure stress. In order to obtain the observed net pressure, the fluid pressure at the fracture initiation point has to be calculated first. The fracture initiation point is literally somewhere along the perforated interval and right beyond the end of all the perforation tunnels. Pressure calculation during the treatment is complicated by fluid friction, which includes wellbore friction and perforation friction, plus another important friction called "near-wellbore fracture tortuosity" or for short, "tortuosity." When the surface treating pressure is available only, observed net pressure, which is directly related to hydraulic fracture dimensions, can be determined using the following equation:

(14.76) p n e t , o b s = p s u r f a c e + Δ p h y d r o s t a t i c Δ p w e l l b o r e Δ p p e r f o r a t i o n Δ p t o r t u o s i t y + σ c l o s u r e

where p net,obs is the observed net pressure, Δp surface is the surface treatment pressure, Δp hydrostatic is the hydrostatic pressure of the fluid in the wellbore, Δp welbore is the fluid friction along the wellbore, Δp perforation is the perforation friction, Δp tortuosity is the near-wellbore tortuosity friction, and σ closure is the fracture closure stress or the minimum principal stress.

The hydrostatic pressure of the fluid/slurry column in the wellbore can be easily and accurately calculated from the density of the fluid/slurry. However, the wellbore friction during pumping is difficult to calculate accurately for several reasons. Turbulent flow in the wellbore is almost always encountered during a fracturing treatment. The wellbore friction for gelled fluids, especially crosslinked gels, is more difficult to estimate as the crosslinking process further complicates the fluid friction behavior. When friction reducers (FR) (polymer) is added to plain water, the apparent viscosity of the fluid is typically increased from 1   cp to 1.5–3   cp, but the fluid friction can be by up to 70%. Service companies usually measure the friction of their fluid systems using flow loops in yard testing and provide friction tables for estimating friction at various rates in various wellbore sizes.

In addition to the reasons above, water quality and composition, fluid type and composition, and wellbore temperature are constantly changing during the treatment. All these factors make predicting fluid friction unreliable. There is no predicted pressure data that can replace reliable bottom-hole pressure measurements. However, the following equations can be used to estimate fluid friction. To calculate the fluid friction pressure drop, the Reynolds number must be estimated first to determine the flow regime. For a power law fluid, the Reynolds number is calculated by:

(14.77) N Re = 0.249 ρ V 2 n ( D / 96 ) n K [ ( 3 n + 1 ) / 4 n ] n ,

(14.78) V = 17.17 q D 2 ,

where N Re is the Reynolds number, ρ is the fluid density in lb/ft3 , V is the flow velocity in ft/sec, D is the pipe diameter in inch, K is the consistency index in lbf-s n /ft2, n is the flow behavior index (dimensionless), and q is the pumping rate in bbl/min.

For laminar flow (N Re<2100), the Fanning friction factor for smooth pipes can be calculated by:

(14.79) f f = 16 N Re ,

For turbulent flow (N Re>2100), the Fanning friction factor for smooth pipes can be estimated by:

(14.80) f f = ( log ( n ) + 2.5 ) / 50 N Re ( 1.4 log ( n ) ) / 7 ) ,

The friction pressure drop is given by:

(14.81) Δ p f = 0.0052 f f ρ L V 2 D ,

where L is the pipe length in ft.

Eqs. (14.77)–(14.81) generally over estimate actual friction values as polymers added in fracturing fluids can dramatically reduce fluid friction. Eqs. (14.77)–(14.81) should also apply to Newtonian fluids, in which n becomes 1 and K becomes the fluid viscosity. The friction for proppant laden fluids, especially at higher proppant concentrations, is even more difficult to estimate. Various correlations for estimating the friction of proppant slurry are available (Keck et al., 1992).

In most fracturing operations, surface treating pressures are the only data measured. Bottom-hole pressure data is occasionally measured using a retrievable pressure gauge and the pressure data can only be recovered when the gauge is brought to surface. The fracturing fluids are usually pumped down the casing. However, for smaller treatments in conventional high-permeability reservoirs, a tubing string is available and the fluids can be pumped down through the tubing or the annulus or both. When coiled tubing is used for a fracturing treatment, the fluid and slurry are usually pumped down through the annulus. Whenever there are two flow paths along the wellbore and only one path is used to pump the fluids, the other path is called "dead string." In this case surface pressures for both the treating string and the dead string can be measured and collected during the treatment. The surface pressures from the dead string can readily reflect and be used to obtain the bottom-hole treating pressure without any complications from the wellbore friction of the fluid and slurry.

In theory, the perforation friction is very easy to calculate, as the calculation is the same as the flow through an orifice or orifices. The calculation takes account of the fluid and fluid conditions, the orifice size and the coefficient of discharge. The equation used to calculate perforation friction is as follows:

(14.82) Δ p p e r f o r a t i o n = 0.237 ρ ( q / N ) 2 C d 2 D 4 ,

where ρ is the slurry density in ppg, q is the flow rate in bbl/min, N is the number of perforations, D is the perforation diameter in inches, and C d is the discharge coefficient. The value of the discharge coefficient is usually 0.8. In reality, not all the perforations are created equal and the fractures may not initiate from some of the perforations. With the uncertainty with perforation efficiency, the effective perforation friction can be estimated by the following equation:

(14.83) Δ p p e r f o r a t i o n = k p e r f q 2 ,

where k perf is the perforation friction coefficient and has to be determined by a diagnostic test during the treatment.

The near-wellbore tortuosity friction is a flow restriction in the near-wellbore that connects the wellbore with the far-field fracture, which is similar to the skin effect in well production. This near-wellbore friction results in a difference between the fluid pressure at the fracture entry point and the fluid pressure in the main body of the fracture. The "fracture system" in the near wellbore area is complicated because the wellbore and perforations alter the state of stress in this area with a few times the wellbore diameter. A number of fracture propagation phenomena could occur in this area. Fractures may re-orientate from the perforation towards preferred fracture plane. Fractures may interact with and dilate natural fractures. The explosive energy during perforating could induce microcracks and initiate shear cracks. As a result, multiple and tortuous fractures can be created in the near wellbore area, which leads to additional fluid friction or pressure drop. An illustration of fracture tortuosity in the near-wellbore area is illustrated in Fig. 14.20, in which the blue circle represents the near-wellbore area where fracture tortuosity occurs. Cleary et al. (1993) first recognized the importance of near-wellbore tortuosity and proposed a diagnostic method to quantify the near-wellbore tortuosity friction. The near-wellbore friction due to fracture tortuosity is related to the pumping rate and can be estimated with the following empirical equation:

Figure 14.20. Illustration of fracture tortuosity and multiple fractures in the near-wellbore area.

(14.84) Δ p t o r t u o s i t y = k n w b q β ,

where k nwb is the near-wellbore friction coefficient and β is the power-law exponent. The value of β ranges between 0.25 and 1.0, but is typically assumed as 0.5. Since Eq. (14.84) is an empirical equation, both k nwb and β have to be determined by a diagnostic test during the treatment.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128093740000143

Neural networks and Deep Learning

Hoss Belyadi , Alireza Haghighat , in Machine Learning Guide for Oil and Gas Using Python, 2021

Frac treating pressure prediction using LSTM

In this section, the one section frac stage data will be used to build an LSTM model to use the last 60 seconds of slurry rate and proppant concentration data to predict treatment pressure for the next second. This is for showing the proof of concept. In this exercise, the first 60  s of data will be used to predict the next second (61st second). Thereafter, seconds 2 to 61 will be used to predict the next second (62nd second). This process is then continued. The figure below illustrates this concept. 60   s is an arbitrary window size that was chosen for this exercise, and other window sizes such as 30, 90, 120, etc., can be evaluated as well.

The first step is to import the main libraries followed by the one second frac data set that can be obtained from the portal listed below:

https://www.elsevier.com/books-and-journals/book-companion/9780128219294

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from sklearn.preprocessing import MinMaxScaler

%matplotlib inline

data= pd.read_excel('Chapter6_Frac_Stage_Data.xlsx')

data.head()

Python output= Fig. 6.31

Figure 6.31. High frequency frac data head.

As illustrated, this data set has four main columns:

-

Time in seconds

-

Slurry rate denoted as "SLUR RATE" in barrels per min (bpm)

-

Proppant concentration denoted as "PROP CON" in lbs per gallon (ppg)

-

Treating pressure denoted as "TR PRESS" in psi

Next, let us plot the surface treating pressure data and slurry rate using the following lines of codes:

fig, ax1 = plt.subplots(figsize=(15,8))

plt.figure(figsize=(15,8))

ax2 = ax1.twinx()

ax1.plot(data['Time'], data['TR PRESS'], 'b')

ax2.plot(data['Time'], data['SLUR RATE'], 'g')

ax1.set_xlabel('Time (seconds)')

ax1.set_ylabel('Surface Treating Pressure (psi)', color='b')

ax2.set_ylabel('Slurry Rate (bpm))', color='g')

Python output= Fig. 6.32

Figure 6.32. Surface treating pressure and slurry rate plot.

Next, let us divide the data into training and testing sets. The first 4500   s will be used for training, and the last 100   s will be used as testing in this example:

start_time = 1

end_time = 4500

#Define the data range used for training as follows:

filter = (data['Time'] > start_time) & (data['Time'] <= end_time)

data_training = data.loc[filter].copy()

data_training.tail()

Python output= Fig. 6.33

Figure 6.33. Tail of the training data.

Next, define the range for testing data as follows. Please note that this frac data set has 4600 rows in which the first 4500 rows are used for training and the last 100 rows are used for testing.

start_time2 = 4500

end_time2 = 4600

filter2 = (data['Time'] > start_time2) & (data['Time'] <= end_time2)

data_testing = data.loc[filter2].copy()

data_testing.tail()

Python output= Fig. 6.34

Figure 6.34. Tail of the testing data.

Next, drop the time column as follows:

training_data= data_training.drop(['Time'], axis=1)

Afterward, normalize the training data as follows:

scaler=MinMaxScaler()

training_data= scaler.fit_transform(training_data)

Next, first create an empty list for X_train and y_train as follows:

X_train= []

y_train= []

Afterward, write a for loop to iterate from 60 to the length of the "training_data." Next, within this for loop, take the empty list called "X_train" and append the training data from 0 to 60 (training_data[i-60:i]). Then, inside the same for loop, take the empty list called "y_train," and append the training data at the 61st row as "y_train." This allows the X_train to be the first 60 rows and y_train to be the 61st row.

for i in range(60,training_data.shape[0]):

X_train.append(training_data[i-60:i])

y_train.append(training_data[i,0])

Now, let us convert X_train and y_train into a numpy array prior to feeding it into an LSTM model. Typically, the LSTMs expect the data to be in a specific 3D array format. Therefore, let us convert the data as such:

X_train, y_train = np.array(X_train), np.array(y_train)

In addition, the shapes of X_train and y_train can be obtained as follows:

X_train.shape, y_train.shape

Python output=((4439, 60, 3), (4439,))

As illustrated, X_train has a shape of 4439 (which is 4499 minus 60) and is a 3-dimensional data (3 input features). 4439 represents the "batch size," 60 represents the "time_span," and 3 represents "input_dimensions." Therefore, the input of an LSTM model is 3D array.

Since X_train and y_train have been defined, it is time to build the LSTM model. First, import the necessary libraries as follows:

-

The first module from keras is called "Sequential" which is used for initializing the neural network.

-

The second module from keras is called "Dense," and it is used for adding a connected neural network layer.

-

"LSTM" as the name suggest is another module that is imported from keras, and it is for adding the LSTM layer.

-

Finally, the "Dropout" module in keras is imported to ensure dropout layers are added to prevent overfitting.

from tensorflow.keras import Sequential

from tensorflow.keras.layers import Dense,LSTM, Dropout

In this exercise, the sequential methodology of building a DL is used. In this methodology, the layers can be added to the network very easily as illustrated below. First, make sure to make the seed number fixed (using a seed number of 100) as illustrated below. Then, place "Sequential" under the model name "Frac_LSTM." Feel free to change the model name to whatever is desired.

import tensorflow as tf

import random as python_random

def reset_seeds():

np.random.seed(100)

python_random.seed(100)

tf.random.set_seed(100)

reset_seeds()

Frac_LSTM = Sequential()

Next, add the first LSTM layer with 200 units (units represent the dimensionality of the output space), "relu" activation function, and set "return_sequences" equal to "True." When this is set to true, it will return the last output in the output sequence. The output of an LSTM model could be either 2D array or 3D array depending on the "return_sequences" argument. Note that:

-

If "return_sequences" is set to True, the output will be a 3D array (batch_size, time_steps, units).

-

If "return_sequences" is set to False, the output will be a 2D array (batch_size, units).

Finally, set the "input_shape" to the shape of the training data set. "X_train.shape[1],3" will basically return "60,3." Afterward, add the "Dropout" layer of 0.3 which indicates 30% of the layers will be dropped. Add two more layers with the same configurations as the first layer as shown below. Note that after the first layer, there is no need to specify the "input_shape" for other layers. Therefore, "input_shape" argument for the second and third layers were excluded as illustrated below. Finally, add a "Dense" layer with "units   =   1" which specifies the output of 1 unit.

Frac_LSTM.add(LSTM(units=200, activation='relu', return_sequences=True, input_shape=(X_train.shape[1],3)))

Frac_LSTM.add(Dropout(0.3))

Frac_LSTM.add(LSTM(units=200, activation='relu', return_sequences=True))

Frac_LSTM.add(Dropout(0.3))

Frac_LSTM.add(LSTM(units=200, activation='relu'))

Frac_LSTM.add(Dropout(0.3))

Frac_LSTM.add(Dense(units=1))

Next, obtain a summary of the Frac_LSTM model as follows:

Frac_LSTM.summary()

Python output= Fig. 6.35

Figure 6.35. Frac LSTM summary.

Next, compile the model using "adam" optimizer and "mean_squared_error" as the loss function. This will use the mean of the squared errors as the loss function to minimize the error.

Frac_LSTM.compile(optimizer='adam', loss='mean_squared_error')

Next, fit the "Frac_LSTM" to the defined X_train and y_train, use 100 epochs or iterations, and use a batch size of 32. The higher the number of epochs, the more iterations it will run, and the longer time it will take the model to get generated. Please feel free to change the optimizer, number of epochs, batch size, dropout percentage, LSTM units, activation function, etc., to find the best hyperparameters for the model.

history=Frac_LSTM.fit(X_train,y_train, epochs=100, batch_size=32, shuffle=True)

Python output= Fig. 6.36

Figure 6.36. Last 10 epochs of the LSTM Model.

Now that a model has been trained, let us prepare a test data set. To predict the pressure of a test data set, it is important to obtain the last 60   s (rows) of the training data set. Therefore, define the last 60   s of the training data using the tail function as shown below:

past_60_secs= data_training.tail(60)

Next, append this last 60   s training data set to the testing data set as follows:

df=past_60_secs.append(data_testing,ignore_index=True)

df.head()

Python output= Fig. 6.37

Figure 6.37. df head.

Next, drop the "Time" column from the df data frame as follows:

df=df.drop(['Time'], axis=1)

df.describe()

Python output= Fig. 6.38

Figure 6.38. df description.

As noted above, since the testing data (which were defined as the last 100 rows of the original imported excel file) were appended to the last 60   s of the training data, the total number of rows under "df" is 160. Next, normalize the test data as follows:

testing_inputs= scaler.transform(df)

Next, create two empty lists for X_test and y_test (as was previously performed for the training data) as follows:

X_test=[]

y_test=[]

Afterward, as was previously discussed, create a similar for loop and append to the created empty lists:

for i in range(60,testing_inputs.shape[0]):

X_test.append(testing_inputs[i-60:i])

y_test.append(testing_inputs[i,0])

Next, convert the X_test and y_test to a numpy array as follows:

X_test, y_test= np.array(X_test), np.array(y_test)

X_test.shape, y_test.shape

Python output=((100, 60, 3), (100,))

Next, use the trained "Frac_LSTM" model to predict the "X_test," convert to a data frame, and call the column "Predicted TR PRESS."

y_pred=Frac_LSTM.predict(X_test)

y_pred=pd.DataFrame(y_pred,columns=['Predicted TR PRESS'])

y_pred.head()

Python output= Fig. 6.39

Figure 6.39. Predicted normalized treating pressure head.

After that, revert the predicted y_pred (predicted y values) and y_test (actual y values) to their original form (unnormalized form) to prepare for plotting as follows:

y_pred['Predicted TR PRESS']=y_pred['Predicted TR PRESS']∗(data['TR PRESS'].max()-data['TR PRESS'].min())+(data['TR PRESS'].min())

y_test=pd.DataFrame(y_test,columns=['Actual TR PRESS'])

y_test['Actual TR PRESS']=y_test['Actual TR PRESS']∗(data['TR PRESS'].max()-data['TR PRESS'].min())+(data['TR PRESS'].min())

y_test.head()

Python output= Fig. 6.40

Figure 6.40. Actual unnormalized treating pressure head.

Let us also obtain the unnormalized predicted treating pressure as follows:

y_pred['Predicted TR PRESS'].head()

Python output= Fig. 6.41

Figure 6.41. Predicted unnormalized treating pressure head.

The next step is to visualize y_test and y_pred versus time to observe the match.

plt.figure(figsize=(14,5))

plt.plot(y_test, color='red', label='Actual TR PRESS')

plt.plot(y_pred['Predicted TR PRESS'], color='blue', label='Predicted TR PRESS')

plt.title('Frac Treating Pressure Actual Vs. Prediction')

plt.xlabel('Time (seconds)')

plt.ylabel('Surface Treating Pressure (psi)')

plt.legend()

Python output= Fig. 6.42

Figure 6.42. Actual vs. predicted treating pressure.

As illustrated in the figure above, the difference between actual and predicted pressures is roughly 20 psi; it is possible to, change window size, number of epochs, units, etc., to obtain a better match. Remember that this model was developed to predict the frac treating pressure at the next second for illustration purposes and proof of concept of the idea. The next step is to include more data and predict the frac treating pressure minutes into the future.

Read full chapter

URL:

https://www.sciencedirect.com/science/article/pii/B9780128219294000081