Python: Stokes-Widerstand mit UliEngineering berechnen
Du kannst leicht die Widerstandskraft auf eine Kugel, die sich durch ein viskoses Fluid bewegt, mit dem Stokesschen Gesetz und der UliEngineering-Python-Bibliothek berechnen:
from UliEngineering.Physics.Viscosity import stokes_drag
from UliEngineering.EngineerIO import *
# Widerstandskraft auf eine 10 µm Kugel in Wasser berechnen
radius = 10e-6 # 10 µm
velocity = 0.01 # 1 cm/s
viscosity = 0.001 # Pa·s (Wasser)
F = stokes_drag(radius, velocity, viscosity)
print(f"Widerstandskraft: {format_value(F, 'N')}")
# Widerstandskraft auf eine 1 µm Kugel in Wasser berechnen
radius = 1e-6
F = stokes_drag(radius, velocity, viscosity)
print(f"Widerstandskraft (1 µm Kugel): {format_value(F, 'N')}")
# Widerstandskraft in einem viskoseren Fluid (Glycerin) berechnen
viscosity = 1.412 # Pa·s (Glycerin bei 20°C)
F = stokes_drag(10e-6, velocity, viscosity)
print(f"Widerstandskraft in Glycerin: {format_value(F, 'N')}")Beispielausgabe
Widerstandskraft: 1.88 pN
Widerstandskraft (1 µm Kugel): 188 fN
Widerstandskraft in Glycerin: 2.66 nNDas Stokessche Gesetz ist gegeben durch:
$$ F = 6 \pi \eta r v $$wobei $F$ die Widerstandskraft, $\eta$ die dynamische Viskosität, $r$ der Kugelradius und $v$ die Geschwindigkeit ist.
Das Stokessche Gesetz beschreibt die Widerstandskraft auf eine Kugel, die sich bei niedrigen Reynolds-Zahlen durch ein viskoses Fluid bewegt (typischerweise Re < 1). Dieses Regime wird Kriechströmung oder Stokes-Strömung genannt, wobei Trägheitseffekte gegenüber viskosen Effekten vernachlässigbar sind. Die lineare Beziehung zu Geschwindigkeit und Radius macht dieses Gesetz besonders nützlich für die Analyse kleiner Partikel in Fluiden.
Der obige Plot zeigt, wie die Widerstandskraft mit dem Kugelradius bei einer festen Geschwindigkeit von 1 cm/s in einem wasserähnlichen Fluid (η = 1 mPa·s) variiert. Beachte den linearen Anstieg der Widerstandskraft mit dem Radius, wie vom Stokesschen Gesetz vorhergesagt.
Dieses Gesetz ist grundlegend in vielen Anwendungen, einschließlich Sedimentationsanalyse, Partikelgrößenbestimmung, Mikrofluidik und dem Verständnis der Bewegung biologischer Zellen und Nanopartikel in Fluidumgebungen.
Verwandte Beiträge
- How to compute Reynolds number in Python using UliEngineering
- How to compute kinematic viscosity in Python using UliEngineering
- How to compute Bingham stress in Python using UliEngineering
Plot-Erzeugungsskript
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import numpy as np
import sys
sys.path.insert(0, '/home/uli/dev/UliEngineering')
from UliEngineering.Physics.Viscosity import stokes_drag
# Kugelradiusbereich für Plotting
r = np.linspace(1e-6, 1e-4, 100) # 1 µm bis 100 µm
# Plot erstellen
plt.figure(figsize=(10, 6))
# Feste Parameter
velocity = 0.01 # m/s
viscosity = 0.001 # Pa·s (wasserähnlich)
# Widerstandskraft berechnen
F = stokes_drag(r, velocity, viscosity) * 1e12 # In pN umrechnen
plt.plot(r * 1e6, F, color='blue', linewidth=2)
plt.xlabel('Kugelradius (µm)', fontsize=12)
plt.ylabel('Widerstandskraft (pN)', fontsize=12)
plt.title('Stokes-Widerstand vs Kugelradius (v = 1 cm/s, η = 1 mPa·s)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('stokes_drag_plot.svg', format='svg', dpi=300)
print("Plot gespeichert als stokes_drag_plot.svg")