The tutorials contain a number of basic programs that are built on top of each other. Those with the full source code has the following structure

  1. Introduction: Problem being solved, mathematical equations and derivations leading to finite element implementation
  2. Implementation: Detailed explanation of the source code where tasks are separated in different functions
  3. Results: How to run the program, output, visualisation, interpretation and comments, possible extensions.
  4. Plain program: Full source code without extended comments

The source code and corresponding binary files of the tutorials are located at the following directories when you install MoFEM with developer version Installation

  • Source code: $HOME/mofem_install/mofem-cephas/mofem/users_modules/tutorials
  • Binary files (build directory): $HOME/mofem_install/um/build_release/tutorials

Each tutorial in this page includes code name and keywords for quick reference and search within the browser.

You do not need to go through all the tutorials in the order they are listed in this page before jumping into the topic in which you are interested. However, we do recommend you to have a look at the first few tutorials solving scalar-field problems to have a general idea how the finite element implementation is done in MoFEM. We also make a recommendation at the beginning of each tutorial regarding which tutorial(s) you should read (prerequisites) before continuing with the one you are most excited about.

The tutorials are under development. Send us your feedback on Q&A regarding the tutorials that already done and the missing ones that you most prefer to see.


MoFEM Interfaces

Brief introduction about MoFEM interfaces which enable users to implement the codes with different level of complexity.

Hierarchical approximation

Introduce elementary concepts of the Finite Element Method (FEM) with hierarchical shape functions and their implementation in MoFEM
Keywords: Hierarchical approximation

fun-0: Hello world

Creating Simple problem, and pushing operators to pipelines
Keywords: UDOs, pipelines

fun-1: Integration on finite element mesh

Numerical integration is essential for most of the numerical methods employed to solve partial differential equations (PDEs)
Keywords: UDOs and integration

Mesh creation

Create a MoFEM-compatible 2D mesh from Gmsh

This document shows how to create a MoFEM-compatible 2D input mesh from Gmsh
Keywords: Gmsh, block definition, config file, read_med

Create a MoFEM-compatible 3D mesh from Gmsh

This document shows how to create a MoFEM-compatible 3D input mesh from Gmsh
Keywords: Gmsh, block definition, config file, read_med

Scalar-field problems

SCL-0: Least square approximaton

Solve the least square problem to approximate scalar function
Keywords: Simple Interface, KSP solver, mofem_part, mbconvert, 3D extension

SCL-1: Poisson's equation (homogeneous BC)

Solve the Poisson's equation with zero value boundary conditions
Keywords: Simple Interface, KSP solver, mofem_part, mbconvert, 3D extension

SCL-2: Poisson's equation (non-homogeneous BC)

An expansion of previous tutorial to cover non-homogeneous (non-zero value) boundary condition of Poisson's equation
Keywords: Least square approximation

SCL-3: Poisson's equation (Lagrange multiplier)

Solve the Poisson's equation using Lagrange multiplier for the non-homogeneous boundary condition
Keywords: PCFIELDSPLIT block solver

SCL-4: Nonlinear Poisson's equation

Solve nonlinear Poisson's equation using Newton iterative scheme
Keywords: SNES solver

SCL-5: Minimal surface equation

A variant of the nonlinear Poisson's equation
Keywords: SNES solver

SCL-6: Heat equation

This is the first tutorial to solve a time-dependent problem with first-order time derivative
Keywords: TS solver, implicit scheme

SCL-7: Wave equation

Time-dependent problem with second-order time derivative
Keywords: TS solver, implicit scheme

SCL-8: Radiation boundary conditions

Nonlinear problem at the boundary
Keywords: axisymmetric problem, linearisation

Problems with complex variable fields

CLX-0: Hemholtz problem

Hemholtz problem for acoustics
Keywords: Complex variable, Linear Solver </tr

Vector-field problems

VEC-0: Linear elasticity

Linear elastic
Keywords: Hooke equation

VEC-1: Eigen elastic

Eigen elastic
Keywords: Eigen values, SLEP

VEC-2: Dynamic elastic

Dynamic elastic
Keywords: Time dependent problem

VEC-3: Nonlinear dynamic elastic

Nonlinear elastic

Mixed field problems

MIX-0: Mix poisson equation

A mixed problem
Keywords: H-div space

Data driven problems

DD-0: Tranport data driven

Data driven for transport or heat conduction problems
Keywords: Scalar problem

Maxwell problems

MAX-0: Magnetostatics


MAX-1: Lorenz force

Lorenz force

Advanced topics

ADV-0: Plasticity

Plasticity problem

ADV-1: Contact problem

Contact problem
Keywords: H-curl/H-div space, mix formulations

ADV-2: Fracture

Fracture problem

ADV-3: Various fields and finite element spaces

Problem with various fields and finite element spaces

ADV-4: Elasticity with spring and rod elements

Problem with mixed dimension (1D, 2D, 3D)