mbal_optim_param_gas.Rd
Create an object of class 'optimization_gas'
mbal_optim_param_gas( input_unit = "Field", output_unit = "Field", unknown_param = NULL, aquifer_model = NULL, G = NULL, phi = NULL, swi = NULL, Np = NULL, Gp = NULL, Wp = NULL, Wi = NULL, We = NULL, pd = NULL, p = NULL, pvt = NULL, cf = NULL, M = NULL, phi_a = NULL, perm_h_a = NULL, perm_v_a = NULL, h_a = NULL, r_a = NULL, r_R = NULL, w_a = NULL, l_a = NULL, tetha = NULL, muw_a = NULL, cw_a = NULL, cf_a = NULL, wf = NULL, sgrw = NULL, mult_len = NULL, lower = NULL, upper = NULL, control = NULL )
input_unit | a unit system for parameters, only the character string 'Field' is accepted |
---|---|
output_unit | a unit system for properties, only the character string 'Field' is accepted |
unknown_param | a character string showing the unknown parameter(s). One of the following options: 'G', 'We', 'M', or 'G_M' |
aquifer_model | defaulted to |
G | original gas in place, SCF. If unknown, a |
phi | reservoir porosity, a numeric fraction |
swi | initial water saturation in the reservoir, a numeric fraction |
Np | cumulative oil production, STB |
Gp | cumulative gas production, SCF |
Wp | cumulative water production, STB |
Wi | cumulative water injection, STB |
We | cumulative aquifer water influx, BBL. If unknown, a |
pd | dew point pressure, a numeric value, psi |
p | reservoir pressure, a numeric vector, psi |
pvt | a data frame of PVT properties including pressure 'p' in 'psi', oil formation volume factor 'Bo' in 'bbl/stb', solution gas-oil ratio 'Rs' in 'scf/stb', oil viscosity 'muo' in 'cp', volatilized oil-gas ratio 'Rv' in 'stb/scf', gas formation volume factor 'Bg' in 'bbl/scf', gas viscosity 'mug' in 'cp', water formation volume factor 'Bw' in 'bbl/stb', and water viscosity 'muw' in 'cp' |
cf | formation compressibility, a numeric value or vector, 1/psi |
M | ratio of non-net-pay pore volume to the reservoir (net-pay) volume, a numeric fraction. If unknown, a |
phi_a | aquifer porosity, a numeric fraction |
perm_h_a | aquifer horizontal permeability, md. Used in 'uss_rad_edge', 'uss_rad_bottom', 'uss_lin_edge', 'pss_rad_edge', 'pss_lin_edge' and 'pot' aquifer models |
perm_v_a | vertical permeability, md. Used in 'uss_rad_bottom', 'uss_lin_bottom', 'pss_rad_bottom', and 'pss_lin_bottom' aquifer models |
h_a | aquifer height, ft |
r_a | aquifer radius, ft. Used in 'uss_rad_edge', 'uss_rad_bottom', 'pss_rad_edge', and 'pot' aquifer models |
r_R | reservoir radius, ft. Used in 'uss_rad_edge', 'uss_rad_bottom', 'pss_rad_edge', and 'pot' aquifer models |
w_a | aquifer width, ft. Used in 'uss_lin_edge', 'uss_lin_bottom', 'pss_lin_edge', and 'pss_lin_bottom' aquifer models |
l_a | aquifer length, ft. Used in 'uss_lin_edge', 'uss_lin_bottom', 'pss_lin_edge', and 'pss_lin_bottom' aquifer models |
tetha | fraction of reservoir encircled by the aquifer, degrees. Used in 'uss_rad_edge', 'pss_rad_edge', and 'pot' aquifer models |
muw_a | aquifer water viscosity, cp |
cw_a | aquifer water compressibility, a numeric value, 1/psi |
cf_a | aquifer formation compressibility, a numeric value, 1/psi |
wf | weight factor, a numeric vector of zeros and ones. A zero value excludes the entire row of reservoir history data at a particular time from the material balance analysis |
sgrw | residual gas saturation in water invaded zone (aquifer encroachment or water injection), a numeric fraction |
mult_len | a numeric vector of initial estimates for the 'aquifer_model' parameters A vector of length one for the 'pot' aquifer model. It applies as a multiplier to the radius of the aquifer A vector of length two for the 'uss_rad_edge', and 'pss_rad_edge' aquifer models. The first parameter is applied as a multiplier to the aquifer radius, and the second parameter is applied as a multiplier to the aquifer horizontal permeability A vector of length two for the 'uss_lin_edge', and 'pss_lin_edge' aquifer models. The first parameter is applied as a multiplier to the aquifer length, and the second parameter is applied as a multiplier to the aquifer horizontal permeability A vector of length two for the 'uss_lin_bottom', and 'pss_lin_bottom' aquifer models. The first parameter is applied as a multiplier to the aquifer height, and the second parameter is applied as a multiplier to the aquifer vertical permeability A vector of length three for the 'uss_rad_bottom' aquifer model. The first parameter is applied as a multiplier to the aquifer radius, the second parameter is applied as a multiplier to the aquifer horizontal permeability, and the third parameter is applied as a multiplier to the aquifer vertical permeability |
lower | an optional numeric vector of lower bounds for the 'aquifer_model' parameters. See 'minpack.lm' package for details |
upper | an optional numeric vector of upper bounds for the 'aquifer_model' parameters. See 'minpack.lm' package for details |
control | an optional list of control settings. See 'minpack.lm' package for details |
a list of class 'mbal_gas' with all the required parameters for the mbal_perform_gas() S3 methods
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_optim_gas_lst <- mbal_optim_param_gas(input_unit = "Field", output_unit = "Field", unknown_param = "G", 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) dplyr::glimpse(mbal_optim_gas_lst)#> List of 16 #> $ input_unit : chr "Field" #> $ output_unit: chr "Field" #> $ G : NULL #> $ phi : num 0.1 #> $ swi : num 0.2 #> $ pd : num 3650 #> $ p : num [1:13] 3700 3650 3400 3100 2800 2500 2200 1900 1600 1300 ... #> $ cf : num [1:13] 2e-06 2e-06 2e-06 2e-06 2e-06 2e-06 2e-06 2e-06 2e-06 2e-06 ... #> $ M : num 0 #> $ pvt :'data.frame': 14 obs. of 9 variables: #> ..$ p : num [1:14] 3700 3650 3400 3100 2800 2500 2200 1900 1600 1300 ... #> ..$ Bo : num [1:14] 10.06 2.42 2.19 1.92 1.74 ... #> ..$ Rs : num [1:14] 11566 2378 2010 1569 1272 ... #> ..$ Rv : num [1:14] 8.41e-05 8.41e-05 7.05e-05 5.62e-05 4.65e-05 ... #> ..$ Bg : num [1:14] 0.00087 0.00088 0.00092 0.00099 0.00108 0.0012 0.00135 0.00156 0.00185 0.00228 ... #> ..$ Bw : num [1:14] 10.1 10.1 10.1 10.1 10.1 ... #> ..$ muo: num [1:14] 0.0612 0.062 0.1338 0.1826 0.2354 ... #> ..$ mug: num [1:14] 0.0612 0.062 0.0554 0.0436 0.0368 0.0308 0.0261 0.0222 0.0191 0.0166 ... #> ..$ muw: num [1:14] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 ... #> $ prod :'data.frame': 13 obs. of 3 variables: #> ..$ Np: num [1:13] 0 28600 93000 231000 270000 ... #> ..$ Gp: num [1:13] 0.0 3.4e+08 1.2e+09 3.3e+09 4.3e+09 ... #> ..$ Wp: num [1:13] 0 0 0 0 0 0 0 0 0 0 ... #> $ inj :'data.frame': 13 obs. of 1 variable: #> ..$ Wi: num [1:13] 0 0 0 0 0 0 0 0 0 0 ... #> $ We : num [1:13] 0 0 0 0 0 0 0 0 0 0 ... #> $ aquifer :List of 3 #> ..$ input_unit : chr "Field" #> ..$ output_unit: chr "Field" #> ..$ We : num [1:13] 0 0 0 0 0 0 0 0 0 0 ... #> ..- attr(*, "class")= chr [1:2] "NoA" "aquifer" #> $ wf : num [1:13] 1 1 1 1 1 1 1 1 1 1 ... #> $ sgrw : num 0.15 #> - attr(*, "class")= chr [1:3] "volumetric_M_optim_gas" "volumetric_optim_gas" "optimization_gas"