Equilíbrio Líquido-Vapor#

Equações de estado podem ser usadas para predizer a pressão de vapor, volume molar do líquido e vapor em equilíbrio (\(V_m ^l, V_m ^v \)) e entalpia de vaporização.

# Módulos necessários para resolver sistema de equações
import numpy as np
from scipy.optimize import fsolve
from scipy.optimize import least_squares
import matplotlib.pyplot as plt

Exemplo 1#

A partir da equação de estado de Redlich-Kwong, estime a pressão de vapor e os volumes molares de saturação das fases líquidas e gasosas do \(C_3 H_8\) a 25ºC. Use os valores tabelados de a e b para o propano.

Solução#

Para estudar o equilíbrio líquido vapor, as três equações abaixo precisam ser satisfeitas:

\[ p = \frac{1}{V_m^v - V_m^l} \left( RT ln \frac{V_m^v - b}{V_m^l -b} -\frac{a}{bT^{1/2}} ln \frac{V_m^v(V_m^l + b)}{V_m^l(V_m^v + b)} \right) \]
\[ p = \frac{RT}{V_m^v - b} - \frac{a}{V_m^v(V_m^v + b)T^{1/2}} \]
\[ p = \frac{RT}{V_m^l - b} - \frac{a}{V_m^l(V_m^l + b)T^{1/2}} \]

Como é um problema que envolve a solução de um sistema de equações não lineares, será usado um dos métodos já mostrados para resolução do problema. Neste caso faremos uso do scipy.optimize.least_squares() para solução do problema impondo algumas restrições as variáveis. As restrições que serão impostas são:

  • \(1 ~atm < p_{vap} < p_c \)

  • \( b < V_m ^l < V_c \)

  • \(V_c < V_m ^v \)

#Variáveis

R = 82.06 # atm cm³/K mol
T = 298.15 # K
a = 1.80e8 # cm^6 atm K^1/2 mol^-2
b = 62.7   # cm^3/mol



# definindo o sistema de equações



def equations(vars):
    pvap, Vl, Vv = vars
    
    eq1 = 1/(Vv - Vl)*(R*T*np.log((Vv - b)/(Vl - b)) - a/(b*T**0.5)*np.log((Vv*(Vl+b)/(Vl*(Vv +b))))) - pvap
    
    eq2 = R*T/(Vv - b) - a/(Vv*(Vv + b)*T**0.5) - pvap 
    
    eq3 = R*T/(Vl - b) - a/(Vl*(Vl + b)*T**0.5) - pvap
    
    return [eq1, eq2, eq3]




res = least_squares(equations, (30, 80, 1200), bounds=((1, 70, 200 ),(40, 200, 3000 )) )


print('pressão de vapor (atm)= ' + format(res.x[0] , ' 6.3f'))
print('Volume molar do líquido (cm^3)' + format(res.x[1] , ' 6.3f'))
print('Volume molar do vapor (cm^3) =' + format(res.x[2] , ' 6.3f'))
pressão de vapor (atm)=  11.026
Volume molar do líquido (cm^3) 100.595
Volume molar do vapor (cm^3) = 1789.003