feat: add rss
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import math
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def calculation(what, rho_f, rho_s, g, a, mu):
|
||||
"""
|
||||
rho_f Medium density: kg/m³
|
||||
rho_s Object density: kg/m³
|
||||
g Gravity: m/s²
|
||||
a Radius: m
|
||||
mu Viscosity of medium: Pa·s
|
||||
"""
|
||||
U_ms = abs(2 * (rho_f - rho_s) * g * a**2 / (9 * mu))
|
||||
U_kmh = U_ms * 3.6
|
||||
U_cmyr = U_ms * 100 * 60 * 60 * 24 * 365.25
|
||||
Re = rho_f * U_ms * (2 * a) / mu
|
||||
|
||||
return [what, f"{mu:.1e}", f"{a:.2e}", f"{U_ms:.3e}", f"{U_kmh:.3e}", f"{U_cmyr:.3e}", f"{Re:.3e}"]
|
||||
|
||||
# Original objects
|
||||
objects = [
|
||||
calculation("Subducted slab", 3300, 3400, 9.81, 100e3, 1e21),
|
||||
calculation("Mantle plume", 3300, 3250, 9.81, 50e3, 1e20),
|
||||
calculation("Magma through crust", 2700, 2600, 9.81, 10, 1e3),
|
||||
calculation("Rain drop", 1.2, 1000, 9.81, 0.001, 1.8e5),
|
||||
calculation("Human fall", 1.2, 1000, 9.81, 0.5, 1.8e5)
|
||||
]
|
||||
|
||||
# _becca version with slightly different inputs
|
||||
objects_becca = [
|
||||
calculation("Subducted slab", 3300, 3350, 9.81, 120e3, 1.1e21),
|
||||
calculation("Mantle plume", 3300, 3280, 9.81, 55e3, 9e19),
|
||||
calculation("Magma through crust", 2700, 2620, 9.81, 12, 1.2e3),
|
||||
calculation("Rain drop", 1.2, 1020, 9.81, 0.002, 2e5),
|
||||
calculation("Human fall", 1.2, 980, 9.81, 0.6, 2e5)
|
||||
]
|
||||
|
||||
# Column labels
|
||||
columns = ["Object", "Viscosity (Pa·s)", "Radius (m)", "Velocity (m/s)", "Velocity (km/h)", "Velocity (cm/yr)", "Reynolds number"]
|
||||
|
||||
def create_table_and_plot(objects, filename_suffix, color):
|
||||
# Table
|
||||
fig, ax = plt.subplots(figsize=(12, 3))
|
||||
ax.axis('off') # Hide axes
|
||||
table = ax.table(cellText=objects, colLabels=columns, cellLoc='center', loc='center')
|
||||
table.auto_set_font_size(False)
|
||||
table.set_fontsize(10)
|
||||
table.auto_set_column_width(col=list(range(len(columns))))
|
||||
plt.tight_layout()
|
||||
plt.savefig(f"velocity_table_{filename_suffix}.png", dpi=300)
|
||||
plt.show()
|
||||
|
||||
# Bar plot (exactly like original)
|
||||
names = [obj[0] for obj in objects]
|
||||
U_ms = [obj[3] for obj in objects]
|
||||
U_kmh = [obj[4] for obj in objects]
|
||||
U_cmyr = [obj[5] for obj in objects]
|
||||
|
||||
plt.figure(figsize=(10,6))
|
||||
plt.bar(names, U_ms, color=color)
|
||||
plt.ylabel("Velocity (m/s)")
|
||||
plt.title(f"Comparison of Velocities")
|
||||
plt.xticks(rotation=45, ha='right')
|
||||
plt.tight_layout()
|
||||
plt.savefig(f"velocities_{filename_suffix}.png", dpi=300)
|
||||
plt.show()
|
||||
|
||||
# Generate outputs for both students
|
||||
create_table_and_plot(objects, "", 'skyblue')
|
||||
create_table_and_plot(objects_becca, "becca", 'green')
|
||||
Reference in New Issue
Block a user