Current postgraduate taught students
COMP60071: Introduction to Computational Science (2007-2008)
Modern Science and Engineering have become increasingly dependent on large-scale numerical simulation to aid progress in research, development and design. It is difficult to think of a significant Science or Engineering project that does not rely on some aspect of Computational Science.
The aim of this course unit is to provide an introduction to the range of issues (algorithmic, software and hardware) that need to be addressed to derive efficient and adaptable numerical solutions of some simple PDEs that model physical problems.
On completion of the module, students will
have an understanding of a high-level programming language (Fortran 95);
have an understanding of the execution cycle of a numerical code that simulates a simple PDE;
have an understanding of the factors in the execution cycle that affect performance on a sequential machine;
have a basic understanding of the fundamentals of computer architecture;
have an understanding of the benefits of abstraction in program design.
Assessment of Learning outcomesAll learning outcomes are assessed in the laboratory and via the mini-project.
Connection to MATH66011, MATH66101, COMP60081 throughout.
Fortran 95Basic language elements - data types, derived data types, numerical
expressions, control structures. (2 lectures)
Procedures - subprograms, functions, recursion. (2 lectures)
Arrays - array syntax and array operations. (1 lecture)
Intrinsic procedures (1 lecture).
Object-oriented features. (1 lecture)
Examples to include
(i) Step-by-step methods for the solution of ODE IVPs.
(ii) Locally adaptive quadrature (to illustrate recursion).
Numerical LibrariesBLAS, LAPACK, NAG Library, etc.
Sparse matrices (HSL, NAG, etc.) (2 lectures).
Simple PDE ExamplesSimple motivating examples (with simple boundary conditions)
(i) elliptic PDE (Laplace on a unit square with Dirichlet boundary
conditions) - finite difference equations for Laplace's equation;
refer to MATH60001 for linear equation solution methods (direct
vs.~iterative). Scaling with problem size (dependence of error on
mesh size); Fortran 95 codes. (3 lectures)
(ii) parabolic PDE (heat conduction on a unit bar) - Finite difference
equations for the Heat Conduction equation; Explicit, Implicit and
Crank-Nicolson schemes; stability; Fortran 95 code. (2 lectures)
Examples to include
(i) Five point finite difference replacement of Laplaces equation -
both direct (Cholesky and banded Cholesky) solvers and iterative
(ii) Explicit and Fully Implicit schemes for 1-D heat conduction
Computer ArchitectureBasic von Neumann model (1 lecture);
memory structure (1 lecture);
system software (1 lecture).
Performance of Scientific CodesSolver internals and interaction with system architecture. Only selected effects to be explored; stride access to memory - connection with COMP60081. (2 lectures).
ResumeSearch for best (most efficient) solution to the simple examples and illustration that a performance problem remains -> need more efficient algorithms or more powerful hardware. Consider implications of increased problem complexity for performance; more complex domains, more complex PDEs. (1 lecture).
Core TextTitle: Scientific computing: an introductory survey (2nd edition)
Author: Heath, Michael T.
Supplementary TextTitle: Fortran 95/2003 explained (3rd edition)
Author: Metcalf, Michael, John Reid and Malcolm Cohen
Publisher: Oxford University Press