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 (つづき) 風上から線形外挿 (単調性を守る→ 流束制限関数) コード作成のこつ • プログラム全体を機能別に分割し、部分ごと に完成させる。 • 部分ごとに定性的・定量的な試験を行い、期 待通りの動作を確認する。 • 確認のために解析解など、予め解が予測さ れる場合を考える。 • 確認にはグラフを用いる。 • 確認作業の間は計算量を小さくする。
© Copyright 2025 ExpyDoc