# Importando as bibliotecas necessárias para resolução das equações numéricas e de projeto
import numpy as np #Biblioteca de funções matemáticas
import matplotlib.pyplot as plt #Biblioteca de funções gráficas 2D
from scipy.integrate import odeint #Resolução de EDOs
# Condições do Sistema
T = 350 # K
Cmeoh0 = 5 # mol/dm³
Fmeoh = 3 # mol/min
v0 = Fmeoh/Cmeoh0
# Define-se a função da reação, que aqui foi chamado de Rxn. Será uma função que dependerá das condições iniciais (Y0) e do tempo (t)
def Rxn(Y, t):
Nhac, Nmeoh, Nmeac, Nh2o, V = Y # Conversão de uma lista para todos os valores
# Concentrações
Chac = Nhac/V
Cmeoh = Nmeoh/V
Cmeac = Nmeac/V
Ch2o = Nh2o/V
# Valores iniciais
Cmeoh0 = 5 # mol/dm³
Fmeoh = 3 # mol/min
v0 = Fmeoh/Cmeoh0
# Lei da velocidade
k = 8.88E8*np.exp(-7032.1/T)
K = 5.2*np.exp((-8000/1.978)*((1/298)-(1/T)))
rhac = -k*((Cmeoh*Chac)-((Cmeac*Ch2o)/K))
# Equações diferenciais
dNhacdt = rhac*V
dNmeohdt = rhac*V + Fmeoh
dNmeacdt = -rhac*V
dNh2odt = -rhac*V
dVdt = v0
return dNhacdt, dNmeohdt, dNmeacdt, dNh2odt, dVdt
# Nomeando as condições iniciais
Nhac0 = 300 # mols
Nmeoh0 = 0 # mols
Nmeac0 = 0 # mols
Nh2o0 = 0 # mols
V0 = 150 # dm³
Y0 = [Nhac0, Nmeoh0, Nmeac0, Nh2o0, V0]
# Definindo o intervalo e passo de integração
t0 = 0 # min
tf = 120 # min
n_passos = 1000
t = np.linspace(t0, tf, n_passos)
# Resolvendo a EDO
Sol = odeint(Rxn, Y0, t)
# Separação da solução em todos os balanços
Nhac = Sol[:,0]
Nmeoh = Sol[:,1]
Nmeac = Sol[:, 2]
Nh2o = Sol[:, 3]
V = Sol[:, 4]
# Cálculo do perfil de conversão (X) ao longo do tempo
X = (Nhac0 - Nhac)/Nhac0
# Plotando o gráfico
figure, ax = plt.subplots(1, 2, figsize=(11, 5))
ax[0].plot(t, Nhac, label="HAc")
ax[0].plot(t, Nmeoh, label="MeOH")
ax[0].plot(t, Nmeac, label="MeAc")
ax[0].plot(t, Nh2o, ":", label="H2O")
ax[1].plot(t, X, label="Conversão da Reação")
ax[1].plot(t[-1], X[-1],'o', label = 'Conversão Máxima ({}%)'.format(np.around(X[-1]*100,2)))
ax[0].set_title('Balanço molar dos componentes')
ax[0].set_xlabel('Tempo, t (min)')
ax[0].set_ylabel('Número de mols, N (mol)')
ax[1].set_xlabel('Tempo, t (min)')
ax[1].set_ylabel('Conversão, X')
ax[1].set_title('Conversão da reação ao longo do tempo')
ax[0].legend()
ax[1].legend()
ax[0].grid()
ax[1].grid()
plt.show()
# Importando as bibliotecas necessárias para resolução das equações numéricas e de projeto
import numpy as np #Biblioteca de funções matemáticas
import matplotlib.pyplot as plt #Biblioteca de funções gráficas 2D
from scipy.integrate import odeint #Resolução de EDOs
# Condições do sistema
T = 350 # K
P = 101.3 #kPa
F = 100 #mol/min
Cmeoh0 = 5 # mol/dm³
Fmeoh = 3 # mol/min
v0 = Fmeoh/Cmeoh0
# Condições para a destilação reativa
Tc = 506.5 # K
Pc = 4750 #kPa
MWmeac = 74.08 #g/mol
rho = 943.40 #g/L
Tr = T/Tc
# Define-se a função da reação, que aqui foi chamado de Rxn. Será uma função que dependerá das condições iniciais (Y0) e do tempo (t)
def Rxn(Y, t):
Nhac, Nmeoh, Nmeac, Nh2o, V = Y # Conversão de uma lista para todos os valores
# Concentrações
Chac = Nhac/V
Cmeoh = Nmeoh/V
Cmeac = Nmeac/V
Ch2o = Nh2o/V
# Equações auxiliares de destilação reativa
lnPrsat = 10.703 - 10.0088/Tr - 5.4361*np.log(Tr) + 0.3058*Tr**6
Pvmeac = Pc*np.exp(lnPrsat)
Xmeac = Nmeac/(Nhac+Nmeoh+Nmeac+Nh2o)
Fmeac = Xmeac*(Pvmeac/P)*F
# Lei da velocidade
k = 8.88E8*np.exp(-7032.1/T)
K = 5.2*np.exp((-8000/1.978)*((1/298)-(1/T)))
rhac = -k*((Cmeoh*Chac)-((Cmeac*Ch2o)/K))
# Equações diferenciais
dNhacdt = rhac*V
dNmeohdt = rhac*V + Fmeoh
dNmeacdt = -rhac*V - Fmeac
dNh2odt = -rhac*V
dVdt = v0 - Fmeac*MWmeac/rho
return dNhacdt, dNmeohdt, dNmeacdt, dNh2odt, dVdt
# Nomeando as condições iniciais
Nhac0 = 300 # mols
Nmeoh0 = 0 # mols
Nmeac0 = 0 # mols
Nh2o0 = 0 # mols
V0 = 150 # dm³
Y0 = [Nhac0, Nmeoh0, Nmeac0, Nh2o0, V0]
# Definindo o intervalo e passo de integração
t0 = 0 # min
tf = 120 # min
n_passos = 1000
t = np.linspace(t0, tf, n_passos)
# Resolvendo a EDO
Sol = odeint(Rxn, Y0, t)
# Separação da solução em todos os balanços
Nhac = Sol[:,0]
Nmeoh = Sol[:,1]
Nmeac = Sol[:, 2]
Nh2o = Sol[:, 3]
V = Sol[:, 4]
# Cálculo do perfil de conversão (X) ao longo do tempo
X = (Nhac0 - Nhac)/Nhac0
X = np.array(X)
# Plotando o gráfico
figure, ax = plt.subplots(1, 2, figsize=(11, 5))
ax[0].plot(t, Nhac, label="HAc")
ax[0].plot(t, Nmeoh, label="MeOH")
ax[0].plot(t, Nmeac, label="MeAc")
ax[0].plot(t, Nh2o, label="H2O")
ax[1].plot(t, X, label="Conversão da Reação")
ax[1].plot(t[-1], X[-1],'o', label = 'Conversão Máxima ({}%)'.format(np.around(X[-1]*100,2)))
ax[0].set_title('Balanço molar dos componentes')
ax[0].set_xlabel('Tempo, t (min)')
ax[0].set_ylabel('Número de mols, N (mol)')
ax[1].set_xlabel('Tempo, t (min)')
ax[1].set_ylabel('Conversão, X')
ax[1].set_title('Conversão da reação ao longo do tempo')
ax[0].legend()
ax[1].legend()
ax[0].grid()
ax[1].grid()
plt.show()
# Importando as bibliotecas necessárias para resolução das equações numéricas e de projeto
import numpy as np #Biblioteca de funções matemáticas
import matplotlib.pyplot as plt #Biblioteca de funções gráficas 2D
from scipy.integrate import odeint #Resolução de EDOs
# Análise Sensitiva para a Temperatura
T = [300, 330, 350, 400] # K
Ttab = T
P = 101.3 #kPa
F = 100 #mol/min
#Conversão
Conv_T = [] # Definindo uma lista vazia para utilizar os valores depois
for i in range(len(T)):
# Define-se a função da reação, que aqui foi chamado de Rxn. Será uma função que dependerá das condições iniciais (Y0) e do tempo (t)
def Rxn(Y, t):
Nhac, Nmeoh, Nmeac, Nh2o, V = Y # Conversão de uma lista para todos os valores
# Concentrações
Chac = Nhac/V
Cmeoh = Nmeoh/V
Cmeac = Nmeac/V
Ch2o = Nh2o/V
# Equações auxiliares de destilação reativa
Tr = T[i]/Tc
lnPrsat = 10.703 - 10.0088/Tr - 5.4361*np.log(Tr) + 0.3058*Tr**6
Pvmeac = Pc*np.exp(lnPrsat)
Xmeac = Nmeac/(Nhac+Nmeoh+Nmeac+Nh2o)
Fmeac = Xmeac*(Pvmeac/P)*F
# Lei da velocidade
k = 8.88E8*np.exp(-7032.1/T[i])
K = 5.2*np.exp((-8000/1.978)*((1/298)-(1/T[i])))
rhac = -k*((Cmeoh*Chac)-((Cmeac*Ch2o)/K))
# Equações diferenciais
dNhacdt = rhac*V
dNmeohdt = rhac*V + Fmeoh
dNmeacdt = -rhac*V - Fmeac
dNh2odt = -rhac*V
dVdt = v0 - Fmeac*MWmeac/rho
return dNhacdt, dNmeohdt, dNmeacdt, dNh2odt, dVdt
# Resolvendo a EDO
Sol = odeint(Rxn, Y0, t)
# Separação da solução em todos os balanços
Nhac = Sol[:,0]
Nmeoh = Sol[:,1]
Nmeac = Sol[:, 2]
Nh2o = Sol[:, 3]
V = Sol[:, 4]
# Cálculo do perfil de conversão (X) ao longo do tempo
X = (Nhac0 - Nhac)/Nhac0
X = np.array(X)
Conv_T.append(X[-1])
# Plotando o gráfico
figure, ax = plt.subplots(1, 2, figsize=(11, 5))
ax[0].plot(t, Nhac, label="HAc")
ax[0].plot(t, Nmeoh, label="MeOH")
ax[0].plot(t, Nmeac, label="MeAc")
ax[0].plot(t, Nh2o, label="H2O")
ax[1].plot(t, X, label="Conversão da Reação")
ax[1].plot(t[-1], X[-1],'o', label = 'Conversão Máxima ({}%)'.format(np.around(X[-1]*100,2)))
ax[0].set_title(T[i])
ax[0].set_xlabel('Tempo, t (min)')
ax[0].set_ylabel('Número de mols, N (mol)')
ax[1].set_xlabel('Tempo, t (min)')
ax[1].set_ylabel('Conversão, X')
ax[1].set_title('Conversão da reação ao longo do tempo')
ax[0].legend()
ax[1].legend()
ax[0].grid()
ax[1].grid()
plt.show()
# Importando as bibliotecas necessárias para resolução das equações numéricas e de projeto
import numpy as np #Biblioteca de funções matemáticas
import matplotlib.pyplot as plt #Biblioteca de funções gráficas 2D
from scipy.integrate import odeint #Resolução de EDOs
# Análise Sensitiva para a Pressão
T = 350 # K
P = [101.3, 200, 400, 500] #kPa
Ptab = P
F = 100 #mol/min
#Conversão
Conv_P = [] # Definindo uma lista vazia para utilizar os valores depois
for i in range(len(P)):
# Define-se a função da reação, que aqui foi chamado de Rxn. Será uma função que dependerá das condições iniciais (Y0) e do tempo (t)
def Rxn(Y, t):
Nhac, Nmeoh, Nmeac, Nh2o, V = Y # Conversão de uma lista para todos os valores
# Concentrações
Chac = Nhac/V
Cmeoh = Nmeoh/V
Cmeac = Nmeac/V
Ch2o = Nh2o/V
# Equações auxiliares de destilação reativa
Tr = T/Tc
lnPrsat = 10.703 - 10.0088/Tr - 5.4361*np.log(Tr) + 0.3058*Tr**6
Pvmeac = Pc*np.exp(lnPrsat)
Xmeac = Nmeac/(Nhac+Nmeoh+Nmeac+Nh2o)
Fmeac = Xmeac*(Pvmeac/P[i])*F
# Lei da velocidade
k = 8.88E8*np.exp(-7032.1/T)
K = 5.2*np.exp((-8000/1.978)*((1/298)-(1/T)))
rhac = -k*((Cmeoh*Chac)-((Cmeac*Ch2o)/K))
# Equações diferenciais
dNhacdt = rhac*V
dNmeohdt = rhac*V + Fmeoh
dNmeacdt = -rhac*V - Fmeac
dNh2odt = -rhac*V
dVdt = v0 - Fmeac*MWmeac/rho
return dNhacdt, dNmeohdt, dNmeacdt, dNh2odt, dVdt
# Resolvendo a EDO
Sol = odeint(Rxn, Y0, t)
# Separação da solução em todos os balanços
Nhac = Sol[:,0]
Nmeoh = Sol[:,1]
Nmeac = Sol[:, 2]
Nh2o = Sol[:, 3]
V = Sol[:, 4]
# Cálculo do perfil de conversão (X) ao longo do tempo
X = (Nhac0 - Nhac)/Nhac0
X = np.array(X)
Conv_P.append(X[-1])
# Plotando o gráfico
figure, ax = plt.subplots(1, 2, figsize=(11, 5))
ax[0].plot(t, Nhac, label="HAc")
ax[0].plot(t, Nmeoh, label="MeOH")
ax[0].plot(t, Nmeac, label="MeAc")
ax[0].plot(t, Nh2o, label="H2O")
ax[1].plot(t, X, label="Conversão da Reação")
ax[1].plot(t[-1], X[-1],'o', label = 'Conversão Máxima ({}%)'.format(np.around(X[-1]*100,2)))
ax[0].set_title(P[i])
ax[0].set_xlabel('Tempo, t (min)')
ax[0].set_ylabel('Número de mols, N (mol)')
ax[1].set_xlabel('Tempo, t (min)')
ax[1].set_ylabel('Conversão, X')
ax[1].set_title('Conversão da reação ao longo do tempo')
ax[0].legend()
ax[1].legend()
ax[0].grid()
ax[1].grid()
plt.show()
import pandas as pd
valores_tabela1 = {"P (kPa)": "101.3", "T (K)":Ttab, "Conversão":Conv_T}
df1 = pd.DataFrame(data = valores_tabela1)
print(df1)
valores_tabela2 = {"T (K)":"350", "P (kPa)":Ptab, "Conversão":Conv_P}
df2 = pd.DataFrame(data = valores_tabela2)
print(df2)