pyrestoolbox 3.7.3__tar.gz → 3.7.5__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.7.3 → pyrestoolbox-3.7.5}/.gitignore +9 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/Cargo.lock +1 -1
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/Cargo.toml +1 -1
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/PKG-INFO +31 -29
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/README.rst +30 -28
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyproject.toml +1 -1
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/__init__.py +1 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/_lib_maoduan_viscosity.py +6 -4
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/_lib_vle_engine.py +151 -106
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/brine.py +123 -43
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/pr_vphi.py +21 -13
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/viscosity_route.py +2 -1
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/vphi_route.py +21 -19
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/dca/dca.py +1623 -1623
- pyrestoolbox-3.7.5/pyrestoolbox/docs/brine.rst +793 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/changelist.rst +52 -18
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/dca.rst +1003 -1003
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/gas.rst +154 -39
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/index.rst +6 -5
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/layer.rst +10 -10
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/library.rst +8 -8
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/matbal.rst +7 -7
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/nodal.rst +14 -13
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/oil.rst +54 -47
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/plyasunov.rst +6 -5
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/recommend.rst +7 -7
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/sensitivity.rst +157 -157
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/simtools.rst +25 -23
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/gas/gas.py +272 -42
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/bip.rs +410 -297
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/components.rs +123 -123
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/flash.rs +27 -8
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/mod.rs +15 -3
- pyrestoolbox-3.7.3/benchmark_batch.py +0 -160
- pyrestoolbox-3.7.3/benchmark_rust_vs_python.py +0 -220
- pyrestoolbox-3.7.3/benchmark_viscosity.py +0 -213
- pyrestoolbox-3.7.3/benchmark_zfactor.py +0 -207
- pyrestoolbox-3.7.3/benchmarks/_bench_worker.py +0 -192
- pyrestoolbox-3.7.3/benchmarks/bench_acceleration.py +0 -103
- pyrestoolbox-3.7.3/pyresToolbox_rust_acceleration_instructions.md +0 -1415
- pyrestoolbox-3.7.3/pyrestoolbox/docs/brine.rst +0 -549
- pyrestoolbox-3.7.3/pyrestoolbox-mcp-0.1.0.zip +0 -0
- pyrestoolbox-3.7.3/pyrestoolbox-mcp-email.txt +0 -39
- pyrestoolbox-3.7.3/reviews/CONSOLIDATED.md +0 -101
- pyrestoolbox-3.7.3/reviews/README.md +0 -68
- pyrestoolbox-3.7.3/reviews/api_ux/_summary.md +0 -85
- pyrestoolbox-3.7.3/reviews/api_ux/brine.md +0 -74
- pyrestoolbox-3.7.3/reviews/api_ux/dca.md +0 -83
- pyrestoolbox-3.7.3/reviews/api_ux/gas.md +0 -114
- pyrestoolbox-3.7.3/reviews/api_ux/layer.md +0 -63
- pyrestoolbox-3.7.3/reviews/api_ux/matbal.md +0 -86
- pyrestoolbox-3.7.3/reviews/api_ux/nodal.md +0 -109
- pyrestoolbox-3.7.3/reviews/api_ux/oil.md +0 -71
- pyrestoolbox-3.7.3/reviews/api_ux/plyasunov.md +0 -55
- pyrestoolbox-3.7.3/reviews/api_ux/recommend.md +0 -56
- pyrestoolbox-3.7.3/reviews/api_ux/sensitivity.md +0 -62
- pyrestoolbox-3.7.3/reviews/api_ux/simtools.md +0 -79
- pyrestoolbox-3.7.3/reviews/correctness/_summary.md +0 -49
- pyrestoolbox-3.7.3/reviews/correctness/brine.md +0 -45
- pyrestoolbox-3.7.3/reviews/correctness/dca.md +0 -186
- pyrestoolbox-3.7.3/reviews/correctness/gas.md +0 -18
- pyrestoolbox-3.7.3/reviews/correctness/layer.md +0 -106
- pyrestoolbox-3.7.3/reviews/correctness/matbal.md +0 -193
- pyrestoolbox-3.7.3/reviews/correctness/nodal.md +0 -33
- pyrestoolbox-3.7.3/reviews/correctness/oil.md +0 -32
- pyrestoolbox-3.7.3/reviews/correctness/plyasunov.md +0 -140
- pyrestoolbox-3.7.3/reviews/correctness/recommend.md +0 -73
- pyrestoolbox-3.7.3/reviews/correctness/sensitivity.md +0 -31
- pyrestoolbox-3.7.3/reviews/correctness/simtools.md +0 -43
- pyrestoolbox-3.7.3/reviews/review-2026-06-10.md +0 -138
- pyrestoolbox-3.7.3/reviews/tech_debt/_summary.md +0 -95
- pyrestoolbox-3.7.3/reviews/tech_debt/brine.md +0 -68
- pyrestoolbox-3.7.3/reviews/tech_debt/dca.md +0 -108
- pyrestoolbox-3.7.3/reviews/tech_debt/gas.md +0 -134
- pyrestoolbox-3.7.3/reviews/tech_debt/layer.md +0 -95
- pyrestoolbox-3.7.3/reviews/tech_debt/matbal.md +0 -78
- pyrestoolbox-3.7.3/reviews/tech_debt/nodal.md +0 -95
- pyrestoolbox-3.7.3/reviews/tech_debt/oil.md +0 -80
- pyrestoolbox-3.7.3/reviews/tech_debt/plyasunov.md +0 -103
- pyrestoolbox-3.7.3/reviews/tech_debt/recommend.md +0 -81
- pyrestoolbox-3.7.3/reviews/tech_debt/sensitivity.md +0 -72
- pyrestoolbox-3.7.3/reviews/tech_debt/simtools.md +0 -112
- pyrestoolbox-3.7.3/zstar_residual_plots.py +0 -302
- pyrestoolbox-3.7.3/zstar_vs_z_comparison.zip +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/.github/workflows/build-wheels.yml +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/.github/workflows/tests.yml +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/LICENSE +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/MANIFEST.in +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/ResToolbox/privacy_policy.md +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/build_pure_python.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/DEPLOYMENT.md +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/Dockerfile +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/README.md +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/pyproject.toml +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/pyrestoolbox_mcp/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/pyrestoolbox_mcp/serialize.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/pyrestoolbox_mcp/server.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/mcp/tests/test_server.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/_accelerator.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/_lib_dielectric.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/_lib_pitzer_params.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/_lib_salting_library.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/appelo_volumes.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/iapws_viscosity.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/jones_dole_viscosity.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/brine/kestin_nacl_viscosity.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/classes/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/classes/classes.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/constants/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/constants/constants.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/dca/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/examples.ipynb +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/bot.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/bot_PVTO.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/bot_img.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/dry_gas.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/grid_sat_df.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/influence.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/properties_df.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/sgof.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/img/swof.png +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/nodal_examples.ipynb +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/docs/nodal_hydrate_demo.ipynb +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/gas/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/gas/_hydrate.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/layer/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/layer/layer.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/library/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/library/component_library.xlsx +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/library/library.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/matbal/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/matbal/matbal.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/nodal/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/nodal/nodal.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_compressibility.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_constants.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_correlations.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_density.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_harmonize.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_pvt_class.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_rate.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_separator.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_tables.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/oil/_utils.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/plyasunov/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/plyasunov/iapws_if97.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/plyasunov/plyasunov_model.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/plyasunov/water_properties.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/recommend/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/recommend/recommend.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/sensitivity/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/sensitivity/sensitivity.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/shared_fns/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/shared_fns/shared_fns.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/_aquifer.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/_decks.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/_pvt_tables.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/_relperm.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/_vfp.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/simtools/simtools.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/validate/__init__.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/pyrestoolbox/validate/validate.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/setup.cfg +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/setup.py +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/bessel.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/critical_properties/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/dca/hyperbolic.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/dca/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/dca/ransac.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/gas_viscosity/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/gwr.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/lib.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/matbal/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/matbal/objective.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/oil/density.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/oil/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/pseudopressure.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/spycher_pruess/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/spycher_pruess/solubility.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/alpha.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/eos.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/fugacity.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/k_init.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vle/rachford_rice.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/constants.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/friction.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/holdup_bb.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/holdup_gray.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/holdup_wg.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/ift.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/march.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/mod.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/pvt_helpers.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/vlp/static_column.rs +0 -0
- {pyrestoolbox-3.7.3 → pyrestoolbox-3.7.5}/src/zfactor/mod.rs +0 -0
|
@@ -46,3 +46,12 @@ BUILD_INSTRUCTIONS.txt
|
|
|
46
46
|
|
|
47
47
|
# local virtualenv (389 MB, never committed)
|
|
48
48
|
.venv/
|
|
49
|
+
|
|
50
|
+
# Internal development artifacts (kept locally, not published)
|
|
51
|
+
reviews/
|
|
52
|
+
benchmarks/
|
|
53
|
+
benchmark_*.py
|
|
54
|
+
zstar_*
|
|
55
|
+
pyresToolbox_rust_acceleration_instructions.md
|
|
56
|
+
pyrestoolbox-mcp-email.txt
|
|
57
|
+
*.zip
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyrestoolbox
|
|
3
|
-
Version: 3.7.
|
|
3
|
+
Version: 3.7.5
|
|
4
4
|
Classifier: Programming Language :: Python :: 3
|
|
5
5
|
Classifier: Programming Language :: Rust
|
|
6
6
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
@@ -24,13 +24,13 @@ Requires-Python: >=3.8
|
|
|
24
24
|
Description-Content-Type: text/x-rst; charset=UTF-8
|
|
25
25
|
Project-URL: Homepage, https://github.com/mwburgoyne/pyResToolbox
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
================
|
|
28
28
|
``pyrestoolbox``
|
|
29
|
-
|
|
29
|
+
================
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
-----------------------------------------------
|
|
32
32
|
A collection of Reservoir Engineering Utilities
|
|
33
|
-
|
|
33
|
+
-----------------------------------------------
|
|
34
34
|
|
|
35
35
|
This set of functions focuses on those that the author uses often while crafting programming solutions.
|
|
36
36
|
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.
|
|
@@ -39,7 +39,7 @@ Note: Version 3.0 consolidates simulation-oriented functions under the simtools
|
|
|
39
39
|
|
|
40
40
|
Includes functions to perform calculations including;
|
|
41
41
|
|
|
42
|
-
- Decline Curve Analysis with Arps and Duong models
|
|
42
|
+
- Decline Curve Analysis with Arps and Duong models - fitting, forecasting, EUR, windowed fitting, secondary phase ratio models, and uptime inference
|
|
43
43
|
- 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)
|
|
44
44
|
- Inflow Performance Relationships (IPR) for oil and gas wells
|
|
45
45
|
- Vertical Lift Performance (VLP) with four multiphase flow correlations (Hagedorn-Brown, Woldesemayat-Ghajar, Gray, Beggs & Brill)
|
|
@@ -47,6 +47,7 @@ Includes functions to perform calculations including;
|
|
|
47
47
|
- Eclipse VFP table generation (VFPPROD and VFPINJ keywords)
|
|
48
48
|
- PVT Calculations for oil
|
|
49
49
|
- PVT calculation for gas, including up to 100% inerts for CO2, H2S, N2 and H2
|
|
50
|
+
- Gas caloric properties (enthalpy, Cp, Cv, Joule-Thomson coefficient) from the BNS tuned Peng Robinson EOS
|
|
50
51
|
- Gas hydrate formation prediction with thermodynamic inhibitor calculations
|
|
51
52
|
- Return critical parameters for typical components
|
|
52
53
|
- Creation of Black Oil Table information (PVDO, PVDG, PVTO, PVTW keywords)
|
|
@@ -55,39 +56,40 @@ Includes functions to perform calculations including;
|
|
|
55
56
|
- Generation of AQUTAB include file influence functions for use in ECLIPSE
|
|
56
57
|
- Creation of Corey, LET and Jerauld relative permeability tables in Eclipse format, with curve fitting support
|
|
57
58
|
- Calculation of Methane, CO2 and multicomponent gas saturated brine properties (Soreide-Whitson VLE)
|
|
59
|
+
- Multi-salt gas-free brine viscosity: IAPWS-2008 water, an ion-additive salt ratio over any combination of Na, K, Mg, Ca, Sr, Ba, Cl, Br, sulfate and carbonate, and a measured pressure factor
|
|
58
60
|
- Method recommendation engine for selecting appropriate correlations based on fluid composition
|
|
59
61
|
- Sensitivity analysis with parameter sweeps and tornado charts
|
|
60
62
|
|
|
61
63
|
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.
|
|
62
64
|
|
|
63
65
|
Rust Acceleration (Optional)
|
|
64
|
-
|
|
66
|
+
----------------------------
|
|
65
67
|
|
|
66
68
|
pyResToolbox includes optional Rust-compiled extensions that accelerate computationally intensive algorithms. When the compiled extension is present and loadable, these functions run automatically through Rust with no API changes. When the extension is unavailable, all functions fall back silently to the pure Python implementation.
|
|
67
69
|
|
|
68
70
|
**Accelerated functions:**
|
|
69
71
|
|
|
70
|
-
- **Nodal VLP segment loops**
|
|
71
|
-
- **Gas Z-factor**
|
|
72
|
-
- **Gas viscosity**
|
|
73
|
-
- **Gas pseudopressure**
|
|
74
|
-
- **Oil density**
|
|
75
|
-
- **Oil FVF**
|
|
76
|
-
- **DCA hyperbolic fitting**
|
|
77
|
-
- **Material balance**
|
|
78
|
-
- **CO2-Brine solubility**
|
|
79
|
-
- **VLE flash**
|
|
72
|
+
- **Nodal VLP segment loops** - all 8 VLP method functions (4 methods x gas/oil)
|
|
73
|
+
- **Gas Z-factor** - DAK, Hall-Yarborough, and BNS full-pipeline calculations
|
|
74
|
+
- **Gas viscosity** - LGE and LBC correlations
|
|
75
|
+
- **Gas pseudopressure** - Gauss-Legendre quadrature integration
|
|
76
|
+
- **Oil density** - Standing-Witte-McCain-Hill (iterative and above-Pb)
|
|
77
|
+
- **Oil FVF** - McCain density-based method
|
|
78
|
+
- **DCA hyperbolic fitting** - grid search with RANSAC (``fit_decline``, ``fit_decline_cum``)
|
|
79
|
+
- **Material balance** - oil matbal regression objective function
|
|
80
|
+
- **CO2-Brine solubility** - Spycher-Pruess iterative RK-EOS solver
|
|
81
|
+
- **VLE flash** - Soreide-Whitson multi-component Peng-Robinson flash
|
|
80
82
|
|
|
81
83
|
**Behavior:**
|
|
82
84
|
|
|
83
85
|
- If the Rust extension is not found on disk, pure Python is used with no warning
|
|
84
86
|
- If the extension fails to load (e.g. OS permission restrictions, architecture mismatch), a sentinel file is written to avoid repeated probe attempts on subsequent imports. The sentinel is automatically invalidated when the extension file changes (new build or update)
|
|
85
|
-
- All Rust-accelerated paths use ``try/except`` wrappers
|
|
87
|
+
- All Rust-accelerated paths use ``try/except`` wrappers - any Rust-side error falls back to the Python implementation transparently
|
|
86
88
|
|
|
87
89
|
**Environment variables:**
|
|
88
90
|
|
|
89
|
-
- ``PYRESTOOLBOX_NO_RUST=1``
|
|
90
|
-
- ``PYRESTOOLBOX_RETRY_RUST=1``
|
|
91
|
+
- ``PYRESTOOLBOX_NO_RUST=1`` - Force pure Python mode (skip Rust extension entirely)
|
|
92
|
+
- ``PYRESTOOLBOX_RETRY_RUST=1`` - Ignore the sentinel file and retry loading the extension
|
|
91
93
|
|
|
92
94
|
**Programmatic status check:**
|
|
93
95
|
|
|
@@ -109,7 +111,7 @@ Upgrade previous installations with
|
|
|
109
111
|
|
|
110
112
|
|
|
111
113
|
Module List
|
|
112
|
-
|
|
114
|
+
===========
|
|
113
115
|
|
|
114
116
|
.. list-table::
|
|
115
117
|
:widths: 30 70
|
|
@@ -119,7 +121,7 @@ Module List
|
|
|
119
121
|
* - `matbal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/matbal.rst>`_
|
|
120
122
|
- 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
|
|
121
123
|
* - `gas <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/gas.rst>`_
|
|
122
|
-
- 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
|
|
124
|
+
- 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, Gas Caloric Properties (H, Cp, Cv, Joule-Thomson), Non-Darcy and Partial-Penetration Pseudoskins
|
|
123
125
|
* - `oil <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/oil.rst>`_
|
|
124
126
|
- 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
|
|
125
127
|
* - `nodal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/nodal.rst>`_
|
|
@@ -127,7 +129,7 @@ Module List
|
|
|
127
129
|
* - `library <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/library.rst>`_
|
|
128
130
|
- Return critical parameters for typical single components
|
|
129
131
|
* - `brine <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/brine.rst>`_
|
|
130
|
-
- Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE)
|
|
132
|
+
- Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE), multi-salt gas-free brine viscosity
|
|
131
133
|
* - `layer <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/layer.rst>`_
|
|
132
134
|
- Lorenz coefficient from Beta value, Lorenz coefficient from flow fraction, Lorenz coefficient to flow fraction, Lorenz coefficient to permeability array
|
|
133
135
|
* - `simtools <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/simtools.rst>`_
|
|
@@ -155,8 +157,8 @@ A simple example below of estimating oil bubble point pressure.
|
|
|
155
157
|
.. code-block:: python
|
|
156
158
|
|
|
157
159
|
>>> from pyrestoolbox import oil
|
|
158
|
-
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g
|
|
159
|
-
|
|
160
|
+
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g=0.72, pbmethod='VALMC')
|
|
161
|
+
5199.2406069808885
|
|
160
162
|
|
|
161
163
|
Fit a decline curve to production data and estimate ultimate recovery.
|
|
162
164
|
|
|
@@ -168,9 +170,9 @@ Fit a decline curve to production data and estimate ultimate recovery.
|
|
|
168
170
|
>>> q = 1000 * np.exp(-0.05 * t)
|
|
169
171
|
>>> result = dca.fit_decline(t, q, method='exponential')
|
|
170
172
|
>>> result.qi, result.di
|
|
171
|
-
(
|
|
173
|
+
(999.9999999999953, 0.049999999999999885)
|
|
172
174
|
>>> dca.eur(qi=result.qi, di=result.di, b=0, q_min=10)
|
|
173
|
-
19799.
|
|
175
|
+
19799.999999999953
|
|
174
176
|
|
|
175
177
|
Estimate gas in place from pressure-production history.
|
|
176
178
|
|
|
@@ -183,9 +185,9 @@ Estimate gas in place from pressure-production history.
|
|
|
183
185
|
... degf=200, sg=0.65
|
|
184
186
|
... )
|
|
185
187
|
>>> r.ogip
|
|
186
|
-
87.
|
|
188
|
+
87.60264634235122
|
|
187
189
|
>>> r.r_squared
|
|
188
|
-
0.
|
|
190
|
+
0.9734793606102145
|
|
189
191
|
|
|
190
192
|
A set of Gas-Oil relative permeability curves with the LET method
|
|
191
193
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
================
|
|
2
2
|
``pyrestoolbox``
|
|
3
|
-
|
|
3
|
+
================
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
-----------------------------------------------
|
|
6
6
|
A collection of Reservoir Engineering Utilities
|
|
7
|
-
|
|
7
|
+
-----------------------------------------------
|
|
8
8
|
|
|
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.
|
|
@@ -13,7 +13,7 @@ Note: Version 3.0 consolidates simulation-oriented functions under the simtools
|
|
|
13
13
|
|
|
14
14
|
Includes functions to perform calculations including;
|
|
15
15
|
|
|
16
|
-
- Decline Curve Analysis with Arps and Duong models
|
|
16
|
+
- Decline Curve Analysis with Arps and Duong models - fitting, forecasting, EUR, windowed fitting, secondary phase ratio models, and uptime inference
|
|
17
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)
|
|
18
18
|
- Inflow Performance Relationships (IPR) for oil and gas wells
|
|
19
19
|
- Vertical Lift Performance (VLP) with four multiphase flow correlations (Hagedorn-Brown, Woldesemayat-Ghajar, Gray, Beggs & Brill)
|
|
@@ -21,6 +21,7 @@ Includes functions to perform calculations including;
|
|
|
21
21
|
- Eclipse VFP table generation (VFPPROD and VFPINJ keywords)
|
|
22
22
|
- PVT Calculations for oil
|
|
23
23
|
- PVT calculation for gas, including up to 100% inerts for CO2, H2S, N2 and H2
|
|
24
|
+
- Gas caloric properties (enthalpy, Cp, Cv, Joule-Thomson coefficient) from the BNS tuned Peng Robinson EOS
|
|
24
25
|
- Gas hydrate formation prediction with thermodynamic inhibitor calculations
|
|
25
26
|
- Return critical parameters for typical components
|
|
26
27
|
- Creation of Black Oil Table information (PVDO, PVDG, PVTO, PVTW keywords)
|
|
@@ -29,39 +30,40 @@ Includes functions to perform calculations including;
|
|
|
29
30
|
- Generation of AQUTAB include file influence functions for use in ECLIPSE
|
|
30
31
|
- Creation of Corey, LET and Jerauld relative permeability tables in Eclipse format, with curve fitting support
|
|
31
32
|
- Calculation of Methane, CO2 and multicomponent gas saturated brine properties (Soreide-Whitson VLE)
|
|
33
|
+
- Multi-salt gas-free brine viscosity: IAPWS-2008 water, an ion-additive salt ratio over any combination of Na, K, Mg, Ca, Sr, Ba, Cl, Br, sulfate and carbonate, and a measured pressure factor
|
|
32
34
|
- Method recommendation engine for selecting appropriate correlations based on fluid composition
|
|
33
35
|
- Sensitivity analysis with parameter sweeps and tornado charts
|
|
34
36
|
|
|
35
37
|
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.
|
|
36
38
|
|
|
37
39
|
Rust Acceleration (Optional)
|
|
38
|
-
|
|
40
|
+
----------------------------
|
|
39
41
|
|
|
40
42
|
pyResToolbox includes optional Rust-compiled extensions that accelerate computationally intensive algorithms. When the compiled extension is present and loadable, these functions run automatically through Rust with no API changes. When the extension is unavailable, all functions fall back silently to the pure Python implementation.
|
|
41
43
|
|
|
42
44
|
**Accelerated functions:**
|
|
43
45
|
|
|
44
|
-
- **Nodal VLP segment loops**
|
|
45
|
-
- **Gas Z-factor**
|
|
46
|
-
- **Gas viscosity**
|
|
47
|
-
- **Gas pseudopressure**
|
|
48
|
-
- **Oil density**
|
|
49
|
-
- **Oil FVF**
|
|
50
|
-
- **DCA hyperbolic fitting**
|
|
51
|
-
- **Material balance**
|
|
52
|
-
- **CO2-Brine solubility**
|
|
53
|
-
- **VLE flash**
|
|
46
|
+
- **Nodal VLP segment loops** - all 8 VLP method functions (4 methods x gas/oil)
|
|
47
|
+
- **Gas Z-factor** - DAK, Hall-Yarborough, and BNS full-pipeline calculations
|
|
48
|
+
- **Gas viscosity** - LGE and LBC correlations
|
|
49
|
+
- **Gas pseudopressure** - Gauss-Legendre quadrature integration
|
|
50
|
+
- **Oil density** - Standing-Witte-McCain-Hill (iterative and above-Pb)
|
|
51
|
+
- **Oil FVF** - McCain density-based method
|
|
52
|
+
- **DCA hyperbolic fitting** - grid search with RANSAC (``fit_decline``, ``fit_decline_cum``)
|
|
53
|
+
- **Material balance** - oil matbal regression objective function
|
|
54
|
+
- **CO2-Brine solubility** - Spycher-Pruess iterative RK-EOS solver
|
|
55
|
+
- **VLE flash** - Soreide-Whitson multi-component Peng-Robinson flash
|
|
54
56
|
|
|
55
57
|
**Behavior:**
|
|
56
58
|
|
|
57
59
|
- If the Rust extension is not found on disk, pure Python is used with no warning
|
|
58
60
|
- If the extension fails to load (e.g. OS permission restrictions, architecture mismatch), a sentinel file is written to avoid repeated probe attempts on subsequent imports. The sentinel is automatically invalidated when the extension file changes (new build or update)
|
|
59
|
-
- All Rust-accelerated paths use ``try/except`` wrappers
|
|
61
|
+
- All Rust-accelerated paths use ``try/except`` wrappers - any Rust-side error falls back to the Python implementation transparently
|
|
60
62
|
|
|
61
63
|
**Environment variables:**
|
|
62
64
|
|
|
63
|
-
- ``PYRESTOOLBOX_NO_RUST=1``
|
|
64
|
-
- ``PYRESTOOLBOX_RETRY_RUST=1``
|
|
65
|
+
- ``PYRESTOOLBOX_NO_RUST=1`` - Force pure Python mode (skip Rust extension entirely)
|
|
66
|
+
- ``PYRESTOOLBOX_RETRY_RUST=1`` - Ignore the sentinel file and retry loading the extension
|
|
65
67
|
|
|
66
68
|
**Programmatic status check:**
|
|
67
69
|
|
|
@@ -83,7 +85,7 @@ Upgrade previous installations with
|
|
|
83
85
|
|
|
84
86
|
|
|
85
87
|
Module List
|
|
86
|
-
|
|
88
|
+
===========
|
|
87
89
|
|
|
88
90
|
.. list-table::
|
|
89
91
|
:widths: 30 70
|
|
@@ -93,7 +95,7 @@ Module List
|
|
|
93
95
|
* - `matbal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/matbal.rst>`_
|
|
94
96
|
- 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
|
|
95
97
|
* - `gas <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/gas.rst>`_
|
|
96
|
-
- 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
|
|
98
|
+
- 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, Gas Caloric Properties (H, Cp, Cv, Joule-Thomson), Non-Darcy and Partial-Penetration Pseudoskins
|
|
97
99
|
* - `oil <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/oil.rst>`_
|
|
98
100
|
- 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
|
|
99
101
|
* - `nodal <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/nodal.rst>`_
|
|
@@ -101,7 +103,7 @@ Module List
|
|
|
101
103
|
* - `library <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/library.rst>`_
|
|
102
104
|
- Return critical parameters for typical single components
|
|
103
105
|
* - `brine <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/brine.rst>`_
|
|
104
|
-
- Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE)
|
|
106
|
+
- Calculate suite of brine properties with variable methane, Calculate suite of CO2 saturated brine properties, Multicomponent gas-saturated brine (Soreide-Whitson VLE), multi-salt gas-free brine viscosity
|
|
105
107
|
* - `layer <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/layer.rst>`_
|
|
106
108
|
- Lorenz coefficient from Beta value, Lorenz coefficient from flow fraction, Lorenz coefficient to flow fraction, Lorenz coefficient to permeability array
|
|
107
109
|
* - `simtools <https://github.com/mwburgoyne/pyResToolbox/blob/main/pyrestoolbox/docs/simtools.rst>`_
|
|
@@ -129,8 +131,8 @@ A simple example below of estimating oil bubble point pressure.
|
|
|
129
131
|
.. code-block:: python
|
|
130
132
|
|
|
131
133
|
>>> from pyrestoolbox import oil
|
|
132
|
-
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g
|
|
133
|
-
|
|
134
|
+
>>> oil.oil_pbub(api=43, degf=185, rsb=2350, sg_g=0.72, pbmethod='VALMC')
|
|
135
|
+
5199.2406069808885
|
|
134
136
|
|
|
135
137
|
Fit a decline curve to production data and estimate ultimate recovery.
|
|
136
138
|
|
|
@@ -142,9 +144,9 @@ Fit a decline curve to production data and estimate ultimate recovery.
|
|
|
142
144
|
>>> q = 1000 * np.exp(-0.05 * t)
|
|
143
145
|
>>> result = dca.fit_decline(t, q, method='exponential')
|
|
144
146
|
>>> result.qi, result.di
|
|
145
|
-
(
|
|
147
|
+
(999.9999999999953, 0.049999999999999885)
|
|
146
148
|
>>> dca.eur(qi=result.qi, di=result.di, b=0, q_min=10)
|
|
147
|
-
19799.
|
|
149
|
+
19799.999999999953
|
|
148
150
|
|
|
149
151
|
Estimate gas in place from pressure-production history.
|
|
150
152
|
|
|
@@ -157,9 +159,9 @@ Estimate gas in place from pressure-production history.
|
|
|
157
159
|
... degf=200, sg=0.65
|
|
158
160
|
... )
|
|
159
161
|
>>> r.ogip
|
|
160
|
-
87.
|
|
162
|
+
87.60264634235122
|
|
161
163
|
>>> r.r_squared
|
|
162
|
-
0.
|
|
164
|
+
0.9734793606102145
|
|
163
165
|
|
|
164
166
|
A set of Gas-Oil relative permeability curves with the LET method
|
|
165
167
|
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "pyrestoolbox"
|
|
7
|
-
version = "3.7.
|
|
7
|
+
version = "3.7.5"
|
|
8
8
|
description = "pyResToolbox - A collection of Reservoir Engineering Utilities"
|
|
9
9
|
license = {text = "GPL-3.0-or-later"}
|
|
10
10
|
authors = [{name = "Mark W. Burgoyne", email = "mark.w.burgoyne@gmail.com"}]
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"""Mao-Duan (2009) water and NaCl viscosity, the SUPERSEDED route.
|
|
2
2
|
|
|
3
3
|
Ported from brine_props `salt_viscosity_benchmark.py`. Retained only so
|
|
4
|
-
`viscosity_route(route='mao_duan')` reproduces pre-3.7.3 results
|
|
4
|
+
`viscosity_route(route='mao_duan')` reproduces pre-3.7.3 results (to within
|
|
5
|
+
0.0094% since the d1/b2 fix below); it is NaCl
|
|
5
6
|
only and carries no pressure dependence on the salt ratio. Coefficients are
|
|
6
|
-
|
|
7
|
+
Mao & Duan (2009) Tables 2-3, verified against the primary 2026-08-08; the
|
|
8
|
+
McCain Table 4-14 lineage carried two last-digit defects (d1, b2, <=0.0094%).
|
|
7
9
|
|
|
8
10
|
Against Kestin's measured NaCl viscosity this ties the default Jones-Dole leg
|
|
9
11
|
(0.443% against 0.415% mean) and loses at reservoir temperature (0.754% against
|
|
@@ -14,10 +16,10 @@ import math
|
|
|
14
16
|
|
|
15
17
|
from ..plyasunov.iapws_if97 import rho_if97
|
|
16
18
|
|
|
17
|
-
_MD_D = [0,
|
|
19
|
+
_MD_D = [0, 2885317.0, -11072.577, -9.0834095, 0.030925651, -0.0000274071,
|
|
18
20
|
-1928385.1, 5621.6046, 13.82725, -0.047609523, 0.000035545041]
|
|
19
21
|
_MD_A = [-0.21319213, 0.0013651589, -0.0000012191756]
|
|
20
|
-
_MD_B = [0.069161945, -0.00027292263, 0.
|
|
22
|
+
_MD_B = [0.069161945, -0.00027292263, 0.00000020852448]
|
|
21
23
|
_MD_C = [-0.0025988855, 0.0000077989227]
|
|
22
24
|
|
|
23
25
|
|