Skip to content
cfd-lab:~/es/posts/2026-05-09-saurel-2009-p…● online

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

NOTE #036DAY SAT 논문리뷰DATE 2026.05.09UPDATED 2026.10.19READ 7 min read#Paper-Review#Compressible-Multiphase#Diffuse-Interface#Saurel#Pressure-Relaxation#Kapila-Model

[Reseña de paper] Resolver con dos presiones, fundir en una sola — Saurel (2009) sobre relajación multifásica

En una celda de agua y aire la velocidad de Wood cae cerca de 24 m/s, y la media por impedancia queda junto a la presión del aire.

En el laboratorio nacional de Idaho una simulación de seguridad nuclear se detuvo de golpe. En la celda donde una pequeña burbuja de gas quedaba atrapada entre sodio líquido, la velocidad del sonido de la mezcla colapsó hasta unos 25 m/s. Ése era el límite del modelo de cinco ecuaciones atado al equilibrio de presiones. En 2009 Saurel y sus colegas dieron un paso atrás. Las dos presiones se resuelven aparte y solo se pegan al final del paso.

Al mover los deslizadores de ρk\rho_k y ckc_k cambia la separación entre la curva de Wood y la congelada.

Wood (equilibrium) sound speed dips far below either pure-fluid value near intermediate α; frozen speed stays inside the [c₂, c₁] band.

Cerca del agua a 1500 m/s y del aire a 340 m/s, solo la rama de Wood cae al suelo. La rama congelada se queda entre las dos velocidades puras.

La idea en una línea#

El modelo de cinco ecuaciones se rompe en la velocidad del sonido. Hay que retroceder al modelo de seis ecuaciones, resolverlo y luego fundir las dos presiones con una relajación rígida. La media por impedancia p^I=(Z2p1+Z1p2)/(Z1+Z2)\hat{p}_I = (Z_2 p_1 + Z_1 p_2)/(Z_1+Z_2) es la línea que sostiene todo el armazón.

La velocidad de Wood es un saco de arena#

El modelo de cinco ecuaciones de Kapila (2001) supone equilibrio de presiones: ambas fases comparten una sola presión dentro de cada celda. Parece limpio, pero la velocidad del sonido de mezcla se desordena. La velocidad de equilibrio ceqc_{eq} obedece la fórmula de Wood (1930)

1ρceq2=α1ρ1c12+α2ρ2c22\frac{1}{\rho c_{eq}^2} = \frac{\alpha_1}{\rho_1 c_1^2} + \frac{\alpha_2}{\rho_2 c_2^2}

con αk\alpha_k la fracción volumétrica de la fase kk, ρk\rho_k la densidad y ckc_k la velocidad del sonido pura. El problema: la curva no es monótona. Una mezcla de agua (1500 m/s) y aire (340 m/s) en una sola celda puede caer hasta unos 24 m/s — muy por debajo de cualquiera de las dos fases puras.

En la zona de difusión numérica aparece una mezcla artificial entre los dos estados puros y las ondas acústicas se frenan bruscamente al atravesarla. Los tiempos de llegada se desfasan, el seguimiento del choque se rompe. Además, mantener α\alpha estrictamente positivo cerca de 0 o 1 también resulta delicado.

Al meter la celda del código en la fórmula de Wood reaparece el 24 m/s del texto. Con α1=0.7\alpha_1 = 0.7, ρ1=1000\rho_1 = 1000, c1=1500c_1 = 1500 sale ρ1c12=2.25×109\rho_1 c_1^2 = 2.25\times 10^9. En el aire, α2=0.3\alpha_2 = 0.3, ρ2=1\rho_2 = 1, c2=340c_2 = 340, así que ρ2c22=1.156×105\rho_2 c_2^2 = 1.156\times 10^5. El término del aire a la derecha ronda 2.6×10−62.6\times 10^{-6}; el del agua, 3×10−103\times 10^{-10}, casi no se ve. La densidad de mezcla es 0.7×1000+0.3=700.30.7\times 1000 + 0.3 = 700.3. Cuando 1/(ρceq2)1/(\rho c_{eq}^2) lo come el término del aire, ceqc_{eq} queda cerca de 24 m/s. La fórmula congelada en la misma celda, cf2=Y1c12+Y2c22c_f^2 = Y_1 c_1^2 + Y_2 c_2^2, va al revés. Casi toda la masa es agua, así que cfc_f se pega a 1500 m/s. En una celda las dos velocidades se separan unas sesenta veces. Ese hundimiento es lo que sigue una velocidad del sonido con agua y aire a medias.

El desvío — dejar que las presiones discrepen#

Saurel da un paso atrás. Renuncia a la hipótesis de equilibrio y permite que cada fase lleve su propia presión p1p_1, p2p_2. Tomando solo el límite de relajación de velocidad sobre el modelo de siete ecuaciones de Baer–Nunziato, se obtiene el modelo de seis ecuaciones.

