  MFEM is an open-source, lightweight, flexible and scalable C++ library for
modular finite element methods that features arbitrary high-order finite
element meshes and spaces, support for a wide variety of discretization
approaches and emphasis on usability, portability, and high-performance
computing efficiency. MFEM's goal is to provide application scientists with
access to cutting-edge algorithms for high-order finite element meshing,
discretizations and linear solvers, while enabling researchers to quickly and
easily develop and test new algorithms in very general, fully unstructured,
high-order, parallel and GPU-accelerated settings. In this paper we describe
the underlying algorithms and finite element abstractions provided by MFEM,
discuss the software implementation, and illustrate various applications of the
library.
