Як обчислити дифузію Стокса-Ейнштейна у Python за допомогою UliEngineering

Ви можете легко обчислити коефіцієнт дифузії за рівнянням Стокса-Ейнштейна за допомогою бібліотеки Python UliEngineering:

stokes_einstein_diffusion.py
from UliEngineering.Physics import stokes_einstein_diffusion
from UliEngineering.EngineerIO import *

# Обчислити коефіцієнт дифузії для частинки у воді при 25°C
D = stokes_einstein_diffusion("1nm", "25°C", "0.89mPa·s")
print(f"Коефіцієнт дифузії (1нм, 25°C, вода): {format_value(D, 'м²/с')}")

# Обчислити коефіцієнт дифузії для більшої частинки
D = stokes_einstein_diffusion("5nm", "25°C", "0.89mPa·s")
print(f"Коефіцієнт дифузії (5нм, 25°C, вода): {format_value(D, 'м²/с')}")

Приклад виводу

stokes_einstein_diffusion_output.txt
Коефіцієнт дифузії (1нм, 25°C, вода): 4,88e-10 м²/с
Коефіцієнт дифузії (5нм, 25°C, вода): 9,76e-11 м²/с

Рівняння Стокса-Ейнштейна пов’язує коефіцієнт дифузії сферичної частинки з її розміром, температурою та в’язкістю рідини. Це є фундаментальним для розуміння броунівського руху, перенесення частинок у рідинах та проєктування процесів розділення в хімії та біофізиці.

stokes einstein plot.svg

Коефіцієнт дифузії обчислюється за формулою: $D = \frac{k_B T}{6 \pi \eta r}$, де $D$ — коефіцієнт дифузії, $k_B$ — стала Больцмана, $T$ — абсолютна температура в кельвінах, $\eta$ — динамічна в’язкість, а $r$ — радіус частинки. Ця залежність показує, що дифузія зростає з температурою та зменшується зі збільшенням розміру частинки та в’язкості.

Графік вище показує, як коефіцієнт дифузії змінюється залежно від радіуса частинки для частинок у воді при 25°C. Зверніть увагу на обернену залежність: менші частинки дифундують набагато швидше, ніж більші, саме тому нанорозмірні частинки виявляють швидкий броунівський рух.

Пов’язані публікації


Скрипт генерації графіка

plot_stokes_einstein.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.Chemistry.StokesEinstein import stokes_einstein_diffusion

# Діапазон радіусів частинок для побудови графіка
r = np.linspace(1e-9, 10e-9, 100)  # 1 нм до 10 нм

# Створити графік
plt.figure(figsize=(10, 6))

# Фіксовані параметри
temperature = 298.15  # 25°C у кельвінах
viscosity = 0.89e-3  # Па·с (вода при 25°C)

# Обчислити коефіцієнт дифузії
D = stokes_einstein_diffusion(r, temperature, viscosity)

plt.plot(r * 1e9, D * 1e12, color='blue', linewidth=2)
plt.xlabel('Радіус частинки (нм)', fontsize=12)
plt.ylabel('Коефіцієнт дифузії (×10⁻¹² м²/с)', fontsize=12)
plt.title('Дифузія Стокса-Ейнштейна залежно від радіуса частинки (25°C, вода)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('stokes_einstein_plot.svg', format='svg', dpi=300)

Дивіться схожі статті за категоріями: Physics, Chemistry, Python