Está en la página 1de 11

Universidad de La Sabana

Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

MODELAMIENTO DE UNA REACCIÓN QUÍMICA

Taller de Reacciones químicas

1. Leer ejemplo 2.2 de Bequette


2. Con base en la información suministrada en este ejemplo, desarrolle el modelo de las
siguientes reacciones con las siguientes consideraciones:
a. Volumen constante
b. Isotérmico
c. Operación en modo continuo

Volumen del reactor: 50 L


Flujo: 4 L/s
Concentraciones iniciales para los reactivos: 1 mol/L

Una vez tenga el modelo, programe este en Python y analice el resultado. Determiné que
sucede si el volumen del reactor cambia.

Las reacciones son:

REACCION ESTUDIANTES ASIGNADOS


b. C3H6O + H2O  C3H8O2 Laura Trejos, Jeraldine Sánchez,
Valentina Carrero

 VOLUMEN CONSTANTE:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

D = 150
ti = 0
tf = 50

# function that returns dz/dt


def model(z,t):

Fi = 4 #L/s
CAi = 1 #mol/L
CBi = 1 #mol/L
K = 0.967 #s-1
V = 50 #L
F=Fi

CA = z[0]
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

CB = z[1]
CC = z[2]
#DRhomix = z[3]

dCAdt = (Fi/V)*(CAi) -(F/V)*(CA)- (K*CA*CB)


dCBdt = (Fi/V)*(CBi)-(F/V)*(CB) - (K*CA*CB)
dCCdt = (-F/V)*(CC) + (K*CA*CB)

dzdt = [dCAdt,dCBdt,dCCdt]
return dzdt

# initial condition
z0 = [1,1,0]

# time points
t = np.linspace(ti,tf,D)

# solve ODE
z = odeint(model,z0,t)

# plot results
plt.plot(t,z[:,0],'b-',label=r'CA')
plt.plot(t,z[:,1],'y--',label=r'CB')
plt.plot(t,z[:,2],'g--',label=r'CC')
plt.ylabel('response')
plt.xlabel('time')
plt.legend(loc='best')
plt.show()
print(z,t)
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

 VOLUMEN VARIABLE:
o Cuando F=Fi
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
from matplotlib import rc
rc('mathtext', default='regular')

D = 50
ti = 0
tf = 100

# function that returns dz/dt


def model(z,t):

Fi = 4 #L/s
CAi = 1 #mol/L
CBi = 1 #mol/L
#CCi = 1 #mol/L
K = 0.967
F = Fi

CA = z[0]
CB = z[1]
CC = z[2]
V = z[3]

dCAdt = (Fi/V)*(CAi) -(F/V)*(CA)- (K*CA*CB)


dCBdt = (Fi/V)*(CBi)-(F/V)*(CB) - (K*CA*CB)
dCCdt = (-F/V)*(CC) + (K*CA*CB)
dVdt = Fi - F

dzdt = [dCAdt,dCBdt,dCCdt,dVdt]
return dzdt

# initial condition
z0 = [1,1,0,50]

# time points
t = np.linspace(ti,tf,D)

# solve ODE
z = odeint(model,z0,t)

# plot results
fig = plt.figure()
ax = fig.add_subplot(111)
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

ax.plot(t,z[:,0],'b.-',label=r'CA')
ax.plot(t,z[:,1],'m-',label=r'CB')
ax.plot(t,z[:,2],'g--',label=r'CC')

ax2 = ax.twinx()
ax2.plot(t, z[:,3],'r.-',label=r'Vol')

ax.legend(loc=0)
ax2.legend(loc=2)

ax.grid()
ax.set_xlabel("Time (s)")
ax.set_ylabel("Concentration (mol/L)")
ax2.set_ylabel("Volumen (L)")
ax2.set_ylim(0, 60)
ax.set_ylim(0,1)
plt.show()

o Cuando F=Fi-0,05*Fi

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

D = 50
ti = 0
tf = 100
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

# function that returns dz/dt


def model(z,t):

Fi = 4 #L/s
CAi = 1 #mol/L
CBi = 1 #mol/L
#CCi = 1 #mol/L
K = 0.967
F = Fi - 0.05*Fi

CA = z[0]
CB = z[1]
CC = z[2]
V = z[3]

dCAdt = (Fi/V)*(CAi) -(F/V)*(CA)- (K*CA*CB)


dCBdt = (Fi/V)*(CBi)-(F/V)*(CB) - (K*CA*CB)
dCCdt = (-F/V)*(CC) + (K*CA*CB)
dVdt = Fi - F

dzdt = [dCAdt,dCBdt,dCCdt,dVdt]
return dzdt

# initial condition
z0 = [1,1,0,50]

# time points
t = np.linspace(ti,tf,D)

# solve ODE
z = odeint(model,z0,t)

# plot results
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(t,z[:,0],'b.-',label=r'CA')
ax.plot(t,z[:,1],'m-',label=r'CB')
ax.plot(t,z[:,2],'g--',label=r'CC')
ax2 = ax.twinx()
ax2.plot(t, z[:,3],'r.-',label=r'V')
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

ax.legend(loc=0)
ax.grid()
ax.set_xlabel("Time (s)")
ax.set_ylabel("Concentration (mol/L)")
ax2.set_ylabel("Volumen (L)")
ax2.set_ylim(0, 60)
ax.set_ylim(0,1)
plt.show()

o Cuando F=Fi+0,05*Fi
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

D = 50
ti = 0
tf = 100

# function that returns dz/dt


def model(z,t):

Fi = 4 #L/s
CAi = 1 #mol/L
CBi = 1 #mol/L
#CCi = 1 #mol/L
K = 0.967
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

F = Fi + 0.01*Fi

CA = z[0]
CB = z[1]
CC = z[2]
V = z[3]

dCAdt = (Fi/V)*(CAi) -(F/V)*(CA)- (K*CA*CB)


dCBdt = (Fi/V)*(CBi)-(F/V)*(CB) - (K*CA*CB)
dCCdt = (-F/V)*(CC) + (K*CA*CB)
dVdt = Fi - F

dzdt = [dCAdt,dCBdt,dCCdt,dVdt]
return dzdt

# initial condition
z0 = [1,1,0,50]

# time points
t = np.linspace(ti,tf,D)
# solve ODE
z = odeint(model,z0,t)

# plot results
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(t,z[:,0],'b.-',label=r'CA')
ax.plot(t,z[:,1],'m-',label=r'CB')
ax.plot(t,z[:,2],'g--',label=r'CC')
ax2 = ax.twinx()
ax2.plot(t, z[:,3],'r.-',label=r'V')
ax.legend(loc=0)
ax.grid()
ax.set_xlabel("Time (s)")
ax.set_ylabel("Concentration (mol/L)")
ax2.set_ylabel("Volumen (L)")
ax2.set_ylim(0, 60)
ax.set_ylim(0,1)
plt.show()
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II
Universidad de La Sabana
Facultad de Ingeniería
Dinámica de procesos y control
V. 2020-II

También podría gustarte