Translated from the author's Korean original. Read the original (한국어)
[Paper Review] Not Killing Sound at Low Mach — An AP IMEX Wave Scheme
With these parameters the step count is exactly M=128/ε, and a log-decay of 0.154/ε reproduces the explicit column.
Put a low-Mach flow in a compressible code and a faster sound speed sounds like a sharper answer. It is not. Drop the Mach number and a standard upwind scheme wipes a perfectly good wave off the grid. Arun, Das Gupta, and Samantaray (2019) pin that collapse on the linear wave system and build an asymptotic-preserving (AP) scheme with IMEX-RK, stable without reference to the Mach number. The reason the acoustic operator has to be implicit is sitting in the numbers below.
Slide to the left and the red upwind curve climbs with slope , while the cyan AP curve stays flat.
At the ratio of the two curves reaches the hundreds. What grows as Mach falls is not the wave. It is the upwind numerical viscosity.
When ε goes to zero, the grid eats the wave#
The scaled isentropic Euler equations carry one small parameter, the Mach number . The pressure term enters the momentum equation as .
is density, is velocity, and is pressure. is reference velocity over reference sound speed.
As the solution goes to the incompressible limit. That is a singular perturbation. The authors cut the analysis down to the linear wave system.
is the linearized density perturbation and is the sound speed of that state. The effective sound speed is . Shrink the Mach number and that acoustic speed blows up.
The well-prepared space — the solutions that must survive#
In the limit the solution does not wander. It collects in the well-prepared space: constant density, divergence-free velocity.
That space is the kernel of the acoustic operator . The discrete solution has to land there too. Dellacherie (2010) showed that a scheme which breaks the invariance loses accuracy at low Mach. Keep the kernel and the scheme is asymptotically accurate (AA). Keep the stability limit independent of and it is asymptotic preserving (AP).
Upwind viscosity grows in proportion to the sound speed#
The culprit is upwind numerical viscosity. Diagonalize the wave system into characteristic variables and it splits into two scalar advections at speeds . A Rusanov upwind step on each mode has this amplification.
is the acoustic CFL, is the phase per cell, and is the wavenumber.
One step barely hurts. The stack is the problem. Reaching a fixed physical time takes acoustic steps. For small the decay per step is , and of them produce this log-decay.
Drop the Mach number by a decade and the effective viscosity climbs a decade. The slope on the red curve above is that proportion.
Operator splitting — convection explicit, acoustics implicit#
Split the equations by time scale and two operators show up.
is convection, time scale . is acoustics, time scale . All of the stiffness sits in . Integrate that part implicitly. Leave convection explicit. The mix is IMEX (Implicit-Explicit). Whether the same split still holds a time step all the way to Mach 0 is the question in an IMEX TVD reproduction.
Implicit acoustics make central differences stable. The upwind viscosity drops out. is set by slow convection, not by fast sound. Inside this model, a smaller is not a reason to shrink the step.
IMEX-RK absorbs the stiffness#
Time integration is IMEX Runge-Kutta (IMEX-RK). The explicit tableau carries . The implicit tableau carries . At each stage the acoustics condense into an elliptic equation for density, a pressure-Poisson lookalike.
is the diagonal coefficient of the IMEX tableau and is the Laplacian. Invertibility of that elliptic problem comes from saddle-point theory. On the grid, circulant matrices give the same conclusion. A unique solution, uniform stability independent of , and invariance of the well-prepared space.
Python — reproducing the amplitude decay of one mode#
The code below computes the upwind amplification of one Fourier mode and prints the amplitude left after physical time , one Mach number at a time. The implicit scheme keeps the mode, so its amplitude stays at 1.
import numpy as np
a = 1.0 # linearization sound speed
k = 2 * np.pi # single Fourier mode on [0,1]
T = 1.0 # fixed physical end time
nu = 0.5 # acoustic CFL number
def upwind_amp_factor(eps, N):
"""|g| of one characteristic mode under Rusanov on the wave system."""
c = a / eps # acoustic speed c = a/ε
dx = 1.0 / N
th = k * dx # phase per cell θ = kΔx
re = 1.0 - nu * (1.0 - np.cos(th))
im = nu * np.sin(th)
return np.hypot(re, im) # |g| <= 1
def retained_amplitude(eps, N):
"""Mode amplitude after physical time T (upwind vs implicit)."""
c = a / eps
dx = 1.0 / N
dt = nu * dx / c # acoustic CFL step
M = T / dt # number of explicit steps
explicit = upwind_amp_factor(eps, N) ** M
implicit = 1.0 # central-implicit preserves the mode
return M, explicit, implicit
if __name__ == "__main__":
N = 64
print(f"{'eps':>8} {'steps M':>10} {'explicit':>12} {'AP':>6}")
for eps in [0.4, 0.2, 0.1, 0.05, 0.02, 0.01]:
M, ex, ap = retained_amplitude(eps, N)
print(f"{eps:8.3f} {M:10.0f} {ex:12.3e} {ap:6.2f}")The output looks like this.
eps steps M explicit AP
0.400 320 6.804e-01 1.00
0.200 640 4.629e-01 1.00
0.100 1280 2.143e-01 1.00
0.050 2560 4.591e-02 1.00
0.020 6400 4.430e-04 1.00
0.010 12800 1.980e-07 1.00Drop the Mach slider and the red amplitude hits the floor before physical time is over. Push CFL toward 1 and shrinks, so the decay eases for a moment. Drop further and that gain disappears under the stack. Raising only partly helps: and do not cancel.
Plug the code's numbers into the step-count formula and it closes. With , , , and , and . Then , so . The printed steps 320, 640, 1280, 2560, 6400, and 12800 are that formula at . Halve and doubles. Cut by ten and grows by ten.
The log-decay with the same numbers is the exponent . The coefficient comes from . At the exponent is 0.386 and , matching the printed to three digits. At , against the printed . At the exponent is 15.4. sits near , and the table prints . The phase is not tiny, so the small-angle step is a little kind at the bottom of the table. And maximizes at 0.25. This column is the decay at the CFL where one step hurts most.
AP versus AA#
They are not the same question. AP asks whether the limit of the discrete scheme is a valid discretization of the limit equation, with a stability restriction independent of . AA asks something narrower. On a finite grid, with small but not zero, does the solution stay near the well-prepared space? Upwind fails both. IMEX implicit passes both. The fork is the time discretization, not the spatial order.
Even at the worst ν, the AP column stays 1.00#
Every AP entry in the table is 1.00. The implicit step removes the upwind viscosity, so the exponent never multiplies the amplitude. is the CFL where one step decays the most, and after steps the AP value is still 1.00. For this linear wave system, treating only implicitly is the right call.
That call does not travel to every low-Mach system. There are equations where the acoustics are already implicit and the time step shrinks again anyway. The place a second hides in the relative velocity is the stiffness left in the enthalpy.
Related
Share if you found it helpful.