Skip to content
cfd-lab:~/ko/posts/2026-09-17-kinetic-energ…● online
NOTE #157DAY THU 유체역학DATE 2026.09.17UPDATED 2026.10.19READ 5 min read#Kinetic-Energy-Coefficient#Bernoulli#Turbulence#Poiseuille#Fluid-Mechanics

층류에서 2.0000, 난류에서 1.0322 — 속도수두 앞에 붙는 계수

운동에너지는 속도의 3제곱에 붙는다. 그래서 평균속도의 제곱으로 만든 속도수두는 층류에서 정확히 절반만 센다.

평균속도만 들고 베르누이로 가면 절반이 사라진다#

같은 관에 같은 유량이 흐른다. 유량을 단면적으로 나누면 평균속도 VV가 나온다. 이 VV로 V2/2gV^2/2g를 만들어 에너지 방정식에 넣는다. 여기까지는 누구나 한다.

그런데 층류 관유동에서 이 값은 실제 운동에너지의 정확히 절반이다. 유량도 맞고 단면적도 맞는데 에너지만 100% 틀린다. 오늘은 그 차이가 어디서 생기는지, 난류에서는 왜 그 차이가 3%로 줄어드는지를 직접 적분해서 확인한다.

속도수두를 정의할 때 무엇을 적분했는가#

단면을 지나는 운동에너지 유속(flux)은 질량유속에 국소 운동에너지를 곱해 적분한 값이다.

E˙k=∫A12u2⋅ρu dA=ρ2∫Au3 dA\dot{E}_k = \int_A \frac{1}{2} u^2 \cdot \rho u \, dA = \frac{\rho}{2} \int_A u^3 \, dA

uu는 국소 축방향 속도, ρ\rho는 밀도, AA는 단면적이다. 적분 안에 uu가 세 번 들어간다. 두 번은 에너지에서, 한 번은 질량을 나르는 데서 왔다.

반면 교재의 에너지 방정식은 m˙V2/2\dot{m} V^2/2 꼴로 쓴다. m˙=ρVA\dot{m} = \rho V A이므로 이것은 ρV3A/2\rho V^3 A / 2다. 둘의 비가 운동에너지 보정계수 α\alpha다. 운동량 방정식에도 같은 사정이 있고, 거기서는 uu가 두 번 들어간 β\beta가 나온다.

α=∫Au3 dAV3A,β=∫Au2 dAV2A\alpha = \frac{\int_A u^3 \, dA}{V^3 A}, \qquad \beta = \frac{\int_A u^2 \, dA}{V^2 A}

두 계수 모두 profile이 평평할수록 1에 가깝다. profile 스위치를 층류에서 결손법칙으로 넘기면 오른쪽 장부 막대 높이 차가 2에서 1.03 근처로 접힌다.

Tracers move at the local velocity, so the parabola stretches far more than the blunt turbulent profile. The yellow bar is the kinetic energy the flow actually carries; the grey bar is what V²/2g alone would claim.

profile을 층류·멱법칙·속도결손으로 바꾸면서 오른쪽 장부 두 칸의 높이 차이를 본다. 추적자(tracer)는 국소 속도로 움직이므로, 포물선에서는 가운데 점들만 멀리 달아나고 난류 profile에서는 거의 한 덩어리로 간다. 이 "덩어리로 가는 정도"가 그대로 α\alpha다.

층류 관유동에서 계수가 정확히 2가 되는 이유#

Hagen–Poiseuille 해는 포물선이다. u=Uc[1−(r/R)2]u = U_c \left[1 - (r/R)^2\right]이고 V=Uc/2V = U_c/2다. s=r/Rs = r/R로 두고 적분하면 분모·분자가 모두 닫힌 값으로 떨어진다.

∫Au3 dA=2πR2Uc3∫01(1−s2)3s ds=πR2Uc34\int_A u^3 \, dA = 2\pi R^2 U_c^3 \int_0^1 (1-s^2)^3 s \, ds = \frac{\pi R^2 U_c^3}{4}

V3A=(Uc/2)3πR2=πR2Uc3/8V^3 A = (U_c/2)^3 \pi R^2 = \pi R^2 U_c^3 / 8이므로 α=2\alpha = 2다. 같은 방식으로 β=4/3\beta = 4/3이 나온다. 근사도 경험식도 아니고 정수비다.

