Jak vypočítat Stokes-Einsteinovu difuzi v Pythonu pomocí UliEngineering
Můžete snadno vypočítat difuzní koeficient pomocí Stokes-Einsteinovy rovnice s knihovnou UliEngineering v Pythonu:
from UliEngineering.Physics import stokes_einstein_diffusion
from UliEngineering.EngineerIO import *
# Výpočet difuzního koeficientu pro částici ve vodě při 25°C
D = stokes_einstein_diffusion("1nm", "25°C", "0.89mPa·s")
print(f"Diffusion coefficient (1nm, 25°C, water): {format_value(D, 'm²/s')}")
# Výpočet difuzního koeficientu pro větší částici
D = stokes_einstein_diffusion("5nm", "25°C", "0.89mPa·s")
print(f"Diffusion coefficient (5nm, 25°C, water): {format_value(D, 'm²/s')}")Příklad výstupu
Diffusion coefficient (1nm, 25°C, water): 4.88e-10 m²/s
Diffusion coefficient (5nm, 25°C, water): 9.76e-11 m²/sStokes-Einsteinova rovnice vztahuje difuzní koeficient kulové částice k její velikosti, teplotě a viskozitě kapaliny. To je základní pro pochopení Brownova pohybu, transportu částic v kapalinách a návrh separačních procesů v chemii a biofyzice.
Difuzní koeficient se počítá pomocí vzorce: $D = \frac{k_B T}{6 \pi \eta r}$, kde $D$ je difuzní koeficient, $k_B$ je Boltzmannova konstanta, $T$ je absolutní teplota v Kelvinech, $\eta$ je dynamická viskozita a $r$ je poloměr částice. Vztah ukazuje, že difuze roste s teplotou a klesá s velikostí částice a viskozitou.
Graf výše ukazuje, jak difuzní koeficient závisí na poloměru částice pro částice ve vodě při 25°C. Všimněte si inverzního vztahu: menší částice difundují mnohem rychleji než větší, což je důvod, proč nanoskopické částice vykazují rychlý Brownův pohyb.
Související příspěvky
- Jak vypočítat B-hodnotu termistoru v Pythonu pomocí UliEngineering
- Jak vypočítat teplotu termistoru v Pythonu pomocí UliEngineering
- Jak převést moly na gramy v Pythonu pomocí UliEngineering
Skript pro generování grafu
#!/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
# Rozsah poloměrů částic pro graf
r = np.linspace(1e-9, 10e-9, 100) # 1 nm až 10 nm
# Vytvoření grafu
plt.figure(figsize=(10, 6))
# Pevné parametry
temperature = 298.15 # 25°C v Kelvinech
viscosity = 0.89e-3 # Pa·s (voda při 25°C)
# Výpočet difuzního koeficientu
D = stokes_einstein_diffusion(r, temperature, viscosity)
plt.plot(r * 1e9, D * 1e12, color='blue', linewidth=2)
plt.xlabel('Poloměr částice (nm)', fontsize=12)
plt.ylabel('Difuzní koeficient (×10⁻¹² m²/s)', fontsize=12)
plt.title('Stokes-Einsteinova difuze vs poloměr částice (25°C, voda)', fontsize=14, fontweight='bold')
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('stokes_einstein_plot.svg', format='svg', dpi=300)