Skip to content

Tabulate high-order expansion derivatives by recurrence#256

Open
pbrubeck wants to merge 2 commits into
mainfrom
pbrubeck/deriv-recurrence
Open

Tabulate high-order expansion derivatives by recurrence#256
pbrubeck wants to merge 2 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.

return pts


@pytest.mark.parametrize("degree, space_dimension", [(13, 127), (14, 144)])

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

These are rather expensive tests, maybe we don't want them

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

1 participant