분자를 한 번 더 열면 2가 정수로 떨어지는 자리가 보인다. (1−s2)3s=s−3s3+3s5−s7(1-s^2)^3 s = s - 3s^3 + 3s^5 - s^7이고, 0에서 1까지 적분하면 1/2−3/4+1/2−1/8=1/81/2 - 3/4 + 1/2 - 1/8 = 1/8이다. 앞의 2πR2Uc32\pi R^2 U_c^3를 곱하면 분자는 πR2Uc3/4\pi R^2 U_c^3/4다. 분모 V3AV^3 A는 (Uc/2)3πR2=πR2Uc3/8(U_c/2)^3 \pi R^2 = \pi R^2 U_c^3/8이다. 4분의 1을 8분의 1로 나누면 정확히 2다. β\beta는 차수가 하나 낮다. u2u^2 적분이 4/34/3에서 멈추고, 표의 1.3333은 그 유리수를 소수 넷째 자리에서 자른 것이다. n=7n=7이면 2n2/((n+1)(2n+1))=98/120=0.81666…2n^2/((n+1)(2n+1)) = 98/120 = 0.81666\ldots이라 출력의 0.8167과 맞다.

α=2\alpha=2는 "에너지의 절반을 빠뜨렸다"는 뜻이 아니다. 평균속도라는 하나의 숫자로는 3제곱 적분을 대신할 수 없다는 뜻이다. 같은 포물선의 닫힌 해를 속도부터 따라가려면 포아즈이유 유동의 해석해가 그 단면을 먼저 푼다. 거기서는 속도가, 여기서는 그 속도의 세제곱 적분이 나온다.

난류 profile을 지수 하나로 적는 방법#

난류 관유동은 벽 근처에서만 급하게 변하고 중심부는 거의 평평하다. 이 모양을 지수 하나로 근사한 것이 멱법칙(power law)이다.

uˉUc=(yR)1/n,y=R−r\frac{\bar{u}}{U_c} = \left(\frac{y}{R}\right)^{1/n}, \qquad y = R - r

yy는 벽에서의 거리, nn은 Reynolds 수가 커질수록 함께 커지는 지수다. 보통 n=7n=7을 쓴다. 이 profile의 평균속도는 적분이 닫혀서 해석해가 있다.

VUc=2n2(n+1)(2n+1)\frac{V}{U_c} = \frac{2n^2}{(n+1)(2n+1)}

n=7n=7이면 0.81670.8167이다. 층류의 0.50.5와 비교하면 profile이 얼마나 뭉툭해졌는지 바로 보인다. α\alpha도 같은 적분이므로 nn 하나만 알면 값이 정해진다.

Python으로 profile 네 종류의 장부를 나란히 적었다#

세 가족(층류·멱법칙·속도결손)을 같은 사다리꼴 적분기에 넣는다. 외부 패키지 없이 표준 라이브러리만 쓴다. 반지름 방향 40,000분할이면 층류 해석해와 소수 넷째 자리까지 맞는다.

import math
 
R, M = 1.0, 40000                      # 반지름, 반지름 방향 분할 수
dr = R / M
rs = [i * dr for i in range(M + 1)]
A = math.pi * R * R
 
def ring_integral(vals):
    """f(r)를 단면 위에서 적분: ∫ f · 2πr dr (사다리꼴)"""
    s = 0.0
    for i in range(M):
        a = vals[i] * 2.0 * math.pi * rs[i]
        b = vals[i + 1] * 2.0 * math.pi * rs[i + 1]
        s += 0.5 * (a + b) * dr
    return s
 
def ledger(u):
    """평균속도, 운동에너지 보정계수 alpha, 운동량 보정계수 beta"""
    vbar = ring_integral(u) / A
    al = ring_integral([x ** 3 for x in u]) / (vbar ** 3 * A)
    be = ring_integral([x ** 2 for x in u]) / (vbar ** 2 * A)
    return vbar, al, be
 
def poiseuille():
    return [1.0 - (r / R) ** 2 for r in rs]
 
def power_law(n):
    return [max(1.0 - r / R, 0.0) ** (1.0 / n) for r in rs]
 
def defect_law(ustar):
    """u/Vbar = 1 + (u*/Vbar)(3.75 - 2.5 ln(R/y)),  y = R - r"""
    out = []
    for r in rs:
        y = max(R - r, 1e-9)
        out.append(1.0 + ustar * (3.75 - 2.5 * math.log(R / y)))
    return out
 
print(f"{'profile':<20}{'Vbar/Uc':>9}{'alpha':>9}{'beta':>8}")
vb, al_lam, be = ledger(poiseuille())
print(f"{'Poiseuille (laminar)':<20}{vb:9.4f}{al_lam:9.4f}{be:8.4f}")
for n in (6, 7, 8, 10):
    vb, al, be = ledger(power_law(n))
    exact = 2.0 * n * n / ((n + 1.0) * (2.0 * n + 1.0))
    print(f"{'power law n=' + str(n):<20}{vb:9.4f}{al:9.4f}{be:8.4f}   Vbar exact {exact:.4f}")
 
