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, 計算されたポテンシャルエネルギー。

tiny_simulations.diffeq2nd_planet_generator.readdb(dbfile)[ソース]

CSVファイルから惑星データを読み込む。

指定されたCSVファイルを開き、各行を辞書として読み込みます。 数値データはfloatに変換して返します。

パラメータ:

dbfile -- str, 読み込むCSVファイルのパス。

戻り値:

list, 惑星データの辞書を格納したリスト。

tiny_simulations.diffeq2nd_planet_generator.total_momentum(m, v)[ソース]

系の全運動量とその二乗平均平方根を計算する。

パラメータ:
  • m -- numpy.ndarray, 惑星の質量の配列 (N,)。

  • v -- numpy.ndarray, 惑星の速度の配列 (N, 3)。

戻り値:

tuple, 運動量のx, y, z成分と、その二乗平均平方根の値 (Px, Py, Pz, Pmsm)。