Python: Arrhenius-Mischungsviskosität mit UliEngineering berechnen
Du kannst leicht die Mischungsviskosität mit der Arrhenius-(logarithmischen-)Mischungsregel und der UliEngineering-Python-Bibliothek berechnen:
from UliEngineering.Physics.Viscosity import arrhenius_mixing_viscosity
from UliEngineering.EngineerIO import *
# Mischungsviskosität für binäre Mischung berechnen
mole_fractions = [0.5, 0.5]
viscosities = [1e-3, 5e-3] # Pa·s
eta_mix = arrhenius_mixing_viscosity(mole_fractions, viscosities)
print(f"Binäre Mischungsviskosität: {format_value(eta_mix, 'Pa·s')}")
# Mischungsviskosität für ternäre Mischung berechnen
mole_fractions = [0.3, 0.3, 0.4]
viscosities = [1e-3, 5e-3, 10e-3] # Pa·s
eta_mix = arrhenius_mixing_viscosity(mole_fractions, viscosities)
print(f"Ternäre Mischungsviskosität: {format_value(eta_mix, 'Pa·s')}")
# Mischungsviskosität für reine Komponente berechnen
mole_fractions = [1.0, 0.0]
viscosities = [1e-3, 5e-3] # Pa·s
eta_mix = arrhenius_mixing_viscosity(mole_fractions, viscosities)
print(f"Reine Komponentenviskosität: {format_value(eta_mix, 'Pa·s')}")Beispielausgabe
Binäre Mischungsviskosität: 2.24 mPa·s
Ternäre Mischungsviskosität: 3.84 mPa·s
Reine Komponentenviskosität: 1.00 mPa·sDie Arrhenius-Mischungsregel lautet:
$$ \ln(\eta_{mix}) = \sum_{i} x_i \ln(\eta_i) $$wobei $\eta_{mix}$ die Mischungsviskosität, $x_i$ der Molenbruch der Komponente $i$ und $\eta_i$ die Viskosität der Komponente $i$ ist.
Dies kann auch ausgedrückt werden als:
$$ \eta_{mix} = \exp\left(\sum_{i} x_i \ln(\eta_i)\right) = \prod_{i} \eta_i^{x_i} $$Die Arrhenius-Mischungsregel ist eine logarithmische Mischungsregel, die gute Schätzungen für die Mischungsviskosität liefert, wenn die Komponenten ähnliche molekulare Strukturen haben. Sie ist besonders nützlich für ideale Mischungen und wird häufig in der Erdöltechnik, Polymerwissenschaft und Chemieingenieurwesen angewendet.
Das obige Diagramm zeigt, wie die Mischungsviskosität sich ändert, wenn die Zusammensetzung einer ternären Mischung variiert. Die Mischungsviskosität folgt einer logarithmischen (geometrisches Mittel) Interpolation zwischen den reinen Komponentenviskositäten. Beachte, dass die Mischungsviskosität immer zwischen der minimalen und maximalen Komponentenviskosität liegt.
Diese Mischungsregel geht von idealem Mischungsverhalten aus und ist möglicherweise nicht genau für stark nicht-ideale Mischungen oder wenn signifikante molekulare Wechselwirkungen zwischen den Komponenten bestehen.
Verwandte Beiträge
- How to compute Andrade viscosity in Python using UliEngineering
- How to compute VFT viscosity in Python using UliEngineering
- How to compute Sutherland gas viscosity in Python using UliEngineering
Diagramm-Estellungsskript
#!/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 arrhenius_mixing_viscosity
# Diagramm erstellen
plt.figure(figsize=(10, 6))
# Komponentenviskositäten (in Pa·s)
viscosities = [1e-3, 5e-3, 10e-3] # Wasserähnlich, mittel, hoch
# Mischungsviskosität für verschiedene Zusammensetzungen berechnen
n_points = 100
results = []
for i in range(n_points + 1):
# Vary composition from 100% component 0 to 100% component 2
x1 = i / n_points
x2 = (1 - x1) / 2
x3 = (1 - x1) / 2
fractions = [x1, x2, x3]
eta_mix = arrhenius_mixing_viscosity(fractions, viscosities) * 1000 # Convert to mPa·s
results.append(eta_mix)
plt.plot(np.linspace(0, 100, n_points + 1), results, color='blue', linewidth=2, label='Mixture viscosity')
# Auch die einzelnen Komponentenviskositäten als horizontale Linien darstellen
for i, eta in enumerate(viscosities):
plt.axhline(y=eta * 1000, color=['green', 'orange', 'red'][i], linestyle='--',
linewidth=2, label=f'Component {i+1} ({eta*1000:.1f} mPa·s)')
plt.xlabel('Molenbruch Komponente 1 (%)', fontsize=12)
plt.ylabel('Mischungsviskosität (mPa·s)', fontsize=12)
plt.title('Arrhenius-Mischungsregel für ternäre Mischung', fontsize=14, fontweight='bold')
plt.legend(loc='upper right', fontsize=10)
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('arrhenius_mixing_plot.svg', format='svg', dpi=300)
print("Plot saved to arrhenius_mixing_plot.svg")