물 위에서 외친 소리는 왜 물속에 닿지 않는가 — 분산 계면 음향 투과
압력 투과 계수 T가 1을 넘어도 에너지는 안 늘어난다. 99.9%는 임피던스 비를 제곱한 쪽에 가깝다.
수영장 가장자리에서 친구를 불러도, 물에 잠긴 사람은 거의 듣지 못한다. 공기 중 소리의 99.9%가 수면에서 튕겨 나오기 때문이다. 같은 물리가 해양 음향, 의료 초음파, 수중 소음을 가른다. Ballout 등(2025)을 따라, 계면의 반사·투과·굴절을 1D 음향 솔버로 다시 적는다.
음속비와 밀도비로 을 벌리면, 가운데 계면에서 반사 펄스가 커지고 투과 펄스는 줄어든다.
두 임피던스를 1:1로 맞추면 펄스가 계면을 통과하고 반사가 사라진다. 공기–물처럼 점프가 크면 왼쪽에는 반사만 남는다.
Abbas Ballout 외, "Acoustic Propagation/Refraction Through Diffuse Interface Models", arXiv:2504.01727 (2025). 비압축 Navier–Stokes/Cahn–Hilliard의 약압축성(weak compressibility) 항을 손봐서, 두 상(phase)이 서로 다른 음속을 갖게 하고 그 위로 음파를 보낸다.
음향 임피던스 — 매질이 소리에 거는 저항#
소리가 한 매질을 통과할 때 느끼는 저항을 음향 임피던스(acoustic impedance, 밀도×음속) 라 부른다.
여기서 는 밀도, 는 음속이다. 공기는 , 물은 . 무려 3600배 차이다.
임피던스는 소리가 그 매질에 얼마나 잘 실리는가를 나타낸다. 두 매질의 임피던스가 비슷하면 음파는 매끄럽게 넘어간다. 크게 다르면 대부분 튕겨 나온다. 수면에서 소리가 거의 반사되는 이유가 바로 이 점프다.
그 점프를 반사 계수에 다시 넣는다. 위에 적은 반올림 , 이면 비는 약 3600이다. 는 0.999에 붙는다. 그 제곱이 0.999 근처라, 앞에서 말한 99.9%와 맞는다. 압력 투과 는 2 바로 아래다. 1을 넘어도 에너지가 늘어난 것은 아니다. 물속의 입자 속도는 임피던스에 반비례해서 작아진다.
반사와 투과 — 임피던스 점프가 가른다#
수직 입사하는 평면파의 반사 계수 과 투과 계수 는 임피던스만으로 결정된다(논문 식 37).
, 는 각각 입사 측·투과 측 임피던스다. 공기→물이라면 이므로 . 거의 완전 반사다. 압력 투과 계수 는 1을 넘을 수 있다. 압력 진폭이 커지는 것은 에너지 보존을 깨지 않는다. 투과파의 입자 속도가 작아져 에너지 플럭스는 여전히 보존된다.
앞의 관에서 이미 그 점프를 밀었다. 음속비와 밀도비가 커질수록 투과 펄스는 작아지고 반사 펄스가 커진다. 1:1이면 반사가 사라진다. 같은 음파가 출구에서 되돌아오지 않게 막는 다른 자리는 NSCBC 출구 경계다.
13도의 벽 — Snell 법칙과 임계각#
비스듬히 입사하면 투과파의 방향이 꺾인다. 빛의 굴절과 똑같은 Snell 법칙(입사각과 투과각의 사인비가 음속비와 같다) 이 음파에도 성립한다(논문 식 41).
는 입사각, 는 투과각이다. 공기→물처럼 투과 측 음속이 더 빠르면(), 입사각이 일정 값을 넘는 순간 가 1을 초과한다. 투과파가 존재할 수 없다. 이 문턱이 임계각(critical angle) 이다.
은 약 0.232다. 그 아크사인이 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}")출력은 , 에서 해석해 , 에 가깝게 측정값이 따라붙는다. 기본값은 , , , 이라 다. , . 의 제곱은 0.405 근처다. 가 1.636이어도, 그 제곱이 반사 에너지를 1 너머로 밀어 올리지는 않는다. 입자 속도가 임피던스 비만큼 줄어 플럭스를 맞춘다.
격자는 , 라 다. 이면 폭 파라미터가 20칸이다. 3D 공기–물이 계면 안에 10점 이상을 요구한 것과 같은 자리다. 음속 최대는 이라 시간 간격은 이다. CFL 0.4는 빠른 쪽을 본다. 스텝 2600의 절반인 1300스텝 뒤부터 좌우 프로브가 피크를 재기 시작한다. 격자를 촘촘히 하고 을 줄이면 해석해와의 차이가 더 좁아진다.
재현하며 의심스러웠던 것#
가장 먼저 부딪힌 함정은 반사파 분리다. 왼쪽 프로브는 입사파와 반사파의 합을 본다. 논문은 단상(single-phase) 시뮬레이션을 따로 돌려 입사파를 빼낸다. 위 코드는 펄스가 충분히 오른쪽으로 떠난 뒤 좌측 영역의 잔여 신호만 측정해 이 문제를 우회했지만, 입사·반사가 겹치는 구간에서는 어긋난다.
약압축성은 진짜 압축성이 아니다. 충격파나 큰 마하수에는 적용할 수 없다. 저자들도 저마하·선형 음향에 한정한다. 압축성 솔버로 직접 음향을 푸는 것과는 목적이 다르다.
3D 공기-물 예제는 6750만 자유도를 썼다. 분산 계면에 10개 이상의 점을 욱여넣어야 정확도가 나오기 때문이다. 계면이 얇아질수록 비용이 폭증한다. 이 방법이 VOF를 대체할지는 문제 규모에 달렸다.
다음에 읽을 논문#
를 줄이면 로 오차는 줄어든다. 대신 3D에서는 계면 안 10점이라는 조건이 자유도를 6750만까지 밀었다. 1D 기본값 은 그 10점보다 두 배 두껍다. 더 얇게 자르기 전에, 0.636과 1.636이 먼저 붙는지 본다. 붙지 않으면 안티확산 계면 샤프닝이 아니라 프로브 시각이 문제다.
같은 그룹의 엔트로피 안정 DGSEM iNS/CH 원논문(Manzanero 외, 2020)은 이 약압축 항이 올라탄 이산화다. 출구에서 음파를 삼키는 경계는 앞의 NSCBC와 맞닿아 있다. 계면을 억지로 얇히기 전에, 임피던스 비가 3600인 수직 입사에서 이 0.999에 붙는지를 먼저 확인한다.
관련
도움이 됐다면 공유해주세요.