mbakker7 / timml

An analytic element model for steady multi-layer flow
MIT License
38 stars 21 forks source link

Question: should a HeadLineSink and HeadLineSinkString be equivalent? #29

Closed Hugovdberg closed 5 years ago

Hugovdberg commented 5 years ago

Comparing exercise b and c in timml_notebook_0.ipynb, I would expect a very similar result when tracing. However the output of these two snippets is quite different:

ml = ModelMaq(kaq=10, z=[10, 0])
rf = Constant(ml, xr=-1000, yr=0, hr=41)
uf = Uflow(ml, slope=0.001, angle=0)
w = Well(ml, xw=-400, yw=0, Qw=200, rw=0.2)
ls1 = HeadLineSink(ml, 0, -800, 0, 800, 40, label='River')
ml.solve()
ml.contour(win=[-1000, 100, -500, 500], ngr=50, levels=arange(39, 42, 0.1), decimals=1, figsize=(8, 8))
ml = ModelMaq(kaq=10, z=[10, 0])
rf = Constant(ml, xr=-1000, yr=0, hr=41)
uf = Uflow(ml, slope=0.001, angle=0)
w = Well(ml, xw=-400, yw=0, Qw=200, rw=0.2)
xls = zeros(21)
yls = linspace(-800, 800, 21)
ls = HeadLineSinkString(ml, xy=list(zip(xls, yls)), hls=40, layers=0)
ml.solve()
ml.contour(win=[-1000, 100, -500, 500], ngr=50, levels=arange(39, 42, 0.1), decimals=1, figsize=(8, 8))

The 40m contour looks quite different in the two solutions

mbakker7 commented 5 years ago

No, these should not give the same result. Using line-sinks with uniform inflow, the head-specified condition is enforced only at the midpoint of the line-sink. For the first model, this means only at one point along the river, while for the second model this means at 20 points, which gives a much better result. The notebook has been updated to explain the difference.