Create an object of class 'mbal_oil'

mbal_perform_param_oil(
  input_unit = "Field",
  output_unit = "Field",
  aquifer_model = NULL,
  N = NULL,
  m = NULL,
  phi = NULL,
  swi = NULL,
  Np = NULL,
  Rp = NULL,
  Wp = NULL,
  Gi = NULL,
  Wi = NULL,
  We = NULL,
  pb = NULL,
  p = NULL,
  pvt = NULL,
  cf = 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,
  sorg = NULL,
  sorw = NULL
)

Arguments

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

aquifer_model

defaulted to NULL, otherwise must be a character string, one of the following eight options: 'uss_rad_edge', 'uss_rad_bottom', 'uss_lin_edge', 'uss_lin_bottom', 'pss_rad_edge', 'pss_lin_edge', 'pss_lin_bottom', 'pot'. For further information about each model, please see 'Raquifer' package reference manual (https://cran.r-project.org/web/packages/Raquifer/index.html)

N

original oil in place, STB

m

ratio of original gas cap volume to original oil leg volume, a numeric fraction

phi

reservoir porosity, a numeric fraction

swi

initial water saturation in the reservoir, a numeric fraction

Np

cumulative oil production, STB

Rp

ratio of cumulative produced gas to cumulative produced oil

Wp

cumulative water production, STB

Gi

cumulative gas injection, SCF

Wi

cumulative water injection, STB

We

cumulative aquifer water influx, BBL

pb

bubble 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

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

sorg

residual oil saturation in gas invaded zone (gas cap expansion or gas injection), a numeric fraction

sorw

residual oil saturation in water invaded zone (aquifer encroachment or water injection), a numeric fraction

Value

a list of class ’mbal_oil’ with all the required parameters for the mbal_perform_oil() S3 methods

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) dplyr::glimpse(mbal_param_oil_lst)
#> List of 16 #> $ input_unit : chr "Field" #> $ output_unit: chr "Field" #> $ N : num 1.37e+08 #> $ m : num 0.377 #> $ phi : num 0.2 #> $ swi : num 0.2 #> $ pb : num 3330 #> $ p : num [1:7] 3330 3150 3000 2850 2700 2550 2400 #> $ cf : num [1:7] 0 0 0 0 0 0 0 #> $ pvt :'data.frame': 7 obs. of 9 variables: #> ..$ p : num [1:7] 3330 3150 3000 2850 2700 2550 2400 #> ..$ Bo : num [1:7] 1.25 1.24 1.22 1.21 1.2 ... #> ..$ Rs : num [1:7] 510 477 450 425 401 375 352 #> ..$ Rv : num [1:7] 0 0 0 0 0 0 0 #> ..$ Bg : num [1:7] 0.00087 0.00092 0.00096 0.00101 0.00107 0.00113 0.0012 #> ..$ Bw : num [1:7] 1 1 1 1 1 ... #> ..$ muo: num [1:7] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 #> ..$ mug: num [1:7] 0.02 0.02 0.02 0.02 0.02 0.02 0.02 #> ..$ muw: num [1:7] 0.25 0.25 0.25 0.25 0.25 0.25 0.25 #> $ prod :'data.frame': 7 obs. of 3 variables: #> ..$ Np: num [1:7] 0 3295000 5903000 8852000 11503000 ... #> ..$ Rp: num [1:7] 510 1050 1060 1160 1235 ... #> ..$ Wp: num [1:7] 0 0 0 0 0 0 0 #> $ inj :'data.frame': 7 obs. of 2 variables: #> ..$ Gi: num [1:7] 0 0 0 0 0 0 0 #> ..$ Wi: num [1:7] 0 0 0 0 0 0 0 #> $ aquifer :List of 3 #> ..$ input_unit : chr "Field" #> ..$ output_unit: chr "Field" #> ..$ We : num [1:7] 0 0 0 0 0 0 0 #> ..- attr(*, "class")= chr [1:2] "We" "aquifer" #> $ wf : num [1:7] 1 1 1 0 1 0 1 #> $ sorw : num 0 #> $ sorg : num 0.2 #> - attr(*, "class")= chr [1:2] "combination_oil" "mbal_oil"