research · note · in motion
Working through the Zingg two-book arc
Two books, taken together, are the analytical-numerics arc I keep coming back to. CFDLab is the artefact that finally answered them, on my own time.
What the arc actually is
Lomax, Pulliam, and Zingg wrote two books that, taken together, lay out the analytical-numerics arc end to end. Book one is the analytical layer: modified wavenumber, eigenvalue analysis of marching schemes, dispersion versus dissipation, truncation error. Book two is the practical layer: JST artificial dissipation, Roe + MUSCL, multigrid, shock-capturing made operational.
How I rebuilt it
Three structurally different solvers, each on its canonical problem: ARC1D (JST + implicit FD), FLOMG (FAS multigrid, transonic), upwind1d (Roe + MUSCL + TVD). Everything pinned by CI baselines so the analytical layer can keep developing without quietly breaking the solvers underneath it.
Where it sits now
The 1-D arc is done and holding: three solvers running, and the cross-project shock-tube comparison (JST artificial dissipation versus Roe + MUSCL upwinding) is the figure above — it doesn't exist until both lanes work, and that's the thing the arc was for. The codebase has since moved past the books' 1-D chapters: 100+ CI-pinned baselines, a shared library of the numerical fundamentals, and two 2-D lanes — an ARC2D reconstruction and a 2-D upwind extension — both verification-gated, neither called validated.
Next
The 2-D lanes carry the current work: the ARC2D reconstruction toward the reference-data comparison it hasn't earned yet, and the upwind extension through its exact-solution ladder. The full picture lives on /work/cfdlab.