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.
Files changed (128) hide show
  1. {pyrestoolbox-3.0.3/pyrestoolbox.egg-info → pyrestoolbox-3.0.4}/PKG-INFO +53 -11
  2. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/README.rst +52 -10
  3. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/__init__.py +11 -0
  4. pyrestoolbox-3.0.4/pyrestoolbox/dca/__init__.py +1 -0
  5. pyrestoolbox-3.0.4/pyrestoolbox/dca/dca.py +944 -0
  6. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/brine.rst +67 -44
  7. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/changelist.rst +26 -0
  8. pyrestoolbox-3.0.4/pyrestoolbox/docs/dca.rst +639 -0
  9. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/examples.ipynb +1905 -1457
  10. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/gas.rst +178 -2
  11. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/layer.rst +55 -2
  12. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/library.rst +66 -6
  13. pyrestoolbox-3.0.4/pyrestoolbox/docs/matbal.rst +385 -0
  14. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/nodal.rst +207 -135
  15. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/oil.rst +266 -7
  16. pyrestoolbox-3.0.4/pyrestoolbox/docs/recommend.rst +281 -0
  17. pyrestoolbox-3.0.4/pyrestoolbox/docs/sensitivity.rst +157 -0
  18. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/simtools.rst +357 -34
  19. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/gas/gas.py +5 -2
  20. pyrestoolbox-3.0.4/pyrestoolbox/matbal/__init__.py +1 -0
  21. pyrestoolbox-3.0.4/pyrestoolbox/matbal/matbal.py +636 -0
  22. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/nodal/nodal.py +66 -30
  23. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/oil/oil.py +0 -21
  24. pyrestoolbox-3.0.4/pyrestoolbox/recommend/__init__.py +1 -0
  25. pyrestoolbox-3.0.4/pyrestoolbox/recommend/recommend.py +275 -0
  26. pyrestoolbox-3.0.4/pyrestoolbox/sensitivity/__init__.py +1 -0
  27. pyrestoolbox-3.0.4/pyrestoolbox/sensitivity/sensitivity.py +202 -0
  28. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/shared_fns/shared_fns.py +110 -2
  29. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/run_all_tests.py +4 -0
  30. pyrestoolbox-3.0.4/pyrestoolbox/tests/test_dca.py +675 -0
  31. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_doc_examples.py +317 -0
  32. pyrestoolbox-3.0.4/pyrestoolbox/tests/test_matbal.py +724 -0
  33. pyrestoolbox-3.0.4/pyrestoolbox/tests/test_recommend.py +104 -0
  34. pyrestoolbox-3.0.4/pyrestoolbox/tests/test_sensitivity.py +122 -0
  35. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4/pyrestoolbox.egg-info}/PKG-INFO +53 -11
  36. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/SOURCES.txt +17 -37
  37. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/setup.cfg +1 -1
  38. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/setup.py +1 -1
  39. pyrestoolbox-3.0.3/pyrestoolbox/__pycache__/__init__.cpython-310.pyc +0 -0
  40. pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/__init__.cpython-310.pyc +0 -0
  41. pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/_lib_salting_library.cpython-310.pyc +0 -0
  42. pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/_lib_vle_engine.cpython-310.pyc +0 -0
  43. pyrestoolbox-3.0.3/pyrestoolbox/brine/__pycache__/brine.cpython-310.pyc +0 -0
  44. pyrestoolbox-3.0.3/pyrestoolbox/classes/__pycache__/__init__.cpython-310.pyc +0 -0
  45. pyrestoolbox-3.0.3/pyrestoolbox/classes/__pycache__/classes.cpython-310.pyc +0 -0
  46. pyrestoolbox-3.0.3/pyrestoolbox/constants/__pycache__/__init__.cpython-310.pyc +0 -0
  47. pyrestoolbox-3.0.3/pyrestoolbox/constants/__pycache__/constants.cpython-310.pyc +0 -0
  48. pyrestoolbox-3.0.3/pyrestoolbox/gas/__pycache__/__init__.cpython-310.pyc +0 -0
  49. pyrestoolbox-3.0.3/pyrestoolbox/gas/__pycache__/gas.cpython-310.pyc +0 -0
  50. pyrestoolbox-3.0.3/pyrestoolbox/layer/__pycache__/__init__.cpython-310.pyc +0 -0
  51. pyrestoolbox-3.0.3/pyrestoolbox/layer/__pycache__/layer.cpython-310.pyc +0 -0
  52. pyrestoolbox-3.0.3/pyrestoolbox/library/__pycache__/__init__.cpython-310.pyc +0 -0
  53. pyrestoolbox-3.0.3/pyrestoolbox/library/__pycache__/library.cpython-310.pyc +0 -0
  54. pyrestoolbox-3.0.3/pyrestoolbox/nodal/__pycache__/__init__.cpython-310.pyc +0 -0
  55. pyrestoolbox-3.0.3/pyrestoolbox/nodal/__pycache__/nodal.cpython-310.pyc +0 -0
  56. pyrestoolbox-3.0.3/pyrestoolbox/oil/__pycache__/__init__.cpython-310.pyc +0 -0
  57. pyrestoolbox-3.0.3/pyrestoolbox/oil/__pycache__/oil.cpython-310.pyc +0 -0
  58. pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/__init__.cpython-310.pyc +0 -0
  59. pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/iapws_if97.cpython-310.pyc +0 -0
  60. pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/plyasunov_model.cpython-310.pyc +0 -0
  61. pyrestoolbox-3.0.3/pyrestoolbox/plyasunov/__pycache__/water_properties.cpython-310.pyc +0 -0
  62. pyrestoolbox-3.0.3/pyrestoolbox/shared_fns/__pycache__/__init__.cpython-310.pyc +0 -0
  63. pyrestoolbox-3.0.3/pyrestoolbox/shared_fns/__pycache__/shared_fns.cpython-310.pyc +0 -0
  64. pyrestoolbox-3.0.3/pyrestoolbox/simtools/__pycache__/__init__.cpython-310.pyc +0 -0
  65. pyrestoolbox-3.0.3/pyrestoolbox/simtools/__pycache__/simtools.cpython-310.pyc +0 -0
  66. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_brine.cpython-310.pyc +0 -0
  67. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_doc_examples.cpython-310.pyc +0 -0
  68. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_gas.cpython-310.pyc +0 -0
  69. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_layer.cpython-310.pyc +0 -0
  70. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_nodal.cpython-310.pyc +0 -0
  71. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_oil.cpython-310.pyc +0 -0
  72. pyrestoolbox-3.0.3/pyrestoolbox/tests/__pycache__/test_simtools.cpython-310.pyc +0 -0
  73. pyrestoolbox-3.0.3/pyrestoolbox/validate/__pycache__/__init__.cpython-310.pyc +0 -0
  74. pyrestoolbox-3.0.3/pyrestoolbox/validate/__pycache__/validate.cpython-310.pyc +0 -0
  75. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/LICENSE +0 -0
  76. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/MANIFEST.in +0 -0
  77. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyproject.toml +0 -0
  78. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/__init__.py +0 -0
  79. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/_lib_salting_library.py +0 -0
  80. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/_lib_vle_engine.py +0 -0
  81. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/brine/brine.py +0 -0
  82. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/classes/__init__.py +0 -0
  83. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/classes/classes.py +0 -0
  84. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/constants/__init__.py +0 -0
  85. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/constants/constants.py +0 -0
  86. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/.ipynb_checkpoints/examples-checkpoint.ipynb +0 -0
  87. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/.ipynb_checkpoints/nodal_examples-checkpoint.ipynb +0 -0
  88. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/.ipynb_checkpoints/nodal_hydrate_demo-checkpoint.ipynb +0 -0
  89. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/bot.png +0 -0
  90. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/bot_PVTO.png +0 -0
  91. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/bot_img.png +0 -0
  92. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/dry_gas.png +0 -0
  93. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/grid_sat_df.png +0 -0
  94. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/influence.png +0 -0
  95. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/properties_df.png +0 -0
  96. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/sgof.png +0 -0
  97. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/img/swof.png +0 -0
  98. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/nodal_examples.ipynb +0 -0
  99. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/docs/nodal_hydrate_demo.ipynb +0 -0
  100. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/gas/__init__.py +0 -0
  101. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/layer/__init__.py +0 -0
  102. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/layer/layer.py +0 -0
  103. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/library/__init__.py +0 -0
  104. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/library/component_library.xlsx +0 -0
  105. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/library/library.py +0 -0
  106. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/nodal/__init__.py +0 -0
  107. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/oil/__init__.py +0 -0
  108. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/__init__.py +0 -0
  109. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/iapws_if97.py +0 -0
  110. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/plyasunov_model.py +0 -0
  111. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/plyasunov/water_properties.py +0 -0
  112. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/shared_fns/__init__.py +0 -0
  113. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/simtools/__init__.py +0 -0
  114. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/simtools/simtools.py +0 -0
  115. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/__init__.py +0 -0
  116. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_brine.py +0 -0
  117. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_gas.py +0 -0
  118. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_layer.py +0 -0
  119. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_nodal.py +0 -0
  120. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_oil.py +0 -0
  121. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_simtools.py +0 -0
  122. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_unified_brine_design.py +0 -0
  123. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/tests/test_viscosity_scaling.py +0 -0
  124. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/validate/__init__.py +0 -0
  125. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox/validate/validate.py +0 -0
  126. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/dependency_links.txt +0 -0
  127. {pyrestoolbox-3.0.3 → pyrestoolbox-3.0.4}/pyrestoolbox.egg-info/requires.txt +0 -0
  128. {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
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
- * - `gas <https://github.com/mwburgoyne/pyResToolbox/tree/main/pyrestoolbox/docs/gas.rst>`_
80
- - 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
81
- * - `oil <https://github.com/mwburgoyne/pyResToolbox/tree/main/pyrestoolbox/docs/oil.rst>`_
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/tree/main/pyrestoolbox/docs/nodal.rst>`_
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/tree/main/pyrestoolbox/docs/library.rst>`_
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/tree/main/pyrestoolbox/docs/brine.rst>`_
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/tree/main/pyrestoolbox/docs/layer.rst>`_
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/tree/main/pyrestoolbox/docs/simtools.rst>`_
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
- * - `gas <https://github.com/mwburgoyne/pyResToolbox/tree/main/pyrestoolbox/docs/gas.rst>`_
48
- - 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
49
- * - `oil <https://github.com/mwburgoyne/pyResToolbox/tree/main/pyrestoolbox/docs/oil.rst>`_
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/tree/main/pyrestoolbox/docs/nodal.rst>`_
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/tree/main/pyrestoolbox/docs/library.rst>`_
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/tree/main/pyrestoolbox/docs/brine.rst>`_
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/tree/main/pyrestoolbox/docs/layer.rst>`_
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/tree/main/pyrestoolbox/docs/simtools.rst>`_
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 *