Composite IPR Curves

This methods is used with oil wells with water production

Rigoberto Chandomi Vazquez https://www.linkedin.com/in/rigoberto-chandomi-v%C3%A1zquez-79038495/
07-23-2022

This method combine the Vogel method for oil flow and the constant productivity index for water flow. The IPR curves is determined geometrically from a equations group that consider water and oil flow.

The next figure is used to determine the equation that allow calculate the flowing bottom hole pressure with a total rate.

The composite IPR can be divide in 3 regions.

  1. Between 0 and the flow rate at the bubble point, \(0 < q_t <q_b\) . In this region the rate and flowing bottom hole pressure have a linear relationship.

\[P_{wt}=P_r-\frac{q_t}{J}\]

The region between the flow rate at the bubble point to the maximum oil flow rate, \(q_b < q_t < q_{o max}\) . At a total flow rate, the flowing bottom hole pressure is defined by:

\[P_{wt}=F_o(P_{wtoil})+F_w(P_{wfwater})\]

Using Vogel equation for oil and constant productivity index for water, the flowing bottom hole pressure at the total flow rate is:

\[P_{wt}=F_w(P_r-\frac{q_t}{J})+F_o(0.125)P_b\left[-1+\sqrt{81-80\left[\frac{q_t-q_b}{q_{omax}-q_b}\right]}\right]\]

The interval between the maximum oil flow rate and the maximum total flow rate, \(q_{o max} < q_t < q_{t max}\) . In this interval, the composite IPR curve would have a constant slope, since the curve is mostly affected by water production. So, \(tan \beta\) must be determined for calculating the flowing bottom-hole pressure at a total rate as follows:

  1. Take a total flow rate is very close to the maximum oil flow rate:

\[q_t=0.999 q_omax\]

  1. Since the difference between \(q_t\) and \(q_{omax}\) is very small, we can assume that \(\alpha_2 = \alpha_1\) and \(\beta_2 = \beta_1\) and the tangent of these angles can be calculated geometrically in the shaded triangle.

  2. From the shaded triangle,

\[tan \beta_1=CD/CG\]

\[tan \alpha_1=CG/CD\]

CD is the difference between the flowing bottom hole pressure at point D, \(P_{wfD}\) and the flowing bottom hole pressure ar point C, \(P_{wfC}\)

\[CD=P_{wfD}-P_{wfc}\]

Point D lies on the composite IPR curve, so:

\[P_{wfD}=F_o(P_{wfoil})+F_w(P_{wfwater})\]

Or, from Figure 1:

\[P_{wfD}=F_o*P_{wfB}+F_w*P_{wfE}\]

\[P_{wfB}=0.125(P_b)*\left[-1+\sqrt{81-80\left[\frac{0.999q_{omax}-q_b}{q_{omax}-q_b}\right]}\right]\]

\[P_{wfE}=P_r-\frac{0.999q_{omax}}{J}\]

Therefore: \[P_{wfD}=F_w\left(P_r-\frac{0.999q_{omax}}{J}\right)+F_o(0.125)P_b*\left[-1+\sqrt{81-80\left[\frac{0.999q_{omax}-q_b}{q_{omax}-q_b}\right]}\right]\]

From Figure 1, \(P_{wfC}=P_{wfG}\) where G also lies on the composite IPR curve for \(qt=q_{omax}\)

\[P_{wfG}=F_o(P_{wfoil}+F_w(P_{wfwater}))\]

At \(q_t=q_{omax}\), \(P_{wfoil}=0\); therefore:

\[P_{wfG}=F_w(P_{wfwater})=F_w\left(Pr-\frac{q_{omax}}{J}\right)\] \[P_{wfC}=P_{wfG}=F_w\left(P_r-\frac{q_{omax}}{J}\right)\]

Substituting equation, yields:

\[CD=P_{wfD}-P_{wfC}=F_w\left(\frac{0.001q_{omax}}{J}\right)+F_o(0.125)P_b\left[-1+\sqrt{81-80\left[\frac{0.999q_{omax}-q_b}{q_{omax}-q_b}\right]}\right]\]

CG is the difference between \(q_t\) and \(q_{omax}\), therefore:

\[CG=q_{omax}-0.999q_{omax}=0.001q_{omax}\]

The maximum total flow rate (for the composite IPR curve) can be calculated by usgin the following equation:

\[q_{tmax}=q_{omax}+F_w(P_r-\frac{q_{omax}}{J})(tan \alpha)\]

Calculation os the total flow rate ar certain flowing bottom-hole pressures for the composite IPR curve

The composite IPR curve can be divided into three intervals, and in every interval, the total flow rate at certain flowing bottom-hole pressures can be calculated as follows:

  1. For pressures between reservoir pressure and the bubble-point pressure, \(P_b < P_{wf} < P_r\), the toal flow rate can be calculated by using the following equation:

\[q_t=J(P_r-P_{wf})\]

  1. For pressures between the bubble-point pressure and te flowing bottom-hole pressure where the oil flow rate is equal to the maximum rate, \(P_{efG} < P_{wf} < P_b\), the total flow rate is:

for \(B \neq 0\) \[q_t=\frac{-C+\sqrt{C^2-4B^2}D}{2B^2}\] for \(B=0\) \[q_t=D/C\]

where:

