🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_227cvmn_227.py
Version 1.0.0
Date de création 02/03/2026
Auteur / Demandeur IA Générée (Gemini)
Objectif principal Simuler et visualiser en temps réel la cinétique d’une réaction chimique A+B→C sur une grille 2D via un automate cellulaire.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script modélise le comportement de particules (molécules) sur une grille. Il simule leur déplacement aléatoire (diffusion) et leurs interactions. Lorsqu’une molécule A rencontre une molécule B sur la même case, elles réagissent pour former une molécule stable C. Une animation affiche simultanément l’état spatial de la grille et les courbes de population (cinétique) au cours du temps.
📌 Problème résolu
Il permet de visualiser l’impact de la diffusion spatiale sur la vitesse d’une réaction chimique, illustrant comment la rencontre physique des réactifs limite la formation de produits dans un milieu non agité.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution Interface Graphique (Matplotlib Animation)
📦 Dépendances / Librairies
numpy : Calcul vectorisé pour la grille et la gestion des coordonnées.
matplotlib : Moteur de rendu graphique et animation (FuncAnimation).
📥 ENTRÉES (INPUTS)
📂 Paramètres de Configuration (Constantes)
# Nom Type Obligatoire Description Exemple
1 N int ✅ Oui Taille de la grille (N×N) 100
2 INITIAL_DENSITY float ✅ Oui Proportion de la grille remplie par A et B 0.3 (30%)
3 STEPS int ✅ Oui Nombre de pas de temps de la simulation 500
📤 SORTIES (OUTPUTS)
📂 Données en sortie
Visuelle : Fenêtre interactive Matplotlib affichant la grille colorée et le graphique de cinétique.
Fichiers (Optionnel) : Possibilité de sauvegarder en .gif (code commenté).
🧱 STRUCTURE DU SCRIPT
script_227cvmn_227.py
📌 IMPORTS : numpy, matplotlib.
📌 CONSTANTES : Configuration de la simulation.
📌 CLASSE ReactionSimulation : Cœur de la logique.
📌 FONCTION animate_simulation() : Gestion de l’affichage et de la boucle d’animation.
📌 MAIN : Initialisation et lancement.
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
__init__(N, density) N: int, density: float None Initialise la grille et place A et B aléatoirement.
step() Aucun None Calcule le mouvement et les collisions (réactions).
get_counts() Aucun tuple Compte le nombre de molécules A, B et C présentes.
animate_simulation() sim: Obj, steps: int None Configure et lance l’interface graphique.
🔄 LOGIQUE / ALGORITHME
Mouvement : Chaque molécule (A ou B) choisit une direction aléatoire (Haut, Bas, Gauche, Droite, ou Statique).
Gestion des limites : Utilisation du modulo (% N) pour créer un univers torique (les molécules sortant par la droite rentrent par la gauche).
Réaction :
Si A se déplace sur une case occupée par B → La case devient C.
Si B se déplace sur une case occupée par A → La case devient C.
Si collision avec un même type (A+A) ou un produit (A+C) → La molécule reste sur sa case d’origine.
🚨 GESTION DES ERREURS
Grille vide : Si num_mols == 0, la méthode step() s’arrête préventivement pour éviter des erreurs de calcul sur des tableaux vides.
Collision de déplacement : Le script vérifie la disponibilité de la case cible dans new_grid avant de valider le mouvement pour éviter la superposition illégale de particules.
✅ CONTRAINTES & RÈGLES MÉTIER
Conservation : La somme A+B+2C (en équivalents réactifs) reste constante par rapport au stock initial de réactifs.
Irréversibilité : Une fois formée, la molécule C ne peut plus redevenir A ou B (stabilité du produit).
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu
1 Cas nominal Densité 0.3 Diminution de A et B, augmentation de C.
2 Densité nulle Densité 0.0 Grille blanche, aucun changement.
3 Densité saturée Densité 1.0 Réaction quasi instantanée, blocage rapide des mouvements.
📊 PERFORMANCES ATTENDUES
Temps d’exécution : Fluide (20 FPS) pour une grille 100×100.
Complexité : O(M) par pas de temps, où M est le nombre de molécules.
📝 EXEMPLE D’UTILISATION
▶️ Lancement
Bash
python script_227cvmn_227.py
📋 Sortie console attendue
L’interface s’ouvre, montrant des points rouges (A) et bleus (B) s’agitant jusqu’à devenir verts (C). Le graphique à droite montre les courbes de population se croisant.



Avis
Il n’y a pas encore d’avis.