Title: | Estimate the Water Influx into Hydrocarbon Reservoirs |
---|---|
Description: | Generate a table of cumulative water influx into hydrocarbon reservoirs over time using un-steady and pseudo-steady state models. Van Everdingen, A. F. and Hurst, W. (1949) <doi:10.2118/949305-G>. Fetkovich, M. J. (1971) <doi:10.2118/2603-PA>. Yildiz, T. and Khosravi, A. (2007) <doi:10.2118/103283-PA>. |
Authors: | Farshad Tabasinejad [aut, cre] |
Maintainer: | Farshad Tabasinejad <[email protected]> |
License: | GPL-3 |
Version: | 0.1.0 |
Built: | 2025-02-12 05:27:20 UTC |
Source: | https://github.com/cran/Raquifer |
Create an object of class 'aquifer'
aquifer_param( input_unit = NULL, output_unit = NULL, model = NULL, flow_type = NULL, water_drive = NULL, phi = NULL, perm_h = NULL, perm_v = NULL, h_a = NULL, r_a = NULL, r_R = NULL, w_a = NULL, l_a = NULL, tetha = NULL, mu_water = NULL, c_water = NULL, c_rock = NULL, pressure = NULL )
aquifer_param( input_unit = NULL, output_unit = NULL, model = NULL, flow_type = NULL, water_drive = NULL, phi = NULL, perm_h = NULL, perm_v = NULL, h_a = NULL, r_a = NULL, r_R = NULL, w_a = NULL, l_a = NULL, tetha = NULL, mu_water = NULL, c_water = NULL, c_rock = NULL, pressure = NULL )
input_unit |
a unit system for parameters, a character string either 'SI' or 'Field' |
output_unit |
a unit system for properties, a character string either 'SI' or 'Field' |
model |
state of flow in the aquifer, a character string either 'uss' for the un-steady state flow or 'pss' for the pseudo-steady state flow |
flow_type |
a character string either 'radial' or 'linear' |
water_drive |
a character string either 'edge' or 'bottom' |
phi |
aquifer porosity, a numeric fraction |
perm_h |
aquifer horizontal permeability in 'md' in both 'SI' and 'Field' input unit systems. A NULL value must be used for the combination of 'uss', 'linear', and 'bottom' flow |
perm_v |
aquifer vertical permeability in 'md' in both 'SI' and 'Field' input unit systems. A NULL value must be used for the combination of 'uss', 'linear', 'edge' flow. A NULL value must be used for the combination of 'uss', 'radial', 'edge' flow. A NULL value must be used for the combination of 'pss', 'radial', 'edge' flow. |
h_a |
aquifer height in 'm' or 'ft' in 'SI' and 'Field' input unit systems, respectively. |
r_a |
aquifer radius in 'm' or 'ft' in 'SI' and 'Field' input unit systems, respectively. A NULL value must be used for the combination of 'uss', 'linear', 'edge' flow. A NULL value must be used for the combination of 'uss', 'linear', 'bottom' flow. |
r_R |
reservoir radius in 'm' or 'ft' in 'SI' and 'Field' input unit systems, respectively. A NULL value must be used for the combination of 'uss', 'linear', 'edge' flow. A NULL value must be used for the combination of 'uss', 'linear', 'bottom' flow. |
w_a |
aquifer width in 'm' or 'ft' in 'SI' and 'Field' input unit systems, respectively. A NULL value must be used for the combination of 'uss', 'radial', 'edge' flow. A NULL value must be used for the combination of 'uss', 'radial', 'bottom' flow. A NULL value must be used for the combination of 'pss', 'radial', 'edge' flow. |
l_a |
aquifer length in 'm' or 'ft' in 'SI' and 'Field' input unit systems, respectively. A NULL value must be used for the combination of 'uss', 'radial', 'edge' flow. A NULL value must be used for the combination of 'uss', 'radial', 'bottom' flow. A NULL value must be used for the combination of 'pss', 'radial', 'edge' flow. |
tetha |
fraction of reservoir encircled by the aquifer, reported in "degrees" in both 'SI' and 'Field' input unit systems. A NULL value must be used for the combination of 'uss', 'radial', 'bottom' flow. A NULL value must be used for the combination of 'uss', 'linear', 'edge' flow. A NULL value must be used for the combination of 'uss', 'linear', 'bottom' flow. |
mu_water |
water viscosity in 'mPa.s' or 'cp' in 'SI' and 'Field' input unit systems, respectively |
c_water |
water compressibility in '1/kPa' or '1/psi' in 'SI' and 'Field' input unit systems, respectively |
c_rock |
rock compressibility in '1/kPa' or '1/psi' in 'SI' and 'Field' input unit systems, respectively |
pressure |
a numeric vector of pressure data at the boundary of reservoir/aquifer. Must have the same length as the 'aquifer_time()' object |
a list of class 'aquifer' with all the required parameters for the aquifer_predict() S3 methods
aquifer_param_01 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, r_a = 2e4, r_R = 2e3, tetha = 360, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_01 aquifer_param_02 <- aquifer_param(input_unit = "SI", output_unit = "SI", model = "uss", flow_type = "radial", water_drive = "bottom", phi = 0.2, perm_h = 100, perm_v = 25, h_a = 25, r_a = 6000, r_R = 600, mu_water = 0.34, c_water = 6e-7, c_rock = 4.5e-7, pressure = c(3456, 3425, 3387, 3350, 3312) * 6.895) aquifer_param_02 aquifer_param_03 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "pss", flow_type = "radial", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, r_a = 2e4, r_R = 2e3, tetha = 360, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_03 aquifer_param_04 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "linear", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, w_a = 30000, l_a = 10000, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_04 aquifer_param_05 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "linear", water_drive = "bottom", phi = 0.2, perm_v = 10, h_a = 47, w_a = 4000, l_a = 4000, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_05
aquifer_param_01 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, r_a = 2e4, r_R = 2e3, tetha = 360, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_01 aquifer_param_02 <- aquifer_param(input_unit = "SI", output_unit = "SI", model = "uss", flow_type = "radial", water_drive = "bottom", phi = 0.2, perm_h = 100, perm_v = 25, h_a = 25, r_a = 6000, r_R = 600, mu_water = 0.34, c_water = 6e-7, c_rock = 4.5e-7, pressure = c(3456, 3425, 3387, 3350, 3312) * 6.895) aquifer_param_02 aquifer_param_03 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "pss", flow_type = "radial", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, r_a = 2e4, r_R = 2e3, tetha = 360, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_03 aquifer_param_04 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "linear", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, w_a = 30000, l_a = 10000, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_04 aquifer_param_05 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "linear", water_drive = "bottom", phi = 0.2, perm_v = 10, h_a = 47, w_a = 4000, l_a = 4000, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) aquifer_param_05
Generate a data frame of cumulative water influx estimates according to the class of 'aquifer_lst' and 'time_lst' objects
aquifer_predict(aquifer_lst, time_lst)
aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates according to the class of 'aquifer_lst' and 'time_lst' objects
Yildiz T, Khosravi A (2007). “An Analytical Bottomwaterdrive Aquifer Model for Material-Balance Analysis.” SPE Reservoir Evaluation & Engineering, 10(06), 618–628. ISSN 1094-6470, doi:10.2118/103283-PA.
Nabor GW, Barham RH (1964). “Linear Aquifer Behavior.” Journal of Petroleum Technology, 16(05), 561–563. ISSN 0149-2136, doi:10.2118/791-PA.
Fetkovich MJ (1971). “A Simplified Approach to Water Influx Calculations-Finite Aquifer Systems.” Journal of Petroleum Technology, 23(07), 814–828. ISSN 0149-2136, doi:10.2118/2603-PA.
Van Everdingen AF, Hurst W (1949). “The Application of the Laplace Transformation to Flow Problems in Reservoirs.” Journal of Petroleum Technology, 1(12), 305–324. ISSN 0149-2136, doi:10.2118/949305-G.
aquifer_time_1 <- aquifer_time(c(0:4) * 365, unit = "day") aquifer_param_01 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, r_a = 2e4, r_R = 2e3, tetha = 360, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) results_01 <- aquifer_predict(aquifer_param_01, aquifer_time_1) results_01
aquifer_time_1 <- aquifer_time(c(0:4) * 365, unit = "day") aquifer_param_01 <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.2, perm_h = 100, h_a = 47, r_a = 2e4, r_R = 2e3, tetha = 360, mu_water = 0.34, c_water = 4e-6, c_rock = 3e-6, pressure = c(3456, 3425, 3387, 3350, 3312)) results_01 <- aquifer_predict(aquifer_param_01, aquifer_time_1) results_01
Return a data frame of estimated cumulative water influx for the Fetkovich pseudo-steady state linear flow model, bottom-water-drive
## S3 method for class 'fetk_lin_bottom' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'fetk_lin_bottom' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Fetkovich pseudo-steady state linear flow model, bottom-water-drive
Return a data frame of estimated cumulative water influx for the Fetkovich pseudo-steady state linear flow model, edge-water-drive
## S3 method for class 'fetk_lin_edge' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'fetk_lin_edge' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Fetkovich pseudo-steady state linear flow model, edge-water-drive
Return a data frame of estimated cumulative water influx for the Fetkovich pseudo-steady state radial flow model, edge-water-drive
## S3 method for class 'fetk_rad_edge' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'fetk_rad_edge' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Fetkovich pseudo-steady state radial flow model, edge-water-drive
Return a data frame of estimated cumulative water influx for the Nabor-Barham un-steady state linear flow model, bottom-water-drive
## S3 method for class 'nb_lin_bottom' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'nb_lin_bottom' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Nabor-Barham un-steady state linear flow model, bottom-water-drive
Return a data frame of estimated cumulative water influx for the Nabor-Barham un-steady state linear flow model, edge-water-drive
## S3 method for class 'nb_lin_edge' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'nb_lin_edge' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Nabor-Barham un-steady state linear flow model, edge-water-drive
Return a data frame of estimated cumulative water influx for the Van Everdingen-Hurst un-steady state radial flow model, edge-water-drive
## S3 method for class 'veh_rad_edge' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'veh_rad_edge' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Van Everdingen-Hurst un-steady state radial flow model, edge-water-drive
Return a data frame of estimated cumulative water influx for the Yildiz-Khosravi un-steady state radial flow model, bottom-water-drive
## S3 method for class 'ykh_rad_bottom' aquifer_predict(aquifer_lst, time_lst)
## S3 method for class 'ykh_rad_bottom' aquifer_predict(aquifer_lst, time_lst)
aquifer_lst |
a list object of class 'aquifer' |
time_lst |
a list object of class 'time' |
a data frame of cumulative water influx estimates using the Yildiz-Khosravi un-steady state radial flow model, bottom-water-drive
Create an object of class 'time'
aquifer_time(x, unit = "day")
aquifer_time(x, unit = "day")
x |
a vector of times or a daily sequence of dates |
unit |
time/date unit of vector x |
a list of class 'time' with all the required parameters for the aquifer_predict() S3 methods
aquifer_time_1 <- aquifer_time(c(0:4) * 365, unit = "day") aquifer_time_1 aquifer_time_2 <- aquifer_time(c(0:4), unit = "month") aquifer_time_2 aquifer_time_3 <- aquifer_time(c(0:4), unit = "year") aquifer_time_3 aquifer_time_4 <- aquifer_time(seq(as.Date("2020/1/1"), by = "year", length.out = 5), unit = "date") aquifer_time_4
aquifer_time_1 <- aquifer_time(c(0:4) * 365, unit = "day") aquifer_time_1 aquifer_time_2 <- aquifer_time(c(0:4), unit = "month") aquifer_time_2 aquifer_time_3 <- aquifer_time(c(0:4), unit = "year") aquifer_time_3 aquifer_time_4 <- aquifer_time(seq(as.Date("2020/1/1"), by = "year", length.out = 5), unit = "date") aquifer_time_4