Como calcular a viscosidade de mistura Arrhenius em Python usando UliEngineering

Você pode calcular facilmente a viscosidade da mistura usando a regra de mistura Arrhenius (logarítmica) com a biblioteca Python UliEngineering:

Pa·s ⚠
Pa·s ⚠
⚠
arrhenius_mixing_viscosity.py
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

arrhenius_mixing_viscosity_output.txt
Binary mixture viscosity: 2.24 mPa·s
Ternary mixture viscosity: 3.84 mPa·s
Pure component viscosity: 1.00 mPa·s

Gráfico de mistura de Arrhenius.svg

A 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


Script de geração do gráfico

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

Check out similar posts by category: Calculadoras Física Python