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

Add 3D and Maq versions of BuildingPit and LeakyBuildingPit #97

Merged
merged 6 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
18 changes: 14 additions & 4 deletions docs/01howto/elements/inhoms.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
Inhomogeneities
===============

Polygonal inhomogeneities can be added in the following ways:
The following polygonal inhomogeneities are available in TimML. Note that there are
inhomogeneities for both multi-aquifer style models (:class:`~timml.model.ModelMaq`)
and single aquifer models (with multiple layers, :class:`~timml.model.Model3D`).

1. :class:`~timml.inhomogeneity.PolygonInhomMaq`, which is an inhomogeneity consisting
of a regular sequence of aquifer - leaky layer - aquifer - leaky layer, aquifer, etc.
Expand All @@ -12,10 +14,18 @@ Polygonal inhomogeneities can be added in the following ways:
the resistance from the middle of one layer to the middle of the next layer. Vertical
anisotropy can be specified. The system may be bounded on top by a leaky layer.

3. :class:`~timml.inhomogeneity.BuildingPit`, which is an inhomogeneity similar to
3. :class:`~timml.inhomogeneity.BuildingPitMaq`, which is an inhomogeneity similar to
`PolygonInhomMaq` in which impermeable walls can be placed along the edges of the
imhomogeneity in specified layers.

4. :class:`~timml.inhomogeneity.LeakyBuildingPit`, which is an inhomogeneity like
`BuildingPit` but with leaky walls instead of impermeable walls. The resistance of the
4. :class:`~timml.inhomogeneity.BuildingPit3D`, which is an inhomogeneity similar to
`PolygonInhom3D` in which impermeable walls can be placed along the edges of the
imhomogeneity in specified layers.

5. :class:`~timml.inhomogeneity.LeakyBuildingPitMaq`, which is an inhomogeneity like
`BuildingPitMaq` but with leaky walls instead of impermeable walls. The resistance of the
leaky walls can be specified.

6. :class:`~timml.inhomogeneity.LeakyBuildingPit3D`, which is an inhomogeneity like
`BuildingPit3D` but with leaky walls instead of impermeable walls. The resistance of the
leaky walls can be specified.
22 changes: 11 additions & 11 deletions notebooks/BuildingPit.ipynb

Large diffs are not rendered by default.

113 changes: 84 additions & 29 deletions notebooks/circular_buildingpit.ipynb

Large diffs are not rendered by default.

6 changes: 4 additions & 2 deletions timml/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
from .circareasink import CircAreaSink
from .constant import Constant, ConstantStar
from .inhomogeneity import (
BuildingPit,
LeakyBuildingPit,
BuildingPit3D,
BuildingPitMaq,
LeakyBuildingPit3D,
LeakyBuildingPitMaq,
PolygonInhom3D,
PolygonInhomMaq,
)
Expand Down
10 changes: 5 additions & 5 deletions timml/equation.py
Original file line number Diff line number Diff line change
Expand Up @@ -523,9 +523,9 @@ def equation(self):
/ self.aqout.Tcol[self.layers]
)

mat[
istart : istart + self.nlayers, ieq : ieq + e.nunknowns
] = flux - self.resfac * (headin - headout)
mat[istart : istart + self.nlayers, ieq : ieq + e.nunknowns] = (
flux - self.resfac * (headin - headout)
)
ieq += e.nunknowns
else:
flux = self.intflux(
Expand Down Expand Up @@ -562,7 +562,7 @@ def equation(self):
/ self.aqout.T[self.layers]
)

rhs[istart : istart + self.nlayers] += -flux + self.resfac * (
headin - headout
rhs[istart : istart + self.nlayers] += (
-flux + self.resfac.squeeze() * (headin - headout)
)
return mat, rhs
Loading