SIMWIKI DOC // 전산유체역학

SIMPLE 알고리즘

전산유체역학 수치해석 CONVERGED last update 2026-06-28 22:14:41

상위 문서: 전산유체역학

1. 개요[편집]

SIMPLE 알고리즘(Semi-Implicit Method for Pressure-Linked Equations)은 비압축성 유동의 압력-속도 연성(pressure-velocity coupling) 문제를 반복적 예측-보정 방식으로 푸는 전산유체역학의 고전적 해법이다. 1972년 임페리얼 칼리지 런던의 파탄카(S. V. Patankar)와 스팔딩(D. B. Spalding)이 발표했으며1, 반세기가 지난 지금도 거의 모든 상용·오픈소스 CFD 코드의 정상상태 솔버가 이 알고리즘 또는 그 후손이다. 이름이 SIMPLE이지만 처음 배우는 사람에게 전혀 simple하지 않다는 것은 CFD 강의실의 유서 깊은 농담이다.

2. 배경: 압력-속도 연성 문제[편집]

압축성 유동에서는 연속 방정식으로 밀도를 구하고 상태방정식으로 압력을 얻는 자연스러운 경로가 있다. 그러나 비압축성 유동에서는 밀도가 상수이므로 이 경로가 끊긴다. 나비에-스토크스 방정식의 운동량 방정식에는 압력 구배가 소스처럼 들어 있는데, 정작 압력 자체를 지배하는 독립적인 방정식이 없다. 연속 방정식

u=0\nabla \cdot \mathbf{u} = 0

은 압력을 아예 포함하지 않는, 속도장에 대한 구속 조건일 뿐이다. 결국 압력은 “그 압력장으로 운동량 방정식을 풀었을 때 나오는 속도장이 연속 방정식을 만족하도록” 간접적으로 결정되어야 한다. 이 암묵적 관계를 명시적인 반복 절차로 바꾼 것이 SIMPLE이다.

3. 알고리즘 단계[편집]

한 번의 외부 반복(outer iteration)은 다음과 같이 진행된다.

  1. 압력 추정: 압력장 pp^*를 가정한다(첫 반복이면 초기 추정값, 이후에는 직전 반복의 결과).
  2. 운동량 예측(momentum predictor): pp^*를 넣고 이산화된 운동량 방정식을 풀어 중간 속도장 u\mathbf{u}^*를 얻는다. 이 속도장은 운동량은 만족하지만 일반적으로 연속 방정식은 만족하지 않는다.
  3. 압력 보정 방정식: 각 검사체적의 질량 불균형을 소스로 하는 압력 보정량 pp'의 방정식을 푼다.
  4. 속도·압력 보정: p=p+αppp = p^* + \alpha_p p', 그리고 pp'의 구배로부터 속도 보정량을 계산해 u=u+u\mathbf{u} = \mathbf{u}^* + \mathbf{u}'로 갱신한다. 보정된 속도장은 연속 방정식을 (이산적으로) 만족한다.
  5. 기타 스칼라 수송 방정식(난류량, 에너지 등)을 푼다.
  6. 수렴 판정: 잔차가 기준 이하면 종료, 아니면 갱신된 pp를 새 pp^*로 삼아 2번으로 돌아간다.

정상상태 해석이라면 이 반복을 잔차가 충분히 떨어질 때까지, 통상 수백~수천 회 돌린다.

4. 압력 보정 방정식의 유도[편집]

이산화된 운동량 방정식은 격자점 PP에서 다음 형태를 가진다.

aPuP=nbanbunb+b+(pwpe)APa_P u_P = \sum_{nb} a_{nb} u_{nb} + b + (p_w - p_e) A_P

정확한 해 (u,p)(u, p)와 예측 단계의 해 (u,p)(u^*, p^*)의 차이를 보정량 (u,p)(u', p')로 정의하고 두 식을 빼면, 속도 보정과 압력 보정의 관계식이 나온다. 여기서 SIMPLE은 이웃 격자점들의 속도 보정 기여 anbunb\sum a_{nb} u'_{nb}통째로 무시한다. 그 결과

uP=dP(pwpe),dP=APaPu_P' = d_P \,(p_w' - p_e'), \qquad d_P = \frac{A_P}{a_P}

라는 대수적 관계가 얻어지고, 이를 연속 방정식에 대입하면 pp'에 대한 포아송형 방정식이 완성된다.

aPpP=nbanbpnb+ba_P p_P' = \sum_{nb} a_{nb} p_{nb}' + b'

우변의 bb'는 예측 속도장 u\mathbf{u}^*의 질량 불균형으로, 연속 방정식이 만족되면 자동으로 0이 되어 보정도 멈춘다. 이웃 항을 무시한 근사가 “Semi-Implicit”라는 이름의 유래이며, 수렴하면 보정량이 0이 되므로 최종 해의 정확도에는 영향이 없지만 수렴 경로는 왜곡시킨다. 압력 보정이 과대평가되는 경향이 생기고, 이것이 완화 계수가 필수인 이유다.

5. 완화 계수[편집]

SIMPLE은 완화 없이는 대부분 발산한다. 압력은 명시적 완화로

p=p+αppp = p^* + \alpha_p \, p'

