{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# 2. Confined Aquifer Test - Gridley"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Import packages"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"import timflow.transient as tft\n",
"\n",
"plt.rcParams[\"figure.figsize\"] = (5, 3) # default figure size"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Introduction and Conceptual Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"This example is a pumping test conducted in 1953 in Gridley, Illinois, US. It was reported by Walton (1962). \n",
"\n",
"The aquifer is an 18 ft thick sand and gravel layer under confined conditions. The pumping well fully penetrates the formation, and pumping was conducted for 8 hours at a rate of 220 gallons per minute. The effect of pumping was observed at observation well 1, located 824 ft away from the well.\n",
"\n",
"The time-drawdown data for the observation well were obtained from the AQTESOLV documentation (Duffield, 2007), while data from the pumping well were obtained from the original paper from Walton (1962). Following AQTESOLV documentation (Duffield, 2007), radii of 0.5 ft were used for both the pumping and observation wells. "
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"
"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Load data"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"# Loading Observation well (Well 1)\n",
"data1 = np.loadtxt(\"data/gridley_well_1.txt\")\n",
"to1 = data1[:, 0]\n",
"ho1 = data1[:, 1]\n",
"\n",
"# Loading Pumping Well data (Well 3)\n",
"data2 = np.loadtxt(\"data/gridley_well_3.txt\")\n",
"to2 = data2[:, 0]\n",
"ho2 = data2[:, 1]"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Parameters and model"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"# known parameters\n",
"H = 18 * 0.3048 # aquifer thickness in m (18 ft = 5.48 m)\n",
"Q = (\n",
" (220 * 0.00378541) * 60 * 24\n",
") # constant discharge in m^3/d (220 gallons/minute = 1199.22 m^3/d)\n",
"r = (\n",
" 824 * 0.3048\n",
") # distance between observation well to test well in m (824 ft = 251.16 m)\n",
"rw = 0.5 * 0.3048 # screen radius of test well in m (0.5 ft = 0.15 m)"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"Wellbore storage is added to the model."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"self.neq 1\n",
"solution complete\n"
]
}
],
"source": [
"ml = tft.ModelMaq(kaq=10, z=[0, -H], Saq=0.001, tmin=0.001, tmax=1, topboundary=\"conf\")\n",
"w = tft.Well(ml, xw=0, yw=0, rw=rw, tsandQ=[(0, Q)], rc=rw, layers=0)\n",
"ml.solve()"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Estimate aquifer parameters"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"The aquifer parameters are estimated using both datasets simultaneously."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
".............................\n",
"Fit succeeded.\n"
]
}
],
"source": [
"# unknown parameters: kaq, Saq\n",
"cal = tft.Calibrate(ml) # create Calibrate object\n",
"cal.set_parameter(\n",
" name=\"kaq\", initial=10, layers=0\n",
") # setting the parameters for calibration\n",
"cal.set_parameter(name=\"Saq\", initial=1e-4, pmin=1e-7, layers=0)\n",
"cal.series(name=\"obs1\", x=r, y=0, t=to1, h=ho1, layer=0) # setting the observation data\n",
"cal.seriesinwell(name=\"obs2\", element=w, t=to2, h=ho2) # setting the observation data\n",
"cal.fit(report=False)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" optimal | \n",
"
\n",
" \n",
" \n",
" \n",
" | kaq_0_0 | \n",
" 38.087051 | \n",
"
\n",
" \n",
" | Saq_0_0 | \n",
" 0.000001 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" optimal\n",
"kaq_0_0 38.087051\n",
"Saq_0_0 0.000001"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"RMSE: 0.259 m\n"
]
}
],
"source": [
"display(cal.parameters.loc[:, [\"optimal\"]])\n",
"print(f\"RMSE: {cal.rmse():.3f} m\")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"hm1 = ml.head(r, 0, to1)\n",
"hm2 = w.headinside(to2)\n",
"plt.semilogx(to1, hm1[0], \"C0\", label=\"timflow piezometer\")\n",
"plt.semilogx(to1, ho1, \"C0.\", label=\"obs piezometer\")\n",
"plt.semilogx(to2, hm2[0], \"C1\", label=\"timflow well\")\n",
"plt.semilogx(to2, ho2, \"C1.\", label=\"obs well\")\n",
"plt.title(\"Model Results\")\n",
"plt.xlabel(\"time [d]\")\n",
"plt.ylabel(\"head change [m]\")\n",
"plt.legend()\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"### Comparison of results"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"The performance of `timflow` is compared to the results based on Theis’ analytical solution (Theis, 1935), implemented in the software AQTESOLV (Duffield, 2007). \n",
"\n",
"Results from `timflow` with added wellbore storage differ largely from those from AQTESOLV. This difference is due to the missing wellborage storage in the AQTESOLV model."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
" \n",
" \n",
" | | \n",
" k [m/d] | \n",
" Ss [1/m] | \n",
" RMSE [m] | \n",
"
\n",
" \n",
" \n",
" \n",
" | timflow | \n",
" 38.09 | \n",
" 1.19e-06 | \n",
" 0.259 | \n",
"
\n",
" \n",
" | AQTESOLV | \n",
" 22.95 | \n",
" 3.72e-06 | \n",
" - | \n",
"
\n",
" \n",
"
\n"
],
"text/plain": [
""
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"t = pd.DataFrame(\n",
" columns=[\"k [m/d]\", \"Ss [1/m]\", \"RMSE [m]\"], index=[\"timflow\", \"AQTESOLV\"]\n",
")\n",
"\n",
"t.loc[\"timflow\"] = np.append(cal.parameters[\"optimal\"].values, cal.rmse())\n",
"t.loc[\"AQTESOLV\"] = [22.95, 0.000003722, \"-\"]\n",
"\n",
"t_formatted = t.style.format(\n",
" {\n",
" \"k [m/d]\": \"{:.2f}\",\n",
" \"Ss [1/m]\": \"{:.2e}\",\n",
" \"RMSE [m]\": lambda x: \"-\" if x == \"-\" else f\"{float(x):.3f}\",\n",
" }\n",
")\n",
"t_formatted"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References"
]
},
{
"cell_type": "markdown",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"* Duffield, G.M. (2007), AQTESOLV for Windows Version 4.5 User's Guide, HydroSOLVE, Inc., Reston, VA.\n",
"* Walton, W.C. (1962), Selected analytical methods for well and aquifer evaluation, Illinois, department of Registration & Education.bulletin 49."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.3"
}
},
"nbformat": 4,
"nbformat_minor": 4
}