Skip to content
cfd-lab:~/ko/posts/2026-07-23-pipe-entrance…● online
NOTE #110DAY THU 유체역학DATE 2026.07.23UPDATED 2026.10.19READ 4 min read#Pipe-Flow#Boundary-Layer#Hagen-Poiseuille#Friction-Factor#Flow-Phenomena

물은 관을 얼마나 흘러야 포물선이 되는가 — 발달 길이와 Hagen–Poiseuille

측정 탭을 입구에서 지름의 0.05 Re보다 앞에 두면, 중심 속도는 평균의 두 배가 아니다.

수도꼭지를 완전히 열면 물줄기가 한동안 매끈하다. 관 속에서도 비슷한 일이 벌어진다. 입구에서 물은 벽의 존재를 거의 느끼지 못한다. 프로파일은 거의 평평하다. 그런데 조금 흐르고 나면 단면 속도 분포가 부드러운 포물선으로 바뀐다. 그 사이 구간이 오늘의 주인공이다.

Re 슬라이더를 100에서 2000으로 밀면 주황 fully developed 선이 오른쪽으로 밀린다.

선이 지름의 다섯 배에서 백 배까지 가는 동안, 입구의 평평한 분포는 아직 포물선이 아니다. 중심이 평균의 두 배가 되는 자리는 그 선 너머에만 있다.

벽이 소문을 퍼뜨리는 데 걸리는 거리#

관 벽에서 유체는 미끄러지지 않는다(no-slip, 벽 접촉면 속도 0). 이 조건은 입구에서 곧바로 전 단면에 퍼지지 않는다.

벽 근처에만 얇은 경계층(속도가 급변하는 벽 부근 층)이 생긴다. 흐를수록 이 층이 안쪽으로 자란다. 위아래 경계층이 관 중심에서 만나는 순간, 프로파일은 더 이상 변하지 않는다. 이 지점부터를 완전발달(fully developed) 구간이라 부른다.

입구에서 완전발달까지의 거리를 수력학적 발달 길이 LhL_h라 한다. 층류에서는 관 지름 DD와 Reynolds 수(관성력/점성력 비)로 정해진다.

LhD≈0.05 ReD,ReD=ρ umDμ\frac{L_h}{D} \approx 0.05\,\mathrm{Re}_D, \qquad \mathrm{Re}_D = \frac{\rho\,u_m D}{\mu}

umu_m은 단면 평균 속도, ρ\rho는 밀도, μ\mu는 점성계수다. ReD=2000\mathrm{Re}_D=2000이면 발달 길이가 관 지름의 100배에 달한다. 가는 실험 배관에서 측정 위치를 잘못 잡으면 아직 발달 중인 유동을 재는 셈이다.

숫자만 대입해 보자. ReD=2000\mathrm{Re}_D=2000이면 Lh/D≈0.05×2000=100L_h/D\approx0.05\times2000=100이다. 지름 2 cm면 발달 길이는 2 m다. 코드의 조건은 Re=1600\mathrm{Re}=1600, D=0.02D=0.02 m라서 0.05×1600×0.02=1.600.05\times1600\times0.02=1.60 m, 지름의 80배다. 입구에서 0.80 m, 즉 40D40D는 그 길이의 절반이다. 그 단면은 아직 완전발달이 아니다. 중심 속도는 2um=0.1602u_m=0.160 m/s에 못 미친다. 반대로 ReD=100\mathrm{Re}_D=100이면 Lh/D≈5L_h/D\approx5다. 같은 2 cm 관에서 10 cm. 실험대 위 짧은 관도 이 Reynolds에서는 거의 다 발달해 있다. 배관은 그대로 두고 유량만 올리면, 같은 탭이 발달 뒤에서 발달 중으로 바뀐다.

완전발달 구간의 포물선 — Hagen–Poiseuille#

완전발달이면 축방향 속도가 더 변하지 않는다. ∂u/∂x=0\partial u/\partial x = 0, 반경방향 속도 v=0v=0이다. 원통좌표 운동량 방정식은 단순해진다.

1rddr ⁣(rdudr)=1μdpdx\frac{1}{r}\frac{d}{dr}\!\left(r\frac{du}{dr}\right) = \frac{1}{\mu}\frac{dp}{dx}

압력 구배 dp/dxdp/dx는 상수다. 벽에서 u(R)=0u(R)=0, 중심에서 du/dr=0du/dr=0을 걸고 두 번 적분한다.

u(r)=−14μdpdx(R2−r2)=2 um ⁣(1−r2R2)u(r) = -\frac{1}{4\mu}\frac{dp}{dx}\left(R^2 - r^2\right) = 2\,u_m\!\left(1 - \frac{r^2}{R^2}\right)

R=D/2R=D/2는 관 반지름, rr는 중심에서의 거리다. 결과가 깔끔하다. 중심 속도는 평균의 정확히 두 배다. 이 포물선이 Hagen–Poiseuille 흐름이다.

중심에 r=0r=0을 넣으면 u=2umu=2u_m이다. 코드의 um=0.08u_m=0.08 m/s면 중심은 0.160 m/s다. u=umu=u_m이 되는 반지름은 r/R=1/2r/R=1/\sqrt{2}다. 벽 r=Rr=R에서는 0이다. 압력 구배와 잇는 식은 dp/dx=−32μum/D2dp/dx=-32\mu u_m/D^2다. μ=10−3\mu=10^{-3}, D=0.02D=0.02이면 D2=4×10−4D^2=4\times10^{-4}이고, −32×10−3×0.08/(4×10−4)=−6.40-32\times10^{-3}\times0.08/(4\times10^{-4})=-6.40 Pa/m이다. 이 기울기로 10 m를 가면 64 Pa, 80 m를 가면 512 Pa이다. 다만 이 직선은 완전발달 이후의 이야기다. 1.60 m 이전에는 경계층이 운동량을 걷어 가며 중심을 가속한다. 압력 강하는 이 직선보다 가파르다.

