Skip to content

Commit f9283bd

Browse files
authored
example with variable entry resistance (#83)
* example with variable entry resistance required one fix in wellborestorage equation * ruff * added units to parameters of example * ruff
1 parent b0da425 commit f9283bd

File tree

3 files changed

+150
-11
lines changed

3 files changed

+150
-11
lines changed

docs/03examples/wells_in_different_systems.ipynb

+148
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,154 @@
237237
"plt.title(\"note that heads are not computed at the same times\")\n",
238238
"plt.grid()"
239239
]
240+
},
241+
{
242+
"cell_type": "markdown",
243+
"metadata": {},
244+
"source": [
245+
"### Well with entry resistance"
246+
]
247+
},
248+
{
249+
"cell_type": "code",
250+
"execution_count": 10,
251+
"metadata": {},
252+
"outputs": [
253+
{
254+
"name": "stdout",
255+
"output_type": "stream",
256+
"text": [
257+
"self.neq 3\n",
258+
"solution complete\n"
259+
]
260+
}
261+
],
262+
"source": [
263+
"k = 25 # m/d\n",
264+
"H = 20 # m\n",
265+
"Ss = 1e-4 / H # m^(-1)\n",
266+
"rw = 0.3 # m\n",
267+
"res = 0.1 # d\n",
268+
"Q = 500 # m^3/d\n",
269+
"ml = ttim.Model3D(kaq=k, z=np.linspace(H, 0, 6), Saq=Ss, tmin=0.001, tmax=10)\n",
270+
"w = ttim.Well(ml, tsandQ=[(0, Q)], rw=rw, res=res, layers=[0, 1, 2])\n",
271+
"ml.solve()"
272+
]
273+
},
274+
{
275+
"cell_type": "code",
276+
"execution_count": 11,
277+
"metadata": {},
278+
"outputs": [
279+
{
280+
"name": "stdout",
281+
"output_type": "stream",
282+
"text": [
283+
"head inside well at t=2: [-4.18893381 -4.18893378 -4.18893388]\n",
284+
"head just outside well at t=2 [-2.01308246 -1.99455564 -1.92770745]\n"
285+
]
286+
}
287+
],
288+
"source": [
289+
"hin = w.headinside(t=2)[:, 0]\n",
290+
"hout = ml.head(rw, 0, t=2, layers=[0, 1, 2])[:, 0]\n",
291+
"print(\"head inside well at t=2: \", hin)\n",
292+
"print(\"head just outside well at t=2\", hout)"
293+
]
294+
},
295+
{
296+
"cell_type": "code",
297+
"execution_count": 12,
298+
"metadata": {},
299+
"outputs": [
300+
{
301+
"name": "stdout",
302+
"output_type": "stream",
303+
"text": [
304+
"discharge of screens at t=2 [164.05532741 165.45221426 170.49245612]\n",
305+
"discharge from bc at t=2: [164.05532741 165.45221426 170.49245612]\n"
306+
]
307+
}
308+
],
309+
"source": [
310+
"print(\"discharge of screens at t=2\", w.discharge(2)[:, 0])\n",
311+
"Qcheck = 2 * np.pi * rw * ml.aq.Haq[:3] * (hout - hin) / res\n",
312+
"print(\"discharge from bc at t=2: \", Qcheck)"
313+
]
314+
},
315+
{
316+
"cell_type": "markdown",
317+
"metadata": {},
318+
"source": [
319+
"### Well with different entry resistance per layer"
320+
]
321+
},
322+
{
323+
"cell_type": "code",
324+
"execution_count": 13,
325+
"metadata": {},
326+
"outputs": [
327+
{
328+
"name": "stdout",
329+
"output_type": "stream",
330+
"text": [
331+
"self.neq 3\n",
332+
"solution complete\n"
333+
]
334+
}
335+
],
336+
"source": [
337+
"k = 25 # m/d\n",
338+
"H = 20 # m\n",
339+
"Ss = 1e-4 / H # m^(-1)\n",
340+
"rw = 0.3 # m\n",
341+
"res = [0.05, 0.1, 0.15] # d\n",
342+
"Q = 500 # m^3/d\n",
343+
"ml = ttim.Model3D(kaq=k, z=np.linspace(H, 0, 6), Saq=Ss, tmin=0.001, tmax=10)\n",
344+
"w = ttim.Well(ml, tsandQ=[(0, Q)], rw=rw, res=res, layers=[0, 1, 2])\n",
345+
"ml.solve()"
346+
]
347+
},
348+
{
349+
"cell_type": "code",
350+
"execution_count": 14,
351+
"metadata": {},
352+
"outputs": [
353+
{
354+
"name": "stdout",
355+
"output_type": "stream",
356+
"text": [
357+
"head inside well at t=2: [-3.95216559 -3.9521661 -3.95216657]\n",
358+
"head just outside well at t=2 [-2.42278217 -1.93402805 -1.62034002]\n"
359+
]
360+
}
361+
],
362+
"source": [
363+
"hin = w.headinside(t=2)[:, 0]\n",
364+
"hout = ml.head(rw, 0, t=2, layers=[0, 1, 2])[:, 0]\n",
365+
"print(\"head inside well at t=2: \", hin)\n",
366+
"print(\"head just outside well at t=2\", hout)"
367+
]
368+
},
369+
{
370+
"cell_type": "code",
371+
"execution_count": 15,
372+
"metadata": {},
373+
"outputs": [
374+
{
375+
"name": "stdout",
376+
"output_type": "stream",
377+
"text": [
378+
"discharge of screens at t=2 [230.62558655 152.1640244 117.21038657]\n",
379+
"discharge from bc at t=2: [230.62558655 152.1640244 117.21038657]\n"
380+
]
381+
}
382+
],
383+
"source": [
384+
"print(\"discharge of screens at t=2\", w.discharge(2)[:, 0])\n",
385+
"Qcheck = 2 * np.pi * rw * ml.aq.Haq[:3] * (hout - hin) / res\n",
386+
"print(\"discharge from bc at t=2: \", Qcheck)"
387+
]
240388
}
241389
],
242390
"metadata": {

ttim/equation.py

+1-10
Original file line numberDiff line numberDiff line change
@@ -74,16 +74,7 @@ def equation(self):
7474
np.pi * self.rc**2 * self.model.p * head[0, :]
7575
)
7676
if e == self:
77-
disterm = (
78-
self.dischargeinflayers
79-
* self.res
80-
/ (
81-
2
82-
* np.pi
83-
* self.rw
84-
* self.aq.Haq[self.layers][:, np.newaxis]
85-
)
86-
)
77+
disterm = self.dischargeinflayers * self.resfach[:, np.newaxis]
8778
if self.nunknowns > 1: # Multiple layers
8879
for i in range(self.nunknowns - 1):
8980
mat[i, ieq + i, :] -= disterm[i]

ttim/size_of_arrays.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ self.potinf = self.nparam, aq.naq, self.model.npval
55
self.potential = np.sum(self.parameters[:, :, np.newaxis, :] * self.potinf(x, y, aq), 1)
66
ngvbc, naq, npval
77

8-
self.lab2.shape = (self.naq, self.model.nint, self.model.npint)
8+
self.lab2.shape = (self.naq, self.model.nint, self.model.npint)

0 commit comments

Comments
 (0)