Skip to content

Multi-body dynamics and fusion simulation running on command-line, written in C

Notifications You must be signed in to change notification settings

maronuu/Multi-bodyDynamicsFuisionSimulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi-body Dynamics and Fusion Simulation

Usage

Build & Run

./build.sh
./main NUM_OBJECTS PATH_TO_DATA (euler|heun|middle)

e.g.) ./main 8 data/single_simple.dat middle
        euler = オイラー法, heun = ホイン法, middle = 中点法

Key

key 動作
Q 終了
A 再生スピード一段階ダウン
D 再生スピード一段階アップ

Description

物体に対してランダムにアルファベットを割り当てる機能

  • ステータス表示、フィールドの描画の際にその記号を用いる。

融合して無くなった物体は赤色で表示

  • いつもどおりエスケープシーケンスにより着色で実現した。

各物体に対して、これまで融合してきた相手の物体のシンボルを表示し、リアルタイムで今どの物体がどの物体と一体となったかが分かるようにした。

  • structにsymbolという文字列をもたせ、描画するようにした。

運動方程式の数値解法(位置と速度の更新方法)を複数実装した

  • オイラー法
  • ホイン法 (my_update_params_heuns)
  • 中点法 (my_update_middle_point_method)

を実装した。いずれも2次精度のアルゴリズムであり、1次精度のオイラー法よりも精度が優れている。4次ルンゲ=クッタ法への拡張も容易であるが、そもそも描画がgnuplotなどの高解像度な画像ではなく、高々40x75程度の整数gridであるため、精度による検証をするような問題設定ではなかったため、2次精度までとして解法のバリエーションを増やした。 これらの解法はコマンドライン引数によって選択できるようになっている。

マルチスレッドを用いたシミュレーションspeed調整機能

  • pthreadを用いて

    • 'Q'を押すと終了
    • 'A'を押すと一段階speedダウン
    • 'D'を押すと一段階speedアップ

    という効果をリアルタイムで付けた。これにより、シミュレーション中にspeedの自由自在な調整ができるようになった。ターミナルや環境、特にdisplayのFPSによっては画面のちらつきが目立つかもしれない。

Note

東京大学2021年度Aセメスター「ソフトウェア2」の発展課題として実装

About

Multi-body dynamics and fusion simulation running on command-line, written in C

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published