Up to course homepage.
mpiCCon Nada's workstations you need to add the modules
mpich/1.2. Some simple MPI exercises.
For students wishing to buy a good book on C++ I would recommend "The C++ Programming Language" by Bjarne Stroustrup, available from e.g.
|Wednesday||17/1||10.15-12.00||4523||Overview of techniques for grid generation with emphasis on structured boundary-fitted grids. Introduction to C++ and object-oriented programming. Efficiency and optimization for single processor architectures. Implementation of algebraic grid generator.|
|Wednesday||14/2||10.15-12.00||D35||Partial differential equations. Difference approximations on curvilinear grids and analysis of numerical schemes. Parallel programming for distributed memory architectures using MPI. Metrics for parallel performance. Implementation of distributed array class using MPI.|
|Wednesday||28/3||10.15-12.00||D33||The incompressible Navier-Stokes equations. The structure of a computational fluid dynamics solver (CFD). Handling of boundary conditions. Brief overview of existing CFD codes, other parallel architectures and Fortran 90. Implementation of a parallel CFD solver.|
|Date||Time||Lab||There may be computers available in the labs outside of scheduled classes. Please refer to Nada's computer usage page for more information.|
If there is sufficient interest two or three additional (voluntary) lectures on object-oriented design can be given. These will not be directly related to the course but may be useful for students who have little or no previous experience of object-oriented programming.
NB! There have been some problems with the header file iostream.h in Workshop 5.0 on Sun workstations since the operating system upgrade. Add the module workshop/6.0 instead (for laboration 3).
Supplementary notes on MPI.
|Lecture 1 (17/1)||About the course. Types of computational grids.|
|Lecture 2 (17/1)||Basic C++: loops, selection, functions, objects and classes.|
|Lecture 3 (25/1)||Techniques for structured boundary-fitted grid generation.|
|Lecture 4 (25/1)||C++: arrays, pointers, derived classes and inheritance.|
|Lecture 5 (31/1)||Grid generation: parameterization and node distribution. C++ representation.|
|Lecture 6 (31/1)||File I/O, operator overloading. The KeLP and Overture libraries.|
|Lecture 7 (7/2)||Partial differential equations and numerical schemes for solving them|
|Lecture 8 (7/2)||Finite difference methods: discretization & stability on uniform grids|
|Lecture 9 (14/2)||Parallel architectures and MPI.|
|Lecture 10 (14/2)||MPI: Point-to-point communication, blocking and non-blocking.|
|Lecture 11 (21/2)||MPI: Global communication. Parallel performance metrics|
|Lecture 12 (21/2)||Measuring parallel performance. Distribution of computational grids|
|Lecture 13 (14/3)||Difference operators on structured non-uniform 1D grids|
|Lecture 14 (14/3)||Implementation of computational codes. Profiling and optimisation.|
|Lecture 15 (21/3)||Difference operators on structured grids in several space dimensions.|
|Lecture 16 (21/3)||Discretisation of PDEs on structured grids. Implications on parallel efficiency.|
|Lecture 17 (28/3)||The Navier-Stokes equations.|
|Lecture 18 (28/3)||The Navier-Stokes equations.|
|Lecture 19 (3/5)||CFD Solvers: CFX & Diffpack. Fortran 90.|
|Lecture 20 (3/5)||Boundary conditions. Representation of boundary conditions and PDEs in C++.|
|Lecture 21 (8/5)||Efficient C++: multidimensional arrays, cache and loop order.|
|Lecture 22 (8/5)||Efficient C++: Templates, function calls & friends. C++ vs. Fortran.|
|Lectures 23-24 (17/5)||Operator overloading & efficency. Brief course summary|
Up to course homepage.
Responsible for this page: Christer Andersson
Technical support: <firstname.lastname@example.org>