Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor TTim to compute per log t-interval #74

Closed
wants to merge 37 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
66cbb16
Merge pull request #67 from mbakker7/dev
dbrakenhoff Sep 26, 2024
46d3da0
refactor model.py
dbrakenhoff Oct 29, 2024
95ab8cd
add initialize_interval
dbrakenhoff Oct 29, 2024
66ed452
refactor functions:
dbrakenhoff Oct 29, 2024
3ccdb8b
refactor solve()
dbrakenhoff Oct 29, 2024
88eea89
npint -> nppar
dbrakenhoff Oct 29, 2024
c5b8aff
refactor AquiferData
dbrakenhoff Oct 29, 2024
0861ee2
refactor WellBase
dbrakenhoff Oct 29, 2024
a647941
rename potinf to potinfall
dbrakenhoff Oct 29, 2024
5197c51
refactor Well
dbrakenhoff Oct 29, 2024
0582d91
fix super call
dbrakenhoff Oct 29, 2024
cc14baf
refactor Element
dbrakenhoff Oct 29, 2024
b874f11
refactor WellBoreStorageEquation
dbrakenhoff Oct 29, 2024
d084c71
refactor invlapnumba
dbrakenhoff Oct 29, 2024
10ef23d
add test notebook for Theis problem with log t intervals
dbrakenhoff Oct 29, 2024
acd0b12
Update aquifer.py
mbakker7 Nov 1, 2024
9acaa2e
comment about lababs
mbakker7 Nov 1, 2024
3d44800
Added Hantush
mbakker7 Nov 1, 2024
cb60548
allow time on right boundary of last interval
dbrakenhoff Nov 1, 2024
8a6e59f
start modifying disvec in Model, Element and Well classes
dbrakenhoff Nov 1, 2024
2abe17c
initialize arrays with dtype=complex
dbrakenhoff Nov 1, 2024
999407d
rename old disvec to disvecall
dbrakenhoff Nov 1, 2024
aae4ce6
initialize arrays or astype using float instead of "d"
dbrakenhoff Nov 1, 2024
d16271b
initialize arrays with dtype=complex
dbrakenhoff Nov 1, 2024
1fea1ac
adjust array sizes in element docstring
dbrakenhoff Nov 1, 2024
630d9e7
working on multi-layers systems
mbakker7 Nov 1, 2024
dbfd157
Working on multi-layer solution
mbakker7 Nov 2, 2024
90f7770
testing headwell
mbakker7 Nov 2, 2024
197d764
still working on HeadWell
mbakker7 Nov 2, 2024
1c40eb3
working on potinflayers
mbakker7 Nov 2, 2024
cf69b67
fixed potential function
mbakker7 Nov 2, 2024
8da751e
ml.potential fixed
mbakker7 Nov 2, 2024
b582daa
multi-layer pumping well works
mbakker7 Nov 2, 2024
5b25335
Fixed HeadWell by fixing storing parameters in ml.solve
mbakker7 Nov 3, 2024
9e6f76a
Modified DischargeWell
mbakker7 Nov 4, 2024
25cef84
Added comments
mbakker7 Nov 4, 2024
4241925
fixed dtype from "D" to complex
mbakker7 Nov 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add test notebook for Theis problem with log t intervals
dbrakenhoff committed Oct 29, 2024
commit 10ef23de9679eb20f7c9dfc3ecca3d61fb6440ce
284 changes: 284 additions & 0 deletions docs/03examples/test_t_intervals.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,284 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TTim: compute per log time interval\n",
"\n",
"Import packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ttim: /home/david/github/ttim_db/docs/03examples/../../ttim/__init__.py\n"
]
}
],
"source": [
"import sys\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from scipy.special import exp1\n",
"\n",
"use_fork = True\n",
"if use_fork:\n",
" sys.path.insert(1, \"../..\")\n",
"import ttim\n",
"\n",
"# check which ttim\n",
"print(\"ttim:\", ttim.__file__)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Compare to analytical Theis solution."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def theis(r, t, T, S, Q):\n",
" u = r**2 * S / (4 * T * t)\n",
" h = -Q / (4 * np.pi * T) * exp1(u)\n",
" return h\n",
"\n",
"\n",
"def theisQr(r, t, T, S, Q):\n",
" u = r**2 * S / (4 * T * t)\n",
" return -Q / (2 * np.pi) * np.exp(-u) / r\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Model parameters"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"T = 500\n",
"S = 1e-4\n",
"t = np.logspace(-5, 0, 11)\n",
"r = 30\n",
"Q = 788"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"htheis = theis(r, t, T, S, Q)\n",
"Qrtheis = theisQr(r, t, T, S, Q)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"self.neq 1\n",
"solution complete\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/david/github/ttim_db/docs/03examples/../../ttim/aquifer.py:118: RuntimeWarning: divide by zero encountered in divide\n",
" self.lab[t_int][:] = 1.0 / np.sqrt(self.eigval[t_int])\n",
"/home/david/github/ttim_db/docs/03examples/../../ttim/aquifer.py:118: RuntimeWarning: invalid value encountered in divide\n",
" self.lab[t_int][:] = 1.0 / np.sqrt(self.eigval[t_int])\n"
]
}
],
"source": [
"tmin = 1e-5\n",
"tmax = 1.0\n",
"\n",
"ml = ttim.ModelMaq(kaq=25, z=[20, 0], Saq=S / 20, tmin=tmin, tmax=tmax)\n",
"w = ttim.Well(ml, tsandQ=[(0, Q)], rw=1e-5)\n",
"ml.solve()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"h = np.full_like(t, np.nan)\n",
"for i, ti in enumerate(t[:-1]):\n",
" h[i] = ml.head(30, 0, ti).item() # .item() to get scalar value"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The TTim solution still matches the analytical Theis solution. \n",
"\n",
"Note that the final time could not be computed yet because the new implementation does not expand the time last time interval to contain `t=1.0`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABOkAAAIzCAYAAABV1E0BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAABcSAAAXEgFnn9JSAABRc0lEQVR4nO3dfZiWZZ0//vcgAjEIKsiDye04kmJopquY60MO2DcRTUbR77G6W0pWm6mQbvY181fHlmvbgzbu9mC5Pu3m8a3Q0RWiUhkzv0Y+lsIaKdN4D4WQJBpDKA/z+8NmdAR1gBuuYXi9jmOOw87zvM77c9l8xOPteV9XVXt7e3sAAAAAgML0KboAAAAAANjRCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6KqaqqmqTfmpqapIk9957b6qqqnL22Wdv1fq21eew9W3O79qmXnPjjTf6nQEAAGCb6Vt0AfQeH/rQhzYYu//++7No0aIcfPDBefe7391lbtiwYduoMnqbTf1du//++ze4ZuXKlbn11lvfcL8xY8Zk7dq1lSsaAAAA3oSQrgdraGhIfX19SqXSm64rl8tpbGzM9OnTt1FlG3fjjTduMHb22Wdn0aJFmTJlSj7/+c9v85pea/z48XnyySczZMiQQutgy1Xid62lpaUzpNvYfkmyatUqvzMAAABsE0K6HqqhoSEzZszINddck6ampjcM6srlcurq6tLc3JwkhQd1PdnAgQMzduzYosvYfrS1JYMGvfLXK1cm1dXF1lMAvzMAAABsK55J10PV19entrY2zc3NqaurS7lc3mDNawO62tra1NfXF1BpZf3pT3/Kxz/+8YwaNSr9+/fPgQcemOuvv/4N17e0tORjH/tYampq0r9//+yxxx6ZOnVqHn/88Q3WvtHzxdrb2/N//+//zbHHHpuRI0dmwIABGT16dI4//vh84xvfqPQtsh15o9+Zz3/+853PrXvkkUcyadKk7Lrrrtl9991zxhlnZPHixUmStra2fOpTn0pNTU0GDBiQAw88MDNnzizgTgAAAOjphHQ9VKlUSlNT0xsGda8P6N7stN32YsWKFTnyyCPT2NiYww8/PEcddVR+85vf5MMf/nCuu+66Ddbff//9Ofjgg/Od73wngwYNygc+8IG84x3vyG233Zb3vOc9aWpq6tbnXnrppfm7v/u7/OpXv8qhhx6aU089NWPGjMmvf/3rfOUrX6n0bdKL/PKXv8xRRx2V1tbWHH/88Rk6dGh++MMfZuLEiXnhhRdSV1eXG264IQcddFCOPPLI/M///E/OOOOM/OQnPym6dAAAAHoYX3ftwTqCuo4wrq6urjN46m0BXZLccccdOe2003LTTTel+q9frbzjjjsyZcqUfOELX8i5557bufbFF1/M6aefnr/85S/54Q9/mKlTp3bO3X333Zk8eXL+4R/+Ic3NzenXr98bfubq1avz9a9/PTU1NXnkkUey++67d86tXbs2DzzwwFa4U3qLb3/727n66qszY8aMJMmaNWty4okn5u67787f/u3fZvjw4Xnqqaey2267JUn+4z/+I+eee27+5V/+Je9///sLrBwAAICexkm6Hu71J+rGjBmTMWPG9LqALkkGDx6c73znO50BXZKccsopOeigg1Iul9PS0tI5fv311+fZZ5/NP/3TP3UJ6JLk+OOPz3nnnZff//73mTVr1pt+5osvvpiXXnopBx98cJeALkn69u2bY489dstvbHvR1rbhT3fmdmDHHntsZ0CXJDvvvHMuvPDCJMnChQvz3e9+tzOgS155ucWwYcPyi1/8ImvWrNnW5QIAANCDCem2Ax1B3c4775w1a9ZkzZo12XnnnXtVQJckhx122AZBWZLst99+SZIlS5Z0jt11111JkilTpmx0r6OPPjpJ8tBDD73pZw4fPjx77bVXZs+ena985Sv5wx/+sDml9w6DBnX9GTHi1bkRIzacJ+973/s2GKutrU2S1NTUZMyYMV3mdtppp9TU1GTNmjV57rnntkmNAAAAbB+EdPQYe+2110bHB/01EHrppZc6xzpO1R1xxBGpqqra4KfjdF13gpCbbropu+22Wy655JK8/e1vT21tbc4+++z89Kc/3cI7ord7+9vfvsFYx0nQjc29dv61v88AAADgmXTbgY6XRHScoEteefZVxzPqestpuqqqqm6vXbduXZLk9NNPz8CBA99w3RFHHPGWe02YMCFPP/10Zs2alR//+Mf52c9+lptuuik33XRTzjjjjHz/+9/vdl3btZUru/7vtrZXT9MtXZq85mvIvOLNfmc35fcZAAAAhHQ93Mbe4ppkg5dJ9Jagrrv22muvLFy4MJ/97Gfzrne9a4v3Gzx4cM4888yceeaZSZJ58+bl9NNPzw9+8IOcffbZmTRp0hZ/Ro/3ZiFcdbWQDgAAALYiX3ftwTYW0JVKpQ1eJlFXV5dyuVx0udvU8ccfnyS5/fbbt8r+73nPe/IP//APSZInnnhiq3wGAAAAQAchXQ/1RgFdhx09qPvYxz6WPfbYI//yL/+SG264Ie3t7V3m29racvPNN2fx4sVvuk+5XM6NN96YVatWdRl/6aWXOk8t7minFAEAAIBtT0jXQzU2Nr5hQNfh9UFdY2NjAZUWY7fddktjY2Oqq6szbdq07LPPPjnppJNy2mmn5fDDD8+IESPyoQ996C1fHPGnP/0p55xzTvbYY4+8973vzVlnnZUpU6Zk9OjRmTdvXsaPH59TTz11G90VAAAAsKPyTLoeavr06UmS+vr6Nz3J1RHUNTY2dl6zozjqqKPyxBNP5Kqrrsrs2bMzd+7c7LTTTtlzzz1z0kkn5dRTT8073/nON91j3333zVe/+tXMnTs3//M//5MHH3wwgwYNyj777JPLL7885557bvr167eN7qiHqa5OXndCEQAAANg6qtpf/z1BAAAAAGCb8nVXAAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAK1rfoArZnI0eOTFtbW0qlUtGlAAAAAFCwcrmc6urqPPvss5t8rZN0W6CtrS1r1qwpuoyKamtrS1tbW9FlwHZPL0Hl6CeoDL0ElaOfoDJ6Yy+tWbNms+/JSbot0HGCbsGCBQVXUjlz585NkkyYMKHgSmD7ppegcvQTVIZegsrRT1AZvbGXxo0bt9nXOkkHAAAAAAUT0gEAAABAwYR0AAAAAFAwIR0AAAAAFExIBwAAAAAFE9IBAAAAQMGEdAAAAABQMCEdAAAAABRMSAcAAAAABRPSAQAAAEDBhHQAAAAAUDAhHQAAAAAUrMeFdKtXr87nPve57LfffhkwYED23HPPTJs2LYsXL97kvVasWJEZM2Zk7733Tv/+/bP33ntn+vTpWbFiReUL3w41NDSkXC6/5bpyuZyGhoZtUBEAAADAjqlHhXSrV6/OxIkT88///M9ZuXJlTjnllIwePTo33HBDDj300CxatKjbey1fvjzjx49PQ0ND+vbtmylTpmSXXXbJNddck8MPPzzLly/finfS8zU0NGTGjBmpq6t7Nahra8uEiRMzYeLEpK0tySsBXV1dXWbMmCGoAwAAANhKelRI9y//8i954IEHcuSRR+a3v/1tvv/97+eXv/xlvva1r+WPf/xjpk2b1u29PvnJT+app57KqaeemoULF+b73/9+5s+fnwsuuCBPP/10Lrrooq14Jz1ffX19amtr09zc3DWoe42OgK65uTm1tbWpr68voFIAAACA3q/HhHRr1qzJv/3bvyVJvvGNb2TQoEGdcxdddFHe9a535b777ssjjzzylns9++yz+d73vpedd9453/zmN9O3b9/Oua985SvZY4898r3vfS9Lly6t/I1sJ0qlUpqamroEda2trZ3zra2tXQK6pqamlEqlAisGAAAA6L16TEh3//33Z8WKFdl3331zyCGHbDA/derUJMmdd975lnvNmTMn69evz7HHHpsRI0Z0mevfv39OPvnkrFu3LnPmzKlM8dup1wd1kyZN6pybNGmSgA4AAABgG+kxId2vf/3rJMmhhx660fmO8Y5122qv3uwbX/5yqlatyr2zZ2dcTU2WtbR0zi1racm4mprcO3t2qlatyje+/OXiCgUAAADo5fq+9ZJto+OZaHvttddG5zvGu/s20krtlSTjxo3b6PiiRYsycuTIzJ07t1v79CS33nprvvHNbyaf/nSSZP7r5pclSUtLcsABSZJPJPnEM8/ktNNO24ZVwvar7a8vX9ke//kAPY1+gsrQS1A5+gkqozf2UltbW6qrqzfr2h5zkm7lypVJkoEDB250vuMGO9Ztq716q6OPPnqbXAMAAADAW+sxJ+na29uTJFVVVW86v633SpIFCxZsdLzjhN2ECRM2ab+eovWQQzJp0qT8rqUlfXfaKbutW5eWv87VJHl+p52ydt267FNTkzlz5uTvxo4trljYznT8l6Dt9Z8P0JPoJ6gMvQSVo5+gMnpjL23uKbqkB52k22WXXZK8etTx9VatWpUkXd76ui326s1Gjx2b795yS17u2zcvrluXl/q8+uvwUp8+eXHd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3ZvuCYqgl6By9BNUhl6CytFPUBm9sZc29xRdUqGQ7uGHH67ENlvFpz71qVx//fUZPXp07rrrrgwbNqzokgAAAACgi1794ogrr7wyX/3qVzN8+PDcddddGT16dNElAQAAAMAGem1I953vfCef+cxnsuuuu+YnP/lJ9t9//6JLAgAAAICN2q5DurFjx2bs2LH5/e9/32V85syZ+fjHP55BgwblRz/6Ud797ncXUyAAAAAAdENFnklXCfX19VmyZEmSZPHixUmSb37zm7n99tuTJKNGjUpjY2OXazpeVrFmzZrOsWXLluWss87K+vXrs88+++Taa6/Ntddeu8HnTZkyJVOmTNkKdwIAAAAAm6bHhHSPPfZYnnnmmS5jra2taW1tTZLsvffe3dpn1apVefnll5MkTzzxRJ544omNrqupqRHSAQAAANAj9JiQrqWlZZOvaW9v32CspqZmo+MAAAAA0FNt18+kAwAAAIDeQEgHAAAAAAUT0gEAAABAwYR0AAAAAFCwqnZvWdhsu+yyS9asWZN999236FIqpq2tLUlSXV1dcCWwfdNLUDn6CSpDL0Hl6CeojN7YS4sWLcrOO++cP//5z5t8rZN0W6C6ujo777xz0WVU1LPPPptnn3226DJgu6eXoHL0E1SGXoLK0U9QGb2xl3beeefNDh2dpKOLcePGJUkWLFhQcCWwfdNLUDn6CSpDL0Hl6CeoDL3UlZN0AAAAAFAwIR0AAAAAFExIBwAAAAAFE9IBAAAAQMGEdAAAAABQMG93BQAAAICCOUkHAAAAAAUT0gEAAABAwYR0AAAAAFAwIR0AAAAAFExIBwAAAAAFE9IBAAAAQMGEdAAAAABQMCFdL7d69ep87nOfy3777ZcBAwZkzz33zLRp07J48eJN3mvFihWZMWNG9t577/Tv3z977713pk+fnhUrVlS+cOhhKtFLK1asyC233JIzzzwz73znO1NdXZ1ddtklRxxxRBoaGrJmzZqteAfQc1Tyz6bXeuqpp/K2t70tVVVVOeGEEypULfRcle6lp59+Oh/5yEdSU1OTAQMGZI899sjf/u3f5itf+UqFK4eepZK99OMf/ziTJk3KsGHDsvPOO2f48OE56aSTcs8992yFyqFneeSRR/KlL30pp556at7+9renqqoqAwYM2Oz9dsQMoqq9vb296CLYOlavXp2JEyfmgQceyKhRo3LMMcekpaUlDz74YPbYY4/84he/yL777tutvZYvX54jjzwyTz31VGpra3PYYYdlwYIFWbBgQcaMGZN58+Zl6NChW/mOoBiV6qXPfvazueKKK9KnT58ccsghGTNmTP74xz/m//2//5eXXnopRx99dH7yk59k4MCB2+CuoBiV/LPp9SZMmJB777037e3tef/7358f//jHFa4eeo5K91JjY2POPPPMvPTSSznkkEOy3377Zfny5XniiSdSXV2dp59+eiveDRSnkr101VVX5eKLL05VVVWOOuqovP3tb09zc3MeeuihJMm3vvWt/OM//uPWvB0o1JQpU3LHHXd0Gevfv39Wr169yXvtsBlEO73W5Zdf3p6k/cgjj2z/85//3Dn+ta99rT1J+7HHHtvtvf7hH/6hPUn7qaee2r5mzZrO8QsuuKA9SfsHP/jBitYOPUmleunKK69s/8xnPtO+ePHiLuO//e1v20ulUnuS9ksvvbSitUNPU8k/m17ruuuua0/S/tGPfrQ9Sfv73//+SpUMPVIle+lXv/pVe79+/dqHDh3a/vOf/7zL3Lp169ofeuihitUNPU2lemnZsmXt/fr1a+/Xr98GfTRz5sz2qqqq9oEDB3b5DOhtvvSlL7X/f//f/9d+5513tj/77LPtSdr79++/WXvtqBmEkK6Xevnll9t33XXX9iTtjz766Abz73rXu9qTtD/88MNvudeSJUva+/Tp077zzju3P/vss13mVq9e3b7HHnu077TTThvMQW9QyV56M7fcckt7kvaampot2gd6sq3VT0uXLm3fbbfd2o8//vj2pqYmIR29XqV76ZhjjmlP0n7nnXdWulTo0SrZS3feeWd7kvYTTjhho/MHH3xwe5L2X/7yl1tcN2wvNjek25EzCM+k66Xuv//+rFixIvvuu28OOeSQDeanTp2aJLnzzjvfcq85c+Zk/fr1OfbYYzNixIguc/3798/JJ5+cdevWZc6cOZUpHnqQSvbSmzn44IOTJH/4wx+2aB/oybZWP1144YX5y1/+km9961sVqRN6ukr20pNPPpmf//zn2W+//XLSSSdVvFboySrZS/379+/WZ+6+++6bViTsgHbkDEJI10v9+te/TpIceuihG53vGO9Yt632gu3Ntvr9b25uTpKMHDlyi/aBnmxr9NOPfvSjfP/7389nPvOZjBkzZsuLhO1AJXup42H273vf+7J69ercdNNNueCCC3LhhRfmuuuuy4svvlihqqHnqWQvHX744RkyZEjmzp2b+++/v8vcbbfdlscffzx/+7d/688q6IYdOYPoW3QBbB3lcjlJstdee210vmO8Y9222gu2N9vq97+hoSFJcsopp2zRPtCTVbqf2tract5552X//ffPpz/96coUCduBSvbSggULkiRve9vb8u53vzsLFy7sMn/ppZfm1ltvzbHHHrslJUOPVMle2nXXXXPdddflrLPOyrHHHtv54ojf/e53eeihh3LCCSfkxhtvrFjt0JvtyBmEk3S91MqVK5PkDd8SWV1d3WXdttoLtjfb4vf/29/+du6+++7suuuu+T//5/9s9j7Q01W6nz772c/mmWeeybe+9a3069evMkXCdqCSvfT8888nSb7+9a/nT3/6U2677basWLEiCxcuzJlnnpnnnnsuU6ZMyZIlSypUPfQclf5zaerUqZkzZ06GDh2a+++/P9///vfz4IMPZvjw4ZkwYULvfBMlbAU7cgYhpOul2tvbkyRVVVVvOr+t94Ltzdb+/f/Zz36W6dOnp6qqKtdff3323HPPLdoPerJK9tPDDz+cf/u3f8sHP/jB1NXVVaQ+2F5UspfWrVuXJFm7dm3+67/+K/X19RkyZEj222+/fO9738vhhx+e559/Pt/4xje2vHDoYSr973lf+9rX8r73vS/HHntsHn/88axcuTKPP/54jjzyyHzqU5/K//7f/3uLa4YdwY6cQQjpeqlddtklyStfBdqYVatWJUkGDRq0TfeC7c3W/P1//PHHM2XKlLz88stpaGhIfX395hcK24FK9dPatWvzkY98JEOGDMlXv/rVyhYJ24Gt8e95b3/72/O//tf/2mD+nHPOSZLce++9m1Mq9GiV7KWf/exn+ad/+qe8+93vzg9/+MMcdNBBqa6uzkEHHZSZM2fmkEMOya233pqf/vSnlbsB6KV25AzCM+l6qVKplCRZvHjxRuc7xjvWbau9YHuztX7/Fy1alPe///1ZsWJFPv/5z+eCCy7YskJhO1Cpflq8eHF+9atfZeTIkTn99NO7zK1YsSJJ8uCDD+a4447LoEGDMmvWrC2sHHqWSv7ZVFNTkyTZe++933R+2bJlm1gl9HyV7KWbb745SXLqqaemT5+uZ2F22mmnnHrqqXnsscdy7733bjQQB161I2cQQrpe6uCDD06SPProoxud7xh/17vetU33gu3N1vj9/8Mf/pD3ve99efbZZzN9+vR87nOf2/JCYTtQ6X569tln8+yzz2507vnnn8/PfvazDBkyZDMqhZ6tkr10yCGHJEn+9Kc/bXR++fLlSXrnaQWoZC91hAaDBw/e6HzH+Bv1GvCqHTmD8HXXXuqoo47KkCFDsmjRojz22GMbzM+cOTNJctJJJ73lXieccEL69OmTn//85xv8V9SXXnopd955Z/r06ZNJkyZVpnjoQSrZS8krwcH73//+/O53v8s555yTq6++uqL1Qk9WqX6qqalJe3v7Rn+ampqSJO9///vT3t7eebIOepNK/tk0ceLEVFdXZ9GiRWltbd1gvuNrroceeuiWFQ09UCV7aeTIkUleeWbqxjz00ENJXj2dCryxHTmDENL1Uv369cv555+fJDn//PO7fJf7qquuyuOPP56jjz46hx9+eOf4v//7v2fs2LG59NJLu+w1atSo/N3f/V1efvnlnHfeeVm7dm3n3CWXXJI//vGPOfPMMzv/YILepJK9tGrVqpx44omZP39+zjjjjHz3u999w4ehQm9UyX6CHVkle2ngwIG54IILsmbNmnz84x/vstePf/zj3HTTTamqqspHP/rRrXxXsO1VspemTJmSJPne976XO++8s8vcHXfckVtuuSV9+vTxDGJ4DRnEhnzdtRf77Gc/m7vvvjsPPPBA3vGOd+SYY47JM888k1/+8pcZOnRobrjhhi7rn3vuuSxcuDBLlizZYK+vf/3rmTdvXm699daMHTs2hx12WBYsWJD58+dn3333dRqIXq1SvXTZZZdl3rx52WmnndK3b998+MMf3ujn3XjjjVvrVqBwlfyzCXZkleylz33uc/n5z3+e2bNn5x3veEeOOOKILFu2LPPmzcv69etzxRVXZPz48dvq1mCbqlQvTZkyJaeffnp++MMf5gMf+EAOO+yw7LPPPvnd737XebruiiuuyP7777/N7g22tdmzZ+cLX/hCl7GXX34573nPezr/9+WXX57JkycnkUFsjJN0vdiAAQPS1NSUyy+/PAMHDsztt9+elpaWfOhDH8pjjz2WMWPGdHuvYcOG5aGHHsoFF1yQl19+OY2NjXnhhRdy/vnn58EHH8ywYcO24p1AsSrVS88//3ySZN26dbnlllty0003bfQHerNK/tkEO7JK9tKAAQMyd+7cXHHFFdl1110zZ86cLFiwIHV1dZk1a1Y+85nPbMU7gWJVqpeqqqry/e9/P//xH/+RY489Nk8//XQaGxvT0tKSE088MXPmzNFL9Hp//OMf88tf/rLzJ0na29u7jP3xj3/s1l47agZR1d7e3l50EQAAAACwI3OSDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICC/f++3wndpfgjBAAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1500x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplots(1, 1, figsize=(10, 4), dpi=150)\n",
"plt.plot(t, htheis, \"x\", c=\"k\", label=\"Theis\")\n",
"plt.plot(t, h, \"+\", c=\"r\", label=\"TTim\")\n",
"plt.legend(loc=(0, 1), frameon=False, ncol=2)\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But this allows us to demonstrate a new feature. We can solve for a specific time interval using `ml.solve_interval()`. "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/david/github/ttim_db/docs/03examples/../../ttim/aquifer.py:118: RuntimeWarning: divide by zero encountered in divide\n",
" self.lab[t_int][:] = 1.0 / np.sqrt(self.eigval[t_int])\n",
"/home/david/github/ttim_db/docs/03examples/../../ttim/aquifer.py:118: RuntimeWarning: invalid value encountered in divide\n",
" self.lab[t_int][:] = 1.0 / np.sqrt(self.eigval[t_int])\n"
]
}
],
"source": [
"# solve interval\n",
"ml.solve_interval(0)\n",
"# compute head at time\n",
"h[-1] = ml.head(30, 0, t[-1]).item()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot figure again."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABOkAAAIzCAYAAABV1E0BAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAABcSAAAXEgFnn9JSAABR6ElEQVR4nO3dfZTXZZ038DeIQAyCCvJg8nMcKTE0003M1dQBu5PQZBS9z9puKT1tDwrpZmvWXWfLte1BG3d7sFxLd/PcFTaa0FQqQ+ZtlE9lsETKNP6GQkgSbYZQHub+w2ZkBGWAH3yH4fU6Z86x63N9r9/na3OJ5+31+377dXR0dAQAAAAAKEz/ohsAAAAAgL2dkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAKJqSjYvr167ddP9XV1UmSBQsWpF+/frnwwgt3aX+763PY9Xbkd217r/nmN7/pdwYAAIDdZkDRDdB3vOMd79hi7N57782yZctyzDHH5HWve1232siRI3dTZ/Q12/u7du+9925xTVtbW2699daXXG/8+PHZsGFD5ZoGAACAlyGk68Xq6+tTV1eXUqn0svPK5XIaGhoya9as3dTZ1n3zm9/cYuzCCy/MsmXLMn369Hzyk5/c7T1tbtKkSVmyZEmGDx9eaB/svEr8rrW0tHSFdFtbL0nWrl3rdwYAAIDdQkjXS9XX12f27Nm57rrr0tTU9JJBXblcTm1tbZqbm5Ok8KCuNxsyZEgmTJhQdBt7jvb2ZOjQ5/+6rS2pqiq2nwL4nQEAAGB38Uy6Xqquri41NTVpbm5ObW1tyuXyFnM2D+hqampSV1dXQKeV9ac//Snve9/7Mnbs2AwaNChHHXVUbrzxxpec39LSkve+972prq7OoEGDctBBB2XGjBl55JFHtpj7Us8X6+joyP/9v/83p5xySsaMGZPBgwdn3LhxOf300/OlL32p0rfIHuSlfmc++clPdj237sEHH8zUqVOz//7758ADD8z555+f5cuXJ0na29vz4Q9/ONXV1Rk8eHCOOuqozJkzp4A7AQAAoLcT0vVSpVIpTU1NLxnUvTige7nTdnuKNWvW5MQTT0xDQ0OOP/74nHTSSfnNb36Td77znbnhhhu2mH/vvffmmGOOyde+9rUMHTo0b33rW/OqV70q3/ve9/KGN7whTU1NPfrcK664In/3d3+XX/7ylznuuONyzjnnZPz48fnVr36Vz33uc5W+TfqQn//85znppJPS2tqa008/PSNGjMh3v/vdTJkyJU8//XRqa2vzjW98I0cffXROPPHE/M///E/OP//8/OhHPyq6dQAAAHoZX3ftxTqDus4wrra2tit46msBXZLcfvvtOffcc3PTTTel6q9frbz99tszffr0fOpTn8q73vWurrnPPPNMzjvvvPzlL3/Jd7/73cyYMaOrdtddd2XatGn5h3/4hzQ3N2fgwIEv+Znr1q3LF7/4xVRXV+fBBx/MgQce2FXbsGFD7rvvvl1wp/QVX/3qV3Pttddm9uzZSZL169fnLW95S+6666787d/+bUaNGpVHH300BxxwQJLkP//zP/Oud70r//qv/5o3v/nNBXYOAABAb+MkXS/34hN148ePz/jx4/tcQJckw4YNy9e+9rWugC5Jzj777Bx99NEpl8tpaWnpGr/xxhvzxBNP5J/+6Z+6BXRJcvrpp+f9739/fv/732fu3Lkv+5nPPPNMnn322RxzzDHdArokGTBgQE455ZSdv7E9RXv7lj89qe3FTjnllK6ALkn23XffXHLJJUmSpUuX5utf/3pXQJc8/3KLkSNH5mc/+1nWr1+/u9sFAACgFxPS7QE6g7p9990369evz/r167Pvvvv2qYAuSV7/+tdvEZQlyatf/eokyYoVK7rG7rzzziTJ9OnTt7rWySefnCS5//77X/YzR40alUMOOSTz5s3L5z73ufzhD3/Ykdb7hqFDu/+MHv1CbfToLevkTW960xZjNTU1SZLq6uqMHz++W22fffZJdXV11q9fnyeffHK39AgAAMCeQUhHr3HIIYdsdXzoXwOhZ599tmus81TdCSeckH79+m3x03m6ridByE033ZQDDjggl19+eV75ylempqYmF154YX784x/v5B3R173yla/cYqzzJOjWapvXN/99BgAAAM+k2wN0viSi8wRd8vyzrzqfUddXTtP169evx3M3btyYJDnvvPMyZMiQl5x3wgknbHOtyZMn57HHHsvcuXPzwx/+MD/5yU9y00035aabbsr555+fb3/72z3ua4/W1tb9f7e3v3CabuXKZLOvIfO8l/ud3Z7fZwAAABDS9XJbe4trki1eJtFXgrqeOuSQQ7J06dJ87GMfy2tf+9qdXm/YsGG54IILcsEFFyRJFi5cmPPOOy/f+c53cuGFF2bq1Kk7/Rm93suFcFVVQjoAAADYhXzdtRfbWkBXKpW2eJlEbW1tyuVy0e3uVqeffnqS5Lbbbtsl67/hDW/IP/zDPyRJfv3rX++SzwAAAADoJKTrpV4qoOu0twd1733ve3PQQQflX//1X/ONb3wjHR0d3ert7e25+eabs3z58pddp1wu55vf/GbWrl3bbfzZZ5/tOrW4t51SBAAAAHY/IV0v1dDQ8JIBXacXB3UNDQ0FdFqMAw44IA0NDamqqsrMmTNz2GGH5cwzz8y5556b448/PqNHj8473vGObb444k9/+lMuuuiiHHTQQTn11FPztre9LdOnT8+4ceOycOHCTJo0Keecc85uuisAAABgb+WZdL3UrFmzkiR1dXUve5KrM6hraGjoumZvcdJJJ+XXv/51rrnmmsybNy/z58/PPvvsk4MPPjhnnnlmzjnnnLzmNa952TUOP/zwfP7zn8/8+fPzP//zP/nFL36RoUOH5rDDDsvHP/7xvOtd78rAgQN30x31MlVVyYtOKAIAAAC7Rr+OF39PEAAAAADYrXzdFQAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAgg0ouoE92ZgxY9Le3p5SqVR0KwAAAAAUrFwup6qqKk888cR2X+sk3U5ob2/P+vXri26jotrb29Pe3l50G7DHs5egcuwnqAx7CSrHfoLK6It7af369Tt8T07S7YTOE3SLFy8uuJPKmT9/fpJk8uTJBXcCezZ7CSrHfoLKsJegcuwnqIy+uJcmTpy4w9c6SQcAAAAABRPSAQAAAEDBhHQAAAAAUDAhHQAAAAAUTEgHAAAAAAUT0gEAAABAwYR0AAAAAFAwIR0AAAAAFExIBwAAAAAFE9IBAAAAQMGEdAAAAABQMCEdAAAAABSs14V069atyyc+8Ym8+tWvzuDBg3PwwQdn5syZWb58+XavtWbNmsyePTuHHnpoBg0alEMPPTSzZs3KmjVrKt/4Hqi+vj7lcnmb88rlcurr63dDRwAAAAB7p14V0q1bty5TpkzJv/zLv6StrS1nn312xo0bl2984xs57rjjsmzZsh6vtXr16kyaNCn19fUZMGBApk+fnv322y/XXXddjj/++KxevXoX3knvV19fn9mzZ6e2tvaFoK69PZOnTMnkKVOS9vYkzwd0tbW1mT17tqAOAAAAYBfpVSHdv/7rv+a+++7LiSeemN/+9rf59re/nZ///Of5whe+kD/+8Y+ZOXNmj9f60Ic+lEcffTTnnHNOli5dmm9/+9tZtGhRLr744jz22GO59NJLd+Gd9H51dXWpqalJc3Nz96BuM50BXXNzc2pqalJXV1dApwAAAAB9X68J6davX59///d/T5J86UtfytChQ7tql156aV772tfmnnvuyYMPPrjNtZ544ol861vfyr777psvf/nLGTBgQFftc5/7XA466KB861vfysqVKyt/I3uIUqmUpqambkFda2trV721tbVbQNfU1JRSqVRgxwAAAAB9V68J6e69996sWbMmhx9+eI499tgt6jNmzEiS3HHHHdtcq7GxMZs2bcopp5yS0aNHd6sNGjQoZ511VjZu3JjGxsbKNL+HenFQN3Xq1K7a1KlTBXQAAAAAu0mvCel+9atfJUmOO+64rdY7xzvn7a61+rIvffaz6bd2bRbMm5eJ1dVZ1dLSVVvV0pKJ1dVZMG9e+q1dmy999rPFNQoAAADQxw3Y9pTdo/OZaIcccshW653jPX0baaXWSpKJEydudXzZsmUZM2ZM5s+f36N1epNbb701X/ryl5OPfCRJsuhF9VVJ0tKSHHlkkuQDST7w+OM599xzd2OXsOdq/+vLV/bEfz5Ab2M/QWXYS1A59hNURl/cS+3t7amqqtqha3vNSbq2trYkyZAhQ7Za77zBznm7a62+6uSTT94t1wAAAACwbb3mJF1HR0eSpF+/fi9b391rJcnixYu3Ot55wm7y5MnbtV5v0XrssZk6dWp+19KSAfvskwM2bkzLX2vVSZ7aZ59s2Lgxh1VXp7GxMX83YUJxzcIepvO/BO2p/3yA3sR+gsqwl6By7CeojL64l3b0FF3Si07S7bfffkleOOr4YmvXrk2Sbm993R1r9WXjJkzI12+5Jc8NGJBnNm7Ms/1f+HV4tn//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nVcul9PQ0JBZs2btps4AAAAA9ny94uuuN9xwQ55++umcffbZXQFdkowePTqf/exnk2S7TtLNnz8/3/nOd3L88cfn61//ereALknGjh27zbCJF9TX12f27Nmpra1NuVx+frC9PenX7/mf9vYkzwd0tbW1mT17durr6wvsGAAAAGDP0itCurlz5yZJZsyYsUVt2rRpGTx4cO66666sW7euR+tdf/31SZIPfehD6d+/V9ziHq2uri41NTVpbm7uHtRtpjOga25uTk1NTerq6groFAAAAGDP1CsSrEceeSRJctxxx21RGzhwYI466qisW7cuS5cu7dF68+fPT5KcfvrpWbRoUT7xiU/kve99bz7xiU9k4cKFlWt8L1EqldLU1NQtqGttbe2qt7a2dgvompqanFQEAAAA2A79Ojo6Oops4Jlnnsnw4cOTJE8//XSGDRu2xZy6urrcdttt+f73v5+zzjrrZddbuXJlxowZkwMOOCCXX355rrzyymzatKnbnL//+7/PjTfemH333bdHPb7UCyaWLVuWMWPG5MYbb+zROnuC9r9+dbWqqmqL2sqVK3PZZZdlxYoVqRk9OstWrkySHD56dJpXrszYsWPzhS98IaNHj96tPUNv9HJ7Cdg+9hNUhr0ElWM/QWX0xb00c+bMVFVVZfHixdt9beEn6dra2rr++sXPjuvU+X/W5nNfylNPPZUk+fOf/5wrrrgib3vb27J06dI89dRTmTNnTkaOHJn//u//zsc//vEKdL/36P+Xv2TssGH54lVXpWb06Pz5rwFdkvx55crUjB6dL151VcYOG5b+f/lLgZ0CAAAA7Hkq8nbXGTNmZNGiRdt1zc0335xJkyalJwf5tuew38aNG5MkGzZsyIknnpibb765q3buuedm8ODBOfPMM3Pdddflox/96FZP7r3YS6WfnSfsJk+e3OP+ervOrwpvcU/9+nX95fkvumZVkqxcmcyc+cJgsQc0oXAvuZeA7WY/QWXYS1A59hNURl/cSztzKrAiIV1LS0uPnxfXae3atUmS/fbbr9vY1kKzzrlDhw7d5rqbrzdz89Dor6ZNm5bRo0dn5cqV+cUvfpHTTz99u/oGAAAAgEqryNddH3jggXR0dGzXz2mnnZYkGTZsWNcz6ZYvX77V9TvHe/IygoMPPjgDBw5Mkhx66KFbndM5vmrVqu26z71aW1vS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AAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAoWK8I6drb2/Nf//VfufjiizNp0qQMGjQo/fr1y2c+85mdWnfu3Lk59dRTM3z48AwbNiynnnpq5s6dW6GuAQAAAKAyBhTdQJI8+uijefvb317RNa+77rrMmjUrAwYMyOmnn55Bgwblxz/+cc4666zU19fnkksuqejnAQAAAMCO6hUn6fbbb7+8853vzPXXX5+HHnooV1555U6t99vf/jaXXXZZBg0alHvuuSeNjY257bbb8stf/jIjRozIZZddlkcffbRC3QMAAADAzukVId3hhx+eG264Ie95z3ty7LHHZsCAnTvgV19fnw0bNuQf//Efc+KJJ3aNv/rVr86VV16ZDRs25LrrrtvZtgEAAACgInpFSFdpnc+dmzFjxha18847L0lyxx137NaeAAAAAOCl9LmQbs2aNSmXy0mSY489dov6IYcckpEjR+bxxx/P008/vbvbAwAAAIAt9IoXR1RSZ0B3wAEHpKqqaqtzDjnkkDz55JMpl8s5+uijt7nmxIkTtzq+bNmyjBkzJvPnz9/xhnuZ9vb2JOlT9wRFsJegcuwnqAx7CSrHfoLK6It7qb29/SXzqG3pcyfp2trakiRDhgx5yTmdf7M65wIAAABAkSpykm7GjBlZtGjRdl1z8803Z9KkSZX4+G46OjqSJP369dvmnJ5avHjxVsc7T9hNnjx5u9brzTrT6750T1AEewkqx36CyrCXoHLsJ6iMvriXdvQUXVKhkK6lpSVLly7drmvWrl1biY/ewn777ZfkhSOTL/fZQ4cO3SU9AAAAAMD2qEhI98ADD1RimYoolUpJkqeeeuolvwe8fPnybnMBAAAAoEh97pl0+++/f1f49vDDD29RX758eZ588smUSqUMHz58d7cHAAAAAFvocyFdkkybNi1JMmfOnC1q3/3ud5MkZ5555m7tCQAAAABeyh4d0k2YMCETJkzI73//+27js2bNyj777JOvfvWrWbhwYdf4o48+mquuuir77LNPLrnkkt3dLgAAAABsVUWeSVcJdXV1WbFiRZIXnhn35S9/ObfddluSZOzYsWloaOh2TefLKtavX99t/IgjjsjnPve5XHrppXnjG9+YN73pTRk4cGB+/OMf5y9/+Uuuueaa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OAcddFD+9m//Np/73Ocq3Dn0LpXcSz/84Q8zderUjBw5Mvvuu29GjRqVM888M3ffffcu6Bx6lwcffDCf+cxncs455+SVr3xl+vXrl8GDB+/wentjBtGvo6Ojo+gm2DXWrVuXKVOm5L777svYsWPzxje+MS0tLfnFL36Rgw46KD/72c9y+OGH92it1atX58QTT8yjjz6ampqavP71r8/ixYuzePHijB8/PgsXLsyIESN28R1BMSq1lz72sY/lqquuSv/+/XPsscdm/Pjx+eMf/5j/9//+X5599tmcfPLJ+dGPfpQhQ4bshruCYlTyz6YXmzx5chYsWJCOjo68+c1vzg9/+MMKdw+9R6X3UkNDQy644II8++yzOfbYY/PqV786q1evzq9//etUVVXlscce24V3A8Wp5F665pprctlll6Vfv3456aST8spXvjLNzc25//77kyRf+cpX8o//+I+78nagUNOnT8/tt9/ebWzQoEFZt27ddq+112YQHfRZH//4xzuSdJx44okdf/7zn7vGv/CFL3Qk6TjllFN6vNY//MM/dCTpOOecczrWr1/fNX7xxRd3JOl4+9vfXtHeoTep1F66+uqrOz760Y92LF++vNv4b3/7245SqdSRpOOKK66oaO/Q21Tyz6bN3XDDDR1JOt7znvd0JOl485vfXKmWoVeq5F765S9/2TFw4MCOESNGdPz0pz/tVtu4cWPH/fffX7G+obep1F5atWpVx8CBAzsGDhy4xT6aM2dOR79+/TqGDBnS7TOgr/nMZz7T8X/+z//puOOOOzqeeOKJjiQdgwYN2qG19tYMQkjXRz333HMd+++/f0eSjoceemiL+mtf+9qOJB0PPPDANtdasWJFR//+/Tv23XffjieeeKJbbd26dR0HHXRQxz777LNFDfqCSu6ll3PLLbd0JOmorq7eqXWgN9tV+2nlypUdBxxwQMfpp5/e0dTUJKSjz6v0XnrjG9/YkaTjjjvuqHSr0KtVci/dcccdHUk6zjjjjK3WjznmmI4kHT//+c93um/YU+xoSLc3ZxCeSddH3XvvvVmzZk0OP/zwHHvssVvUZ8yYkSS54447trlWY2NjNm3alFNOOSWjR4/uVhs0aFDOOuusbNy4MY2NjZVpHnqRSu6ll3PMMcckSf7whz/s1DrQm+2q/XTJJZfkL3/5S77yla9UpE/o7Sq5l5YsWZKf/vSnefWrX50zzzyz4r1Cb1bJvTRo0KAefeaBBx64fU3CXmhvziCEdH3Ur371qyTJcccdt9V653jnvN21Fuxpdtfvf3Nzc5JkzJgxO7UO9Ga7Yj/94Ac/yLe//e189KMfzfjx43e+SdgDVHIvdT7M/k1velPWrVuXm266KRdffHEuueSS3HDDDXnmmWcq1DX0PpXcS8cff3yGDx+e+fPn59577+1W+973vpdHHnkkf/u3f+vPKuiBvTmDGFB0A+wa5XI5SXLIIYdstd453jlvd60Fe5rd9ftfX1+fJDn77LN3ah3ozSq9n9rb2/P+978/RxxxRD7ykY9UpknYA1RyLy1evDhJ8opXvCKve93rsnTp0m71K664IrfeemtOOeWUnWkZeqVK7qX9998/N9xwQ972trfllFNO6XpxxO9+97vcf//9OeOMM/LNb36zYr1DX7Y3ZxBO0vVRbW1tSfKSb4msqqrqNm93rQV7mt3x+//Vr341d911V/bff//88z//8w6vA71dpffTxz72sTz++OP5yle+koEDB1amSdgDVHIvPfXUU0mSL37xi/nTn/6U733ve1mzZk2WLl2aCy64IE8++WSmT5+eFStWVKh76D0q/efSjBkz0tjYmBEjRuTee+/Nt7/97fziF7/IqFGjMnny5L75JkrYBfbmDEJI10d1dHQkSfr16/ey9d29FuxpdvXv/09+8pPMmjUr/fr1y4033piDDz54p9aD3qyS++mBBx7Iv//7v+ftb397amtrK9If7CkquZc2btyYJNmwYUP++7//O3V1dRk+fHhe/epX51vf+laOP/74PPXUU/nSl760841DL1Ppf8/7whe+kDe96U055ZRT8sgjj6StrS2PPPJITjzxxHz4wx/O//7f/3une4a9wd6cQQjp+qj99tsvyfNfBdqatWvXJkmGDh26W9eCPc2u/P1/5JFHMn369Dz33HOpr69PXV3djjcKe4BK7acNGzbk3e9+d4YPH57Pf/7zlW0S9gC74t/zXvnKV+Z//a//tUX9oosuSpIsWLBgR1qFXq2Se+knP/lJ/umf/imve93r8t3vfjdHH310qqqqcvTRR2fOnDk59thjc+utt+bHP/5x5W4A+qi9OYPwTLo+qlQqJUmWL1++1XrneOe83bUW7Gl21e//smXL8uY3vzlr1qzJJz/5yVx88cU71yjsASq1n5YvX55f/vKXGTNmTM4777xutTVr1iRJfvGLX+S0007L0KFDM3fu3J3sHHqXSv7ZVF1dnSQ59NBDX7a+atWq7ewSer9K7qWbb745SXLOOeekf//uZ2H22WefnHPOOXn44YezYMGCrQbiwAv25gxCSNdHHXPMMUmShx56aKv1zvHXvva1u3Ut2NPsit//P/zhD3nTm96UJ554IrNmzconPvGJnW8U9gCV3k9PPPFEnnjiia3WnnrqqfzkJz/J8OHDd6BT6N0quZeOPfbYJMmf/vSnrdZXr16dpG+eVoBK7qXO0GDYsGFbrXeOv9ReA16wN2cQvu7aR5100kkZPnx4li1blocffniL+pw5c5IkZ5555jbXOuOMM9K/f//89Kc/3eK/oj777LO544470r9//0ydOrUyzUMvUsm9lDwfHLz5zW/O7373u1x00UW59tprK9ov9GaV2k/V1dXp6OjY6k9TU1OS5M1vfnM6Ojq6TtZBX1LJP5umTJmSqqqqLFu2LK2trVvUO7/metxxx+1c09ALVXIvjRkzJsnzz0zdmvvvvz/JC6dTgZe2N2cQQro+auDAgfngBz+YJPngBz/Y7bvc11xzTR555JGcfPLJOf7447vG/+M//iMTJkzIFVdc0W2tsWPH5u/+7u/y3HPP5f3vf382bNjQVbv88svzxz/+MRdccEHXH0zQl1RyL61duzZvectbsmjRopx//vn5+te//pIPQ4W+qJL7CfZmldxLQ4YMycUXX5z169fnfe97X7e1fvjDH+amm25Kv3798p73vGcX3xXsfpXcS9OnT0+SfOtb38odd9zRrXb77bfnlltuSf/+/T2DGDYjg9iSr7v2YR/72Mdy11135b777surXvWqvPGNb8zjjz+en//85xkxYkS+8Y1vdJv/5JNPZunSpVmxYsUWa33xi1/MwoULc+utt2bChAl5/etfn8WLF2fRokU5/PDDnQaiT6vUXrryyiuzcOHC7LPPPhkwYEDe+c53bvXzvvnNb+6qW4HCVfLPJtibVXIvfeITn8hPf/rTzJs3L6961atywgknZNWqVVm4cGE2bdqUq666KpMmTdpdtwa7VaX20vTp03Peeeflu9/9bt761rfm9a9/fQ477LD87ne/6zpdd9VVV+WII47YbfcGu9u8efPyqU99qtvYc889lze84Q1d//vjH/94pk2blkQGsTVO0vVhgwcPTlNTUz7+8Y9nyJAhue2229LS0pJ3vOMdefjhhzN+/PgerzVy5Mjcf//9ufjii/Pcc8+loaEhTz/9dD74wQ/mF7/4RUaOHLkL7wSKVam99NRTTyVJNm7cmFtuuSU33XTTVn+gL6vkn02wN6vkXho8eHDmz5+fq666Kvvvv38aGxuzePHi1NbWZu7cufnoRz+6C+8EilWpvdSvX798+9vfzn/+53/mlFNOyWOPPZaGhoa0tLTkLW95SxobG+0l+rw//vGP+fnPf971kyQdHR3dxv74xz/2aK29NYPo19HR0VF0EwAAAACwN3OSDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICCCekAAAAAoGBCOgAAAAAomJAOAAAAAAompAMAAACAggnpAAAAAKBgQjoAAAAAKJiQDgAAAAAKJqQDAAAAgIIJ6QAAAACgYEI6AAAAACiYkA4AAAAACiakAwAAAICC/X8WtwWVu5ZuggAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 1500x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.subplots(1, 1, figsize=(10, 4), dpi=150)\n",
"plt.plot(t, htheis, \"x\", c=\"k\", label=\"Theis\")\n",
"plt.plot(t, h, \"+\", c=\"r\", label=\"TTim\")\n",
"plt.legend(loc=(0, 1), frameon=False, ncol=2)\n",
"plt.grid()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The differences:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([ 6.62549481e-09, -2.41251873e-10, -1.16393181e-07, -3.76950610e-10,\n",
" -8.99754447e-07, -1.57115954e-09, 2.15157714e-07, -2.90475188e-09,\n",
" 1.40846097e-06, -3.33867645e-09, 2.71269112e-06])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"h - htheis"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "artesia",
"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.11.10"
}
},
"nbformat": 4,
"nbformat_minor": 2
}