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