# COMP60071: Introduction to Computational Science (2007-2008)

## Introduction

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.

## Aims

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.

## Learning Outcomes

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 outcomes

All learning outcomes are assessed in the laboratory and via the mini-project.

## Syllabus

Connection to MATH66011, MATH66101, COMP60081 throughout.

### Fortran 95

Basic 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 Libraries

BLAS, LAPACK, NAG Library, etc.
Sparse matrices (HSL, NAG, etc.) (2 lectures).

### Simple PDE Examples

Simple 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
(Gauss-Seidel/SOR) solvers.
(ii) Explicit and Fully Implicit schemes for 1-D heat conduction
problem.

### Computer Architecture

Basic von Neumann model (1 lecture);
memory structure (1 lecture);
system software (1 lecture).

### Performance of Scientific Codes

Solver internals and interaction with system architecture. Only selected effects to be explored; stride access to memory - connection with COMP60081. (2 lectures).

### Resume

Search 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).

## Reading List

##### Core Text
Title: Scientific computing: an introductory survey (2nd edition)
Author: Heath, Michael T.
ISBN: 0071244891
Publisher: McGraw-Hill
Edition: 2nd
Year: 2004

##### Supplementary Text
Title: Fortran 95/2003 explained (3rd edition)
Author: Metcalf, Michael, John Reid and Malcolm Cohen
ISBN: 0198526938
Publisher: Oxford University Press
Edition: 3rd
Year: 2004