MoFEM landing page

Table of Contents


MoFEM (Mesh Oriented Finite Element Method) [28] it is C++ library supporting the solution of finite elements problems. Is developed to provide free and open, inclusive, participation community finite element code for engineers, students and academics.

MoFEM is a finite element analysis code tailored for the solution of multi-physics problems with arbitrary levels of approximation, different levels of mesh refinement and optimised for high-performance computing. It is designed to be able to manage complexities related to a heterogeneous order of approximations for L2,H1,H-div and H-curl spaces, see [1].

MoFEM manages complexity related to finite element approximation and bookkeeping related do degrees of freedom and finite elements. It is part of bigger software ecosystem, composed of the Boost MultiIndex containers, MOAB (Mesh Oriented Database) [36] and PETSc (Portable, Extensible Toolkit for Scientific Computation) [7]. MoFEM is developed in C++ and it is open-source software under the GNU Lesser General Public License (see Legal stuff) Stuff.

MoFEM can read and write a number of mesh file formats using functionality provided by MoAB. The current version of MoFEM has full support for CUBIT/TRELIS, TetGEN, Salome/Code_Aster (MED format) for pre-processing and ParaView for post-processing.

Motivation and unique capabilities

Building a scientific simulation environment for finite element methods is a complicated task. The greatest part of finite element code development is often expended in dealing with technical problems related to software implementation, rather than resolving the underlying physics that the code is intended to tackle.

The demand for accurate solution of increasingly complicated real-world problems means that the underlying data structures also become increasingly complicated. This is particularly evident with multi-physics, hp-adaptivity, and/or evolving geometries (e.g. crack propagation). Established commercial software is often limited in this respect, or can be relatively slow to adopt new technologies. This is the problem that MoFEM attempts to work around, recognising that it is increasingly necessary for engineers, scientists and mathematicians to carry out calculations using several mesh refinements, different approximation orders, multiple degrees of freedom and/or different scales.

Properties and features


Higher-order finite element spaces

Flexible discretization

Range of mesh types and topological operations

MoFEM is implemented with the use of MoAB and deliver the great flexibility of managing meshes. We can manage range elements types, e.g. prisms, triangles, quads, bricks and more.

Parallel and scalable

MoFEM supports MPI-based parallelism throughout the library, and can readily be used as a scalable unstructured finite element problem generator. Algebra is building on top of PETSc and geometry description on top of MoAB, both implementations are tailored for massive parallel calculations.

Third party libraries

List of third party libraries and packages used by MoFEM:

Recent developments and news



Legal stuff

MoFEM is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

MoFEM is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with MoFEM. If not, see http://www.gnu.org/licenses/