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.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 076130cc52123677ed57e11b551f5210a9a066590e6ea9f8c42683c36696017c |
|
MD5 | e0ff022e89d9ae59056644af5616b6b5 |
|
BLAKE2b-256 | b28a867f8260028939db5861a3d9f2c494a8afd8292770b7fe4746f7cb1235f7 |
Hashes for welltestpy-0.3.1-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba10090ee4171fac2b806155b76062d182b969afb6549f6641738a10f60f9435 |
|
MD5 | d2da6f3436c699dd47b770e7287310b0 |
|
BLAKE2b-256 | 0a37a90ea51f27122352f1839e0475f9e0ed13826eab27472af4b676a00fae68 |