Source code for groundhog.consolidation.groundwaterflow.pumpingtests

#!/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = 'Bruno Stuyts'

# Native Python packages

# 3rd party packages
import numpy as np

# Project imports
from groundhog.general.validation import Validator


HYDRAULICCONDUCTIVITY_UNCONFINEDAQUIFER = {
    'radius_1': {'type': 'float', 'min_value': 0.0, 'max_value': None},
    'radius_2': {'type': 'float', 'min_value': 0.0, 'max_value': None},
    'piezometric_height_1': {'type': 'float', 'min_value': 0.0, 'max_value': None},
    'piezometric_height_2': {'type': 'float', 'min_value': 0.0, 'max_value': None},
    'flowrate': {'type': 'float', 'min_value': 0.0, 'max_value': None},
}

HYDRAULICCONDUCTIVITY_UNCONFINEDAQUIFER_ERRORRETURN = {
    'hydraulic_conductivity [m/s]': np.nan,
}

[docs] @Validator(HYDRAULICCONDUCTIVITY_UNCONFINEDAQUIFER, HYDRAULICCONDUCTIVITY_UNCONFINEDAQUIFER_ERRORRETURN) def hydraulicconductivity_unconfinedaquifer( radius_1,radius_2,piezometric_height_1,piezometric_height_2,flowrate, **kwargs): """ Calculates the hydraulic conductivity from observing two standpipes in the vicinity of a pumping well. The standpipes should be within the radius of influence of the pumping well. The following conditions must be satisfied: - Unconfined and non-leaking water layer - Open base of the pumping well is below the groundwater level - Homogeneous, isotropic soil mass of infinite size - Darcy's law applies - Radial flow - Hydraulic gradient equal to slope of groundwater surface :param radius_1: Radial distance between the axis of the pumping well and the first standpipe (:math:`r_1`) [:math:`m`] - Suggested range: radius_1 >= 0.0 :param radius_2: Radial distance between the axis of the pumping well and the second standpipe (:math:`r_2`) [:math:`m`] - Suggested range: radius_2 >= 0.0 :param piezometric_height_1: Piezometric height in the first standpipe (:math:`h_1`) [:math:`m`] - Suggested range: piezometric_height_1 >= 0.0 :param piezometric_height_2: Piezometric height in the second standpipe (:math:`h_2`) [:math:`m`] - Suggested range: piezometric_height_2 >= 0.0 :param flowrate: Flowrate extracted from the pumping well (:math:`q_z`) [:math:`m3/s`] - Suggested range: flowrate >= 0.0 .. math:: i = \\frac{dz}{dr} A = 2 \\pi r z q_z = 2 \\pi r z k \\frac{dz}{dr} q_z \\int_{r_1}^{r_2} \\frac{dr}{r} = 2 k \\pi \\int_{h_1}^{h_2} z dz k = \\frac{q_z \\ln \\left( r_2 / r_1 \\right)}{\\pi \\left( h_2^2 - h_1^2 \\right)} :returns: Dictionary with the following keys: - 'hydraulic_conductivity [m/s]': Hydraulic conductivity (:math:`k`) [:math:`m/s`] .. figure:: images/hydraulicconductivity_unconfinedaquifer_1.png :figwidth: 500.0 :width: 450.0 :align: center Geometry of the pumping test (Budhu, 2011) Reference - Budhu (2011). Soil mechanics and foundations. John Wiley and Sons. """ _hydraulic_conductivity = flowrate * np.log(radius_2 / radius_1) / \ (np.pi * (piezometric_height_2 ** 2 - piezometric_height_1 ** 2)) return { 'hydraulic_conductivity [m/s]': _hydraulic_conductivity, }