{ "cells": [ { "cell_type": "markdown", "id": "89cc443c", "metadata": {}, "source": [ "# 123.05: Constant pumping in a confined aquifer" ] }, { "cell_type": "code", "execution_count": null, "id": "0f52dce9", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import timflow.transient as tft\n", "\n", "from bruggeman.flow1d import bruggeman_123_05_q" ] }, { "cell_type": "markdown", "id": "bff96a01", "metadata": {}, "source": [ "View the function (this will be rendered in LaTeX if `sympy` is installed)." ] }, { "cell_type": "code", "execution_count": null, "id": "70051a00", "metadata": {}, "outputs": [], "source": [ "bruggeman_123_05_q" ] }, { "cell_type": "markdown", "id": "088329c4", "metadata": {}, "source": [ "View the docstring to get a description of the input parameters." ] }, { "cell_type": "code", "execution_count": null, "id": "380d233d", "metadata": {}, "outputs": [], "source": [ "help(bruggeman_123_05_q)" ] }, { "cell_type": "markdown", "id": "4f1b0aca", "metadata": {}, "source": [ "Define some aquifer parameters." ] }, { "cell_type": "code", "execution_count": null, "id": "8080a6a6", "metadata": {}, "outputs": [], "source": [ "k = 5.0 # m/d, hydraulic conductivity\n", "D = 10.0 # m # thickness aquifer\n", "Ss = 1e-3 / D # m^-1, specific storage coeffecient\n", "Q = 2.0 # m^3/d, positive Q here means pumping in Timflow" ] }, { "cell_type": "markdown", "id": "0338250e", "metadata": {}, "source": [ "Set up a `timflow` model." ] }, { "cell_type": "code", "execution_count": null, "id": "6a834ed2", "metadata": {}, "outputs": [], "source": [ "mlconf = tft.ModelMaq(kaq=k, z=[0, -D], Saq=Ss, tmin=1e-3, tmax=1e3, topboundary=\"conf\")\n", "ls = tft.DischargeLineSink1D(mlconf, tsandq=[(0, Q)], layers=[0])\n", "mlconf.solve()" ] }, { "cell_type": "markdown", "id": "6bee5845", "metadata": {}, "source": [ "Compare `timflow` implementation to the analytical solution" ] }, { "cell_type": "code", "execution_count": null, "id": "629e4a3f", "metadata": {}, "outputs": [], "source": [ "x = np.linspace(0, 100, 101)\n", "y = np.zeros_like(x)\n", "t = np.logspace(-1, 0, 5)\n", "\n", "plt.figure(figsize=(10, 3))\n", "for i in range(len(t)):\n", " h = mlconf.headalongline(x, y, t[i])\n", " plt.plot(x, h.squeeze(), label=f\"t={t[i]:.2f} d\")\n", " ha = bruggeman_123_05_q(x, t[i], -Q / 2, k, D, Ss * D) # Q/2 because 2-sided flow\n", " plt.plot(x, ha, \"k:\")\n", "plt.plot([], [], \"k:\", label=\"Bruggeman 123.05\")\n", "plt.legend(loc=(0, 1), frameon=False, ncol=6, fontsize=\"small\")\n", "plt.xlabel(\"x [m]\")\n", "plt.ylabel(\"drawdown [m]\")\n", "plt.grid()" ] }, { "cell_type": "code", "execution_count": null, "id": "da22f6f0", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "bruggeman (broken)", "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.11" } }, "nbformat": 4, "nbformat_minor": 5 }