Fetkovich Decline Curves

R Reservoir engineering

A short description of the post.

Rigoberto Chandomi Vazquez https://www.linkedin.com/in/rigoberto-chandomi-v%C3%A1zquez-79038495/
06-16-2021

For a well entered in a closed circular reservoir a constant BHFP , the relationship between Fetkovich dimensionless decline rate function qDd and dimensionless decline time tDd is defined as:

\[q_{Dd} = q_D\left[ln \left(\frac{r_e}{r_{wa}}\right)-\frac{1}{2}\right] \] \[ t_{Dd} = \frac{t_D}{\frac{1}{2}\left[\left(\frac{r_e}{r_{wa}}\right)^2-1\right]\left[ln \left(\frac{r_e}{r_{wa}}\right)-\frac{1}{2}\right]}\] \[ r_{eD} = \frac{r_e}{r_{wa}}\] Dimensionless rate \(qD\) in function of dimensionless time \(tD\) can be approximate by (Edwardson et al., 1961):

\(t_D < 200\)

\[ q_D = \frac{26.7544 + 43.5537t_D^{0.5}+13.3813t_D+0.492949t_D^{1.5}}{47.421t_D^{0.5}+35.5372t_D+2.60967t_D^{1.5}}\] \(t_D \leq 200\)

\[ q_D = \frac{3.90086+2.02623t_D(ln \ t_D-1)}{t_D(ln\ t_D)^2}\]

Now, we can generate Fetkovich dimensionless flow rate \(q_{Dd}\) type curves

First, define \(t_{Dd}\) and \(r_{eD}\) range, in this case, 2000 \(t_{Dd}\) values and 8 \(r_{eD}\) values

library(emdbook)
library(reshape2)
library(dplyr)
library(plotly)

#Dimensionaless decline time
tDd <-  lseq(0.0001,10,2000)
#Dimensionless reservoir drainage radius 
reD <- c(10, 20, 50, 100, 10^3, 10^4, 10^5, 10^6)

We need to define \(t_D\) from \(t_{Dd}\) equation above, using sapply function we repeat the calculate with every \(r_{eD}\) value.

For \(q_D\), we define a functión qD.func(), using the aproximation and then calculate \(q_{Dd}\)

#Dimensionaless time 
tD <- sapply(reD,function(reD){
  tDd*(0.5*(reD^2-1)*(log(reD)-0.5)) 
})

#Dimensionaless rate
qD.func <- function(tD){
  ifelse(tD < 200,
         (26.7544+43.5537*tD^0.5+13.3818*tD+0.492949*tD^1.5)/
           (47.421*tD^0.5+35.5372*tD+2.60967*tD^1.5),
         (3.90086+2.02623*tD*(log(tD)-1))/(tD*(log(tD))^2))
}

qD <- qD.func(tD)

#Dimensionaless decline rate
qDd <- qD
for(i in 1:8){
  qDd[,i] <- qD[,i]*(log(reD[i])-0.5)
}

For plotting, generate a Dataframe using all the above values, with the function melt you can join several column in one define a common variable, in this case \(t_{Dd}\). Finally we plot \(q_{Dd}\) vs \(t_{Dd}\) for every \(r_{eD}\)

data.FET <- data.frame(tDd, qDd, exp(-tDd))
colnames(data.FET) <- c("TDd","10", "20", "50", "100", "10^3", "10^4", "10^5", 
                        "10^6", "e(-tDd)")

data.FET <- reshape2::melt(data.FET,id.vars=c("TDd"))

colnames(data.FET)<-c("TDd","reD", "qDd")

data.FET <- data.FET %>% 
  filter(qDd >= 0.01)

data.FET$qDd <- ifelse(data.FET$TDd > 0.13 & data.FET$reD != "e(-tDd)", 
                       NA, data.FET$qDd)

#Plot
plot_FET <- plot_ly() %>% 
  add_trace(x = data.FET$TDd , y = data.FET$qDd, color = data.FET$reD, 
            legendgroup = 'group1', mode = 'lines', text =data.FET$reD, 
            hovertemplate  = paste("reD: %{text}")) %>%
  layout(xaxis = list(title = "tDd", type = "log"), 
       yaxis = list(title = "qDd", type = "log"), 
       legend=list(title=list(text = "reD")))
  
plot_FET

Files

Reference Ahmed, T (2019) Reservoir Engineering Handbook. Fifth edition

Edwardson, M.J., Girner, H.M., Parkinson, H.R., Williams, C.D. and Matthews, C.S. (1962) Calculation of formation temperature disturbes caused by Mud Circulation, JPT

Citation

For attribution, please cite this work as

Vazquez (2021, June 16). Chato Solutions: Fetkovich Decline Curves. Retrieved from https://www.chatosolutions.com/posts/2021-06-16-fdc/

BibTeX citation

@misc{vazquez2021fetkovich,
  author = {Vazquez, Rigoberto Chandomi},
  title = {Chato Solutions: Fetkovich Decline Curves},
  url = {https://www.chatosolutions.com/posts/2021-06-16-fdc/},
  year = {2021}
}