MFEM

{{Short description|Open-source C++ library}}

{{Multiple issues|

{{COI|date=July 2020}}

{{Third-party|date=July 2020}}

}}

{{Infobox software

| name = MFEM

| screenshot = Mfem-logo-300.png

| caption = The logo of MFEM shows some of its features: curvilinear elements, adaptive mesh refinement and parallel partitioning.

| latest release version = 4.8

| latest release date = {{Start date and age|2025|04|09}}

| latest preview version =

| latest preview date =

| repo = https://github.com/mfem/mfem

| programming language = C++

| operating system = Linux, MacOS, Microsoft Windows

| platform =

| genre = Finite element analysis

| license = BSD

| website = {{URL|mfem.org}}

}}

MFEM is an open-source C++ library for solving partial differential equations using the finite element method, developed and maintained by researchers at the Lawrence Livermore National Laboratory and the MFEM open-source community on GitHub. MFEM is free software released under a BSD license.{{cite journal |last1=Auten |first1=Holly |title=The High Value of Open-Source Software |journal=Science & Technology Review |volume=January/February 2018 |pages=5–11 |url=https://str.llnl.gov/content/pages/2018-01/pdf/01.18.pdf}}

The library consists of C++ classes that serve as building blocks for developing finite element solvers applicable to problems of fluid dynamics,{{cite journal |last1=Anderson |first1=Robert W. |last2=Dobrev |first2=Veselin A. |last3=Kolev |first3=Tzanio V. |last4=Rieben |first4=Robert N. |title=High-Order Multi-Material ALE Hydrodynamics |journal=SIAM Journal on Scientific Computing |date=2018 |volume=40 |issue=1 |pages=B32–B58 |doi=10.1137/17M1116453|bibcode=2018SJSC...40B..32A |osti=1474269 |url=https://www.osti.gov/biblio/1474269 }} structural mechanics,{{cite journal |last1=White |first1=D. A. |last2=Stowell |first2=M. L. |last3=Tortorelli |first3=D. A. |title=Topological optimization of structures using Fourier representations |journal=Structural and Multidisciplinary Optimization |volume=58 |issue=3 |date=2018 |pages=1205–1220 |doi=10.1007/s00158-018-1962-y|osti=1479078 |s2cid=126093513 }} electromagnetics,{{cite journal |last1=Shiraiwa |first1=S. |last2=Wright |first2=J. C. |last3=Bonoli |first3=P. T. |last4=Kolev |first4=T. |last5=Stowell |first5=M. |title=RF wave simulation for cold edge plasmas using the MFEM library |journal=22 Topical Conference on Radio-Frequency Power in Plasmas |date=23 October 2017 |volume=157 |pages=03048 |doi=10.1051/epjconf/201715703048|bibcode=2017EPJWC.15703048S |doi-access=free |hdl=1721.1/113307 |hdl-access=free }} radiative transfer{{cite journal |last1=Holec |first1=M. |last2=Limpouch |first2=J. |last3=Liska |first3=R. |last4=Weber |first4=S. |title=High‐order discontinuous Galerkin nonlocal transport and energy equations scheme for radiation hydrodynamics |journal=Numerical Methods in Fluids |date=10 April 2017 |volume=83 |issue=10 |pages=779–797 |doi=10.1002/fld.4288|bibcode=2017IJNMF..83..779H |s2cid=125947931 }} and many other.

Features

Some of the features of MFEM include{{cite web |title=MFEM Finite Element Discretization Library |url=http://mfem.org/features/}}

  • Arbitrary high order finite elements with curved boundaries.
  • H1, H(curl) and H(div) conforming, discontinuous (L2), and NURBS finite element spaces.
  • Local mesh refinement, both conforming (simplex meshes) and non-conforming (quadrilateral/hexahedral meshes).
  • Highly scalable MPI-based parallelism and GPU acceleration.{{cite web |title=MFEM video: Advanced simulation algorithms for HPC applications|website = YouTube|url=https://www.youtube.com/watch?v=Rpccj3NopSE}}
  • Wide variety of finite element discretization approaches, including Galerkin, discontinuous Galerkin, mixed, high-order and isogeometric analysis methods.
  • Tight integration with the Hypre parallel linear algebra library.
  • Many built-in solvers and interfaces to external libraries such as PETSc, SuiteSparse, Gmsh, etc.
  • Accurate and flexible visualization with VisIt and ParaView.
  • Lightweight design and conservative use of C++ templating.
  • Documentation in the form of examples and mini-applications.

See also

References

{{Reflist}}