Module | Contents | Exercises |
---|---|---|

1: The first Diffpack encounter
2h lecture and 1h exercise |
Connecting yourself to Diffpack, "Hello World!" programs, a 1D heat conduction problem, a 1D wave equation, curve plotting. Ch. 1.1, 1.2.2-1.2.5, 1.3.2-1.3.4, Appendix B.2.1. | Type a "Hello World!" program.
Exercise 1.4. |

2: Intro to C++ programming
1h lecture and 1h exercise |
Dissection of a simple C++ class (MyVector) for representing vectors; constructors, inline functions, overloaded operators, the const concept, the C/C++ preprocessor, arguments passed by value and reference. Ch. 1.5.2. | Exercises 1.9-1.11. |

3: Intro to object-oriented programming (OOP)
2h lecture and 1h exercise |
Motivation for the object concept, outline of C++ classes, inheritance, virtual functions. Examples: programming with various matrix formats, designing an ODE solver environment, grid and field abstractions, a PDE solver coded as a class. Ch. 1.5.1, 1.5.3-1.5.5, 1.6.1. | Exercise 1.17. |

4: Intro to finite element programming
2h lecture and 1h exercise |
A very simple Poisson equation solver in 2D (class Poisson0); explanation of each function. Ch. 3.1. | Extend class Poisson0 to a 2D convection-diffusion (CD) solver (with constant velocity), u=0 on the boundary and a constant source term. |

5: Visualization support and the Diffpack menu system
2h lecture and 1h exercise |
Recoding class Poisson0 with more flexibility: class Poisson1. Operating and coding with the menu system, "space-dimension-independent" code, storage of fields, visualization of fields. Ch. 3.2-3.4. | Repeat the previous exercise with class Poisson1 (put the velocity components on the menu). Visualize the solution field in Plotmtv, Vtk, Matlab etc. |

6: Finite element programming tools
1h lecture and 2h exercise |
Representing boundary condition information, line/surface integrals, simple mesh generation tools, debugging, automatic report generation, using OOP to extend or specialize a simulator. Ch. 3.5. | Repeat the previous exercise, but implement the solver as a subclass of ReportPoisson2. Generate a non-trivial geometry, introduce an "outflow" boundary with Neumann conditions, and visualize the simulation results. |

7: Time-dependent finite element problems
1h lecture and 2h exercise |
Heat equation solvers as a minor extension of the Poisson equation solvers, class TimePrm for time data, visualization of time-dependent data. Ch. 3.9-3.10. | Exercise 3.11. |

8: A fast wave equation solver
1h lecture and 1h exercise |
Increasing the efficiency by precomputing components of the linear system, application to a 1D/2D/3D wave equation in general geometries, the field concept, restarting simulations. Ch. 3.11. | Exercise 3.14-3.15. |

9: Nonlinear problems
1h lecture |
A nonlinear heat equation as a simple extension of a linear heat equation, successive substitutions and Newton-Raphson iteration. Ch. 4.2. | |

10: A solver for 2D/3D thermo-elasticity
1h lecture |
Definition of the PDEs in the linear thermo-elasticity problem, finite element discretization, implementation of a vector equation in Diffpack, computation of derivatives (stresses). Ch. 5.1. | |

11: Solving systems of PDEs by assembling independent solvers
2h lecture and 2h exercise |
If a system of PDEs can be solved by a sequential approach, Diffpack offers tools for combining existing solvers (e.g. Poisson eq. solvers, convection-diffusion solvers, elasticity solvers etc.) to build a solver for the system without modifying the original codes. Ch. 7. | Coupling of thermo-elasticity and transient heat conduction. |

12: Advanced Diffpack Toolboxes
1h lecture |
Overview of the Adaptivity Toolbox, plus the upcoming Multigrid Toolbox, Domain Decomposition Toolbox and the parallel-Diffpack Toolbox. Each of these toolboxes can be incorporated in existing solvers by about 10 lines of extra code. | |

13: Two finite element Navier-Stokes solvers
1h lecture |
An implicit Navier-Stokes solver based on the penalty method and an efficient explicit solver based on velocity correction. Ch. 6.3 and 6.5. | |

14: Tools for representing and solving sparse linear systems
1h lecture |
Overview of vector and matrix storage formats, abstractions for linear systems, preconditioners, and linear solvers. Examples on the use of these abstractions in finite difference solvers for the Poisson equation. Appendix D. |

Copyright © inuTech GmbH. All rights reserved. Questions and comments regarding this web site should be directed to diffpack@inutech.de