Getting Your Head Around Pulliam's CFD Notes

The PDF is one of those documents that shows up everywhere in CFD forums but nobody really breaks down for newcomers. Thomas H Pulliam wrote it while at NASA Ames, and it basically covers the numerical machinery behind most finite-difference solvers people actually use. Discretization, time marching, boundary conditions, turbulence modeling — it's all there in about 120 pages of dense notes. What most people don't realize is that this isn't a textbook. It's course notes, which means Pulliam assumes you already know what a Navier-Stokes equation is and jumps straight into how to actually compute things. That's both its strength and its weakness. If you've been coding Riemann solvers for a while, you'll find this incredibly useful. If you're trying to understand what flux splitting means from scratch, you'll be lost within the first section. I spent about three weeks working through the whole document last year while debugging a second-order upwind scheme that kept producing oscillations near a weak shock. The chapter on TVD limiters and the one on approximate Riemann solvers saved me. Specifically, Pulliam's treatment of the van Albada limiter is more practical than the textbook versions because he shows you what happens when it actually breaks down — like when your gradient ratios hit exactly zero or go negative, which happens more often than you'd think on stretched grids.

Here's the thing nobody tells you about this document: the time-marching sections are where most people stumble. Pulliam covers everything from explicit Runge-Kutta to implicit ADI schemes, and he doesn't shy away from the fact that choosing between them can make or break your simulation. I had a case once where switching from a three-stage RK scheme to a multi-grid implicit method cut my wall-clock time from about 48 hours down to roughly six. Not every problem responds that dramatically, but the difference between an explicit method and a well-tuned implicit one on a fine mesh is usually an order of magnitude at minimum. The boundary condition chapter deserves more attention than it gets. Most people just copy-paste far-field BCs and hope for the best. Pulliam walks through characteristic-based boundary treatment, which is something you should at least understand even if you end up using a simpler approach. I've seen too many simulations fail because someone slapped a non-reflecting BC on an outflow without checking whether the flow was actually subsonic there. One counter-intuitive point from the notes: higher-order schemes aren't always better, and Pulliam makes this clear without being dramatic about it. On coarse grids, a second-order method will often give you more accurate results than a fourth-order one because the dispersion errors dominate and higher-order terms actually make things worse. I learned this the hard way when I was running a transonic airfoil case and the fourth-order scheme produced a shock position that was further from the experimental data than the second-order solution. Grid refinement fixed it eventually, but not before I'd wasted two days debugging what I thought was a code error.

Another thing beginners miss is how much Pulliam emphasizes the role of artificial viscosity. In modern CFD you hear a lot about high-resolution schemes making artificial viscosity unnecessary, but that's only true on sufficiently refined meshes. When you're working with the kind of grid resolution available in practice, some amount of dissipation is still necessary for stability, and knowing how to tune it rather than just cranking it up is part of what makes a solver robust. The document is freely available online. A quick search for the NASA technical memorandum should bring it up — it's been floating around the web for over a decade at this point. I'd suggest reading the discretization chapter first if you're new to this, then going to the time-integration section, and only then tackling the boundary conditions. The turbulence model overview at the end is useful but fairly superficial; you'll want to supplement that with something more detailed if you're actually going to implement one. There are limitations to what Pulliam covers here. There's no discussion of finite-volume methods in detail — it's primarily a finite-difference treatment. If your work is on unstructured grids, you'll need to look elsewhere for the corresponding algorithms. Also, the document doesn't cover modern developments like WENO schemes or discontinuous Galerkin methods. It's solid for what it is, which is classical finite-difference CFD, but it's not a comprehensive reference for everything in the field.

Get the Full Details

Fundamental Algorithms in Computational Fluid Dynamics - YouTube
Fundamental Algorithms in Computational Fluid Dynamics - YouTube

Bottom line: read it, work through the examples if you can, and don't expect it to hand you a complete implementation. It's a foundation, not a cookbook. The people who get the most out of it are the ones who already have some coding experience and use it to fill in the theoretical gaps.