응용 — 산업 CFD에서의 모델 선택
응용 — 산업 CFD에서의 모델 선택
12장에 걸쳐 쌓아온 도구들을 한 장의 의사결정표로 정리하고, 어떤 흐름에 어떤 난류 모델이 맞는지를 판단하는 안목으로 책을 닫는다.
들어가며
여기까지 왔다면 이제 RANS, LES, DNS라는 약어가 더 이상 외워야 할 단어가 아니라, 각자의 가정과 비용 구조가 머릿속에 그려지는 도구들일 것이다. 마지막 장의 목표는 새로운 수식을 도입하는 것이 아니라, 이미 가진 것을 정리하는 것이다. 이 장을 다 읽고 나면, 논문이나 상용 CFD 매뉴얼을 펴서 “이 사람은 왜 이 모델을 골랐는가”를 스스로 평가할 수 있게 된다.
본론 1 — 1장의 다섯 가지 특성으로 돌아가기
1장에서 난류를 다섯 가지 특성으로 정의했다 — 불규칙성, 확산성, 큰 레이놀즈 수, 3차원 와도 변동, 소산. 이 책 전체는 결국 이 다섯을 어떻게 존중하느냐 또는 우회하느냐의 이야기였다.
- DNS(10장)는 다섯 가지를 그대로 풀려고 한다. 가장 작은 소산 스케일 (에타, Kolmogorov 길이)까지 격자를 깔아 모든 와도 변동을 직접 계산한다. 모델은 없다.
- LES(11장)는 큰 와동만 직접 풀고, 격자보다 작은 스케일의 소산은 SGS(sub-grid stress) 모델로 대체한다. 다섯 특성 중 큰 스케일은 그대로, 작은 스케일은 모델로 대체된다.
- RANS(5–6장)는 다섯 특성 전부를 시간 평균 안으로 흡수하고, 평균장만 푼다. 와도 변동 자체는 계산되지 않고, 그 효과(레이놀즈 응력 )만 모델링된다.
세 접근은 “무엇을 풀고, 무엇을 모델로 대체할 것인가”라는 한 줄 질문에 대한 세 가지 답이다.
본론 2 — 한 장의 비교표
| 접근 | 직접 푸는 것 | 모델로 대체하는 것 | 비용(Re 의존) | 벽 격자 요구 | 효과가 큰 영역 |
|---|---|---|---|---|---|
| DNS | 가장 작은 까지 모든 스케일 | 없음 | 연구, 검증 데이터 생성 | ||
| LES | 큰 와동 | SGS 응력 | 벽 근처 | 연소, 공력음향, 비정상 흐름 | |
| 하이브리드(DES) | 벽은 RANS, 코어는 LES | 영역별로 다름 | LES와 RANS 사이 | 벽함수 또는 분해 | 외부공력, 박리 흐름 |
| RANS(k-ω SST) | 평균장만 | 레이놀즈 응력 전체 | Re 무관 | 또는 벽함수 | 일상 산업 설계 |
| RANS + 벽함수 | 평균장만 | 레이놀즈 응력 전체 | 가장 저렴 | 빠른 설계 반복 |
여기서 (와이 플러스)는 6장과 7장에서 나온 무차원 벽거리. 이라는 숫자는 무섭다. 레이놀즈 수가 10배 커지면 DNS 비용은 1000배가 된다. 항공기 날개의 에서 DNS가 현실적으로 불가능한 이유다.
본론 3 — 의사결정 흐름
산문 한 단락의 흐름도로 정리하면 이렇다.
흐름의 레이놀즈 수가 5000 이하이고 형상이 단순하다면 — 예를 들어 작은 채널이나 저속 실험실 환경 — DNS를 고민할 가치가 있다. 그게 가능하면 가장 깨끗한 답을 준다. 그게 안 되고 박리·재부착·연소·소음 같은 본질적으로 비정상인 물리가 중요하다면, 그리고 계산 예산을 며칠 단위로 쓸 수 있다면 LES를, 벽 근처 격자 부담을 줄이고 싶다면 DES를 고른다. 그 외 대부분의 산업 설계 — 펌프, 밸브, 차체 외형, HVAC 덕트 — 에서는 RANS가 정답이고, 그중에서도 k-ω SST가 안전한 기본값이다. 이유는 단순하다. k-ω SST는 벽 근처에서는 k-ω, 자유전단 영역에서는 k-ε로 전환되도록 설계되어 박리에 강하면서도 자유흐름의 민감도가 낮다.
본론 4 — 자주 헛디디는 함정
- 격자 수보다 가 더 중요하다. 1000만 격자 메쉬도 첫 셀의 가 200이면 SST의 의미가 사라진다. 반대로 100만 격자에서도 로 깔리면 충분히 신뢰할 만한 결과가 나온다.
- LES는 “평균 속도 입구 조건”으로 시작하면 안 된다. LES는 입구에서부터 난류 변동을 요구한다. 합성 난류(synthetic turbulence) 입구나 사전 계산된 채널 흐름의 단면을 재활용하지 않으면, 도메인 한참 안쪽까지 흐름이 라미나처럼 흐른다.
- DNS 결과를 산업 코드 검증에 그대로 갖다 쓰면 안 된다. DNS는 보통 주기 경계나 인공적인 강제(forcing)로 정상상태를 만든 결과다. 산업 형상의 경계조건과는 다르므로, 비교는 “같은 통계량을 같은 영역에서”라는 조건이 지켜져야 의미가 있다.
- k-ε는 자유전단류에는 좋지만 박리에는 약하다. 이전 장에서 다룬 자유 제트·후류·혼합층은 k-ε의 본거지지만, 차체 뒤편의 박리 영역에서는 분리점을 늦게 예측하는 경향이 있다. 그래서 SST가 산업 기본값이 되었다.
파이썬으로 확인
본론 3의 의사결정 규칙을 그대로 함수로 옮긴다. 세 가지 예시 사례에 적용해 결과를 본다.
import numpy as np
def recommend(Re, time_budget_hours, is_near_wall_important):
# 본론 3의 규칙을 그대로 코드화
if Re < 5000 and time_budget_hours > 100:
return "DNS"
if is_near_wall_important and time_budget_hours > 24:
return "LES (벽까지 해석)"
if is_near_wall_important and time_budget_hours <= 24:
return "RANS k-ω SST"
if (not is_near_wall_important) and time_budget_hours > 24:
return "DES"
return "RANS k-ε with 벽함수"
# 예시 1: 저레이놀즈 채널 실험 재현 (연구 목적)
print(recommend(Re=3000, time_budget_hours=200,
is_near_wall_important=True))
# 예시 2: 자동차 외부공력, 박리 영역 정확도 필요
print(recommend(Re=2.0e6, time_budget_hours=72,
is_near_wall_important=False))
# 예시 3: 펌프 임펠러 설계 반복 (당일 회신)
print(recommend(Re=5.0e5, time_budget_hours=8,
is_near_wall_important=True))
출력은 차례로 DNS, DES, RANS k-ω SST다. 단순한 규칙이지만, 첫 답을 던지는 데는 충분하다. 실제 프로젝트에서는 이 위에 검증 데이터 가용성·라이선스 비용·팀 숙련도가 얹힌다.
끝맺으며
여기까지 함께 와준 독자에게 진심으로 감사한다. 이 책의 목표는 “난류 전문가를 만드는 것”이 아니라 “다른 사람의 CFD 작업을 비판적으로 읽을 수 있게 하는 것”이었다. 그 다음은 코드를 직접 만져보는 일이다 — OpenFOAM, SU2, code_saturne 같은 오픈 코드 중 하나를 골라, 평판 경계층이나 후방 계단 흐름 같은 정형 사례를 재현해보는 것을 권한다. 그때부터가 진짜 시작이다.