Drawdown semilog analysis

R Well testing

A basic drawdown test analysis using semilog method.

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

Example 3.1 from Lee, J. & Spivey, J. (2013) Applied Well Test Interpretation using the recommended procedure

First, we load the libraries that we use and the Presurre data. In this case the data is on a CSV file, graphing the flowing bottomhole pressure, pwf vs. the test time, t, on a semilog scale, we can identify IARF with a straight line after 5 hours

library(plotly)
library(dplyr)
library(DT)

data.DD <- read.csv("ex1_DD.csv") 

datatable(data.DD)
plot_pwf <- plot_ly() %>%
      add_markers(data = data.DD, x = ~t, y = ~pwf, marker = list(color = "blue"), name = "Pwf") %>%
      layout(
        xaxis = list(type = "log", title = "time, hr"),
        yaxis = list(title = "Pwf, psi")
      )

plot_pwf

We can filter the data after 5 hours and use it to fit a linear regression model. Using the lm() function the data is fitting and the model is use to generate Pwf value for all test time.

Finally we plot the pwf data and the straight fit line

data.DD_filter <- data.DD %>%
      filter(t>=5)
    
    fit_sl <- lm(pwf ~ log10(t), data.DD_filter)
    data.DD$fit <- predict(fit_sl, data.DD)
    P_hr <- as.numeric(coefficients(fit_sl)[2]*log10(1)+coefficients(fit_sl)[1])
    
    plot_pwf <- plot_pwf %>%
      add_lines(data = data.DD,  x = ~t, y = ~fit,  line = list(color = "red"), name = "Slope" ) %>%
      add_markers(  x = 1, y = P_hr,  marker = list(color = "black", size = 10), name = "P1hr")
    
    plot_pwf

After that we get the slope and the pressure to 1 hr using the model. Also we can stimate slope using 2 value in the IARF region.

Qo <- 125 #STB/D
h <- 32 #ft
phi <- 0.22 #fraction
Bo <- 1.125 #RB/STB
Pi <- 2750 #psia
ct <- 0.0000109 #psia -1 
rw <- 0.25 #ft
vis <- 2.122 #cp

    P_hr <- as.numeric(coefficients(fit_sl)[2]*log10(1)+coefficients(fit_sl)[1])
    m <- as.numeric(abs(coefficients(fit_sl)[2]))
    m2 <- abs((3549-3583)/(log10(29.8)-log10(9.99)))
    
    
    print(paste("P1hr = ", P_hr, " psia"))
[1] "P1hr =  2065.95752748412  psia"
    print(paste("m = ", m))
[1] "m =  67.9209749669651"
    print(paste("m2 = ", m2))
[1] "m2 =  71.6316115550292"

Now, we can stimate permeability, skin and radius of investigation using the following formulas

\[ k = \frac{162.6qB\mu}{|m|h}\] \[ s = 1.151 \left[\frac{p_i-p_{1hr}}{|m|}-log\left(\frac{k}{\phi\mu c_tr_w^2}\right)+3.23\right]\]

\[ r_i = \sqrt[]{\frac{kt}{948\phi\mu c_t}}\]
    k <- (162.6*Qo*Bo*vis)/(m*h)
    s <- 1.151*((Pi-P_hr)/m-log10((k)/(1688*phi*vis*ct*rw^2))+3.23)
    ri <- sqrt((k*max(data.DD$t))/(948*phi*vis*ct))
    
    
    print(paste("k = ", k, " md"))
[1] "k =  22.324131220878  md"
    print(paste("s = ", s))
[1] "s =  9.99324050676807"
    print(paste("ri = ", ri, " ft"))
[1] "ri =  577.234239092601  ft"

Files

Reference Lee, J. & Spivey, J. (2013) Applied Well Test Interpretation using the recommended procedure

Citation

For attribution, please cite this work as

Vazquez (2021, Aug. 18). Chato Solutions: Drawdown semilog analysis. Retrieved from https://www.chatosolutions.com/posts/2021-08-18-ex1semilog/

BibTeX citation

@misc{vazquez2021drawdown,
  author = {Vazquez, Rigoberto Chandomi},
  title = {Chato Solutions: Drawdown semilog analysis},
  url = {https://www.chatosolutions.com/posts/2021-08-18-ex1semilog/},
  year = {2021}
}