속도를 4배 올려도 쐐기각은 19.47°였다 — 수심이 켈빈 항적을 90°로 벌리는 자리
쐐기각을 정하는 것은 속도가 아니라 수심이다. 깊은 물에서는 19.47°로 고정되고, 수심 Froude수가 1에 닿는 순간 90°로 벌어진다.
1803년 세느강, 배를 상류로 밀어 올리는 일#
1803년 8월 9일 세느강에서 Robert Fulton이 증기선을 시연했다. 강변 명판에는 관람자 세 사람의 이름이 남아 있다. Bossut, Carnot, Prony. 모두 유체역학자였다.
증기기관은 1776년에 이미 있었다. 배에 얹으려는 시도도 여럿 있었다. 문제는 하나였다. 강을 거슬러 올라가지 못했다. Fulton이 푼 것은 기관이 아니라 저항이었다.
이 글은 그 저항의 한 조각을 다룬다. 배가 끌고 다니는 파도의 기하학이다. 깊은 물에서 항적 쐐기각은 속도를 아무리 올려도 19.47°에서 움직이지 않는다. 그런데 수심을 2 m로 낮추면 같은 각이 89°까지 벌어진다. 왜 속도는 못 하는 일을 수심이 하는지, 분산관계 하나로 끝까지 계산해 본다.
계산할 수 없어서 재야 했던 저항#
1752년 d'Alembert는 비점성 비회전 유동에서 물체가 받는 항력이 정확히 0이라는 결과를 냈다. 이론이 현실과 정면으로 어긋났다. 학계는 저항을 계산할 수단을 잃었다.
Bossut는 그 공백에서 예인수조 실험을 시작했다. 모형선을 일정 속도로 끌면서 장력을 쟀다. Prony가 그 데이터를 정리했다. Fulton이 받은 것은 이 실험 전통이었다.
그들이 쟀던 저항의 큰 부분은 마찰이 아니다. 배가 만든 파도가 뒤로 실어 나르는 에너지다. 그 파도가 어디에 생기는지부터 보자.
수심 슬라이더를 500 m에서 2 m로 내리면 노란 쐐기가 벌어지고, 속도 슬라이더만 올리면 각은 그대로다.
Push V up with h fixed at “deep”: the yellow wedge never budges from 19.47°. Now drag h down toward 2 m and raise V until Fr_h → 1: the wedge opens to 90°, then closes again once Fr_h > 1.
속도 슬라이더만 움직이면 노란 쐐기는 꿈쩍도 하지 않는다. 수심을 500 m에서 2 m 쪽으로 내리면서 같은 속도를 걸어야 각이 변한다. 조작하는 것은 두 개지만 각을 정하는 것은 하나다.
정지한 파도만 살아남는다#
배와 함께 움직이는 좌표계에서 보면 항적은 정지해 있다. 정지해 보이려면 파도의 위상속도가 배 속도의 그 방향 성분과 같아야 한다.
파수 벡터가 배 진행방향과 이루는 각을 라 하자. 조건은 이렇다.
는 배 속도, 는 파수, 는 수심, 는 중력가속도다. 오른쪽이 수면파의 분산관계다.
이 식이 이 글의 전부다. 깊은 물()에서는 이 되어 가 된다. 수심이 사라진다. 얕은 물()에서는 로 다. 파수가 사라진다. 이 두 극한 사이에 오늘의 이야기가 있다.
위상속도는 를 넘지 못한다. 수심이 유한하면 아무리 긴 파도도 이보다 빠를 수 없다. 배가 그 속도를 넘으면 왼쪽 항을 맞출 방법이 없어진다.
에너지가 실제로 가는 방향#
파도의 마루는 위상속도로 움직이지만 에너지는 군속도로 움직인다. 유한 수심에서 군속도는 이렇다.
괄호 안은 깊은 물에서 1, 얕은 물에서 2로 간다. 즉 는 에서 까지 변한다.
항적의 모양은 이 군속도가 만든다. 배가 초 전에 만든 파동 성분을 따라가 보자. 그 사이 배는 만큼 전진했고, 에너지는 파수 방향으로 만큼 갔다. 배를 원점으로 두면 그 성분은 뒤쪽으로 , 옆으로 떨어진 자리에 있다.
가 약분된다. 항적에서 이 성분이 나타나는 방향은 와 무관하다.
는 배 진행축에서 잰 광선각(ray angle)이다. 쐐기각은 를 부터 까지 훑었을 때 의 최댓값이다. 정상위상법(stationary phase)이 고르는 방향이 바로 이 최댓값이고, 거기에 에너지가 쌓여 뚜렷한 경계선으로 보인다.
19.47°는 어디서 나오는 숫자인가#
깊은 물에서 계산해 보자. 이므로 정지 조건에서 이고 다. 대입하면 가 통째로 약분된다.
속도가 식에서 사라졌다. 이 함수의 최댓값은 , 즉 에서 다. 각으로 고치면 다.
배가 2 m/s로 가든 8 m/s로 가든 같다. 속도가 바꾸는 것은 파장뿐이다. 깊은 물의 횡파 파장은 로 속도 제곱에 비례한다. 모양은 그대로 두고 크기만 키운다.
이면 , 이다. 분자는 이고 분모는 이다. 비는 가 된다. 아크탄젠트를 취하면 19.47°다. 는 분자와 분모에 같이 들어가 약분된다. 이면 m/s의 파장은 로 2.56 m다. 속도를 4배인 8 m/s로 올리면 가 16배가 되어 40.99 m다. 4 m/s는 두 배라 파장은 네 배, 10.25 / 2.56 = 4다. 표의 2.56, 10.25, 40.99가 이 비다.
수심을 2 m로 낮추고 같은 계산을 돌렸다#
이제 를 살려둔 채로 수치로 푼다. 정지 조건을 이분법으로 풀어 를 얻고, 군속도를 넣어 를 만들고, 최댓값을 훑는다.
import math
g = 9.81
def c_phase(k, h):
return math.sqrt(g / k * math.tanh(k * h))
def solve_k(v, h):
if v >= math.sqrt(g * h) - 1e-12:
return None
lo, hi = 1e-8, 1.0
while c_phase(hi, h) > v:
hi *= 2.0
if hi > 1e6:
return None
for _ in range(200):
mid = 0.5 * (lo + hi)
if c_phase(mid, h) > v:
lo = mid
else:
hi = mid
return 0.5 * (lo + hi)
def group_velocity(k, h):
kh = k * h
if kh > 20.0:
f = 1.0
else:
f = 1.0 + 2.0 * kh / math.sinh(2.0 * kh)
return 0.5 * c_phase(k, h) * f
def ray_angle(theta, v, h):
k = solve_k(v * math.cos(theta), h)
if k is None:
return None
cg = group_velocity(k, h)
num = cg * math.sin(theta)
den = v - cg * math.cos(theta)
if den <= 0.0:
return 0.5 * math.pi
return math.atan2(num, den)
def wedge_scan(v, h, n=8000):
best, best_t = 0.0, 0.0
for i in range(1, n):
th = 0.5 * math.pi * i / n
a = ray_angle(th, v, h)
if a is not None and a > best:
best, best_t = a, th
return math.degrees(best), math.degrees(best_t)
print(" V[m/s] h[m] Fr_h wedge[deg] theta*[deg] lambda_t[m]")
cases = [(2.0, 500.0), (4.0, 500.0), (8.0, 500.0),
(2.0, 2.0), (3.5, 2.0), (4.0, 2.0), (4.3, 2.0),
(4.43, 2.0), (5.5, 2.0), (8.0, 2.0)]
for v, h in cases:
frh = v / math.sqrt(g * h)
a, t = wedge_scan(v, h)
k0 = solve_k(v, h)
lam = (2 * math.pi / k0) if k0 else float('inf')
ls = f"{lam:10.2f}" if k0 else " inf"
print(f"{v:7.2f} {h:7.1f} {frh:7.3f} {a:11.2f} {t:11.2f} {ls}")
print()
print("supercritical branch vs Mach-like angle arcsin(1/Fr_h)")
print(" Fr_h wedge[deg] asin(1/Fr_h)[deg] diff")
for v, h in [(5.0, 2.0), (5.5, 2.0), (6.5, 2.0), (8.0, 2.0)]:
frh = v / math.sqrt(g * h)
a, _ = wedge_scan(v, h)
m = math.degrees(math.asin(1.0 / frh))
print(f"{frh:7.3f} {a:11.2f} {m:17.2f} {a-m:8.3f}") V[m/s] h[m] Fr_h wedge[deg] theta*[deg] lambda_t[m]
2.00 500.0 0.029 19.47 35.27 2.56
4.00 500.0 0.057 19.47 35.27 10.25
8.00 500.0 0.114 19.47 35.27 40.99
2.00 2.0 0.452 19.47 35.26 2.56
3.50 2.0 0.790 23.74 23.94 8.80
4.00 2.0 0.903 35.13 16.47 14.91
4.30 2.0 0.971 54.46 9.50 29.17
4.43 2.0 1.000 89.08 0.91 inf
5.50 2.0 1.242 53.63 36.36 inf
8.00 2.0 1.806 33.61 56.39 inf
supercritical branch vs Mach-like angle arcsin(1/Fr_h)
Fr_h wedge[deg] asin(1/Fr_h)[deg] diff
1.129 62.35 62.36 -0.007
1.242 53.63 53.64 -0.013
1.467 42.94 42.96 -0.014
1.806 33.61 33.62 -0.015Fr_h 슬라이더를 표의 0.452에서 1.000으로 밀면 의 봉우리가 를 떠나 왼쪽으로 내려간다.
Below Fr_h ≈ 0.7 the peak sits fixed at θ* = 35.27°, α = 19.47°. Drag Fr_h toward 1 and watch θ* slide to zero while α climbs to 90°. Past 1 a forbidden band opens on the left and the peak tracks asin(1/Fr_h).
0.1에서 0.7 사이에서는 봉우리가 35.27°에 붙어 쐐기각이 19.47°에서 안 움직인다. 1 근처에서만 봉우리가 치솟아 표의 89.08° 쪽으로 간다.
위 세 줄이 깊은 물이다. 속도가 4배로 늘어도 쐐기각은 19.47°에서 소수 두 자리까지 같다. 파장만 2.56 m에서 40.99 m로 16배가 됐다.
네 번째 줄이 흥미롭다. m인데도 19.47°가 그대로 나온다. Fr_h는 0.452다. 수심이 얕아도 파장이 2.56 m로 짧으면 라서 파도 입장에서는 여전히 깊은 물이다. 수심 자체가 아니라 파장 대비 수심이 문제다.
로 보면 m, m에서 다. 는 1에 붙어 분산관계가 깊은 물 식으로 돌아간다. 그래서 수심이 2 m여도 쐐기각이 19.47°다. m/s, m이면 로 0.43까지 내려간다. 가 1에서 떨어지고, 표의 각은 54.46°다. Fr_h = 0.790에서 23.74°, 0.903에서 35.13°, 0.971에서 54.46°, 1.000에서 89.08°다. 23.74°에서 89.08°까지, 깊은 물에서는 속도를 4배 올려도 안 움직이던 각이 4.30 m/s와 4.43 m/s 사이에서 벌어진다.
Fr_h가 0.79를 넘어서면서 각이 움직인다. 0.903에서 35.13°, 0.971에서 54.46°, 1.000에서 89.08°다. 마지막 값은 90°에 0.9° 못 미치는데, 격자가 유한해서 생기는 잔차다. 가 0.91°까지 내려간 것을 같이 보면 이유가 보인다. 봉우리가 으로 수렴하고 있다.
임계속도를 넘으면 쐐기는 다시 좁아진다#
Fr_h가 1을 넘으면 를 만족하는 만 남는다. 즉 구간만 파도를 만든다. 배 정면 쪽 방향은 금지 대역이 된다. 횡파는 아예 사라진다. 표에서 가 inf로 찍힌 것이 그것이다.
남은 사파(divergent wave)만으로 만들어지는 쐐기각은 다시 좁아진다. 1.242에서 53.63°, 1.806에서 33.61°다. 두 번째 표가 그 값을 와 비교한 것이다. 네 경우 모두 0.015° 안에서 일치한다.
이 각은 초음속 유동의 Mach 콘과 같은 식이다. 얕은 물의 가 음속 자리에 들어가 있을 뿐이다. Fr_h가 1을 넘는 순간 횡파가 사라지고 사파만 남는 갈림은 싱크대 수면에서 매일 생기는 수력도약이 Froude 수 1을 경계로 상류와 사류를 가르는 자리와 같다.
Fulton이 세느강에서 부딪힌 벽이 이것이다. 수심 2 m 강에서 임계속도는 4.43 m/s, 약 8.6노트다. 그 근처에서 항적은 강폭 전체로 퍼진다. 파도가 배를 떠나지 못하니 밀어낸 에너지가 그대로 저항으로 돌아온다.
이 각도가 CFD 격자를 정하는 자리#
자유수면 해석에서 도메인 폭을 정하는 숫자는 쐐기각의 탄젠트다. 19.47°의 탄젠트는 0.354라서 선미 뒤 에서 항적 반폭이 이다. 표의 Fr_h = 0.971, 각 54.46°는 탄젠트가 1.40 근처다. 같은 지점이 로 약 4배가 된다. 측벽을 깊은 물 습관인 밖에 두면 반사파가 선체 압력에 섞인다. 저항 계수가 조용히 틀린다.
파장 예산도 같이 움직인다. Fr_h = 0.971에서 횡파 파장은 29.17 m다. 파장당 40셀이면 그 파 하나만 1,000셀을 넘긴다. m, m/s 줄은 파장이 2.56 m이고 라, 같은 40셀 규칙이어도 100셀 남짓이다. 선체와 속도가 같아도 수심이 를 임계 쪽으로 밀면 격자 줄이 길어진다. 깊은 물 19.47°는 속도·선형·점성에 안 붙는 상수다. 각이 좁으면 파를 뭉갠 것이고, 넓으면 분산 오차가 낀 것이다.
임계 앞에서 도메인을 닫으면 항적이 벽에 맞는다#
Fulton은 분산관계를 알지 못했다. Bossut의 수조에서 장력계가 를 먼저 가리켰다. 수심 2 m에서 그 값은 4.43 m/s, 약 8.6노트다. Fr_h가 0.79를 넘는 순간 쐐기는 19.47°를 떠나 1.000에서 89.08°까지 벌어진다. 파가 배를 떠나지 못하면 넣은 에너지가 저항으로 돌아온다.
선체 저항을 볼 때 먼저 볼 것은 선속 자체가 아니다. 그 배가 만드는 파장에게 이 수심이 깊은 물인지다. m이고 m이면 라 아직 19.47°다. 같은 수심에서 파장이 29.17 m로 늘면 쐐기가 강폭으로 퍼진다. 속도 숫자만 보고 측벽을 닫는 실수는 Reynolds 수가 레짐을 가르는 자리에서 점성 계수만 보고 유동을 한 상자로 넣는 실수와 같다.
관련
도움이 됐다면 공유해주세요.