Skip to content

great-cactus/sod_shocktube_lesson

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SOD Shock Tube から学ぶ圧縮性Euler方程式の数値計算

一次元圧縮性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 比較

TODO

  • 反応性Euler方程式を完成させる
  • 検証問題 II(一段総括反応デトネーション)を記述
  • 数値計算スキームやソルバの物理数学的背景の記述

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages