Skip to content
cfd-lab:~/es/posts/2026-06-21-asymptotic-pr…● online

Traducción del original en coreano escrito por el autor. Leer el original (한국어)

NOTE #079DAY SUN 논문리뷰DATE 2026.06.21UPDATED 2026.10.19READ 6 min read#CFD#Paper-Review#Low-Mach#Asymptotic-Preserving#IMEX

[Reseña] Cómo no matar el sonido a bajo Mach — esquema IMEX-AP de ondas

Con estos parámetros el número de pasos es M=128/ε, y un decaimiento logarítmico de 0.154/ε reproduce la columna explícita.

Meter un flujo de bajo Mach (low Mach) en un código compresible hace pensar que una velocidad del sonido mayor deja la figura más nítida. Ocurre lo contrario. Al bajar el número de Mach, un esquema upwind estándar borra de la malla una onda que estaba sana. Arun, Das Gupta y Samantaray (2019) aíslan ese colapso con el sistema lineal de ondas y arman un esquema asintóticamente preservante (AP) con IMEX-RK, estable sin depender del Mach. La razón de integrar el operador acústico de forma implícita está en los números de abajo.

Al mover ε\varepsilon hacia la izquierda, la curva roja upwind sube con pendiente −1-1 y la curva cian del AP permanece plana.

0.010.111010010000.0010.010.11Mach number ε (log scale)effective diffusion (log)explicit upwind ∝ 1/εAP / implicit (flat)
D_explicit ≈ 0.078
D_AP ≈ 7.8e-3
ratio ≈ 10.0×

En ε=10−3\varepsilon=10^{-3} el cociente entre las dos curvas llega a cientos. Lo que crece al bajar el Mach no es la onda. Es la viscosidad numérica upwind.

Cuando ε tiende a cero, la malla se come la onda#

Las ecuaciones de Euler isentrópicas escaladas llevan un parámetro pequeño, el número de Mach ε\varepsilon. El término de presión entra en la cantidad de movimiento como ∇p/ε2\nabla p / \varepsilon^2.

∂tρ+∇⋅(ρu)=0,∂t(ρu)+∇⋅(ρu⊗u)+∇pε2=0\partial_t \rho + \nabla\cdot(\rho \mathbf{u}) = 0, \qquad \partial_t (\rho\mathbf{u}) + \nabla\cdot(\rho\mathbf{u}\otimes\mathbf{u}) + \frac{\nabla p}{\varepsilon^2} = 0

ρ\rho es la densidad, u\mathbf{u} es la velocidad y p=ργp=\rho^\gamma es la presión. ε\varepsilon es la velocidad de referencia dividida por la velocidad del sonido de referencia.

Cuando ε→0\varepsilon \to 0 la solución va al límite incompresible. Es una perturbación singular (singular perturbation). Los autores acortan el análisis con el sistema lineal de ondas.

∂tϱ+(u⋅∇)ϱ+aε∇⋅u=0,∂tu+(u⋅∇)u+aε∇ϱ=0\partial_t \varrho + (\mathbf{u}\cdot\nabla)\varrho + \frac{a}{\varepsilon}\nabla\cdot\mathbf{u} = 0, \qquad \partial_t \mathbf{u} + (\mathbf{u}\cdot\nabla)\mathbf{u} + \frac{a}{\varepsilon}\nabla\varrho = 0

ϱ\varrho es la perturbación linealizada de densidad y aa es la velocidad del sonido de ese estado. La velocidad efectiva del sonido es c=a/εc=a/\varepsilon. Al reducir el Mach, esa velocidad acústica estalla.

El espacio well-prepared — las soluciones que deben sobrevivir#

En el límite ε→0\varepsilon\to 0 la solución no se escapa a cualquier lado. Se junta en el espacio well-prepared: densidad constante, velocidad de divergencia nula.

ϱ(0)=const,∇⋅u(0)=0\varrho^{(0)} = \text{const}, \qquad \nabla\cdot\mathbf{u}^{(0)} = 0

Ese espacio es el núcleo del operador acústico L(U)=(a∇⋅u, a∇ϱ)L(U)=(a\nabla\cdot\mathbf{u},\,a\nabla\varrho). La solución discreta tiene que caer ahí también. Dellacherie (2010) mostró que un esquema que rompe esa invariancia pierde precisión a bajo Mach. Conservar el núcleo es ser asintóticamente preciso (AA). Dejar el límite de estabilidad independiente de ε\varepsilon es ser asintóticamente preservante (AP).

