Ferrite-FEM / Ferrite-FEM/FerriteInterpolations.jl
Upstream (Ferrite): general per-cell DOF transformations (Kirby)
- 主要语言
- Julia
- 星标
- 7
- 派生
- 0
- PR 合并指标
- 30 天内没有已合并 PR
描述
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)
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。