Skip to content
cfd-lab:~/ko/posts/2026-06-14-acoustic-inte…online
NOTE #074DAY SUN 논문리뷰DATE 2026.06.14READ 4 min readWORDS 2,223#Aeroacoustics#Diffuse-Interface#Weak-Compressibility#Multiphase#논문리뷰

물 위에서 외친 소리는 왜 물속에 닿지 않는가 — 분산 계면 음향 투과

임피던스 점프가 음파를 반사·굴절시키는 원리를 약압축성 DG로 재현

수영장 가장자리에서 친구를 큰 소리로 불러도, 물에 잠긴 사람은 거의 듣지 못한다. 공기 중 소리의 99.9%가 수면에서 튕겨 나오기 때문이다. 같은 물리가 해양 음향, 의료 초음파, 수중 소음 예측을 좌우한다. 이 글은 Ballout 등(2025)의 논문을 따라가며, 계면을 가로지르는 음파의 반사·투과·굴절을 직접 구현한 1D 음향 솔버로 재현한다. 읽고 나면 임피던스 점프 하나로 이 모든 현상을 예측할 수 있게 된다.

논문 정보부터 짚는다. Abbas Ballout 외, "Acoustic Propagation/Refraction Through Diffuse Interface Models", arXiv:2504.01727 (2025). 핵심 기여는 한 줄로 요약된다. 비압축 Navier–Stokes/Cahn–Hilliard 시스템의 약압축성(weak compressibility) 항을 손봐서, 두 상(phase)이 서로 다른 음속을 갖도록 만들고 그 위로 음파를 정확한 속도로 전파시킨다.

음향 임피던스 — 매질이 소리에 거는 저항#

소리가 한 매질을 통과할 때 느끼는 저항을 음향 임피던스(acoustic impedance, 밀도×음속) 라 부른다.

z=ρcsz = \rho\, c_s

여기서 ρ\rho는 밀도, csc_s는 음속이다. 공기는 zair=1.2×343410z_\text{air} = 1.2 \times 343 \approx 410, 물은 zwater=1000×14811.5×106z_\text{water} = 1000 \times 1481 \approx 1.5\times10^6. 무려 3600배 차이다.

임피던스는 "소리가 그 매질에 얼마나 잘 실리는가"를 나타낸다. 두 매질의 임피던스가 비슷하면 음파는 매끄럽게 넘어간다. 크게 다르면 대부분 튕겨 나온다. 수면에서 소리가 거의 반사되는 이유가 바로 이 거대한 점프다.

반사와 투과 — 임피던스 점프가 가른다#

수직 입사하는 평면파의 반사 계수 RR과 투과 계수 TT는 임피던스만으로 결정된다(논문 식 37).

R=z2z1z1+z2,T=2z2z1+z2R = \frac{z_2 - z_1}{z_1 + z_2}, \qquad T = \frac{2 z_2}{z_1 + z_2}

z1z_1, z2z_2는 각각 입사 측·투과 측 임피던스다. 공기→물이라면 z2z1z_2 \gg z_1이므로 R1R \to 1. 거의 완전 반사다. 흥미롭게도 압력 투과 계수 TT는 1을 넘을 수 있다. 압력 진폭이 커지는 것은 에너지 보존을 깨지 않는다. 투과파의 입자 속도가 작아져 에너지 플럭스는 여전히 보존된다.

아래 시뮬레이션에서 직접 파라미터를 조작해보자. 가우시안 펄스가 왼쪽에서 출발해 가운데 계면을 때린다.

z1 = 1.00z2 = 4.50R = 0.636T = 1.636

음속비와 밀도비를 키워 z2/z1z_2/z_1을 벌리면, 투과 펄스는 점점 작아지고 반사 펄스가 커진다. 반대로 두 임피던스를 1:1로 맞추면 펄스는 계면을 통째로 통과한다. 반사가 사라진다.

13도의 벽 — Snell 법칙과 임계각#

비스듬히 입사하면 투과파의 방향이 꺾인다. 빛의 굴절과 똑같은 Snell 법칙(입사각과 투과각의 사인비가 음속비와 같다) 이 음파에도 성립한다(논문 식 41).

sinθics1=sinθtcs2\frac{\sin\theta_i}{c_{s1}} = \frac{\sin\theta_t}{c_{s2}}

