Skip to content

Remove allocating finite element tabulate overloads - #1093

Open
garth-wells wants to merge 3 commits into
mainfrom
remove-allocating-tabulate
Open

garth-wells wants to merge 3 commits into
mainfrom
remove-allocating-tabulate

Conversation

@garth-wells

Copy link
Copy Markdown
Member

Remove the two FiniteElement::tabulate overloads that allocate and return a buffer. C++ callers now use tabulate_shape to allocate their output and pass it to the existing output-buffer overloads. Update library callers, C++ tests, and demos accordingly.

Preserve Python's tabulate API by allocating the result in the nanobind wrapper and transferring ownership through the shared NumPy helper. Add regression coverage for values and derivatives, float32/float64, empty point sets, and result lifetime and independence.

This changes the C++ API: callers of the removed overloads must supply output storage.

Validation: Developer builds of the C++ library and Python extension; 10,113 Python tests passed (337 skipped, 23 xfailed); all 22 C++ test cases and all 9 demos passed. Python demos used the Agg backend and writable temporary cache directories. Ruff, gersemi, clang-format, Pyrefly, and git diff --check passed.

Closes #311.

Removing the allocating tabulate overloads breaks DOLFINx main, which
calls one of them. Build the DOLFINx integration job against the branch
that updates the call site, FEniCS/dolfinx#4656.

Revert to main once that pull request has merged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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.

Remove duplicate tabulate functions

1 participant