You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Proposal and tracking issue to retire the FEM module (Modules/Numerics/FEM / ITKFEM and Modules/Registration/FEM / ITKFEMRegistration) to reduce maintenance burden. FEM was added as a grant-funded ITKv4 research deliverable (NLM A2D2 201000586P / ARRA); the funding ended ~2014, the module is EXCLUDE_FROM_DEFAULT, has no Python wrapping, and has no evidence of downstream use. Follows the staged "remote-module breadcrumb → remove in ITKv7" plan discussed in #6509.
Continues the FEM follow-up from #6509 (the LinearSystemWrapperItpack / dsrc2c.c retirement and the legacy-removal build breakage).
Why remove FEM
Grant-funded insertion, never funded for upkeep. The ITKv4-era rewrite (RobustSolver / physics-based non-rigid registration) was a deliverable of the NLM A2D2 ARRA contract; see provenance below.
No evidence of use. No Discourse thread or GitHub issue shows an application depending on FEM — only "how do I enable it" and "it doesn't compile" reports. Maintainer note (dzenanz, 2022): "FEM module is not compiled by default. And it does not have Python wrapping. All because it is not frequently used."
Recurring maintenance tax. Every FEM issue/PR for 7 years is BUG:/COMP:/STYLE: keeping it compiling; zero feature work.
Phase 1 — remote-module breadcrumb (target: now, before 2026-07-01)
Add Modules/Remote/FEM.remote.cmake pointing at an extracted InsightSoftwareConsortium/ITKFEM repo (move both Modules/Numerics/FEM and Modules/Registration/FEM content out, preserving history).
Emit a LOUD CMake warning when the remote module is enabled: FEM is unmaintained, slated for removal in ITK 7, and users should comment on this issue if they depend on it.
Remove Modules/Numerics/FEM and Modules/Registration/FEM from the ITK tree.
Drop ITKFEM / ITKFEMRegistration from the CI configure module lists (pyproject.toml pixi configure-ci, dashboard scripts).
Note in FEM.remote.cmake that it is unmaintained after 2026-07-01 and exists only to detect unknown users.
Phase 2 — downstream cleanup in ITK
Examples: relocate or remove the FEM-based examples DeformableRegistration1.cxx and DeformableRegistration11.cxx (and their data FiniteElementRegistrationParameters1/2.txt) from Examples/RegistrationITKv4/.
Update the ITK Software Guide (InsightSoftwareConsortium/ITKSoftwareGuide): remove/annotate the FEM framework and FEM-based deformable-registration chapters and the DeformableRegistration1 walkthrough.
Update the Doxygen module group (\ingroup ITKFEM) and any cross-references.
Add an entry to the ITK 6 migration guide documenting the removal and how to obtain FEM as a remote module.
Confirm no remaining in-tree dependents (current: only ITKFEMRegistration depends on ITKFEM; nothing else in the tree depends on either).
Phase 3 — finalize in ITKv7
Remove Modules/Remote/FEM.remote.cmake in ITKv7 (unless a documented user emerges on this issue).
Ensure the legacy-removal (ITK_FUTURE_LEGACY_REMOVE / ITK_LEGACY_REMOVE) build no longer needs FEM-specific fixes once the module is out of tree.
Provenance — how FEM entered ITK
Era 1 — general FEM framework (ITK 1.x, ~2001–2003). Predates the current
git history (which begins at the 2011 ITKv4 modularization). Primary original
author Aljaž Noe (largest contributor): the FE solver framework (Element, Material, Load, Solver, LinearSystemWrapper with VNL and Itpack
backends). The FEM-based deformable-registration layer (DeformableRegistration1)
came from the UPenn/PICSL group (Brian Avants, Tessa Sundaram, Jeffrey Duda).
Era 2 — funded ITKv4 rewrite + RobustSolver (2010–2011). Commit 23f10a989ac "ENH: FEM refactoring as contracted for ITKv4"; new RobustSolver, LoadNoisyLandmark, FEMScatteredDataPointSetToImageFilter. itkFEMRobustSolver.h
carries \author Yixun Liu and \cite clatz2005/\cite liu2009. Domain:
brain-shift correction for image-guided neurosurgery (Chrisochoides group, ODU/Harvard).
From the Frontiers in Neuroinformatics (2014) version:
"This work is funded mainly by the ARRA funds for the ITK-v4 implementation
with grant number: NLM A2D2 201000586P."
Plus NSF CCF-1139864, CCF-1136538, CSI-1136536; the John Simon Guggenheim
Foundation; the Richard T. Cheng Endowment. The NLM A2D2 ("Algorithm 2 Data to
Decision") ARRA contract funded the insertion/hardening; no funding covered
ongoing maintenance.
Evidence of (non-)use
Discourse (links are forum topic IDs, not GitHub issues; all "how do I
enable it" or "it's broken," none show an application depending on FEM): topic 280 (2017, "itk::Fem::Solver update
problem"), topic 339 (2017, "itk FEM
Solver"), topic 404 (2017, "itk::fem
updating displacements"), topic 720 (2018,
"Manual creation of FEMObject"), topic
2505 (2019, "itkFEMRegistrationFilter.h: No
such file or directory"), topic 4937
(2022, "How to call the FEM module in Python?" — abandoned).
GitHub issues (FEM in title, all closed, all "broken"):#4782 (2024, tests
failing), #4399 (2024, VS2019 compile fail), #2789 (2021, does not compile).
GitHub PRs: 100% maintenance (BUG:/COMP:/STYLE:) 2019→2026; no ENH:,
no outside user with a use case.
Structural:EXCLUDE_FROM_DEFAULT, no Python wrapping, ~8k-line f2c Itpack core.
Proposal and tracking issue to retire the FEM module (
Modules/Numerics/FEM/ITKFEMandModules/Registration/FEM/ITKFEMRegistration) to reduce maintenance burden. FEM was added as a grant-funded ITKv4 research deliverable (NLM A2D2 201000586P / ARRA); the funding ended ~2014, the module isEXCLUDE_FROM_DEFAULT, has no Python wrapping, and has no evidence of downstream use. Follows the staged "remote-module breadcrumb → remove in ITKv7" plan discussed in #6509.Continues the FEM follow-up from #6509 (the
LinearSystemWrapperItpack/dsrc2c.cretirement and the legacy-removal build breakage).Why remove FEM
BUG:/COMP:/STYLE:keeping it compiling; zero feature work.dsrc2c.c) flagged in Tracking: ITK_FUTURE_LEGACY_REMOVE / ITK_LEGACY_REMOVE build broken across opt-in (ingested remote) modules #6509.Removal checklist
Phase 1 — remote-module breadcrumb (target: now, before 2026-07-01)
Modules/Remote/FEM.remote.cmakepointing at an extractedInsightSoftwareConsortium/ITKFEMrepo (move bothModules/Numerics/FEMandModules/Registration/FEMcontent out, preserving history).Modules/Numerics/FEMandModules/Registration/FEMfrom the ITK tree.ITKFEM/ITKFEMRegistrationfrom the CI configure module lists (pyproject.tomlpixiconfigure-ci, dashboard scripts).FEM.remote.cmakethat it is unmaintained after 2026-07-01 and exists only to detect unknown users.Phase 2 — downstream cleanup in ITK
DeformableRegistration1.cxxandDeformableRegistration11.cxx(and their dataFiniteElementRegistrationParameters1/2.txt) fromExamples/RegistrationITKv4/.InsightSoftwareConsortium/ITKSoftwareGuide): remove/annotate the FEM framework and FEM-based deformable-registration chapters and the DeformableRegistration1 walkthrough.\ingroup ITKFEM) and any cross-references.ITKFEMRegistrationdepends onITKFEM; nothing else in the tree depends on either).Phase 3 — finalize in ITKv7
Modules/Remote/FEM.remote.cmakein ITKv7 (unless a documented user emerges on this issue).tqlrat/ Itpack remnants tracked in Tracking: ITK_FUTURE_LEGACY_REMOVE / ITK_LEGACY_REMOVE build broken across opt-in (ingested remote) modules #6509 if not already removed.CI / coverage (shared with #6509)
ITK_FUTURE_LEGACY_REMOVE/ITK_LEGACY_REMOVE) build no longer needs FEM-specific fixes once the module is out of tree.Provenance — how FEM entered ITK
Era 1 — general FEM framework (ITK 1.x, ~2001–2003). Predates the current
git history (which begins at the 2011 ITKv4 modularization). Primary original
author Aljaž Noe (largest contributor): the FE solver framework (
Element,Material,Load,Solver,LinearSystemWrapperwith VNL and Itpackbackends). The FEM-based deformable-registration layer (
DeformableRegistration1)came from the UPenn/PICSL group (Brian Avants, Tessa Sundaram, Jeffrey Duda).
Era 2 — funded ITKv4 rewrite + RobustSolver (2010–2011). Commit
23f10a989ac "ENH: FEM refactoring as contracted for ITKv4"; newRobustSolver,LoadNoisyLandmark,FEMScatteredDataPointSetToImageFilter.itkFEMRobustSolver.hcarries
\author Yixun Liuand\cite clatz2005/\cite liu2009. Domain:brain-shift correction for image-guided neurosurgery (Chrisochoides group, ODU/Harvard).
Insight Journal article: An ITK Implementation of Physics-based Non-rigid
Registration Method — https://insight-journal.org/browse/publication/876/
Funding
From the Frontiers in Neuroinformatics (2014) version:
Plus NSF CCF-1139864, CCF-1136538, CSI-1136536; the John Simon Guggenheim
Foundation; the Richard T. Cheng Endowment. The NLM A2D2 ("Algorithm 2 Data to
Decision") ARRA contract funded the insertion/hardening; no funding covered
ongoing maintenance.
Evidence of (non-)use
Discourse (links are forum topic IDs, not GitHub issues; all "how do I
enable it" or "it's broken," none show an application depending on FEM):
topic 280 (2017, "itk::Fem::Solver update
problem"), topic 339 (2017, "itk FEM
Solver"), topic 404 (2017, "itk::fem
updating displacements"), topic 720 (2018,
"Manual creation of FEMObject"), topic
2505 (2019, "itkFEMRegistrationFilter.h: No
such file or directory"), topic 4937
(2022, "How to call the FEM module in Python?" — abandoned).
GitHub issues (FEM in title, all closed, all "broken"): #4782 (2024, tests
failing), #4399 (2024, VS2019 compile fail), #2789 (2021, does not compile).
GitHub PRs: 100% maintenance (
BUG:/COMP:/STYLE:) 2019→2026; noENH:,no outside user with a use case.
Structural:
EXCLUDE_FROM_DEFAULT, no Python wrapping, ~8k-line f2c Itpack core.Sources