Você pode calcular facilmente a viscosidade da mistura usando a regra de mistura Arrhenius (logarítmica) com a biblioteca Python UliEngineering:
from UliEngineering.Physics.Viscosity import arrhenius_mixing_viscosity
from UliEngineering.EngineerIO import *
# Calcular viscosidade da mistura para mistura binária
mole_fractions = [0.5, 0.5]
viscosities = [1e-3, 5e-3] # Pa·s
eta_mix = arrhenius_mixing_viscosity(mole_fractions, viscosities)
print(f"Binary mixture viscosity: {format_value(eta_mix, 'Pa·s')}")
# Calcular viscosidade da mistura para mistura ternária
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"Ternary mixture viscosity: {format_value(eta_mix, 'Pa·s')}")
# Calcular viscosidade da mistura para componente puro
mole_fractions = [1.0, 0.0]
viscosities = [1e-3, 5e-3] # Pa·s
eta_mix = arrhenius_mixing_viscosity(mole_fractions, viscosities)
print(f"Pure component viscosity: {format_value(eta_mix, 'Pa·s')}")Exemplo de saída
Binary mixture viscosity: 2.24 mPa·s
Ternary mixture viscosity: 3.84 mPa·s
Pure component viscosity: 1.00 mPa·sA regra de mistura Arrhenius é dada por:
$$ \ln(\eta_{mix}) = \sum_{i} x_i \ln(\eta_i) $$onde $\eta_{mix}$ é a viscosidade da mistura, $x_i$ é a fração molar do componente $i$, e $\eta_i$ é a viscosidade do componente $i$.
Isso também pode ser expresso como:
$$ \eta_{mix} = \exp\left(\sum_{i} x_i \ln(\eta_i)\right) = \prod_{i} \eta_i^{x_i} $$A regra de mistura Arrhenius é uma regra de mistura logarítmica que fornece boas estimativas para a viscosidade da mistura quando os componentes têm estruturas moleculares semelhantes. É particularmente útil para misturas ideais e é comumente aplicada em engenharia de petróleo, ciência de polímeros e engenharia química.
O gráfico acima mostra como a viscosidade da mistura varia conforme a composição muda para uma mistura ternária. A viscosidade da mistura segue uma interpolação logarítmica (média geométrica) entre as viscosidades dos componentes puros. Note que a viscosidade da mistura está sempre entre as viscosidades mínima e máxima dos componentes.
Esta regra de mistura assume comportamento de mistura ideal e pode não ser precisa para misturas fortemente não-ideais ou quando há interações moleculares significativas entre os componentes.
Posts relacionados
- Como calcular a viscosidade de Andrade em Python usando UliEngineering
- Como calcular a viscosidade VFT em Python usando UliEngineering
- Como calcular a viscosidade de gás Sutherland em Python usando UliEngineering
Script de geração do gráfico
#!/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
# Criar gráfico
plt.figure(figsize=(10, 6))
# Viscosidades dos componentes (em Pa·s)
viscosities = [1e-3, 5e-3, 10e-3] # Tipo água, médio, alto
# Calcular viscosidade da mistura para diferentes composições
n_points = 100
results = []
for i in range(n_points + 1):
# Variar composição de 100% componente 0 para 100% componente 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 # Converter para mPa·s
results.append(eta_mix)
plt.plot(np.linspace(0, 100, n_points + 1), results, color='blue', linewidth=2, label='Viscosidade da mistura')
# Também plotar as viscosidades individuais dos componentes como linhas horizontais
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('Fração Molar do Componente 1 (%)', fontsize=12)
plt.ylabel('Viscosidade da Mistura (mPa·s)', fontsize=12)
plt.title('Regra de Mistura de Arrhenius para Mistura Ternária', 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("Gráfico salvo em arrhenius_mixing_plot.svg")