Godunov 방법은 보존형태의 비선형 보존법칙

qt+f(q)x=0,q_t + f(q)_x = 0,

의 수치적 근사를 위해 개발된 유한체적법(Finite Volume Method) 중 하나로, 특히 충격파나 희박파와 같이 해가 불연속적인 문제에서도 물리적으로 올바른(엔트로피 조건을 만족하는) 약한 해를 계산할 수 있도록 설계되었습니다. 이 방법의 핵심 아이디어는 도메인을 셀로 분할한 후, 각 셀 경계에서 좌측과 우측의 상수 상태를 갖는 Riemann 문제를 풀어 그 해를 이용해 셀 내 보존량의 변화를 업데이트하는 것입니다.


1. 셀 분할과 셀 평균

전체 공간을 균일한 셀 Ci=[xi12,xi+12]C_i = \left[x_{i-\frac12},\, x_{i+\frac12}\right]로 분할합니다. 여기서 정수 인덱스 ii는 각 셀의 중심을 나타내며, 반정수 인덱스 i±12i\pm\frac12는 인접 셀 사이의 공통 경계를 의미합니다. 각 셀 내의 보존 변수 qq의 평균은 다음과 같이 정의됩니다.

Qin1Δxxi12xi+12q(x,tn)dx.Q_i^n \approx \frac{1}{\Delta x} \int_{x_{i-\frac12}}^{x_{i+\frac12}} q(x, t^n)\,dx.

이러한 셀 분할 방식은 셀 경계에서의 플럭스 계산과 보존성(conservation property)을 명확하게 유지할 수 있다는 점에서 큰 이점을 가집니다.


2. 보존법칙의 적분 형태와 업데이트 공식

보존법칙의 기본 적분 형태는 셀 CiC_i에 대해

ddtxi12xi+12q(x,t)dx=f(q(xi12,t))f(q(xi+12,t))\frac{d}{dt} \int_{x_{i-\frac12}}^{x_{i+\frac12}} q(x,t)\,dx = f\big(q(x_{i-\frac12},t)\big) - f\big(q(x_{i+\frac12},t)\big)

로 표현됩니다. 이를 시간 Δt\Delta t 동안 적분하면

xi12xi+12q(x,tn+1)dx=xi12xi+12q(x,tn)dxtntn+1[f(q(xi+12,t))f(q(xi12,t))]dt.\int_{x_{i-\frac12}}^{x_{i+\frac12}} q(x,t^{n+1})\,dx = \int_{x_{i-\frac12}}^{x_{i+\frac12}} q(x,t^n)\,dx - \int_{t^n}^{t^{n+1}} \Big[ f\big(q(x_{i+\frac12},t)\big) - f\big(q(x_{i-\frac12},t)\big) \Big] dt.

양 변을 Δx\Delta x로 나누면, 셀 평균을 업데이트하는 공식은

Qin+1=QinΔtΔx(Fi+12Fi12)Q_i^{n+1} = Q_i^n - \frac{\Delta t}{\Delta x}\left( F_{i+\frac12} - F_{i-\frac12} \right)

가 되며, 여기서 Fi±12F_{i\pm \frac12}는 해당 셀 경계에서의 시간 평균 플럭스를 나타내고,

Fi+121Δttntn+1f(q(xi+12,t))dt.F_{i+\frac12} \approx \frac{1}{\Delta t} \int_{t^n}^{t^{n+1}} f\big(q(x_{i+\frac12}, t)\big)\,dt.

이와 같이 보존법칙의 적분 형태를 모방함으로써 전체 보존량이 정확하게 유지되도록 합니다.


3. 셀 경계에서의 Riemann 문제 해결

Godunov 방법의 가장 핵심적인 단계는 각 셀 경계, 예를 들어 xi+12x_{i+\frac12}에서 Riemann 문제를 해결하는 것입니다. 이때 인접 셀 CiC_iCi+1C_{i+1}의 셀 평균을 각각

qL=Qin(좌측 상태),qR=Qi+1n(우측 상태)q_L = Q_i^n \quad \text{(좌측 상태)}, \qquad q_R = Q_{i+1}^n \quad \text{(우측 상태)}

로 두고, 다음 Riemann 문제를 고려합니다.

