1. Réaction trimoléculaire pure | 2. Réaction trimoléculaire générale |
A + B + C → P k (r 8)
Nous ne programmerons que le cas général où les trois réactifs sont
différents. Les fonctions eqdiff
et fappel
peuvent
être écrites de la manière suivante :
//-----------------------------------------------------------
void eqdiff (Sa_data x, Sa_data* y, Sa_data* dy)
{
dy[0] = -
p[0]*y[0]*(ca[1][0]-ca[0][0]+y[0])*(ca[2][0]-ca[0][0]+y[0]); //dA/dt
}
//-----------------------------------------------------------
void fappel()
{
srkvi(n_diff, &ca[first_var], ind, npt, h0, tol, iset, jacob, h_compt,
c_min);
for (int i = 0; i < npt; ++i)
{
ca[1][i] = ca[1][0]-ca[0][0]+ca[0][i]; // B
ca[2][i] = ca[2][0]-ca[0][0]+ca[0][i]; // C
ca[3][i] = ca[3][0]+ca[0][0]-ca[0][i]; // P
}
}
//------------------------------------------------------------
Cette version, ressemblant à celle de l'exercice
3 (ordre_2gen_multi.cpp) ne présente aucune difficulté supplémentaire.
Simulez d'abord avec ce programme une réaction trimoléculaire pure. Il suffit pour cela de prendre des concentrations initiales identiques pour A, B et C. La simulation sera alors correcte, à condition toutefois d'utiliser une constante de vitesse k' = 3k, afin de tenir compte du coefficient stœchiométrique de l'espèce réactive. La concentration obtenue pour le produit P, par contre, ne sera pas correcte et devrait être divisée par 3 dans ces conditions. Essayez les paramètres suivants :
k' / mol−2.L2.s−1 |
A0 / mol.L−1 |
B0 / mol.L−1 |
C0 / mol.L−1 |
Fin / s |
Incrément / s |
Pas max / s |
---|---|---|---|---|---|---|
3×106 | 10−3 | 10−3 | 10−3 | 50 | 0.1 | 10−1 + Auto |
Vous constatez que si l'échelle de temps choisie est relativement adaptée au début de la réaction, elle ne l'est plus pour la "fin", qui devient très lente. C'est l'occasion d'apprendre deux nouvelles possibilités de Sa :
Vous avez la possibilité de poursuivre la cinétique à partir de l'endroit où elle est arrivée. Pour cela, rendez-vous sur l'onglet Variables et cliquez sur le bouton portant une flèche bleue dont l'info-bulle indique : recopie les valeurs finales dans les valeurs initiales. Vous voyez effectivement les valeurs initiales changer. Il suffit alors de relancer une simulation, sans rien changer d'autre, pour obtenir une nouvelle tranche de 50 s de la cinétique. Notez toutefois que le temps de la nouvelle simulation va toujours de 0 à 50 s. Il vous revient de lui ajouter 50 s si vous voulez vous référer au début réel de la réaction.
Vous pouvez aussi relancer une simulation en mettant, par exemple, Fin = 1000 s et Incrément = 5 s (supérieur ou égal en tout cas à Fin/1000 pour éviter le message "Maximum de points dépassé"). Mais vous constatez alors, en regardant le fichier .sad, qu'il n'y a plus que très peu de points dans la partie rapide de la réaction. Pour remédier à cela, vous pouvez choisir le mode d'incrémentation logarithmique :
- cliquez sur le mode log (s'il ne l'est pas déjà, le mode Auto du pas max d'intégration est activé)
- choisissez un incrément supérieur à 1, par exemple 1.2
- mettez une valeur légèrement positive à Début, par exemple 10−6
N'oubliez pas de remettre les concentrations initiales du tableau 1, et lancez une nouvelle simulation. Vous constatez que cette fois la cinétique est correctement échantillonnée d'un bout à l'autre (regardez le fichier .sad).
Ce mode d'incrémentation convient particulièrement pour les réactions
présentant des écarts de vitesse important avec la phase rapide au début (ce
n'est pas le cas de l'autocatalyse).
Dans le mode d'incrémentation logarithmique, le temps s'arrête à la dernière valeur inférieure à Fin.
D'une manière analogue, vous pouvez simuler également avec ce programme une
réaction trimoléculaire du type 2 A + B → P.
Revenez au mode d'incrémentation normal et aux valeurs de paramètres du tableau 1, sauf :
k = 106 mol−2.L2.s−1 (il n'y a plus de k')
B0 = 1.2×10−3 mol.L−1
C0 = 1.4×10−3 mol.L−1
Simulez.
Vous constatez, d'une part, que la réaction démarre plus lentement, c'est normal puisque la constante de vitesse a été divisée par 3, mais, d'autre part, que la réaction est cette fois quasi terminée en 50 s. Il n'y a plus une aussi grande différence entre les phases initiale et finale que dans le cas précédent. Et cela bien que les excès de B et C soient relativement petits : ils suffisent à maintenir une vitesse de réaction relativement élevée même lorsque la concentration de A tend vers zéro.
Vous pouvez vérifier que si vous mettez l'une des concentrations B0 ou C0 en grand excès (10×A0 par exemple), la cinétique se rapproche d'un ordre 2, et si vous les mettez toutes les deux en grand excès elle se rapproche d'un ordre 1 (naturellement, elle est aussi globalement accélérée).
A l'inverse, si vous rapprochez les concentrations B0 et C0 de A0, vous retrouverez une cinétique comparable à celle de la réaction trimoléculaire pure (au facteur 3 près).