{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Cross-Sectional Models\n", "\n", "This notebook demonstrates how to build and solve cross-sectional (1D) models in `timflow`, including examples with strip inhomogeneities and infinitely long line elements." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "import timflow.steady as tfs\n", "\n", "plt.rcParams[\"figure.figsize\"] = (4, 3)\n", "plt.rcParams[\"figure.autolayout\"] = True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two-layer model with head-specified line-sink\n", "Two-layer aquifer bounded on top by a semi-confined layer. Head above the semi-confining layer is 5. Head line-sink located at $x=0$ with head equal to 2, cutting through layer 0 only." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ml = tfs.ModelMaq(\n", " kaq=[1, 2], z=[4, 3, 2, 1, 0], c=[1000, 1000], topboundary=\"semi\", hstar=5\n", ")\n", "ls = tfs.River1D(ml, xls=0, hls=2, layers=0)\n", "ml.solve()\n", "\n", "x = np.linspace(-200, 200, 101)\n", "h = ml.headalongline(x, np.zeros_like(x))\n", "plt.plot(x, h[0], label=\"layer 0\")\n", "plt.plot(x, h[1], label=\"layer 1\")\n", "plt.legend(loc=\"best\")\n", "plt.grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Xsection elements\n", "\n", "Three strips with semi-confined conditions on top of all three can be modeled with the `XsectionMaq` element." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "