knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
RaquiferRaquifer estimates the cumulative water influx into hydrocarbon reservoirs using un-steady and pseudo-steady state modeling approaches. It generates a data frame of cumulative water influx over time for edge-drive and bottom-drive aquifers. Van Everdingen and Hurst un-steady state model for the constant terminal pressure solution predicts the cumulative influx for edge-water drive aquifers with radial flow [@VanEverdingen1949]. For the bottom-water drive aquifers with linear/radial flow, the Yildiz-Khosravi un-steady state model for the constant terminal pressure solution is used [@Yildiz2007]. Nabor and Barham linear flow model for the constant terminal pressure solution is used for the edge-water and bottom-water drive aquifers modeling[@Nabor1964]. For the linear and radial pseudo-steady state flow modeling in aquifers, the Fetkovich method is used [@Fetkovich1971].
Cumulative water influx predictions are generated by three different functions: aquifer_param(), aquifer_time(), and aquifer_predict().
aquifer_param() argumentsinput_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'param 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 flowflow_type: A character string either 'radial' or 'linear'water_drive: A character string either 'edge' or 'bottom'phi: Aquifer porosity, a numeric fractionperm_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' flowperm_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, respectivelyc_water: Water compressibility in '1/kPa' or '1/psi' in 'SI' and 'Field' input unit systems, respectivelyc_rock: Rock compressibility in '1/kPa' or '1/psi' in 'SI' and 'Field' input unit systems, respectivelypressure: A numeric vector of pressure data at the boundary of reservoir/aquifer. Must have the same length as the 'aquifer_time()' objectaquifer_time() argumentsx: A vector or sequence of times/dates.unit: A unit system for input vector x.aquifer_predict() argumentsaquifer_lst: A list object of class 'decline'.time_lst: A list object of class 'time'InstallationThe Raquifer can be installed from CRAN with:
install.packages("Raquifer")
ExamplesExample 1: Un-steady state radial flow, edge-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.27, perm_h = 64.2, h_a = 20, r_a = 5 * 14892, r_R = 14892, tetha = 180, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) aqu_time parameters pred_veh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_veh) pred_veh %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 2: Un-steady state radial flow, bottom-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "radial", water_drive = "bottom", phi = 0.27, perm_h = 64.2, perm_v = 64.2, h_a = 20, r_a = 5 * 14892, r_R = 14892, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) pred_ykh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_ykh) pred_ykh %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 3: Pseudo-steady state radial flow, edge-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "pss", flow_type = "radial", water_drive = "edge", phi = 0.27, perm_h = 64.2, h_a = 20, r_a = 5 * 14892, r_R = 14892, tetha = 180, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) pred_fetk <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_fetk) pred_fetk %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 4: Un-steady state linear flow, edge-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "linear", water_drive = "edge", phi = 0.27, perm_h = 64.2, h_a = 20, w_a = 29784, l_a = 161145, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) pred_nb_01 <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_nb_01) pred_nb_01 %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 5: Un-steady state linear flow, bottom-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "uss", flow_type = "linear", water_drive = "bottom", phi = 0.27, perm_v = 64.2, h_a = 20, w_a = 29784, l_a = 161145, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) pred_nb_02 <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_nb_02) pred_nb_02 %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 6: Pseudo-steady state linear flow, edge-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "pss", flow_type = "linear", water_drive = "edge", phi = 0.27, perm_h = 64.2, h_a = 20, w_a = 29784, l_a = 161145, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) parameters pred_fetk_02 <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_fetk_02) pred_fetk_02 %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 7: Pseudo-steady state linear flow, bottom-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = c(0,0.368,2.439,4.957,7.732,11.926,18.126,30.044) * 365, unit = "day") parameters <- aquifer_param(input_unit = "Field", output_unit = "Field", model = "pss", flow_type = "linear", water_drive = "bottom", phi = 0.27, perm_v = 64.2, h_a = 20, w_a = 29784, l_a = 161145, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) pred_fetk_03 <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_fetk_03) pred_fetk_03 %>% ggplot(aes(x = `Time (days)`, y = `We (MMbbl)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 8: Un-steady state radial flow, edge-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = seq(as.Date("2020/1/1"), by = "year", length.out = 8), unit = "date") parameters <- aquifer_param(input_unit = "Field", output_unit = "SI", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.27, perm_h = 64.2, h_a = 20, r_a = 5 * 14892, r_R = 14892, tetha = 180, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) aqu_time parameters pred_veh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_veh) pred_veh %>% ggplot(aes(x = `Time (days)`, y = `We (m3)`)) + geom_point(size = 3, color = "blue") + theme_bw()
Example 8: Un-steady state radial flow, edge-water drivelibrary(Raquifer) library(ggplot2) library(magrittr) aqu_time <- aquifer_time(x = 1:8, unit = "month") parameters <- aquifer_param(input_unit = "Field", output_unit = "SI", model = "uss", flow_type = "radial", water_drive = "edge", phi = 0.27, perm_h = 64.2, h_a = 20, r_a = 5 * 14892, r_R = 14892, tetha = 180, mu_water = 0.485, c_water = 3.88e-6, c_rock = 2e-6, pressure = c(1640,1600,1400,1200,1000,800,600,400)) aqu_time parameters pred_veh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time) head(pred_veh) pred_veh %>% ggplot(aes(x = `Time (months)`, y = `We (m3)`)) + geom_point(size = 3, color = "blue") + theme_bw()
ReferencesAny scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.