Phun で銀河シミュレーション
ちょっと時間ができたので、Phunを触ってみました。すごく久しぶり。
Phunは2次元物理演算ソフトで、剛体の運動を計算してリアルタイムで可視化します。最新バージョン(と言ってもかなり前にリリースされたもの)では、引力が実装されました。ならば重力に応用しないとね。気分は宇宙物理学者ですw
コメントを見ると、本職の方もいるようで。ありがたいことです。
Phunの引力を重力に応用
Phunにおける二体間に働く引力 は
と実装されているようです。ここで と は各物体の引力の係数です。 と は各物体の質量、 は二体間の距離です。したがって、Phunの引力を重力に応用するためには、重力定数 を
とすれば良いことになります。
ある重力源とその他のテスト粒子の問題を考える場合には、重力源の引力係数を 、テスト粒子の引力係数を 0 にセットすれば良いことになります。すべての物体間の重力を考える場合(すなわち自己重力多体問題)では、すべての物体の引力係数を にセットすれば良いでしょう。
なんでこんな実装にしたんだろう?ボクなら
とするなー。こうすると、重力だけではくクーロン力への応用も簡単なはず。
銀河衝突
昔の宇宙は狭かったので、銀河が狭い敷地にひしめき合っていました。したがって、頻繁に衝突・合体しました。また、銀河団においても同様の状況で、銀河は互いに肩をぶつけながら、ときには衝突・合体します。そんな感じで、銀河の衝突をシミュレーションで再現しました。アンテナ銀河と比較したりしました。
このシミュレーションでは、中心の粒子(Phunの円オブジェクト)1個だけが重力源です。その他の多数の粒子は、中心粒子の重力だけを感じ、その他の粒子の重力を感じません。したがって、粒子の回転は、太陽のまわりを回る惑星のようにケプラーの法則に従い、本当の銀河より差動回転が大きくなってしまいます。本当は回転速度は一定です(角速度は半径に反比例)。まぁ、本質ではないのでこれは許してください。
渦巻銀河の渦を再現
渦巻銀河の渦巻模様は大変美しい。巻貝の模様と同種のパターンであるとか。これを Phun で再現できないか、実験しました。
銀河の構成要素は (1) ダークマター、(2) 星、(3) ガスです。このうち、渦巻模様を担っているのは星です。実は星の個数分布だけに着目すると、渦巻模様のコントラストは低く、とてものっぺりしています。腕の部分に明るい星が多く分布しているため、渦巻模様のコントラストが強調されるのです。これにはガスも関係しているのですが、詳しく書くと長くなるので、ここでは割愛します。
Phun では星の分布の再現に挑戦しました。動画でも紹介している通り、星だけを考えるとうまくいきません。ダークマターが必要です。実際の銀河では、ダークマターが作る重力ポテンシャルの中を星が回転しています。そして星の間の重力相互作用によって、渦の模様ができると考えられています。
Phun では銀河の中心に重い重力源を置き、ダークマターが作る重力ポテンシャルとしました。このため、Phun版ダークマターは、銀河の中心一点に質量が集中してしまいます。本来なら銀河全体に広がったダークマターを作るべきなのでしょうが、Phun では難しいでしょう。なぜかと言うと、Phun版ダークマターは星と衝突してしまうからですw
伴銀河があったり、ダークマターの分布が歪んでいたいるすと、さらに綺麗な渦模様ができると予想されます。
Phun 力学の問題点
時間ステップが固定
時間ステップが固定されているので、粒子間の距離が近くなると、重力が強くなり、誤差によって粒子が飛んでいってしまいます。これを回避するために、粒子をある程度の大きさにします。粒子の直径以下には近づけないという算段です。
粒子が衝突してしまう
Phunでは衝突するグループ分けを設定できますが、同じ衝突グループに属さないと重力が働きません。したがって、粒子は衝突してしまいます。本来はすり抜けて欲しいのですが。すり抜け可能になると、ダークマター粒子も計算できるようになります!
動画でも粒子が飛び散っていますが、この原因は粒子の衝突です。
粒子が衝突することを積極的に利用して、sticky な粒子のシミュレーションをしたほうが良いような気がしてきた。ネタはありますが、時間がありません(笑)。
計算が重い
自己重力多体問題では、すべての粒子間の重力を計算するので、粒子数の自乗に比例して計算時間がかかります。本格的な計算では、いろいろな工夫をするようですが、Phunではその余地はありません。動画の粒子数は700個くらいです。
Algodooベータ版
いまなら Algodoo ベータ版が無償でダウンロード可能です。
http://www.algodoo.com/wiki/Algodoo_beta/ja
期間限定だそうです。Algodoo は Phun の発展版です。Phun が Algodoo のプロトタイプというべきかな。