Skip to main content

Physics-inspired waterflood performance modeling

Project description

pywaterflood: Waterflood Connectivity Analysis

PyPI version Conda Documentation Status DOI

License codecov pre-commit Python version PyPI - Downloads

pywaterflood provides tools for capacitance resistance modeling, a physics-inspired model for estimating well connectivity between injectors and producers or producers and other producers. It is useful for analyzing and optimizing waterfloods, CO2 floods, and geothermal projects.

Overview

A literature review has been written by Holanda, Gildin, Jensen, Lake and Kabir, entitled "A State-of-the-Art Literature Review on Capacitance Resistance Models for Reservoir Characterization and Performance Forecasting." They describe CRM as the following:

The Capacitance Resistance Model (CRM) is a fast way for modeling and simulating gas and waterflooding recovery processes, making it a useful tool for improving flood management in real-time. CRM is an input-output and material balance-based model, and requires only injection and production history, which are the most readily available data gathered throughout the production life of a reservoir.

There are several CRM versions (see Holanda et al., 2018). Through passing different parameters when creating the CRM instance, you can choose between CRMIP, where a unique time constant is used for each injector-producer pair, and CRMP, where a unique time constant is used for each producer. CRMIP is more reliable given sufficient data. With CRMP, you can reduce the number of unknowns, which is useful if available production data is limited.

Getting started

You can install this package from PyPI with the line

pip install pywaterflood

Or from conda/mamba with

conda install -c conda-forge pywaterflood

Then, read the docs to learn more. If you want to try it out online before installing it on your computer, you can run this google colab notebook.

A simple example

import pandas as pd
from pywaterflood import CRM

gh_url = "https://raw.githubusercontent.com/frank1010111/pywaterflood/master/testing/data/"
prod = pd.read_csv(gh_url + 'production.csv', header=None).values
inj = pd.read_csv(gh_url + "injection.csv", header=None).values
time = pd.read_csv(gh_url + "time.csv", header=None).values[:,0]

crm = CRM(tau_selection='per-pair', constraints='up-to one')
crm.fit(prod, inj, time)
q_hat = crm.predict()
residuals = crm.residual()

Contributing

Contributions are extremely welcome! Have an issue to report? Want to offer new features or documentation? Check out the contribution guide to help you set up. Discussions could start anytime at the discussions section.

pywaterflood uses Rust for computation and python as the high level interface. Luckily, maturin is a very convenient tool for working with mixed Python-Rust projects.

License

This software library is released under a BSD 2-Clause License.

Acknowledgments

Capacitance resistance modeling would not have caught on without the persistence of two professors: Larry Lake and Jerry Jensen. Both of these gentlemen generously helped answer questions in the development of this library. Research funding for this project came from the Department of Energy grant "Optimizing Sweep based on Geochemical and Reservoir Characterization of the Residual Oil Zone of Hess Seminole Unit" (PI: Ian Duncan) and the State of Texas Advanced Resource Recovery program (PI: William Ambrose). Further development is supported by Penn State faculty promotion funds and volunteer time.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pywaterflood-0.3.2.tar.gz (789.2 kB view details)

Uploaded Source

Built Distributions

