Ferrite-FEM / Ferrite-FEM/FerriteInterpolations.jl

Upstream (Ferrite): general per-cell DOF transformations (Kirby)

Open
#2 2 comments 0 reactions 0 assignees View on GitHub
upstream
Dominant language
Julia
Stars
7
Forks
0
PR merge metrics
No merged PRs in 30d

Description

Several elements have DOFs whose physical meaning depends on the cell geometry (derivative DOFs, normal-derivative DOFs, tangential moments under the contravariant Piola map, ...). The physical DOFs relate to the reference DOFs by a cell-dependent matrix M(J), and since the DOFs are shared between neighboring cells the transformation must be applied consistently across the mesh. Ferrite's orientation machinery (`adjust_dofs_during_distribution` + `get_direction`'s ±1) cannot express this; upstream support for general DOF transformations is needed (R. Kirby, *A general approach to transforming finite elements*, SMAI-JCM 2018).

Notes:
- For elements whose DOFs are all cell-local this is already expressible in this package (see `TaylorMapping` in `src/taylor.jl`) — the blocker is cross-cell coordination.
- A lighter special case would unblock scalar TNT alone: sign-aware edge-DOF distribution for scalar elements (edge moments with odd weights flip sign under edge reversal).
- Also limits Radau to the interval: its asymmetric edge points on quads/hexes need orientation-dependent transformations.

Upstream WIP: https://github.com/Ferrite-FEM/Ferrite.jl/pull/1391 (restructured 2026-08: now separates the mapping F from the DOF transformation M along the lines of the design notes below — a `dof_transformation(ip)` trait plus an `apply_dof_transformation!` stage in `reinit!` after `apply_mapping!`, applied uniformly to values/gradients/hessians). Ships only diagonal M (cubic Hermite on `RefLine`, affine 1D, per-dof Jacobian scaling, orientation via sign(J)), but the trait is openly dispatched like `mapping_type`, so block-M elements (2D/3D Hermite, Morley, Argyris vertex blocks) may become implementable in this package once it lands — the same pattern the Regge experiment proved for the mapping side (#4). Still missing: entity-orientation conventions beyond sign(J) (normal-derivative edge dofs), dense/block M implementations, and consolidating the Piola ±1 signs (`get_direction`) into the transformation stage (acknowledged in the PR as future work).

🤖 Created with [Claude Code](https://claude.com/claude-code)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.