parallel finite element method
**Parallel Finite Element Method (FEM)** is the **numerical simulation technique that partitions a computational mesh across multiple processors, assembles local element stiffness matrices in parallel, and solves the resulting global sparse linear system using parallel iterative or direct solvers — enabling engineering analysis of structures, fluid dynamics, electromagnetics, and heat transfer on meshes with billions of elements that would take months to solve on a single processor**.
**FEM Computational Pipeline**
1. **Mesh Generation**: Define geometry and discretize into elements (tetrahedra, hexahedra for 3D; triangles, quads for 2D). Millions to billions of elements for high-fidelity simulation.
2. **Element Assembly**: For each element, compute the local stiffness matrix Ke (typically 12×12 for 3D linear tetrahedra, 24×24 for quadratic). Insert into global sparse matrix K. Assembly is embarrassingly parallel — each element is independent.
3. **Boundary Condition Application**: Modify K and load vector F for Dirichlet (fixed displacement) and Neumann (applied load) conditions.
4. **Linear Solve**: K × u = F. K is sparse, symmetric positive-definite (for structural mechanics). This step dominates runtime — 80-95% of total computation.
5. **Post-Processing**: Compute derived quantities (stress, strain, heat flux) from the solution u. Element-level computation, embarrassingly parallel.
**Mesh Partitioning**
Distributing the mesh across P processors:
- **METIS/ParMETIS**: Graph partitioning library. Models the mesh as a graph (elements = vertices, shared faces = edges). Minimizes edge cut (communication volume) while balancing vertex count (load balance). Produces partitions with 1-5% edge cut for well-structured meshes.
- **Partition Quality**: Load balance ratio (max partition size / average) < 1.05. Edge cut determines communication volume — each cut edge requires data exchange between processors. For structured grids, simple geometric partitioning (slab, recursive bisection) is effective.
**Parallel Assembly**
Each processor assembles its local partition independently. Shared nodes at partition boundaries are handled via:
- **Overlapping (Ghost/Halo) Elements**: Each partition includes a layer of elements from neighboring partitions. Assembly of boundary elements is independent. Results at shared nodes are combined by summation across partitions (MPI allreduce or point-to-point exchange).
**Parallel Linear Solvers**
- **Iterative (PCG, GMRES)**: Parallel SpMV + parallel preconditioner per iteration. Communication: one allreduce for dot product, halo exchange for SpMV. Convergence depends on preconditioner quality.
- **Domain Decomposition Preconditioners**: Schwarz methods solve local subdomain problems (each processor solves a small linear system) and combine results. Additive Schwarz: embarrassingly parallel local solves, weak global coupling. Multigrid: multilevel hierarchy provides optimal O(N) convergence.
- **Direct Solvers (MUMPS, PaStiX, SuperLU_DIST)**: Parallel sparse factorization. More robust for ill-conditioned problems but higher memory requirements and poorer scalability than iterative methods.
Parallel FEM is **the computational spine of modern engineering simulation** — enabling the fluid dynamics, structural mechanics, and electromagnetic analyses that design aircraft, automobiles, medical devices, and semiconductor equipment at fidelity levels that match physical testing.