Inflow performance relationship: Part 1

R Reservoir engineering

Generating IPR curve for single and two-phase reservoirs

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

The IPR curve is a graphical presentation of the relationship between the flowing botton-hole pressure and the liquid production rate. The magnitud of the slope of IPR curve is called productivity index (\(PI\) or \(J\)), expressed as:

\[J=\frac{q}{P_e-P_{wf}} \ \ (1)\]

For undersaturated oil reservoir or reservoir regions where the pressure is greater than the bubble-point pressure we can use the following equations

““For radial transient flow around a vertical well”” \[J^*=\frac{q}{(P_e-P_{wf})}=\frac{kh}{162.6B_o\mu_o(logt+log \frac{k}{\phi\mu_oc_tr^{2}_w}-3.23+0.87S)}\] ““For radial steady-state flow around a vertical well”” \[J^*=\frac{q}{(P_e-P_{wf})}=\frac{kh}{141.2B_o\mu_o(In\frac{r_e}{r_w}+S)}\] \For pseudo-steady-state flow around a vertical well\ \[J^*=\frac{kh}{141.2B_o\mu_o(In\frac{r_e}{r_w}-\frac{3}{4}+S)}\\J^*=\frac{q}{(P-P_{wf})}=\frac{kh}{141.2B_o\mu_o(\frac{1}{2}In\frac{4A}{\gamma{C_A}r^{2}_w}+S)}\] \For steady-state flow around a fractured well\ \[J^*=\frac{q}{(P_e-P_{wf})}=\frac{kh}{141.2B_o\mu_o(In\frac{r_e}{r_w}+S_f)}\] \For steady-state flow around a horizontal well\ \[j^{*}=\frac{q}{(P_e-P_{wf})}=\frac {k_Hh} {141.2B_o\mu_o\left[In\left[\frac{a+\sqrt{a^{2}-(L/2)^{2}}}{L/2}\right]+\frac{1_{ani}h}{L}In\left[\frac{1_{ani}h}{r_w(1_{ani}+1)}\right]\right]}\]

Example in R

Using the following data we can calculate and graph the IPR for a vertical well in an oil reservoir considering pseudo-steady state flow.

\(Porosity = 0.19\)

\(Permeability: k = 8.2 \ md\)

\(Pay \ zone \ thickness: h = 53 \ ft\)

\(Reservoir \ pressure: P_e = 5651 \ psi\)

\(Bubble-point \ pressure: p_b=5651 \ psia\)

\(Oil \ formation \ volume \ factor: B_o=1.1\)

\(Oil \ viscosity: \mu _o = 1.7 \ cp\)

\(Total compressibility: c_t = 0.0000129 \ psi^{-1}\)

\(Drainage \ area: A = 640 \ acres \ (re=2980 \ ft)\)

\(Wellbore \ radius: r_w=0.328 \ ft\)

\(Skin \ factor: S=0\)

py <-  5651
k <- 8.2
h <- 53
Bo <- 1.1
viso <- 1.7
re <- 2980
rw <- 0.328
S <- 0

#Productivity index

J = (k*h)/(141.2*Bo*viso*(log(re/rw)-3/4+S))
print(J)
[1] 0.1967785

IPR points to graph can be calculated as follow

#create a pressure vector from reservoir pressure to zero

pwf <- seq(0,py, length.out = 10)

#Using equation 1 and Productivity index value, calculate Qo

qo <- J*(py-pwf)

#Using Pwf and Qo vector we cna create a dataframe

IPR <- data.frame(Pwf = pwf, Qo = qo)
print(IPR)
         Pwf        Qo
1     0.0000 1111.9951
2   627.8889  988.4401
3  1255.7778  864.8851
4  1883.6667  741.3301
5  2511.5556  617.7751
6  3139.4444  494.2201
7  3767.3333  370.6650
8  4395.2222  247.1100
9  5023.1111  123.5550
10 5651.0000    0.0000

Now we can plot IPR with ggplot2

library(ggplot2)

ggplot(IPR, aes(x = Qo, y = Pwf)) + 
  geom_point() + geom_line()

The last IPR model us valid for pressure above bubble-point pressure.

With the last code we can create a function to automate IPR calculations, if you want to know more about functions in R check the this link, Define function in R

Darcy_PSS <- function(py,k,h,Bo,viso,re,rw,S){
  
  J = (k*h)/(141.2*Bo*viso*(log(re/rw)-3/4+S))
 
  pwf <- seq(0,py, length.out = 10)

  qo <- J*(py-pwf)

  IPR <- data.frame(Pwf = pwf, Qo = qo)

return(IPR)

}

IPR <- Darcy_PSS(4500, 8.2,53,1.1,1.7,2980,0.328,0)
print(IPR)
    Pwf        Qo
1     0 885.50310
2   500 787.11387
3  1000 688.72464
4  1500 590.33540
5  2000 491.94617
6  2500 393.55693
7  3000 295.16770
8  3500 196.77847
9  4000  98.38923
10 4500   0.00000

Now we can compare IPR with and without skin easily

IPR_nS <- Darcy_PSS(5000, 8.2,53,1.1,1.7,2980,0.328,0)
IPR_S <- Darcy_PSS(5000, 8.2,53,1.1,1.7,2980,0.328,2)

ggplot() + 
  geom_point(data = IPR_nS, aes(x = Qo, y = Pwf), color = "red") + 
  geom_line(data = IPR_nS, aes(x = Qo, y = Pwf), color = "red")+ 
  geom_point(data = IPR_S, aes(x = Qo, y = Pwf), color = "green") + 
  geom_line(data = IPR_S, aes(x = Qo, y = Pwf), color = "green")

References

Guo, Boyun (2008) Well productivity handbook

Citation

For attribution, please cite this work as

Vazquez (2022, Jan. 24). Chato Solutions: Inflow performance relationship: Part 1. Retrieved from https://www.chatosolutions.com/posts/2022-01-24-pi1/

BibTeX citation

@misc{vazquez2022inflow,
  author = {Vazquez, Rigoberto Chandomi},
  title = {Chato Solutions: Inflow performance relationship: Part 1},
  url = {https://www.chatosolutions.com/posts/2022-01-24-pi1/},
  year = {2022}
}