qt+f(q)x=0,q(x,0)={qL,x<0,qR,x>0.q_t + f(q)_x = 0,\quad q(x,0)= \begin{cases} q_L, & x < 0, \\[1mm] q_R, & x > 0. \end{cases}

Riemann 문제의 해는 자기유사적 성질을 가지므로, 해는

q(x,t)=Q(ξ)withξ=xtq(x,t)=Q\Bigl(\xi\Bigr) \quad \text{with} \quad \xi=\frac{x}{t}

의 형태로 나타납니다. 특히 x=0x=0ξ=0\xi=0에 해당하므로, 셀 경계에서 구하고자 하는 해는

q(0,t)=Q(0)=q.q(0,t)=Q(0)=q^*.

x=0x=0에서 해를 구하는가?

  1. 셀 경계에서 플럭스 결정:
    유한체적법에서는 인접 셀 사이의 경계 상태가 결정되어야 하므로, x=0x=0 (또는 일반적으로 셀 경계 xi+12x_{i+\frac12})에서의 해 qq^*를 이용해 수치 플럭스
Fi+12=f(q)F_{i+\frac12}=f(q^*)

를 정의합니다. 이 수치 플럭스는 업데이트 공식에 직접 대입되어 셀 평균을 갱신하는 데 사용됩니다.

  1. 자기유사성의 활용:
    Riemann 문제의 해는 ξ=xt\xi = \frac{x}{t}에 대한 함수이므로 x=0x=0ξ=0\xi=0에 해당합니다. q(0,t)=Q(0)q(0,t)=Q(0)는 전체 해의 중심값을 대표하며, 충격파와 희박파 등의 전파 속도, 엔트로피 조건 등 물리적 조건을 반영하여 올바른 해를 선택하는 기준이 됩니다.

해를 구하는 방법

  • 스칼라 보존법칙의 경우:
    f(q)f(q)가 볼록(convex) 또는 오목한 경우, qLq_LqRq_R 사이에서는 충격파나 희박파가 발생하게 됩니다.

    • 희박파(fan)의 경우, q(0,t)q(0,t)는 좌우 상태를 부드럽게 연결하는 값으로 결정됩니다.
    • 충격파의 경우, Rankine–Hugoniot 조건
      s=f(qR)f(qL)qRqLs = \frac{f(q_R)-f(q_L)}{q_R-q_L}
      와 추가적인 엔트로피 조건을 이용해 q(0,t)q(0,t)가 결정됩니다.
  • 선형 혹은 선형화된 시스템의 경우:
    상수 계수 A=f(q)A=f'(q)인 선형 시스템에서는 좌측 상태 qLq_L와 우측 상태 qRq_R의 차이를 고유벡터의 선형 결합으로 분해하여,

    qRqL=p=1mαprp,q_R - q_L = \sum_{p=1}^m \alpha_p r_p,

    각 파동은 속도 λp\lambda_p로 전파됩니다. 따라서 x=0x=0에서의 해는 각 특성파의 진행 방향에 따라

    q(0,t)=qL+p:λp>0αprp(또는 반대로)q(0,t)= q_L + \sum_{p:\, \lambda_p>0} \alpha_p r_p \quad \text{(또는 반대로)}

    와 같이 결정됩니다.


4. 수치 플럭스의 정의와 업데이트

셀 경계에서 구한 Riemann 문제의 해 q=q(0,t)q^*=q(0,t)를 사용하여 수치 플럭스를 정의하면,

Fi+12=f(q).F_{i+\frac12} = f(q^*).

이 값을 앞서 유도한 업데이트 공식

Qin+1=QinΔtΔx(f(qi+12)f(qi12))Q_i^{n+1} = Q_i^n - \frac{\Delta t}{\Delta x}\Big(f(q^*_{i+\frac12}) - f(q^*_{i-\frac12})\Big)

에 대입하여 각 셀의 평균값을 다음 시간 단계로 갱신합니다.


5. Godunov 방법의 특징 및 확장

  • 보존성 유지:
    셀 경계에서의 플럭스가 인접 셀에 동일하게 적용되므로, 전체 보존량(예: 질량, 에너지 등)이 정확히 보존됩니다.

  • 불연속 해 포착:
    Riemann 문제를 풀어 셀 경계의 상태를 결정하므로, 충격파나 희박파와 같은 불연속 해를 물리적으로 올바른 방식으로 포착할 수 있습니다.

  • 기본 1차 정확도:
    기본 Godunov 방법은 1차 정확도를 가지지만, 이후 제한기(limiter) 등을 도입하여 고해상도(high-resolution) 방법으로 확장할 수 있습니다.

  • 선형 및 비선형 문제 모두 적용 가능:
    선형 시스템에서는 고유값 분해를 통한 명시적 해법을, 비선형 시스템에서는 적절한(종종 근사적인) Riemann 솔버를 사용하여 문제를 해결할 수 있습니다.


요약

Godunov 방법은 다음과 같은 절차로 진행됩니다.

  1. 셀 분할:
    도메인을 셀 Ci=[xi12,xi+12]C_i = \left[x_{i-\frac12},\, x_{i+\frac12}\right]로 분할하고, 각 셀의 평균 QinQ_i^n을 계산합니다.

  2. Riemann 문제 해결:
    각 셀 경계 xi+12x_{i+\frac12}에서 좌측 상태 qL=Qinq_L = Q_i^n와 우측 상태 qR=Qi+1nq_R = Q_{i+1}^n를 사용하여 Riemann 문제

qt+f(q)x=0,q(x,0)={qL,x<0,qR,x>0,q_t + f(q)_x = 0,\quad q(x,0)= \begin{cases} q_L, & x < 0, \\[1mm] q_R, & x > 0, \end{cases}

를 풉니다. 이때 해는 자기유사 변수 ξ=x/t\xi=x/t를 도입하여 q(0,t)=Q(0)=qq(0,t)=Q(0)=q^*로 나타내며, 이는 셀 경계에서의 상태를 결정하는 중요한 값입니다.

  1. 수치 플럭스 정의 및 업데이트:
    qq^*를 이용해 수치 플럭스 Fi+12=f(q)F_{i+\frac12} = f(q^*)를 정의하고, 보존형 업데이트 공식
Qin+1=QinΔtΔx(f(qi+12)f(qi12))Q_i^{n+1} = Q_i^n - \frac{\Delta t}{\Delta x}\Big(f(q^*_{i+\frac12}) - f(q^*_{i-\frac12})\Big)

를 사용해 셀 평균을 갱신합니다.

이와 같이 Godunov 방법은 셀 경계에서 Riemann 문제를 풀어 x=0x=0에서의 해를 구하는 것이 핵심이며, 이 해를 바탕으로 인접 셀 사이의 플럭스를 결정하여 전체 보존성을 유지하는 동시에, 충격파나 희박파 등 불연속 해를 올바르게 포착하는 수치적 기법입니다.

profile
배움은 누군가 챙겨주는 것이 아니라, 내가 스스로 훔쳐 먹는 것이다. PhD in Mathematics.

0개의 댓글