압력은 왜 일정하게 떨어지는가 — 마찰계수#

포물선을 단면에 걸쳐 평균하면 평균 속도와 압력 구배가 직접 연결된다.

dpdx=−32 μ umD2\frac{dp}{dx} = -\frac{32\,\mu\,u_m}{D^2}

구배가 상수라는 건 압력이 관을 따라 직선으로 떨어진다는 뜻이다. 이 손실을 무차원으로 묶은 것이 Darcy 마찰계수 ff다.

f=− (dp/dx) D12ρum2=64ReDf = \frac{-\,(dp/dx)\,D}{\tfrac{1}{2}\rho u_m^2} = \frac{64}{\mathrm{Re}_D}

층류 마찰계수는 오직 Reynolds 수만으로 결정된다. 관 거칠기는 끼어들지 않는다. 아래에서 Reynolds 수를 바꾸며 마찰계수 곡선 위 점을 옮겨보자.

regime: laminarf = 0.0640Lh/D ≈ 50.0

ReD<2300\mathrm{Re}_D<2300 구간에서 점은 64/Re64/\mathrm{Re} 직선을 정확히 따라간다. 문턱을 넘기면 곡선이 꺾이며 다른 법칙으로 갈아탄다.

2300이라는 문턱 — 층류에서 난류로#

ReD\mathrm{Re}_D가 약 2300을 넘으면 매끈하던 유동이 흐트러진다. 소용돌이가 섞이며 난류로 천이한다. 관 안에서 그 문턱이 어떻게 갈리는지는 물줄기가 흐트러지는 Reynolds에 적어 두었다.

난류에서는 발달 길이가 짧아진다. Lh/DL_h/D가 대략 10~60에 머문다. 층류의 100배와 대비된다. 대신 마찰은 커진다. 매끈한 관의 경험식 하나가 Blasius 식이다.

f=0.316 ReD−1/4(4000≲ReD≲105)f = 0.316\,\mathrm{Re}_D^{-1/4} \quad (4000 \lesssim \mathrm{Re}_D \lesssim 10^5)

지수가 −1-1에서 −1/4-1/4로 완만해진다. Reynolds 수를 올려도 마찰이 예전만큼 빨리 떨어지지 않는다. 같은 유량을 더 큰 압력으로 밀어야 한다.

Python으로 재현하는 발달 길이와 마찰#

작은 배관 하나를 숫자로 따라가 보자.

import numpy as np
 
def entrance_length(Re, D):
    # 층류 수력학적 발달 길이 [m]
    return 0.05 * Re * D
 
def poiseuille_profile(r, R, u_mean):
    # 완전발달 층류 속도 분포 (Hagen-Poiseuille)
    return 2.0 * u_mean * (1.0 - (r / R) ** 2)
 
def darcy_friction(Re):
    # 층류 마찰계수 (Re < 2300)
    return 64.0 / Re
 
D = 0.02          # 관 지름 [m]
rho, mu = 1000.0, 1e-3
u_mean = 0.08     # 평균 속도 [m/s]
 
Re = rho * u_mean * D / mu
print(f"Re = {Re:.0f}")                                 # Re = 1600
print(f"발달 길이 = {entrance_length(Re, D):.2f} m")     # 1.60 m
print(f"중심 속도 = {poiseuille_profile(0, D/2, u_mean):.3f} m/s")  # 0.160
dpdx = -32 * mu * u_mean / D**2
print(f"압력 구배 = {dpdx:.2f} Pa/m")                    # -6.40 Pa/m
print(f"마찰계수 f = {darcy_friction(Re):.4f}")          # 0.0400

지름 2 cm 관인데 발달 길이가 1.6 m다. 관 지름의 80배다. 실험대 위 짧은 배관은 대부분 발달 중인 유동을 다룬다.

탭을 발달 길이 앞에 꽂으면#

압력 탭을 LhL_h보다 앞에 두면 dp/dx=−32μum/D2dp/dx=-32\mu u_m/D^2는 아직 상수가 아니다. 코드가 찍은 Re=1600\mathrm{Re}=1600, f=0.0400f=0.0400, 구배 −6.40-6.40 Pa/m는 완전발달 이후의 값이다. 1.60 m 이전에서 같은 식을 쓰면 손실을 작게 본다. 입구 쪽은 중심이 가속되는 만큼 압력 강하가 더 가파르다.

난류로 넘기면 발달 길이는 짧아지고 마찰은 커진다. ReD\mathrm{Re}_D가 2300을 넘으면 Lh/DL_h/D는 10에서 60이다. 마찰은 64/Re64/\mathrm{Re}를 떠나 Blasius의 0.316 ReD−1/40.316\,\mathrm{Re}_D^{-1/4}로 올라탄다. ReD=104\mathrm{Re}_D=10^4이면 64/ReD=0.006464/\mathrm{Re}_D=0.0064이고, 10410^4의 네제곱근은 10이라 0.316×0.1=0.03160.316\times0.1=0.0316이다. 약 다섯 배다. 짧은 관이라고 층류 공식을 그대로 쓰면 펌프 양정이 모자란다. 벽 전단이 바깥 유동의 박리로 이어지는 쪽은 거친 공의 항력 위기에서 이어진다.

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