From 8280a54dbf2075e1d2b131cd7c69a7fb6dfec007 Mon Sep 17 00:00:00 2001 From: Ceres Date: Thu, 20 Nov 2025 14:37:57 +0000 Subject: [PATCH] Initial commit --- .gitignore | 1 + distance.py | 35 +++++++++++++++++++++++++++ distanceVDensity.py | 49 +++++++++++++++++++++++++++++++++++++ energy.py | 53 +++++++++++++++++++++++++++++++++++++++++ getDistance.py | 30 +++++++++++++++++++++++ position.py | 51 +++++++++++++++++++++++++++++++++++++++ seperation.py | 35 +++++++++++++++++++++++++++ seperationDerivative.py | 40 +++++++++++++++++++++++++++++++ 8 files changed, 294 insertions(+) create mode 100644 .gitignore create mode 100644 distance.py create mode 100644 distanceVDensity.py create mode 100644 energy.py create mode 100644 getDistance.py create mode 100644 position.py create mode 100644 seperation.py create mode 100644 seperationDerivative.py 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()