mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-09-12 14:23:20 +00:00
a8495bdc4a
Explains why JuliaFEM uses nodal assembly instead of element assembly: Five major advantages: 1. No atomic operations on GPU (each node writes to own DOFs) 2. Contact mechanics is natural (forces at nodes, not elements) 3. Clean domain decomposition (explicit node ownership for MPI) 4. Better cache locality (sequential node processing) 5. Adaptive refinement easier (local node operations) Key data structure: - NodeSet contains nodes + elements + node_to_elements connectivity - Inverse connectivity enables gathering from connected elements - Fields accessed via node_set.fields (type-stable) Algorithm: - Loop over nodes (not elements) - Each node gathers contributions from connected elements - Direct write to owned DOFs (no race conditions) - Perfect for matrix-free Krylov methods Validated with demo: - CPU/GPU results match exactly (0.0 relative error) - Average 3.24 elements per node (efficient gathering) - Natural integration with contact mechanics Compares to traditional element assembly: - Element: scatter to nodes (atomic ops, cache misses) - Nodal: gather from elements (no atomics, better cache)
title, subtitle, description, date, author, categories, keywords, audience, level, type, status
| title | subtitle | description | date | author | categories | keywords | audience | level | type | status | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| The JuliaFEM Book | A comprehensive manual mixing theory, software design, and personal experience | Deep dive into FEM theory, design philosophy, and research directions | 2025-11-09 | Jukka Aho |
|
|
researchers and theory enthusiasts | expert | book | work in progress |
The JuliaFEM Book
Audience: Advanced researchers, theory nerds, those who want to understand the "why" and "how" at a deep level. And Jukka.
This is the JuliaFEM Bible - a comprehensive manual mixing theory, philosophy, software design, and personal experience. It's educational, opinionated, and unapologetically deep.
What's Here
- Mathematical Foundations: Lagrange basis functions, weak forms, contact mechanics
- Design Philosophy: Why JuliaFEM exists, what problems it solves (and doesn't)
- Technical Vision: Strategic mistakes from 2015-2019, lessons learned
- Research Directions: Experimental ideas (nodal assembly, matrix-free, etc.)
- Personal Notes: The journey, the failures, the "aha!" moments
- Theory + Code: How mathematics becomes software
What's NOT Here
- "How do I install?" (see
docs/user/) - "How do I add a feature?" (see
docs/contributor/) - Short answers (everything here is DEEP)
Philosophy
"Let me show you how I think about FEM."
This is:
- Educational: Teach FEM through implementation
- Personal: Written in Jukka's voice, reflecting 8+ years of experience
- Opinionated: Strong views on what works and what doesn't
- Comprehensive: From first principles to cutting-edge research
- Honest: Documents failures as much as successes
We assume you:
- Love mathematics AND programming
- Want to understand WHY, not just HOW
- Have time to read deeply
- Are curious about unconventional approaches
- Might be me, 5 years from now, trying to remember why I did this
Structure
Part I: Foundations
- Finite Element Method (brief review)
- Lagrange Basis Functions (deep dive)
- Assembly and Solving
- Contact Mechanics
Part II: Software Design
- Type Stability and Performance
- Zero-Allocation Design
- Immutability and Composition
- Field System Architecture
Part III: History and Vision
- Strategic Mistakes (2015-2019)
- Why JuliaFEM is Different
- Contact Mechanics Focus
- Laboratory Philosophy
Part IV: Research
- Nodal Assembly (experimental)
- Matrix-Free Methods
- Automatic Differentiation
- GPU Acceleration
Part V: The Journey
- Personal Reflections
- Lessons Learned
- Future Directions
- Open Questions
Reading Guide
- For Theory: Start with Part I
- For Design Rationale: Start with Part II
- For History: Start with Part III
- For Research Ideas: Start with Part IV
- For Philosophy: Read Part V first, then everything else
Start here: Mathematical Foundations | Strategic Mistakes | Why JuliaFEM?