# Chapitre 17 — Suivi cinétique d'une réaction par capteur de pression
# ---------------------------------------------------------------------
# La décomposition de l'eau oxygénée (catalysée) dégage du dioxygène :
#       2 H2O2 (aq)  ->  2 H2O (l)  +  O2 (g)
# Elle se déroule dans une enceinte FERMÉE de 250 mL maintenue à 25 °C,
# équipée d'un capteur de pression. À V et T fixés, P = (RT/V) x n_gaz :
# mesurer P, c'est mesurer la quantité de gaz (voir le cours, §2).

# --- constantes et conditions de l'expérience ---
R = 8.31         # J.mol-1.K-1
T = 298.15       # K (25 °C)
V = 2.50e-4      # m3 (250 mL)
n0 = 1.00e-2     # mol de H2O2 au départ
P0 = 1013.0      # hPa : pression initiale (l'air de l'enceinte)

# --- les mesures du capteur ---
t = [0, 100, 200, 300, 400, 500, 600, 700,
     800, 900, 1000, 1100, 1200]          # s
P = [1013, 1117, 1195, 1262, 1310, 1353, 1385, 1409,
     1432, 1447, 1458, 1471, 1478]        # hPa

# --- conversion : de la pression aux quantités de matière ---
n_O2 = []
n_rest = []
for i in range(len(t)):
    dP = (P[i] - P0) * 100        # la surpression, en Pa
    nO2 = 0                       # quantité d'O2 formé      # À COMPLÉTER
    nH2O2 = 0                     # quantité de H2O2 restant # À COMPLÉTER
    n_O2.append(nO2)
    n_rest.append(nH2O2)

# --- temps de demi-réaction (fourni, ne pas modifier) ---
i = 0
while n_rest[i] > n0 / 2:
    i = i + 1
print("temps de demi-reaction : environ", t[i], "s")

# --- tracé (fourni, ne pas modifier) ---
import matplotlib.pyplot as plt
n_rest_mmol = []
for n in n_rest:
    n_rest_mmol.append(n * 1e3)
plt.plot(t, n_rest_mmol, 'o-', label="H2O2 restant")
plt.axhline(n0 / 2 * 1e3, linestyle='--', color='gray', label="n0/2")
plt.xlabel("t (s)")
plt.ylabel("n (mmol)")
plt.legend()
plt.grid()
plt.show()
