Transformation modélisée par deux actes élémentaires opposés

Cas de deux actes élémentaires opposés


Présentation du cadre de l'étude

Ce document s'intéresse à la modélisation cinétique d'une transformation modélisée par deux actes élémentaires opposés, c'est-à-dire que deux processus élémentaires coexistent :

\begin{align} \mathsf{ A \xrightarrow{\text{$k_{d}$}} \mathsf B \\ B \xrightarrow{\text{$k_{i}$}} \mathsf A } \end{align}

où $\mathsf{k_d}$ et $\mathsf{k_i}$ représentent les constantes de vitesse de l'acte élémentaire "sens direct" et de l'acte élémentaire "sens inverse".

Les lois de vitesse des actes élémentaires peuvent s'écrire : \begin{align} \mathsf{ v_d=k_d [A] \\ v_i=k_i [B]} \end{align} L'acte élémentaire "direct" contribue à augmenter la concentration de l'expèce $\mathsf{A}$, alors que l'acte élémentaire "inverse" contribue à la diminuer. Ainsi, les variations temporelles de la concentration de l'espèce $\mathsf{A}$ sont régies par l'équation différentielle : \begin{align}\mathsf{ \frac{d[A]}{dt} = -v_d + v_i \\ \frac{d[A]}{dt}= -k_d[A] + k_i [B]\\} \end{align} De la même façon, les variations temporelles de la concentration de l'espèce $\mathsf{B}$ sont régies par l'équation différentielle : \begin{align} \mathsf{ \frac{d[B]}{dt} = +k_d[A] - k_i [B] } \end{align}

Méthode d'intégration

La méthode d'Euler utilisée ici pour intégrer l'équation différentielle est la méthode d'Euler. Celle-ci utilise la formule de Taylor qui permet d'écrire pour $\mathsf{h\to 0}$ : \begin{equation} \mathsf{f(t_0+h)=f(t_0)+ \left(\frac{df}{dt}\right)_{t_0}\cdot h} \end{equation}

Cette relation permet de calculer la concentration d'une espèce à un instant $\mathsf{t_0+h}$ connaissant sa valeur à l'instant $\mathsf{t_0}$ et la valeur de la dérivée à l'instant $\mathsf{t_0}$. Par exemple, pour la concentration de l'espèce $\mathsf{A}$ : \begin{equation} \mathsf{[A]_{t_0+h}=[A]_{t_0}+ \left(\frac{d[A]}{dt}\right)_{t=t_0} \cdot h} \end{equation}

\begin{equation} \mathsf{[A]_{t_0+h}=[A]_{t_0}+ \left(-k_d[A]_{t_0} + k_i [B]_{t_0}\right) \cdot h} \end{equation}

La méthode d'Euler nécessite :

  • de connaître les valeurs initiales des grandeurs à intégrer (ici, $\mathsf{[A]}$ et $\mathsf{[B]}$)
  • d'utiliser un pas de calcul $\mathsf{h}$ petit.

En outre, sur le plan chimique, les concentrations des réactifs ne peuvent devenir négatives, ce qui impose une condition supplémentaire dans la boucle de calcul.

Notations

A l'état initial, la concentration de l'espèce $\mathsf{A}$ est notée $\mathsf{a}$ et celle de l'espèce $\mathsf{B}$ est notée $\mathsf{b}$.

Bibliothèques utilisées

La bibliothèque matplolib est utilisée pour tracer des graphiques.

Manipulation du script

Les paramètres suivants peuvent être modifiés :

  • Concentrations initiales des espèces $\mathsf{A}$, $\mathsf{B}$ et $\mathsf{C}$,
  • Valeurs des constantes de vitesse (en particulier, pour tester l'effet des valeurs relatives des constantes $\mathsf{k_{d}}$ et $\mathsf{k_{i}}$ sur le raport final des concentrations des espèces $\mathsf{A}$ et $\mathsf{B}$.
  • Pas de calcul, durée d'intégration (afin de visualiser l'effet d'une utilisation d'un pas de calcul trop grand).
In [ ]:
import matplotlib.pyplot as plt

"""Conditions initiales"""
a=1   # en mol/L
b=0   # en mol/L

"""Paramètres de la méthode d'intégration"""
h=0.001         # en s
duree = 1       # en s

"""Valeurs des constantes de vitesse"""
kd=10         # en s^(-1)
ki=2          # en s^(-1)

"""Listes des valeurs calculées des concentrations"""
LT=[0]        # liste des instants t
LA=[a]        # liste des concentrations successives de A
LB=[b]        # liste des concentrations successives de B

""" Boucle d'intégration"""
nbpts =duree/h  
i=1
while i<=nbpts and LA[-1] >= 0 and LB[-1] >= 0 :
    A=LA[-1]
    B=LB[-1]
    LT.append(i*h)
    LA.append(A - kd*A*h + ki*B*h)
    LB.append(B + kd*A*h - ki*B*h)
    i=i+1