∂tα1+u ∂xα1=μ(p1−p2)\partial_t \alpha_1 + u\,\partial_x \alpha_1 = \mu(p_1 - p_2) ∂t(αkρk)+∂x(αkρku)=0\partial_t (\alpha_k \rho_k) + \partial_x(\alpha_k \rho_k u) = 0 ∂t(ρu)+∂x(ρu2+α1p1+α2p2)=0\partial_t (\rho u) + \partial_x(\rho u^2 + \alpha_1 p_1 + \alpha_2 p_2) = 0 ∂t(αkρkek)+∂x(αkρkeku)+αkpk ∂xu=±pIμ(p1−p2)\partial_t (\alpha_k \rho_k e_k) + \partial_x(\alpha_k \rho_k e_k u) + \alpha_k p_k\,\partial_x u = \pm p_I \mu (p_1 - p_2)

Aquí μ\mu es la tasa de relajación de presión (rígida), pIp_I la presión de interfaz y eke_k la energía interna por fase. La velocidad del sonido del modelo se vuelve

cf2=Y1c12+Y2c22c_f^2 = Y_1 c_1^2 + Y_2 c_2^2

con Yk=αkρk/ρY_k = \alpha_k \rho_k / \rho la fracción másica. La curva queda monótona: el saco de arena de Wood desaparece.

La presión de interfaz p^I\hat{p}_I — promedio ponderado por impedancia#

El pIp_I que aparece a la derecha de las ecuaciones de energía interna proviene del término asimétrico del modelo de siete ecuaciones tras tomar el límite de equilibrio de velocidades, y cae en la forma compacta

pI=Z2p1+Z1p2Z1+Z2,Zk=ρkckp_I = \frac{Z_2 p_1 + Z_1 p_2}{Z_1 + Z_2}, \quad Z_k = \rho_k c_k

donde ZkZ_k es la impedancia acústica. La fase más rígida pesa más. Intuitivamente, cuando dos fases intercambian trabajo a través de una interfaz, el lado más duro se mueve menos y el más blando se mueve más en exactamente esa proporción. Esa única línea garantiza simultáneamente la conservación de energía y la desigualdad de entropía.

El paso de relajación — una ecuación de una incógnita#

Numéricamente no se integra el límite μ→∞\mu \to \infty directamente. Se aplica división de operadores: primero se resuelve la parte hiperbólica y después solo la fuente de relajación. Durante la relajación, uu, ρE\rho E y αkρk\alpha_k \rho_k permanecen congelados; solo evolucionan los volúmenes específicos vk=1/ρkv_k = 1/\rho_k. Con la EOS de gas rigidizado

pk=(γk−1)ρkek−γkp∞,kp_k = (\gamma_k - 1)\rho_k e_k - \gamma_k p_{\infty,k}

la integral cierra en forma analítica.

vk(p)=vk0 p0+γkp∞,k+(γk−1)p^Ip+γkp∞,k+(γk−1)p^Iv_k(p) = v_k^0\,\frac{p^0 + \gamma_k p_{\infty,k} + (\gamma_k - 1)\hat{p}_I}{p + \gamma_k p_{\infty,k} + (\gamma_k - 1)\hat{p}_I}

La condición de saturación ∑k(αρ)kvk(p)=1\sum_k (\alpha\rho)_k v_k(p) = 1 fija una sola presión relajada pp. Una bisección basta. Ése es el corazón del algoritmo.

Reinicialización — reanclar con la energía conservada#

La pp y αk\alpha_k que entrega la relajación son consistentes con cada EOS de fase, pero pueden separarse de la energía de mezcla conservada porque las ecuaciones no conservativas de energía interna acumulan pequeños errores cerca de los choques. Saurel añade un retoque más. A partir de la energía total de mezcla conservada, se recalcula la presión con la EOS de mezcla

p(ρ,e,α1,α2)=ρe−(α1γ1p∞,1γ1−1+α2γ2p∞,2γ2−1)α1γ1−1+α2γ2−1p(\rho, e, \alpha_1, \alpha_2) = \frac{\rho e - \big(\frac{\alpha_1 \gamma_1 p_{\infty,1}}{\gamma_1 - 1} + \frac{\alpha_2 \gamma_2 p_{\infty,2}}{\gamma_2 - 1}\big)}{\frac{\alpha_1}{\gamma_1 - 1} + \frac{\alpha_2}{\gamma_2 - 1}}

y luego se recalcula eke_k a esa presión. El sistema arranca como no conservativo, pero en los choques se comporta como uno conservativo. Coste: una evaluación adicional de EOS por celda.

Código — el momento en que dos presiones se encuentran en una celda#

Solo el paso de relajación, en unas treinta líneas de NumPy. Gas rigidizado más bisección sobre la condición de saturación.

import numpy as np
 
def stiffened_gas_volume(p, p0, v0, gamma, p_inf, p_hat_I):
    num = p0 + gamma * p_inf + (gamma - 1.0) * p_hat_I
    den = p   + gamma * p_inf + (gamma - 1.0) * p_hat_I
    return v0 * num / den
 
def saturation_residual(p, alpha_rho, p0, v0, gamma, p_inf, p_hat_I):
    total = 0.0
    for k in range(2):
        v_k = stiffened_gas_volume(p, p0[k], v0[k], gamma[k], p_inf[k], p_hat_I)
        total += alpha_rho[k] * v_k
    return total - 1.0
 
