Skip to content

Add autodifferentiable DelaunayNN mesh - #441

Merged
Jammy2211 merged 1 commit into
mainfrom
prototype/jax-sibson
Aug 9, 2026
Merged

Add autodifferentiable DelaunayNN mesh#441
Jammy2211 merged 1 commit into
mainfrom
prototype/jax-sibson

Conversation

@Jammy2211

Copy link
Copy Markdown
Collaborator

Summary

  • add a public DelaunayNN mesh backed by Sibson/Watson natural-neighbor interpolation
  • keep Qhull connectivity behind a stopped JAX callback while performing floating-point geometry in pure JAX
  • support mapper construction, split regularization, boundary queries, overflow signalling, and package exports
  • add focused numerical, autodiff, flip-continuity, historical C-parity, and reconstruction tests

Why

Barycentric Delaunay interpolation is local and fast, but its value and gradient can jump when the triangulation flips as lens mass-model parameters move. Natural-neighbor weights retain locality while remaining numerically stable across those flips.

The fixed table caps default to 32 cavity triangles and 32 neighbors. A 101-mass-model workspace audit observed maxima of 25 cavity triangles and 27 neighbors; caps 16 and 24 overflowed.

Validation

  • focused DelaunayNN/Sibson tests: 8 passed
  • broader focused inversion coverage: 43 passed
  • full PyAutoArray suite: 948 passed, 51 skipped
  • three unrelated existing PyNUFFT failures remain because that dependency calls removed scipy.linalg.pinv2
  • Ruff and git diff --check pass

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants