-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathintro.tex
270 lines (254 loc) · 9.08 KB
/
intro.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section[Intro]{Introduction to deal.II}
\frame{\tableofcontents[currentsection,hideothersubsections]}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Design Paradigm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Design paradigm}
deal.II is
\begin{itemize}
\item a programming library in C++
\item a toolbox for development
\end{itemize}
\pause
deal.II is not
\begin{itemize}
\item a solver for wave/flow/radiation/electromagnetics
\item another programming language for numerical PDE
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Goals of deal.II}
\begin{enumerate}
\item<+-> Academic research
\begin{itemize}
\item aid developing and testing new numerical algorithms
\begin{itemize}
\item Provide full control over all aspects of a program
\item Be able to assess feasibility and efficiency
\end{itemize}
\item compromise between ease of use and efficiency
\begin{itemize}
\item Advanced/3D applications need high efficiency
\item Support development of complex algorithms
\end{itemize}
\end{itemize}
\item<+-> Education
\only<2->{\begin{itemize}
\item teach a general purpose programming language
\item provide intuitive tool for class and thesis projects
\end{itemize}}
\item<+-> Industrial Application
\only<3->{\begin{itemize}
\item Not a development goal in itself
\item Several companies have inquired and use it
\item Switch to LGPL improves applicability
\end{itemize}}
\end{enumerate}
\end{frame}
\begin{frame}
\frametitle{Why C++?}
What are the alternatives:
\begin{itemize}
\item<+-> Matlab
\begin{itemize}
\item Nice for testing a discretization on a coarse mesh
\item No control over memory allocation $\Rightarrow$ no fine meshes, 3D
\item Not much control over solvers: ``backslash operator''
\item Most important: NOT a programming language
\end{itemize}
\item<+-> FORTRAN
\item<+-> Python
\begin{itemize}
\item Rapid prototyping possible, interpreted language
\item Compute kernels usually in C++
\item Can generate optimized kernels on the fly
\item Proficient users must know two languages
\end{itemize}
\item<+-> Java
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{History}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{A short history of deal.II (part I)}
\begin{itemize}
\item<+-> In 1990-1992 two students in Bonn wrote their masters thesis
on finite elements for different problems and realized they were
doing the same thing twice.
\item<+-> In 1992 they transfer to Heidelberg for their PhD and work on
adaptive finite elements for plasticity and radiative transfer,
respectively.
\begin{itemize}
\item The coding challenges are the same
\item DEAL is developed with additional contributions as an
in-house basis for adaptive multilevel finite element
computations
\end{itemize}
\item<+-> By 1997, C++ has gained maturity and DEAL has become quite
useful, but is resistant to further expansion
\end{itemize}
\visible<+->{DEAL was developed to support our own research!}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{A short history of deal.II (part II)}
\begin{itemize}
\item<+-> A new group of people forms to develop the successor deal.II
\item<+-> In 1998, we decide to go public
\begin{itemize}
\item Systematic documentation starts
\item Open Source License
\item Download rates of several hundred per month (2010)
\item More than 100 publications per year (2014)
\item Wilkinson Prize for Numerical Software (2007)
\end{itemize}
\end{itemize}
\visible<+->{But: we still do this to support our own research!}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{A short history of deal.II (part III)}
\begin{itemize}
\item deal.II transitions from a group project to a
community project
\item \footnotesize Contributors: Moritz Allmaras, Michael Anderson,
Daniel Arndt,
Wolfgang Bangerth, Andrea Bonito, Markus Bürg, John Burnell, Brian
Carnes, Ivan Christov, Chih-Che Chueh, Marco Engelhard, Jörg
Frohne, Joscha Gedicke, Thomas Geenen, Martin Genet, Christian Goll, Ralf
Hartmann, Eric Heien, Timo Heister, Luca Heltai, Bärbel Holm,
Xing Jin, Oliver Kayser-Herold, Seungil Kim, Benjamin Shelton
Kirk, Angela Klewinghaus, Katharina Kormann, Martin Kronbichler,
Tobias Leicht, Yan Li, Vijay Mahadevan, Matthias Maier, Cataldo
Manigrasso, Andrew McBride, Scott Miller, Helmut Müller, Stefan
Nauber, David Neckels, M. Sebastian Pauletti, Jean-Paul Pelteret,
Jonathan Pitt, Adam Powell IV, Florian Prill, Daniel Castanon
Quiroz, Michael Rapson, Thomas Richter, Abner Salgado-Gonzalez,
Anna Schneebeli, Jan Schrage, Ralf B. Schulz, Jason Sheldon,
Michael Stadler, Martin Steigemann, Franz-Theo Suttmeier, Habib
Talavatifard, Christophe Trophime, Yaqi Wang, Sven Wetterauer,
Joshua White, Toby D. Young
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Current statistics (2016)}
\begin{itemize}
\item Free downloads, free redistribution
\begin{itemize}
\item no reliable numbers
\end{itemize}
\item Discussion group
\begin{itemize}
\item 705 members (June 2016)
\end{itemize}
\item Github statistics (June 2016)
\begin{itemize}
\item 169 forks
\item Release 8.4.1: 1212 downloads in three months
\item Release 8.3.0: 6444 downloads since 8/2015
\item Release 8.2.1: 4333 downloads since 1/2015
\end{itemize}
\item Citations of various papers
% 697 + 324 + 92 +
\begin{itemize}
\item approx 1200 (Google Scholar)
\end{itemize}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{License: LGPL}
\begin{itemize}
\item Freely available
\begin{itemize}
\item No download restrictions
\end{itemize}
\item Open Source
\begin{itemize}
\item Use and contribute
\end{itemize}
\item Suitable for commercial applications
\begin{itemize}
\item Open and closed development based on deal.II
\item License is a binding contract
\item Rights for users are irrevocable
\end{itemize}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\subsection{Learning deal.II}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{How to learn using deal.II?}
\begin{itemize}
\item Online documentation
\item Online tutorial
\item This tutorial!
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Online documentation}
\begin{itemize}
\item Automatically generated with Doxygen
\item approximately 550 classes
\item more than 2200 files
\item graphics and graphical hierarchies
\item several thousand print pages
\item \myurl{http://www.dealii.org/developer/doxygen/deal.II/modules.html}{Modules} for lookup
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Using the online manual}
\begin{center}
\url{www.dealii.org}
\end{center}
\begin{description}
\item[Modules] provides a listing of
classes and functions by topics
\item[Related pages] links to the tutorial and several explanatory
texts
\item[Classes] is an unordered list of class names suitable for
searching
\item[Classes$\rightarrow$Class Members] is an alphabetical list of
documented member functions and data
\end{description}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Online tutorial}
\begin{itemize}
\item 6 steps to an adaptive FEM solver
\item More specialized example programs for
\begin{itemize}
\item Elliptic problems in mixed form
\item Stokes
\item Wave equation (time domain)
\item Helmholtz
\item DG
\item Goal oriented adaptivity
\item ...
\end{itemize}
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{The deal.II web page}
\begin{center}
\texttt{\Large\href{http://www.dealii.org}{www.dealii.org}}
\end{center}
\end{frame}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: "slides"
%%% End: