File: handson.rst.txt

package info (click to toggle)
petsc 3.22.5%2Bdfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 516,740 kB
  • sloc: ansic: 814,333; cpp: 50,948; python: 37,416; f90: 17,187; javascript: 3,493; makefile: 3,198; sh: 1,502; xml: 619; objc: 445; java: 13; csh: 1
file content (377 lines) | stat: -rw-r--r-- 9,737 bytes parent folder | download
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
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
.. _handson:

==================================
Tutorials, by Mathematical Problem
==================================

TODO: Add link to Python example here

.. _handson_example_1:

Linear elliptic PDE on a 2D grid
--------------------------------

WHAT THIS EXAMPLE DEMONSTRATES:

-  Using command line options
-  Using Linear Solvers
-  Handling a simple structured grid

FURTHER DETAILS:

-  `Mathematical description of the problem <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/tutorials/ex50.c.html#line1>`__
-  `the source code <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ksp/ksp/tutorials/ex50.c.html#line21>`__

DO THE FOLLOWING:

-  Compile ``src/ksp/ksp/tutorials/ex50.c``

   .. code-block:: console

       $ cd petsc/src/ksp/ksp/tutorials
       $ make ex50



-  Run a 1 processor example with a 3x3 mesh and view the matrix
   assembled

   .. code-block:: console

           $ mpiexec -n 1 ./ex50  -da_grid_x 4 -da_grid_y 4 -mat_view

   Expected output:

   .. literalinclude:: /../src/ksp/ksp/tutorials/output/ex50_tut_1.out
    :language: none


-  Run with a 120x120 mesh on 4 processors using superlu_dist and
   view the solver options used

   .. code-block:: console

           $ mpiexec -n 4 ./ex50  -da_grid_x 120 -da_grid_y 120 -pc_type lu -pc_factor_mat_solver_type superlu_dist -ksp_monitor -ksp_view

   Expected output:

   .. literalinclude:: /../src/ksp/ksp/tutorials/output/ex50_tut_2.out
    :language: none


-  Run with a 1025x1025 grid using multigrid solver on 4
   processors with 9 multigrid levels

   .. code-block:: console

           $ mpiexec -n 4 ./ex50 -da_grid_x 1025 -da_grid_y 1025 -pc_type mg -pc_mg_levels 9 -ksp_monitor

   Expected output:

   .. literalinclude:: /../src/ksp/ksp/tutorials/output/ex50_tut_3.out
    :language: none


.. _handson_example_2:

Nonlinear ODE arising from a time-dependent one-dimensional PDE
---------------------------------------------------------------

WHAT THIS EXAMPLE DEMONSTRATES:

-  Using command line options
-  Handling a simple structured grid
-  Using the ODE integrator
-  Using call-back functions

FURTHER DETAILS:

-  `Mathematical description of the problem <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex2.c.html#line13>`__
-  `the source
   code <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex2.c.html#line36>`__

DO THE FOLLOWING:

-  Compile ``src/ts/tutorials/ex2.c``

   .. code-block:: console

            $ cd petsc/src/ts/tutorials
            $ make ex2


-  Run a 1 processor example on the default grid with all the
   default solver options

   .. code-block:: console

           $ mpiexec -n 1 ./ex2 -ts_max_steps 10 -ts_monitor

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex2_tut_1.out
    :language: none


-  Run with the same options on 4 processors plus monitor
   convergence of the nonlinear and linear solvers

   .. code-block:: console

           $ mpiexec -n 4 ./ex2 -ts_max_steps 10 -ts_monitor -snes_monitor -ksp_monitor

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex2_tut_2.out
    :language: none


-  Run with the same options on 4 processors with 128 grid points

   .. code-block:: console

           $ mpiexec -n 16 ./ex2 -ts_max_steps 10 -ts_monitor -M 128

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex2_tut_3.out
    :language: none


.. _handson_example_3:

Nonlinear PDE on a structured grid
----------------------------------

WHAT THIS EXAMPLE DEMONSTRATES:

-  Handling a 2d structured grid
-  Using the nonlinear solvers
-  Changing the default linear solver

FURTHER DETAILS:

-  `Mathematical description of the problem <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/snes/tutorials/ex19.c.html#line19>`__
-  `main program source
   code <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/snes/tutorials/ex19.c.html#line94>`__
-  `physics source
   code <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/snes/tutorials/ex19.c.html#line246>`__

DO THE FOLLOWING:

-  Compile ``src/snes/tutorials/ex19.c``

   .. code-block:: console

            $ cd petsc/src/snes/tutorials/
            $ make ex19


-  Run a 4 processor example with 5 levels of grid refinement,
   monitor the convergence of the nonlinear and linear solver and
   examine the exact solver used

   .. code-block:: console

           $ mpiexec -n 4 ./ex19 -da_refine 5 -snes_monitor -ksp_monitor -snes_view

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_1.out
    :language: none


