Created new example demonstrating the three requirements from Issue #183:
- a) Discretize space (mesh generation shown)
- b) Assemble stiffness matrix (API demonstrated)
- c) Extract matrices for external solvers (working code)
New files:
- examples/academic_matrix_extraction/academic_example.jl (211 lines)
- examples/academic_matrix_extraction/README.md (123 lines)
This is a WORKING example using Dirichlet BC to demonstrate the matrix
extraction workflow. Shows integration with DifferentialEquations.jl,
LinearSolve.jl, Krylov.jl, and custom solvers.
Also updated gmsh_heat_equation.jl to be honest about demonstration status:
- Added clear NOTE that Heat problem is pending Phase 2
- Explains workflow structure vs actual functionality
- References architecture refactoring progress
Formatting changes only (no functional changes):
- Remove trailing whitespace after closing braces (lines 33, 75, 81)
- Add spaces around operators in Dict type parameters:
* Dict{Int, Vector{Float64}} → Dict{Int,Vector{Float64}}
* Dict{String, Vector{Int}} → Dict{String,Vector{Int}}
* Tuple{Symbol, Vector{Int}} → Tuple{Symbol,Vector{Int}}
- Add spaces around arithmetic operators:
* (j-1)*(n+1) → (j - 1) * (n + 1)
* Similar for all node index calculations
- Remove trailing space after comment text (line 172)
Improves code consistency with Julia style guide
New file: examples/gmsh_heat_equation/README.md (74 lines)
Quick-start documentation covering:
- Problem statement (heat equation with BCs)
- Quick start commands (mesh generation, run example)
- What you get (assembly workflow, matrix extraction)
- Academic usage section directly addressing Issue #183
- Code snippet showing K, M, f extraction for external solvers
- File listing and links to comprehensive tutorial
Provides immediate context for users discovering this example
New file: examples/gmsh_heat_equation/gmsh_heat_equation.jl (225 lines)
Complete workflow demonstration:
- Step 1: Mesh generation (10×10 structured grid, 200 Tri3 elements)
- Step 2: Element creation with thermal conductivity property
- Step 3: FEM assembly (stiffness matrix K)
- Step 4: Matrix extraction for external solvers (DifferentialEquations.jl)
- Step 5: Solver configuration
Problem: ∂u/∂t = α∇²u on unit square
BC: u=0 on left edge, natural BC elsewhere
Shows exactly what Chris Rackauckas requested in Issue #183:
a) Spatial discretization
b) Stiffness matrix assembly
c) Extracting K, M, f for external ODE solvers
Academic usage: demonstrates JuliaFEM as discretization engine