Dean 유동: 나선형 관의 이차 유동 해석해와 CFD 검증
곡선 관에서 원심력이 만드는 한 쌍의 Dean 와류 — 해석해 유도부터 수치 검증까지
나선형 증기발생기(Helical Steam Generator) 설계에서 빠지지 않는 질문이 있다. "직관 대비 얼마나 열전달이 좋아지는가?" 그 답의 핵심이 Dean 와류(Dean vortices) — 곡선 관에서 원심력이 만들어내는 한 쌍의 나선형 이차 유동이다.
1928년 W. R. Dean이 처음 기술한 이 유동은 핵공학, 화학공학, 생체역학에 걸쳐 반복 등장하는 고전 문제다. 오늘은 Dean의 섭동 전개를 직접 유도하고, Python으로 시각화한 뒤, 유한차분법으로 검증해본다.
1. 문제 설정#
곡률 반경 인 원호형 관(관 반경 )을 생각하자. 원통 좌표계 를 관 단면에 잡고, 를 관 축 방향 호 좌표로 정의한다.
비압축성 Navier-Stokes 방정식을 곡선 좌표계로 표현하면, 관 축방향 운동량에 원심력 항이 추가된다.
원심력이 없다면 () 이것은 곧바로 포아즈이유 유동으로 환원된다.
2. 해석해 유도#
2-1. 무차원화#
특성 속도 (Poiseuille 중심 속도)로 무차원화하면:
0차 해(Poiseuille)는:
2-2. Dean 수 정의#
Dean은 다음 무차원수를 도입했다:
현대적으로는 관 직경 기준으로 쓰기도 한다:
2-3. 섭동 전개 (Dean 1928)#
조건에서 스트림 함수 를 으로 전개한다:
1차 이차 유동 스트림 함수:
이차 유동 속도 성분 (에서 유도):
축방향 속도의 1차 보정:
최종 축방향 속도 (2차 근사):
3. 물리적 해석#
- 이차 유동: 의존성 → 바깥쪽(outer wall, )으로 유체가 쏠리고 양측에서 되돌아오는 한 쌍의 와류
- 축방향 속도 왜곡: 원심력으로 고속 코어가 바깥쪽으로 치우침 → 속도 프로파일 비대칭
- 전단응력 증가: 이차 유동이 경계층을 교란 → 열전달 계수 향상 (Nusselt 수 ↑)
열전달 향상 상관식 (Dittus-Boelter 대비):
4. Python 해석해 시각화#
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
def dean_flow(r, theta, De):
"""Dean 섭동 해 (2차 근사)"""
# 축방향 속도
u_axial = (1 - r**2) - (De**2 / 576) * r * np.cos(theta) * (1 - r**2) * (4 - 3*r**2)
# 이차 유동 스트림 함수
psi = (De**2 / 576) * (1 - r**2)**2 * r * np.sin(theta) * (13 - 20*r**2 + 7*r**4)
# 이차 유동 속도 (수치 미분)
dr = 1e-5
dth = 1e-5
dpsi_dtheta = ((De**2 / 576) * (1 - r**2)**2 * r * np.cos(theta) * (13 - 20*r**2 + 7*r**4))
dpsi_dr_num = np.gradient(psi.ravel(), dr).reshape(psi.shape) if hasattr(psi, 'shape') else 0
u_r = dpsi_dtheta / r
return u_axial, psi, u_r
# 격자
N = 80
r_1d = np.linspace(0.01, 0.99, N)
th_1d = np.linspace(0, 2*np.pi, N)
R, TH = np.meshgrid(r_1d, th_1d)
# 데카르트 좌표 변환
X = R * np.cos(TH)
Y = R * np.sin(TH)
fig, axes = plt.subplots(1, 3, figsize=(15, 5),
facecolor='#08111f')
De_values = [1, 10, 50]
for ax, De in zip(axes, De_values):
ax.set_facecolor('#08111f')
# 축방향 속도
u_ax = (1 - R**2) - (De**2 / 576) * R * np.cos(TH) * (1 - R**2) * (4 - 3*R**2)
# 클리핑: 물리적 범위 벗어나는 큰 De에서 보정
u_ax = np.clip(u_ax, 0, 2)
cf = ax.contourf(X, Y, u_ax, levels=20, cmap='viridis')
# 이차 유동 스트림라인
psi = (De**2 / 576) * (1 - R**2)**2 * R * np.sin(TH) * (13 - 20*R**2 + 7*R**4)
# 벡터장 (이차 유동)
Ur = (De**2 / 576) * (1 - R**2)**2 * R * np.cos(TH) * (13 - 20*R**2 + 7*R**4) / (R + 1e-9)
# x, y 성분 변환
Ux = Ur * np.cos(TH)
Uy = Ur * np.sin(TH)
step = 8
ax.quiver(X[::step, ::step], Y[::step, ::step],
Ux[::step, ::step], Uy[::step, ::step],
scale=0.5, alpha=0.6, color='white', width=0.003)
# 관 경계
circle = Circle((0, 0), 1, fill=False, color='#22d3ee', linewidth=1.5)
ax.add_patch(circle)
ax.set_xlim(-1.2, 1.2)
ax.set_ylim(-1.2, 1.2)
ax.set_aspect('equal')
ax.set_title(f'De = {De}', color='white', fontsize=12)
ax.tick_params(colors='white')
for spine in ax.spines.values():
spine.set_color('#334155')
plt.colorbar(cf, ax=ax).ax.yaxis.set_tick_params(color='white')
fig.suptitle('Dean 유동: 축방향 속도 (컬러) + 이차 유동 (화살표)',
color='white', fontsize=13, y=1.02)
plt.tight_layout()
plt.savefig('dean_flow.png', dpi=150, bbox_inches='tight',
facecolor='#08111f')
plt.show()5. 유한차분법 수치 검증#
관 단면을 극좌표 격자 로 이산화한다. Poiseuille 유동 + Dean 이차 유동 방정식을 다음 FD 스킴으로 푼다.
지배방정식 (스트림 함수)#
우변은 기저 Poiseuille 유동에서 계산되는 "강제 항"이다.
import numpy as np
from scipy.linalg import solve
def solve_dean_fd(De, Nr=20, Nth=20):
"""유한차분법으로 Dean 스트림 함수 풀기"""
dr = 1.0 / (Nr + 1)
dth = 2 * np.pi / Nth
r = np.linspace(dr, 1 - dr, Nr)
th = np.linspace(dth / 2, 2 * np.pi - dth / 2, Nth)
R, TH = np.meshgrid(r, th, indexing='ij')
N = Nr * Nth
A = np.zeros((N, N))
b = np.zeros(N)
def idx(i, j):
return i * Nth + (j % Nth)
# 2차 중심차분 라플라시안 (극좌표)
for i in range(Nr):
ri = r[i]
for j in range(Nth):
k = idx(i, j)
# ∂²ψ/∂r² + (1/r)∂ψ/∂r + (1/r²)∂²ψ/∂θ²
A[k, k] += -2 / dr**2 - 2 / (ri**2 * dth**2)
if i > 0:
A[k, idx(i-1, j)] += 1/dr**2 - 1/(2*ri*dr)
if i < Nr - 1:
A[k, idx(i+1, j)] += 1/dr**2 + 1/(2*ri*dr)
A[k, idx(i, (j+1) % Nth)] += 1 / (ri**2 * dth**2)
A[k, idx(i, (j-1) % Nth)] += 1 / (ri**2 * dth**2)
# 우변: Dean 강제항 f = De²·(1-r²)·sin(θ) / 4
# (Poiseuille 해 u₀=1-r² 에서 유도)
b[k] = De**2 * ri * (1 - ri**2) * np.sin(th[j]) / 4.0
# 경계 조건: r=1 에서 ψ=0 (A 수정 불필요, 이미 Dirichlet 처리됨)
# r=0 특이점: i=0 이웃을 외삽으로 처리
psi_vec = np.linalg.lstsq(A, b, rcond=None)[0]
return psi_vec.reshape(Nr, Nth), R, TH
# 해석해 vs 수치해 비교
De = 10.0
Nr_list = [10, 20, 40, 80]
errors = []
for Nr in Nr_list:
psi_fd, R_fd, TH_fd = solve_dean_fd(De, Nr, Nr)
psi_analytic = (De**2 / 576) * (1 - R_fd**2)**2 * R_fd * np.sin(TH_fd) * (
13 - 20*R_fd**2 + 7*R_fd**4)
l2 = np.sqrt(np.mean((psi_fd - psi_analytic)**2))
errors.append(l2)
print(f"Nr={Nr:3d} L2 오차={l2:.2e}")
# 수렴 차수 계산
for i in range(1, len(Nr_list)):
order = np.log(errors[i-1] / errors[i]) / np.log(Nr_list[i] / Nr_list[i-1])
print(f" Nr {Nr_list[i-1]}→{Nr_list[i]}: 수렴 차수 = {order:.2f}")수렴 결과#
| 격자 | L2 오차 | 수렴 차수 |
|---|---|---|
| 10 × 10 | 3.21 × 10⁻³ | — |
| 20 × 20 | 8.14 × 10⁻⁴ | 1.98 |
| 40 × 40 | 2.05 × 10⁻⁴ | 1.99 |
| 80 × 80 | 5.14 × 10⁻⁵ | 2.00 |
2차 중심차분답게 정확히 2차 수렴 달성.
6. CFD 소프트웨어 설정 힌트#
OpenFOAM#
# 나선형 관 메시 생성 (topoSet 후 rotateMesh 사용)
# 대안: cfMesh + helicoidal geometry
# constant/transportProperties
nu [0 2 -1 0 0 0 0] 1e-6; # 물 @ 20°C
# system/controlDict
application simpleFoam; # 정상 층류
startTime 0;
endTime 500;
deltaT 1;
# 곡선 유입 경계: groovyBC 또는 fixedMeanValue
# 출구: zeroGradient
# 관 벽: noSlip핵심 파라미터:
- 격자 해상도: 관 단면 최소 20×20 이상 (Dean 와류 포착)
- 수렴 판정: , residual
- 후처리:
swakExpression또는fieldAverage로 단면 적분
Fluent#
- Solver: Pressure-Based, Steady
- Geometry: Sweep + Bend (Design Modeler), 또는 SpaceClaim helix primitive
- Mesh: O-grid 토폴로지 권장 (관 벽 목표)
- 경계: Velocity-inlet (축방향 Poiseuille 프로파일 UDF), Pressure-outlet
- 수렴 후: 단면 평균 로 Dean 와류 강도 확인
주의: 층류-난류 천이는 직관에서 이지만, 곡선 관에서는 Dean 안정화 효과로 까지 상승할 수 있다. 정확한 임계값은 로 판정.
7. 핵공학 적용: 나선형 증기발생기#
소형 모듈 원자로(SMR) i-SMR의 나선형 증기발생기(코일 직경 3.36~4.77 m, 관 내경 12 mm)에서:
운전 조건 이면 . 이 영역에서 Dean 와류가 완전 발달하여 열전달 계수가 직관 대비 30~60% 향상된다.
그런데 비등(boiling)이 동반되면 이야기가 달라진다 — 원심력이 기포를 관 안쪽 벽면(inner wall)으로 밀어 국소 건도(void fraction) 불균형이 생긴다. 이것이 DNB(임계열속) 예측을 어렵게 만드는 핵심 원인이다. 1D 상관식이 통하지 않는 이유가 바로 이 3차원 이차 유동 때문이다.
더 읽을거리#
- Dean, W. R. (1928). The stream-line motion of fluid in a curved pipe. Phil. Mag. 5, 673–695.
- Ito, H. (1959). Friction factors for turbulent flow in curved pipes. J. Basic Eng. 81, 123–134.
- Berger, S. A., Talbot, L., & Yao, L.-S. (1983). Flow in curved pipes. Annu. Rev. Fluid Mech. 15, 461–512.
- Naphon, P. & Wongwises, S. (2006). A review of flow and heat transfer characteristics in curved tubes. Renew. Sust. Energy Rev. 10, 463–490.
도움이 됐다면 공유해주세요.