feat: add rss

This commit is contained in:
2026-02-27 17:18:08 +01:00
parent a0b45dd36b
commit 00ce772efb
5 changed files with 165 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
# Lab 2
Joaquin Gottlebe Mtrklnr.: 829101
![](velocities_.png)
![](velocity_table_.png)
As expected the Human fall and rain drop has the fastest velocity followed by magma, mantle and slab.
The model asumed a sphere as the object which is a simplification and doesnt fit complex shapes like a Human or the Magma which is more a cilinder.
This is also noticable in the Raynolds numbers which are >1 for rain drop and human. Which indicates that the model is not suitable for these.
For the others its under 1 so could be passable. But still a simplification.
+69
View File
@@ -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')