This site is currently under development for the RSE-ops community.

MFEM 4.0 Released

Published:

Reading time: 1 min

Version 4.0 of MFEM, a lightweight, general, scalable C++ library for finite element methods, is now available.

The goal of MFEM is to enable high-performance scalable finite element discretization research and application development on a wide variety of platforms, ranging from laptops to exascale supercomputers.

For the first time ever, MFEM-4.0 adds support for GPU acceleration in the library:

  • Device kernels can be written in CUDA, OCCA, RAJA or OpenMP.
  • Several examples have been ported with minimal code changes.
  • Many linear algebra and finite element operations can use device acceleration by simply replacing loops with the MFEM_FORALL macro.
  • The library provides seamless device/host memory management.

Some other new additions in version 4.0 are:

  • Partially assembled finite element operators in the core library.
  • Support for wedge/prism elements and meshes with mixed element types.
  • General “low-order refined”-to-“high-order” field transfer.
  • Seven new examples and miniapps.

The MFEM library has many more features, including:

  • 2D and 3D, arbitrary order H1, H(curl), H(div), L2, NURBS elements.
  • Parallel version scalable to hundreds of thousands of MPI cores.
  • Conforming/nonconforming adaptive mesh refinement (AMR), including anisotropic refinement, derefinement and parallel load balancing.
  • Galerkin, mixed, isogeometric, discontinuous Galerkin, hybridized, and DPG discretizations.
  • Support for triangular, quadrilateral, tetrahedral and hexahedral elements, including arbitrary order curvilinear meshes.
  • Scalable algebraic multigrid, time integrators, and eigensolvers.
  • Lightweight interactive OpenGL visualization with the MFEM-based GLVis tool.

MFEM is being developed in CASC, LLNL and is freely available under LGPL 2.1.

For more details, see the interactive documentation and the full MFEM CHANGELOG.