v0.14.0 |
MoFEM (Mesh-oriented Finite Element Method) is a C++ library for managing complexities related to the finite element method (FEM). FEM is a widely used numerical approach for solving partial differential equations (PDEs) arising in various physical problems. MoFEM is developed to provide a finite element library incorporating modern approximation approaches and high-performance computing capabilities for engineers, students and academics.
MoFEM belongs to a class of open-source finite element libraries, which provides users with generic tools for solving PDEs and developers with frameworks for implementing bespoke finite elements. MoFEM is specifically designed to solve complex engineering problems, enabling seamless integration of meshes that comprise multiple element types and element shapes, which are typically encountered in industrial applications.
MoFEM introduces a novel architecture of FEM software, designed to exploit advantages of emerging finite element technologies and to enable rapid implementation of numerical models for complex engineering problems involving multi-physics and multi-scale processes. Watch the video below to learn about the motivation behind the development of MoFEM, its capabilities, and its applications in research and industry.
Unique for MoFEM is that it was created for engineers to solve practical problems, which can not be easily (or not at all) solved by commercial codes. In particular, MoFEM development was driven by the needs of nuclear engineers at EDF Energy and Jacobs to model crack propagation in nuclear graphite bricks in real core environment, see Figure 1. MoFEM is currently the main numerical tool to predict cracks morphology in Advanced Gas-Cooled Reactors (AGR) in the UK. You can find out about other use cases on Applications of MoFEM in research and industry and Selected publications featuring results obtained using MoFEM pages.
MoFEM is a generic tool for solving systems of partial differential equations using the finite element method; however, the development of particular applications of MoFEM is separated from the development of the core library. Core MoFEM library serves to implement various research and commercial applications and is open, free and has MIT license, while the Users Modules are problem-focused applications of MoFEM. The key idea is that anyone can contribute to the core library to serve the whole community. However, the copyright and license of the users modules repository are accessible at the discretion of developers, permitting to adapt to the needs of the research projects, research groups or industrial partners. You can find more details on the MoFEM Architecture page.
MoFEM works with the following popular mesh preprocessors:
Moreover, using the MOAB library, MoFEM can read/write from/to the following file formats:
Format Name Read Write File name description ------------------ ------ -------- ------- ---------------- MOAB native (HDF5) MOAB yes yes h5m mhdf Exodus II EXODUS yes yes exo exoII exo2 g gen Climate NC NC yes yes nc IDEAS Format UNV yes no unv MCNP5 Format MESHTAL yes no meshtal NASTRAN format NAS yes no nas bdf Abaqus mesh format ABAQUS yes no abq Kitware VTK VTK yes yes vtk RPI SMS SMS yes no sms Cubit CUBIT yes no cub QSlim format SMF yes yes smf SLAC SLAC no yes slac GMV GMV no yes gmv Ansys ANSYS no yes ans Gmsh GMSH yes yes msh gmsh Stereo Lithography STL yes yes stl TetGen mesh files TETGEN yes no node ele face edge Template input TEMPLATE yes yes
MoFEM is implemented with the use of MOAB and delivers the great flexibility of managing meshes. We can manage range elements types, e.g. prisms, triangles, quads, bricks and more.
MoFEM supports MPI-based parallelism throughout PETSc 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.