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.2rc1.tar.gz (789.2 kB view details)

Uploaded Source

Built Distributions

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

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2rc1-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.2rc1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (283.4 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2rc1-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.2rc1-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.2rc1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (283.4 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2rc1-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.2rc1-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.2rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (283.0 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded PyPy Windows x86-64

pywaterflood-0.3.2rc1-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.2rc1-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.2rc1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (285.3 kB view details)

Uploaded PyPy macOS 10.9+ x86-64

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

Uploaded CPython 3.7+ Windows x86-64

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

Uploaded CPython 3.7+ Windows x86

pywaterflood-0.3.2rc1-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.2rc1-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.2rc1-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.2rc1-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.2rc1.tar.gz.

File metadata

  • Download URL: pywaterflood-0.3.2rc1.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.2rc1.tar.gz
Algorithm Hash digest
SHA256 dfe924c3679db0a6bbeba897a9194300a0a00061b1567b447d703e82e559adf2
MD5 e81cec45c0c7eba9a329418b9c85458c
BLAKE2b-256 9a9da1782601630331403351ad0976a5ee4cfae36b936ae411674844e5d368dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp310-pypy310_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 25e905b99176a5219e06807ea78cc06e807830d7560b92597dc5f9d9afe514a1
MD5 6950ee908c5dc51600849ba027459d88
BLAKE2b-256 927ece31f4d677a6ce8fc4655e9af6a8299c32920cef8a053c194fc3f7b6a570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41eeb6ec86e1c290dc610e0725e2256cb7b0d949c4f142609b683205efbdaa50
MD5 1cb97b2d75bcd5c1174e4827a6056879
BLAKE2b-256 e884a684f3d5637d43c75a5f22b34ec6edb3c804119518b820c68e7908a06bf0

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2rc1-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.2rc1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 56eeae1440010b5658b7874cda3b8447b744d4381cac8dc979ea7f9d154565c4
MD5 195a92e4c85e4e09a3cea3604d026aa8
BLAKE2b-256 017df0bd55b491be636fe0bf90ad004411089f5da8ecc4fe441a3011804f2521

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 16f833abdadd4e599dbc38d00b1fba5d43be61189cf4d303565ef3dc8ad1a816
MD5 91ea0a8356701b95eb9b8b61d2374310
BLAKE2b-256 1948d8939aeb0a2785929e4d2a2f87269ebf1671195a99bed34077f4fffedc37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp39-pypy39_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 45716e8a482305487f5cb6fe7acdb177e2dc01c38fc51e8f9d72818016a5af75
MD5 34867456d15025c25a2e722656465d63
BLAKE2b-256 07407610667ee944a78c6daf44d5df53b5ceac2989d32b89ef1e8456e864eb4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c61f2bef131274c791f3541e7768e771608f5818010719515c19c459a91102b
MD5 80f8d7d7f50d26e3ddac09ef112fb3d0
BLAKE2b-256 0ecfe30fc8e6d912bf45447c456e4a3915e75086bfdcfeeb45df96f44af765c1

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2rc1-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.2rc1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6ed5776dba655c7fc574ff0caa450ae456d1b4dda84dbac1b3ea3264d6c38c80
MD5 20ad63960230f1b626cc97d8bc5b7270
BLAKE2b-256 060a8bb35189b9865b36cf0b1948b7cd53ead347527506428e8002c73a44623d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7afa62ffd2125052fc7fdadcdc9a8869973d19c5edb96544a45a6ea02f9af7ad
MD5 b7df7d4711bc630f097fa6786ca7ce59
BLAKE2b-256 dc7eafdcd4c3dfca6c45d5bae008e32fd6e04a2ce01221df7e05ead028f39bec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp38-pypy38_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 8e648692cf3510efc15a8b8d4e30eaebb896f8b25e7d653860ca2a4c57490fed
MD5 1376ddececf9ade1e78944a42f0f6436
BLAKE2b-256 dc2f19b4ddb32a52bb8725329b44510a754ff8f721a396f212e8d4d7eb80a875

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5165eb57ceccebc9bce8f426ecf7bb931072c3306946a1316f71906ec4dca38
MD5 a3b44f2c7b98b19ae89269d79f9263e2
BLAKE2b-256 786252993947d0a1230feca1d75c5c7e27465fe9c6e3cc0481cb740718848b8e

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2rc1-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.2rc1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b5cb250f66f04fdc7ffee370a4aee6b6dc3e8e162886b3d0cd31b802b15cbb23
MD5 b18a9a3458e7989dc8a4671e2d95d1a9
BLAKE2b-256 b94d656b965f7d50947aaf5bcf8b712bdd80d138ca5bcb99bbf6574bca712312

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d6bad7c32094e457e43dfe1c37bd9214c8ce554c49edecd15b293d011f75fc84
MD5 5dbc995636d7df0de4ee38de74595a34
BLAKE2b-256 95d811e925233303b0493aed0bfe303bfd6cce3619db8537951a15171646f5f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp37-pypy37_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 fbe88f61531b5803e5f127333ddfbfc963c7c28827c6ceef780166df2191c479
MD5 a6a37050c22372035451373814c7ef75
BLAKE2b-256 befba94537605024dc485f81b68559e371c0fe2b1b8f3ffb9b8647b2f4f4bc15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14e35d2652bc629806b9bc8db67b328e81b62daaa42d42ee362deca75d0817d7
MD5 7b52e976fc51ba81eb2af6090be8950a
BLAKE2b-256 c1de1dc372a7a1ef41396255150787da623bcf23f95cc5f67192659f291f91f5

See more details on using hashes here.

File details

Details for the file pywaterflood-0.3.2rc1-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.2rc1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0861f7fa97ce36870c5267505ec7302abf7eeb525d5157c8dbbdd198a89d807f
MD5 10cbaa058ab778da55eee5d7761ae4af
BLAKE2b-256 a73ed229e02b5a8535e110146848a086ecfc4838a43e076dcb427724b3f26adf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ef2a65aa28c9bae9ec6fe3ea44e00636ac0b5954751626dc2bfcc5444b9f44f9
MD5 3aa3f0b0415a967cf919617f84760c89
BLAKE2b-256 c64f8b6e44846c20f819255eb58ccdd74061efc0c9404b68010756434e3bb3b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 ff4932c6dc45da7963d66d26c6894c0fe4b895d6bf6f31d504be263189f3877d
MD5 75a4efaad84ac5e42ebad09e34d20b25
BLAKE2b-256 7da5afbb65f8211c5f4af4a63724b8fe8b2ee1876a7b54b308856ac5d0b155b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-cp37-abi3-win32.whl
Algorithm Hash digest
SHA256 2909e1791438567fe804edd37ab8b217111fed7cb5327ccb2e82bc00a6e8cd8b
MD5 194d764b0e1729b828c53e3832c2bd1e
BLAKE2b-256 8c6b39abd48107c5b54cc55d63ffad16734d2574b3b5e06cb8b86b29d333d86d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-cp37-abi3-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 f8b0b042befd7e5e3f470a5abb3251abbe31c92fd7df42c294d9a56538e72c67
MD5 16a01e04dc54a05d44e1b8cd9218f696
BLAKE2b-256 3eb3583694fe4e34411e7e2519bf4e90bf149fd7a1a65d1b6627ca1944183798

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e123e4f53e40dcbae654931c925d02b110a5420eb8be4acbda2b79a0d7005664
MD5 53ae648ecd37d47fe31b1c91cdd28d4d
BLAKE2b-256 5a1aa70fe78239ac9e7922a8d68802ae37bb7364346e8eb3899afa04963540da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a6bc8c80f880f23e5715a1994b9d5f7a4e6c6ea5089b447be2b5791f2a73dd05
MD5 ed6cf35f9571c1bafc4b953565ebb6ac
BLAKE2b-256 d5ca88352a32d9161fd75750f166ba612f616879b7255342c21f22f7dee0368f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pywaterflood-0.3.2rc1-cp37-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4ccc2b59fbbe61d9a248baf9591dbb4cb2aa81de5ff3081859ce76ec197e522a
MD5 0e76d409fa08362ef9c0827a9be2e160
BLAKE2b-256 a0e1e0eef6c9bf5710578243bf4a448162f320db288b9d400667337e49074448

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