물 위에서 외친 소리는 왜 물속에 닿지 않는가 — 분산 계면 음향 투과
임피던스 점프가 음파를 반사·굴절시키는 원리를 약압축성 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, 밀도×음속) 라 부른다.
여기서 는 밀도, 는 음속이다. 공기는 , 물은 . 무려 3600배 차이다.
임피던스는 "소리가 그 매질에 얼마나 잘 실리는가"를 나타낸다. 두 매질의 임피던스가 비슷하면 음파는 매끄럽게 넘어간다. 크게 다르면 대부분 튕겨 나온다. 수면에서 소리가 거의 반사되는 이유가 바로 이 거대한 점프다.
반사와 투과 — 임피던스 점프가 가른다#
수직 입사하는 평면파의 반사 계수 과 투과 계수 는 임피던스만으로 결정된다(논문 식 37).
, 는 각각 입사 측·투과 측 임피던스다. 공기→물이라면 이므로 . 거의 완전 반사다. 흥미롭게도 압력 투과 계수 는 1을 넘을 수 있다. 압력 진폭이 커지는 것은 에너지 보존을 깨지 않는다. 투과파의 입자 속도가 작아져 에너지 플럭스는 여전히 보존된다.
아래 시뮬레이션에서 직접 파라미터를 조작해보자. 가우시안 펄스가 왼쪽에서 출발해 가운데 계면을 때린다.
음속비와 밀도비를 키워 을 벌리면, 투과 펄스는 점점 작아지고 반사 펄스가 커진다. 반대로 두 임피던스를 1:1로 맞추면 펄스는 계면을 통째로 통과한다. 반사가 사라진다.
13도의 벽 — Snell 법칙과 임계각#
비스듬히 입사하면 투과파의 방향이 꺾인다. 빛의 굴절과 똑같은 Snell 법칙(입사각과 투과각의 사인비가 음속비와 같다) 이 음파에도 성립한다(논문 식 41).
는 입사각, 는 투과각이다. 공기→물처럼 투과 측 음속이 더 빠르면(), 입사각이 일정 값을 넘는 순간 가 1을 초과한다. 투과파가 존재할 수 없다. 이 문턱이 임계각(critical angle) 이다.
공기 중 음원이 수면에 13.4도보다 더 비스듬히 닿으면, 소리는 한 톨도 물속에 들어가지 못한다. 전반사다.
아래에서 입사각과 음속비를 바꿔보자.
입사각을 13도 부근까지 올리면 투과 광선이 수면에 거의 누우며 사라진다. 그 순간 반사 광선만 남는다. 음속비를 줄이면 임계각이 커져 더 비스듬한 입사도 투과를 허용한다.
약압축성으로 음파를 싣는다#
비압축 솔버는 압력을 단지 발산 제약을 맞추는 도구로 쓴다. 그 압력장으로는 음파를 전파시킬 수 없다. 논문은 약압축성(weak compressibility, 압력에 시간 미분 항을 더해 유한 음속을 부여) 식을 도입한다.
는 압력, 는 속도, 는 그 점의 음속이다. 핵심은 를 상(相)마다 다르게 보간한 점이다. 농도 로 밀도·음속을 섞는다.
이 한 줄 수정으로, 같은 솔버가 매질1에서는 로, 매질2에서는 로 음파를 옮긴다. 저자들은 이를 엔트로피 안정 불연속 갤러킨 스펙트럴 요소법(DGSEM)으로 이산화해 스펙트럴 수렴을 보였다.
분산 계면이 만드는 모델링 오차#
VOF나 레벨셋이 계면을 한 칸으로 자르는 것과 달리, Cahn–Hilliard 모델은 계면을 폭 으로 번지게 한다.
이 번짐은 모델링 오차를 낳는다. 논문은 그 오차가 계면 폭의 제곱, 정확히는 파장으로 정규화한 로 줄어듦을 수치 실험으로 확인했다. 이면 위에서 본 날카로운 계면의 해석해로 수렴한다. 위 1D 시뮬레이션의 "interface width" 슬라이더가 바로 이 이다. 키우면 투과·반사 펄스가 살짝 뭉개진다.
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}")출력은 , 에서 해석해 , 에 가깝게 측정값이 따라붙는다. 격자를 촘촘히 하고 을 줄이면 둘의 차이가 더 좁아진다.
재현하며 의심스러웠던 것#
가장 먼저 부딪힌 함정은 반사파 분리다. 왼쪽 프로브는 입사파와 반사파의 합을 본다. 논문은 단상(single-phase) 시뮬레이션을 따로 돌려 입사파를 빼낸다. 위 코드는 펄스가 충분히 오른쪽으로 떠난 뒤 좌측 영역의 잔여 신호만 측정해 이 문제를 우회했지만, 입사·반사가 겹치는 구간에서는 부정확하다.
둘째, 약압축성은 진짜 압축성이 아니다. 충격파나 큰 마하수에는 적용할 수 없다. 저자들도 저마하·선형 음향에 한정한다. OpenFOAM의 acousticFoam류나 압축성 솔버로 직접 음향을 푸는 것과는 목적이 다르다.
셋째, 3D 공기-물 예제는 6750만 자유도를 썼다. 분산 계면에 10개 이상의 점을 욱여넣어야 정확도가 나오기 때문이다. 계면이 얇아질수록 비용이 폭증한다. 실무에서 이 방법이 VOF를 대체할지는 문제 규모에 달렸다.
다음에 읽을 논문#
핵심만 남긴다. 음파의 운명은 임피던스 점프 가 가른다. 비스듬한 입사는 Snell 법칙으로 굴절하고, 를 넘으면 전반사한다. 약압축성 항 하나를 상마다 보간하면 비압축 솔버도 음파를 정확한 속도로 옮긴다.
이 흐름을 더 파고들려면, 같은 그룹의 엔트로피 안정 DGSEM iNS/CH 원논문(Manzanero 외, 2020)이나, Ffowcs-Williams–Hawkings 음향 유추를 다상으로 확장한 연구를 이어 읽기를 권한다.
도움이 됐다면 공유해주세요.