

Book Lists 
 Book ListsC++Introduction to Scientific Computing 
 
Review
Pure maths isn't really my strong point and this book has a lot of pure maths in it, (including Proofs and Lemma sections which bring back horrible memories of A level pure maths lessons), so my feeling as I read it was "If I could understand this, I probably wouldn't need to read it". Of course, your mileage may vary.
There are lots of code samples, in FORTRAN and some in C, which is good, but with very few comments, which isn't so good as most of the algorithms contain nested loops which classic FORTRAN variable names. I haven't tried any of the program examples and when I went to the authors' website I couldn't find a soft copy of them, so happy typing.
Despite giving the code for each mathematical algorithm there are very few real world examples showing how the code would be used to solve them. Basically the book is vast chunks of FORTRAN interspaced with equations.
Chapter 3 covers solving spares matrices, which is what you need if you're solving large numbers of equations but only a small percentage of the terms are related, (i.e. A+B = ..., B+C = ..., C+D = ..., etc) and so far this is the only code I've found to do it, but I'm not in the position to try it out yet.
Chapter 9, which is on algorithms for parallel programming was not very useful at all. Only the theory of how you implement parallel versions of the algorithms is given and although it mentions MPI or PVI as a means to implement parallel algorithms, there are no code examples and you'll need to get hold of something like Parallel Programming in C with MPI and OpenMP
Brief Description of Contents
Chapter(s)   Contents 
1.   The Partial Differential Equations (PDE) relating to a number of physical problems are presented along with their numerical solution in the Gfem language, a programming environment for the finite element solution of PDEs. The following chapters explain the theoretical basis of such a program and how to build such a program. 
  
2.   A study of a first order finite element method for the solution of the Laplacian with Dirichlet boundary conditions. The problem is expressed in terms of energy minimisation then solved numerically by conjugate gradient method. 
  
3.   The program developed in Chapter 2 was simple, but costly in computer time, as values are repeatedly recalculated because they are not stored in memory. In this chapter a program is developed that stores these values in a matrix. This matrix is very large, of the order of the square of the number of mesh verticies, and so a way of storing it that reduces the memory requirement is required. Different storage formats, including band storage and Compressed Spare Row (CSR) storage, are proposed. (The authors point out that CSR is the American term for "Morse" storage). 
  
4.   The method in chapter 2 required little memory space, but was costly in computer time, while the method in chapter 3 was fast, but memory hungry. In this chapter the authors propose a method that combines the experiences of chapters 2 & 3 and solve the original problem via preconditioned conjugate gradient. The chapter ends by discussing the influence of mesh quality on the final solution and an automatic mesh refinement method is proposed. 
  
5.   This chapter uses the techniques introduced in the previous chapters to study more general partial differential equations; several types of boundary conditions and general second order symmetric and elliptic operators. Also introduced are approximations by finite elements of order higher than one. 
  
6.   Not all partial differential equations are symmetric, (for example advectiondiffusion equations in fluid mechanics), and this chapter develops two different numerical methods to solve these problems; LU factorisation and the GMRES algorithm. An example of how the GMRES method can be generalised to the case of nonlinear partial differential equations is given. 
  
7.   The finite difference method for approximating elliptic, parabolic and hyperbolic equations is introduced. The generalisation to several space dimensions is given for the heat equation. In cases were the spacial mesh is not uniform, sometimes it is advisable to use the finite element method, or the finite volume method, and both are briefly introduced. 
  
8.   The boundary integral representation method, or boundary integral method is explained for the case of the Laplacian in two and three dimensions. The Helmholtz equation is also explained. 
  
9.   Introduces the topic of multiprocessing and describes two mathematical approaches useful in parallel computing. 
  
Last modified 26 Aug 06

