Transcript PowerPoint

3次元数値シミュレーションコー
ドの設計
花輪 知幸
数値シミュレーションによる研究
• モデルの設定
– 微分方程式
– 境界条件・初期条件
• 数値計算
– 計算コードの作成
– 実行
– データ解析
• 論文作成
問題設定
• 3次元理想電磁流体方程式 (断熱的)
• 時間に依存しない重力場 φ = φ (x, y, z)
• 固定境界 ( v⊥ = 0, B|| = 0)
数値格子 xi = h i, yj = h j, zk = h k
0 ≦ i, j, k ≦ N
(N+1)3 のセル
プログラムの設計
• プログラミング言語の選択
• データ構造
–変数の種類
• アルゴリズム
–計算の手順
データ構造
• セルごとに必要な変数 (配列)
– 原始変数 ρ, T, v, B
– 保存変数 U = (ρ, ρv, B, ρE)
– 流束 F (Fx, Fy, Fz)
– 重力加速度 g (gx, gy, gz)
• 境界 i, j, k = -1 or N +1 を含む
• 全体で共通の変数 (スカラー)
t, Δt, Nstep, N, など
計算の手順(1次精度)
1.
2.
3.
4.
5.
6.
初期条件の作成
原始変数(ρ, v, B, T) →保存変数(ρ, ρv,ρE, B)
数値流束 (F*) を求める
Δt だけ進んだ時刻の保存変数を求める
保存変数→原始変数
[計算結果の出力]
2—6は繰り返す。
計算の手順(2次精度)
1. 初期条件の作成
2. 原始変数(ρ, v, B, T) →保存変数(ρ, ρv,ρE, B)
3. 境界での原始変数を補間により求める(MUSCL)
4. 補間された原始変数より数値流束 (F*) を求める
5. Δt /2だけ進んだ時刻の保存変数を求める
6. 保存変数→原始変数 (Δt/2 だけ進んでいる)
7. 境界での原始変数を補間により求める(MUSCL)
8. 補間された原始変数より数値流束 (F*) を求める
9. Δt だけ進んだ時刻の保存変数を求める
10. 保存変数→原始変数 (Δtだけ進んでいる)
11. [計算結果の出力]
2—11は繰り返す。
MUSCL 法
矩形で近似 (1次精度)
台形で近似 (2次精度)
MUSCL
(つづき)
風上から線形外挿
(単調性を守る→
流束制限関数)
コード作成のこつ
• プログラム全体を機能別に分割し、部分ごと
に完成させる。
• 部分ごとに定性的・定量的な試験を行い、期
待通りの動作を確認する。
• 確認のために解析解など、予め解が予測さ
れる場合を考える。
• 確認にはグラフを用いる。
• 確認作業の間は計算量を小さくする。