-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgallery.html
226 lines (194 loc) · 11.4 KB
/
gallery.html
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
<h1>Gallery & Demo Codes</h1>
<script>
var video = document.getElementById('video');
video.addEventListener('click',function(){
video.play();
},false);
</script>
<h2>Multigrid solvers: BoxMG in Peano</h2>
<table><tr>
<td><img src="gallery/boxmg-3d.png" /></td>
<td>
<p>
Together with Marion Weinzierl, I've submitted a paper
</p>
<pre>
Marion Weinzierl, Tobias Weinzierl: Quasi-matrix-free hybrid multigrid on dynamically adaptive Cartesian grids. ACM Transactions on Mathematical Software
</pre>
<p>
A preprint is available from <a href="https://arxiv.org/abs/1607.00648">arXiv</a>.
In the paper, we discuss various realisation idioms for multigrid that fuse ideas
of FAS, hierarchical generating systems, Galerkin coarse grid operator computations,
stencil compression and BoxMG determining problem-dependent inter-grid transfer operators.
It should be very straightforward to reconstruct the ideas from the paper at hands of a Peano download.
However, I summarise the most important points/pitfalls here:
</p>
<ul>
<li>The purely geometric multigrid solvers basically follow the Chapter 4.2 from the Peano cookbook.</li>
<li>For the Galerkin and BoxMG part of the manuscript, we add an integer index to each vertex and make it point
to a PlainDoubleHeap entry. The stencils are stored on Peano's heap. See the class peano::heap::DoubleHeap for a
documentation.
</li>
<li>To compute Galerkin operators and the BoxMG operators from stencils stored within the vertex can be
tedious and error-prone. A similar reasoning holds for the computation of the stencils. Peano offers a
toolbox matrixfree that provides routines for this. See the download section or sourceforge. Notably, consult
<ul>
<li>matrixfree::stencil::StencilFactory for routines that yield standard FEM stencils for diffusion and convection operators.</li>
<li>matrixfree::stencil::ElementMatrix for routines that allow you to extract from the 4/8 vertices of a cell the element stiffness matrices.</li>
<li>matrixfree::solver::Multigrid for routines that accept prolongation, restriction and operator stencils and return the Galerkin coarse
grid operators. The class also provides dummies that make prolongation and restriction be d-linear operators.</li>
<li>matrixfree::solver::BoxMG offers routines that accept the stencils of one fine grid patch as one large vector and return the BoxMG operators
(or simple aggregation or injection).</li>
</ul>
The classes and functions in the namespace matrixfree have been built with Peano in mind but they do not
directly use Peano for most routines. Instead, they rely on simple double vectors as input. As a result
you can also use them in different projects.
</li>
</ul>
</td></tr></table>
<h2>Helmholtz problems: geometric additive multigrid, hierarchical basis and BPX-type solvers</h2>
<table width="60%">
<tr>
<td valign="top">
<p>
This work is based upon work I've submitted together with Bram Reps as
</p>
<pre>
Bram Reps, Tobias Weinzierl: Complex additive geometric multilevel solvers for Helmholtz
equations on spacetrees. ACM Transactions on Mathematical Software
</pre>
<p>
You can read a preprint at <a href="http://arxiv.org/abs/1508.03954" target="_blank">arXiv</a>.
A source code snapshot of the code used for the paper is available
<a href="https://sourceforge.net/projects/peano/files/demo-codes">here</a>.
Please note that this is a complete snapshot of
Peano with all of its glue code and the matrixfree toolbox which is a small
collection of routines I use for matrix free linear algebra. As it is a
snapshot, both Peano and its toolbox might be available as newer versions
today, and it might be reasonable to rewrite a solver from scratch if you
need one for a particular project. This snapshot is merely made available
as a documentation and to facilitate reproducability. Here are some
things to do if you work with the snapshot:
</p>
<ol>
<li>Download the code snapshot from <a href="https://sourceforge.net/projects/peano/files/demo-codes">Peano's demo code section</a>.
<li>Untar the archive with <pre>tar -xzvf helmholtz-snapshot.tar.gz</pre>.
<li>Type in <pre>make</pre> which gives you a list of available build targets. You might have to update the makefile
however to adopt pathes or variables. For a quick start with the GNU compiler, try <pre>make gcc-release-dim2</li>
<li>There is a script create-main-executables that builds (with Intel) all the executables used in the paper. There are
release and asserts variants, we have dimensions 2 through 7, there are vectorised (with pragmas) and not vectorised versions,
and we have multichannel variants where the number of channels is set through the environment variable CHANNELS.
Not all possible combinations are currently provided through the makefile, but the extension of the file should be straightforward
if you need additional targets.</li>
<li>Once you have an executable at hand, run the code <pre>./peano-2d-gcc-release</pre> without any argument. It displays a usage
message. <pre>./peano-2d-gcc-release help</pre> yields more verbose output.</li>
<li>A first experiment might be <pre>./peano-2d-gcc-release sin transition 0.7 0.1 0.01 yes no 100 101</pre>
Our code writes binary legacy VTK files that you can open with Paraview or VisIt, e.g. The file sequence of
interest in the first place is channel-0-finegrid*. The files hold one snapshot per iteration, i.e. you can
investigate the evolution of the adaptivity pattern.</li>
<li>If you want to study the algorithm's implementation, the most interesting file should be helmholtz/mappings/AdditiveMultigridWithJacobi.cpp
and variants of this file.</li>
</ol>
<p>
Compatibility remarks: We use some C++14 features in this code. Our tests with GCC 4.8.3 and GCC 4.9.1 have been successful, but we know
that older compiler versions (anthing older than 4.7) might face problems. So please ensure that you have an up-to-date translator version.
</p>
</td>
<td>
<img src="gallery/helmholtz00.png" width="320px"/> <br />
<img src="gallery/helmholtz01.png" width="320px" /> <br />
<img src="gallery/helmholtz02.png" width="320px" /> <br />
<video width="320" height="300" controls="controls" autoplay="autoplay">
<source src="https://community.dur.ac.uk/tobias.weinzierl/papers/helmholtz2015/two-particles.ogv" type="video/ogg">
Your browser does not support the video tag.
</video>
</td>
</tr>
</table>
<h2>Particle in Cell methods</h2>
<table width="60%">
<tr><td>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/peano3/gallery/pit_2d.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<video width="400" height="300" controls="controls" autoplay="autoplay" poster="https://community.dur.ac.uk/tobias.weinzierl/papers/pic2014/screenshot-13.png">
<source src="http://www5.in.tum.de/peano3/gallery/pit_3d.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/peano3/gallery/particles-3d.ogv" type="video/ogg">
Your browser does not support the video tag.
</video>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/peano3/gallery/picard/movie_stat_of_the_art.ogv" type="video/ogg">
<source src="http://www5.in.tum.de/peano3/gallery/picard/movie_stat_of_the_art.m4v" type="video/m4v">
Your browser does not support the video tag.
</video>
<p>
Illustrations stem from the papers
</p>
<pre>
Weinzierl, T., Verleye, B., Henri, P. & Roose, D. (2016). Two Particle-in-Grid Realisations on Spacetrees.
Parallel Computing 52: 42-64.
Eckhardt, W., Glas, R., Korzh, D., Wallner, S. & Weinzierl, T. (2016), On-the-fly memory compression for
multibody algorithms, in Joubert, G.R., Leather, H., Parsons, M., Peters, F. & Sawyer, M. eds, Advances
in Parallel Computing 27: International Conference on Parallel Computing (ParCo) 2015. Edinburgh, Scotland,
IOS Press, Amsterdam, 421-430.
</pre>
<p>
You can find a prepring of the Parallel Computing manuscript at <a href="http://arxiv.org/abs/1508.02435" target="_blank">arXiv</a>.
The underlying particle management within Peano is available as predefined user toolbox:
if you want to use it, its merely a few simple additions to the specification file.
No particle update has to be rewritten.
</p>
</td>
<td>
<img src="gallery/pic00.png" /> <br />
<img src="gallery/pic01.png" /> <br />
<img src="gallery/pic02.png" /> <br />
</td>
</tr>
</table>
<h2>PeanoClaw/hyperbolic solvers</h2>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/persons/unterweg/peanoclaw/ShockBubble_162_18_6.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/persons/unterweg/peanoclaw/ShockBubble_162_18_6_Grid.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/persons/unterweg/peanoclaw/Storegga_2916_108_12.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/persons/unterweg/peanoclaw/Storegga_2916_108_12_Subgrids.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<p>
Illustrations stem from the dissertation
<pre>
K. Unterweger: High-Performance Coupling of Dynamically Adaptive Grids and Hyperbolic Equation Systems, 2016
</pre>
The underlying patch management within Peano is available as predefined user toolbox:
if you want to use it, its merely a few simple additions to the specification file.
This toolbox is also used in the <a href="http://www.exahype.eu">ExaHyPE</a> project.
The shockbubble experiment above uses the 3D Euler solver of David Ketcheson as found in the Clawpack solver.
The tsunami simulation uses shallow water kernels by Michael Bader's group with a bathymetry from GEBCO (
The GEBCO_08 Grid, version 20100927, <a href="http://www.gebco.net">http://www.gebco.net</a> ).
</p>
<h2>Shallow water/experimental code</h2>
<video width="400" height="300" controls="controls" autoplay="autoplay">
<source src="http://www5.in.tum.de/peano3/gallery/ppl2014.ogg" type="video/ogg">
<source src="http://www5.in.tum.de/peano3/gallery/ppl2014.mp4" type="video/mp4">
<source src="http://www5.in.tum.de/peano3/gallery/ppl2014.avi" type="video/x-msvideo">
Your browser does not support the video tag.
</video>
<p>
The video discusses work of the paper
<pre>
Weinzierl, Tobias, Bader, Michael, Unterweger, Kristof & Wittmann, Roland (2014). Block Fusion on Dynamically Adaptive Spacetree Grids for Shallow Water Waves. Parallel Processing Letters 24(3): 1441006.
</pre>
</p>