Files
JuliaFEM.jl/examples/gmsh_heat_equation
Jukka Aho 50851e878b docs(examples): Add quick start guide for gmsh example
New file: examples/gmsh_heat_equation/QUICK_START.md (34 lines)

Minimal quick-reference document:
- Links to main files (example, geometry, tutorial)
- 5-point workflow summary
- Academic usage code snippet (Issue #183)
- Matrix extraction pattern for external solvers

Complements README.md with even shorter entry point
2025-11-09 23:23:38 +02:00
..

Heat Equation Example: From Gmsh to Physics

Addresses Issue #183: Academic usage without built-in physics

This example demonstrates the complete workflow:

  1. Generate mesh using Gmsh
  2. Load mesh into JuliaFEM
  3. Assemble stiffness matrix and mass matrix
  4. Extract matrices for external solvers (e.g., DifferentialEquations.jl)
  5. Solve the heat equation

Problem Statement

Solve the transient heat equation on a unit square:

∂u/∂t = α∇²u + f(x,y,t)

with boundary conditions:

  • u = 0 on left edge (Dirichlet)
  • ∂u/∂n = 0 on other edges (Neumann, natural BC)

Initial condition: u(x,y,0) = sin(πx)sin(πy)

Quick Start

1. Generate mesh

gmsh -2 unit_square.geo -o unit_square.msh

This creates a triangular mesh of the unit square.

2. Run the example

julia --project gmsh_heat_equation.jl

What You Get

The example shows how to:

  • Load Gmsh mesh files
  • Create FEM elements with material properties
  • Assemble global stiffness matrix K and mass matrix M
  • Apply Dirichlet boundary conditions
  • Extract the resulting ODE system: M du/dt = -K u + f
  • Solve using your own time integrator

For Academic Users (Issue #183)

If you want to use JuliaFEM just for discretization (not the built-in physics):

# After assembly, extract the matrices:
K = problem.assembly.K  # Stiffness matrix (SparseMatrixCSC)
M = problem.assembly.M  # Mass matrix (SparseMatrixCSC)
f = problem.assembly.f  # Force vector

# Now use these with DifferentialEquations.jl, Krylov.jl, etc.
# The ODE system is: M * du/dt = -K * u + f

Files

  • unit_square.geo - Gmsh geometry definition
  • gmsh_heat_equation.jl - Complete working example
  • README.md - This file

See Also