pyrestoolbox 3.0.3__tar.gz → 3.0.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyrestoolbox-3.0.3/pyrestoolbox.egg-info → pyrestoolbox-3.0.4}/PKG-INFO +53 -11
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/README.rst +52 -10
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/__init__.py +11 -0
- pyrestoolbox-3.0.4/pyrestoolbox/dca/__init__.py +1 -0
- pyrestoolbox-3.0.4/pyrestoolbox/dca/dca.py +944 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/brine.rst +67 -44
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/changelist.rst +26 -0
- pyrestoolbox-3.0.4/pyrestoolbox/docs/dca.rst +639 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/examples.ipynb +1905 -1457
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/gas.rst +178 -2
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/layer.rst +55 -2
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/library.rst +66 -6
- pyrestoolbox-3.0.4/pyrestoolbox/docs/matbal.rst +385 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/nodal.rst +207 -135
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/oil.rst +266 -7
- pyrestoolbox-3.0.4/pyrestoolbox/docs/recommend.rst +281 -0
- pyrestoolbox-3.0.4/pyrestoolbox/docs/sensitivity.rst +157 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/simtools.rst +357 -34
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/gas/gas.py +5 -2
- pyrestoolbox-3.0.4/pyrestoolbox/matbal/__init__.py +1 -0
- pyrestoolbox-3.0.4/pyrestoolbox/matbal/matbal.py +636 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/nodal/nodal.py +66 -30
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/oil/oil.py +0 -21
- pyrestoolbox-3.0.4/pyrestoolbox/recommend/__init__.py +1 -0
- pyrestoolbox-3.0.4/pyrestoolbox/recommend/recommend.py +275 -0
- pyrestoolbox-3.0.4/pyrestoolbox/sensitivity/__init__.py +1 -0
- pyrestoolbox-3.0.4/pyrestoolbox/sensitivity/sensitivity.py +202 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/shared_fns/shared_fns.py +110 -2
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/run_all_tests.py +4 -0
- pyrestoolbox-3.0.4/pyrestoolbox/tests/test_dca.py +675 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_doc_examples.py +317 -0
- pyrestoolbox-3.0.4/pyrestoolbox/tests/test_matbal.py +724 -0
- pyrestoolbox-3.0.4/pyrestoolbox/tests/test_recommend.py +104 -0
- pyrestoolbox-3.0.4/pyrestoolbox/tests/test_sensitivity.py +122 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4/pyrestoolbox.egg-info}/PKG-INFO +53 -11
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/SOURCES.txt +17 -37
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/setup.cfg +1 -1
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/setup.py +1 -1
- pyrestoolbox-3.0.3/pyrestoolbox/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/_lib_salting_library.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/_lib_vle_engine.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/brine.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/classes/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/classes/__pycache__/classes.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/constants/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/constants/__pycache__/constants.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/gas/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/gas/__pycache__/gas.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/layer/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/layer/__pycache__/layer.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/library/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/library/__pycache__/library.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/nodal/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/nodal/__pycache__/nodal.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/oil/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/oil/__pycache__/oil.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/iapws_if97.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/plyasunov_model.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/water_properties.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/shared_fns/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/shared_fns/__pycache__/shared_fns.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/simtools/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/simtools/__pycache__/simtools.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_brine.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_doc_examples.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_gas.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_layer.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_nodal.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_oil.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_simtools.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/validate/__pycache__/__init__.cpython-310.pyc +0 -0
- pyrestoolbox-3.0.3/pyrestoolbox/validate/__pycache__/validate.cpython-310.pyc +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/LICENSE +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/MANIFEST.in +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyproject.toml +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/_lib_salting_library.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/_lib_vle_engine.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/brine.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/classes/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/classes/classes.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/constants/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/constants/constants.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/.ipynb_checkpoints/examples-checkpoint.ipynb +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/.ipynb_checkpoints/nodal_examples-checkpoint.ipynb +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/.ipynb_checkpoints/nodal_hydrate_demo-checkpoint.ipynb +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/bot.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/bot_PVTO.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/bot_img.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/dry_gas.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/grid_sat_df.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/influence.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/properties_df.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/sgof.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/swof.png +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/nodal_examples.ipynb +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/nodal_hydrate_demo.ipynb +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/gas/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/layer/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/layer/layer.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/library/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/library/component_library.xlsx +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/library/library.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/nodal/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/oil/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/iapws_if97.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/plyasunov_model.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/water_properties.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/shared_fns/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/simtools/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/simtools/simtools.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_brine.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_gas.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_layer.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_nodal.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_oil.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_simtools.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_unified_brine_design.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_viscosity_scaling.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/validate/__init__.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/validate/validate.py +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/dependency_links.txt +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/requires.txt +0 -0
- {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyrestoolbox
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.4
|
|
4
4
|
Summary: pyResToolbox - A collection of Reservoir Engineering Utilities
|
|
5
5
|
Home-page: https://github.com/mwburgoyne/pyResToolbox
|
|
6
6
|
Author: Mark W. Burgoyne
|
|
@@ -41,16 +41,19 @@ A collection of Reservoir Engineering Utilities
|
|
|
41
41
|
This set of functions focuses on those that the author uses often while crafting programming solutions.
|
|
42
42
|
These are the scripts that are often copy/pasted from previous work - sometimes slightly modified - resulting in a trail of slightly different versions over the years. Some attempt has been made here to make this implementation flexible enough such that it can be relied on as-is going forward.
|
|
43
43
|
|
|
44
|
-
Note: Version 3.0 consolidates simulation-oriented functions under the simtools module, adds nodal analysis (VLP/IPR), VFP table generation, relative permeability curve fitting, and Eclipse METRIC unit support across all modules.
|
|
44
|
+
Note: Version 3.0 consolidates simulation-oriented functions under the simtools module, adds nodal analysis (VLP/IPR), VFP table generation, relative permeability curve fitting, and Eclipse METRIC unit support across all modules. Version 3.0.4 adds decline curve analysis, material balance, method recommendations, and sensitivity analysis.
|
|
45
45
|
|
|
46
46
|
Includes functions to perform calculations including;
|
|
47
47
|
|
|
48
|
+
- Decline Curve Analysis with Arps and Duong models — fitting, forecasting, EUR, windowed fitting, secondary phase ratio models, and uptime inference
|
|
49
|
+
- Material Balance for gas (P/Z with Cole plot and Havlena-Odeh aquifer support) and oil (Havlena-Odeh with drive indices, parameter regression, and tabulated PVT)
|
|
48
50
|
- Inflow Performance Relationships (IPR) for oil and gas wells
|
|
49
51
|
- Vertical Lift Performance (VLP) with four multiphase flow correlations (Hagedorn-Brown, Woldesemayat-Ghajar, Gray, Beggs & Brill)
|
|
50
52
|
- Nodal analysis operating point determination
|
|
51
53
|
- Eclipse VFP table generation (VFPPROD and VFPINJ keywords)
|
|
52
54
|
- PVT Calculations for oil
|
|
53
55
|
- PVT calculation for gas, including up to 100% inerts for CO2, H2S, N2 and H2
|
|
56
|
+
- Gas hydrate formation prediction with thermodynamic inhibitor calculations
|
|
54
57
|
- Return critical parameters for typical components
|
|
55
58
|
- Creation of Black Oil Table information (PVDO, PVDG, PVTO, PVTW keywords)
|
|
56
59
|
- Creation of layered permeability distribution consistent with a Lorenz heterogeneity factor
|
|
@@ -58,10 +61,12 @@ Includes functions to perform calculations including;
|
|
|
58
61
|
- Generation of AQUTAB include file influence functions for use in ECLIPSE
|
|
59
62
|
- Creation of Corey, LET and Jerauld relative permeability tables in Eclipse format, with curve fitting support
|
|
60
63
|
- Calculation of Methane, CO2 and multicomponent gas saturated brine properties (Soreide-Whitson VLE)
|
|
64
|
+
- Method recommendation engine for selecting appropriate correlations based on fluid composition
|
|
65
|
+
- Sensitivity analysis with parameter sweeps and tornado charts
|
|
61
66
|
|
|
62
67
|
All public PVT, flow rate, and simulation table functions support both oilfield (psia, deg F, ft) and Eclipse METRIC (barsa, deg C, m) unit systems via an optional ``metric=False`` parameter. See individual module documentation for unit mapping details.
|
|
63
68
|
|
|
64
|
-
`Changelist <https://github.com/mwburgoyne/pyResToolbox/blob/main/docs/changelist.rst>`_
|
|
69
|
+
`Changelist <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/changelist.rst>`_
|
|
65
70
|
|
|
66
71
|
Upgrade previous installations with
|
|
67
72
|
|
|
@@ -76,20 +81,28 @@ Module List
|
|
|
76
81
|
.. list-table::
|
|
77
82
|
:widths: 30 70
|
|
78
83
|
|
|
79
|
-
* - `
|
|
80
|
-
-
|
|
81
|
-
* - `
|
|
84
|
+
* - `dca <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/dca.rst>`_
|
|
85
|
+
- Arps and Duong decline rate and cumulative, EUR estimation, Decline model fitting (time-domain and cumulative, with windowing), Ratio model fitting (GOR/WOR), Forecasting with uptime and secondary phase ratios
|
|
86
|
+
* - `matbal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/matbal.rst>`_
|
|
87
|
+
- Gas P/Z material balance (OGIP), Cole plot diagnostics, Havlena-Odeh with aquifer influx, Oil Havlena-Odeh material balance (OOIP) with drive indices, Parameter regression with bounds, Tabulated PVT support
|
|
88
|
+
* - `gas <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/gas.rst>`_
|
|
89
|
+
- Gas Tc & Pc Calculation, Gas Z-Factor Calculation, Gas Viscosity, Gas Viscosity \* Z, Gas Compressibility, Gas Formation Volume Factor, Gas Density, Gas Water of Condensation, Convert P/Z to P, Convert Gas Gradient to SG, Delta Pseudopressure, Gas Condensate FWS SG, Gas Flow Rate Radial, Gas Flow Rate Linear, Gas Hydrate Prediction
|
|
90
|
+
* - `oil <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/oil.rst>`_
|
|
82
91
|
- Oil Density from MW, Oil Critical Properties with Twu, Incremental GOR post Separation, Oil Bubble Point Pressure, Oil GOR at Pb, Oil GOR at P, Oil Compressibility, Oil Density, Oil Formation Volume Factor, Oil Viscosity, Harmonize Pb and Rsb, Estimate soln gas SG from oil, Estimate SG of gas post separator, Calculate weighted average surface gas SG, Oil API to SG, Oil SG to API, Oil Flow Rate Radial, Oil Flow Rate Linear
|
|
83
|
-
* - `nodal <https://github.com/mwburgoyne/pyResToolbox/
|
|
92
|
+
* - `nodal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/nodal.rst>`_
|
|
84
93
|
- Flowing BHP (4 VLP methods), Outflow (VLP) curves, Inflow (IPR) curves, Operating point analysis, Multi-segment deviated/horizontal wells, GasPVT and OilPVT convenience classes
|
|
85
|
-
* - `library <https://github.com/mwburgoyne/pyResToolbox/
|
|
94
|
+
* - `library <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/library.rst>`_
|
|
86
95
|
- Return critical parameters for typical single components
|
|
87
|
-
* - `brine <https://github.com/mwburgoyne/pyResToolbox/
|
|
96
|
+
* - `brine <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/brine.rst>`_
|
|
88
97
|
- Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE)
|
|
89
|
-
* - `layer <https://github.com/mwburgoyne/pyResToolbox/
|
|
98
|
+
* - `layer <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/layer.rst>`_
|
|
90
99
|
- Lorenz coefficient from Beta value, Lorenz coefficient from flow fraction, Lorenz coefficient to flow fraction, Lorenz coefficient to permeability array
|
|
91
|
-
* - `simtools <https://github.com/mwburgoyne/pyResToolbox/
|
|
100
|
+
* - `simtools <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/simtools.rst>`_
|
|
92
101
|
- Summarize IX convergence errors from PRT file, Create Aquifer Influence Functions, Perform recursive ECL or IX deck zip/check for INCLUDE files, Solve Rachford Rice for user specified feed Zis and Ki's, Create sets of rel perm tables (Corey, LET, Jerauld), Fit relative permeability models to measured data, Generate Eclipse VFPPROD lift curve tables, Generate Eclipse VFPINJ injection curve tables, Create Black Oil tables (PVDO, PVDG, PVTO), Create PVTW water PVT tables
|
|
102
|
+
* - `recommend <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/recommend.rst>`_
|
|
103
|
+
- Recommend Z-factor, critical property, oil PVT, and VLP methods based on fluid composition and well configuration
|
|
104
|
+
* - `sensitivity <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/sensitivity.rst>`_
|
|
105
|
+
- Parameter sweeps and tornado chart sensitivity analysis
|
|
93
106
|
|
|
94
107
|
|
|
95
108
|
Getting Started
|
|
@@ -112,6 +125,35 @@ A simple example below of estimating oil bubble point pressure.
|
|
|
112
125
|
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g =0.72, pbmethod ='VALMC')
|
|
113
126
|
5179.51086900132
|
|
114
127
|
|
|
128
|
+
Fit a decline curve to production data and estimate ultimate recovery.
|
|
129
|
+
|
|
130
|
+
.. code-block:: python
|
|
131
|
+
|
|
132
|
+
>>> import numpy as np
|
|
133
|
+
>>> from pyrestoolbox import dca
|
|
134
|
+
>>> t = np.arange(1, 51, dtype=float)
|
|
135
|
+
>>> q = 1000 * np.exp(-0.05 * t)
|
|
136
|
+
>>> result = dca.fit_decline(t, q, method='exponential')
|
|
137
|
+
>>> result.qi, result.di
|
|
138
|
+
(1000.0000000000007, 0.05000000000000006)
|
|
139
|
+
>>> dca.eur(qi=result.qi, di=result.di, b=0, q_min=10)
|
|
140
|
+
19799.99999999999
|
|
141
|
+
|
|
142
|
+
Estimate gas in place from pressure-production history.
|
|
143
|
+
|
|
144
|
+
.. code-block:: python
|
|
145
|
+
|
|
146
|
+
>>> from pyrestoolbox import matbal
|
|
147
|
+
>>> r = matbal.gas_matbal(
|
|
148
|
+
... p=[3000, 2700, 2400, 2100, 1800],
|
|
149
|
+
... Gp=[0, 5, 12, 22, 35],
|
|
150
|
+
... degf=200, sg=0.65
|
|
151
|
+
... )
|
|
152
|
+
>>> r.ogip
|
|
153
|
+
87.602774253829
|
|
154
|
+
>>> r.r_squared
|
|
155
|
+
0.9734794008096929
|
|
156
|
+
|
|
115
157
|
A set of Gas-Oil relative permeability curves with the LET method
|
|
116
158
|
|
|
117
159
|
.. code-block:: python
|
|
@@ -9,16 +9,19 @@ A collection of Reservoir Engineering Utilities
|
|
|
9
9
|
This set of functions focuses on those that the author uses often while crafting programming solutions.
|
|
10
10
|
These are the scripts that are often copy/pasted from previous work - sometimes slightly modified - resulting in a trail of slightly different versions over the years. Some attempt has been made here to make this implementation flexible enough such that it can be relied on as-is going forward.
|
|
11
11
|
|
|
12
|
-
Note: Version 3.0 consolidates simulation-oriented functions under the simtools module, adds nodal analysis (VLP/IPR), VFP table generation, relative permeability curve fitting, and Eclipse METRIC unit support across all modules.
|
|
12
|
+
Note: Version 3.0 consolidates simulation-oriented functions under the simtools module, adds nodal analysis (VLP/IPR), VFP table generation, relative permeability curve fitting, and Eclipse METRIC unit support across all modules. Version 3.0.4 adds decline curve analysis, material balance, method recommendations, and sensitivity analysis.
|
|
13
13
|
|
|
14
14
|
Includes functions to perform calculations including;
|
|
15
15
|
|
|
16
|
+
- Decline Curve Analysis with Arps and Duong models — fitting, forecasting, EUR, windowed fitting, secondary phase ratio models, and uptime inference
|
|
17
|
+
- Material Balance for gas (P/Z with Cole plot and Havlena-Odeh aquifer support) and oil (Havlena-Odeh with drive indices, parameter regression, and tabulated PVT)
|
|
16
18
|
- Inflow Performance Relationships (IPR) for oil and gas wells
|
|
17
19
|
- Vertical Lift Performance (VLP) with four multiphase flow correlations (Hagedorn-Brown, Woldesemayat-Ghajar, Gray, Beggs & Brill)
|
|
18
20
|
- Nodal analysis operating point determination
|
|
19
21
|
- Eclipse VFP table generation (VFPPROD and VFPINJ keywords)
|
|
20
22
|
- PVT Calculations for oil
|
|
21
23
|
- PVT calculation for gas, including up to 100% inerts for CO2, H2S, N2 and H2
|
|
24
|
+
- Gas hydrate formation prediction with thermodynamic inhibitor calculations
|
|
22
25
|
- Return critical parameters for typical components
|
|
23
26
|
- Creation of Black Oil Table information (PVDO, PVDG, PVTO, PVTW keywords)
|
|
24
27
|
- Creation of layered permeability distribution consistent with a Lorenz heterogeneity factor
|
|
@@ -26,10 +29,12 @@ Includes functions to perform calculations including;
|
|
|
26
29
|
- Generation of AQUTAB include file influence functions for use in ECLIPSE
|
|
27
30
|
- Creation of Corey, LET and Jerauld relative permeability tables in Eclipse format, with curve fitting support
|
|
28
31
|
- Calculation of Methane, CO2 and multicomponent gas saturated brine properties (Soreide-Whitson VLE)
|
|
32
|
+
- Method recommendation engine for selecting appropriate correlations based on fluid composition
|
|
33
|
+
- Sensitivity analysis with parameter sweeps and tornado charts
|
|
29
34
|
|
|
30
35
|
All public PVT, flow rate, and simulation table functions support both oilfield (psia, deg F, ft) and Eclipse METRIC (barsa, deg C, m) unit systems via an optional ``metric=False`` parameter. See individual module documentation for unit mapping details.
|
|
31
36
|
|
|
32
|
-
`Changelist <https://github.com/mwburgoyne/pyResToolbox/blob/main/docs/changelist.rst>`_
|
|
37
|
+
`Changelist <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/changelist.rst>`_
|
|
33
38
|
|
|
34
39
|
Upgrade previous installations with
|
|
35
40
|
|
|
@@ -44,20 +49,28 @@ Module List
|
|
|
44
49
|
.. list-table::
|
|
45
50
|
:widths: 30 70
|
|
46
51
|
|
|
47
|
-
* - `
|
|
48
|
-
-
|
|
49
|
-
* - `
|
|
52
|
+
* - `dca <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/dca.rst>`_
|
|
53
|
+
- Arps and Duong decline rate and cumulative, EUR estimation, Decline model fitting (time-domain and cumulative, with windowing), Ratio model fitting (GOR/WOR), Forecasting with uptime and secondary phase ratios
|
|
54
|
+
* - `matbal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/matbal.rst>`_
|
|
55
|
+
- Gas P/Z material balance (OGIP), Cole plot diagnostics, Havlena-Odeh with aquifer influx, Oil Havlena-Odeh material balance (OOIP) with drive indices, Parameter regression with bounds, Tabulated PVT support
|
|
56
|
+
* - `gas <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/gas.rst>`_
|
|
57
|
+
- Gas Tc & Pc Calculation, Gas Z-Factor Calculation, Gas Viscosity, Gas Viscosity \* Z, Gas Compressibility, Gas Formation Volume Factor, Gas Density, Gas Water of Condensation, Convert P/Z to P, Convert Gas Gradient to SG, Delta Pseudopressure, Gas Condensate FWS SG, Gas Flow Rate Radial, Gas Flow Rate Linear, Gas Hydrate Prediction
|
|
58
|
+
* - `oil <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/oil.rst>`_
|
|
50
59
|
- Oil Density from MW, Oil Critical Properties with Twu, Incremental GOR post Separation, Oil Bubble Point Pressure, Oil GOR at Pb, Oil GOR at P, Oil Compressibility, Oil Density, Oil Formation Volume Factor, Oil Viscosity, Harmonize Pb and Rsb, Estimate soln gas SG from oil, Estimate SG of gas post separator, Calculate weighted average surface gas SG, Oil API to SG, Oil SG to API, Oil Flow Rate Radial, Oil Flow Rate Linear
|
|
51
|
-
* - `nodal <https://github.com/mwburgoyne/pyResToolbox/
|
|
60
|
+
* - `nodal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/nodal.rst>`_
|
|
52
61
|
- Flowing BHP (4 VLP methods), Outflow (VLP) curves, Inflow (IPR) curves, Operating point analysis, Multi-segment deviated/horizontal wells, GasPVT and OilPVT convenience classes
|
|
53
|
-
* - `library <https://github.com/mwburgoyne/pyResToolbox/
|
|
62
|
+
* - `library <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/library.rst>`_
|
|
54
63
|
- Return critical parameters for typical single components
|
|
55
|
-
* - `brine <https://github.com/mwburgoyne/pyResToolbox/
|
|
64
|
+
* - `brine <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/brine.rst>`_
|
|
56
65
|
- Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE)
|
|
57
|
-
* - `layer <https://github.com/mwburgoyne/pyResToolbox/
|
|
66
|
+
* - `layer <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/layer.rst>`_
|
|
58
67
|
- Lorenz coefficient from Beta value, Lorenz coefficient from flow fraction, Lorenz coefficient to flow fraction, Lorenz coefficient to permeability array
|
|
59
|
-
* - `simtools <https://github.com/mwburgoyne/pyResToolbox/
|
|
68
|
+
* - `simtools <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/simtools.rst>`_
|
|
60
69
|
- Summarize IX convergence errors from PRT file, Create Aquifer Influence Functions, Perform recursive ECL or IX deck zip/check for INCLUDE files, Solve Rachford Rice for user specified feed Zis and Ki's, Create sets of rel perm tables (Corey, LET, Jerauld), Fit relative permeability models to measured data, Generate Eclipse VFPPROD lift curve tables, Generate Eclipse VFPINJ injection curve tables, Create Black Oil tables (PVDO, PVDG, PVTO), Create PVTW water PVT tables
|
|
70
|
+
* - `recommend <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/recommend.rst>`_
|
|
71
|
+
- Recommend Z-factor, critical property, oil PVT, and VLP methods based on fluid composition and well configuration
|
|
72
|
+
* - `sensitivity <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/sensitivity.rst>`_
|
|
73
|
+
- Parameter sweeps and tornado chart sensitivity analysis
|
|
61
74
|
|
|
62
75
|
|
|
63
76
|
Getting Started
|
|
@@ -80,6 +93,35 @@ A simple example below of estimating oil bubble point pressure.
|
|
|
80
93
|
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g =0.72, pbmethod ='VALMC')
|
|
81
94
|
5179.51086900132
|
|
82
95
|
|
|
96
|
+
Fit a decline curve to production data and estimate ultimate recovery.
|
|
97
|
+
|
|
98
|
+
.. code-block:: python
|
|
99
|
+
|
|
100
|
+
>>> import numpy as np
|
|
101
|
+
>>> from pyrestoolbox import dca
|
|
102
|
+
>>> t = np.arange(1, 51, dtype=float)
|
|
103
|
+
>>> q = 1000 * np.exp(-0.05 * t)
|
|
104
|
+
>>> result = dca.fit_decline(t, q, method='exponential')
|
|
105
|
+
>>> result.qi, result.di
|
|
106
|
+
(1000.0000000000007, 0.05000000000000006)
|
|
107
|
+
>>> dca.eur(qi=result.qi, di=result.di, b=0, q_min=10)
|
|
108
|
+
19799.99999999999
|
|
109
|
+
|
|
110
|
+
Estimate gas in place from pressure-production history.
|
|
111
|
+
|
|
112
|
+
.. code-block:: python
|
|
113
|
+
|
|
114
|
+
>>> from pyrestoolbox import matbal
|
|
115
|
+
>>> r = matbal.gas_matbal(
|
|
116
|
+
... p=[3000, 2700, 2400, 2100, 1800],
|
|
117
|
+
... Gp=[0, 5, 12, 22, 35],
|
|
118
|
+
... degf=200, sg=0.65
|
|
119
|
+
... )
|
|
120
|
+
>>> r.ogip
|
|
121
|
+
87.602774253829
|
|
122
|
+
>>> r.r_squared
|
|
123
|
+
0.9734794008096929
|
|
124
|
+
|
|
83
125
|
A set of Gas-Oil relative permeability curves with the LET method
|
|
84
126
|
|
|
85
127
|
.. code-block:: python
|
|
@@ -32,17 +32,28 @@ Modules
|
|
|
32
32
|
- **library** — Component critical property database with EOS-model-specific parameters.
|
|
33
33
|
- **simtools** — Simulation helpers: IX PRT parsing, rel-perm tables (Corey/LET),
|
|
34
34
|
Van Everdingen-Hurst aquifer influence, Rachford-Rice flash, deck file checking.
|
|
35
|
+
- **dca** — Decline curve analysis: Arps (exponential/hyperbolic/harmonic), Duong,
|
|
36
|
+
model fitting, forecasting, and EUR calculations.
|
|
37
|
+
- **matbal** — Material balance: P/Z gas material balance and Havlena-Odeh oil
|
|
38
|
+
material balance for OGIP/OOIP estimation.
|
|
39
|
+
- **recommend** — Method recommendation engine for selecting appropriate correlations
|
|
40
|
+
based on fluid composition, API gravity, and well deviation.
|
|
41
|
+
- **sensitivity** — Sensitivity analysis framework: parameter sweeps and tornado charts.
|
|
35
42
|
"""
|
|
36
43
|
|
|
37
44
|
submodules = [
|
|
38
45
|
'brine',
|
|
39
46
|
'classes',
|
|
40
47
|
'constants',
|
|
48
|
+
'dca',
|
|
41
49
|
'gas',
|
|
42
50
|
'layer',
|
|
43
51
|
'library',
|
|
52
|
+
'matbal',
|
|
44
53
|
'nodal',
|
|
45
54
|
'oil',
|
|
55
|
+
'recommend',
|
|
56
|
+
'sensitivity',
|
|
46
57
|
'shared_fns',
|
|
47
58
|
'simtools',
|
|
48
59
|
'validate'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .dca import *
|