mise à jour :31-03-2010 cinet.chim

VI.6.3  Réduction du Mn(III)

logo Sa

Exercice 24


Sa - exercice 24
Réduction du Mn(III)

H2C2O4   ⇄   HC2O4 + H+     pKa1 = 1.3     (r 6A)
  HC2O4   ⇄   C2O42− + H+     pKa2 = 4.3     (r 6B)
  H2SO4   ⇄   HSO4 + H+     pKa3 = −9     (r 6C)
HSO4   ⇄   SO42− + H+     pKa4 = 2     (r 6D)
Mn3+ + C2O42−   ⇄   [Mn(C2O4)]+     KE     (r 6E)
[Mn(C2)]4)]+ + C2O42−   ⇄   [Mn(C2O4)2]     KF     (r 6F)
[Mn(C2O4)]+   →   Mn2+ + CO2 + CO2•−     kG     (r 6G)
[Mn(C2O4)2]   →   Mn2+ + CO2 + CO2•− + C2O42−     kH   (r 6H)
2CO2•−   →   C2O42−     kI     (r 6I)

1. Programmation : pré-équilibres

Le modèle de réduction du Mn(III) (r 6A-I) associe les réactions de réduction proprement dites (6G et 6H), relativement lentes,  aux réactions réversibles rapides de dissociation des deux diacides et de formation des complexes III1 et III2 avec l'ion oxalate. Ces équilibres sont déplacés au cours de la réaction, tout en restant pratiquement à l'équilibre.

Dans cette situation, à cause de la coexistence de ces échelles de temps très différentes, des problèmes numériques peuvent apparaître. Afin de les éviter, mais également parce que cela correspond à la situation physique réelle, ces équilibres rapides doivent être pré-établis avant le commencement de la réaction proprement dite. Autrement dit, les vraies concentrations initiales seront celles qui résultent des différentes dissociations et complexations rapides (soit 9 concentrations différentes), et non les concentrations globales en acides oxalique et sulfurique et en Mn(III).

Une solution pour réaliser cela serait d'utiliser un premier programme calculant ces équilibres, lesquels seraient ensuite introduits comme concentrations initiales dans un deuxième programme, calculant la cinétique de la réaction proprement dite. Mais il est plus élégant, et beaucoup plus commode, de combiner ces deux opérations dans le même programme et de n'avoir à manipuler directement que les concentrations globales en acide oxalique et sulfurique.

Le principe est d'utiliser en premier lieu l'intégrateur srksta pour obtenir l'équilibre, puis srkvi pour la cinétique.

Mais les systèmes d'équations différentielles sont différents dans les deux cas : il y a trois réactions (6G, 6H et 6I) et deux variables (Mn2+ et CO2•−) supplémentaires pour la cinétique.
- Le système complet, qui comporte 12 équations, est écrit dans la fonction eqdiff habituelle.
- Le système ne comportant que les équilibres, soit 10 équations, est écrit dans une fonction que nous appelons pre_equilibre, strictement analogue à eqdiff, c'est-à-dire de même prototype : même nature (void), même nombre et nature d'arguments (Sa_data x, Sa_data* y, Sa_data* dy).

L'identité de prototype est indispensable. Par contre les noms des arguments, x, y, dy, peuvent être différents, comme d'ailleurs on peut leur donner des noms différents dans eqdiff. Le choix du nom d'une nouvelle fonction comme pre-equilibre est entièrement libre.

On pourrait utiliser aussi une seule fonction, eqdiff, à la manière de l'exercice 14.

Télécharger MnIII_pre_eq_10exp.cpp     

La fonction fappel est prévue pour plusieurs expériences (boucle ligne 8) et fait apparaître clairement le calcul du pré-équilibre (lignes 10 à 23) et de la cinétique (24 à 30) :

