Files
JuliaFEM.jl/docs/book
Jukka Aho a8495bdc4a docs: Nodal assembly pattern advantages and validation
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)
2025-11-09 16:17:17 +02:00
..

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
theory
research
philosophy
fem theory
contact mechanics
design philosophy
research
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?