Solutions to the fluid equations should be Galilean invariant, that is the same in every inertial frame. Recently, it has been reported that solutions generated by grid codes (like Athena) are not Galilean invariant. In fact, however, it is the test problems themselves that are flawed. They involve unresolved interfaces, so that solutions are dominated by truncation error, and it is this truncation error which violates Galilean invariance. We show below resolved solutions generated by Athena are invariant.
KH Instability Test
One of the problems used to test for Galilean invariance is the growth of the Kelvin-Helmholtz instability between two fluids of different densities. The interface between the fluids is an unresolved discontinuity (a slip-surface). The total velocity difference is equal to the sound speed $C_s$. The test is based on the KH instability test in the Athena test suite; the figure below sketches the initial conditions.
Results with Unresolved Interfaces
The images below show results typical of a grid code when the solution is computed in the rest frame (left), in a frame moving at the sound speed to the right (center), and a frame moving at ten times the sound speed to the right (right). Note the instability seems to disappear in the moving frames. This is because numerical diffusion at the interface damps the unstable modes.
Of course, numerical diffusion is not only a problem in the moving frames. It also dominates the solution in the rest frame. The images below show the same test run at different resolutions in the rest frame. Note the solution is vastly different at each resolution, and the instability seems to disappear at the lowest resolution (where the truncation error is largest).
So which solution is correct? That is, which solution should the code reproduce in any inertial frame?. Of course, this question cannot be answered unless the test is based on a resolved solution.
Results with a Resolved Interface
The images on the left below show the streamwise (x-direction), and spanwise (y-direction) velocity fluctuations from a test using uniform density, and in which the interface is spread out using a hyperbolic tangent function, with a characteristic scale a equal to twice the grid cell size. This replaces the discontinuity at the interface by a very sharp but smooth profile, and introduces a minimum lengthscale a in the problem that can be resolved. The images on the right are from a calculation in the rest frame, and on the left from a calculation moving at $100C_s$. This is even more extreme than the test above! Despite this, the images look identical.
An even more quantitative test is to measure the kinetic energy associated with motion in the spanwise (y-) direction. There are two lines shown in the figure at left below, one taken from each calculation. It only appears there is one line, because the results are very nearly identical. In both cases, exponential growth in the linear regime is captured correctly.
Resolved solutions are Galilean invariant in Athena (although there will still be differences at the level of the truncation error).
The lack of invariance for unresolved solutions is because the truncation error is not Galilean invariant, and this truncation error dominates the solution.
The problem does not lie with the Riemann solver. After all, the fluxes of conserved quantities are different in different frames (although they are related by simple Galilean transformations).
Any algorithm that reduces diffusion at unresolved interfaces will improve the results of the slip-surface test shown above. This includes the contact steepener of Colella & Woodward (1984), or interface tracking methods, or moving mesh methods. While these methods reduce the truncation error, none of them eliminate it entirely, and therefore formally solutions will still violate Galilean invariance at the level of the truncation error.