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

mbal_perform_gas(mbal_lst, time_lst)

Arguments

mbal_lst

a list object of class 'mbal_gas'

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.

Fetkovich MJ, Reese DE, Whitson CH (1998). “Application of a General Material Balance for High-Pressure Gas Reservoirs (includes associated paper 51360).” SPE Journal, 3(01), 3--13. ISSN 1086-055X, doi: 10.2118/22921-PA , https://doi.org/10.2118/22921-PA.

Examples

p_pvt <- c(3700, 3650, 3400, 3100, 2800, 2500, 2200, 1900, 1600, 1300, 1000, 700, 600, 400) Bo <- c(10.057, 2.417, 2.192, 1.916, 1.736, 1.617, 1.504, 1.416, 1.326, 1.268, 1.205, 1.149, 1.131, 1.093) Rv <- c(84.11765, 84.11765, 70.5, 56.2, 46.5, 39.5, 33.8, 29.9, 27.3, 25.5, 25.9, 28.3, 29.8, 33.5) / 1e6 Rs <- c(11566, 2378, 2010, 1569, 1272, 1067, 873, 719, 565, 461, 349, 249, 218, 141) Bg <- c(0.87, 0.88, 0.92, 0.99, 1.08, 1.20, 1.35, 1.56, 1.85, 2.28, 2.95, 4.09, 4.68, 6.53) / 1000 cw <- 3e-6 Bwi <- 10.05 Bw <- Bwi * exp(cw * (p_pvt[1] - p_pvt)) muo <- c(0.0612, 0.062, 0.1338, 0.1826, 0.2354, 0.3001, 0.3764, 0.4781, 0.6041, 0.7746, 1.0295, 1.358, 1.855, 2.500) mug <- c(0.0612, 0.062, 0.0554, 0.0436, 0.0368, 0.0308, 0.0261, 0.0222, 0.0191, 0.0166, 0.0148, 0.0135, 0.0125, 0.0115) muw <- rep(0.25, 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(3700, 3650, 3400, 3100, 2800, 2500, 2200, 1900, 1600, 1300, 1000, 700, 600) We <- rep(0, length.out = length(p)) Np <- c(0, 28.6, 93, 231, 270, 379, 481, 517.2, 549, 580, 675, 755, 803) *1e3 Gp <- c(0, 0.34, 1.2, 3.3, 4.3, 6.6, 9.1, 10.5, 12, 12.8, 16.4, 19.1, 20.5) * 1e9 Wp <- rep(0, length.out = length(p)) Wi <- rep(0, length.out = length(p)) wf <- rep(1, length.out = length(p)) mbal_param_gas_lst <- mbal_perform_param_gas(input_unit = "Field", output_unit = "Field", G = 2.41e10, aquifer_model = NULL, phi = 0.1, swi = 0.2, Np = Np, Gp = Gp, Wp = Wp, Wi = Wi, We = We, pd = 3650, p = p, pvt = pvt_table, M = 0, cf = 2e-6, wf = wf, sgrw = 0.15) time_lst <- mbal_time(c(1:length(p)), "year") mbal_results <- mbal_perform_gas(mbal_param_gas_lst, time_lst) dplyr::glimpse(mbal_results)
#> Rows: 13 #> Columns: 29 #> $ `P (psia)` <dbl> 3700, 3650, 3400, 3100, 2800, 2500, 2200, 1900, 16... #> $ `Eo (bbl/STB)` <dbl> 0.0000000, 0.1320662, 0.6574474, 1.5325537, 2.6122... #> $ `Eg (bbl/SCF)` <dbl> 0.000000e+00, 1.000000e-05, 5.543884e-05, 1.311046... #> $ `Ew (bbl/STB)` <dbl> 0.000000000, 0.001507613, 0.009049071, 0.018106291... #> $ `Ef (bbl/bbl)` <dbl> 0.0000, 0.0001, 0.0006, 0.0012, 0.0018, 0.0024, 0.... #> $ `Egwf (bbl/SCF)` <dbl> 0.000000e+00, 1.014138e-05, 5.628718e-05, 1.328015... #> $ `Et (bbl)` <dbl> 0.0, 244407.2, 1356521.0, 3200515.8, 5471394.5, 84... #> $ `F (bbl)` <dbl> 0, 299200, 1107355, 3285114, 4670970, 7961572, 123... #> $ We <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #> $ Igd <dbl> NA, 0.9860593, 0.9849284, 0.9872226, 0.9887876, 0.... #> $ Inwd <dbl> NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #> $ Ifwd <dbl> NA, 0.013940655, 0.015071605, 0.012777361, 0.01121... #> $ Iawd <dbl> NA, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #> $ Itot <dbl> NA, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 #> $ RF_oil <dbl> 0.00000000, 0.01152429, 0.05619769, 0.11101389, 0.... #> $ RF_gas <dbl> 0.00000000, 0.01152429, 0.06099636, 0.13340325, 0.... #> $ SOg <dbl> 0.00000000, 0.00000000, 0.03081968, 0.05019541, 0.... #> $ SGg <dbl> 0.8000000, 0.8000000, 0.7691803, 0.7498046, 0.7421... #> $ SWg <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, ... #> $ SOT <dbl> 0.00000000, 0.00000000, 0.03081968, 0.05019541, 0.... #> $ SGT <dbl> 0.8000000, 0.8000000, 0.7691803, 0.7498046, 0.7421... #> $ SWT <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, ... #> $ `qo (STB/day)` <dbl> 0.00000, 78.35616, 176.43836, 378.08219, 106.84932... #> $ `qg (SCF/day)` <dbl> 0.0, 931506.8, 2356164.4, 5753424.7, 2739726.0, 63... #> $ `qw (STB/day)` <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #> $ fo <dbl> 0.000000000, 0.000000000, 0.022742723, 0.033095319... #> $ fw <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 #> $ `GOR (SCF/STB)` <dbl> 11888.11, 11888.11, 13354.04, 15217.39, 25641.03, ... #> $ `kro/krg` <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0