La viscosidad upwind crece en proporción a la velocidad del sonido#

El culpable es la viscosidad numérica upwind. Diagonalizar el sistema de ondas en variables características lo parte en dos advecciones escalares a velocidades ±c\pm c. Un paso upwind de Rusanov en cada modo tiene esta amplificación.

∣g∣2=(1−ν(1−cos⁡θ))2+ν2sin⁡2θ,ν=c ΔtΔx,  θ=kΔx|g|^2 = \big(1 - \nu(1-\cos\theta)\big)^2 + \nu^2\sin^2\theta, \qquad \nu = \frac{c\,\Delta t}{\Delta x},\ \ \theta = k\Delta x

ν\nu es el CFL acústico, θ\theta es la fase por celda y kk es el número de onda.

Un paso duele poco. Lo que duele es la pila. Llegar a un tiempo físico fijo TT pide M=T/Δt=Tc/(νΔx)M = T/\Delta t = T c /(\nu\Delta x) pasos acústicos. Con θ\theta pequeño el decaimiento por paso es 12ν(1−ν)θ2\tfrac{1}{2}\nu(1-\nu)\theta^2, y MM de ellos dan este decaimiento logarítmico.

M⋅12ν(1−ν)θ2  =  12 T c (1−ν) k2Δx  ∝  c  ∝  1εM\cdot\tfrac{1}{2}\nu(1-\nu)\theta^2 \;=\; \tfrac{1}{2}\,T\,c\,(1-\nu)\,k^2\Delta x \;\propto\; c \;\propto\; \frac{1}{\varepsilon}

Bajar el Mach un orden de magnitud sube la viscosidad efectiva otro orden. La pendiente −1-1 de la curva roja de arriba es esa proporción.

División de operadores — convección explícita, acústica implícita#

Al separar las ecuaciones por escala de tiempo aparecen dos operadores.

∂tU+H(U)+1εL(U)=0\partial_t U + H(U) + \frac{1}{\varepsilon}L(U) = 0

HH es convección, escala O(1)O(1). L/εL/\varepsilon es acústica, escala O(ε)O(\varepsilon). Toda la rigidez vive en L/εL/\varepsilon. Solo esa parte se integra de forma implícita. La convección queda explícita. La mezcla es IMEX (Implicit-Explicit). Si esa misma separación aguanta el paso de tiempo hasta Mach 0 es la pregunta de una reproducción IMEX TVD.

Con la acústica implícita, las diferencias centradas se quedan estables. La viscosidad upwind sale. Δt\Delta t lo fija la convección lenta, no el sonido rápido. Dentro de este modelo, un ε\varepsilon menor no es motivo para encoger el paso.

IMEX-RK absorbe la rigidez#

La integración temporal es IMEX Runge-Kutta (IMEX-RK). El tableau explícito (A~,b~)(\tilde A,\tilde b) lleva HH. El tableau implícito (A,b)(A,b) lleva L/εL/\varepsilon. En cada etapa la acústica se condensa en una ecuación elíptica para la densidad, parecida a una Poisson de presión.

ϱ−β2Δt2 a2∇2ϱ=(teˊrminos explıˊcitos)\varrho - \beta^2 \Delta t^2\, a^2 \nabla^2 \varrho = (\text{términos explícitos})

β\beta es el coeficiente diagonal del tableau IMEX y ∇2\nabla^2 es el laplaciano. La invertibilidad de ese problema elíptico sale de la teoría de puntos de silla (saddle point). En la malla, las matrices circulantes dan la misma conclusión. Solución única, estabilidad uniforme independiente de ε\varepsilon, e invariancia del espacio well-prepared.

Python — reproducir el decaimiento de amplitud de un modo#

El código de abajo calcula la amplificación upwind de un modo de Fourier e imprime la amplitud que queda tras el tiempo físico TT, un Mach cada vez. El esquema implícito conserva el modo, así que su amplitud se queda en 1.

import numpy as np
 
a  = 1.0        # velocidad del sonido linealizada
k  = 2 * np.pi  # único modo de Fourier en [0,1]
T  = 1.0        # tiempo físico final fijo
nu = 0.5        # número de CFL acústico
 
