diffeq2nd_planet_generator プログラム仕様
惑星の軌道シミュレーションを実行するモジュール。
本モジュールは、Euler、Heun、Verlet、Velocity-Verlet法などの数値解法を用いて、 複数惑星の運動方程式を解き、その軌跡を計算・描画します。ジェネレータを通じて シミュレーション状態を順次取得することが可能です。
関連リンク: D:/git/sphinx/tkProg/source/tiny_simulations/diffeq2nd_planet_generator.py
- tiny_simulations.diffeq2nd_planet_generator.initialize(planets)[ソース]
惑星データからシミュレーション用の初期状態を生成する。
- パラメータ:
planets -- list, 辞書形式の惑星データリスト。
- 戻り値:
tuple, 名前(names), 質量(m), 位置(r), 速度(v), 加速度(a)を含むタプル。
- tiny_simulations.diffeq2nd_planet_generator.kinetic_energy(m, v)[ソース]
系の全運動エネルギーを計算する。
- パラメータ:
m -- numpy.ndarray, 惑星の質量の配列 (N,)。
v -- numpy.ndarray, 惑星の速度の配列 (N, 3)。
- 戻り値:
float, 計算された全運動エネルギー。
- tiny_simulations.diffeq2nd_planet_generator.main()[ソース]
シミュレーションを実行するメイン関数。
コマンドライン引数を解析してパラメータを設定し、シミュレーションを実行します。 計算結果はCSVファイルに保存され、指定に応じてリアルタイムで軌道のプロットを行います。
- Param:
なし
- 戻り値:
None
- tiny_simulations.diffeq2nd_planet_generator.md_generator(planets, solver, dt, nt, yield_every=1)[ソース]
惑星シミュレーションを実行し、状態を順次返すジェネレータ。
指定された数値解法(Euler, Heun, Verlet, Velocity-Verlet)を用いて 指定回数の時間発展を計算し、定期的なステップ間隔で現在の状態を生成します。
- パラメータ:
planets -- list, 辞書形式の惑星データリスト。
solver -- str, 使用する数値解法名 ('Euler', 'Heun', 'Verlet', 'vverlet')。
dt -- float, タイムステップ幅。
nt -- int, 総ステップ数。
yield_every -- int, 状態をyieldするステップ間隔。
- 戻り値:
generator, (時間, 位置, 速度, 加速度, (U, K, E), (Px, Py, Pz, Pmsm)) のタプルを生成。
- tiny_simulations.diffeq2nd_planet_generator.normalize_momentum(m, v)[ソース]
系全体の運動量をゼロに正規化する。
質量と速度から系全体の運動量を計算し、重心系での速度に変換するよう 各惑星の速度をインプレースで調整します。
- パラメータ:
m -- numpy.ndarray, 惑星の質量の配列 (N,)。
v -- numpy.ndarray, 惑星の速度の配列 (N, 3)。
- 戻り値:
None
- tiny_simulations.diffeq2nd_planet_generator.pairwise_accel(m, r)[ソース]
万有引力の法則に基づき各惑星の加速度を計算する。
惑星間の相対距離からニュートン力学に基づく重力加速度を計算して返します。
- パラメータ:
m -- numpy.ndarray, 惑星の質量の配列 (N,)。
r -- numpy.ndarray, 惑星の位置の配列 (N, 3)。
- 戻り値:
numpy.ndarray, 各惑星の加速度の配列 (N, 3)。
- tiny_simulations.diffeq2nd_planet_generator.potential_energy(m, r)[ソース]
系の全ポテンシャルエネルギー(重力位置エネルギー)を計算する。
- パラメータ:
m -- numpy.ndarray, 惑星の質量の配列 (N,)。
r -- numpy.ndarray, 惑星の位置の配列 (N, 3)。
- 戻り値:
float, 計算されたポテンシャルエネルギー。