목차
제1장: 도입 (Introduction)
- 솔루션 개요 및 CFD 접근법
제2장: 유체역학 (Fluid Dynamics)
- 압력, 속도, 표면 유동 (2.1-2.3)
- 질량보존과 시간 미분 (2.4-2.5)
- 표면 힘과 운동량 보존 (2.6-2.7)
- 체적 유동과 보존성 (2.8-2.9)
- 유체 변형, 와도, 뉴턴 유체 (2.10-2.12)
- 비압축성 유동과 확산 (2.13-2.15)
- 온도, 내부 에너지, 열전달 (2.16-2.20)
- 스케일 유사성과 방정식 요약 (2.21-2.25)
제3장: 수치해법 (Numerical Method)
- 유한체적 개념과 계산 격자 (3.1-3.6)
- 라플라시안 및 대류 이산화 (3.7-3.14)
- 구배 이산화와 시간 적분 (3.15-3.24)
제4장: 경계조건 (Boundary Conditions)
- 경계 격자와 기본 조건들 (4.1-4.5)
- 고급 경계조건과 특수 처리 (4.6-4.18)
제5장: 알고리즘과 솔버 (Algorithms and Solvers)
- 행렬 구조와 반복 방법 (5.1-5.10)
- 압력-속도 결합과 PIMPLE 알고리즘 (5.11-5.23)
제6장: 난류 입문 (Introduction to Turbulence)
- Reynolds 실험과 난류 특성 (6.1-6.15)
제7장: Reynolds 평균 난류 모델링
- k-ε 모델과 벽함수 (7.1-7.15)
제8장: 샘플 문제 (Sample Problems)
- 실제 공학 문제 해석 사례 (8.1-8.10)
내용
2장: CFD 일반 원리 상세 해설
2.1 전산유체역학의 기본 개념
CFD(Computational Fluid Dynamics) 정의
전산유체역학은 수치적 방법과 알고리즘을 사용하여 유체 흐름, 열전달, 질량전달, 화학반응 및 관련 현상을 분석하고 해결하는 과학입니다. CFD는 복잡한 유체 현상을 컴퓨터를 통해 시뮬레이션하여 실험이 어렵거나 불가능한 상황에서도 정확한 예측을 가능하게 합니다. CFD
CFD의 세 가지 기본 원리
모든 CFD 해석은 다음 세 가지 물리 법칙에 기반합니다: Discover Engineering
- 질량 보존의 법칙 (연속성 방정식)
- 질량은 생성되거나 소멸되지 않음
- 유입 질량 = 유출 질량 + 축적 질량
- 운동량 보존의 법칙 (Navier-Stokes 방정식)
- Newton의 제2법칙을 유체에 적용
- 힘 = 질량 × 가속도
- 에너지 보존의 법칙 (에너지 방정식)
- 에너지는 형태만 변할 뿐 총량은 보존됨
- 열전달과 유동의 상호작용 기술
2.2 지배방정식의 수학적 표현
연속성 방정식 (질량보존)
압축성 유동:
∂ρ/∂t + ∇·(ρu) = 0
비압축성 유동 (ρ = 상수):
∇·u = 0
Navier-Stokes 방정식 (운동량보존)
∂u/∂t + (u·∇)u = -1/ρ ∇p + ν∇²u + g + f_body/ρV
여기서:
- u: 속도 벡터 [m/s]
- ρ: 밀도 [kg/m³]
- p: 압력 [Pa]
- ν: 동점성계수 [m²/s]
- g: 중력가속도 [m/s²]
에너지 방정식
∂E/∂t + ∇·(uE) = -∇·(pu)/ρ + ∇·(k∇T) + ∇·(τ·u) + Q/ρ
여기서:
- E: 총 에너지
- T: 온도
- k: 열전도계수
- τ: 점성 응력 텐서
- Q: 열원
2.3 유체의 물리적 특성
뉴턴 유체
대부분의 일반적인 유체(물, 공기, 오일 등)는 뉴턴 유체로, 전단응력과 전단률이 선형 관계를 가집니다: WikipediaAnsys
τ = μ(∂u/∂y)
압축성과 비압축성
- 압축성 유동: 밀도 변화가 중요한 경우 (Ma > 0.3, 고속 유동)
- 비압축성 유동: 밀도를 상수로 가정 (Ma < 0.3, 저속 유동)
점성과 무점성
- 점성 유동: 실제 유체의 점성 효과 고려
- 무점성 유동: 점성을 무시한 이상적 접근법 (Euler 방정식)
2.4 무차원 수와 유사성 법칙
Reynolds 수: 관성력과 점성력의 비
Re = ρUL/μ = UL/ν
- Re < 2300: 층류
- Re > 4000: 난류
Prandtl 수: 운동량 확산과 열확산의 비
Pr = ν/α = μcp/k
Mach 수: 유동 속도와 음속의 비
Ma = U/c
Froude 수: 관성력과 중력의 비
Fr = U/√(gL)
3장: 수치해석 방법론
3.1 유한체적법의 핵심 개념
보존법칙의 적분형
유한체적법은 보존법칙을 제어체적에 직접 적용합니다: Wikipedia +2
∂/∂t ∫_V ρφ dV + ∮_S ρφ(v⃗·n⃗) dS = ∮_S Γ∇φ·n⃗ dS + ∫_V Sφ dV
이 방정식의 각 항목:
- 축적항: 시간에 따른 변화
- 대류항: 유동에 의한 이동
- 확산항: 분자 확산에 의한 이동
- 생성항: 체적 내 생성/소멸
이산화 과정
- 공간 이산화: 계산 영역을 유한한 제어체적으로 분할
- 적분 근사: 각 체적에서 보존법칙을 적분하여 대수방정식으로 변환
- 플럭스 계산: 체적 경계면에서의 유량 계산
- 선형 시스템 해결: 연립 대수방정식 해결 CFDAnsys
3.2 공간 이산화 기법
대류항 처리
중앙차분법 (Central Difference):
φ_face = (φ_P + φ_N)/2
- 장점: 2차 정확도
- 단점: 수치 진동 발생 가능
상류차분법 (Upwind):
φ_face = φ_upwind
- 장점: 안정성 우수
- 단점: 수치 확산 발생
QUICK (Quadratic Upwind Interpolation):
φ_face = φ_U + α(φ_D - φ_U) + β(φ_DD - 2φ_D + φ_U)
- 3차 정확도의 상류 가중 기법
확산항 처리
중앙차분법이 표준:
∇φ·n = (φ_N - φ_P)/|d_PN|
3.3 시간 적분 기법
양해법 (Explicit Methods)
Euler 전진법:
φ^{n+1} = φ^n + Δt·R(φ^n)
- CFL 조건에 의한 시간 스텝 제한: Δt ≤ CFL × (Δx/|u|) WikipediaStack Exchange
음해법 (Implicit Methods)
Euler 후진법:
φ^{n+1} = φ^n + Δt·R(φ^{n+1})
- 무조건 안정하지만 큰 선형 시스템 해결 필요 Wikipedia
Crank-Nicolson (2차 정확도):
φ^{n+1} = φ^n + (Δt/2)[R(φ^n) + R(φ^{n+1})]
3.4 격자 생성과 품질
격자 유형
- 구조격자 (Structured)
- 규칙적 연결성 (i,j,k 인덱싱)
- 높은 계산 효율성
- 복잡한 형상 처리 어려움
- 비구조격자 (Unstructured)
- 임의 형상 처리 가능
- 적응적 세분화 용이
- 연결성 테이블 필요
- 혼합격자 (Hybrid)
- 경계층: 육면체/프리즘
- 내부: 사면체
- 최적의 계산 효율과 형상 적응성
격자 품질 지표
- 종횡비 (Aspect Ratio): < 100:1 권장
- 왜곡도 (Skewness): < 0.85 양호
- 직교성 (Orthogonality): > 15° 권장
- 부피 변화율: 인접 셀 간 2:1 이하
4장: OpenFOAM 기본 개념
4.1 OpenFOAM 개요와 철학
Open Field Operation And Manipulation
OpenFOAM은 C++ 기반의 오픈소스 CFD 툴박스 CFD Direct로, 150만 라인 이상의 코드로 구성되어 있습니다. OpenFOAMWikipedia 객체지향 프로그래밍을 통해 편미분방정식의 수학적 형태를 소프트웨어에서 그대로 구현할 수 있는 것이 특징입니다.
핵심 설계 철학
- 투명성: 모든 소스 코드 공개로 알고리즘 완전 검증 가능
- 확장성: 라이브러리 기반 구조로 새로운 솔버 개발 용이
- 이식성: Linux, Windows, macOS 등 다양한 플랫폼 지원
- 표준 준수: 유한체적법과 현대 CFD 표준 채택 Wikipedia
4.2 OpenFOAM 아키텍처
디렉토리 구조
OpenFOAM-v13/
├── src/ # 핵심 라이브러리
├── applications/ # 솔버 및 유틸리티
├── tutorials/ # 예제 케이스
├── doc/ # 문서
└── etc/ # 설정 파일
핵심 네임스페이스
- fvm: 암시적(implicit) 연산자
- fvc: 명시적(explicit) 연산자
- fvMatrix: 선형방정식 시스템 관리 OpenFOAMWiki
방정식 표현 예시
연속성 방정식:
fvScalarMatrix pEqn(fvm::laplacian(rAU, p));
운동량 방정식:
fvVectorMatrix UEqn
(
fvm::ddt(U)
+ fvm::div(phi, U)
- fvm::laplacian(nu, U)
);
4.3 모듈형 솔버 시스템
OpenFOAM v11 이후의 통합 솔버
foamRun이 다양한 솔버 모듈을 로드하는 통합 실행기: CFDCFD
foamRun -solver incompressibleFluid # 비압축성 유동
foamRun -solver compressibleFluid # 압축성 유동
foamRun -solver multiphaseEuler # 다상 유동
foamRun -solver solid # 고체 열전달
주요 솔버 모듈
- incompressibleFluid: 비압축성 난류 유동
- 정상/비정상 상태
- SIMPLE/PIMPLE 알고리즘
- 다양한 난류 모델 지원
- compressibleFluid: 압축성 유동
- 밀도 변화 고려
- 충격파, 초음속 유동
- 열전달 연성 해석
- multiphaseEuler: 다상 유동
- 기포류, 입자류
- 상 간 상호작용 모델링
4.4 OpenFOAM 워크플로우
케이스 설정 구조
case/
├── system/
│ ├── controlDict # 실행 제어 설정
│ ├── fvSchemes # 수치 기법 설정
│ ├── fvSolution # 선형 솔버 설정
│ └── functions # 후처리 함수
├── constant/
│ ├── polyMesh/ # 격자 정보
│ ├── physicalProperties # 물성 정보
│ └── turbulenceProperties # 난류 모델 설정
└── 0/ # 초기/경계 조건
├── U # 속도
├── p # 압력
└── ...
해석 단계별 프로세스
- 전처리
bash
blockMesh # 기본 격자 생성 snappyHexMesh # 복잡 형상 격자 생성 checkMesh # 격자 품질 검사 - 해석 실행
bash
foamRun -solver incompressibleFluid # 또는 레거시 방식 simpleFoam > log.simpleFoam 2>&1 - 후처리
bash
paraFoam # ParaView 시각화 foamPostProcess -func surfaces # 데이터 추출 sample # 라인/면 샘플링
5장: 경계조건과 알고리즘
5.1 경계조건의 분류와 수학적 처리
수학적 경계조건 분류
- Dirichlet 경계조건 (제1종)
예: 고정 속도, 고정 온도 CadenceResolved Analytics
u|_Γ = g(x,t) - Neumann 경계조건 (제2종)
예: 열유속 지정, 전단응력 지정 Resolved AnalyticsWikipedia
∂u/∂n|_Γ = h(x,t) - Robin 경계조건 (제3종)
예: 대류 열전달 Resolved Analytics +2
αu + β∂u/∂n|_Γ = γ(x,t)
OpenFOAM 경계조건 구현
고정값 (fixedValue):
inlet
{
type fixedValue;
value uniform (1 0 0);
}
고정구배 (fixedGradient):
wall
{
type fixedGradient;
gradient uniform 0;
}
5.2 압력-속도 결합 알고리즘
SIMPLE 알고리즘 (Semi-Implicit Method for Pressure-Linked Equations)
- 압력 추정값으로 운동량 방정식 해결
- 연속성 방정식에서 압력 보정 방정식 유도
- 압력과 속도 보정
- 수렴까지 반복 Autodesk Knowledge Network
PIMPLE 알고리즘 (PISO + SIMPLE)
비정상 유동을 위한 개선된 알고리즘:
- PISO의 빠른 수렴성
- SIMPLE의 안정성 결합
- 큰 시간 간격 사용 가능 OpenFOAM +2
알고리즘 제어 매개변수
fvSolution의 SIMPLE 설정:
SIMPLE
{
nNonOrthogonalCorrectors 0;
consistent yes;
residualControl
{
p 1e-4;
U 1e-4;
}
relaxationFactors
{
fields
{
p 0.3;
}
equations
{
U 0.7;
}
}
}
5.3 선형 솔버와 수렴 제어
반복 솔버 선택
p
{
solver PCG; # Preconditioned Conjugate Gradient
preconditioner DIC; # Diagonal Incomplete Cholesky
tolerance 1e-06;
relTol 0.05;
}
U
{
solver PBiCGStab; # Preconditioned BiConjugate Gradient
preconditioner DILU; # Diagonal Incomplete LU
tolerance 1e-08;
relTol 0.1;
}
6장: 난류 모델링
6.1 난류의 물리적 특성
Reynolds 실험 (1883년)
Osborne Reynolds가 수행한 유명한 실험으로 난류 천이 현상을 최초로 정량화했습니다: Wikipedia
- 층류: 질서정연한 유동 (Re < 2300)
- 천이: 불안정한 중간 상태 (2300 < Re < 4000)
- 난류: 혼란스러운 3차원 유동 (Re > 4000) Medium
난류의 특징
- 비정상성: 시간에 따라 불규칙하게 변화
- 3차원성: 모든 방향으로 복잡한 운동
- 확산성: 운동량, 열, 물질의 빠른 혼합
- 소산성: 운동 에너지를 열로 변환
- 다중 스케일: 큰 와동에서 작은 와동까지 광범위한 스케일 IdealSimulations
에너지 캐스케이드
Kolmogorov(1941)의 이론:
- 에너지 함유 범위: 큰 와동, 기하학적 형상에 의존
- 관성 부범위: 에너지 전달, k^(-5/3) 법칙
- 점성 소산 범위: 작은 와동, 점성에 의한 에너지 소산 Fidelis Engineering Associates
6.2 RANS (Reynolds-Averaged Navier-Stokes) 모델링
Reynolds 분해
순간값을 평균값과 변동값으로 분해:
u = ū + u'
p = p̄ + p'
RANS 방정식
시간 평균된 운동량 방정식:
∂ū_i/∂t + ū_j ∂ū_i/∂x_j = -1/ρ ∂p̄/∂x_i + ν ∂²ū_i/∂x_j∂x_j - ∂(u'_i u'_j)/∂x_j
마지막 항 -∂(u'_i u'_j)/∂x_j가 Reynolds 응력으로, 모델링이 필요한 부분입니다.
2방정식 k-ε 모델
난류 운동 에너지 (k)와 소산율 (ε) 방정식:
k 방정식:
∂k/∂t + U_j ∂k/∂x_j = P_k - ε + ∂/∂x_j[(ν + ν_t/σ_k) ∂k/∂x_j]
ε 방정식:
∂ε/∂t + U_j ∂ε/∂x_j = C_ε1 P_k ε/k - C_ε2 ε²/k + ∂/∂x_j[(ν + ν_t/σ_ε) ∂ε/∂x_j]
난류 점성계수:
ν_t = C_μ k²/ε
Fidelis Engineering Associates
k-ω SST 모델
Shear Stress Transport 모델로 벽면 근처에서 우수한 성능: ResearchGate
- k-ω 모델 (벽 근처)와 k-ε 모델 (자유류) 결합
- 역압력구배에서의 박리 예측 개선
- 항공 분야에서 널리 사용 Fidelis Engineering Associates
6.3 벽함수와 근벽 처리
벽법칙 (Wall Law)
벽 근처에서의 속도 분포:
점성 하층 (y⁺ < 5):
u⁺ = y⁺
로그법칙 영역 (30 < y⁺ < 300):
u⁺ = 1/κ ln(y⁺) + B
여기서 κ = 0.41 (Karman 상수), B = 5.0
y⁺ 값의 중요성
y⁺ = yu_τ/ν = y√(τ_w/ρ)/ν
- y⁺ < 1: Low-Re 접근법, 점성 하층까지 해상
- 30 < y⁺ < 300: 벽함수 사용
- y⁺ > 300: 부정확한 결과
OpenFOAM 벽함수 설정
wall
{
type nutkWallFunction;
value uniform 0;
}
6.4 고급 난류 해석 기법
LES (Large Eddy Simulation)
큰 난류 구조만 직접 해석하고 작은 구조는 모델링: ResearchGate
- 시간 의존적 해석 필수
- 80% 이상의 난류 에너지 해석
- RANS보다 정확하지만 계산 비용 높음 Fidelis Engineering Associates +3
DNS (Direct Numerical Simulation)
모든 난류 스케일을 직접 해석:
- 모델링 없이 Navier-Stokes 방정식 직접 해결
- 가장 정확하지만 극도로 높은 계산 비용
- Re⁴에 Wikipedia 비례하는 계산량 Wikipedia +3
7장: 실제 응용 사례
7.1 외부 유동 해석
자동차 공기역학
모터바이크 예제 (motorBike tutorial):
- 복잡한 3차원 형상 주위 유동
- snappyHexMesh를 이용한 격자 생성
- k-ω SST 난류 모델 사용
- 항력계수, 압력분포 예측 CFD +2
해석 설정:
# 격자 생성
snappyHexMesh -overwrite
# 병렬 해석 실행
decomposePar
mpirun -np 4 foamRun -solver incompressibleFluid -parallel
# 결과 병합
reconstructPar
원형 실린더 주위 유동
Reynolds 수에 따른 유동 패턴 변화:
- Re < 5: 정상 대칭 유동
- 5 < Re < 40: 정상 비대칭 유동
- 40 < Re < 200: 주기적 와동 방출 (Kármán vortex street)
- Re > 200: 3차원 난류 유동
7.2 내부 유동 해석
벤츄리관 유동
수축-확대 관로에서의 압력 회복:
- Bernoulli 방정식 검증
- 압력 손실 예측
- 유량 측정 원리 이해
후방계단 유동 (Backward Facing Step)
박리와 재부착 현상:
- 박리점에서의 와동 형성
- 재부착 길이 예측
- 난류 모델별 성능 비교
7.3 열전달 해석
실내 난방 시스템
자연대류와 강제대류 복합:
- 부력 효과 (Boussinesq 근사)
- 복사 열전달 모델링
- 온도 분포와 유동 패턴 해석
설정 예시:
// 부력항 추가
g uniform (0 -9.81 0);
beta 3e-3; // 열팽창계수
// Boussinesq 근사
rho [rho0*(1-beta*(T-T0))];
7.4 다상 유동 해석
댐 붕괴 (Dam Break)
VOF(Volume of Fluid) 방법:
- 자유 표면 추적
- 표면 장력 효과
- 충격파와 공기 연행 현상
interFoam 솔버 사용:
foamRun -solver incompressibleVoF
기포 상승
부력에 의한 기포 운동:
- 기포 형상 변화
- 항력 계수 예측
- 질량 전달 현상
7.5 터보머시너리 해석
원심 펌프
회전 기계의 특수 처리:
- Multiple Reference Frame (MRF)
- Sliding Mesh Interface
- 회전 좌표계에서의 원심력 및 코리올리 힘
// MRF 설정
MRF
{
rotor
{
cellZone rotor;
active yes;
origin (0 0 0);
axis (0 0 1);
omega constant 314.159; // rad/s
}
}
8장: 고급 주제와 최적화
8.1 병렬 처리
영역 분할 (Domain Decomposition)
# 4개 프로세서로 분할
decomposePar -method scotch
# 병렬 실행
mpirun -np 4 foamRun -solver incompressibleFluid -parallel
# 결과 재결합
reconstructPar
분할 방법 선택
- scotch: 로드 밸런싱 우수
- simple: 단순한 방향별 분할
- hierarchical: 계층적 분할
8.2 격자 적응화
동적 격자 세분화
해의 구배가 큰 영역에서 자동 격자 세분화:
dynamicFvMesh dynamicRefineFvMesh;
// 세분화 기준
refinementControls
{
lowerRefineLevel 0.01;
upperRefineLevel 0.99;
unrefineLevel 10;
nBufferLayers 1;
maxCells 200000;
}
8.3 사용자 정의 솔버 개발
새로운 솔버 생성
기존 솔버를 복사하여 수정:
# 솔버 복사
cp -r $FOAM_SOLVERS/incompressibleFluid/simpleFoam mySimpleFoam
# 컴파일
cd mySimpleFoam
wmake
사용자 정의 경계조건
새로운 물리 모델을 위한 경계조건 개발:
class myBoundaryCondition
:
public fixedValueFvPatchScalarField
{
// 사용자 정의 구현
};
8.4 결과 검증과 불확실성 정량화
격자 독립성 연구
세 가지 격자 레벨에서 GCI(Grid Convergence Index) 계산:
GCI = 1.25 × |ε₁₂|/(r^p - 1)
실험 데이터와의 비교
공인된 벤치마크 케이스:
- Ahmed body (자동차 공기역학)
- Square cylinder (블러프 바디)
- Channel flow (채널 유동)
- Periodic hills (주기적 언덕)
'project > openfoam 기반 시뮬레이터' 카테고리의 다른 글
| 관내 혼합(Mixing Pipe) 시뮬레이션 예제 openfoam - baram (0) | 2025.12.15 |
|---|---|
| OPENFOAM (0) (0) | 2025.04.03 |
댓글