見出し画像

おちこぼれ修士の星形成シミュレーション概説 part2 ~シミュレーション

前回(https://note.com/__tatsuya__/n/n32882af28c4b)の続き

そもそもコンピュータシミュレーションとは

 将来の予測が難しいことをコンピュータで計算する営み全般のことをコンピュータシミュレーションという。

 たとえば、ボールを時刻t = 0, z = 0から自由落下させたとき、時刻tにおけるボールの位置はどこか?

 という問題は、厳密解がもとまる。z = -1/2gt^2だ。こういうのはコンピュータを使っても仕方がないが、たとえば多体計算では厳密には解けない微分方程式が出てくるので、時刻Δtだけ変化したときの差分方程式を使ってシミュレーションするわけである。

 よく知らない人は、とりあえず「オイラー法」とかで検索すると一番原始的なシミュレーションがどんなものかが分かる。通常微分方程式は「ルンゲクッタ法」などのもっと精度よくしたもので計算するので、意欲ある読者はこちらも調べてほしい。

シミュレーションの種類

 星形成シミュレーションと言ってもいろいろある。まず、次元だけでも1次元、2次元、3次元のシミュレーションがある。

 一番わかりやすいのは3次元のシミュレーションだし、実際今回特にとりあげるのは3次元のシミュレーションだ。

 3次元のシミュレーションというのは文字通り、xyz空間を考えてシミュレーションをする。たとえば、粒子法(後述)を用いた多体計算では各粒子が少なくともx, y, z座標の位置という物理量を持っているわけだ。イメージそのもの。

 一方で、2次元や1次元のシミュレーションというのは星などが球対称な物理的特性を持っていると仮定したりして2次元に落とし込むシミュレーションだ。変数が少ない分計算量が減る。

 次に、格子法と粒子法の説明をする。

 格子法というのは空間を格子に分けて、格子が物理量を持つというモデルである。

 粒子法というのは流体などがある大きさの粒子を持つと仮定して粒子にxyz座標の物理量を持たせてやる(クラスとか構造体で)モデルである。

https://www.cradle.co.jp/media/column/a225より

星形成シミュレーション

 ここではGADGETを用いた多体 + SPHシミュレーションについて紹介する。

 GADGETというのはシミュレーションのためのオープンソースのコードだ。ググれば出てくる。

 SPHというのは粒子法の一種だと思ってもらえればよい。ただ、普通の多体計算と違うのは圧力や粘性など気体特有の性質を考慮できるということだ。このサイトがわかりやすい。


 さて、星形成だがご存じのとおり宇宙の質量のほとんどはダークマターであるからこれを無視することはできない。ダークマターとバリオンは一緒に計算してやる必要がある。

 ここでダークマターは質量以外の特徴を持たない。粘性などの面倒なものは考えなくてよい。よってN体計算を用いる。一方でバリオンはほぼ水素ガスなので粘性や圧力や化学反応などを考慮しなければならない。よって化学計算込みのSPH法を用いる。

大まかな流れは

1.初期条件を作る→2.計算する→3.詳しく計算したい領域を粒子分割する→4.計算する→5.解析する

という流れになる。

1.初期条件はMUSICというオープンソースのコードを使う。これを使うと、宇宙の初期密度ゆらぎなどを考慮した初期条件をバイナリ形式で作ってくれる。

2.これをGADGETにかけて何億年とかある程度高密度な領域ができるまで計算する。宇宙膨張を考慮すべき場合は考慮する。

3.さて、高密度な領域ができたらそこを詳しく計算してあげたい。そのために高密度領域だけ粒子分割をする。1つの粒子を何個かに均等に分割する。小さい高密度領域を調べたいが、一般的にM_Jeans/m_particle > 1000を満たさないといけないことが知られている。そのため、m_particleをなるべく小さくしたいのだ。(M_Jeansについては後述するが、天体の質量だと思っておけばいい)

4.さらに計算を続ける。粒子分割をすると計算コストが大きくなるので2での計算よりはかなり遅くなる。たとえば、私が今やっている計算はせいぜい200万年の計算で宇宙膨張は無視できる。

5.解析する。特にオープンソースのコードはないのでバイナリファイルを人が見られる形式にするために結構頑張らなければいけない。私は先人から頂いた。星の分裂の個数を調べたり質量を調べたりする。(質量の調べ方については次回)

冷却を止める

 放っておくと密度が無尽蔵に増大する。そうすると計算コストが無限に上がってしまう。そこで、どこかで密度上昇しないような工夫が必要になる。たとえば、星形成ではガス雲は水素冷却というプロセスによってエネルギーを外部に放出するが、それをある密度に達した時点で人為的にとめてやる。そうするとガス雲は断熱圧縮となり、密度上昇に歯止めがかかる。

 粒子を分割すればするほどM_Jeansが小さくできるので、密度を上げることができる。

 関係として、粒子分割↑分解できるM_Jeans↓上げられる最大密度↑となる。

Sink粒子

 粒子法では計算コストを小さくするため、ある程度近いた2つの粒子は合体させてしまうことが多い。このような粒子をsink粒子という。

次回予告

 質量の調べ方。ジーンズ〇〇について。

 

この記事が気に入ったらサポートをしてみませんか?