class: center, middle # AMDiS - Adaptive Multi-Dimensional Simulations ## Introduction to the FEM-Framework Simon Praetorius *simon.praetorius@tu-dresden.de* *Institut für Wissenschaftliches Rechnen* *Technische Universität Dresden* --- # About this Course > Goals: Introductory course - You know how to use the compile and link against the AMDiS library - You can solve a linear scalar equation, or a system of elliptic equations - You can handle instationary problems, nonlinearities and complex boundary conditions - You can run your simulation in parallel -- > References: - Some theoretical background and basic design ideas of AMDiS software: [ALBERTA-FEM](http://goo.gl/Sn9CIE). - The [AMDiS-Wiki](https://goo.gl/Jy3u1u) - Some (old) PDF Documentation on [Fusionforge](https://goo.gl/5ngfYd) > Workshop material can be found on [GitHub](https://goo.gl/pjtg4a) --- # Agenda ### Monday - Scalar linear second order PDEs - Handling data on unstructured grids - Adaptivity and systems of equations - Introduction to Student Projects ### Tuesday - Time-dependent and nonlinear problems - Coupled problems - Complex geometries and surface PDEs - Talk by Siqi Ling (Multi-Mesh) - Talk by Marco Salvalaglio --- # Agenda ### Wednesday - Boundary conditions and Composite FEM - MTL4 - a linear algebra library - Linear solvers and preconditioners ### Thursday - Parallelization - Talk by Sebastian Aland - MeshConv a mesh conversion tool (Florian Stenger) - **Workshop Dinner** ### Friday - Using `C++11` with AMDiS - Extensions - Software Development and Workflow (Ansgar Burchard) - AMDiS User-Group meeting - Presentation of Student Projects --- # Introduction ## AMDiS: **A**daptive **M**ulti-**Di**mensional **S**imulations AMDiS developed around 2005. Basis: C-library *ALBERTA*. Now: an object-oriented `C++`-Framework. Basic concepts: - **High abstraction level**: (Physical) Problems can be formulated with little knowledge about numerical details - **Generality**: Solve a broad class of PDE problems. Linear and nonlinear problems, stationary and instationary. Multiple dimensions and coupling of different dimensions - **Extensibility**: Interface to extend AMDiS in several aspects, e.g. own error estimators, linear solvers, preconditioners, time-stepping schemes - **Efficiency**: Several tools for highly efficient simulations, e.g. adaptive meshes, parallelization, multi-mesh, fast linear solver libraries --- # Short history - 2002: Beginning of development (based on C-library ALBERT(A)) - 2005: First release - 2007: PhD Thesis of Simon Vey: "*Adaptive Finite Elements for Systems of PDEs*" - 2007: Development in the IWR at TU-Dresden - 2008: First parallel version - 2011: Release of stable version 0.9 - 2013: PhD Thesis of Thomas Witkowski: "*Software concepts and algorithms for an efficient and scalable parallel finite element method*" - 2014: Generic expression terms introduced - 2019 (?): AMDiS 2.0 (based on dune library) Developers: ``` Axel Voigt, Simon Vey, Christina Stöcker, Thomas Wittkowski, Andreas Naumann, Simon Praetorius, Siqi Ling, Sebastian Reuther, ... ``` --- # Some features - Solve (sequence of) Systems of **stationary linear PDEs** of **2nd order** - **Time integrators**: e.g. Rosenbrock method - **Nonlinear solvers**: e.g. Newton method - **Adaptivity** in space and time - Lagrange **basis functions** (deg. 1--4), and center-bubble function - **Mixed finite-elements**, e.g. `\(P^2/P^1\)`, Mini-Element - **Multi-Mesh** method (i.e. different components with different mesh) - Sequential and **parallel** (tested with up to 16K cores, and `\(10^9\)` DOFs) - **Multi-Grid**: geometric (in AMDiS), algebraic (external library) - Interface to **linear solvers**: (P)MTL4, PETSc, Hypre - **FETI-DP** / Schur-complement solvers in parallel --- # Install AMDiS - Debian package - EasyBuild software - Docker image - Manual installation ### Requirements - Recent C++ compiler (e.g. g++ >= 6.0, clang >= 4.0, intel icc >= 2018) - CMake (>= 3.1) - Boost (>= 1.48) - optional: Git, SuiteSparse, PETSc, ParMetis, Hypre, BDDC,...