Production profile

to create production profile you need initial production (Pi), duration(Time), and the decline rate(DR)

The inputs to the model

 library(ggplot2)

Pi <- 2000      ### The initial rate of production
Duration = 10   ### the duration of the production needed to be estiamted
DR <- 0.2       ### Decline rate nominated per year.
i = 0
Cump = Pi*365
df <- c(i,Pi,Cump)
while (i < Duration) {
  
  Pi = Pi- (Pi*DR)
  Cump = Cump+Pi*365
df <- rbind(df,data.frame(i+1, round(Pi,0),Cump))

i=i+1
}

#df
names(df)[1] <- "Time"
names(df)[2] <- "Production"
names(df)[3] <- "Cumulative.Production"

The expected production per day yearly

knitr::kable(df, caption = "Table of Production data expected in field Duration")
Table of Production data expected in field Duration
Time Production Cumulative.Production
0 2000 730000
1 1600 1314000
2 1280 1781200
3 1024 2154960
4 819 2453968
5 655 2693174
6 524 2884540
7 419 3037632
8 336 3160105
9 268 3258084
10 215 3336467

Graph shows the production forecast for the field life time

p<- ggplot(df, aes(Time,Production))+geom_point()+geom_line(colour = "blue")+xlab("Time in Years")+ ylab(" Production in STBPD")

Cumprd<- ggplot(df, aes(Time,Cumulative.Production))+geom_point()+geom_line(colour = "red")+xlab("Time in Years")+ ylab(" Cumulative Production in STBP")
plotly::ggplotly(p)
plotly::ggplotly(Cumprd)

The Cumulative production during the ‘Duration’

library(plotly)
# two <-ggplot(df, aes(Time,Production))+geom_point()+geom_line(aes(y= Cumulative.Production),colour = "blue")+scale_y_continuous(
#     "Production STBPD", sec.axis = sec_axis(~ .*365, name = "Cumulative Production"))
# 
# plotly::ggplotly(two)

ay <- list(

  overlaying = "y",
  side = "right")
  
 plot_ly() %>%
  add_trace(x = df$Time, y = df$Production, name = "Production STBPD", mode = 'lines+markers') %>%
  add_trace(x = df$Time, y = df$Cumulative.Production, name = "Cumulative productive STB", mode = 'lines+markers', yaxis = "y2") %>%
  layout(
    title = "Field Development Plan", yaxis2 = ay,
    xaxis = list(title="Time in Years")
  )
Cum.p<- print(paste('The total production is' , sum(df$Production)*365))
## [1] "The total production is 3336100"

The Cumulative Production for this Field is about The total production is 3336100 STB based on un interuppted production for a duration of 10 years and initial Production per day 2000 STB/day and nominal decline rate annually 20 %.

The coming episod, I will show the shiny App that can do this in less than 10 sec with more features.

Shinyapp has been created to create production profile without the hassel of changing the code. You can just play with the essential parameters and you get all the results instantaneously.

Please dont hesitate to contact me over a_moslim@live.com to share your comments.