Generate a data frame of reservoir production estimates, and fluids saturations and liquid dropout in the gas leg according to the class of 'forecast_lst' and 'time_lst' objects

mbal_forecast_gas(forecast_lst, time_lst)

Arguments

forecast_lst

a list object of class 'forecast_gas'

time_lst

a list object of class 'time/date'

Value

a data frame with estimates for saturation of fluids, liquid dropout, gas-oil ratio, recovery factor, and drive indices over a range of given pressures

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) rel_perm <- as.data.frame(Rrelperm::kr2p_gl(SWCON = 0.2, SOIRG = 0.15, SORG = 0.15, SGCON = 0.05, SGCRIT = 0.05, KRGCL = 1, KROGCG = 1, NG = 3.16, NOG = 2.74, NP = 101)) colnames(rel_perm) <- c("Sg", "Sl", "Krg", "Krog") p <- c(3700, 3650, 3400, 3100, 2800, 2500, 2200, 1900, 1600, 1300, 1000, 700, 600) Gi <- rep(0, length.out = length(p)) wf <- rep(1, length.out = length(p)) forecast_lst <- mbal_forecast_param_gas(input_unit = "Field", output_unit = "Field", G = 2.41e10, phi = 0.1, swi = 0.2, pd = 3650, p = p, pvt = pvt_table, M = 0, cf = 2e-6, wf = wf, rel_perm = rel_perm) time_lst <- mbal_time(c(1:length(p)), "year") mbal_forecast_results <- mbal_forecast_gas(forecast_lst, time_lst) dplyr::glimpse(mbal_forecast_results)
#> Rows: 13 #> Columns: 16 #> $ `P (psia)` <dbl> 3700, 3650, 3400, 3100, 2800, 2500, 2200, 1900, 160... #> $ SOg <dbl> 0.00000000, 0.00000000, 0.03068653, 0.05013281, 0.0... #> $ SGg <dbl> 0.8000000, 0.8000000, 0.7693135, 0.7498672, 0.74238... #> $ SWg <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0... #> $ SOT <dbl> 0.00000000, 0.00000000, 0.03068653, 0.05013281, 0.0... #> $ SGT <dbl> 0.8000000, 0.8000000, 0.7693135, 0.7498672, 0.74238... #> $ SWT <dbl> 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0.2, 0... #> $ `GOR (SCF/STB)` <dbl> 11888.11, 11888.11, 14184.40, 17793.59, 21505.38, 2... #> $ RF_oil <dbl> 0.00000000, 0.01152429, 0.05685112, 0.11139035, 0.1... #> $ RF_gas <dbl> 0.00000000, 0.01152429, 0.06097174, 0.13339023, 0.2... #> $ Liq_volume <dbl> 0.00000000, 0.00000000, 0.03758014, 0.05859826, 0.0... #> $ Igd <dbl> NA, 0.9860593, 0.9849284, 0.9872226, 0.9887876, 0.9... #> $ 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.011212... #> $ 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