# Advanced Finite Elements (MA5337)

Exact representation of curved geometries, treatment of shocks in the solution of a PDE or coupled systems of PDEs with different numerical requirements for each variable are just a few examples, where classical finite elements are not the best choice to solve PDEs numerically. In this course we will discuss a variety of advanced finite element techniques ranging from isogeometric analysis over possibly non-conforming or H(div), H(curl) elements to mixed formulations. We will also put a focus on non-linear PDEs and dynamical problems, i.e. PDEs involving a time derivative and how to couple techniques from ODE-numerics like time-integrators with the spatial discretization via finite elements. All these approaches are accompanied by applications e.g. from elasticity, fluid- or wave-mechanics also involving implementation. We may also cover parameter dependent PDEs for example in the context of reduced basis methods, variational inequalities as they arrise e.g. in contact mechanics or some simple examples of parameter estimation/inverse problems or shape optimization, where the finite element techniques are used to solve sub-problems of the (huge) optimization problem and hence are embedded into a broader applicational context.**This lecture is a superset of the lecture**

*Theory and Numerics of Finite Elements (MA4303)*, which means that after successful completion it can be accounted in place of (MA4303), e.g. for the "Numerical Mathematics" block of the M.Sc. Mathematics in Science and Engineering.Lecture | Prof. Dr. B. Wohlmuth Tuesday 12:00-14:00 in MI 03.10.011 |
---|---|

Office hours | by arrangement (eMail) |

Exercises | M.Sc. Markus Muhr Tuesday 14:00-16:00 in MI 03.10.011 |

Programming Tutorials |
M.Sc. Markus Muhr Thursday 10:00-14:00 in MI 02.04.011 |

Supplementary Exercise hour |
M.Sc. Markus Muhr Thursday 08:30-10:00 in MI 02.04.011 |

Requirements | Required: - Numerik gewöhnlicher Differentialgleichungen (MA2304) or a similar course. You should be familiar with numerical integration and time stepping schemes. - Numerical Methods for Partial Differential Equations (MA 3303) or a similar course. You should be familiar with the concepts of finite elements. - (MATLAB)-Programming skills (MA8003) Just basic MATLAB. For all the special toolboxes etc. we will give introductions. Helpful but not necessary: - Functional Analysis (MA3001) - Nonlinear Optimization: Advanced (MA 3503) We will use the concept of Lagrange multipliers in some of our settings, hence some finite dimensional experience with them might be helpful. - Basic knowledge in continuum mechanics (fluid mechanics and elasticity) might help, but also here we can give a short introduction to the respective equations. - Further programming languages like C++/Python are a plus, but even if not, you can do "learning by doing". As long as you have any experience in programming (like MATLAB) you only have to adapt to a new syntax. |

TUMOnline | Link to TUMOnline entry |

## General Information

### Announcements

- We decided to insert an additional exercise sheet about Krylov-solvers which is now numbered sheet number 7. We will discuss this in the 5th of December and will postpone the original sheet number 6 by one week.
- On the solution sheet for assignment 5 in the convergence proof of Uzawas algorithm I added / corrected the case of "small" eigenvalues, as it was commented in the tutorials.
- The first programming tutorial is now finished. Solution code examples are uploaded and you can test them. We start with the second programming tutorial on Thursday 30 th of November and will continue with it till 14 th of December, since the
**7 th of December is holiday for students** - On the first programming tutorial sheet there was one minor (but maybe hard to spot) error. When implementing the MINI element, you have to use
`"Bubble"`

instead of`"bubble"`

(capital letter at the beginning!) - The solution for exercise sheet 2 is now online. I also corrected the part about B^t(M) being closed in X', where we discusses about in the tutorial.
- The lecture starts on Tuesday 17 th of October, the exercises start in the
*second*week of the semester, i.e. on Tuesday 24 th of October. - Welcome to the lecture homepage of the "Advanced Finite Elements" lecture in the winter term 2017/18.

## Examination

- The exams will be held on
**Tuesday 27.02.**and on**Wednesday 07.03.**. We will let you know your specific time slot during the remaining lectures / exercises. If you are not attending these, please let us know, then we can also send you your examination time per e-mail. - In the lecture on the 16.01.2018 we will decide upon the dates for the exams. Please think about your wishes or days you certainly can not make it already in advance so that we will be able to fix the date as soon as possible. Also, please do not forget to register for the exam in TUMonline!!! There is a deadline!
- The exam will be an 30 min. oral exam, no learning aids and no electrical devices are permitted during the exam.

