Check that equivalent cells compile a form the same way - #5375
Merged
Conversation
pbrubeck
force-pushed
the
pbrubeck/tp-embedded-superdegree
branch
2 times, most recently
from
August 24, 2026 09:22
101ea81 to
713e88b
Compare
pbrubeck
force-pushed
the
pbrubeck/loopy-main
branch
from
August 24, 2026 09:35
a56d0cd to
5c03143
Compare
pbrubeck
force-pushed
the
pbrubeck/tp-embedded-superdegree
branch
2 times, most recently
from
August 24, 2026 09:36
483b983 to
5237ffb
Compare
pbrubeck
force-pushed
the
pbrubeck/tp-embedded-superdegree
branch
2 times, most recently
from
August 25, 2026 13:13
221a1d4 to
bd8034c
Compare
Imperial have culled a bunch of old accounts.
The latest release breaks loopy. --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
A hexahedron and a quadrilateral times an interval hold the same space, so the same form must reach the same kernel on both. Firedrake issue 5223 left them apart: the quadrature degree UFL estimates comes from the element's embedded superdegree, which a tensor product element summed over its factors instead of taking per direction, so every cell built as a tensor product was integrated at too high a degree. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
pbrubeck
force-pushed
the
pbrubeck/tp-embedded-superdegree
branch
from
August 25, 2026 13:13
bd8034c to
7b0046a
Compare
connorjward
approved these changes
Aug 25, 2026
pbrubeck
added a commit
that referenced
this pull request
Aug 26, 2026
--------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the discrepancy left over from #5223. A hexahedron and a quadrilateral times an interval hold the same space, but the same form did not reach the same kernel on the two cells:
UFL estimates a quadrature degree from the element's embedded superdegree. A tensor product element summed that over its factors, so
Q3 x P3reported 6 where the hexahedralQ3reported 3, and every cell built as a tensor product was integrated at too high a degree. The overshoot compounds with nesting:interval x interval x intervalcosts 8.5x the hexahedral flop count at degree 3, against 3.9x forquadrilateral x interval.test_equivalent_cellscompiles the Helmholtz form and its action on each pair of equivalent cells and asserts the flop counts agree. All six parametrisations fail onmainand pass with firedrakeproject/fiat#287.The fix itself is in FIAT (firedrakeproject/fiat#287, branch
pbrubeck/tp-embedded-superdegree) and in UFL (FEniCS/ufl#506, merged), which stops reducing the estimated degree on cells that are not simplices.Stacked on #5377, which is needed for the test suite to run at all.
DROP BEFORE MERGE
The second commit installs the FIAT branch over the pinned
mainafter CI has installed everything else. Drop it once firedrakeproject/fiat#287 merges.AI was used in preparing this contribution (Claude Code).
🤖 Generated with Claude Code