experiment-t/energy.py
2025-11-20 15:37:10 +00:00

56 lines
1.6 KiB
Python

import math
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--density", "-d")
args=parser.parse_args()
columns = ["ID", "idx", "Mass", "Radius", "X", "Y", "Z", "vX", "vY", "vZ", "sX", "sY", "sZ", "Colour"]
Kenergies = []
Genergies = []
energies = []
time = []
for i in range (1,401):
num = str(i).rjust(5, '0')
file = "BTs/"+str(args.density)+"/boom."+num+".bt"
data = pd.read_csv(file, sep=' ', names=columns)
data["X"] = data["X"]*1.5e8
data["Y"] = data["Y"]*1.5e8
data["Z"] = data["Z"]*1.5e8
data["X2"] = data["X"]**2
data["Y2"] = data["Y"]**2
data["Z2"] = data["Z"]**2
data["distance2"] = data["X2"]+data["Y2"]+data["Z2"]
data["distance"] = data["distance2"]**0.5
data["vX"] = data["vX"]*29880
data["vY"] = data["vY"]*29880
data["vZ"] = data["vZ"]*29880
data["vX2"] = data["vX"]**2
data["vY2"] = data["vY"]**2
data["vZ2"] = data["vZ"]**2
data["Mass"] = data["Mass"]*1.989e30
data["vel2"] = data["X"]+data["Y"]+data["Z"]**2
data["vel"] = data["distance2"]**0.5
data["KE"] = 0.5*data["Mass"]*data["vel2"]
data["GPE"] = (6.67e-11*1.89e27*data["Mass"])/(data["distance"])
data["Energy"] = data["KE"]+data["GPE"]
energy = data["Energy"].sum()
energies.append(energy)
time.append(i)
KE = data["KE"].sum()
Kenergies.append(KE)
GPE = data["GPE"].sum()
Genergies.append(GPE)
ax=plt.axes()
# ax.set_yscale("log")
ax.plot(time, Kenergies, label="Kinetic")
ax.plot(time, Genergies, label="Gravitational")
ax.plot(time, energies, label="Total")
ax.legend()
plt.show()