mirror of
https://github.com/JuliaFEM/JuliaFEM.jl.git
synced 2026-08-28 07:19:55 +00:00
7f4c2b28ce
Design for handling both nodal and element fields in nodal assembly: Architecture: - Nodes have geometry (immutable) - Elements have connectivity + fields (immutable struct) - Nodal fields: displacement, temperature, contact pressure - Element fields: integration point data (σ, ε_plastic, α, C) Update pattern: - Create new field containers (NamedTuples) - Create new elements with updated fields - Shallow copy element vector, replace elements - All immutable (GPU-compatible, thread-safe) GPU kernel: - Loops over nodes (nodal assembly) - Accesses nodal_fields for global quantities - Accesses element.fields for integration point data - Gathers from connected elements (node_to_elements) - No atomic operations (each node owns DOFs) Material state update: - Process elements in parallel (Threads.@threads) - Extract nodal displacements from solution - Compute strains at integration points - Run material model (plasticity, damage, etc.) - Create new elements with updated state - Return new problem with updated fields Newton iteration: - Residual uses element.fields.C (current tangent) - GMRES with matrix-free matvec (nodal assembly) - Material update after each iteration - All data structures immutable throughout Benchmarks show creating new containers ~1000× faster than deepcopy
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?