def stiff_pressure_relax(p0, v0, alpha_rho, gamma, p_inf, Z, tol=1e-9):
    p_hat_I = (Z[1] * p0[0] + Z[0] * p0[1]) / (Z[0] + Z[1])
    lo, hi = 1.0, 1.0e10
    for _ in range(80):
        mid = 0.5 * (lo + hi)
        r = saturation_residual(mid, alpha_rho, p0, v0, gamma, p_inf, p_hat_I)
        if r > 0:
            lo = mid       # presion demasiado baja -> suma de volumenes > 1
        else:
            hi = mid
        if hi - lo < tol * mid:
            break
    return 0.5 * (lo + hi), p_hat_I
 
# Agua (alpha=0.7) y aire (alpha=0.3), dos presiones distintas
gamma  = np.array([4.4, 1.4])
p_inf  = np.array([6.0e8, 0.0])
rho0   = np.array([1000.0, 1.0])
alpha0 = np.array([0.7, 0.3])
p0     = np.array([5.0e5, 1.0e5])
Z      = np.array([1500.0 * 1000.0, 340.0 * 1.0])
 
alpha_rho = alpha0 * rho0
v0        = 1.0 / rho0
 
p_eq, p_hat_I = stiff_pressure_relax(p0, v0, alpha_rho, gamma, p_inf, Z)
print(f"media de impedancia ^pI = {p_hat_I:.3e} Pa")
print(f"presion relajada     p  = {p_eq:.3e} Pa")

La impedancia del agua (Z1=1.5×106Z_1 = 1.5\times 10^6) es unas 4400 veces la del aire (Z2=340Z_2 = 340). La fórmula es p^I=(Z2p1+Z1p2)/(Z1+Z2)\hat{p}_I = (Z_2 p_1 + Z_1 p_2)/(Z_1 + Z_2). El peso grande cae sobre la presión pequeña. Con p1=5×105p_1 = 5\times 10^5 y p2=1×105p_2 = 1\times 10^5, en el numerador Z1p2Z_1 p_2 vale 1.5×10111.5\times 10^{11} y Z2p1Z_2 p_1 se queda en 1.7×1081.7\times 10^8. Así p^I\hat{p}_I no se sienta junto a la presión del agua. Queda al lado de la presión del aire 1×1051\times 10^5, cerca de 1.001×1051.001\times 10^5 Pa. La fase rígida no se queda con la interfaz. La presión común tras la relajación la busca después la bisección de la saturación.

Observación — el momento en que dos presiones se encuentran#

Una sola celda no muestra la dinámica. En una rejilla 1D con un modelo simplificado de ODE, p1p_1 y p2p_2 convergen exponencialmente hacia la media por impedancia p^I\hat{p}_I — más rápido cuanto mayor sea μ⋅Δt\mu \cdot \Delta t.

Stiff relaxation drives both p₁ and p₂ toward the impedance-weighted average p̂ᴵ = (Z₂p₁ + Z₁p₂)/(Z₁+Z₂). Increase μ·Δt for faster pull-in.

Al aumentar Z1Z_1, p^I\hat{p}_I se desplaza más hacia la presión de la fase 1; el cociente de impedancias actúa como ponderación. Con μ⋅Δt\mu \cdot \Delta t cerca de 1, el equilibrio se alcanza prácticamente en un solo paso — eso significa relajación rígida. Saurel aplica este procedimiento sin condiciones al final de cada paso temporal y recupera el límite rígido del modelo de cinco ecuaciones.

Límites — la sombra de las siete ecuaciones#

Seis ecuaciones no son la respuesta universal. El equilibrio de velocidades sigue siendo una hipótesis. Medios porosos o explosivos granulares, con velocidades muy distintas entre fases, exigen volver al modelo completo de siete ecuaciones de Baer–Nunziato. Bajo choques muy intensos los errores no conservativos de energía interna no son despreciables, y entra la corrección de intercambio térmico artificial de Petitpas (sección 5 del paper). Y μ→∞\mu \to \infty supone una respuesta de interfaz infinitamente rápida; cuando entran tensión superficial o transferencia de masa, hace falta un modelo aparte.

Aun así, seis ecuaciones más relajación sigue siendo la base más usada hoy en simulación multifásica compresible. La integración temporal AP-IMEX y la reconstrucción MUSCL-THINC-BVD corren sobre este esqueleto de seis ecuaciones.

Dejar el modelo de cinco ecuaciones en esa celda#

Entregar al modelo de cinco ecuaciones una celda cuya velocidad de Wood cayó a 24 m/s retrasa las llegadas acústicas y mueve la posición del choque. Esa celda retrocede a seis ecuaciones, lleva dos presiones y las pega con la media de impedancia solo al final del paso.

Si además discrepan las velocidades, el compromiso se acaba. Medios porosos y explosivos granulares vuelven a siete ecuaciones. Cerrar la interfaz con aún menos ecuaciones es otra pregunta, la de un equilibrio de cuatro ecuaciones.

Comparte si te resultó útil.