如何使用 UliEngineering 在 Python 中计算斯托克斯阻力
你可以使用 UliEngineering Python 库,借助斯托克斯定律轻松计算球体在粘性流体中运动时所受的阻力:
stokes_drag.py
from UliEngineering.Physics.Viscosity import stokes_drag
from UliEngineering.EngineerIO import *
# 计算水中 10 µm 球体所受的阻力
radius = 10e-6 # 10 µm
velocity = 0.01 # 1 cm/s
viscosity = 0.001 # Pa·s(水)
F = stokes_drag(radius, velocity, viscosity)
print(f"Drag force: {format_value(F, 'N')}")
# 计算水中 1 µm 球体所受的阻力
radius = 1e-6
F = stokes_drag(radius, velocity, viscosity)
print(f"Drag force (1 µm sphere): {format_value(F, 'N')}")
# 计算在更高粘度流体(甘油)中的阻力
viscosity = 1.412 # Pa·s(20°C 时的甘油)
F = stokes_drag(10e-6, velocity, viscosity)
print(f"Drag force in glycerol: {format_value(F, 'N')}")示例输出
stokes_drag_output.txt
Drag force: 1.88 pN
Drag force (1 µm sphere): 188 fN
Drag force in glycerol: 2.66 nN斯托克斯定律的表达式为:
$$ F = 6 \pi \eta r v $$其中 $F$ 是阻力,$\eta$ 是动力粘度,$r$ 是球体半径,$v$ 是速度。
斯托克斯定律描述了球体在低雷诺数(通常 Re < 1)下在粘性流体中运动时所受的阻力。这种状态被称为蠕动流或斯托克斯流,此时惯性效应远小于粘性效应。由于阻力与速度和半径呈线性关系,该定律特别适用于分析流体中的小颗粒。
上图展示了在固定速度 1 cm/s、类似水的流体(η = 1 mPa·s)中,阻力随球体半径的变化情况。可以看到阻力随半径线性增加,与斯托克斯定律的预测一致。
该定律在许多应用中都是基础,包括沉降分析、颗粒粒径测量、微流控,以及理解生物细胞和纳米颗粒在流体环境中的运动。
相关文章
- 如何使用 UliEngineering 在 Python 中计算雷诺数
- 如何使用 UliEngineering 在 Python 中计算运动粘度
- 如何使用 UliEngineering 在 Python 中计算 Bingham 应力
绘图生成脚本
plot_stokes_drag.py
#!/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
# 用于绘图的球体半径范围
r = np.linspace(1e-6, 1e-4, 100) # 1 µm 到 100 µm
# 创建图形
plt.figure(figsize=(10, 6))
# 固定参数
velocity = 0.01 # m/s
viscosity = 0.001 # Pa·s(类似水)
# 计算阻力
F = stokes_drag(r, velocity, viscosity) * 1e12 # 转换为 pN
plt.plot(r * 1e6, F, color='blue', linewidth=2)
plt.xlabel('Sphere Radius (µm)', fontsize=12)
plt.ylabel('Drag Force (pN)', fontsize=12)
plt.title('Stokes Drag vs Sphere Radius (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 saved to stokes_drag_plot.svg")If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow