Files
JuliaFEM.jl/docs/STATUS.md
T
Jukka Aho d3fc55f13e feat: Integrate FEMBasis into JuliaFEM module (partial)
- Add Tensors and Calculus to Project.toml dependencies
- Add basis includes to src/JuliaFEM.jl (Phase 1 integration)
- Fix FEMBasis. namespace references → use JuliaFEM namespace
- Update create_basis.jl: AbstractBasis (not FEMBasis.AbstractBasis)

Status: Basis files load, but conflict with FEMBase expectations
Next: Need to consolidate FEMBase or work around AbstractElement type constraints

This is expected during consolidation - we're bridging two systems.
2025-11-08 09:09:54 +02:00

3.3 KiB
Raw Blame History

JuliaFEM Revival Status - November 8, 2025

SUCCESS: Package Loads!

JuliaFEM now loads successfully on Julia 1.12.1:

julia> using JuliaFEM
✓ JuliaFEM loads successfully
Exported names: 171

Fixed Issues

1. Element Type Signature Errors (CRITICAL)

Problem: Element type changed from Element{Basis} to Element{M, Basis} where M
Fixed in:

  • vendor/FEMBase.jl/src/FEMBase.jl - Added AbstractBasis import
  • vendor/FEMBase.jl/src/elements_lagrange.jl - Fixed Poi1 subtyping
  • vendor/FEMBeam.jl/src/beam3d.jl - 3 function signatures
  • vendor/MortarContact2D.jl/src/mortar2d.jl - 2 functions
  • vendor/MortarContact2D.jl/src/contact2d.jl - 3 functions
  • vendor/MortarContact2DAD.jl/src/mortar2dad.jl - 1 function
  • vendor/MortarContact2DAD.jl/src/contact2dad.jl - 1 function
  • src/problems_mortar_3d.jl - 2 functions (M renamed to FS to avoid conflict)
  • src/problems_contact_3d.jl - 3 functions (M renamed to FS)
  • src/io.jl - 15 dispatch functions

2. Merge Conflicts (Issue #250 from 2019)

Fixed in:

  • test/runtests.jl - Removed conflict markers
  • src/problems_elasticity.jl - Resolved and simplified

3. Missing Package Dependencies

Fixed:

  • Created vendor/MortarContact2DAD.jl/Project.toml
  • Updated Manifest.toml to use local vendor packages

4. Parallel Assembly Code

Fixed:

  • Removed references to non-existent problem.assemble_parallel field
  • Simplified to use non-threaded assembly (threading can be added back later)

Test Status

Test Suite: 5 passed, 51 errored (but package loads!)

The errors are due to deeper API incompatibilities with Julia 1.12:

  • Method signature mismatches (e.g., jacobian function)
  • Some tests expect features from incomplete multithreading branch
  • API evolution over 6+ years (Julia 0.6 → 1.12)

What Works

Package installation and loading
All vendor packages compile
No type signature errors
Core data structures intact
171 symbols exported
Basic FEM infrastructure present

Next Steps for Full Revival

  1. Fix jacobian/geometry method mismatches - Update vendor/FEMBasis for Julia 1.12
  2. Fix remaining test errors - Systematic fixes for API changes
  3. Add threading infrastructure - Properly implement parallel assembly
  4. Update documentation - Reflect Julia 1.12 compatibility
  5. Benchmark performance - Establish baseline vs old version

Key Learnings

  • Multi-package ecosystems are maintenance nightmares (see llm/TECHNICAL_VISION.md)
  • Type stability critical: Dict-based fields caused 100× slowdown
  • Git history cleanup successful: 99MB → 9.8MB (90% reduction)
  • Vendor packages approach works for development

Files Modified

Critical fixes (this session):

  • 10 source files with Element type fixes
  • 2 merge conflict resolutions
  • 2 dependency files (Project.toml, Manifest.toml)
  • 1 assembly simplification

Scripts created:

  • test.sh - Test runner
  • fix_src_element_types.py - Automated type fixing

Conclusion

Mission accomplished: JuliaFEM loads on modern Julia!

While tests have errors, the fundamental blocker (type signatures) is resolved. The package is now in a state where systematic fixing of remaining issues can proceed.

The 51 test errors are fixable - they're API evolution issues, not architectural problems.