welltestpy - package to handle well-based Field-campaigns.
Project description
Welcome to WellTestPy
Purpose
WellTestPy provides a framework to handle and plot data from well based field campaigns as well as a data interpretation module.
Installation
You can install the latest version with the following command:
pip install welltestpy
Documentation for WellTestPy
You can find the documentation under geostat-framework.readthedocs.io.
Example 1: Create a Campaign containing a pumping test
In the following a simple pumping test is created with artificial drawdown data generated by the Theis-solution.
import numpy as np
import welltestpy as wtp
import anaflow as ana
### create the field-site and the campaign
field = wtp.data.FieldSite(name="UFZ", coordinates=[51.353839, 12.431385])
campaign = wtp.data.Campaign(name="UFZ-campaign", fieldsite=field)
### add 4 wells to the campaign
campaign.add_well(name="well_0", radius=0.1, coordinates=(0., 0.))
campaign.add_well(name="well_1", radius=0.1, coordinates=(1., -1.))
campaign.add_well(name="well_2", radius=0.1, coordinates=(2., 2.))
campaign.add_well(name="well_3", radius=0.1, coordinates=(-2., -1.))
### generate artificial drawdown data with the Theis solution
prate = -1e-4
time = np.geomspace(10, 7200, 10)
transmissivity = 1e-4
storage = 1e-4
rad = [
campaign.wells["well_0"].radius, # well radius of well_0
campaign.wells["well_0"] - campaign.wells["well_1"], # distance between 0-1
campaign.wells["well_0"] - campaign.wells["well_2"], # distance between 0-2
campaign.wells["well_0"] - campaign.wells["well_3"], # distance between 0-3
]
drawdown = ana.theis(
rad=rad,
time=time,
T=transmissivity,
S=storage,
Qw=prate,
)
### create a pumping test at well_0
pumptest = wtp.data.PumpingTest(
name="well_0",
pumpingwell="well_0",
pumpingrate=prate,
description="Artificial pump test with Theis",
)
### add the drawdown observation at the 4 wells
pumptest.add_transient_obs("well_0", time, drawdown[:, 0])
pumptest.add_transient_obs("well_1", time, drawdown[:, 1])
pumptest.add_transient_obs("well_2", time, drawdown[:, 2])
pumptest.add_transient_obs("well_3", time, drawdown[:, 3])
### add the pumping test to the campaign
campaign.addtests(pumptest)
### plot the well constellation and a test overview
campaign.plot_wells()
campaign.plot()
### save the whole campaign
campaign.save()
This will give the following plots:
And the campaign is stored to a file called Cmp_UFZ-campaign.cmp
Example 2: Estimate transmissivity and storativity
The pumping test from example 1 can now be loaded and used to estimate the values for transmissivity and storativity.
import welltestpy as wtp
campaign = wtp.data.load_campaign("Cmp_UFZ-campaign.cmp")
estimation = wtp.estimate.Theisest("Estimate_theis", campaign)
estimation.setpumprate()
estimation.settime()
estimation.genrtdata()
estimation.run(
dbname="database",
plotname1="paratrace.pdf",
plotname2="fit_plot.pdf",
plotname3="parainteract.pdf",
estname="estimation.txt",
)
This will give the following plots:
The results are:
ln(T) = -9.22
which is equivalent toT = 0.99 * 10^-4 m^2/s
ln(S) = -9.10
which is equivalent toS = 1.11 * 10^-4
Provided Subpackages
welltestpy.data # Subpackage to handle data from field campaigns
welltestpy.estimate # Subpackage to estimate field parameters
welltestpy.process # Subpackage to pre- and post-process data
welltestpy.tools # Subpackage with miscellaneous tools
Requirements
Contact
You can contact us via info@geostat-framework.org.
License
GPL © 2018-2019
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for welltestpy-0.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ff203ba167aae07fd6bd231cd2e9e0aaf95b7619cb0ab7becabf7fd84da4a82 |
|
MD5 | 2b97ce74da91a46734ccbc49bae619f2 |
|
BLAKE2b-256 | b88af1da24cce654a965cc6de4b680909fb59e7148621afa28b5fab85e1b3dac |
Hashes for welltestpy-0.3.2-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5e8d1095ea3b3eb54e245194668efe59faae35f4db1f5569a80667fd20d89506 |
|
MD5 | 07fa39d433571bad1519b6efa5345a5b |
|
BLAKE2b-256 | 084bc03b1d17e1822dd3255a34a9f46c40704329976f3ea9921b614aef38ef7a |