A mistura escolhida foi água e acetona.
Para que as fases esteja em equilíbrio uma série de fatores devem ser levados em consideração:
$T^\alpha = T^\beta = T$
$P^\alpha = P^\beta = P$
$\mu^\alpha(T^\alpha,P^\alpha,\boldsymbol{x^\alpha}) = \mu^\beta(T^\beta,P^\beta,\boldsymbol{x^\beta})$
$f_i^\alpha(T^\alpha,P^\alpha,\boldsymbol{x^\alpha}) = f_i^\beta(T^\beta,P^\beta,\boldsymbol{x^\beta})$
Considerando o equilíbrio Líquido-Vapor (onde $\phi_m$ é o coeficiente de fugacidade da mistura):
Fase vapor: $f_i^V(T,P,\boldsymbol{y}) = y_i.\phi_m^V(T,P,\boldsymbol{y}).P$
Fase líquida: $f_i^L(T,P,\boldsymbol{x}) = x_i.\gamma_i(T,\boldsymbol{x}).P_i^{sat}.\phi_i^{sat}.exp\left[\frac{\bar{V}_i^{o,L}}{RT}.(P-P_i^{sat})\right]$
A equação da fase líquida pode ser simplificada pra baixas pressões:
$f_i^L(T,P,\boldsymbol{x}) = x_i.\gamma_i(T,\boldsymbol{x}).P_i^{sat}$
Assim, é possível Igualar as fases na seguinte equação:
$f_i^V(T,P,\boldsymbol{y}) = f_i^L(T,P,\boldsymbol{x})$
$y_i.\phi_m^V(T,P,\boldsymbol{y}).P = x_i.\gamma_i(T,\boldsymbol{x}).P_i^{sat}$
A equação SRK para misturas foi adaptada da Apostila de Termodinâmica da Engenharia Química - EQE359 (Tavares, Medeiros e Segtovich). Os valores de $\sigma$, $\varepsilon$, $\Omega$ e $\Psi$ utilizados foram obtidos na Tabela 3.1 da referida apostila. Os valores de Pc e Tc e de R para acetona e água foram obtidos nos apêndices B e A, respectivamente, no livro de Van Ness.
$${P} = \frac{RT}{\bar{V}-b} - \frac{a(T)}{(\bar{V}+\varepsilon.b)(\bar{V}+\sigma.b)} $$Para SRK, os coeficientes tem os seguintes valores:
${a_i(T)} = {a_i} = \Psi\frac{\alpha(Tr)R^2Tc_i^2}{Pc_i}$, no código: a(T) será chamado de a
${b_i} = \Omega\frac{RTc_i}{Pc_i}$
${\alpha_i(Tr)} = alfa_{SRK} = [1+(0,480+1,574w_i-0,176w_i^2)(1-Tr_i^\frac{1}{2})]^2$, no código: alfa(Tr) será chamado alfa
${Tr_i} = \frac{T}{Tc_i}$
$A = \sum_{i}\sum_{j}zizj(aiaj)^{1/2}$
$B = \sum_{i}\sum_{j}zizj\left(\frac{b_i+b_j}{2}\right)=\sum_{i}z_ib_i$
onde o w é o fator acêntrico.
Transformando de V para Z, a EOS de SRK pode ser reduzida e igualada a zero conforme mostrado abaixo. Assim é possível achar os Z's do equilíbrio.
$Z^3-Z^2+(A-B-B^2)Z-AB=0$
$Ai = \frac{P.a_i}{R^2T^2}$
$Bi = \frac{P.b_i}{RT}$
$B = \sum_{i}y_iB_i$
$A = \sum_{i}\sum_{j}yiyj(AiAj)^{1/2}$
$$ln(\phi_i) = -ln(Z_i-B)+Z_i-1+\left(\frac{A}{(\alpha+\beta)B}\right)ln\left(\frac{Z_i-\beta.B}{Z_i+\alpha.B}\right)$$Como $\alpha = 1$ e $\beta = 0$:
$$ln(\phi_i) = -ln(Z_i-B)+Z_i-1+\left(\frac{A}{B}\right)ln\left(\frac{Z_i}{Z_i+B}\right)$$Onde:
$\tau_{i,j}= \frac{g_{i,j}-g_{j,j}}{RT}=\frac{A_{i,j}}{T}$
$G_{i,j}=\mathrm{exp}(-\alpha_{i,j} \tau_{i,j})$
Na notação i = 1 corresponde a acetona e 2 a água. Os coeficientes de NRTL foram retirado do artigo de Llchtenbett e Schramt (1985).
Os coeficientes de atividade ($\gamma_i$) foram calculados usando a derivada da energia de Gibbs de excesso em relação ao número de mols do componente i ($n_i=N x_i$) a T, P e número de mols constante.
$$RTln(\gamma_i) = {\partial g^E}/{ \partial n_i}$$$$ln(\gamma_i)= \frac{\sum_{j=1}^n\left[\tau_{j,i} G_{j,i} x_{j}\right]}{\sum_{k=1}^n\left[G_{k,i}x_{k}\right]} + \sum_{j=1}^n\left[ \left(\frac{\ G_{i,j} x_{j}}{\sum_{k=1}^n\left[G_{k,j}x_{k}\right]}\right) \left(\tau_{i,j}-\frac{\sum_{j=1}^n\left[\tau_{i,j} G_{i,j} x_{i}\right]}{\sum_{k=1}^n\left[G_{k,j}x_{k}\right]} \right) \right] $$import numpy as np
import numpy.linalg as nplin
#import numpy.matlib as npmatlib
#import scipy as sci
#import matplotlib.pyplot as plt
#%matplotlib inline
$\gamma_i^{oo,j} = lim \gamma_i, (xj->1)$
Esse é o gama do componente i quando há a diluição infinita do mesmo pelo componente j. Esse será o parâmetro usado para conferir se o cálculo de gama está similar aos dados experimentais apresentados pelo estudo de Llchtenbett e Schramt (1985)
#Constantes e chutes iniciais usados no trabalho:
#Valor para a constante universal dos gases - Van Ness, Tabela A.2, pag. 506
R = 8.3144598 #J.mol^-1.K^-1
#Valores para acetona pura: Tc, Pc e w - Van Ness, Tabela B.1, pag. 508
#Valores para água pura: Tc, Pc e w - Van Ness, Tabela B.1, pag. 509.
Tc = np.array([[508.2],
[647.1]]) #K
Pc = np.array([[47.01*10**5],
[220.55*10**5]]) #Pa
w = np.array([[0.307],
[0.345]])
#Valores das constantes da equação SRK - Tabela 3.1, pag. 37.
omega = 0.08664
psi = 0.42748
T = 289.1 #K
P = 1*10**5 #Pa
x=np.array([[.001,.999],
[.999,.001]])
#Esse vetor de x corresponde a diluição infinita dos componentes. Ele será usado posteriormente para comparação com os
#dados experimentais de Llchtenbett e Schramt (1985). A Temperatura e Pressão também foram escolhidas propositalmente.
#Coeficientes retirados do trabalho de Llchtenbett e Schramt (1985).
#1: acetona; 2: água
deltag1=6.8 #kJ/mol deltag1=g12-g11
deltag2=2.3 #kJ/mol deltag2=g21-g22
alpha12=alpha21=0.4
A12=deltag1*10**3/R #K
A21=deltag2*10**3/R #K
print('Sendo 1 acetona e 2 água')
print('A12:',A12,'K')
print('A21:',A21,'K')
print('alpha12 = alpha21:',alpha12,)
Sendo 1 acetona e 2 água A12: 817.8522914982402 K A21: 276.6265103596989 K alpha12 = alpha21: 0.4
#montagem da matriz e verificação
Aij = np.array([[0, A12],
[A21, 0]])
alpha = np.array([[0, alpha12],
[alpha21, 0]])
print("i,j,alpha[i,j],Aij[i,j]")
for i in range(2):
for j in range(2):
print(i,j,alpha[i,j],Aij[i,j])
print('alpha:')
print(alpha)
print('Aij:')
print(Aij)
i,j,alpha[i,j],Aij[i,j] 0 0 0.0 0.0 0 1 0.4 817.852291498 1 0 0.4 276.62651036 1 1 0.0 0.0 alpha: [[ 0. 0.4] [ 0.4 0. ]] Aij: [[ 0. 817.8522915 ] [ 276.62651036 0. ]]
#Cálculo de tau e G:
tau=np.zeros([2,2])
for j in range(2):
for i in range(2):
tau[j,i]=Aij[j,i]/T
print("tau=")
print(tau)
G=np.zeros([2,2])
for j in range(2):
for i in range(2):
G[j,i]=np.exp((-alpha[j,i]*tau[j,i]))
print("G=")
print(G)
tau= [[ 0. 2.82895985] [ 0.95685407 0. ]] G= [[ 1. 0.322522 ] [ 0.68198908 1. ]]
def Gamma(T,x,alpha,A):
alpha12=alpha21=0.4
A12=deltag1*10**3/R #K
A21=deltag2*10**3/R #K
A = np.array([[0, A12],
[A21, 0]])
alpha = np.array([[0, alpha12],
[alpha21, 0]])
tau=np.zeros([2,2])
for j in range(2):
for i in range(2):
tau[j,i]=A[j,i]/T
G=np.zeros([2,2])
for j in range(2):
for i in range(2):
G[j,i]=np.exp((-alpha[j,i]*tau[j,i]))
Gamma=np.zeros([2])
for i in range(2):
Sj1=0
Sj2=0
Sj3=0
for j in range(2):
Sj1 += tau[j,i]*G[j,i]*x[j]
Sj2 += G[j,i]*x[j]
Sk1=0
Sk2=0
Sk3=0
for k in range(2):
Sk1 += G[k,j]*x[k]
Sk2 += x[k]*tau[k,j]*G[k,j]
Sk3 += G[k,j]*x[k]
Sj3 += ((x[j]*G[i,j])/(Sk1))*(tau[i,j]-(Sk2)/(Sk3))
Gamma[i]=np.exp(Sj1/Sj2 + Sj3)
return Gamma
Gamma_dil_ac=Gamma(289.1,x[0,:],alpha,Aij[0])
Gamma_dil_wat=Gamma(289.1,x[1,:],alpha,Aij[1])
print('Gamma diluído acetona:',Gamma_dil_ac)
print('Gamma diluído acetona exp:',6.4,)
print('Gamma diluído água:',Gamma_dil_wat)
print('Gamma diluído água exp:',32,)
Gamma diluído acetona: [ 6.46151813 1.0000017 ] Gamma diluído acetona exp: 6.4 Gamma diluído água: [ 1.00000918 31.91751523] Gamma diluído água exp: 32
def phiv_mist(T,P,y): #phi de vapor para cálculo de PO e PB.
def Z_EOS_mist(T,P,y):
Tr = T/Tc
alfa = (1+(0.48+(1.574*w)-(0.176*(w**2)))*(1-(Tr**(1/2))))**2
a = psi*(alfa*(R**2)*(Tc**2)/Pc)
A = P*a/((R**2)*(T**2))
b = omega*R*Tc/Pc
B = P*b/(R*T)
Beos=0
for i in range(2):
Beos += y[i]*B[i]
Aeos=0
for i in range(2):
for j in range(2):
Aeos += y[i]*y[j]*(A[i]*A[j])**(1/2)
c3 = 1
c2 = -1
c1 = Aeos-Beos-(Beos**2)
c0 = -(Aeos*Beos)
Z = np.roots([c3,c2,c1,c0])
Zans=[]
for i in range(3):
if np.isreal(Z[i])==1: #selecionar os valores reais
Zans=Zans+[Z[i]] #constroi um vetor com raízes reais
Zans=np.real(Zans) #conversão do tipo complexo para real
Zv=max(Zans)
return Zv,A,B
Z,A,B=Z_EOS_mist(T,P,y)
phiv=np.exp(-np.log(Z-B)+Z-1+(A/B)*np.log(Z/(Z+B)))
return phiv
phiv=phiv_mist(T,P,[1,0])
print(phiv)
[[ 0.96060007] [ 0.98394601]]
A pressão de saturação para ambos os componentes será calculada por um método interativo utilizando Newton-Raphson.
def calc_P_sat(T,P_chute,Tc,Pc,w):
def phi_sat(T,P,Tc,Pc,w):
Tr = T/Tc
alfa = (1+(0.48+(1.574*w)-(0.176*(w**2)))*(1-(Tr**(1/2))))**2
a = psi*(alfa*(R**2)*(Tc**2)/Pc)
A = P*a/((R**2)*(T**2))
b = omega*R*Tc/Pc
B = P*b/(R*T)
def Z_EOS(T,P,Tc,Pc,w):
c3=1
c2=-1
c1=A-B-B**2
c0=-A*B
Z = np.roots([c3,c2,c1,c0])
Zans=[]
for i in range(3):
if np.isreal(Z[i])==1: #selecionar os valores reais
Zans=Zans+[Z[i]] #constroi um vetor com raízes reais
Zans=np.real(Zans) #conversão do tipo complexo para real
Zv=max(Zans)
Zl=min(Zans)
return Zv,Zl
Zv,Zl=Z_EOS(T,P,Tc,Pc,w)
phi_satv=np.exp(-np.log(Zv-B)+Zv-1+(A/B)*np.log(Zv/(Zv+B)))
phi_satl=np.exp(-np.log(Zl-B)+Zl-1+(A/B)*np.log(Zl/(Zl+B)))
return phi_satv,phi_satl
RES=1
TOL=1e-9
MAX=1000
P=P_chute
i=0
while(RES>TOL and i<MAX):
phi_satv,phi_satl=phi_sat(T,P,Tc,Pc,w)
P=P*(phi_satl/phi_satv)
RES=np.abs(phi_satv/phi_satl-1.)
i=i+1
return P
P_sat_ac=calc_P_sat(T,99217.04,Tc[0],Pc[0],w[0])*10**-5
P_sat_wat=calc_P_sat(T,92364.76,Tc[1],Pc[1],w[1])*10**-5
print('Pressão de saturação da acetona:',P_sat_ac,'bar')
print('Pressão de saturação da água:',P_sat_wat,'bar')
Pressão de saturação da acetona: [ 0.1944162] bar Pressão de saturação da água: [ 0.01288841] bar
def calc_P_sat(T,P_chute,Tc,Pc,w):
def phi_sat(T,P,Tc,Pc,w):
Tr = T/Tc
alfa = (1+(0.48+(1.574*w)-(0.176*(w**2)))*(1-(Tr**(1/2))))**2
a = psi*(alfa*(R**2)*(Tc**2)/Pc)
A = P*a/((R**2)*(T**2))
b = omega*R*Tc/Pc
B = P*b/(R*T)
def Z_EOS(T,P,Tc,Pc,w):
c3=1
c2=-1
c1=A-B-B**2
c0=-A*B
Z = np.roots([c3,c2,c1,c0])
Zans=[]
for i in range(3):
if np.isreal(Z[i])==1: #selecionar os valores reais
Zans=Zans+[Z[i]] #constroi um vetor com raízes reais
Zans=np.real(Zans) #conversão do tipo complexo para real
Zv=max(Zans)
Zl=min(Zans)
return Zv,Zl
Zv,Zl=Z_EOS(T,P,Tc,Pc,w)
phi_satv=(-np.log(Zv-B)+Zv-1+(A/B)*np.log(Zv/(Zv+B)))
phi_satl=(-np.log(Zl-B)+Zl-1+(A/B)*np.log(Zl/(Zl+B)))
return phi_satv,phi_satl
RES=1
TOL=1e-9
MAX=10000
P=P_chute
i=0
dP=0.00001
while(RES>TOL and i<MAX):
phi_satv,phi_satl=phi_sat(T,P,Tc,Pc,w)
#Calculo da função F
F=phi_satv-phi_satl
#Calculo da Jacobiana
phi_satv_p,phi_satl_p=phi_sat(T,P+dP,Tc,Pc,w)
phi_satv_n,phi_satl_n=phi_sat(T,P-dP,Tc,Pc,w)
Fp=phi_satv_p-phi_satl_p
Fn=phi_satv_n-phi_satl_n
J=(Fp-Fn)/(2*dP)
#Próximo passo
P=P-F/J*0.1
RES=np.abs(-F/J)
i=i+1
return P
#P_sat_ac=calc_P_sat(T,P,Tc[0],Pc[0],w[0])*10**-5
#P_sat_wat=calc_P_sat(T,P,Tc[1],Pc[1],w[1])*10**-5
print('Pressão de saturação da acetona:',P_sat_ac,'bar')
print('Pressão de saturação da água:',P_sat_wat,'bar')
Pressão de saturação da acetona: [ 0.1944162] bar Pressão de saturação da água: [ 0.01288841] bar
$x_i = z_i$
Chute inicial: uma matriz contendo $y_1$, $y_2$ e P em uma coluna. Procedimento Newton-Raphson.
##Entradas
#composição
z1 = 0.6
z2 = 1-z1
z = np.array([[z1],[z2]])
x=z #Ponto de Bolha
T=298 #Temperatura em K
## Chute inicial
chute = np.array([[0.98],
[0.02],
[0.19*10**5]])
X=chute
## Parämetro de convergência
RES=1
TOL=1e-9
MAX=10000
i=0
#Cálculo da P de saturação de acetona e água
Psat_chute=np.array([[0.19*10**5],
[0.013*10**5]])
Psat=np.zeros(len(z))
for i in range (len(z)):
Psat[i]=calc_P_sat(T,Psat_chute[i],Tc[i],Pc[i],w[i])
#Gama de mistura
gamma=Gamma(T,x,alpha,Aij)
while(RES>TOL and i<MAX):
#Fugacidade da fase vapor
phiv=phiv_mist(T,X[2],X[0:2])
#Função F=0
F=np.array([X[0]*phiv[0]*X[2]-x[0]*gamma[0]*Psat[0],X[1]*phiv[1]*X[2]-x[1]*gamma[1]*Psat[1],X[0]+X[1]-1])
#Jacobiano
dy1=0.00001
dy2=0.00001
dP=0.001
y1p=X[0]+dy1
y1n=X[0]-dy1
y2p=X[1]+dy2
y2n=X[1]-dy2
Pp=X[2]+dP
Pn=X[2]-dP
phivp1=phiv_mist(T,X[2],np.array([[y1p], [X[1]]]))
phivn1=phiv_mist(T,X[2],np.array([[y1n], [X[1]]]))
phivp2=phiv_mist(T,X[2],np.array([[X[0]], [y2p]]))
phivn2=phiv_mist(T,X[2],np.array([[X[0]], [y2n]]))
phivp3=phiv_mist(T,Pp,X[0:2])
phivn3=phiv_mist(T,Pn,X[0:2])
F11p=(y1p)*phivp1[0]*X[2]
F11n=(y1n)*phivn1[0]*X[2]
J11=(F11p-F11n)/(2*dy1)
F12p=X[0]*phivp2[0]*X[2]
F12n=X[0]*phivn2[0]*X[2]
J12=(F12p-F12n)/(2*dy2)
F13p=X[0]*phivp3[0]*Pp
F13n=X[0]*phivn3[0]*Pn
J13=(F13p-F13n)/(2*dP)
F21p=X[1]*phivp1[1]*X[2]
F21n=X[1]*phivn1[1]*X[2]
J21=(F21p-F21n)/(2*dy1)
F22p=(y2p)*phivp2[1]*X[2]
F22n=(y2n)*phivn2[1]*X[2]
J22=(F22p-F22n)/(2*dy2)
F23p=X[1]*phivp3[1]*Pp
F23n=X[1]*phivn3[1]*Pn
J23=(F23p-F23n)/(2*dP)
J31=np.array(1)
J32=np.array(1)
J33=np.array(0)
J=np.array([[J11, J12, J13], [J21, J22, J23], [J31, J32, J33]],dtype='float')
#Próximo passo
X=X-np.dot(nplin.inv(J),F)*0.1 #np.dot: multiplicação matricial
RES=nplin.norm(np.abs(np.dot(nplin.inv(J),F)))
i=i+1
print(X)
print('Para T=298K, xac=0,6 e xwat=0,4')
print('yac=',X[0])
print('ywat=',X[1])
print('P do Ponto de Bolha:',X[2]*10**-5,'bar')
[[ 9.44693059e-01] [ 5.53069406e-02] [ 3.08975366e+04]] Para T=298K, xac=0,6 e xwat=0,4 yac= [ 0.94469306] ywat= [ 0.05530694] P do Ponto de Bolha: [ 0.30897537] bar
$y_i=z_i$
Chute inicial: uma matriz contendo $x_1$, $x_2$ e P em uma coluna. Procedimento Newton-Raphson.
##Entradas
#composição
z1 = 0.6
z2 = 1-z1
z = np.array([[z1],[z2]])
y=z #Ponto de Orvalho
T=298 #Temperatura em K
## Chute inicial
chute = np.array([[0.02],
[0.98],
[0.013*10**5]])
Y=chute
## Parämetro de convergência
RES=1
TOL=1e-9
MAX=10000
i=0
#Cálculo da P de saturação de acetona e água
Psat_chute=np.array([[0.19*10**5],
[0.013*10**5]])
Psat=np.zeros(len(z))
for i in range (len(z)):
Psat[i]=calc_P_sat(T,Psat_chute[i],Tc[i],Pc[i],w[i])
while(RES>TOL and i<MAX):
#Gama de mistura
gamma=Gamma(T,Y[0:2],alpha,Aij)
#Fugacidade da fase vapor
phiv=phiv_mist(T,Y[2],y)
#Função F=0
F=np.array([y[0]*phiv[0]*Y[2]-Y[0]*gamma[0]*Psat[0],y[1]*phiv[1]*Y[2]-Y[1]*gamma[1]*Psat[1],Y[0]+Y[1]-1])
#Jacobiano
dx1=0.00001
dx2=0.00001
dP=0.001
x1p=Y[0]+dx1
x1n=Y[0]-dx1
x2p=Y[1]+dx2
x2n=Y[1]-dx2
Pp=Y[2]+dP
Pn=Y[2]-dP
gammap1=Gamma(T,np.array([[x1p], [Y[0]]]),alpha,Aij)
gamman1=Gamma(T,np.array([[x1n], [Y[0]]]),alpha,Aij)
gammap2=Gamma(T,np.array([Y[1], [x2p]]),alpha,Aij)
gamman2=Gamma(T,np.array([Y[1], [x2n]]),alpha,Aij)
phivp=phiv_mist(T,Pp,y)
phivn=phiv_mist(T,Pn,y)
F11p=-(x1p)*gammap1[0]*Psat[0]
F11n=-(x1n)*gamman1[0]*Psat[0]
J11=(F11p-F11n)/(2*dx1)
F12p=-Y[0]*gammap2[0]*Psat[0]
F12n=-Y[0]*gamman2[0]*Psat[0]
J12=(F12p-F12n)/(2*dx2)
F13p=y[0]*phivp[0]*Pp
F13n=y[0]*phivn[0]*Pn
J13=(F13p-F13n)/(2*dP)
F21p=-Y[1]*gammap2[1]*Psat[1]
F21n=-Y[1]*gamman2[1]*Psat[1]
J21=(F21p-F21n)/(2*dx1)
F22p=-(x2p)*gammap2[1]*Psat[1]
F22n=-(x2n)*gamman2[1]*Psat[1]
J22=(F22p-F22n)/(2*dx2)
F23p=X[1]*phivp[1]*Pp
F23n=X[1]*phivn[1]*Pn
J23=(F23p-F23n)/(2*dP)
J31=np.array(1)
J32=np.array(1)
J33=np.array(0)
J=np.array([[J11, J12, J13], [J21, J22, J23], [J31, J32, J33]],dtype='float')
#Próximo passo
Y=Y-np.dot(nplin.inv(J),F)*0.1 #np.dot: multiplicação matricial
RES=nplin.norm(np.abs(np.dot(nplin.inv(J),F)))
i=i+1
print(Y)
print('Para T=298K, xac=0,6 e xwat=0,4')
print('xac=',Y[0])
print('xwat=',Y[1])
print('P do Ponto de Orvalho:',Y[2]*10**-5,'bar')
[[ 1.96886122e-02] [ 9.80311388e-01] [ 5.69515462e+03]] Para T=298K, xac=0,6 e xwat=0,4 xac= [ 0.01968861] xwat= [ 0.98031139] P do Ponto de Orvalho: [ 0.05695155] bar
$\bar{M}^E(T,P,\boldsymbol{x})=\bar{M}(T,P,\boldsymbol{x})-\bar{M}^{id}(T,P,\boldsymbol{x})$
$\Delta\bar{M}^E(T,P,\boldsymbol{x})=\Delta\bar{M}(T,P,\boldsymbol{x})-\Delta\bar{M}^{id}(T,P,\boldsymbol{x})$
De propriedades de mistura:
$\bar{M}=\Delta\bar{M^{o}}+\sum_{i}^cx_i\bar{M}_{i}^o$
$\bar{M}^E+\bar{M}^{id}=\Delta\bar{M}^E+\bar{M}^{id}$
$\bar{M}^E=\Delta\bar{M}^E$
A partir das relações de propriedades de mistura, obtemos as propriedades de excesso desejadas:
$\frac{\bar{G}^E}{RT}=\sum_{i}^cx_iln(\gamma_i)$
$\frac{\bar{H}^E}{RT}=-T\sum_{i}^cx_i\left(\frac{dln(\gamma_i)}{dT}\right),(P,\boldsymbol{x} constantes)$
$\frac{\bar{S}^E}{R}=-T\sum_{i}^cx_i\left(\frac{dln(\gamma_i)}{dT}\right)-,\sum_{i}^cx_iln(\gamma_i)(P,\boldsymbol{x} constantes)$
$\frac{\bar{S}^E}{R}=\frac{\bar{H}^E}{RT}-\frac{\bar{G}^E}{RT}$
x1=0.6
x2=1-x1
x = np.array([[x1],[x2]])
print(x)
[[ 0.6] [ 0.4]]
def G_exc(T,x,alpha,A):
gamma=Gamma(T,x,alpha,Aij)
g_exc=0
for i in range(2):
g_exc += (R*T)*(x[i]*np.log(gamma[i]))
return g_exc
g_exc=G_exc(T,x,alpha,Aij)
print('Energia Livre de Gibbs de excesso da mistura a 289K',g_exc,'J/mol')
G de excesso a 289K [ 1341.88572906] J/mol
def H_exc(T,x,alpha,A):
dT = 0.0001
Tp = T+dT
Tn = T-dT
gammap=Gamma(Tp,x,alpha,Aij)
gamman=Gamma(Tn,x,alpha,Aij)
gam=(np.log(gammap)-np.log(gamman))/(2*dT)
h_exc=0
for i in range(2):
h_exc += -(R*T**2)*(x[i]*gam[i])
return h_exc
h_exc=H_exc(T,x,alpha,Aij)
print('Entalpia de excesso da mistura a 289K',h_exc,'J/mol')
def S_exc(T,x,alpha,A):
s_exc = R*(h_exc/(R*T)-g_exc/(R*T))
return s_exc
s_exc=S_exc(T,x,alpha,Aij)
print('Entropia de excesso da mistura a 289K',s_exc,'J/mol')
Entalpia de excesso da mistura a 289K [ 567.58361308] J/mol Entropia de excesso da mistura a 289K [-2.59832925] J/mol
Abreu, C. R. A., Matrix Algebra and Matrix Differentiation Rules Applied to Excess Gibbs Energy Models, Notas de aula, 18 p.
LLCHTENBETT, J.H; SCHRAMT, B.J. Vapor-Liquid Equilibrium of Water-Acetone-Air at Ambient Temperatures and Pressures. An Analysis of Different VLE-Fitting Methods. Industrial & Engineering Chemistry Process Design and Development, v.24, p. 391-987, 1985.
PRAUSNITZ, J.M.; POLING, B.E.; O'CONNELL, J.P. The Properties of Gases and Liquids. 5 Edição, McGraw-Hill, 2001. 803 p.