commit 8280a54dbf2075e1d2b131cd7c69a7fb6dfec007 Author: Ceres Date: Thu Nov 20 14:37:57 2025 +0000 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f208554 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +BTs diff --git a/distance.py b/distance.py new file mode 100644 index 0000000..b2211fe --- /dev/null +++ b/distance.py @@ -0,0 +1,35 @@ +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"] +distances = [] +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) + xPosAU = data["X"].mean() + xPos = xPosAU*1.5e8 + yPosAU = data["Y"].mean() + yPos = xPosAU*1.5e8 + zPosAU = data["Z"].mean() + zPos = xPosAU*1.5e8 + distance = math.sqrt((xPos**2)+(yPos**2)+(zPos**2)) + time.append(i) + distances.append(distance) + +print(min(distances)) + +ax=plt.axes() +# ax.set_yscale("log") +ax.plot(time, distances) +plt.show() diff --git a/distanceVDensity.py b/distanceVDensity.py new file mode 100644 index 0000000..918ee85 --- /dev/null +++ b/distanceVDensity.py @@ -0,0 +1,49 @@ +import math +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt + +columns = ["ID", "idx", "Mass", "Radius", "X", "Y", "Z", "vX", "vY", "vZ", "sX", "sY", "sZ", "Colour"] +deviations = [] +distances = [] +time = [] +densities = ["300","350","400","450","500","550","600","650","700"] +breakUpDistances = [] + +for density in densities: + for i in range (1,320): + num = str(i).rjust(5, '0') + file = "BTs/High-Res-"+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 + deviation = data["distance"].std() + distance = data["distance"].mean() + time.append(i) + deviations.append(deviation) + distances.append(distance) + + + del time[-1] + del time[-1] + del distances[-1] + del distances[-1] + firstDeriv=np.diff(deviations) + secondDeriv=np.diff(firstDeriv) + + max_index=np.argmax(secondDeriv) + + print(distances[max_index]) + breakUpDistances.append(distances[max_index]) + +ax=plt.axes() +# ax.set_yscale("log") +ax.plot(densities, breakUpDistances) +plt.show() + diff --git a/energy.py b/energy.py new file mode 100644 index 0000000..9dfbf71 --- /dev/null +++ b/energy.py @@ -0,0 +1,53 @@ +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 = [] +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() + 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.legend() +plt.show() diff --git a/getDistance.py b/getDistance.py new file mode 100644 index 0000000..6000d46 --- /dev/null +++ b/getDistance.py @@ -0,0 +1,30 @@ +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") +parser.add_argument("--frame", "-f") + +args=parser.parse_args() + +columns = ["ID", "idx", "Mass", "Radius", "X", "Y", "Z", "vX", "vY", "vZ", "sX", "sY", "sZ", "Colour"] + + +num = str(args.frame).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 + +distance = data["distance"].mean() + +print(distance) diff --git a/position.py b/position.py new file mode 100644 index 0000000..bf0e6ca --- /dev/null +++ b/position.py @@ -0,0 +1,51 @@ +import math +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +from mpl_toolkits import mplot3d +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"] +xposs = [] +yposs = [] +zposs = [] + +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 + xpos = data["X"].mean() + ypos = data["Y"].mean() + zpos = data["Z"].mean() + xposs.append(xpos) + yposs.append(ypos) + zposs.append(zpos) + +theta = np.linspace(0, 2 * np.pi, 100) +phi = np.linspace(0, np.pi, 50) +theta, phi = np.meshgrid(theta, phi) +r = 69911 + +x = r * np.sin(phi) * np.cos(theta) +y = r * np.sin(phi) * np.sin(theta) +z = r * np.cos(phi) + + +ax=plt.axes(projection='3d') +ax.set_box_aspect([1, 1, 1]) +max_range = 0.5*np.max([np.max(np.abs(xposs)), np.max(np.abs(yposs)), np.max(np.abs(zposs))]) +ax.set_xlim(-max_range, max_range) +ax.set_ylim(-max_range, max_range) +ax.set_zlim(-max_range, max_range) +ax.plot(xposs, yposs, zposs) +ax.plot_surface(x, y, z, alpha=0.3) +plt.show() + diff --git a/seperation.py b/seperation.py new file mode 100644 index 0000000..c541c3f --- /dev/null +++ b/seperation.py @@ -0,0 +1,35 @@ +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"] +deviations = [] +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 + deviation = data["distance"].std() + time.append(i) + deviations.append(deviation) + +ax=plt.axes() +# ax.set_yscale("log") +ax.plot(time, deviations) +plt.show() diff --git a/seperationDerivative.py b/seperationDerivative.py new file mode 100644 index 0000000..fbe03d1 --- /dev/null +++ b/seperationDerivative.py @@ -0,0 +1,40 @@ +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"] +deviations = [] +time = [] + +for i in range (1,401): + num = str(i).rjust(5, '0') + file = "BTs/"+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 + deviation = data["distance"].std() + time.append(i) + deviations.append(deviation) + +del time[-1] +del time[-1] +firstDeriv=np.diff(deviations) +secondDeriv=np.diff(firstDeriv) + +ax=plt.axes() +# ax.set_yscale("log") +ax.plot(time, secondDeriv) +plt.show()