print()
cases = [("laminar", al_lam)]
print(f"{'Re':>8}{'f':>8}{'u*/Vbar':>9}{'Uc/Vbar':>9}{'alpha':>8}{'beta':>8}")
for Re in (1e4, 1e5, 1e6, 1e7):
    f = (0.790 * math.log(Re) - 1.64) ** -2.0        # Petukhov 마찰계수
    us = math.sqrt(f / 8.0)                          # u*/Vbar
    u = defect_law(us)
    vb, al, be = ledger(u)
    print(f"{Re:8.0e}{f:8.4f}{us:9.4f}{max(u) / vb:9.4f}{al:8.4f}{be:8.4f}")
    cases.append((f"turbulent Re={Re:.0e}", al))
 
print()
V, g = 3.0, 9.81                                     # 3 m/s 관유동, 속도수두 비교
base = V * V / (2 * g)
for name, al in (cases[0], cases[1], cases[3]):
    print(f"{name:<21}alpha={al:6.4f}  alpha·V²/2g = {al * base:6.4f} m  "
          f"alpha=1 missing {al * base - base:6.4f} m ({(al - 1) * 100:6.2f}%)")
profile               Vbar/Uc    alpha    beta
Poiseuille (laminar)   0.5000   2.0000  1.3333
power law n=6          0.7912   1.0768  1.0269   Vbar exact 0.7912
power law n=7          0.8167   1.0584  1.0204   Vbar exact 0.8167
power law n=8          0.8366   1.0460  1.0160   Vbar exact 0.8366
power law n=10         0.8658   1.0307  1.0106   Vbar exact 0.8658
 
      Re       f  u*/Vbar  Uc/Vbar   alpha    beta
   1e+04  0.0315   0.0627   1.2353  1.0835  1.0309
   1e+05  0.0180   0.0474   1.1779  1.0490  1.0177
   1e+06  0.0116   0.0381   1.1430  1.0322  1.0114
   1e+07  0.0081   0.0319   1.1195  1.0227  1.0080
 
laminar              alpha=2.0000  alpha·V²/2g = 0.9174 m  alpha=1 missing 0.4587 m (100.00%)
turbulent Re=1e+04   alpha=1.0835  alpha·V²/2g = 0.4970 m  alpha=1 missing 0.0383 m (  8.35%)
turbulent Re=1e+06   alpha=1.0322  alpha·V²/2g = 0.4735 m  alpha=1 missing 0.0148 m (  3.22%)

결손법칙 슬라이더를 0에서 100%로 밀면 Reynolds 수마다 흩어진 곡선이 u∗u^* 한 줄로 포개진다.

Drag collapse from 0 to 100%. On the left the Reynolds curves are clearly separated; dividing by u* and measuring from the centreline folds them onto one dashed line that has no Reynolds number in it at all.

Re=104Re=10^4의 α=1.0835\alpha=1.0835와 Re=106Re=10^6의 α=1.0322\alpha=1.0322는 그 겹친 줄에서 ff만 바꿔 다시 적분한 값이다. 곡선 개수를 늘려도 포개진 줄은 두꺼워지지 않는다.

수치 적분이 층류에서 2.00002.0000과 1.33331.3333을 그대로 재현했다. 멱법칙의 평균속도도 해석해와 네 자리까지 같다. 적분기가 맞다는 뜻이다.

Re가 사라지는 좌표 — 속도결손 법칙#

표의 두 번째 블록은 멱법칙이 아니라 속도결손 법칙(velocity-defect law)으로 만들었다. 대수 법칙을 중심선에서 한 번, 임의의 점에서 한 번 쓰고 빼면 점성계수가 통째로 사라진다.

Uc−uˉu∗=2.5ln⁡Ry\frac{U_c - \bar{u}}{u^*} = 2.5 \ln \frac{R}{y}

u∗=τw/ρu^* = \sqrt{\tau_w/\rho}는 마찰속도다. 오른쪽에는 ν\nu도 ReRe도 없다. 벽에서 얼마나 떨어졌는가만 남는다. 여기에 단면 평균을 취하면 Uc/u∗−V/u∗=3.75U_c/u^* - V/u^* = 3.75라는 상수 하나가 떨어지고, u∗/V=f/8u^*/V = \sqrt{f/8}로 마찰계수와 연결된다. 점성계수 ν\nu는 빼는 과정에서 통째로 빠지고, 벽에서의 거리만 남는다. 위에서 포갠 줄이 이 상수 3.75다.