def upwind_amp_factor(eps, N):
    """|g| de un modo característico bajo Rusanov en el sistema de ondas."""
    c  = a / eps              # velocidad acústica c = a/ε
    dx = 1.0 / N
    th = k * dx               # fase por celda θ = 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):
    """Amplitud del modo tras tiempo físico T (upwind vs implícito)."""
    c  = a / eps
    dx = 1.0 / N
    dt = nu * dx / c          # paso de CFL acústico
    M  = T / dt               # número de pasos explícitos
    explicit = upwind_amp_factor(eps, N) ** M
    implicit = 1.0            # central-implícito preserva el modo
    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}")

La salida es esta.

     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.00

Al bajar el control Mach ε\varepsilon, la amplitud roja llega al suelo antes de que termine el tiempo físico T=1T=1. Al empujar el CFL ν\nu hacia 1, ν(1−ν)\nu(1-\nu) se reduce y el decaimiento afloja un momento. Bajar ε\varepsilon todavía más entierra esa ganancia bajo la acumulación 1/ε1/\varepsilon. Subir NN ayuda solo en parte: θ2∝N−2\theta^2\propto N^{-2} y Δx∝N−1\Delta x\propto N^{-1} no se cancelan.

Meter los números del código en la fórmula del conteo de pasos la cierra. Con a=1a=1, T=1T=1, ν=0.5\nu=0.5 y N=64N=64, Δx=1/64\Delta x=1/64 y c=1/εc=1/\varepsilon. Entonces Δt=νΔx/c\Delta t=\nu\Delta x/c, de modo que M=T/Δt=128/εM=T/\Delta t=128/\varepsilon. Los pasos impresos 320, 640, 1280, 2560, 6400 y 12800 son esa fórmula en ε=0.4,0.2,0.1,0.05,0.02,0.01\varepsilon=0.4,0.2,0.1,0.05,0.02,0.01. Partir ε\varepsilon por dos duplica MM. Partir ε\varepsilon por diez multiplica MM por diez.

El decaimiento logarítmico 12Tc(1−ν)k2Δx\tfrac12 T c(1-\nu)k^2\Delta x con los mismos números es el exponente 0.154/ε0.154/\varepsilon. El coeficiente sale de k=2πk=2\pi. En ε=0.4\varepsilon=0.4 el exponente es 0.386 y e−0.386=0.680\mathrm{e}^{-0.386}=0.680, igual al 6.804×10−16.804\times 10^{-1} impreso hasta el tercer dígito. En ε=0.1\varepsilon=0.1, e−1.542=0.214\mathrm{e}^{-1.542}=0.214 frente al 2.143×10−12.143\times 10^{-1} impreso. En ε=0.01\varepsilon=0.01 el exponente es 15.4. e−15.4\mathrm{e}^{-15.4} queda cerca de 2.0×10−72.0\times 10^{-7}, y la tabla imprime 1.980×10−71.980\times 10^{-7}. La fase θ=kΔx=2π/64≈0.098\theta=k\Delta x=2\pi/64\approx 0.098 no es diminuta, así que el paso de ángulo pequeño se queda corto al final de la tabla. Y ν=0.5\nu=0.5 maximiza ν(1−ν)\nu(1-\nu) en 0.25. Esta columna es el decaimiento en el CFL donde un paso duele más.

AP frente a AA#

No son la misma pregunta. AP pregunta si el límite ε→0\varepsilon\to 0 del esquema discreto es una discretización válida de la ecuación límite, con una restricción de estabilidad independiente de ε\varepsilon. AA pregunta algo más estrecho. En una malla finita, con ε\varepsilon pequeño pero no nulo, ¿la solución se queda cerca del espacio well-prepared? El upwind falla las dos. El implícito IMEX pasa las dos. La bifurcación es la discretización temporal, no el orden espacial.

Incluso en el peor ν, la columna AP se queda en 1.00#

Cada entrada AP de la tabla es 1.00. El paso implícito quita la viscosidad upwind, así que el exponente 0.154/ε0.154/\varepsilon no multiplica la amplitud. ν=0.5\nu=0.5 es el CFL donde un paso decae más, y tras M=128/εM=128/\varepsilon pasos el valor AP sigue en 1.00. Para este sistema lineal de ondas, tratar solo L/εL/\varepsilon de forma implícita es la decisión correcta.

Esa decisión no viaja a todo sistema de bajo Mach. Hay ecuaciones en las que la acústica ya es implícita y el paso de tiempo vuelve a encogerse. El sitio donde un segundo 1/M21/M^2 se esconde en la velocidad relativa está en la rigidez que queda en la entalpía.

Comparte si te resultó útil.