## Content

### Lecture

- Introduction

- Mixed Finite Element Methods
- Mixed variational formulations
- Saddle-point problems
- Discretization of mixed formulations
- LBB-stability
- Stable finite element pairings for Stokes equation
- Error-estimates
- Linear solvers (Krylov, Uzawa, Multigrid)

- Time dependent PDEs and time integration methods
- Parabolic problems: One step theta scheme
- Hyperbolic problems: Newmark Predictor-Corrector scheme

- Applications like (Navier)-Stokes and elasticity

- Variational inequalities of first and second kind
- Existence and uniqueness of solutions
- Finite element solution methods
- Regularization
- Penalty methods
- (Semi-smooth) Newton method

- Error estimates

- Applications like obstacle problem, friction, contact problems

- Isogeometric Analysis and Finite elements
- B-spline and NURBS functions and geometry representation
- NURBS-bases for finite elements

- Methods for nonlinear PDEs
- Applications from wave mechanics
- Nonlinear waves e.g. Westervelt equation

**Slides**

- Organization/Repetition/Motivation/Existence and Uniqueness for saddle point problems

Slides 1 (Gap text), ~~~ Slides 1 (Gap text, Save paper version), ~~~ Slides 1 (Complete text), ~~~ Slides 1 (Save paper version) - Finite Elements for saddle point problems: Stable element combinations/Error estimates/Stabilization techniques

Slides 2 (Gap text), ~~~ Slides 2 (Gap text, Save paper version), ~~~ Slides 2 (Complete text), ~~~ Slides 2 (Save paper version) - Variational inequalities: Solution theory/Regularization/Numerical methods

Slides 3 (Gap text), ~~~ Slides 3 (Gap text, Save paper version), ~~~ Slides 3 (Complete text), ~~~ Slides 3 (Save paper version) - Isogeometric Analysis: Spline-Ansatzfunctions/Geometry representation/Multi-patch-coupling

Slides 4, ~~~ Slides 4 (Save paper version)

### Exercises

Every week we will have a 90 min. exercise session, where the current exercise sheet will be discussed. These exercises will mostly be theoretical ones dealing with the mathematical content of the lecture like definitions, theorems and proofs. A solution sheet will be uploaded after each exercise.- Assignment 1, due 24.10.2017, Solution 1
- Assignment 2, due 07.11.2017, Solution 2
- Assignment 3, due 14.11.2017, Solution 3
- Assignment 4, due 21.11.2017, Solution 4
- Assignment 5, due 28.11.2017, Solution 5, Template: uzawa.zip, Solution: uzawa.m
- Assignment 6, due 12.12.2017, Solution 6
- Assignment 7, due 05.12.2017, Solution 7, Additional sheet: Krylov Overview
- Assignment 8, due 09.01.2018, Solution 8
- Assignment 9, due 23.01.2018, Solution 9
- Assignment 10, due 30.01.2018, Solution 10, MATLAB-function to draw B-spline basis: draw_b_spline_basis.m

### Programming Tutorials

Also we will have 90 min. programming tutorials, where coding examples of the methods from the lecture are implemented. Attendance is not mandatory, however the content of these programming exercises**is definitely relevant for the final exam**! Solution code-files will be uploaded after each tutorial.

- Tutorial 1, Start file: Poisson.py, Solution codes: Solution_Codes_Tutorial_1.zip
- Tutorial 2, Start file: Heat.py, Solution codes: Solution_Codes_Tutorial_2.zip
- Tutorial 3, Start files: Start_Files.zip, Solution files: Solution P3, Solution_Files.zip
- Tutorial 4, Start files: Start_Files.zip, Solution files: Solution_Files.zip

### Supplementary exercise hour

We will have a supplementary exercise hour of 45 min. where you can ask questions about either the content of the lecture, the implementation or any exercises.## Software

### MATLAB

- Most of our "simpler" code-examples will be written in
**MATLAB**. TUM-students have access to a free but still full version of MATLAB. To receive your copy log into TUMonline, klick ''Software'' in the right column and follow the instructions given there. If you have not yet worked with MATLAB, you may find the Official MATLAB-Documentation^{}helpful. - We will also use some third party
**toolboxes for MATLAB**like GeoPDEs^{}. Details will be discussed in the lecture / exercises.

### *FEniCS*

Since it is always quite a mess to get *FEniCS*to run on each computer/laptop etc. please prepare your installation already in advance of the first programming tutorial so that you can directly start and do not have to download and install large files with the slow university WLAN. The following points might be helpful for the installation but they are certainly

