Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
2c66240
Add loading efficiency to plot
MattBrst Jul 15, 2026
1552f51
change symbol to beta and add for leaky layers
MattBrst Sep 2, 2026
56d59c7
Fix beta (loading efficiency) not showing for confined-top leaky layers
MattBrst Sep 2, 2026
37b280c
Revert "Fix beta (loading efficiency) not showing for confined-top le…
MattBrst Sep 2, 2026
3a25937
Show beta (loading efficiency) for aquifers in ml.plots.xsection()
MattBrst Sep 2, 2026
b41ee9a
Prepare plots.py xsection for coming leffll (leaky layer beta) support
MattBrst Sep 2, 2026
c3dd636
Fix crash in Xsection.plot when leffll is not available
MattBrst Sep 2, 2026
70e7c50
Delete .vscode/settings.json
MattBrst Sep 2, 2026
fa012bf
Fix IndexError: leffaq not broadcast for confined-top aquifers
MattBrst Sep 2, 2026
212f8fd
Merge branch 'add-loading-efficiency-plot' of https://github.com/Matt…
MattBrst Sep 2, 2026
a1b8769
Merge remote-tracking branch 'origin/dev' into add-loading-efficiency…
dbrakenhoff Sep 8, 2026
54b4c0b
final touches leffaq and leffll
dbrakenhoff Sep 8, 2026
ea07b70
check if aq has leffaq
dbrakenhoff Sep 8, 2026
294c31a
correct check for confined models
dbrakenhoff Sep 8, 2026
c618902
leffaq and leffll in confined case don't do anything, set to 0.0 alwa…
dbrakenhoff Sep 8, 2026
475e8ed
remove newline
dbrakenhoff Sep 8, 2026
0b572ec
final fix?
dbrakenhoff Sep 8, 2026
c7d67b4
ok now, mixed up plot vs inhom1d files before
dbrakenhoff Sep 8, 2026
a10dbcd
always set leffaq/leffll to 0.0 for confined case
dbrakenhoff Sep 8, 2026
d7d5261
ok leffll should be naq as well
dbrakenhoff Sep 8, 2026
88c3cdd
add new loading eff notebook to docs
mbakker7 Sep 8, 2026
5e2446f
update loading eff doc string for xsection models
mbakker7 Sep 8, 2026
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
4 changes: 3 additions & 1 deletion docs/transient/05benchmarks/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ timflow solutions or understand the numerical accuracy of specific features.
- :doc:`synthetic_test_calibrate`
- :doc:`synthetic_calibrate_2aquifers`
- :doc:`river1d`
- :doc:`river1d_2layer_mf6.ipynb`

