如何使用 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)中,阻力随球体半径的变化情况。可以看到阻力随半径线性增加,与斯托克斯定律的预测一致。

该定律在许多应用中都是基础,包括沉降分析、颗粒粒径测量、微流控,以及理解生物细胞和纳米颗粒在流体环境中的运动。

相关文章


绘图生成脚本

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")

Check out similar posts by category: Physics, Python