α\alpha와 β\beta를 같은 표에 올린다#

profileV/UcV/U_cα\alphaβ\beta비고
층류 포물선0.50002.00001.3333정확한 유리수
멱법칙 n=7n=70.81671.05841.0204교재 기본값
멱법칙 n=10n=100.86581.03071.0106고 Reynolds
결손법칙 Re=104Re=10^4—1.08351.0309f=0.0315f = 0.0315
결손법칙 Re=107Re=10^7—1.02271.0080f=0.0081f = 0.0081

난류 쪽 네 줄을 ff로 나누면 규칙이 보인다. α−1\alpha - 1은 ff의 2.7~2.8배, β−1\beta - 1은 ff의 0.98배다. 즉 두 계수는 profile 모양이 아니라 마찰계수 하나에 매여 있다. 거친 관일수록 ff가 크고, α\alpha도 같이 커진다. 매끈한 관을 고 Reynolds로 돌리면 α\alpha는 1.02까지 내려간다.

Re=106Re=10^6 줄을 직접 나눈다. α−1=0.0322\alpha-1 = 0.0322이고 f=0.0116f = 0.0116이니 0.0322/0.0116≈2.780.0322/0.0116 \approx 2.78이다. Re=104Re=10^4는 0.0835/0.0315≈2.650.0835/0.0315 \approx 2.65다. 2.7~2.8배라는 말은 이 두 줄에서 나온다. β\beta는 더 붙는다. Re=106Re=10^6에서 0.0114/0.0116≈0.980.0114/0.0116 \approx 0.98이고, Re=104Re=10^4도 0.0309/0.0315≈0.980.0309/0.0315 \approx 0.98이다. 운동량 보정은 마찰계수와 거의 같은 크기다.

3 m/s에 g=9.81g = 9.81이면 α=1\alpha=1의 속도수두는 V2/2g=9/19.62=0.4587V^2/2g = 9/19.62 = 0.4587 m다. 층류는 2를 곱해 0.9174 m가 되고, 빠진 0.4587 m가 그 절반이다. Re=106Re=10^6의 1.0322를 같은 바닥에 곱하면 0.4735 m, 차이는 0.0148 m다. Re=104Re=10^4는 빠지는 양이 0.0383 m, 8.35%다. 손실수두가 수 m인 배관에서 0.0148 m는 묻히고, 층류의 0.4587 m는 장부에 남는다.

멱법칙과 결손법칙이 같은 Reynolds에서 조금 다른 값을 주는 것도 표에 보인다. 멱법칙은 벽에서 기울기가 무한대이고 중심선에서 꺾인다. 근사 두 개가 근사인 만큼 차이가 난다.

이 계수가 실제로 숫자를 바꾸는 자리#

마지막 블록이 3 m/s 관유동의 속도수두다. 난류에서 α\alpha를 1로 두면 Re=106Re=10^6에서 0.0148 m를 빠뜨린다. 배관 한 구간의 손실수두가 수 m라면 무시해도 된다. 층류에서는 0.4587 m를 빠뜨린다. 같은 계산에서 100%다.

숫자가 움직이는 자리는 따로 있다. 점도가 큰 유체나 가는 관은 층류라 α=2\alpha=2다. 입구 영역은 profile이 아직 자라는 중이라 α\alpha가 1과 2 사이를 지난다. 출구면 전압을 면적평균으로 뽑느냐 질량유속 가중으로 뽑느냐는 ∫u2\int u^2와 ∫u3\int u^3 중 무엇을 쓰느냐의 문제다. 두 값이 다르게 나오면 솔버가 틀린 것이 아니라 평균의 정의가 다른 것이다.

α\alpha는 상수처럼 적혀 있지만 profile이 정한다. 손으로 1을 박아 두면 층류 장부가 반으로 틀린다.

교재가 α=1\alpha=1이라고 적고 넘어가는 조건#

α=1\alpha=1은 profile이 완전히 평평할 때만 성립한다. 난류에서 이 근사가 통하는 이유는 난류가 평평해서가 아니라 ff가 작아서다. ff가 0.01 언저리면 α\alpha는 1.03이고, 3%는 배관 계산의 다른 불확실성에 묻힌다.

그래서 판단 기준은 "난류인가"가 아니라 "ff가 얼마인가"다. 천이가 관 안의 층을 여러 겹으로 가르는 과정은 레이놀즈 임계와 관 천이에 있다. 거친 관, 낮은 Reynolds, 층류 어느 하나라도 걸리면 α\alpha를 다시 적분한다. 계산은 위 코드처럼 한 번이다.

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