[Exp2011]実際に計算してみる (円制限 3 体問題)

実習の準備

本日の実習でも前回と同様に, すでに途中まで出来上がっているプログラムに手を加えて作業を行います. 前回と同じ要領で情報実験機に以下のファイルをダウンロードしてください.

なお, 今回用いるプログラムには 2 次のルンゲクッタ法と 4 次のルンゲクッタ法が使われています.

実習 その 4

プログラムの穴埋め

ダウンロードした 3 つのファイルのうち, res-3body_4runge.f90 を開いてみましょう. 中には Fortran のプログラムが書かれた文がならんでいます. しかし前回と同様に, プログラムが正しく書かれていないところがあります. 前回と同じ要領で穴埋めしていきましょう.

このプログラムは 4 次のルンゲクッタ法で書かれていますが, 穴埋めが必要な箇所が全部で 16 行あります. レクチャー編の資料を参考にしながら全ての箇所に正しい式を書き込み, コンパイル時にエラーが出ないようにしてください. Fortran を書くうえで分からないことがあればFortran の簡単な解説を参考にしてください. コンパイルができると, 次のような表示が端末に出力されます.

$ gfortran res-3body_4runge.f90
$ ./a.out
 factor
 mu1=  0.99904640816924728      mu2=  9.53591830752668532E-004
  x1= -9.53591830752668532E-004  y1=   0.0000000000000000     
  x2=  0.99904640816924728       y2=   0.0000000000000000     

 initial condition
  x =  0.28754853342559489       y =   0.0000000000000000     
  vx=   0.0000000000000000       vy=   1.5700000000000001     

 Cj=   2.2731059913538694    

factor は中心星と惑星の質量比と位置を, initial condition は 3 つ目の天体 (粒子) の初期条件を表しています. ここでは, 中心星を太陽, 惑星を木星としています. 粒子の軌道は 4orbit.dat に, 中心星と惑星の位置は locate.datに, ヤコビ定数から定まる運動の禁止領域は forbidden.dat に出力されています.

前回と同様に Gnuplot を立ち上げて, 軌道を描いてみましょう.

$ gnuplot
gnuplot> set size square
gnuplot> plot "forbidden.dat", "4orbit.dat" w l, "locate.dat" pt 7 ps 2

初期条件について

  • 天体の質量

    中心星と惑星の質量は次のように与えられています.

    !--中心星と惑星の質量比を求める-----------------------------------
     m1 = 1.9891d33
     m2 = 1.8986d30
    
     mu = m2/(m1+m2)
     mu1 = 1.0d0-mu
     mu2 = mu

    mu1 と mu2 が中心星と惑星の質量比を表しており, ここでは太陽と木星の関係になっています. 円制限三体問題では, 中心星と惑星に比べて粒子の質量は無視できるほど小さいとしているので, 条件には入ってきません.

  • 粒子の初期位置と初速度

    粒子の初期位置と初速度は次のように与えられています.

    !--初期条件---------------------------------------------------
     !--粒子の初期位置および初速度を与える----------------------
      x = 1.4960d0 / 5.2026d0
      y = 0.0d0
    
      vx = 0.0d0
      vy = 1.57d0

    ここでは, 粒子がほぼ地球軌道をとるように初期条件を与えています.

※ どうしてもコンパイルがうまくいかないとき, もしくは軌道がうまく描けないときは, res-3body_4runge_sol.f90 を使ってください.

実習 その 5

計算精度の比較

これまで皆さんに扱っていただいていた res-3body_4runge.f90 には, 4 次のルンゲクッタ法が使われています. ここでは, 前回の実習で使われていた 2 次のルンゲクッタ法で計算したときと比較をしてみましょう. それぞれコンパイルをするのですが, 初期条件は同じにして, 終了する時間を

maxrevo = 2.0d0*PI * 1.0d2

として計算を行ってください. これは, 惑星が中心星の周りを100回公転する時間に相当します. res-3body_2runge.f90を実行した結果できるファイルは 2runge.dat になります. 同じように Gnuplot で軌道を描くとどうなるでしょうか.

また, ヤコビ定数が本当に保存されているかを見て, それぞれの計算精度を確認してみましょう. 出力されるファイル名は, 2 次は 2jacobi.dat, 4 次は 4jacobi.dat です.

gnuplot>plot "2jacobi.dat", "4jacobi.dat"

として, プロットしてみましょう. また,

gnuplot>set log y
gnuplot>plot "2jacobi.dat" u 1:3,"4jacobi.dat" u 1:3

として, 誤差をみてみましょう.

解析解と数値解

レクチャーの中で, 回転系で粒子が静止しているような解析解であるラグランジュ平衡点の話をしました. ここでは, 数値計算を行って本当に静止しているか確認してみましょう. 中心星−惑星−粒子の配置が正三角形で, 速度がゼロであるように初期条件を与えて計算を行ってみてください.

粒子が静止している場合は 1 点だけしかプロットされないので, 線ではなく点でプロットしましょう.

$ gnuplot
gnuplot> set size square
gnuplot> plot "forbidden.dat", "4orbit.dat", "locate.dat" pt 7 ps 2

実習 その 6

初期条件の変更

  • 中心星と惑星の質量を変化させるとどうなるでしょうか.
  • 粒子の初期位置や初速度を変化させるとどうなるでしょうか.

円制限 3 体問題では 3 つ目の天体 (粒子) の質量は変えませんが, 中心星と惑星の質量や粒子の初期条件を変えることで様々な軌道が描かれます. パラメータを変えて軌道を 3 種類以上描き, それぞれの軌道がどのようなものか考えてみましょう. 必要に応じて, 計算時間 maxrevo の値も変えてください.

さらに, この結果についてレポートにまとめ, 7/01(金) に出題した「課題 その1」と一緒に提出してください. 課題その 2 の詳細はこちらです.

本日の実習は以上です. お疲れ様でした.

参考資料

スケジュール表・各回資料 (07/15)

Last modified:2011/07/14 16:51:31
Keyword(s):
References:[[Exp2011]スケジュール表・各回資料]