//----------------------------------------------------------------------------
1   void fappel()
2   {
3      for (int i = 0; i < np; ++i)  
4         p[i] = fabs(p[i]);

5      //déclarations spécifiques pour srksta :
6      Sa_data ca1[NVAR][3];
7      Sa_data ind1[3];

8      for (int k = 0; k < nexp; k++)
9      {
10        // A - pré-équilibres H2C2O4/H2SO4/MnIII:
11        eq_system = pre_equilibre;
12        n_diff = 10;
13        // initialisation ca1 :
14        for (int j = 0; j < n_diff; ++j)
15           for (int m = 0; m < 3; ++m)
16              ca1[j][m] = 0;
17        ca1[0][0] = p[16+k]; // [H2C2O4] total initial
18        ca1[3][0] = p[26+k]; // [H2SO4] total initial
19        ca1[9][0] = p[36+k]; // [III] total initial

20        srksta(n_diff, ca1, ind1, 0, 0, 0, h0, tol, iset, jacob, h_compt, c_min);
21        // recopie de l'équilibre dans Ca  
22        for (int j = 0; j < n_diff; ++j) 
23           Ca(k,j,0) = ca1[j][2];
 
24        // B - cinétique :
25        eq_system = eqdiff;
26        n_diff = 12;
27        first_var = k*nv_mod;

28        srkvi(n_diff, &ca[first_var], ind, npt, h0, tol, iset, jacob, h_compt, c_min);

29        for (int i = 0; i < npt; ++i)  
30           Ca(k,12,i) = p[15]*Ca(k,9,i); // Abs. due à [Mn(C2O4)2]- ; p[15] = l*epsilon
31     }
32  }
//----------------------------------------------------------------------------

Les appels de srksta et de srkvi sont regroupés ici dans une même fonction fappel, mais vous reconnaissez pour chacun la façon habituelle de les utiliser. La seule nouveauté est l'affectation successive des fonctions pre_equilibre et eqdiff, aux lignes 11 et 25 respectivement, à la variable-fonction eq_system. En réalité, c'est eq_system que les deux intégrateurs appellent en interne. Mais nous n'avons pas encore évoqué cette variable car la fonction eqdiff lui est affectée par défaut, rendant ce mécanisme invisible dans les situations les plus habituelles. Naturellement, il faut accompagner l'affectation de eq_system de l'affectation correspondante de n_diff (lignes 12 et 26).

Noter que les deux parties (pré-équilibre et cinétique) écrivent leur résultat dans la même table ca : les variables sont réellement communes, mais le pré-équilibre ignore les variables 10, 11 (Mn2+ et CO2•−) et 12 (absorbance). De même, les équations utilisent les mêmes constantes de vitesses.

Le fichier expérimental comportant 10 expériences, dans le fichier .sac, on a affecté p[26 à 25] aux 10 concentrations initiales d'acide oxalique total, p[26 à 35] à celles de l'acide sulfurique, et p[36 à 45] à celles du Mn(III), d'où l'initialisation des variables correspondantes aux lignes 17-19.

Le nombre d'expériences dans les fichiers en mode Multi est limité à 10. Un avertissement est donné si l'on tente de mettre nexp à une valeur supérieure.


2. Optimisation / Simulation

Télécharger MnIII_10exp_opt.sac       Télécharger MnIII_10exp.exp

Le fichier MnIII_10exp_opt.sac contient les paramètres, kG (p[12]) et kH(p[13]) optimisés. Les autres paramètres sont fixés aux valeurs de la littérature. Pour les réactions réversibles, les constantes de vitesse sont fixées à des valeurs suffisamment élevées pour que la mise à l'équilibre soit rapide devant la cinétique globale. Le rapport de la constante dans le sens direct et dans le sens inverse est égal à la constante d'équilibre. La constante ki a été fixée à 109 mol−1.L.

Le fichier expérimental, MnIII_10exp.exp, est en mode Multi et doit donc être lu comme tel. Les quatre premières expériences sont des cinétiques complètes données par l'absorbance à 456 nm (variable 12). Les six suivantes ne comportent qu'un seul point, correspondant au t1/2, où la valeur de III2 est la moitié de la valeur initiale (les quantités de III1 et de Mn3+ restent toujours très petites). Le calcul donnera la cinétique complète pour ces expériences et montrera qu'elles passent, ou non, par le point t1/2.

Vous observerez que les quatre cinétiques complètes, proches de l'ordre 1, ne sont pas parfaitement ajustées. Le point le plus important ici est d'obtenir le bon échelonnement des cinétiques en fonction des concentrations initiales, le but final recherché étant d'expliquer le comportement particulier de la réaction KMnO4 / H2C2O4 / H2SO4. Comme montré sur la figure VI.19, simple transcription des résultats de l'optimisation, l'echelonnement obtenu ici, avec un modèle réduit à un nombre minimum de réactions, est en accord avec l'expérience.