Skip to content

Tabulate high-order expansion derivatives by recurrence - #256

Merged
pbrubeck merged 7 commits into
mainfrom
pbrubeck/deriv-recurrence
Jul 21, 2026
Merged

Tabulate high-order expansion derivatives by recurrence#256
pbrubeck merged 7 commits into
mainfrom
pbrubeck/deriv-recurrence

Conversation

@pbrubeck

@pbrubeck pbrubeck commented Jul 10, 2026

Copy link
Copy Markdown

Fixes firedrakeproject/firedrake#4152

Summary

  • Tabulate arbitrary-order Dubiner expansion derivatives by applying Leibniz to the recurrence factors.
  • Default simplex expansion tabulation to the recurrence path instead of dense differentiation matrices.
  • Add order-4 triangle/tetrahedron coverage for orthonormal and bubble variants.

Tests

  • python -m py_compile FIAT/expansions.py test/FIAT/unit/test_polynomial.py
  • python -m pytest test/FIAT/unit/test_polynomial.py test/FIAT/unit/test_hierarchical.py::test_hierarchical_sparsity test/FIAT/regression/test_regression.py::test_expansions_jet -q

AI tool used: Codex.

@pbrubeck

Copy link
Copy Markdown
Author

Updated verification after the HCT degree-14 follow-up.

What changed:

  • Stabilized high-order Ck vertex supersmoothness constraints by imposing each constraint block on the current nullspace, instead of burying high-order vertex constraints in one large SVD.
  • Added high-order HCT regression coverage for degrees 13 and 14.

Verification:

  • python -m py_compile FIAT/expansions.py FIAT/macro.py test/FIAT/unit/test_hct.py test/FIAT/unit/test_polynomial.py
  • python -m pytest test/FIAT/unit/test_hct.py test/FIAT/unit/test_macro.py -q
  • python -m pytest test/FIAT/unit/test_polynomial.py::test_high_order_expansion_derivatives test/FIAT/regression/test_regression.py::test_expansions_jet -q
  • Firedrake exact issue command for HCT degree 13: passed, V.dim() = 803
  • Firedrake HCT degree 14: passed, V.dim() = 923
  • Firedrake HCT degree sweep 13..17: passed with dimensions 803, 923, 1051, 1187, 1331

AI tool used: Codex.

Comment thread test/FIAT/unit/test_hct.py Outdated
Comment thread FIAT/expansions.py Outdated
Comment thread FIAT/expansions.py Outdated

@rckirby rckirby left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After we resolve the comments, I think this makes sense to do. The derivative matrices are kind of clunky and tend to go unstable at high order.

Comment thread FIAT/expansions.py Outdated
Comment thread FIAT/expansions.py Outdated
Comment thread FIAT/expansions.py Outdated
Comment thread FIAT/expansions.py
Comment thread test/FIAT/unit/test_hct.py Outdated
@pbrubeck
pbrubeck force-pushed the pbrubeck/deriv-recurrence branch 5 times, most recently from 71d2aa2 to 090475b Compare July 20, 2026 11:04
@pbrubeck
pbrubeck force-pushed the pbrubeck/deriv-recurrence branch from 090475b to 7542778 Compare July 20, 2026 11:28
@pbrubeck
pbrubeck force-pushed the pbrubeck/deriv-recurrence branch from 100e11f to ea4d7a0 Compare July 20, 2026 14:43
@pbrubeck
pbrubeck requested a review from rckirby July 20, 2026 16:42

@rckirby rckirby left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I think this makes a lot of sense.

@pbrubeck
pbrubeck merged commit f16c2df into main Jul 21, 2026
9 checks passed
@pbrubeck
pbrubeck deleted the pbrubeck/deriv-recurrence branch July 21, 2026 07:59
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.

BUG: HCT doesn't work at very high order

2 participants