📡🧱 Radar on the AMR machine (C++ / WASM)

radar_os のレーダー往復を、amr_os の Berger–Oliger の機械に載せたものです。同じシュワルツシルト時空を 2 つの座標で書き、 それぞれが自分専用の格子階層を持って、同じ実験の時間を測ります。

ここで細かい格子が必要な理由は、パルスの居場所ではありません。穴の居場所です。 外向きの座標光速が地平面近くで潰れるので、鏡を地平面すぐ外(面積半径 2.05m)に置くと、 外向きパルスが空間的に押し潰されます:

外向き光速の式皿(50m)で鏡(2.05m)で潰れ必要なレベル
pg1 − √(2m/r)0.8000.0123 65.2 倍8
iso(1−u)/(1+u)³0.9600.0522 18.4 倍6

穴は動かないので箱も動きません ―― 単独の静止ブラックホールに対して実際の計算がやる 固定メッシュ細分化です。箱を動かす機械は amr_os の方にあります。
グラフの横軸は log₁₀(r − 2m) です。線形軸だと細分化領域が幅の 1% 未満になって何も見えないので。 この軸だと幾何的な入れ子がちょうど等間隔に並びます。

読み込み中…

正解は閉じた形で分かっています。往復時間は 2[(r₁−r₂) + 4m·ln((r₁−2m)/(r₂−2m))] = 123.367733137848、 そして各座標が自分の変数で積分した値がどちらもこれと 10⁻¹² で一致します (被積分関数は 1 つも共有していません)。

グリッドで解いた側も、両方 4 次で収束します。 subcycling も prolongation も restriction も全部入ったままで、基準解像度を上げると:

基準点数pg の誤差iso の誤差比(理論)
1501.23×10⁻²2.17×10⁻²
2501.02×10⁻²3.03×10⁻³7.2(7.7)
4001.63×10⁻³6.3(6.6)

そして、これがこのデモの本題です。 同じ物理・同じ観測量なのに、必要な格子階層が座標で違います ―― pg は 8 レベル、iso は 6 レベル。AMR が節約する仕事量も pg 63.8 倍 / iso 16.1 倍で、一様格子の必要点数は pg 24006 点に対し iso 5993 点。
つまりこの問題では c·t = const の座標の方が 4 倍安い。 ただしこれは法則ではありません ―― この鏡の位置・この観測量での話で、 鏡を 6m に動かせば差はほとんど消えます(ボタンで試せます)。 観測量は 12 桁同じままで、変わるのは計算の値段だけです。

「c·t=const は何も言わない。ただ計算がたまに楽になるだけ」 ―― その「たまに楽になる」を、 測れる数にしたのがこの画面です。

ソース: github.com/yomei-o/universe_cpp