SIMPLE 알고리즘

오류 제보
전산유체역학 수치해석 마지막 수정: 2026-09-18 04:26:15

○ 공개 검수 대기 AI 보조 작성 표시 기준 보기
상위 문서: 전산유체역학

1. 개요

SIMPLE 알고리즘
Semi-Implicit Method for Pressure-Linked Equations
발표Patankar & Spalding, 1972
분야전산유체역학 · 압력-속도 연성
핵심 아이디어압력 추정 → 운동량 예측 → 질량 불균형으로 압력 보정
주요 근사이웃 셀 속도 보정항 Σanbu'nb 생략
전형적 완화 계수αp ≈ 0.3 · αu ≈ 0.7
주 무대정상상태 해석(비정상은 PISO · PIMPLE)
변형SIMPLEC · SIMPLER · PISO · PIMPLE

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

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

4. 압력 보정 방정식의 유도

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

aPuP=∑nbanbunb+b+(pw−pe)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 (pw′−pe′),dP=APaPu_P' = d_P \,(p_w' - p_e'), \qquad d_P = \frac{A_P}{a_P}

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

aPpP′=∑nbanbpnb′+b′a_P p_P' = \sum_{nb} a_{nb} p_{nb}' + b'

우변의 b′b'는 예측 속도장 u∗\mathbf{u}^*의 질량 불균형으로, 연속 방정식이 만족되면 자동으로 0이 되어 보정도 멈춘다. 파탄카 본인이 이 생략을 알고리즘의 유일한 주요 근사로 못박았고, 압력-속도 연성을 절반만 음해법으로 다룬다는 뜻에서 “Semi-Implicit”라는 이름이 붙은 것으로 통용된다. 중요한 것은 수렴하면 보정량이 0이 되므로 최종 해의 정확도에는 영향이 없다는 점 — 생략이 망치는 것은 답이 아니라 수렴 경로다. 압력 보정이 과대평가되는 경향이 생기고, 이것이 완화 계수가 필수인 이유다.

4.1. 압력 보정 방정식이 풀리기 위한 조건

p′p' 방정식의 계수는 aP=∑nbanba_P = \sum_{nb} a_{nb}를 만족한다. 즉 행렬의 각 행의 합이 0이어서, 모든 경계가 속도(또는 벽) 조건인 폐쇄 영역에서는 p′p'가 상수만큼 부정(singular)이다. 실무적으로 두 가지가 따라온다.

  • 기준압 고정. 셀 하나를 골라 p′=0p' = 0으로 못박거나(pRefCell), 매 반복 뒤 평균 압력을 빼준다. 비압축성 유동에서 의미를 갖는 것은 압력의 절대값이 아니라 구배뿐이라 아무 손해가 없다.
  • 전역 질량 보존. 소스항 b′b'를 전 영역에 대해 더한 값이 0이 아니면 해가 아예 존재하지 않는다. 이것은 곧 유입 유량과 유출 유량의 합이 맞아야 한다는 뜻이고, 맞지 않으면 솔버는 “continuity errors”가 발산하는 형태로 항의한다. 출구에 압력 경계 조건 대신 속도 조건을 걸었다가 첫 반복에서 터지는 고전적 사고가 여기서 나온다.

5. 완화 계수

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

p=p∗+αp p′p = p^* + \alpha_p \, p'

속도는 운동량 방정식 자체에 음완화(implicit under-relaxation)를 걸어 갱신 폭을 줄인다. 이산식의 대각 성분을 부풀리고 그만큼을 직전 해로 우변에 되돌려주는 형태다.

aPαuuP=∑nbanbunb+b+(pw−pe)AP+1−αuαuaPuPold\frac{a_P}{\alpha_u} u_P = \sum_{nb} a_{nb} u_{nb} + b + (p_w - p_e)A_P + \frac{1 - \alpha_u}{\alpha_u} a_P u_P^{\text{old}}

αu=1\alpha_u = 1이면 원래 식 그대로이고, αu→0\alpha_u \to 0이면 대각 지배가 극단적으로 강해져 해가 직전 값에 붙박인다. 여기서 놓치기 쉬운 것이 하나 있다 — 음완화를 걸면 압력 보정 계수 dPd_P도 같이 바뀐다. 분모가 aPa_P가 아니라 aP/αua_P/\alpha_u가 되므로

dP=αuAPaPd_P = \frac{\alpha_u A_P}{a_P}

가 되어 속도 보정이 αu\alpha_u배로 눌린다. 완화 계수를 바꿨을 때 수렴 거동이 예상보다 크게 출렁이는 이유의 절반은 이 연동이다. 교과서적 전형값은 αp=0.3\alpha_p = 0.3, αu=0.7\alpha_u = 0.7이며, αp+αu≈1\alpha_p + \alpha_u \approx 1로 잡으라는 경험칙이 널리 통용된다.2 값을 낮추면 안정적이지만 수렴이 느려지고, 높이면 빠르지만 잔차가 롤러코스터를 타기 시작한다. 격자 품질이 나쁠수록 낮은 값이 강제된다는 점에서, 완화 계수는 종종 격자의 죄를 대신 갚는 속죄양이 된다.

