Generate a data frame of reservoir performance data according to the class of 'mbal_lst' and 'time_lst' objects

mbal_perform_oil(mbal_lst, time_lst)

Arguments

mbal_lst

a list object of class 'mbal_oil'

time_lst

a list object of class 'time/date'

Value

a data frame with estimates for fluids saturation, drive indices, production rates, and gas-oil ratios over the pressure history of the reservoir

References

Walsh MP, Lake LW (2003). A Generalized Approach to Primary Hydrocarbon Recovery, 1st edition. Elsevier Ltd. ISBN 9780444506832, https://www.elsevier.com/books/a-generalized-approach-to-primary-hydrocarbon-recovery-of-petroleum-exploration-and-production/walsh/978-0-444-50683-2.

Walsh MP, Ansah J, Raghavan R (1994). “New, generalized material balance as an equation of a straight line: Part 1- Applications to undersaturated, volumetric reservoirs.” Proceedings of the Permian Basin Oil \& Gas Recovery Conference, 549--564. doi: 10.2118/27684-MS .

Walsh MP, Ansah J, Raghavan R (1994). “New, generalized material balance as an equation of a straight line: part 2- Applications to saturated and non-volumetric reservoirs.” Proceedings of the Permian Basin Oil \& Gas Recovery Conference, 859--865. doi: 10.2118/27728-MS .

Walsh MP (1995). “A Generalized Approach to Reservoir Material Balance Calculations.” Journal of Canadian Petroleum Technology, 34(01), 10. ISSN 0021-9487, doi: 10.2118/95-01-07 , https://doi.org/10.2118/95-01-07.

Examples

p_pvt <- c(3330, 3150, 3000, 2850, 2700, 2550, 2400) Bo <- c(1.2511, 1.2353, 1.2222, 1.2122, 1.2022, 1.1922, 1.1822) Rs <- c(510, 477, 450, 425, 401, 375, 352) Bg <- c(0.00087, 0.00092, 0.00096, 0.00101, 0.00107, 0.00113, 0.00120) cw <- 2e-6 Bwi <- 1.0 Bw <- Bwi * exp(cw * (p_pvt[1] - p_pvt)) Rv <- rep(0, length(p_pvt)) muo <- rep(0.5, length(p_pvt)) muw <- rep(0.25, length(p_pvt)) mug <- rep(0.02, length(p_pvt)) pvt_table <- data.frame(p = p_pvt, Bo = Bo, Rs = Rs, Rv = Rv, Bg = Bg, Bw = Bw, muo = muo, mug = mug, muw = muw) p <- c(3330, 3150, 3000, 2850, 2700, 2550, 2400) We <- rep(0, length.out = length(p)) Np <- c(0, 3.295, 5.903, 8.852, 11.503, 14.513, 17.730) * 1e6 Rp <- c(0, 1050, 1060, 1160, 1235, 1265, 1300) Wp <- rep(0, length.out = length(p)) Wi <- rep(0, length.out = length(p)) Gi <- rep(0, length.out = length(p)) wf <- c(1, 1, 1, 0, 1, 0, 1) mbal_param_oil_lst <- mbal_perform_param_oil(input_unit = "Field", output_unit = "Field", aquifer_model = NULL, N = 1.37e8, m = 0.377, phi = 0.2, swi = 0.2, Np = Np, Rp = Rp, Wp = Wp, Gi = Gi, Wi = Wi, We = We, pb = 3330, p = p, pvt = pvt_table, cf = 0, wf = wf, sorg = 0.2, sorw = 0) time_lst <- mbal_time(c(0, 365, 730, 1095, 1460, 1825, 2190), "day") mbal_results <- mbal_perform_oil(mbal_param_oil_lst, time_lst) dplyr::glimpse(mbal_results)
#> Rows: 5 #> Columns: 31 #> $ `P (psia)` <dbl> 3330, 3150, 3000, 2700, 2400 #> $ `Eo (bbl/STB)` <dbl> 0.00000, 0.01456, 0.02870, 0.06773, 0.12070 #> $ `Eg (bbl/SCF)` <dbl> 0.00000, 0.00005, 0.00009, 0.00020, 0.00033 #> $ `Ew (bbl/STB)` <dbl> 0.0000000000, 0.0003600648, 0.0006602178, 0.001260... #> $ `Ef (bbl/bbl)` <dbl> 0, 0, 0, 0, 0 #> $ `Eowf (bbl/STB)` <dbl> 0.00000000, 0.01467262, 0.02890650, 0.06812434, 0.... #> $ `Egwf (bbl/SCF)` <dbl> 0.000000e+00, 5.007831e-05, 9.014360e-05, 2.002742... #> $ `Et (bbl)` <dbl> 0, 5729647, 10655483, 24208130, 41156051 #> $ `F (bbl)` <dbl> 0, 5807306, 10671443, 24093954, 41130054 #> $ We <dbl> 0, 0, 0, 0, 0 #> $ Igd <dbl> NA, 0.6481519, 0.6273415, 0.6136256, 0.5955455 #> $ Isd <dbl> NA, 0.3481401, 0.3690025, 0.3833014, 0.4017854 #> $ Inwd <dbl> NA, 0, 0, 0, 0 #> $ Ifwd <dbl> NA, 0.003707997, 0.003655953, 0.003073049, 0.00266... #> $ Iawd <dbl> NA, 0, 0, 0, 0 #> $ Itot <dbl> NA, 1, 1, 1, 1 #> $ RF_oil <dbl> 0.00000000, 0.02372947, 0.04302315, 0.08436139, 0.... #> $ RF_gas <dbl> 0.00000000, 0.02368113, 0.04334442, 0.09902293, 0.... #> $ SOo <dbl> 0.8000000, 0.6246440, 0.6117402, 0.5935985, 0.5738891 #> $ SGo <dbl> 0.0000000, 0.1753560, 0.1882598, 0.2064015, 0.2261109 #> $ SWo <dbl> 0.2, 0.2, 0.2, 0.2, 0.2 #> $ SOT <dbl> 0.5809731, 0.4619422, 0.4481286, 0.4219662, 0.3943572 #> $ SGT <dbl> 0.2190269, 0.3380578, 0.3518714, 0.3780338, 0.4056428 #> $ SWT <dbl> 0.2, 0.2, 0.2, 0.2, 0.2 #> $ `qo (STB/day)` <dbl> 0.000, 9027.397, 7145.205, 7671.233, 8530.137 #> $ `qg (SCF/day)` <dbl> 0, 9478767, 7664192, 10889075, 12113418 #> $ `qw (STB/day)` <dbl> 0, 0, 0, 0, 0 #> $ fg <dbl> 0.0000000, 0.2991047, 0.3403058, 0.4878215, 0.5404484 #> $ fw <dbl> 0, 0, 0, 0, 0 #> $ `GOR (SCF/STB)` <dbl> 510.000, 1050.000, 1072.634, 1419.469, 1420.073 #> $ `krg/kro` <dbl> 0.00000000, 0.01706986, 0.01956239, 0.03625891, 0....