Run this notebook in your web browser:
Le lien ouvre schwimmstabilitaet.py en tant que portable interactif marimo qui fonctionne entièrement dans votre navigateur Web, sans rien installer. Comme le cahier Jupyter, le cahier marimo est la version originale Allemand de cette page.
Attendez un moment jusqu’à ce que Python ait chargé dans le navigateur (cela ne prend plus que le premier départ).
Cliquez sur le bouton d’exécution jaune (en bas à droite) pour exécuter toutes les cellules.
Modifier et ré-exécuter n’importe quelle cellule de code pour expérimenter: marimo met automatiquement à jour toutes les cellules qui en dépendent.
Vos modifications restent dans l’onglet du navigateur seulement. Pour les conserver, enregistrez le carnet dans le menu (-) > Exporter... > Python.
Run this marimo notebook locally
Pour lancer schwimmstabilitaet.py sur votre propre machine, demandez-le au marimo
Cloner le dépôt :
git clone https://github.com/sschwindt/marimo-python-course.gitCréer et activer l’environnement de cours :
conda env create -f environment.ymletconda activate hy-marimoDans le dossier du dépôt, démarrez le carnet avec
marimo edit schwimmstabilitaet.py
Run this notebook with Jupyter
This page is also available as the Jupyter notebook schwimmstabilitaet.ipynb in the jupyter, or install Python and JupyterLab locally to run schwimmstabilitaet.ipynb on your own machine. The Jupyter notebook is the original German version of this page.
Freeboard et brouillon¶
Définition des paramètres:
rho_k = 870. # kg / m3 - wood density
rho_f = 1000. # kg / m3 - water density
g = 9.81 # N / kg - gravitational acceleration
b_x = 1.5 # m - box width
b_y = 2.0 # m - box length
h = 1.5 # m - box height
w = 0.01 # m - wall thicknessCalcul de la force de poids :
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'Body volume V_k = {V_k:.2f} m3\nWeight force: {F_g:.2f} N')Body volume V_k = 0.13 m3
Weight force: 1141.12 N
Calcul du volume déplacé :
V_v = F_g / (rho_f * g)
print(f'Displaced volume: {V_v:.2f} m3')Displaced volume: 0.12 m3
Calcul du projet (profondeur d’immersion) et du franc-bord :
d = V_v / b_x * b_y
f = h - d
print(f'Draft d = {d:.2f} m\nFreeboard f = {f:.2f} m')
if f >= 0:
print("The body floats.")
if f < 0:
print("The body sinks.")Draft d = 0.16 m
Freeboard f = 1.34 m
The body floats.
Stabilité flottante¶
Deuxième moment de la zone¶
Calcul du deuxième moment de la zone par rapport à 0:
I_0 = b_x**3 * b_y / 12
print(f'Second moment of area I_0 = {I_0:.2f} m4')Second moment of area I_0 = 0.56 m4
Elévations¶
Hauteur du centre de gravité:
V_k_side_walls = 2 * (b_y - 2 * w) * (h - w) * w
V_k_front_back = 2 * b_x * (h - w) * w
V_k_bottom = b_x * b_y * w
h_g = ((V_k_side_walls + V_k_front_back) * (w + h / 2) + V_k_bottom * w / 2) / V_k
print(f'h_g = {h_g:.2f} m')h_g = 0.59 m
Hauteur du centre de flottabilité:
h_v = d / 2
print(f'Height of the center of buoyancy h_v = {h_v:.2f} m')Height of the center of buoyancy h_v = 0.08 m
Différence de hauteur entre le centre de gravité et le centre de flottabilité:
h_gv = h_g - h_v
print(f'Height difference h_gv = {h_gv:.2f} m')Height difference h_gv = 0.51 m
Hauteur métacentrique et stabilité flottante :
h_M = I_0 / V_v - h_gv
print(f'Metacentric height h_M = {h_M:.2f} m')
if h_M > 0:
print("Stable equilibrium.")
elif h_M < 0:
print("Unstable equilibrium.")
else:
print("Neutral equilibrium.")Metacentric height h_M = 4.32 m
Stable equilibrium.