Small C++ project implementing a 2D Galerkin finite element method for Poisson-type problems. Intended for experimenting with assembly strategies, matrix storage formats, and linear solvers.
- Linear P1 triangular elements (stiffness matrix and load vector assembly)
- Dirichlet boundary conditions
- Gmsh
.mshinput, VTK output - Multiple matrix backends: dense, banded, stack-based, sparse
- Linear solvers:
- Direct: custom LDLᵀ, Eigen (SimplicialLDLT, SparseLU)
- Iterative: Conjugate Gradient (CPU and OpenCL)
src/FEM*.cpp— FEM assembly and problem setupsrc/MatrixImpl/— matrix formats and solverssrc/time_series.cpp— simple benchmarking
Solver backend is selected at compile time via:
FEM_EIGEN_IMPL, FEM_CONJ_GRAD_IMPL, or FEM_NAIVE_IMPL.