Livermore’s open-source MFEM library enables application scientists to quickly prototype parallel physics application codes based on partial differential equations (PDEs) discretized with high-order finite elements. The finite element method is a powerful discretization technique that can utilize general unstructured grids to approximate the solutions of many PDEs. High-order finite elements in particular are ideally suited to take advantage of the changing computational landscape, because their order can be used to adjust the algorithm for different hardware or to fine-tune the performance by increasing the flops/bytes ratio.
The MFEM library is used in many projects, including BLAST, XBraid, VisIt, the xSDK, the FASTMath institute in SciDAC, and the co-design Center for Efficient Exascale Discretizations (CEED) in the Exascale Computing Project.
MFEM is designed to be lightweight, general and highly scalable, and conceptually can be viewed as a finite element toolkit that provides the building blocks for developing finite element algorithms in a manner similar to that of MATLAB for linear algebra methods. It has a number of unique features, including: support for arbitrary order finite element meshes and spaces with both conforming and nonconforming adaptive mesh refinement; advanced finite element spaces and discretizations, such as mixed methods, DG (discontinuous Galerkin), DPG (discontinuous Petrov-Galerkin) and Isogeometric Analysis (IGA) on NURBS (Non-Uniform Rational B-Splines) meshes; and native support for the high performance Algebraic Multigrid (AMG) preconditioners from the hypre library.
The MFEM project performs math research and software development, aiming to provide MFEM-based simulation codes with access to cutting-edge algorithms for high-order finite element meshing, discretizations, and linear solvers algorithms. MFEM’s meshes and solutions can be visualized with its lightweight native visualization tool GLVis, as well as with the VisIt visualization and analysis tool developed at LLNL.
MFEM is used in a variety of applications, including the BLAST and Mulard projects at LLNL, where it acts as a discretization engine for high-order ALE shock hydrodynamics and high-order radiation-diffusion, respectively. MFEM has also been applied successfully to a variety of other problems, including linear and non-linear elasticity, reaction-diffusion problems, time-domain electromagnetics, DG advection problems, and Stokes/Darcy flow.