00_workshop_knoxville.html 6.23 KB
Newer Older
Praetorius, Simon's avatar
Praetorius, Simon committed
1 2 3 4 5 6 7 8 9 10 11 12
<!DOCTYPE html>
<html>
  <head>
    <title>AMDiS - Adaptive Multi-Dimensional Simulations</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <style type="text/css">
      @import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
      @import url(https://fonts.googleapis.com/css?family=Raleway);
      @import url(https://fonts.googleapis.com/css?family=Ubuntu);
      @import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
      @import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
    </style>
13 14
    <link rel="stylesheet" type="text/css" href="style_display.css" />
    <!--<link rel="stylesheet" type="text/css" href="style_print.css" />-->
Praetorius, Simon's avatar
Praetorius, Simon committed
15 16 17 18 19 20 21
  </head>
  <body>
    <textarea id="source">

class: center, middle

# AMDiS - Adaptive Multi-Dimensional Simulations
22
## Introduction to the FEM-Framework
Praetorius, Simon's avatar
Praetorius, Simon committed
23 24 25 26 27 28 29 30 31

Simon Praetorius *simon.praetorius@tu-dresden.de*

*Institut für Wissenschaftliches Rechnen*

*Technische Universität Dresden*

---

32 33 34 35 36 37 38 39 40 41 42 43 44
## 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

---

Praetorius, Simon's avatar
Praetorius, Simon committed
45 46 47
# About this Course

> Goals: Introductory course
48 49
  - You know how to compile and link against the AMDiS library
  - You can solve a linear scalar PDE and a system of elliptic equations
Praetorius, Simon's avatar
Praetorius, Simon committed
50
  - You can handle instationary problems, nonlinearities and complex boundary conditions
51
  - You can run your simulation in parallel (*optional*)
Praetorius, Simon's avatar
Praetorius, Simon committed
52 53 54 55

--

> References:
56
  - Some theoretical background and basic design ideas of AMDiS software: [ALBERTA-FEM](http://goo.gl/Sn9CIE).
Praetorius, Simon's avatar
Praetorius, Simon committed
57 58 59 60 61 62 63
  - 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)

---

64 65 66 67
## Get the slides and material
All slides and source code, as well as exercise material can be found in a git repository:
```
# Get the repository
68
cd ~/Desktop
69 70
git clone https://gitlab.mn.tu-dresden.de/spraetor/amdis_workshop_16.git ...
  ... amdis_workshop
Praetorius, Simon's avatar
Praetorius, Simon committed
71

72 73 74 75
# Download the material
cd amdis_workshop
git submodule update --init --recursive
```
Praetorius, Simon's avatar
Praetorius, Simon committed
76

77 78 79
In the subdirectory `cheat_sheets/` you can find quick reference cards on some tools used in this workshop.

See also https://devhints.io
Praetorius, Simon's avatar
Praetorius, Simon committed
80 81 82 83 84

---

# Agenda

85 86 87
### Wednesday Nov 28
- Scalar linear second order PDEs
- Discrete functions on unstructured grids
Praetorius, Simon's avatar
Praetorius, Simon committed
88

89 90 91
### Friday Nov 30
- Adaptivity and systems of equations
- Time-dependent and nonlinear problems
Praetorius, Simon's avatar
Praetorius, Simon committed
92

93 94 95
### Wednesday Dec 5
- Boundary conditions and Composite FEM
- Parallelization
Praetorius, Simon's avatar
Praetorius, Simon committed
96 97 98 99

---

# Introduction
100
## Short history
Praetorius, Simon's avatar
Praetorius, Simon committed
101 102 103 104 105 106 107 108 109

- 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
Praetorius, Simon's avatar
Praetorius, Simon committed
110
- 2019 (?): AMDiS 2.0 (based on dune library)
Praetorius, Simon's avatar
Praetorius, Simon committed
111 112 113 114

Developers:
```
Axel Voigt, Simon Vey, Christina Stöcker, Thomas Wittkowski,
Praetorius, Simon's avatar
Praetorius, Simon committed
115
Andreas Naumann, Simon Praetorius, Siqi Ling, Sebastian Reuther, ...
Praetorius, Simon's avatar
Praetorius, Simon committed
116 117 118 119
```

---

120
## Some features
Praetorius, Simon's avatar
Praetorius, Simon committed
121 122 123 124 125 126 127 128 129 130 131 132 133

- 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

134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
---

# Get AMDiS
### Source code

AMDiS is an open source library availabe on Gitlab

https://gitlab.mn.tu-dresden.de/iwr/amdis


### Package
Some precompiled packages for Debian Linux available

https://gitlab.mn.tu-dresden.de/iwr/packages


### Docker image
Environment to work with compiled and installed library

https://hub.docker.com/r/mathiwr/amdis-1.1.dev


---

## System 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,...

Everything necessary is collected and composed in a docker image.

## Setup AMDiS in PC lab
167
- Start applications `Docker` and `Terminal`
168
- Use docker image: `mathiwr/amdis-1.1.dev:debian9`
169
- Mount local directory: `~/Desktop/amdis_workshop`
170 171 172
- Work in terminal: `bash`

```
173 174 175
docker pull mathiwr/amdis-1.1.dev:debian9
docker run -it -v ~/Desktop/amdis_workshop:/amdis_workshop ...
  ... mathiwr/amdis-1.1.dev:debian9 bash
176
```
Praetorius, Simon's avatar
Praetorius, Simon committed
177 178 179

    </textarea>
    <script src="lib/remark.js" type="text/javascript"></script>
180
    <script type="text/javascript" src="MathJax/MathJax.js?config=TeX-AMS_HTML"></script>
Praetorius, Simon's avatar
Praetorius, Simon committed
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203

    <script type="text/javascript">
      var slideshow = remark.create({
        ratio: "4:3",
        highlightLanguage: "cpp"
      });

      // Setup MathJax
      MathJax.Hub.Config({
          tex2jax: {
          skipTags: ['script', 'noscript', 'style', 'textarea', 'pre']
          }
      });
      MathJax.Hub.Queue(function() {
          $(MathJax.Hub.getAllJax()).map(function(index, elem) {
              return(elem.SourceElement());
          }).parent().addClass('has-jax');
      });

      MathJax.Hub.Configured();
    </script>
  </body>
</html>