속도는 운동량 방정식 자체에 음완화(implicit under-relaxation)를 걸어 갱신 폭을 줄인다. 교과서적 전형값은 αp=0.3\alpha_p = 0.3, αu=0.7\alpha_u = 0.7이며, αp+αu1\alpha_p + \alpha_u \approx 1로 잡으라는 경험칙이 널리 통용된다.2 값을 낮추면 안정적이지만 수렴이 느려지고, 높이면 빠르지만 잔차가 롤러코스터를 타기 시작한다. 격자 품질이 나쁠수록 낮은 값이 강제된다는 점에서, 완화 계수는 종종 격자의 죄를 대신 갚는 속죄양이 된다.

6. 변형 알고리즘[편집]

6.1. SIMPLEC[편집]

SIMPLE-Consistent (Van Doormaal & Raithby, 1984). SIMPLE이 통째로 버린 이웃 속도 보정 항을 일관된 방식으로 근사하여(unbuPu'_{nb} \approx u'_P로 가정) 속도-압력 보정 관계를 개선했다. 압력 완화가 거의 필요 없어져 수렴이 빨라지는 경우가 많다.

6.2. SIMPLER[편집]

SIMPLE-Revised (Patankar, 1980). 압력 보정 방정식과 별도로 압력 자체에 대한 방정식을 하나 더 풀어, 압력장은 그 방정식으로 얻고 pp'는 속도 보정에만 사용한다. 이웃 항 무시의 부작용이 압력장에 전가되지 않아 반복 횟수가 줄지만, 반복당 비용은 늘어난다.

6.3. PISO[편집]

Pressure-Implicit with Splitting of Operators (Issa, 1986). 원래 비정상 유동을 위한 비반복(non-iterative) 알고리즘으로, 한 시간 단계 안에서 운동량 예측 1회 뒤 압력 보정을 2회 이상 연쇄 수행한다. 두 번째 보정 단계가 SIMPLE이 무시했던 이웃 항의 효과를 상당 부분 회수해 주므로, 시간 단계가 충분히 작다면(CFL 조건 참고) 외부 반복 없이 다음 시간 단계로 넘어갈 수 있다. 비정상 해석의 표준.

6.4. PIMPLE[편집]

OpenFOAM의 PISO + SIMPLE 하이브리드. 각 시간 단계 안에서 SIMPLE식 외부 반복(완화 포함)을 돌리고 그 안에서 PISO식 압력 보정을 수행한다. 외부 반복 덕분에 쿠랑 수가 1을 훌쩍 넘는 큰 시간 단계에서도 안정적으로 비정상 해석을 할 수 있어, “PISO보다 관대하고 SIMPLE보다 시간정확한” 실용적 절충으로 널리 쓰인다.3

7. 체커보드 압력장과 Rhie-Chow 보간[편집]

모든 변수를 격자 중심 한곳에 저장하는 동일위치 격자(collocated grid)에서 압력 구배를 중앙차분하면, 홀수 번째 점과 짝수 번째 점의 압력이 서로를 전혀 “보지 못하는” 홀짝 분리(odd-even decoupling)가 발생한다. 그 결과 압력이 격자마다 지그재그로 진동하는 체커보드 압력장이 수치해로 버젓이 살아남는다. 속도가 느끼는 압력 구배가 0이라 운동량 방정식이 항의하지 않기 때문이다.

고전적 해결책은 압력은 격자 중심에, 속도는 격자면에 저장하는 엇갈림 격자(staggered grid)였다. 초기 SIMPLE 계열 코드가 모두 이 방식이었지만, 비정렬 격자에서는 자료구조가 지옥이 된다. 현대적 해법은 Rhie와 Chow(1983)의 운동량 보간(momentum interpolation)으로, 격자면 유속을 단순 평균 대신 운동량 방정식 기반으로 보간하면서 인접 두 셀의 압력 차에 비례하는 감쇠항을 심어 홀짝 분리를 차단한다. 오늘날 비정렬 유한체적법 코드가 동일위치 격자를 마음 편히 쓸 수 있는 것은 전적으로 이 보간 덕분이다.4

8. 관련 문서[편집]

9. Footnotes[편집]

  1. Patankar, S. V. & Spalding, D. B. (1972). “A calculation procedure for heat, mass and momentum transfer in three-dimensional parabolic flows.” Int. J. Heat Mass Transfer, 15, 1787-1806. CFD 역사상 가장 많이 인용된 논문 중 하나로, 이 논문 하나로 박사학위 수천 개가 파생되었다.

  2. 어디까지나 출발점이다. 이 값으로도 발산한다면 완화 계수를 더 줄이기 전에 격자와 경계 조건부터 의심하는 것이 순서다. 완화 계수 0.05는 해법이 아니라 증상 은폐다.

  3. 단, 외부 반복 횟수를 1로 두고 완화를 꺼버리면 그냥 PISO이고, 시간항을 끄면 그냥 SIMPLE이다. PIMPLE 설정을 잘못 잡으면 둘의 장점 대신 단점만 조합하는 것도 얼마든지 가능하다.

  4. Rhie-Chow 보간에도 시간 단계·완화 계수 의존성 같은 미묘한 함정들이 있어서, “왜 시간 간격을 줄였는데 해가 오히려 이상해지죠?”라는 질문의 범인이 이 보간인 경우가 종종 있다. 관련 수정 기법만으로도 논문이 한 서랍 나온다.