-  Run with the same options but use geometric multigrid as the
   linear solver

   .. code-block:: console

           $ mpiexec -n 4 ./ex19 -da_refine 5 -snes_monitor -ksp_monitor -snes_view -pc_type mg

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_2.out
    :language: none


   Note this requires many fewer iterations than the default
   solver

-  Run with the same options but use algebraic multigrid (hypre's
   BoomerAMG) as the linear solver

   .. code-block:: console

           $ mpiexec -n 4 ./ex19 -da_refine 5 -snes_monitor -ksp_monitor -snes_view -pc_type hypre

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_3.out
    :language: none


   Note this requires many fewer iterations than the default
   solver but requires more linear solver iterations than
   geometric multigrid.

-  Run with the same options but use the ML preconditioner from
   Trilinos

   .. code-block:: console

           $ mpiexec -n 4 ./ex19 -da_refine 5 -snes_monitor -ksp_monitor -snes_view -pc_type ml

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_8.out
    :language: none


-  Run on 1 processor with the default linear solver and profile
   the run

   .. code-block:: console

           $ mpiexec -n 1 ./ex19 -da_refine 5 -log_view

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_4.out
    :language: none



   Search for the line beginning with SNESSolve, the fourth column
   gives the time for the nonlinear solve.

-  Run on 1 processor with the geometric multigrid linear solver
   and profile the run

   .. code-block:: console

           $ mpiexec -n 1 ./ex19 -da_refine 5 -log_view -pc_type mg

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_5.out
    :language: none



   Compare the runtime for SNESSolve to the case with the default
   solver

-  Run on 4 processors with the default linear solver and profile
   the run

   .. code-block:: console

           $ mpiexec -n 4 ./ex19 -da_refine 5 -log_view

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_6.out
    :language: none


   Compare the runtime for ``SNESSolve`` to the 1 processor case with
   the default solver. What is the speedup?

-  Run on 4 processors with the geometric multigrid linear solver
   and profile the run

   .. code-block:: console

           $ mpiexec -n 4 ./ex19 -da_refine 5 -log_view -pc_type mg

   Expected output:

   .. literalinclude:: /../src/snes/tutorials/output/ex19_tut_7.out
    :language: none


   Compare the runtime for SNESSolve to the 1 processor case with
   multigrid. What is the speedup? Why is the speedup for
   multigrid lower than the speedup for the default solver?

.. _handson_example_4:

Nonlinear time dependent PDE on unstructured grid
-------------------------------------------------

WHAT THIS EXAMPLE DEMONSTRATES:

-  Changing the default ODE integrator
-  Handling unstructured grids
-  Registering your own interchangeable physics and algorithm
   modules

FURTHER DETAILS:

-  `Mathematical description of the problem <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex11.c.html>`__
-  `main program source code <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex11.c.html#line1403>`__
-  `source code of physics modules <PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/ts/tutorials/ex11.c.html#line186>`__

DO THE FOLLOWING:

-  Compile ``src/ts/tutorials/ex11.c``

   .. code-block:: console

            $ cd petsc/src/ts/tutorials
            $ make ex11


-  Run simple advection through a tiny hybrid mesh

   .. code-block:: console

           $ mpiexec -n 1 ./ex11 -f ${PETSC_DIR}/share/petsc/datafiles/meshes/sevenside.exo

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex11_tut_1.out
    :language: none


-  Run simple advection through a small mesh with a Rosenbrock-W
   solver

   .. code-block:: console

           $ mpiexec -n 1 ./ex11 -f ${PETSC_DIR}/share/petsc/datafiles/meshes/sevenside.exo -ts_type rosw

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex11_tut_2.out
    :language: none


-  Run simple advection through a larger quadrilateral mesh of an
   annulus with least squares reconstruction and no limiting,
   monitoring the error

   .. code-block:: console

           $ mpiexec -n 4 ./ex11 -f ${PETSC_DIR}/share/petsc/datafiles/meshes/annulus-20.exo -monitor Error -advect_sol_type bump -petscfv_type leastsquares -petsclimiter_type sin

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex11_tut_3.out
    :language: none


   Compare turning to the error after turning off reconstruction.

-  Run shallow water on the larger mesh with least squares
   reconstruction and minmod limiting, monitoring water Height
   (integral is conserved) and Energy (not conserved)

   .. code-block:: console

           $ mpiexec -n 4 ./ex11 -f ${PETSC_DIR}/share/petsc/datafiles/meshes/annulus-20.exo -physics sw -monitor Height,Energy -petscfv_type leastsquares -petsclimiter_type minmod

   Expected output:

   .. literalinclude:: /../src/ts/tutorials/output/ex11_tut_4.out
    :language: none