6. 변형 알고리즘

6.1. SIMPLEC

SIMPLE-Consistent (van Doormaal & Raithby, 1984). SIMPLE이 통째로 버린 이웃 속도 보정 항을 일관된 방식으로 근사하여(unb′≈uP′u'_{nb} \approx u'_P로 가정) 속도-압력 보정 관계를 개선했다. 이 가정을 넣으면 ∑anbunb′≈uP′∑anb\sum a_{nb} u'_{nb} \approx u'_P \sum a_{nb}가 되어 보정 계수의 분모가 aPa_P 에서 aP−∑nbanba_P - \sum_{nb} a_{nb} 로 바뀐다. 분모가 작아진 만큼 같은 질량 불균형에 대해 더 큰 보정을 주므로 αp\alpha_p 를 1에 가깝게 올릴 수 있고, 원논문도 재순환 유동 두 문제에서 SIMPLE·SIMPLER 와 나란히 비교해 이 이득을 보였다.

6.2. SIMPLER

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

6.3. PISO

Pressure-Implicit with Splitting of Operators (Issa, 1986). 원래 비정상 유동을 위한 비반복(non-iterative) 연산자 분할 알고리즘으로, 한 시간 단계 안에서 운동량 예측 1회 뒤 압력 보정을 2회 이상 연쇄 수행한다. 두 번째 보정 단계가 SIMPLE이 무시했던 이웃 항의 효과를 상당 부분 회수해 주므로, 시간 단계가 충분히 작다면(CFL 조건 참고) 외부 반복 없이 다음 시간 단계로 넘어갈 수 있다. 분할 때문에 생기는 오차가 보정을 한 단계 더 돌릴 때마다 Δt\Delta t 의 더 높은 차수로 밀려나므로, 시간 이산화 차수보다 작아지는 순간 반복을 끊어도 된다는 것이 원논문의 논리다. 비정상 해석의 표준이며, 이름과 달리 비압축성 전용이 아니라 압축성 수송 방정식에도 그대로 적용된다.

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. 수렴 속도와 그 한계

SIMPLE 계열의 약점은 반복 횟수가 격자 크기에 따라 늘어난다는 점이다. 압력 보정 방정식이 본질적으로 타원형(포아송형)이라, 한 번의 보정으로 정보가 퍼지는 거리가 격자 몇 칸 수준에 머문다. 격자를 두 배 조밀하게 하면 영역 끝에서 끝까지 정보가 도달하는 데 필요한 반복도 그만큼 늘어난다. 실무에서 쓰는 대응은 셋이다.

  • 다중격자법: 압력 보정 방정식을 거친 격자에서 먼저 풀어 저주파 오차를 한 번에 걷어낸다. 현대 상용 솔버의 압력 방정식은 사실상 전부 다중격자 전처리를 쓴다.
  • 연성(coupled) 솔버: 속도와 압력을 분리하지 않고 한 덩어리 블록 행렬로 동시에 푼다. 반복 횟수가 격자에 거의 둔감해지는 대신 메모리를 몇 배 먹는다.
  • 가짜 시간 전진(pseudo-transient): 정상상태 문제에 시간항을 인위적으로 붙여 완화 계수 대신 시간 스텝으로 안정성을 산다. 완화 계수 튜닝보다 물리적 감이 잡히는 게 장점.

반대로 잔차가 떨어졌다고 답이 맞는 것은 아니다. 잔차는 이산화된 식을 얼마나 잘 풀었는지를 말할 뿐, 그 이산화가 물리를 담고 있는지는 말하지 않는다. 격자·모델 쪽 확인은 메시 독립성 연구와 격자 수렴 지수의 몫이다.

9. 관련 문서

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

검증 자료

이 문서의 주요 출처

  1. Patankar & Spalding (1972), A calculation procedure for heat, mass and momentum transfer in three-dimensional parabolic flows, Int. J. Heat Mass Transfer 15, 1787-1806
  2. van Doormaal & Raithby (1984), Enhancements of the SIMPLE method for predicting incompressible fluid flows, Numerical Heat Transfer 7, 147-163 (SIMPLEC 원논문)
  3. Issa (1986), Solution of the implicitly discretised fluid flow equations by operator-splitting, J. Comput. Phys. 62, 40-65 (PISO 원논문)
  4. Rhie & Chow (1983), Numerical study of the turbulent flow past an airfoil with trailing edge separation, AIAA J. 21, 1525-1532 (운동량 보간 원논문)
  5. Patankar (1980), Numerical Heat Transfer and Fluid Flow, Hemisphere/McGraw-Hill (SIMPLER·완화 계수 경험칙의 원전)
이 문서가 문제를 푸는 데 도움이 됐나요? 한 번의 클릭이 다음 검수 순서를 정합니다.

의견을 반영할게요. 감사합니다.

다음으로 읽기 격자 약 5분 더 탐색 →