\[A=\frac{P_{wf}+0.125F_oP_r}{0.125F_0P_b}\] \[B=\frac{F_w}{0.125F_oP_bJ}\] \[C=2(A)(B)+\frac{80}{q_{omax}-q_b}\] \[D=A^2-(80)\frac{q_b}{q_{omax}-q_b}-81\]

  1. For pressures between P{wfg} and 0, that is \(0 < P_{wf} < P_{efG}\), the total flow rate is:

\[q_t=\frac{P_{wfG}+q_{omax}(tan \beta)-P_{wf}}{tan\beta}\]

Example Problem

Reservoir pressure greater than the bubble-point pressure

Give data:

Reservoir pressure, \(P_r=2500 \ psi\) Bubble-point pressure, \(P_b=2100 \ psi\) Test data: Flowing bottom hole pressure = \(P_b=2300 \ psi\) Flow rate (total), \(q_t= 500 \ b/d\)

Calculate: Determine the composite IPR curves for \(F_w = 0.5\)

Code

First, using all the equation above, calculate total flow rates and flowing bottom hole pressure at this rate

library(ggplot2)

Py <- 2550
Pb <- 2100
Pwf <- 2300
Qo <- 500
Fw <- 0.5

#Since Pwf_test > Pb
IP <- Qo/(Py-Pwf)
qb <- IP*(Py-Pb)
qomax <- qb+(2*Pb)/1.8


CD <- (1-Fw)*0.125*Pb*(sqrt(81-80*(0.999*qomax-qb)/(qomax-qb))-1)+
      Fw*(Py-(0.999*qomax)/IP)-Fw*(Py-qomax/IP)

CG <- 0.001*qomax

tana <- CG/CD
tanb <- 1/tana

qtmax <- qomax+Fw*(Py-qomax/IP)*tana
PwfG <- Fw*(Py-qomax/IP)
[1] "j =  2"
[1] "qb =  900"
[1] "qomax =  3233.33333333333"
[1] "tana =  0.409688827872138"
[1] "tanb =  2.44087690941891"
[1] "qtmax =  3424.521453007"
[1] "PwfG =  466.666666666667"

Now, we can define some function to do the intervals calculations, with this we can use a \(P_{wf}\) vector to estimate flow rate.

A_IPR_c <- function(Pwf,Fw,Pb,Py){
  A <- (Pwf+0.125*(1-Fw)*Pb-Fw*Py)/(0.125*(1-Fw)*Pb)
  return(A)
}

B_IPR_c <- function(Fw,Pb,J){
  B <- Fw/(0.125*(1-Fw)*Pb*J)
  return(B)
}

C_IPR_c <- function(Pwf,Fw,Pb,Py,J,qomax,qb){
  A <- (Pwf+0.125*(1-Fw)*Pb-Fw*Py)/(0.125*(1-Fw)*Pb)
  B <- Fw/(0.125*(1-Fw)*Pb*J)
  C <- 2*A*B+(80)/(qomax-qb)
  return(C)
}


D_IPR_c <- function(Pwf,Fw,Pb,Pr,J,qomax,qb){
  A <- (Pwf+0.125*(1-Fw)*Pb-Fw*Py)/(0.125*(1-Fw)*Pb)
  D <- A^2-80*(qb/(qomax-qb))-80
  return(D)
}

After that, we can define a \(P_{wf}\) vecto and apply the equation according the intervals

pwf <- c(0,200 ,350 ,600, 1000 ,1400, 1500, 1700, 2100, 2300, 2400, 2550)

A <- A_IPR_c(pwf,Fw,Pb,Py)
B <- B_IPR_c(Fw,Pb,IP)
C <- C_IPR_c(pwf,Fw,Pb,Py,IP,qomax,qb)
D <- D_IPR_c(pwf,Fw,Pb,Py,IP,qomax,qb)

qt <- ifelse(pwf >= Pb, IP*(Py-pwf),
             ifelse(pwf >= PwfG & pwf < Pb, 
                    ifelse(rep(B, length(pwf)) != 0 ,
                           (-C+sqrt(C^2-4*B^2*D))/(2*B^2), -D/C), 
                    ifelse(pwf < PwfG, (PwfG+qomax*tanb-pwf)/tanb  , 0)))


IPR <- data.frame(pwf = pwf, qt = qt)

ggplot(IPR, aes(x = qt, y = pwf)) + 
  geom_line()
knitr::kable(IPR, caption = "Composite IPR, FW = 0.5")
Table 1: Composite IPR, FW = 0.5
pwf qt
0 3424.521
200 3342.584
350 3281.130
600 3135.673
1000 2738.169
1400 2159.923
1500 1995.359
1700 1646.911
2100 900.000
2300 500.000
2400 300.000
2550 0.000

Reference: Brown, K. (1984) The technology of artificial lift methods Vol. 4

Citation

For attribution, please cite this work as

Vazquez (2022, July 23). Chato Solutions: Composite IPR Curves. Retrieved from https://www.chatosolutions.com/posts/2022-07-23-picomposite/

BibTeX citation

@misc{vazquez2022composite,
  author = {Vazquez, Rigoberto Chandomi},
  title = {Chato Solutions: Composite IPR Curves},
  url = {https://www.chatosolutions.com/posts/2022-07-23-picomposite/},
  year = {2022}
}