*not*a complete guide on how to install

*FEniCS*on each operating system or machine.

**General hints**

- Make sure Python is installed on your machine. On Linux systems this is probably already the case, for Windows systems install Python version 2.7.xx from https://www.python.org/
^{} - Also install numpy, scipy and matplotlib e.g. from https://www.scipy.org/
^{}. A package manager like PIP^{}might help. - Finally install
*FEniCS*from https://fenicsproject.org/download/^{}. For Linux, just execute the commands given there, for Windows you have to deal with the Docker Toolbox also explained there. - I would recommend to use
*FEniCS*with a Linux operating system, preferably as a main operating system or a dual boot. If you do not have that possibility there is the Virtual Box^{}to simulate a Linux system also on a Windows machine. Computational performance is slower than on a pure Linux system but for Windows-only users this might be the best solution. You can either set up a Virtual Box on your own (once it is installed, you can follow the Linux installation commands below and it should work) or you can get one from us (see link below), where everything is already installed and will (hopefully) work on your laptop. - Please make sure that you have installed
*FEniCS*version 2017.1.0 (in the console type dolfin-version). This is necessary to run solution scripts, since they are written for this version and versions might differ a lot!

**A collection of commands that might work**

- Assuming that you have a complete freshly installed (Ubuntu 16.04.3) Linux-system the following commands, one executed after the other, should work and install all necessary programs to run and work with
*FEniCS*afterwards. - If you are using a different Linux distribution or you have some programs already installed, your way of installing
*FEniCS*might differ from what is described here. This is just what worked for me! - Installation_commands.txt

**FEniCS Box**

- We set up a virtual machine with Ubuntu 16.04.3 as an operating system, where all necessary programms are already installed to run
*FEniCS*. The machine is too large (3.7 GB) to be saven on this webpage, hence you have to download it from our Google Drive server here: FEniCS-Box^{} - When starting the Virtual Box you need a username and a password. The default values are:
**Username:***fenicsbox*,**Password:***FEniCS*(case sensitive!)

**Test your installation**

- Once you finished the installation, test it with the following file (you do not have to look into the file or understand it, just run it) fenics_testfile.py
- To run the file, navigate in the terminal to the folder where the file is saved (use the commands
`cd`

and`ls`

). Once there, run the file with python, i.e. type:`python`

`fenics_testfile.py`

. You should get a graphical output and a new subfolder will be created. The files in this subfolder can be opened with paraview.

### Paraview

- Please also install Paraview
^{}, which is a post-processing program. Windows users can download the installer from the website, Linux users can use`sudo apt-get install paraview`

## Literature

Daniele Antonio Di Pietro, xxxxxxxxxxxxxxxxx Alexandre Ern |
J. Austin Cottrell; Thomas J.R. xxxxxxxxxxxxx Hughes; Yuri Bazilevs |
D. Boffi, F. Brezzi, M. Fortin xxxxx |
A. Ern, J. L. Guermond xxxxxxxx |
A. Quarteroni, A. Valli xxxxxxxx |
M. Kaltenbacher |
Quarteroni, Manzoni, xxxxxxxxxxxxxxxxxxxxxxx Negri |
Hesthaven, Rozza, Stamm |
R. Glowinski |

Mathematical Aspects of Discontinuous Galerkin Methods |
Isogeometric Analysis: Toward Integration of CAD and FEA |
Mixed Finite Element Methods and Applications |
Theory and practice of finite elements |
Numerical Approximation of Partial Differential Equations |
Numerical Simulation of Mechatronic Sensors and Actuators |
Reduced Basis Methods for Partial Differential Equations |
Certified Reduced Basis Methods for Parametrized PDEs |
Numerical Methods for Nonlinear Variational Problems |

Springer, 2012 | Wiley, 2009 | Springer, 2013 | Springer, 2004 | Springer, 1994 | Springer, 2007 | Springer, 2015 | Springer, 2015 | Springer, 1984 |

(eBook version available) | (Not the book, but a summary ^{}) |
(eBook version available) | (eBook version available) | (eBook version available) | (eBook version available) | (eBook version available) | (eBook version available) |

^{}. Log in via Shibboleth (not Athens !) by choosing the TUM as your institution and entering your TUMonline username and password. After that, navigate to the book and klick the blue "Download Book"-button and you should receive the complete book as a pdf file (for some books you also have to download the single chapters individually but the login process should be the same).

For questions, suggestions or complaints please write an eMail to Markus Muhr. -- MarkusMuhr - 04 Jul 2017