Riemann 문제부터 Godunov 기법까지 - 수치 플럭스의 핵심
접촉 불연속을 지우면 HLL로 충분하다. 남기려면 HLLC의 중간 파속 S*가 필요하다.
Riemann 문제: CFD의 심장#
유한체적법(Finite Volume Method)에서 셀 경계의 **수치 플럭스(numerical flux)**를 어떻게 계산하느냐가 해의 정확도와 안정성을 좌우한다. 열쇠는 Riemann 문제다. 좌우가 상수인 불연속 하나.
압력비 슬라이더를 1 근처에서 1000:1로 밀면, 좌우 파가 팽창에서 충격으로 바뀐다.
x–t 다이어그램에서 좌·우로 가는 파(shock 또는 rarefaction)와 가운데 접촉 불연속이 보인다. p_L > p_R이 충분히 크면 양쪽 모두 shock이 된다.
가운데 접촉면은 압력비가 커져도 남는다. 양쪽 파가 동시에 충격이 되는 자리는, 별표 압력 가 좌우 압력보다 모두 커진 때다.
Riemann 문제란?#
초기 조건이 하나의 불연속면을 사이에 두고 좌우로 다른 상수 상태를 갖는 초기값 문제입니다:
1차원 Euler 방정식에 대해 이 문제의 해석해는 세 개의 파(wave)로 구성됩니다:
- 좌향 파 (rarefaction 또는 shock)
- 접촉 불연속 (contact discontinuity)
- 우향 파 (rarefaction 또는 shock)
Godunov의 아이디어 (1959)#
Godunov의 핵심 통찰은 간단하지만 강력합니다:
셀 경계에서의 플럭스를 구하려면, 인접한 두 셀의 평균값을 좌우 상태로 놓고 Riemann 문제를 풀면 된다.
유한체적법의 업데이트 공식:
여기서 가 바로 Riemann 문제의 해로부터 결정되는 수치 플럭스입니다.
Exact Riemann Solver#
정확한 Riemann 풀이는 Newton-Raphson 반복법으로 star region의 압력 를 구합니다. 좌우 파의 종류(shock/rarefaction)에 따라 Rankine-Hugoniot 관계식 또는 등엔트로피 관계식을 적용합니다.
Shock wave 관계식 (, or ):
여기서 , 입니다.
Rarefaction wave 관계식 ():
는 다음 조건을 만족합니다:
갈림은 와 의 대소 하나다. 가 보다 크면 그 쪽은 충격이다. 는 압력 차에 를 곱한 값이다. 라서 밀도가 크면 같은 압력 점프가 속도를 덜 바꾼다. 는 분모를 보다 조금 키운다. 가 이하이면 팽창이다. 앞의 계수 는 음속이 클수록, 가 1에 가까울수록 커진다. 압력비의 지수는 다. 가 내려가면 지수도 내려가서, 압력비가 에 덜 민감해진다.
두 의 합에 을 더해 0이 되어야 한다. 이 보다 작으면 유체가 가운데로 모인다. 합 은 양수이고, 는 좌우 압력 위로 밀린다. 그때 좌우 파가 둘 다 충격이다. 화면의 1000:1은 그 끝이다. 낮은 쪽 는 star 압력보다 작아지고, 그 쪽 는 충격 가지에 남는다. 높은 쪽은 압력비에 따라 팽창으로 남을 수도 있다. 양쪽 모두가 충격이 되려면 가운데로 모이는 속도 차가 충분히 커야 한다. 칸 하나를 충격관으로 그대로 두는 계산은 Godunov가 칸 안에서 푸는 충격관에 있다.
Approximate Riemann Solver: 왜 필요한가?#
Exact solver는 반복 계산이 필요하므로 비쌉니다. 실제 CFD 코드에서는 대부분 **근사 Riemann 풀이(approximate Riemann solver)**를 사용합니다.
Roe Solver (1981)#
Roe는 비선형 Riemann 문제를 **선형화(linearization)**하여 행렬 에 대한 선형 Riemann 문제로 바꿉니다:
Roe 평균(Roe average)을 사용하여 를 구성합니다:
장점: 접촉 불연속을 정확히 포착. 단점: 엔트로피 조건 위배 가능 (entropy fix 필요).
HLLC Solver (Toro, 1994)#
HLL 풀이를 개선하여 접촉 불연속(Contact)을 복원한 것이 HLLC입니다. 세 개의 파속(wave speed) , , 을 추정합니다:
star region 플럭스:
HLLC는 구현이 간단하면서도 robust하여 압축성 다상유동 코드에서 가장 널리 사용됩니다.
AUSM+ (Liou, 1996)#
AUSM 계열은 플럭스를 대류항(convective)과 압력항(pressure)으로 분리합니다:
여기서 은 셀 경계 질량 유량, 는 대류되는 양입니다. 저마하 유동에서도 안정적이어서 all-speed scheme으로 확장하기 좋습니다.
다상유동으로의 확장#
다상유동에서는 계면 양쪽의 EOS가 다르기 때문에, Riemann solver를 multi-material 버전으로 일반화해야 합니다.
대표적인 접근:
- Ghost Fluid Method: 계면 근처에서 상대편 유체의 ghost cell을 구성하고, 각 상에서 독립적인 single-material Riemann 문제를 품
- HLLC for multi-material: star region에서 양쪽 EOS를 각각 적용하여 , 를 결정
다음 글에서는 **계면 포착 기법(VOF, Level Set, Diffuse Interface)**을 비교한다.
다상에서 이류와 압력을 갈라 놓는 분리는 Baer–Nunziato 플럭스의 TV 분리로 넘어간다.
관련
도움이 됐다면 공유해주세요.