θi\theta_i는 입사각, θt\theta_t는 투과각이다. 공기→물처럼 투과 측 음속이 더 빠르면(cs2>cs1c_{s2} > c_{s1}), 입사각이 일정 값을 넘는 순간 sinθt\sin\theta_t가 1을 초과한다. 투과파가 존재할 수 없다. 이 문턱이 임계각(critical angle) 이다.

θc=arcsin ⁣(cs1cs2)=arcsin ⁣(3431481)13.4\theta_c = \arcsin\!\left(\frac{c_{s1}}{c_{s2}}\right) = \arcsin\!\left(\frac{343}{1481}\right) \approx 13.4^\circ

공기 중 음원이 수면에 13.4도보다 더 비스듬히 닿으면, 소리는 한 톨도 물속에 들어가지 못한다. 전반사다.

아래에서 입사각과 음속비를 바꿔보자.

critical angle θc = 13.38°wave transmits into medium 2

입사각을 13도 부근까지 올리면 투과 광선이 수면에 거의 누우며 사라진다. 그 순간 반사 광선만 남는다. 음속비를 줄이면 임계각이 커져 더 비스듬한 입사도 투과를 허용한다.

약압축성으로 음파를 싣는다#

비압축 솔버는 압력을 단지 발산 제약을 맞추는 도구로 쓴다. 그 압력장으로는 음파를 전파시킬 수 없다. 논문은 약압축성(weak compressibility, 압력에 시간 미분 항을 더해 유한 음속을 부여) 식을 도입한다.

tp+ρcs2u=0\partial_t p + \rho\, c_s^2\, \nabla\cdot\mathbf{u} = 0

pp는 압력, u\mathbf{u}는 속도, csc_s는 그 점의 음속이다. 핵심은 csc_s를 상(相)마다 다르게 보간한 점이다. 농도 cc로 밀도·음속을 섞는다.

()=()1c+()2(1c)(\,\cdot\,) = (\,\cdot\,)_1\, c + (\,\cdot\,)_2\,(1 - c)

이 한 줄 수정으로, 같은 솔버가 매질1에서는 cs1c_{s1}로, 매질2에서는 cs2c_{s2}로 음파를 옮긴다. 저자들은 이를 엔트로피 안정 불연속 갤러킨 스펙트럴 요소법(DGSEM)으로 이산화해 스펙트럴 수렴을 보였다.

분산 계면이 만드는 모델링 오차#

VOF나 레벨셋이 계면을 한 칸으로 자르는 것과 달리, Cahn–Hilliard 모델은 계면을 폭 ε\varepsilon으로 번지게 한다.

c0=10.5(1+tanh2xε)c_0 = 1 - 0.5\left(1 + \tanh\frac{2x}{\varepsilon}\right)

이 번짐은 모델링 오차를 낳는다. 논문은 그 오차가 계면 폭의 제곱, 정확히는 파장으로 정규화한 O ⁣((ε/λ)2)\mathcal{O}\!\left((\varepsilon/\lambda)^2\right)로 줄어듦을 수치 실험으로 확인했다. ε0\varepsilon \to 0이면 위에서 본 날카로운 계면의 해석해로 수렴한다. 위 1D 시뮬레이션의 "interface width" 슬라이더가 바로 이 ε\varepsilon이다. 키우면 투과·반사 펄스가 살짝 뭉개진다.

Python — 1D 관에서 계수를 재현#

선형 음향 방정식을 staggered 격자 위 FDTD로 적분한다. 가우시안 펄스를 쏘고, 경계면을 지난 뒤의 반사·투과 진폭을 해석해와 비교한다.

import numpy as np
 
def impedance(rho, c):
    """음향 임피던스 z = rho * c (밀도 × 음속)"""
    return rho * c
 
def analytic_coeffs(z1, z2):
    """수직 입사 평면파의 반사·투과 계수 (논문 식 37)"""
    R = (z2 - z1) / (z1 + z2)
    T = 2.0 * z2 / (z1 + z2)
    return R, T
 
def tanh_interface(x, eps):
    """경계면을 폭 eps로 번지게 하는 농도장 (논문 식 32)"""
    return 1.0 - 0.5 * (1.0 + np.tanh(2.0 * x / eps))
 
