一次元圧縮性Euler方程式の数値解法を,非反応 SOD ショックチューブ問題から 一段総括反応デトネーション計算へと段階的に習得するための Julia 実装集.
書いて動くコードを作るための最低限の実装を示す.
数値計算に関する背景は docs/ を参照.
docs/を見て、Euler陽解法+Lax--Friedrichs methodで解くコードを実装するところから始めることをオススメする.
詰まったらsrc/step1_Euler-LF.jlのコードを読んで確認する.
| 依存 | 用途 |
|---|---|
| Julia ≥ 1.10 | 実行言語 |
| CairoMakie | グラフ描画・mp4 出力 |
| StaticArrays | 状態ベクトルの高速演算 |
| FFmpeg (システム) | CairoMakie が mp4 エンコードに使用 |
パッケージのインストール:
julia --project=. -e 'import Pkg; Pkg.instantiate()'.
├── src/
│ ├── step1_Euler-LF.jl # Lax-Friedrichs 流束 + 前進 Euler 法
│ ├── step2_Riemann_solver.jl # HLL / HLLC Riemannソルバ
│ ├── step3_Runge-Kutta.jl # HLL + SSPRK3 / RK4 比較
│ ├── step4_MUSCL_scheme.jl # MUSCL 再構築 + HLL + SSPRK2
│ ├── step5_WENO_scheme.jl # WENO5-JS / Z+ / Z+M + HLL + SSPRK3
│ ├── step6_detonation.jl # 反応性Euler方程式(デトネーション)[WIP]
│ ├── common.jl # Config・状態変数変換・初期条件(非反応系)
│ ├── det_common.jl # Config・状態変数変換・初期条件(反応系)
│ ├── exact_solution.jl # SOD 問題の厳密解
│ ├── riemann_solvers.jl # HLL / HLLC 実装
│ ├── runge-kutta.jl # Butcher tableau ベース汎用 RK ソルバ
│ └── plotting.jl # プロット・動画生成ユーティリティ
└── docs/
└── SODショックチューブから始める圧縮性反応Euler方程式の数値計算.md
各ステップは独立したスクリプトで,julia src/stepN_*.jl で直接実行できる.
出力は stepN.mp4(物理量の時間発展)と stepN_conservation.mp4(保存量誤差)の 2 本.
julia --project=. src/step1_Euler-LF.jl # Lax-Friedrichs
julia --project=. src/step5_WENO_scheme.jl # WENO5 比較- 反応性Euler方程式を完成させる
- 検証問題 II(一段総括反応デトネーション)を記述
- 数値計算スキームやソルバの物理数学的背景の記述