knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
Raquifer
Raquifer
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() arguments
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'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() arguments
x
: A vector or sequence of times/dates.unit
: A unit system for input vector x.aquifer_predict() arguments
aquifer_lst
: A list object of class 'decline'.time_lst
: A list object of class 'time'Installation
The Raquifer
can be installed from CRAN with:
install.packages("Raquifer")
Examples
Example 1: Un-steady state radial flow, edge-water drive
library(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 drive
library(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 drive
library(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 drive
library(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 drive
library(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 drive
library(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 drive
library(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 drive
library(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 drive
library(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()
References
Any 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.