Chargement de l'audio en cours
Plus

Plus

Avancement et Python
P.148

Mode édition
Ajouter

Ajouter

Terminer

Terminer

Travailler autrement
CLASSƎ INVƎRSƎƎ


Avancement et Python




Objectifs

Déterminer des avancements finaux à l’aide de Python.

A
Présentation du programme

Coder en python, quel intérêt en chimie ? Avec l'étude des équilibres, programmer peut offrir de nombreuses clés pour prévoir des états finaux de système chimique.

La prévision des quantités de matière à l’état final est un enjeu important, notamment pour les synthèses pour lesquelles des enjeux économiques imposent aux industriels d’améliorer les rendements à moindre coût.

La forme générale de l'équation d'une réaction non totale, présentant un équilibre chimique avec coexistence de tous les produits et de tous les réactifs, est :
a A (aq)+b B(aq)c C (aq)+d D(aq) a   \text{A (aq)} + b  \text{B(aq)} \rightleftarrows c   \text{C (aq)} + d  \text{D(aq)}, avec une constance d'équilibre KK.

1. Évolution des quantités de matière de chaque espèce lors de la réaction

import numpy as np
import matplotlib.pyplot as plt
# La reaction consideree est a A + b B -> c C + d D
# Coefficients stoechiometriques
a, b, c, d = 1, 1, 1, 1
# Quantites de matiere initiales et volume initial
n_iA, n_iB, n_iC, n_iD = 0.1, 0.1, 0, 0
V = 100.0e-3
# Constante d'equilibre
K = 1e-1
# Calcul de l'avancement final et generation des valeurs de x entre 0 mol et xmax
xmax = min(n_iA/a, n_iB/b)
x = np.arange(xmax/10000.0, xmax, xmax/10000.0)
tau = x/xmax
# Calcul des quantites de matiere et du quotient de reaction a chaque avancement x
#n_A = # A complete
#n_B = # A complete
#n_C = # A complete
#n_D = # A complete
#Q_r = # A complete
# Determination de l'avancement final x_f
#for i in range(len(x)) :
#	if () :
#		x_f = x[i]
#		i = i+1
#	else :
#		continue
plt.subplot(2,1,1)
plt.ylabel('Quantites de matiere \n de A, B, C et D (mol/L)', fontsize=8)
plt.title('Evolutions des concentrations et du quotient de reaction', fontsize=8)
plt.grid()
plt.axis(xmin=0, xmax=xmax)
#plt.axvline(x = x_f, label = 'x_f')
#plt.plot(x, n_A, color = 'red', label='n_A')
#plt.plot(x, n_B, color = 'blue', label='n_B')
#plt.plot(x, n_C, color = 'green', label='n_C')
#plt.plot(x, n_D, color = 'orange', label='n_D')
plt.legend()
plt.show()
plt.subplot(2,1,2)
plt.xlabel('Avancement x (mol)', fontsize=8)
plt.ylabel('Constante de reaction Q_r \n et constante d\'equilibre K', fontsize=8)
#plt.axvline(x = x_f, label = 'x_f')
plt.axis(xmin=0, xmax=xmax)
plt.plot(x, K*np.ones(len(x)), color = 'blue', label='K')
#plt.plot(x, Q_r, color = 'red', label='Q_r')
plt.yscale('log')
plt.legend()
plt.show()
print('L\'avancement final correspond a x_f = ' + str(x_f) + ' mol, soit un taux d\'avancement final tau_f = ' + str(x_f/xmax) + '.')

2. Certaines lignes ne sont pas complétées. Utilisez la console Python pour effectuer des tests de programmation.
Voir les réponses

B
Finalisation du programme

1. Le programme, dans un premier temps, doit pouvoir calculer les quantités de matière à chaque nouvel avancement xx. À l’aide d’un tableau d’avancement, compléter les lignes 22 à 25 permettant de calculer les quantités de matière nA,nB,nCn_\text{A}, n_\text{B}, n_\text{C} et nDn_\text{D}.

2. Décommenter les lignes 42 à 45 permettant de représenter l’évolution des quantités de matière au cours de l’avancement xx.

Le quotient de réaction QrQ_\text{r} est une grandeur ne dépendant que des concentrations des espèces chimiques en solution. Le solvant et les solides n’ont pas d’influence :
Qr=(nCV)c(nDV)d(nAV)a(nBV)bQ_\text{r}=\dfrac{\left(\dfrac{n_\text{C}}{V}\right)^\text{c} \cdot\left(\dfrac{n_\text{D}}{V}\right)^\text{{d}}}{\left(\dfrac{n_\text{A}}{V}\right)^\text{{a}} \cdot\left(\dfrac{n_\text{B}}{V}\right)^\text{{b}}}

On considère un volume VV constant au cours de la réaction. La concentration standard c°, évoquée dans le chapitre, n'est pas abordée ici.

3. Compléter la ligne 26 permettant de calculer le quotient de réaction QrQ_\text{r} à chaque avancement xx.

4. Décommenter la ligne 55 permettant d’afficher l’évolution de QrQ_\text{r} en fonction de l’avancement xx.

La boucle permettant la détermination de l’avancement final xfx_\text{f}, entre les lignes 29 et 34, nécessite une condition pour être fonctionnelle. Pour une réaction chimique, si QrQ_\text{r} atteint la constante d’équilibre KK, l’avancement final xfx_\text{f} est atteint.

5. Décommenter les lignes 29 à 34 ainsi que les lignes 41, 52 et 60. Écrire la condition permettant la détermination de l’avancement final xfx_\text{f} et lancer le programme.

6. Utiliser le programme et l’adapter, si besoin, aux différents exercices du chapitre 6 pour vérifier les applications numériques.
Utilisation des cookies
En poursuivant votre navigation sans modifier vos paramètres, vous acceptez l'utilisation des cookies permettant le bon fonctionnement du service.
Pour plus d’informations, cliquez ici.