The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
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 (Van Everdingen & Hurst, 1949). 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 (Yildiz & Khosravi, 2007). Nabor and Barham linear flow model for the constant terminal pressure solution is used for the edge-water and bottom-water drive aquifers modeling(Nabor & Barham, 1964). For the linear and radial pseudo-steady state flow modeling in aquifers, the Fetkovich method is used (Fetkovich, 1971).
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’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
#> $t
#> [1] 0.000 134.320 890.235 1809.305 2822.180 4352.990 6615.990
#> [8] 10966.060
#>
#> $unit
#> [1] "day"
#>
#> $reference_date
#> [1] "2020-05-12"
#>
#> attr(,"class")
#> [1] "day" "time"
parameters
#> $input_unit
#> [1] "Field"
#>
#> $output_unit
#> [1] "Field"
#>
#> $model
#> [1] "veh_rad_edge"
#>
#> $phi
#> [1] 0.27
#>
#> $perm_h
#> [1] 64.2
#>
#> $h_a
#> [1] 20
#>
#> $r_a
#> [1] 74460
#>
#> $r_R
#> [1] 14892
#>
#> $tetha
#> [1] 180
#>
#> $mu_water
#> [1] 0.485
#>
#> $c_water
#> [1] 3.88e-06
#>
#> $c_rock
#> [1] 2e-06
#>
#> $pressure
#> [1] 1640 1600 1400 1200 1000 800 600 400
#>
#> attr(,"class")
#> [1] "veh_rad_edge" "aquifer"
pred_veh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time)
head(pred_veh)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.00000000
#> 2 2020-09-23 134.320 0.06185335
#> 3 2022-10-19 890.235 1.27831951
#> 4 2025-04-25 1809.305 4.19222802
#> 5 2028-02-02 2822.180 8.46586625
#> 6 2032-04-11 4352.990 15.65627937
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)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.0000000
#> 2 2020-09-23 134.320 0.1600501
#> 3 2022-10-19 890.235 2.5380986
#> 4 2025-04-25 1809.305 8.0646132
#> 5 2028-02-02 2822.180 16.0265710
#> 6 2032-04-11 4352.990 29.3508862
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)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.00000000
#> 2 2020-09-23 134.320 0.02884514
#> 3 2022-10-19 890.235 1.08324703
#> 4 2025-04-25 1809.305 3.94690549
#> 5 2028-02-02 2822.180 8.44348341
#> 6 2032-04-11 4352.990 16.33925334
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)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.00000000
#> 2 2020-09-23 134.320 0.03199772
#> 3 2022-10-19 890.235 0.53782163
#> 4 2025-04-25 1809.305 1.63239439
#> 5 2028-02-02 2822.180 3.09768169
#> 6 2032-04-11 4352.990 5.35540873
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)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.0000000
#> 2 2020-09-23 134.320 0.5428142
#> 3 2022-10-19 890.235 3.7996992
#> 4 2025-04-25 1809.305 9.2278409
#> 5 2028-02-02 2822.180 14.6559827
#> 6 2032-04-11 4352.990 20.0841244
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
#> $input_unit
#> [1] "Field"
#>
#> $output_unit
#> [1] "Field"
#>
#> $model
#> [1] "fetk_lin_edge"
#>
#> $phi
#> [1] 0.27
#>
#> $perm_h
#> [1] 64.2
#>
#> $h_a
#> [1] 20
#>
#> $w_a
#> [1] 29784
#>
#> $l_a
#> [1] 161145
#>
#> $mu_water
#> [1] 0.485
#>
#> $c_water
#> [1] 3.88e-06
#>
#> $c_rock
#> [1] 2e-06
#>
#> $pressure
#> [1] 1640 1600 1400 1200 1000 800 600 400
#>
#> attr(,"class")
#> [1] "fetk_lin_edge" "aquifer"
pred_fetk_02 <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time)
head(pred_fetk_02)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.000000000
#> 2 2020-09-23 134.320 0.004426176
#> 3 2022-10-19 890.235 0.175334148
#> 4 2025-04-25 1809.305 0.668533598
#> 5 2028-02-02 2822.180 1.506005132
#> 6 2032-04-11 4352.990 3.161133684
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)
#> Date Time (days) We (MMbbl)
#> 1 2020-05-12 0.000 0.0000000
#> 2 2020-09-23 134.320 0.5428142
#> 3 2022-10-19 890.235 3.7996992
#> 4 2025-04-25 1809.305 9.2278409
#> 5 2028-02-02 2822.180 14.6559827
#> 6 2032-04-11 4352.990 20.0841244
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
#> $t
#> [1] 0 366 731 1096 1461 1827 2192 2557
#>
#> $unit
#> [1] "date"
#>
#> $reference_date
#> [1] "2020-01-01"
#>
#> attr(,"class")
#> [1] "day" "time"
parameters
#> $input_unit
#> [1] "Field"
#>
#> $output_unit
#> [1] "SI"
#>
#> $model
#> [1] "veh_rad_edge"
#>
#> $phi
#> [1] 0.27
#>
#> $perm_h
#> [1] 64.2
#>
#> $h_a
#> [1] 20
#>
#> $r_a
#> [1] 74460
#>
#> $r_R
#> [1] 14892
#>
#> $tetha
#> [1] 180
#>
#> $mu_water
#> [1] 0.485
#>
#> $c_water
#> [1] 3.88e-06
#>
#> $c_rock
#> [1] 2e-06
#>
#> $pressure
#> [1] 1640 1600 1400 1200 1000 800 600 400
#>
#> attr(,"class")
#> [1] "veh_rad_edge" "aquifer"
pred_veh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time)
head(pred_veh)
#> Date Time (days) We (m3)
#> 1 2020-01-01 0 0.0
#> 2 2021-01-01 366 18021.0
#> 3 2022-01-01 731 135900.7
#> 4 2023-01-01 1096 383984.4
#> 5 2024-01-01 1461 722190.1
#> 6 2025-01-01 1827 1141218.1
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
#> $t
#> [1] 1 2 3 4 5 6 7 8
#>
#> $unit
#> [1] "month"
#>
#> $reference_date
#> [1] "2020-05-12"
#>
#> attr(,"class")
#> [1] "month" "time"
parameters
#> $input_unit
#> [1] "Field"
#>
#> $output_unit
#> [1] "SI"
#>
#> $model
#> [1] "veh_rad_edge"
#>
#> $phi
#> [1] 0.27
#>
#> $perm_h
#> [1] 64.2
#>
#> $h_a
#> [1] 20
#>
#> $r_a
#> [1] 74460
#>
#> $r_R
#> [1] 14892
#>
#> $tetha
#> [1] 180
#>
#> $mu_water
#> [1] 0.485
#>
#> $c_water
#> [1] 3.88e-06
#>
#> $c_rock
#> [1] 2e-06
#>
#> $pressure
#> [1] 1640 1600 1400 1200 1000 800 600 400
#>
#> attr(,"class")
#> [1] "veh_rad_edge" "aquifer"
pred_veh <- aquifer_predict(aquifer_lst = parameters, time_lst = aqu_time)
head(pred_veh)
#> Date Time (months) We (m3)
#> 1 2020-06-11 1 0.000
#> 2 2020-07-11 2 4236.423
#> 3 2020-08-11 3 31650.466
#> 4 2020-09-10 4 87609.327
#> 5 2020-10-11 5 161084.687
#> 6 2020-11-10 6 249479.619
pred_veh %>% ggplot(aes(x = `Time (months)`, y = `We (m3)`)) +
geom_point(size = 3, color = "blue") +
theme_bw()
References
Fetkovich, M. J. (1971). A Simplified Approach to Water Influx Calculations-Finite Aquifer Systems. Journal of Petroleum Technology, 23(07), 814–828. https://doi.org/10.2118/2603-PA
Nabor, G. W., & Barham, R. H. (1964). Linear Aquifer Behavior. Journal of Petroleum Technology, 16(05), 561–563. https://doi.org/10.2118/791-PA
Van Everdingen, A. F., & Hurst, W. (1949). The Application of the Laplace Transformation to Flow Problems in Reservoirs. Journal of Petroleum Technology, 1(12), 305–324. https://doi.org/10.2118/949305-G
Yildiz, T., & Khosravi, A. (2007). An Analytical Bottomwaterdrive Aquifer Model for Material-Balance Analysis. SPE Reservoir Evaluation & Engineering, 10(06), 618–628. https://doi.org/10.2118/103283-PA
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.