.. toctree::
:maxdepth: 3
Expand All @@ -34,4 +35,5 @@ timflow solutions or understand the numerical accuracy of specific features.
validation_tidal_wave_with_Bruggeman
synthetic_test_calibrate
synthetic_calibrate_2aquifers
river1d
river1d
river1d_2layer_mf6.ipynb
10 changes: 9 additions & 1 deletion timflow/plots/plots.py
Original file line number Diff line number Diff line change
Expand Up @@ -652,7 +652,11 @@ def _xsection_leaky_layer_params(
# Transient: resistance c and storage Sll
ssfmt = ".2e"
cstr = f"$c$ = {self._ml.aq.c[lli]:{fmt}}"
sstr = f"$S_s$ = {self._ml.aq.Sll[lli]:{ssfmt}}"
Slli = self._ml.aq.Sll[lli]
if Slli > 1e-20:
sstr = f"$S_s$ = {Slli:{ssfmt}}"
else:
sstr = "$S_s$ = 0.0"
if units is not None:
c_unitstr = f" {units['c']}" if "c" in units else ""
# Prefer Sll unit; fall back to Saq for compatibility.
Expand All @@ -661,6 +665,8 @@ def _xsection_leaky_layer_params(
c_unitstr = ""
ss_unitstr = ""
paramtxt = cstr + c_unitstr + sep + sstr + ss_unitstr
if hasattr(self._ml.aq, "leffll") and self._ml.aq.leffll[lli] != 0:
paramtxt += f"{sep}$\\beta$ = {self._ml.aq.leffll[lli]:{fmt}}"

ax.text(
r0 + 0.75 * r if labels else r0 + 0.5 * r,
Expand Down Expand Up @@ -731,6 +737,8 @@ def _xsection_aquifer_params(
paramtxt += f"{sep}$S$ = {self._ml.aq.Saq[aqi]:{fmt}}"
else:
paramtxt += f"{sep}$S_s$ = {self._ml.aq.Saq[aqi]:{ssfmt}}" + ss_unitstr
if hasattr(self._ml.aq, "leffaq") and self._ml.aq.leffaq[aqi] != 0:
paramtxt += f"{sep}$\\beta$ = {self._ml.aq.leffaq[aqi]:{fmt}}"

ax.text(
r0 + 0.75 * r if labels else r0 + 0.5 * r,
Expand Down
2 changes: 2 additions & 0 deletions timflow/transient/aquifer_parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ def param_maq(
Sll = Sll * np.ones(naq - 1)
if len(porll) == 1:
porll = porll * np.ones(naq - 1)
leffaq = np.zeros(naq) # always 0.0, regardless of user input
leffll = np.zeros(naq) # always 0.0, regardless of user input
assert len(kaq) == naq, "Error: Length of kaq needs to be " + str(naq)
assert len(Saq) == naq, "Error: Length of Saq needs to be " + str(naq)
assert len(poraq) == naq, "Error: Length of poraq needs to be " + str(naq)
Expand Down
18 changes: 16 additions & 2 deletions timflow/transient/inhom1d.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ class Xsection(AquiferData):
Specific storage of the leaky layers.
leffaq : array
loading efficiency of the aquifer
only used when topboundary='semi' and hstar varies with time
leffll : array
loading efficiency of the leaky layer
only used when topboundary='semi' and hstar varies with time
poraq : array
Porosities of the aquifers.
porll : array
Expand Down Expand Up @@ -338,13 +340,19 @@ def plot(
)
if params:
cstr = f"$c$ = {self.c[lli]:{fmt}}"
sstr = f"$S_s$ = {self.Sll[lli]:{ssfmt}}"
Slli = self.Sll[lli]
if Slli > 1e-20:
sstr = f"$S_s$ = {Slli:{ssfmt}}"
else:
sstr = "$S_s$ = 0.0"
cstr_with_unit = cstr + c_unitstr
sstr_with_unit = sstr + ss_unitstr
if sep == "\n":
paramtxt = cstr_with_unit + sep + sstr_with_unit
else:
paramtxt = cstr_with_unit + sep + sstr_with_unit
if self.leffll[lli] != 0.0:
paramtxt += f"{sep}$\\beta$ = {self.leffll[lli]:{fmt}}"
ax.text(
r0 + 0.75 * r if labels else r0 + 0.5 * r,
np.mean(self.z[i : i + 2]),
Expand Down Expand Up @@ -380,6 +388,8 @@ def plot(
paramtxt = khstr + kh_unitstr + "\n" + sstr + ss_unitstr
else:
paramtxt = khstr + kh_unitstr + sep + sstr + ss_unitstr
if self.leffaq[aqi] != 0.0:
paramtxt += f"{sep}$\\beta$ = {self.leffaq[aqi]:{fmt}}"
ax.text(
r0 + 0.75 * r if labels else r0 + 0.5 * r,
np.mean(self.z[i : i + 2]),
Expand Down Expand Up @@ -429,8 +439,10 @@ class XsectionMaq(Xsection):
Specific storage of the leaky layers.
leffaq : array
loading efficiency of the aquifer
only used when topboundary='semi' and hstar varies with time
leffll : array
loading efficiency of the leaky layer
only used when topboundary='semi' and hstar varies with time
poraq : array
Porosities of the aquifers.
porll : array
Expand Down Expand Up @@ -531,9 +543,11 @@ class Xsection3D(Xsection):
Ratio of vertical hydraulic conductivity to horizontal hydraulic
conductivity.
leffaq : array
Loading efficiency
loading efficiency of the aquifer
only used when topboundary='semi' and hstar varies with time
leffll : array
loading efficiency of the leaky layer
only used when topboundary='semi' and hstar varies with time
poraq : array
Porosities of the aquifers.
topboundary : string, 'confined', 'phreatic', or 'semi' (default is 'conf')
Expand Down