def run_acoustic_tube(rho1=1.0, c1=1.0, rho2=2.5, c2=1.8,
                      N=2000, L=4.0, eps=0.04, steps=2600):
    """1D 선형 음향계를 적분해 반사·투과 펄스 진폭을 측정한다."""
    dx = L / N
    x = -L / 2 + (np.arange(N) + 0.5) * dx
    conc = tanh_interface(x, eps)            # 1: 매질1, 0: 매질2
    rho = rho1 * conc + rho2 * (1.0 - conc)  # 밀도 보간
    cs  = c1   * conc + c2   * (1.0 - conc)  # 음속 보간
    K   = rho * cs**2                        # 체적탄성률 rho c^2
 
    p = np.exp(-((x + 0.55) / 0.12)**2)      # 우향 가우시안 펄스
    u = p / (rho1 * c1)                      # 매질1 특성: u = p/(rho c)
 
    dt = 0.4 * dx / cs.max()                 # CFL 제한 시간 간격
    left, right = N // 4, 3 * N // 4         # 좌·우 측정 프로브
    p_inc = p.max()
    refl_peak = tran_peak = 0.0
    for n in range(steps):
        u[:-1] += -dt / (0.5 * (rho[:-1] + rho[1:]) * dx) * (p[1:] - p[:-1])
        p[1:]  += -dt * K[1:] / dx * (u[1:] - u[:-1])
        if n > steps // 2:                   # 펄스가 계면을 통과한 뒤
            refl_peak = max(refl_peak, np.abs(p[:left]).max())
            tran_peak = max(tran_peak, np.abs(p[right:]).max())
    return p_inc, refl_peak, tran_peak
 
if __name__ == "__main__":
    rho1, c1, rho2, c2 = 1.0, 1.0, 2.5, 1.8
    z1, z2 = impedance(rho1, c1), impedance(rho2, c2)
    R, T = analytic_coeffs(z1, z2)
    p_inc, refl, tran = run_acoustic_tube(rho1, c1, rho2, c2)
    print(f"z1={z1:.3f}  z2={z2:.3f}")
    print(f"해석해   |R|={abs(R):.3f}  T={T:.3f}")
    print(f"측정값   |R|={refl / p_inc:.3f}  T={tran / p_inc:.3f}")

출력은 z1=1.0z_1=1.0, z2=4.5z_2=4.5에서 해석해 R=0.636|R|=0.636, T=1.636T=1.636에 가깝게 측정값이 따라붙는다. 격자를 촘촘히 하고 ε\varepsilon을 줄이면 둘의 차이가 더 좁아진다.

재현하며 의심스러웠던 것#

가장 먼저 부딪힌 함정은 반사파 분리다. 왼쪽 프로브는 입사파와 반사파의 합을 본다. 논문은 단상(single-phase) 시뮬레이션을 따로 돌려 입사파를 빼낸다. 위 코드는 펄스가 충분히 오른쪽으로 떠난 뒤 좌측 영역의 잔여 신호만 측정해 이 문제를 우회했지만, 입사·반사가 겹치는 구간에서는 부정확하다.

둘째, 약압축성은 진짜 압축성이 아니다. 충격파나 큰 마하수에는 적용할 수 없다. 저자들도 저마하·선형 음향에 한정한다. OpenFOAM의 acousticFoam류나 압축성 솔버로 직접 음향을 푸는 것과는 목적이 다르다.

셋째, 3D 공기-물 예제는 6750만 자유도를 썼다. 분산 계면에 10개 이상의 점을 욱여넣어야 정확도가 나오기 때문이다. 계면이 얇아질수록 비용이 폭증한다. 실무에서 이 방법이 VOF를 대체할지는 문제 규모에 달렸다.

다음에 읽을 논문#

핵심만 남긴다. 음파의 운명은 임피던스 점프 z2/z1z_2/z_1가 가른다. 비스듬한 입사는 Snell 법칙으로 굴절하고, θc\theta_c를 넘으면 전반사한다. 약압축성 항 하나를 상마다 보간하면 비압축 솔버도 음파를 정확한 속도로 옮긴다.

이 흐름을 더 파고들려면, 같은 그룹의 엔트로피 안정 DGSEM iNS/CH 원논문(Manzanero 외, 2020)이나, Ffowcs-Williams–Hawkings 음향 유추를 다상으로 확장한 연구를 이어 읽기를 권한다.

도움이 됐다면 공유해주세요.