Dieses Notebook im Webbrowser ausführen:
Der Link öffnet schwimmstabilitaet.py als interaktives marimo-Notebook, das vollständig im Webbrowser läuft, ohne dass etwas installiert werden muss.
Warten Sie einen Moment, bis Python im Browser geladen ist (das dauert nur beim ersten Start länger).
Klicken Sie auf den gelben Ausführen-Button (▶︎, unten rechts), um alle Zellen auszuführen.
Bearbeiten Sie beliebige Code-Zellen und führen Sie sie erneut aus: marimo aktualisiert automatisch alle davon abhängigen Zellen.
Ihre Änderungen bleiben nur im Browser-Tab erhalten. Um sie zu behalten, speichern Sie das Notebook über das Menü (☰, oben rechts) > Export… > Python.
Dieses marimo-Notebook lokal ausführen
Um schwimmstabilitaet.py auf dem eigenen Rechner auszuführen, holen Sie es aus dem Repository marimo
Klonen Sie das Repository:
git clone https://github.com/sschwindt/marimo-python-course.gitErstellen und aktivieren Sie die Kursumgebung:
conda env create -f environment.ymlundconda activate hy-marimoStarten Sie das Notebook im Repository-Ordner mit
marimo edit schwimmstabilitaet.py
Dieses Notebook mit Jupyter ausführen
Diese Seite gibt es auch als Jupyter-Notebook schwimmstabilitaet.ipynb im Repository jupyter, oder installieren Sie Python und JupyterLab lokal, um schwimmstabilitaet.ipynb auf dem eigenen Rechner auszuführen.
Freibord und Eintauchtiefe¶
Parameterdefinitionen:
rho_k = 870. # kg / m3 - Holzdichte
rho_f = 1000. # kg / m3 - Wasserdichte
g = 9.81 # N / kg - Gravitationskonstante
b_x = 1.5 # m - Kastenbreite
b_y = 2.0 # m - Kastenlänge
h = 1.5 # m - Kastenhöhe
w = 0.01 # m - WandstärkeBerechnung der Gewichtskraft :
V_k = b_x * b_y * h - (b_x - 2 * w) * (b_y - 2 * w) * (h - w)
F_g = V_k * rho_k * g
print(f'Koerpervolumen V_k = {V_k:.2f} m3\nGewichtskraft: {F_g:.2f} N')Koerpervolumen V_k = 0.13 m3
Gewichtskraft: 1141.12 N
Berechnung des Verdrängungsvolumens :
V_v = F_g / (rho_f * g)
print(f'Verdraengungsvolumen: {V_v:.2f} m3')Verdraengungsvolumen: 0.12 m3
Berechnung der Eintauchtiefe und des Freibords :
d = V_v / b_x * b_y
f = h - d
print(f'Eintauchtiefe d = {d:.2f} m\nFreibord f = {f:.2f} m')
if f >= 0:
print("Schwimmender Körper")
if f < 0:
print("Der Körper geht unter.")Eintauchtiefe d = 0.16 m
Freibord f = 1.34 m
Schwimmender Körper
Schwimmstabilität¶
Flächenträgheitsmoment¶
Berechnung des Flächenträgheitsmoments bezüglich 0:
I_0 = b_x**3 * b_y / 12
print(f'Flaechentraegheitsmoment I_0 = {I_0:.2f} m4')Flaechentraegheitsmoment I_0 = 0.56 m4
Höhenlagen¶
Höhe des Gewichtsschwerpunkts:
V_k_lat_waende = 2 * (b_y - 2 * w) * (h - w) * w
V_k_front_back = 2 * b_x * (h - w) * w
V_k_boden = b_x * b_y * w
h_g = ((V_k_lat_waende + V_k_front_back) * (w + h / 2) + V_k_boden * w / 2) / V_k
print(f'h_g = {h_g:.2f} m')h_g = 0.59 m
Höhe des Verdrängungsschwerpunkts:
h_v = d / 2
print(f'Hoehe des Verdraengungsschwerpunkts h_v = {h_v:.2f} m')Hoehe des Verdraengungsschwerpunkts h_v = 0.08 m
Höhendifferenz zwischen Gewichtsschwerpunkt und Verdrängungsschwerpunkt:
h_gv = h_g - h_v
print(f'Hoehendifferenz h_gv = {h_gv:.2f} m')Hoehendifferenz h_gv = 0.51 m
Höhe des Metazentrums und Schwimmstabilität:
h_M = I_0 / V_v - h_gv
print(f'Hoehe des Metazentrums h_M = {h_M:.2f} m')
if h_M > 0:
print("Stabile Lage.")
elif h_M < 0:
print("Labile Lage.")
else:
print("Indifferente Lage.")Hoehe des Metazentrums h_M = 4.32 m
Stabile Lage.