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, non-homegenous time dependent boundaru condition 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, parabolic equation, adding user element, postprocessing on skin, initial vector

# 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 VEC-4: Shallow wave equation on sphere Shallow wave equation on mainfold (atmospheric processes) Keywords: Alpha method, initail conditions, hyperbolic equation, sphere approximation, explicit/implicit time integration, restart vector

# 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: