Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Stabilité des corps flottants

Run this notebook in your web browser: Open in marimo

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.

  1. Attendez un moment jusqu’à ce que Python ait chargé dans le navigateur (cela ne prend plus que le premier départ).

  2. Cliquez sur le bouton d’exécution jaune (en bas à droite) pour exécuter toutes les cellules.

  3. 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.

  4. Vos modifications restent dans l’onglet du navigateur seulement. Pour les conserver, enregistrez le carnet dans le menu (-) > Exporter... > Python.

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 thickness

Calcul de la force de poids Fg=ρk⋅g⋅Vk=ρk⋅g⋅[bx⋅by⋅h−(h−w)⋅(bx−2w)⋅(by−2w)] F_g = \rho_k \cdot g \cdot V_k = \rho_k \cdot g \cdot \left[b_x \cdot b_y \cdot h - \left(h - w\right) \cdot \left(b_x - 2 w\right) \cdot \left(b_y - 2 w\right)\right] :

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é Vv=Fg/(ρf⋅g) V_v = F_g / \left(\rho_f \cdot g \right) :

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) d=Vv/(bx⋅by) d = V_v / \left(b_x \cdot b_y\right) et du franc-bord f=h−d f = h - d :

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 I0=bx3⋅by12I_0 = \frac{b_{\text{x}} ^3 \cdot b_{\text{y}} }{12} 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 hgh_g 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 hvh_v 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 hgvh_{gv} 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 hMh_M 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.