pywaterflood-0.3.2-pp310-pypy310_pp73-win_amd64.whl (153.4 kB view details)

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pywaterflood-0.3.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pywaterflood-0.3.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (283.3 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

pywaterflood-0.3.2-pp39-pypy39_pp73-win_amd64.whl (153.4 kB view details)

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pywaterflood-0.3.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pywaterflood-0.3.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (283.3 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

pywaterflood-0.3.2-pp38-pypy38_pp73-win_amd64.whl (153.1 kB view details)

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pywaterflood-0.3.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pywaterflood-0.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (283.0 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

pywaterflood-0.3.2-pp37-pypy37_pp73-win_amd64.whl (155.5 kB view details)

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

pywaterflood-0.3.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pywaterflood-0.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (285.2 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

pywaterflood-0.3.2-cp37-abi3-win_amd64.whl (152.9 kB view details)

Uploaded CPython 3.7+ Windows x86-64

pywaterflood-0.3.2-cp37-abi3-win32.whl (146.3 kB view details)

Uploaded CPython 3.7+ Windows x86

pywaterflood-0.3.2-cp37-abi3-musllinux_1_1_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7+ musllinux: musl 1.1+ x86-64

pywaterflood-0.3.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ x86-64

pywaterflood-0.3.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (1.2 MB view details)

Uploaded CPython 3.7+ manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

pywaterflood-0.3.2-cp37-abi3-macosx_10_9_x86_64.whl (282.7 kB view details)

Uploaded CPython 3.7+ macOS 10.9+ x86-64

File details

Details for the file pywaterflood-0.3.2.tar.gz.

File metadata

  • Download URL: pywaterflood-0.3.2.tar.gz
  • Upload date:
  • Size: 789.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for pywaterflood-0.3.2.tar.gz
Algorithm Hash digest
SHA256 3fdb08ac1a5209375aa09b468b3405914d733711797d9efa3d9bfe9cff6426a2
MD5 6ee99447b38d0e6da96fc090bb2407bd
BLAKE2b-256 1978886ce2d6badb81f2dedb103de3029537880b539a6d532b2daf4ae58abfd3

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp310-pypy310_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 631e835a7b3302fed14f78d9122f641d63610f8fb57dcb2324847fbace79e066
MD5 642ad6d65df8dff6bc879c9c6ef39497
BLAKE2b-256 ef902a60442786bb1c026a27b186cbf9af12772d6435bd7fc8d6c0b2170cebc5

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c9baa7e8400a2f85f1d425f3d75f94ed771ed635fcdf9d559ae5a6bd7513e14
MD5 bb83c3664aaea89a183a0ecbe0f20302
BLAKE2b-256 84b4075e3031f4e5a60a0d26c12135770be2d2602f098753d7234c6384ce35b2

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 40327f9acbe9152b51c20e5ccd20a1c89d964b5f0a0e4e3c1baac12388e8d391
MD5 81fc1d7df106ddf4bedadcdfd9057347
BLAKE2b-256 6864a59aec999efe7cb9b37993021e51ef7c0b6713bd3a5df23f8ac0fb197d36

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b83c68933d021a44cd8df7049f8be2324f94a2cce4557b2824213c5f138941a0
MD5 5a4c7bbff8e6a26a57888d1cbfa1438d
BLAKE2b-256 50d66c0bae05e322f88885ddd39c95a4ea64024254b630aab1945a24be7824f5

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp39-pypy39_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 a2f6a0e6730c7e68fbb144e75d2fa4b748ea79614f1c4922217c148576e33c58
MD5 d833861fc71dc3528ead9daef5d47512
BLAKE2b-256 05270f12f23a097b183bf680fd2cc93cfbe2e12cd89eae9450aedf1dd7399f6f

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 75c1a950b9cf390fbccefe5ba91b4914b8057504927bbbd1dfc9f384dece0464
MD5 8e1058d041e91bdcb5d2ded9eefc3d4b
BLAKE2b-256 c5e2630efebf7e7ceb064e03be85a8125c9016dbc2ae99ed130b4edcc3f6b716

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e5822f2361912469474d69027f02b413673ad2a9209692639398ec9137f3bf75
MD5 7efcfd61e484a6608cbd3d0c4a9d447d
BLAKE2b-256 3e035fabbc59ec939e2b8c9076db7ce637ab47424e82554b11008d73e1e4d1d5

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6d9cb75e78a5cecf827523741e7327cb7f211e9ee586b67cad732079671fbd93
MD5 4bccb7ed03817229e11a45071f64dd90
BLAKE2b-256 50405897deb19f634b25dd9864c2b43df98a1b15174c614959831f75526cb837

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp38-pypy38_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 93014f84fcd0a8c5f68a0b3c0f150b6ae31edd22471ff4f8c52981644befe84c
MD5 15ce999891c7f2d68751ca8623fb2351
BLAKE2b-256 cd1960b80f9fd9cf919d5a1d7d9e6016f36243354f7ffb80c5e91f2e0f1c7de0

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41cc450f33286813b5d62e9f9073c16614e2b60367ef1702804e4fb567bdf6f0
MD5 53869155b5aa982a548122795c5e494e
BLAKE2b-256 e2dba808171ac656df7af65458daf552beb1b689e254a58a62eb30dace2c19a7

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f8863ef040bc735b6f4a10c5fc1b1ee0cb596bc2456c019f3e8ba69d31a80546
MD5 2a567e6676a36c56e89b8fc8d377fa31
BLAKE2b-256 f7f06c99a9b66b3bac6d6dc7b7280ad123d9517bd6fd78f1d2084a80e4efefe4

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 58bbf0c349bc91c11b353adbfd828413c4aca8619c320828979f636c1c119622
MD5 fad91915ac246bff271cfaf1d91a4c6f
BLAKE2b-256 ee92147546c6365650ba4670a1f579e808eef7d8c42e6522579ed508ad8099f9

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp37-pypy37_pp73-win_amd64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 ea9c80bb35f9440a44f88d1c25b2d3242ec90f0a1b444978bbc10b1bc6cc054b
MD5 3d3a07796fc2c3cc0c7eed70d2ad745d
BLAKE2b-256 c1b61029955f1f439db85ff277641724fb2d1900cfb551ad6fcce8aecd243025

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1fb57e34c1448b69c00a420cb30b2788a760f1b388e29a5ef591235b8433b292
MD5 7b22b7184ee75cdadd81baf92774b8b8
BLAKE2b-256 74bc042da4afb5098ecc9b391177b48dc4e6f5f1b066d9c57a6d4958a25bcd75

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c159e1af9fa32b6ef006109dbaf7ec74aa800b3ce35b023ff1efc739915f466d
MD5 ee3afd956cd8e1b0942f5c870b11268b
BLAKE2b-256 a8f045a72713c3b24a0c8d9a8abcaf637e31e5ebd39a3f7bbd2b7ea2575cb941

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b0f1f26425d0e0d7f1ea18f6a7846a7bdbc4805b82499940d4d60a4cf1a16f6f
MD5 c1e5892c6bd13e530bc51ec128aa2727
BLAKE2b-256 0a68739ea7446b6d6ca2d0a9383992685084eb5f17793437d412a9546f553c06

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-cp37-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 11de5abd31787f9619256d9098b17fa5c6f837e85c020a9f33a4ff3d2aa64be3
MD5 92c92c570b94fd9c5d23bb46b8d1333e
BLAKE2b-256 53b0e919b730c215d2f11cfab399d3a10f6d3d8c1be821e380c4637bc6b6a255

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-cp37-abi3-win32.whl.

File metadata

  • Download URL: pywaterflood-0.3.2-cp37-abi3-win32.whl
  • Upload date:
  • Size: 146.3 kB
  • Tags: CPython 3.7+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for pywaterflood-0.3.2-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 b76c0f0871cf4770384ca2dd53218c5806c852b51d7b49eac16515107a8141c1
MD5 ce23aa024c859039d6a9008c50130379
BLAKE2b-256 878bea1345749536a3f495c7814e4d1d171dad09d94423e3daa75c843d18d4e4

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-cp37-abi3-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c0bb39e4b0a2d4c4be188e0191d71660e72ac8272944e420e31a705e5d2b46fe
MD5 a05df403d1c37711e204bf53461b00d9
BLAKE2b-256 b5b44d85232c40492047e660989e00ef2edbfea987b47ec0ba9388ee9d4e3c7e

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 de940f72d449e9e52e594159c5234c5fbddf580c0960446a91115698dd449744
MD5 99146f9fe86564a5426f64c8152ebbe1
BLAKE2b-256 4dd033b50c134259b68baa48d915dd318cba767b06e948992d3f4620b3729f8d

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 704e88364fea0ae53f3033257c050dc40264958151aa793f75129677d2071af8
MD5 a067d942b8e6d99bbd94442be024c20a
BLAKE2b-256 04052e02e12f51dce93b7f0cb30f448181dcec2fc30176872f6be4872d42ff79

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2-cp37-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pywaterflood-0.3.2-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d71ef2b0f00bce258c39134605b36f56c36ebaa9a5fc958fddaa707c651d64d5
MD5 e3966699641bf1a98f8a05f2c8f6168c
BLAKE2b-256 cc5b60e6610e6822006e33ed89b5c8588acdb58191de8bd9c9990b6a329ba3b4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page