The lectures will begin with a description of basic numerical algorithms for solving the hydrodynamic equations (hyperbolic conservation laws) on a grid, including operator split methods (like the ZEUS code), and finite volume methods (higher-order Godunov methods like PPM, as implemented in codes like Enzo, FLASH, VH-1, and PLUTO). Most of the time will be spent describing extensions of the methods to new physics like self-gravity, magnetohydrodynamics (MHD), radiation hydrodynamics, and special relativity, and extensions to include microphysics like viscosity, resistivity, and optically-thin cooling.
On the physics side, you should be familiar with the basic properties of hyperbolic PDEs, linear wave modes in both hydrodynamics and MHD, and the properties of shocks in fluids (although this material will be quickly reviewed). You may have already taken a course in astrophysical fluid dynamics, in which case you will be well prepared. If not, then for example chapters 15, 21, and 22 in Shu's book The Physics of Astrophysics, Volume II: Gas Dynamics would be good background reading.
On the numerics side, you should be familiar with the basic concepts of finite-differencing, truncation error, and convergence. There are many monographs on these topics, an excellent start is the brief introduction in chapter 19 of "Numerical Recipes". For those who are interested, an excellent comprehensive article is Nonlinear Conservation Laws and Finite Volume Methods, by R.J. LeVeque. Finally, an excellent complete monograph on the topic is LeVeque's book Finite Volume Methods for Hyperbolic Problems.
A good warm-up exercise is to solve the linear advection equation in
one dimension:
dy/dt + a dy/dx = 0
where a is a constant,
using a first-order upwind scheme, Lax-Friedrichs, and Lax-Wendroff methods.
Use a sinusoidal initial condition, y(x,0) = sin(2 pi x/L), on a domain
of size L with periodic boundary conditions.
Evolve the solution for 5 advection times L/a, for a variety
of different numerical resolutions, and plot the convergence of the L1 error
norm of the numerical solution versus the analytic solution. Don't worry if
this is too hard; we'll go over this problem in the lectures and homework
session.
On the practical side, we will use two public codes in order to demonstrate concepts introduced in the lectures. These are the ZEUS-MP code, the algorithms in which are described in three papers: Stone & Norman 1992a, Stone & Norman 1992b, and Stone, Mihalas & Norman 1992. ZEUS is a first-order operator split method that is very robust, easy-to-use, and to which it is easy to add complex physics and geometry. It performs as well as many second-order Godunov methods with diffusive Riemann solvers. The second code is Athena, described in Stone et al. 2008. It implements a higher-order Godunov method for MHD. It is demonstrably more accurate than ZEUS, and works with adaptive mesh refinement, but is slower and harder to extend with new physics. Athena is very similar to other popular codes used in astrophysics, like Enzo and FLASH, and we will discuss the similarities and differences between different codes in the lectures (hopefully including participation from students who might have used other codes!).