Skip to content

Gridap 0.20 - #56

Merged
jmartfrut merged 4 commits into
mainfrom
gridap-0.20
Nov 11, 2026
Merged

jmartfrut merged 4 commits into
mainfrom
gridap-0.20

Conversation

@jmartfrut

Copy link
Copy Markdown
Member

Moves the package from Gridap 0.19.9 to the 0.20 series ([compat] Gridap = "0.20"). Gridap 0.19 is no longer supported.

What broke

Only H(div) fields. Gridap 0.20 reworked the pull-back machinery, and the cell basis of a div-conforming (Raviart–Thomas) space is now

lazy_map(linear_combination, M, lazy_map(Broadcasting(Operation(ContraVariantPiolaMap())), φ̂, Jt))

with the sign flips in the change of basis M (a Diagonal of ±1 per cell), instead of PiolaMap(φ̂, Jt, |det Jt|, sign_flip). piola_basis did not recognise it, so every H(div) form went to the Gridap fallback.

What changes

  • src/tables.jl: piola_basis, PiolaTable and cell_signs read the 0.20 layout. Values and gradients follow the same formula as before, so kernels and tests are unchanged. Spaces built with scale_dof (new in 0.20) are rejected with a clear error.
  • Project.toml, README, CHANGELOG, the CompatHelper note and the solver benchmark environment state Gridap 0.20.

Everything else (probes, expression tree, Lagrangian tables, skeleton, Hessians, matrix-free, p-multigrid, states) needed no change.

Tests

Mac, Julia 1.13.0, Gridap 0.20.10, one process per test file:

  • before the fix: 27 of 28 test files green, test_hdiv.jl failing;
  • after the fix: test_hdiv.jl 5849/5849; tables, kernels, matrix-free, errors and fallback 35 795/35 795.

Before merging

The hyperfem CI job cannot resolve its environment while HyperFEM main pins Gridap = "=0.19.9", so the required CI check stays red until HyperFEM moves to Gridap 0.20. Release afterwards as 0.3.0 (breaking dependency change).

Gridap was pinned to =0.19.9 because the engine reads its internal expression tree.
This branch lifts the pin to 0.20 to see what the engine tests say. The HyperFEM job
cannot resolve until HyperFEM also admits Gridap 0.20.
Gridap 0.20 builds the cell basis of a div-conforming space as
linear_combination(M, PiolaMap(φ̂, Jt)) with the sign flips in a Diagonal change of
basis M per cell, instead of PiolaMap(φ̂, Jt, |det Jt|, sign_flip). piola_basis,
PiolaTable and cell_signs read both layouts (0.19 and 0.20). Spaces with scaled dofs
(scale_dof) are rejected with a clear error.
…angelog, notes

piola_basis and cell_signs read only the Gridap 0.20 layout. README, CHANGELOG, the
CompatHelper note and the solver benchmark environment state Gridap 0.20.
@jmartfrut
jmartfrut merged commit 76c412b into main Nov 11, 2026
13 of 15 checks passed
@jmartfrut
jmartfrut deleted the gridap-0.20 branch November 11, 2026 14:41
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.

1 participant