Skip to content

Commit 7a4ce97

Browse files
waltsimsclaude
andcommitted
Improve near-unity validation message; skip unused nabla1 computation
- Error message now distinguishes Python vs C++ backend workarounds - nabla1/tau only computed when absorption is actually enabled Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6e1e5ef commit 7a4ce97

2 files changed

Lines changed: 9 additions & 5 deletions

File tree

kwave/solvers/kspace_solver.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -427,9 +427,12 @@ def _setup_physics_operators(self):
427427
self._absorption = lambda div_u: 0 if no_absorption else -2 * alpha_np * self.c0 * self.rho0 * div_u
428428
self._dispersion = lambda rho: 0
429429
else: # Power-law with fractional Laplacian
430-
tau = -2 * alpha_np * self.c0 ** (alpha_power - 1)
431-
nabla1 = self._fractional_laplacian(alpha_power - 2)
432-
self._absorption = (lambda div_u: 0) if no_absorption else (lambda div_u: tau * self._diff(self.rho0 * div_u, nabla1))
430+
if no_absorption:
431+
self._absorption = lambda div_u: 0
432+
else:
433+
tau = -2 * alpha_np * self.c0 ** (alpha_power - 1)
434+
nabla1 = self._fractional_laplacian(alpha_power - 2)
435+
self._absorption = lambda div_u: tau * self._diff(self.rho0 * div_u, nabla1)
433436

434437
if no_dispersion:
435438
self._dispersion = lambda rho: 0

kwave/solvers/validation.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,9 @@ def validate_medium(medium, kgrid):
5252
raise ValueError(
5353
f"medium.alpha_power={power} is too close to 1.0. The dispersion term "
5454
f"contains tan(pi*alpha_power/2), which diverges at alpha_power=1. "
55-
f"Set medium.alpha_mode='no_dispersion' to disable the dispersion term, "
56-
f"or use an alpha_power value further from 1.0."
55+
f"For backend='python': set medium.alpha_mode='no_dispersion' to disable "
56+
f"the dispersion term. For backend='cpp' or to use both absorption and "
57+
f"dispersion, choose an alpha_power value further from 1.0."
5758
)
5859

5960

0 commit comments

Comments
 (0)