v0.12.1
Tutorials

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/mofem-cephas/mofem/users_modules/um-build-RelWithDebInfo-abcd1234/tutorials/

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

Note
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.


Note
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.

Fundamentals

MoFEM Interfaces

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

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

FUN-2: Hierarchical approximation

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

Mesh creation

MSH-1: Create a 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

MSH-2: Create a 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

SCL-9: Heat method

Finding geodesic distance with heat method
Keywords: Face elements embedded in 3d space

SCL-10: Photon diffusion

Photon diffusion equation
Keywords: Inital boundary conditions and parabolic equation

Problems with complex variable fields

CLX-0: Helmholtz problem

Helmholtz problem for acoustics
Keywords: Complex variable, Linear Solver, boundary markers

Vector-field problems

VEC-0: Linear elasticity

Linear elasticity
Keywords: Hooke equation

VEC-1: Eigen elastic

Eigen elastic
Keywords: Eigen values, SLEPC

VEC-2: Nonlinear elastic

Nonlinear elastic with Hencky material
Keywords: Nonlinear problem, SNES

VEC-3: Nonlinear dynamic elastic

Time-dependent nonlinear elastic (dynamics)
Keywords: Alpha2 method

Mixed field problems

MIX-0: Mixed formulation of Poisson equation

A mixed problem
Keywords: H-div space, homogenous boundary conditions by DOFs removal

Data driven problems

DD-0: Transport data driven

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

Maxwell problems

MAX-0: Magnetostatics

Magnetostatics
Keywords:

MAX-1: Lorenz force

Lorenz force
Keywords:

Advanced topics

ADV-0: Plastic problem

Plasticity problem
Keywords: Nonlinear problem, linearisation, L2 space, boundary markers, displacement control, force control

ADV-1: Contact problem

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

ADV-2: Thermo-plastic example

Solve thermo-elasto-plastic probelm
Keywords: Keywords: Multi-physiscs, Nonlinear problem, linearisation

ADV-3: Various fields and finite element spaces

Problem with various fields and finite element spaces
Keywords:

ADV-4: Elasticity with spring and rod elements

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

Tutorials using core interfaces or low level implementation

COR-0: Mixed formulation and integration on skeleton (h-adaptivity)

Mix formulation for transport problem
Keywords: h-adaptivity and error estimator

COR-1: Time dependent nonlinear mix formulation (unsaturated flow)

Mix formulation for capillary flow
Keywords: Capillary flow in unsaturated soil. Nonlinear mix-formulation

COR-2: Solving the Poisson equation

Poison equation again with different implementations
Keywords: Poisson problem

COR-3: Implementing operators for the Poisson equation

Poison equation implementation of differentiation operators
Keywords: Poisson problem

COR-4: Using fieldsplit solver and DM sub problem.

Poison equation implementation of differentiation operators
Keywords: Using subproblems and nested matrices

COR-5: A nonlinear Poisson equation

Poison nonlinear equation again
Keywords: SNES solver and linearisation

COR-6: Solid elasticity

Older implementation of elastic problem
Keywords: Operators and low level implementation

COR-7: Mixed formulation for incompressible elasticity

Older implementation of mixed elastic problem
Keywords: Pressure field and incompressibility

COR-8: Implementation of spring element

Implementation of boundary element with springs
Keywords: face element, spring, user data operators

COR-9: Reaction-diffusion equation

Reaction-diffusion Fisher's equation
Keywords: Time solver, Monitor, nonlinearity,

COR-10: Navier-Stokes equation

Navier-Stokes equations
Keywords: viscous fluid flow, mixed formulation, drag force computation

Tutorials implemented as a separate module

MOD-0: Soap film spanned on wire

Soap film as an external module
Keywords: Module implementations