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

78 lines
1.7 KiB
Python
Raw Normal View History

2021-03-03 15:06:50 +01:00
from pathlib import Path
2021-04-05 17:39:40 +02:00
from sys import argv
2021-03-03 15:06:50 +01:00
2021-01-21 16:45:31 +01:00
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()
2021-01-21 16:45:31 +01:00
2021-04-05 17:39:40 +02:00
dotsize = 1.5
2021-01-21 16:45:31 +01:00
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")
2021-02-03 21:37:42 +01:00
fig4, ax4 = create_figure()
ax4.set_xscale("log")
ax4.set_yscale("log")
2021-01-21 16:45:31 +01:00
2021-02-03 21:37:42 +01:00
ax4.set_xlabel(time_label)
ax4.set_ylabel("water loss")
sum = 0
2021-04-05 17:39:40 +02:00
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
2021-04-05 17:39:40 +02:00
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)
2021-04-05 17:39:40 +02:00
ax4.autoscale(enable=True, axis='y')
2021-03-03 15:06:50 +01:00
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)
2021-01-21 16:45:31 +01:00
plt.show()