1
0
Fork 0
mirror of https://github.com/Findus23/rebound-collisions.git synced 2024-09-19 15:53:48 +02:00
rebound-collisions/collisionstats.py

77 lines
1.7 KiB
Python

from pathlib import Path
from sys import argv
from matplotlib import pyplot as plt
from scipy.constants import mega
from extradata import ExtraData, CollisionMeta
from utils import filename_from_argv, create_figure, plot_settings
plot_settings()
dotsize = 1.5
angle_label = "Impact angle (deg)"
v_label = "v/v_esc"
time_label = "Time (Myr)"
fig1, ax1 = create_figure()
ax1.set_xlabel(angle_label)
ax1.set_ylabel(v_label)
fig2, ax2 = create_figure()
ax2.set_xlabel(time_label)
ax2.set_ylabel(angle_label)
ax2.set_xscale("log")
fig3, ax3 = create_figure()
ax3.set_xlabel(time_label)
ax3.set_ylabel(v_label)
ax3.set_xscale("log")
fig4, ax4 = create_figure()
ax4.set_xscale("log")
ax4.set_yscale("log")
ax4.set_xlabel(time_label)
ax4.set_ylabel("water loss")
sum = 0
for file in argv[1:]:
fn = filename_from_argv(file)
print(fn)
try:
ed = ExtraData.load(fn)
except:
print("skipping")
continue
vs = []
angles = []
water_loss = []
times = []
for collision in ed.tree.get_tree().values():
sum += 1
meta: CollisionMeta = collision["meta"]
vs.append(meta.input.velocity_esc)
angles.append(meta.input.alpha)
loss = 1 - meta.water_retention
if loss == 0:
loss = 1e-5 # TODO: proper fix for log-log
water_loss.append(loss)
times.append(meta.time / mega)
ax1.scatter(angles, vs, s=dotsize)
ax2.scatter(times, angles, s=dotsize)
ax3.scatter(times, vs, s=dotsize)
ax4.scatter(times, water_loss, s=dotsize)
ax4.autoscale(enable=True, axis='y')
for i, fig in enumerate([fig1, fig2, fig3, fig4]):
fig.tight_layout()
fig.savefig(Path("plots") / fn.with_suffix(f".collision{i}.pdf").name, transparent=True)
print(sum)
plt.show()