## Iterative methods — templates for!

### September 8, 2007

Everybody needs an iterative solver at some point or other. Recently, I sent a few links to a friend of mine. I thought I will also maintain the list in this page for future use.

- Templates for the solution of Linear systems: Building blocks for iterative methods. Richard Barrett, Michael Berry, Tony F. Chan, James Demmel, June Donato, Jack Dongarra, Victor Eijkhout, Roldan Pozo, Charles Romine, and Henk van der Vorst. SIAM
- Iterative methods for sparse linear systems. Yousef Saad. SIAM. (via the Wiki page on iterative methods).
- The iterative template library (with non-commerical use license);
- John Burkardt’s page is a very good place too, among many other things, for some of the template source codes (check out the FORTRAN codes);
- Netlib templates page with Matlab, C++, and Fortran codes; and,
- Templates for the solution of algebraic eigenvalue problems: a practical guide. Edited by Zhaojun Bai, James Demmel, Jack Dongarra, Axel Ruhe, and Henk van der Vorst. SIAM.

In case you know of any good resources that I have missed here, leave a note!

## C coding standards

### July 16, 2007

Though not strictly for scientific computations, these might still be handy:

GNU coding standard

http://www.gnu.org/prep/standards/

Programming in C

http://www.lysator.liu.se/c/index.html

C coding standards:

http://www.jetcafe.org/~jim/c-style.html

http://www.psgd.org/paul/docs/cstyle/cstyle.htm

http://www.alma.nrao.edu/development/computing/docs/joint/0009/2001-02-28.pdf

## Some high performance computing tutorials

### June 28, 2007

## Computational physics course notes online

### March 18, 2007

The lecture notes of an upper-division *Introduction to Computational Physics* course in html and pdf formats:

A complete set of lecture notes for an upper-division computational physics course. Topics covered include scientific programming in C, the numerical solution of ordinary and partial differential equations, particle-in-cell codes, and Monte Carlo methods.

I especially liked the programming methodology adopted in the course, namely,

…write our own programs–completely from scratch–in a high-level language.

And, what is more, I liked the choice of programming language much more:

Of the above languages, we can immediately rule out C++, because object-orientation is an unnecessary complication (at least, for our purposes), and FORTRAN 90, because of the absence of an inexpensive compiler. The remaining options are FORTRAN 77 and C. I have chosen to use C (augmented by some of the useful, non-object-orientated features of C++) in this course, simply because I find the archaic features of FORTRAN 77 too embarrassing to teach students in the 21st century.

And, whatever little I read of the lecture notes I liked too. Take a look!

**PS**:- For those of you coming from a physics background, there are also other lecture notes of Prof. Richard Fitzpatrick that are available online here.