리만 문제

편집 역사 토론
수치해석 전산유체역학 마지막 수정: 2026-08-27 04:47:19

1. 개요[편집]

리만 문제
Riemann problem
정의쌍곡형 보존법칙 + 계단 초기조건 (좌 UL / 우 UR)
해의 성질자기유사 — U(x,t) = V(x/t)
오일러 방정식의 해희박파 – 접촉 불연속 – 충격파, 3파 구조
미지수별 영역 압력 p* 하나 (나머지는 대수적)
푸는 법p–u 파곡선 두 개의 교점 → 뉴턴 반복
쓰임고두노프 도식 계열 전체의 기본 벽돌

칸막이 하나. 양쪽에 다른 기체. 뽑으면 무슨 일이 생기는가. — 이 한 문장이 압축성 수치해석의 절반이다.

리만 문제(Riemann problem)는 쌍곡형 보존법칙에 좌우가 서로 다른 두 상수 상태로 갈라진 계단 초기조건을 준 초기값 문제다. 방정식과 초기조건은 이렇게 생겼다.

Ut+F(U)x=0,U(x,0)={UL,x<0UR,x>0\frac{\partial \mathbf{U}}{\partial t} + \frac{\partial \mathbf{F}(\mathbf{U})}{\partial x} = 0, \qquad \mathbf{U}(x,0) = \begin{cases}\mathbf{U}_L, & x<0\\ \mathbf{U}_R, & x>0\end{cases}

세상에서 가장 단순한 초기조건인데, 비선형 쌍곡계에서 닫힌형 해를 손으로 쓸 수 있는 거의 유일한 문제다. 그리고 동시에 충격파·희박파·접촉면이라는 압축성 유동의 모든 파 구조가 한꺼번에 등장하는 문제이기도 하다. 이 두 가지 사실이 겹치는 순간 이 문제는 이론적 예제에서 산업용 CFD의 부품으로 신분이 상승했다. 오늘날 압축성 솔버는 셀 경계마다, 스텝마다 이 문제를 푼다.

이 문서는 문제 자체와 정확 해를 다룬다. 계면 플럭스를 싸게 근사하는 HLL·HLLC·Roe 계열은 리만 솔버고두노프 도식이, 유일성을 강제하는 부등식은 엔트로피 조건이, 점프 관계 자체는 랭킨-위고니오 조건이 맡는다.

2. 자기유사성 — 길이 눈금이 없다[편집]

이 문제의 모든 것이 한 가지 관찰에서 나온다. 문제에는 특성 길이도, 특성 시간도 없다. UL\mathbf{U}_L, UR\mathbf{U}_R 은 상수이고 불연속의 위치는 원점 하나뿐이다. 그러면 좌표를 (x,t)(λx,λt)(x,t)\to(\lambda x,\lambda t) 로 늘려도 방정식과 초기조건이 그대로다. 해도 그래야 한다.

U(x,t)=V(ξ),ξ=xt\mathbf{U}(x,t) = \mathbf{V}(\xi),\qquad \xi = \frac{x}{t}

즉 해는 원점에서 부챗살처럼 뻗는 함수이며, 시간이 지나도 모양이 같고 크기만 비례해서 커진다. 편미분방정식이 상미분방정식으로 내려앉는 셈이라 손으로 풀 길이 열린다. 이 자기유사성이 깨지는 순간(예: 초기조건에 길이 눈금을 주면) 문제는 다시 일반 PDE가 되고, 해석해는 사라진다.1

부수적으로 중요한 사실 하나. 자기유사해에서 x/t=0x/t = 0 인 선, 즉 원래 불연속이 있던 자리의 값은 시간에 무관하게 일정하다. 고두노프 계열 도식이 계면 플럭스를 얻을 때 ξ=0\xi=0 에서만 해를 표본화해도 되는 이유가 이것이다.

3. 스칼라부터 — 파는 두 종류뿐[편집]

m=1m=1 인 스칼라 보존법칙, 예컨대 버거스 방정식 ut+(u2/2)x=0u_t + (u^2/2)_x = 0 을 보면 구조가 다 보인다. 볼록한 플럭스에서는 특성속도가 f(u)=uf'(u)=u 이므로

  • uL>uRu_L > u_R — 특성선이 모여든다 → 충격파. 속도는 랭킨-위고니오로 s=(f(uR)f(uL))/(uRuL)s = (f(u_R)-f(u_L))/(u_R-u_L).
  • uL<uRu_L < u_R — 특성선이 벌어져 빈틈이 생긴다 → 희박파(rarefaction). 그 부채꼴 안에서 f(u)=x/tf'(u)=x/t 를 풀면 매끄러운 해가 채워진다.

여기서 유명한 함정이 나온다. uL<uRu_L<u_R 인 경우에도 랭킨-위고니오를 만족하는 불연속 해(팽창 충격)를 형식적으로 쓸 수 있다. 두 해 다 약해로서 적법하다. 물리적으로 옳은 쪽을 골라 주는 것이 엔트로피 조건이고, 락스 형태로는 충격 양쪽의 특성속도가

f(uL)>s>f(uR)f'(u_L) > s > f'(u_R)

를 만족해야 한다는 것 — 특성선이 충격으로 빨려 들어가야지 뿜어져 나오면 안 된다는 요구다. 이 조건을 빠뜨린 수치도식이 팽창 충격을 만들어 내는 사고는 지금도 반복된다.

4. 오일러 방정식 — 3파 구조[편집]

1차원 오일러 방정식은 미지수가 셋(ρ,ρu,E\rho,\rho u,E)이고, 자코비안의 고윳값도 셋이다.

λ1=ua,λ2=u,λ3=u+a\lambda_1 = u-a,\qquad \lambda_2 = u,\qquad \lambda_3 = u+a

1,31,3 번 장은 진성 비선형(genuinely nonlinear)이라 충격 아니면 희박파가 되고, 22 번 장은 선형 퇴화(linearly degenerate)라 언제나 접촉 불연속이 된다. 그래서 해의 구조가 항상 아래 넷 중 하나로 고정된다: 왼쪽 파가 충격/희박 두 가지, 오른쪽 파도 두 가지, 가운데는 무조건 접촉면.

압력함수 f(p) = f_L(p) + f_R(p) + (u_R−u_L) 의 근을 뉴턴-랩슨으로 찾는다. Sod 문제(1,0,1 · 0.125,0,0.1)에서 초기추정 0.315269 로 출발해 4회 만에 p* = 0.303130, u* = 0.927453 로 수렴하고, 그 교점이 아래 x–t 평면의 희박파·접촉 불연속·충격 세 파의 궤적을 결정한다.

세 파가 xxtt 평면을 네 영역으로 나눈다.

영역내용
UL\mathbf{U}_L왼쪽 파가 아직 도달하지 않은 원래 좌측 상태
UL\mathbf{U}_L^*왼쪽 파와 접촉면 사이
UR\mathbf{U}_R^*접촉면과 오른쪽 파 사이
UR\mathbf{U}_R원래 우측 상태

가운데 두 영역을 합쳐 별 영역(star region)이라 부른다. 여기서 결정적인 성질이 나온다. 접촉 불연속을 가로질러 압력과 속도는 연속이고 밀도·온도·엔트로피만 점프한다. 즉

pL=pRp,uL=uRup_L^* = p_R^* \equiv p^*, \qquad u_L^* = u_R^* \equiv u^*

이다. 미지수 6개(양쪽 ρ,u,p\rho,u,p)처럼 보였던 별 영역이 실은 pp^* 하나로 줄어든다. pp^* 를 알면 uu^* 가 따라 나오고, 양쪽 밀도는 각 파의 성질(충격이면 랭킨-위고니오, 희박이면 등엔트로피 관계)로 대수적으로 결정된다. 리만 문제가 “풀린다”는 말은 정확히 이 뜻이다 — 미지수 하나짜리 비선형 방정식으로 환원된다.

5. p–u 파곡선의 교점[편집]

pp^* 를 구하는 그림이 이 주제에서 가장 볼 만한 부분이다. 좌측 상태 UL\mathbf{U}_L 을 고정하고, “왼쪽 파를 하나 거쳐 도달할 수 있는 상태들”을 ppuu 평면에 그리면 곡선 하나가 나온다.

u=uLfL(p;UL)u = u_L - f_L(p;\mathbf{U}_L)

마찬가지로 우측에서 출발하는 곡선은 u=uR+fR(p;UR)u = u_R + f_R(p;\mathbf{U}_R) 이다. 두 곡선은 각각 p>pKp>p_K 구간에서 충격 가지(위고니오 곡선), ppKp\le p_K 구간에서 희박 가지(등엔트로피 곡선)로 이어 붙인 조각 함수다.

fK(p)={(ppK)2(γ+1)ρK(p+γ1γ+1pK),p>pK  (충격)2aKγ1[(ppK)γ12γ1],ppK  (희박)f_K(p) = \begin{cases} (p-p_K)\sqrt{\dfrac{2}{(\gamma+1)\rho_K\left(p+\frac{\gamma-1}{\gamma+1}p_K\right)}}, & p>p_K\ \ (\text{충격})\\[2.4ex] \dfrac{2a_K}{\gamma-1}\left[\left(\dfrac{p}{p_K}\right)^{\frac{\gamma-1}{2\gamma}}-1\right], & p\le p_K\ \ (\text{희박}) \end{cases}

해는 두 곡선의 교점이다. 왼쪽 곡선은 pp 에 대해 단조감소, 오른쪽 곡선은 단조증가하므로 교점은 있으면 하나뿐이다. 그리고 교점의 위치가 파의 종류를 저절로 말해 준다.

  • p>pLp^* > p_L 이고 p>pRp^* > p_R → 양쪽 다 충격 (두 기체가 서로 밀어붙임)
  • p<pLp^* < p_L 이고 p<pRp^* < p_R → 양쪽 다 희박 (서로 멀어짐)
  • 사이에 끼면 한쪽은 충격, 다른 쪽은 희박 (전형적인 충격파관 상황)

교점 조건을 하나의 식으로 합치면 pp^* 에 대한 비선형 대수방정식이 된다.

f(p)=fL(p)+fR(p)+(uRuL)=0f(p) = f_L(p) + f_R(p) + (u_R-u_L) = 0

ffp>0p>0 에서 단조증가하고 오목하므로 근이 유일하고, 뉴턴-랩슨법이 아래에서 접근하며 안정적으로 수렴한다. 초기 추정을 두 희박파 근사나 선형화 근사로 잡으면 보통 3~5회면 상대오차 10610^{-6} 에 닿는다. 근을 얻은 뒤 접촉면 속도는 대칭적인 꼴로 떨어진다.

u=12(uL+uR)+12[fR(p)fL(p)]u^* = \frac{1}{2}(u_L+u_R) + \frac{1}{2}\left[f_R(p^*) - f_L(p^*)\right]

여기까지 오면 나머지는 전부 대수다. 별 영역 밀도는 충격 쪽이면 위고니오 밀도비, 희박 쪽이면 ρ=ρK(p/pK)1/γ\rho^*=\rho_K(p^*/p_K)^{1/\gamma}. 충격 속도는 랭킨-위고니오에서, 희박팬의 앞뒤 가장자리는 uau\mp a 에서 나온다. 마지막으로 원하는 ξ=x/t\xi=x/t 가 어느 영역에 속하는지 판정해 값을 읽으면 표본화(sampling)가 끝난다.

6. 진공 — 해가 없어지는 자리[편집]

두 파곡선이 항상 만나는 것은 아니다. 좌우 기체가 서로 충분히 빠르게 멀어지면 가운데 압력이 0으로 내려가려 하고, 그러면 f(p)=0f(p)=0 의 양의 근이 사라진다. 존재 조건은 깔끔하게 쓰인다.

2γ1(aL+aR)>uRuL\frac{2}{\gamma-1}\left(a_L + a_R\right) > u_R - u_L

좌변은 각 기체가 자기 힘으로 팽창해 낼 수 있는 최대 속도의 합이고, 우변은 서로 벌어지는 속도다. 벌어지는 속도가 팽창이 따라갈 수 있는 한계를 넘으면 가운데에 진공이 열린다. 이때 해는 여전히 존재하지만 구조가 달라진다 — 접촉면과 충격은 사라지고, 좌우 두 개의 희박팬 사이에 ρ=p=0\rho=p=0 인 진공 영역이 끼며, 각 팬은 진공 앞머리(vacuum front) uK±2aK/(γ1)u_K \pm 2a_K/(\gamma-1) 에서 끝난다.

코드 관점에서 이건 반드시 따로 코딩해야 하는 분기다. 조건을 검사하지 않고 뉴턴 반복만 돌리는 솔버는 강한 팽창 문제에서 음의 압력을 거쳐 조용히 NaN을 뱉는다. 우주론·천체 유동이나 캐비테이션처럼 밀도가 극단적으로 낮아지는 문제에서 실제로 밟는 지뢰다.

7. 왜 이게 수치해석의 벽돌인가[편집]

1959년 고두노프의 통찰은 이랬다. 유동장을 셀마다 상수로 근사하면, 모든 셀 경계가 자동으로 리만 문제가 된다. 그러면 각 경계에서 리만 문제를 풀고 ξ=0\xi=0 의 값으로 플럭스를 만들어 셀 평균을 전진시키면 된다.

이 조립이 강력한 이유는 정보가 물리적으로 옳은 방향으로만 흐르기 때문이다. 리만 해는 각 파가 어느 쪽으로 몇 m/s로 가는지 이미 알고 있으므로, 풍상 처리가 별도의 장치 없이 내장된다. 인공 점성을 손으로 뿌리지 않아도 충격이 잡히고, 엔트로피 조건도 리만 해 안에 이미 들어 있다. 유한체적법 + 리만 문제라는 조합이 압축성 CFD의 표준이 된 이유다.

다만 정확 해를 매 계면마다 푸는 것은 비싸다. 3차원 100만 셀이면 스텝당 계면이 300만 개고, 각각에서 거듭제곱과 뉴턴 반복이 돈다. 그래서 실무는 대수식 한 번으로 끝내는 근사 리만 솔버를 쓰고, 정확 해는 주로 기준해로 남는다. 그 근사 설계의 세계는 리만 솔버고두노프 도식이 다루므로 여기서 반복하지 않는다. 1차 정확도의 천장을 넘는 재구성은 MUSCL·WENO 도식이지만, 그 모든 고차 도식도 계면에서는 여전히 리만 문제를 푼다.

검증 관점에서도 리만 문제는 특별하다. 해석해가 있으므로 수치해와 직접 빼서 L1L^1 오차와 수렴차수를 잴 수 있다. 소드 문제(ρL,uL,pL=1,0,1\rho_L,u_L,p_L=1,0,1 / ρR,uR,pR=0.125,0,0.1\rho_R,u_R,p_R=0.125,0,0.1, γ=1.4\gamma=1.4)는 이 바닥의 “hello world”이고, 정확해는 p=0.30313p^*=0.30313, u=0.92745u^*=0.92745 로 알려져 있다. 새 솔버를 짜면 무조건 여기부터 돌린다.2

8. 이론적 지위와 확장[편집]

리만 문제는 수치해석의 부품이기 이전에 쌍곡계 이론의 핵심 도구다. 락스(1957)는 엄밀 쌍곡이고 각 장이 진성 비선형이거나 선형 퇴화인 계에서, ULUR|\mathbf{U}_L-\mathbf{U}_R| 이 충분히 작으면 리만 문제의 자기유사 엔트로피 해가 존재하고 유일함을 보였다. 글림(1965)은 리만 해를 벽돌로 삼아 확률적으로 이어 붙이는 방법(Glimm scheme)으로 일반 초기조건에 대한 약해의 존재성을 증명했다. 즉 리만 문제는 비선형 쌍곡계 이론에서 국소 해의 원자 노릇을 한다.

확장 방향도 넓다.

  • 일반화 리만 문제(GRP) — 초기조건을 상수 대신 조각선형으로 둔다. 2차 정확도 도식의 이론적 토대.
  • 다차원 — 2D 리만 문제는 훨씬 복잡해서 자기유사 구조가 (x/t,y/t)(x/t,y/t) 평면의 2차원 문제가 되고, 마하 반사 같은 구조가 나온다. 완전한 분류는 아직 미완이다.
  • 자기유체역학(MHD) — 파가 7개로 늘고, 진성 비선형이 아닌 장이 끼어 복합파가 생긴다.
  • 다상·상변화·상대론적 유동 — 상태방정식이 바뀌면 fKf_K 의 형태가 바뀔 뿐 골격은 유지된다. 이 견고함이 리만 문제를 하나의 알고리즘이 아니라 하나의 사고방식으로 만든다.3

9. 여담[편집]

이름의 주인 베른하르트 리만은 1860년 논문에서 유한 진폭 음파를 다루며 이 문제를 처음 세웠다. 다만 그가 얻은 답은 지금 기준으로 틀렸다. 불연속을 가로질러 엔트로피가 보존된다고 가정했기 때문이다. 올바른 점프 조건은 그 뒤 랭킨(1870)과 위고니오(1887)의 손에서 정리됐다. 100년 넘게 수백만 줄의 코드가 매초 수천만 번 푸는 문제의 원저자가, 정작 답을 틀렸다는 이야기다.4

10. 관련 문서[편집]

11. Footnotes[편집]

  1. 그래서 리만 문제는 “물리 문제”라기보다 국소 구조를 보는 현미경에 가깝다. 실제 유동에서 어떤 불연속이든 아주 짧은 시간 동안은 좌우 상수로 보이고, 그 순간의 거동이 리만 해다. 수치도식이 이걸 벽돌로 쓰는 것은 우연이 아니라 필연이다.

  2. 소드 문제로 코드를 검증할 때 흔한 착시가 있다. 밀도 그래프만 보고 “잘 맞네” 하는 것인데, 충격은 3~4셀에 잡히지만 접촉면은 훨씬 넓게 뭉개져서 실제 L1L^1 수렴차수는 1차에 한참 못 미친다. 매끄러운 문제와 불연속 문제의 수렴차수를 같은 잣대로 보면 안 된다.

  3. 상태방정식을 이상기체가 아닌 것으로 바꾸면 fKf_K 가 닫힌형으로 안 나오는 경우가 많다. 그럼 뉴턴 반복 안에 또 반복이 들어간다. “반복 안의 반복 안의 반복”은 실기체 CFD의 국룰이며, 이 지점에서 근사 솔버의 매력이 폭발적으로 커진다.

  4. 리만의 1860년 논문은 충격파의 존재 자체를 인식했다는 점에서 이미 시대를 앞섰다. 다만 열역학 제2법칙이 유체역학에 어떻게 개입하는지가 정리되기 전이었을 뿐이다. 천재도 시대의 도구 상자 밖으로는 잘 못 나간다는 흔한 교훈.