Skip to main content

welltestpy - package to handle well-based Field-campaigns.

Project description

Welcome to WellTestPy

DOI PyPI version Build Status Documentation Status Code style: black

WellTestPy-LOGO

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:

Wells

Pumptest

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:

Fit

Trace

Interaction

The results are:

  • ln(T) = -9.22 which is equivalent to T = 0.99 * 10^-4 m^2/s
  • ln(S) = -9.10 which is equivalent to S = 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


Download files

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

Files for welltestpy, version 0.3.2
Filename, size File type Python version Upload date Hashes
Filename, size welltestpy-0.3.2-py2-none-any.whl (54.5 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size welltestpy-0.3.2-py3-none-any.whl (54.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size welltestpy-0.3.2.tar.gz (36.7 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page