"""Tracé des courbes des concentrations calculées en fonction du temps"""
plt.figure(1)
plt.plot(LT,LA,'b--', label='réactif A')
plt.plot(LT,LB,'g--', label='produit B')
plt.xlabel('t en s')
plt.ylabel('Concentrations en $mol.L^{-1}$')
plt.title(f"kd = {kd} s^(-1) et ki = {ki} s^(-1) ")
plt.legend()
plt.grid()
plt.show()

Conclusion

Après une certaine durée de réaction, les concentrations des espèces $\mathsf A$ et $\mathsf B$ tendent à ne plus varier. Cela permet d'affirmer que les réactions en sens direct et en sens inverse tendent à devenir égales : \begin{equation} \mathsf{ 0=\frac{d[A]}{dt}_\infty = -v_d + v_i } \end{equation}

\begin{equation} \mathsf{ v_d = v_i \\ } \end{equation}\begin{equation} \mathsf{ k_d\cdot [A]_{\infty} = k_i \cdot [B]_{\infty} \\ } \end{equation}\begin{equation} \mathsf{ \frac{[B]_{\infty}}{[A]_{\infty}} = \frac{k_d}{k_i} } \end{equation}

Approximation du pré-équilibre établi rapidement


Présentation du cadre de l'étude

On s'intéresse cette fois à la modélisation cinétique d'une transformation modélisée par trois actes élémentaires, dont deux opposés, pouvant ou non atteindre l'état d'équilibre chimique :

\begin{align} \mathsf{ A \xrightarrow{\text{$k_{1d}$}} B\\ B \xrightarrow{\text{$k_{1i}$}} A \\ B \xrightarrow{\text{$k_{2}$}} C } \end{align}

L'évolution temporelle des concentrations est régie par les équations différentielles suivantes : \begin{equation} \mathsf{ \frac{d[A]}{dt} = -k_{1d}[A] + k_{1i} [B] \\ \frac{d[B]}{dt} = +k_{1d}[A] - k_{1i} [B] - k_2 [B] \\ \frac{d[C]}{dt} = + k_2 [B] } \end{equation}

La question ici est de savoir s'il est possible de considérer le rapport des concentrations $\mathsf{\frac{[B]}{[A]}}$ constant.

Notations

A l'état initial, la concentration de l'espèce $\mathsf{A}$ est notée $\mathsf{a}$, celle de l'espèce $\mathsf{B}$, $\mathsf{b}$, et celle de l'espèce $\mathsf{C}$, $\mathsf{c}$.

Manipulation du script

Les paramètres suivants peuvent être modifiés :

  • Concentrations initiales des espèces $\mathsf{A}$, $\mathsf{B}$ et $\mathsf{C}$,
  • Valeurs des constantes de vitesse (en particulier, pour tester les situations $\mathsf{k_2 << {k_{1d},k_{1i}}}$ et $\mathsf{k_2 >> {k_{1d},k_{1i}}}$,
  • Pas de calcul, durée d'intégration (afin de visualiser l'effet d'une utilisation d'un pas de calcul trop grand).
In [ ]:
import matplotlib.pyplot as plt

"""Conditions initiales"""    # en mol/L
a=1
b=0
c=0

"""Paramètres de la méthode d'intégration"""
h=0.001      # en s
duree = 5    # en s

"""Constantes de vitesse"""
k1d=10      # en s^(-1)
k1i=2       # en s^(-1)
k2=.5       # en s^(-1)

"""Listes des valeurs des concentrations, des instants t et du rapport des
concentrations [B]/[A]"""
LT=[0]
LA=[a]
LB=[b]
LC=[c]
LR=[b/a]

""" Boucle d'intégration"""
nbpts=duree/h
i=1
while i<=nbpts and LA[-1] >= 0 and LB[-1] >= 0 :
    A=LA[-1]
    B=LB[-1]
    C=LC[-1]
    LT.append(i*h)
    LA.append(A - k1d*A*h + k1i*B*h)
    LB.append(B + k1d*A*h - k1i*B*h - k2*B*h)
    LC.append(C+ k2*B*h)
    LR.append(B/A)
    i=i+1

"""Tracé des courbes des concentrations calculées en fonction du temps"""
plt.figure(1)
plt.title(f"k1d = {k1d} s^{-1} \n k1i = {k1i} s^{-1} \n k2 = {k2} s^{-1}")
plt.plot(LT,LA,'b--', label='réactif A')
plt.plot(LT,LB,'g--', label='intermédiaire B')
plt.plot(LT,LC,'k--', label='produit C')
plt.xlabel('t en s')
plt.ylabel('Concentrations en $mol.L^{-1}$')
plt.grid()
plt.legend()

plt.figure(2)
plt.plot(LT,LR,'b--')
plt.xlabel('t en s')
plt.ylabel('Rapport [B]/[A] ')
plt.grid()
plt.show()