移流項の差分近似（再訪）

# 初めに
[これ](https://qiita.com/ShotaDeguchi/items/7d3ab5e9765200360a3d)の再訪である．

特に，空間スキームの収束性が興味の対象である．この意味で，時間が混じるLax-WendroffとQUICKESTは混乱を生みそうなので議論の対象から省く．

# Methods
## 移流方程式
初期条件はGauss波とする．
```math
\begin{align}
    \partial_t \phi
    + a \partial_x \phi
    &= 0 \\
    \phi (x, t=0)
    &= f (x)
     = \exp \left( - \frac{(x - x')^2}{2 s^2} \right)
\end{align}
```
$a = 0.5, \ \Omega = (0, L), \ \mathcal{I} = (0, T), \ L = 1, \ T = 1$とする．

$x' = L/5, \ s = L/20$を選ぶ．

| 初期条件 | 解析解 |
|:-:|:-:|
| ![advc_ic.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/7f20a38e-1771-94dd-9b2c-972960662ec5.png) | ![advc_analytic.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/67b636c8-b6ce-0b02-94c2-f9263e864d13.gif) |

滑らかなので，風上化をしなくても安定して解けるが，いま，それには興味が無い．

## 移流スキーム
[既に述べた](https://qiita.com/ShotaDeguchi/items/95b17572f23ab52234b2)ように，

* （所謂，原始的な）風上差分近似: 1次精度
* QUICK: 2次精度
* KK: 3次精度

であると考えている．QUICKについては，私の考えと[Leaonard1979](https://doi.org/10.1016/0045-7825(79)90034-3)や[Versteeg&Malalasekera1995](https://books.google.co.jp/books?id=uZBpQgAACAAJ)の主張が食い違うことは明記しておく．だから，間違えているかもしれない．

## 時間進行スキーム
[昔の実験](https://qiita.com/ShotaDeguchi/items/7d3ab5e9765200360a3d)では，Euler法をかなり細かく刻んだ．が，あまり美しくないし，時間方向の誤差を十分に排除できたか少し自信が無い．もう少しだけ高級な時間進行法を使って再度調べてみる．

簡単に，[陽的な方法](https://qiita.com/ShotaDeguchi/items/639657f65ee136d17add)を採用する．

* Euler法: 1次精度
* Heun法: 2次精度
* Runge-Kutta法: 4次精度

# Results
## Sanity check
離散化パラメータ: $h = 1 \times 10^{-2}, \tau = 2 \times 10^{-3}$（空間，時間）．

| | Euler | Heun | Runge-Kutta |
|:-:|:-:|:-:|:-:|
| $\text{Animation}$ | ![Euler.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/3eb4cc95-186d-54ad-bba1-1d00068796dd.gif) | ![Heun.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/03598e8d-29ea-d838-3b5a-30625b2db5c4.gif) | ![RK.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/50136fcb-6665-c0d7-1da8-a77d2284a844.gif) |
| $\text{Snapshot}$ | ![fig_500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/9b571620-b810-4538-9043-4a64b84f38c0.png) | ![fig_500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/5c3826ac-d447-c482-8dc1-86082d80cb3e.png) | ![fig_500.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/1e915edd-3ffb-9ff3-4e61-14542a87fdc2.png) |

この程度の細かさでは，QUICKの方が誤差が小さい．これは，[昔の実験](https://qiita.com/ShotaDeguchi/items/7d3ab5e9765200360a3d)と一致する．

## Convergence
$t=T$での誤差を測る．

実線+四角マーカー: 誤差の最大値，破線+丸マーカー: 誤差の平均値．

|  | Euler | Heun | RK4 |
|:-:|:-:|:-:|:-:|
| $\tau = 1 \times 10^{-4}$ | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/b39e0359-d2da-b04d-effd-147c17d826d6.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/31534d93-73fe-404c-8055-ebde0dcc766b.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/cea5559e-a903-b95c-8e2e-2d46773f3e80.png) |
| $\tau = 1 \times 10^{-5}$ | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/568f4718-c28f-1ed5-a569-84956dc10839.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/360b5a12-de4a-c82a-9218-107d8d82d2a2.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/f21d52fb-10b9-b31f-a8ff-479f02b6ac19.png) |
| $\tau = 1 \times 10^{-6}$ | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/f1773439-9330-9700-387f-0828bf1c0e2e.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/ad21554d-7b7a-63cb-db55-24a40950a558.png) | ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2529612/8cbb4ec9-ff71-c55c-ae26-029ddea06318.png) |

Euler法で$\tau = 1 \times 10^{-4}$とした場合，空間解像度を細かくしてみると，QUICKとKKは山の裾が振動し始め，それが増幅していき，爆発した．

所々，かなり一致する結果が並んでいるが，貼り付ける結果は間違っていないはずである（何度も確認した）．数値誤差の影響だろう．

# 終わりに
素朴にEuler法で細かく刻んだときとそう変わらない結果であった．