🚀 Présentation
Ce projet de recherche et développement a été réalisé en équipe lors de mon année 2025/2026 à l'école d'ingénieurs Junia (ISEN). Encadrés par nos enseignants-chercheurs (Pierre Capiod, David Mele et Claire Messager), nous avions pour mission de créer Quantum-Sim, un outil pédagogique et interactif destiné aux étudiants pour vulgariser les concepts fondamentaux de la mécanique quantique.
Au sein du groupe, mon rôle s'est principalement porté sur l'architecture technique, le choix des technologies et le développement web, en faisant le pont entre les exigences scientifiques des chercheurs et les besoins d'une application moderne.
🌌 Genèse du projet & État de l'art
L'enseignement de la physique quantique se heurte très souvent à un obstacle majeur : son formalisme mathématique très abstrait, difficile à conceptualiser sans outil de visualisation.
En étudiant l'existant, nous avons identifié une réelle lacune entre deux types d'outils :
- Les applications pédagogiques gratuites (ex: PhET, Falstad) : Très visuelles et accessibles, mais "boîtes noires" et très limitées. Elles ne permettent pas de modifier librement les paramètres physiques ou d'explorer directement l'équation de Schrödinger.
- Les logiciels scientifiques professionnels (ex: MATLAB, COMSOL, Mathematica) : Ultra-puissants mais payants, complexes à prendre en main et peu adaptés à un apprentissage ludique et immédiat pour un étudiant débutant.
L'objectif du projet était donc né : Concevoir une plateforme libre, interactive et ouverte qui combine la rigueur du calcul scientifique avec la simplicité d'une interface web moderne.
🧠 La démarche scientifique & Les principes quantiques
Pour construire ce simulateur, l'équipe a dû traduire des équations différentielles complexes en algorithmes informatiques. Le moteur physique repose sur plusieurs piliers théoriques :
1. La fonction d'onde Ψ(x,t) et l'interprétation probabiliste
En mécanique quantique, une particule n'a pas de position déterministe. Son état est décrit par une fonction d'onde à valeurs complexes, Ψ(x,t). C'est son module au carré, |Ψ(x,t)|², qui donne la densité de probabilité de présence de la particule dans l'espace.
2. L'équation de Schrödinger
Elle est à la physique quantique ce que les lois de Newton sont à la mécanique classique :
- Dépendante du temps :
iħ (∂Ψ / ∂t) = Ĥ Ψ, elle régit l'évolution temporelle de la particule sous l'effet d'un potentiel V(x). - Indépendante du temps :
Ĥ ψ(x) = E ψ(x), elle permet de trouver les états stationnaires et les niveaux d'énergie quantifiés (ex: puits de potentiel infini).
3. Ondes planes vs Paquets d'ondes
- Onde plane
Ψ(x,t) = A · e^(i(kx - ωt)): Représente une onde monochromatique avec une impulsion définie, mais où la particule est totalement délocalisée dans tout l'espace. - Paquet d'ondes : Résulte de la superposition de plusieurs ondes planes. Il permet d'obtenir une particule localisée dans l'espace, modélisant plus fidèlement une vraie particule en déplacement.
4. Méthodes numériques de résolution
Pour résoudre ces équations sur ordinateur, la physique théorique a été traduite numériquement :
- Discrétisation spatiale (méthode des différences finies) : Découpage de l'espace en un maillage de N points.
- Propagation temporelle : Utilisation d'algorithmes de résolution comme la méthode de Runge-Kutta (RK45) ou le schéma conservatif de Crank-Nicolson.
⚡ Le défi d'architecture : Python vs Web Moderne
C'est ici que mon rôle technique est devenu central. Lors de la conception, nous avons été confrontés à un arbitrage technologique majeur :
La contrainte initiale
Les enseignants-chercheurs à l'origine du sujet maîtrisaient Python, le langage de référence dans le monde académique. Ils imposaient donc que le moteur scientifique et la logique mathématique soient écrits en Python.
Notre vision produit
De notre côté, nous étions convaincus que le format le plus adapté pour toucher les étudiants était une application Web :
- Zéro installation : Pas de scripts à installer, pas de dépendances complexes à gérer (
pip, environnements virtuels). - Multi-plateforme : Accessible immédiatement depuis un PC, une tablette ou un smartphone via n'importe quel navigateur.
Le choix de la stack : React + WebAssembly
Même si Python propose des frameworks web, ils sont visuellement datés, rigides et peu adaptés à la création d'interfaces utilisateur hautement interactives comparés aux standards Node.js.
Nous avons donc fait le choix d'une architecture hybride audacieuse :
- Front-End en React : Une interface utilisateur fluide, moderne et réactive permettant de manipuler visuellement les paramètres (potentiels, fréquences, largeurs d'ondes).
- Package Python (
quantum-sim-library) : Le moteur mathématique pur, développé en Python et hébergé sur PyPI. - Le pont WebAssembly (Pyodide) : Pour exécuter le code Python sans nécessiter de serveur backend distant, nous avons utilisé Pyodide (CPython compilé en WebAssembly). La librairie Python tourne ainsi directement à l'intérieur du navigateur du client.
📦 Livrables du projet
L'écosystème Quantum-Sim s'articule autour de trois composants principaux :
1. La librairie Python (PyPI)
Le cœur de calcul (quantum-sim-library), installable via pip install quantum-sim-library. Il permet de manipuler directement des objets physiques (ondes planes, paquets d'ondes) et de résoudre la matrice d'Hamiltonien.
2. Notebooks pédagogiques (Google Colab / Jupyter)
Un ensemble de notebooks documentés et illustrés permettant d'analyser le code étape par étape, d'afficher des animations 2D/3D avec Matplotlib et de servir de support de cours.
3. L'Application Web Interactive (React / Vercel)
Une application web complète offrant un "laboratoire quantique" virtuel. L'étudiant peut configurer son onde, observer sa propagation et voir l'évolution de la fonction d'onde en temps réel.
📹 Démo vidéo & Site en ligne
L'application est officiellement déployée et accessible au public.
👉 Tester le laboratoire en ligne : isen-quantum-sim.vercel.app
Démonstration vidéo de l'interface Quantum-Sim et des simulations d'ondes :
🧑💻 Difficultés rencontrées & Réalités de performance
Si l'architecture React + WebAssembly (Pyodide) est une belle réussite d'ingénierie, le projet nous a confrontés à des réalités techniques instructives :
- Coût de calcul dans le navigateur : La résolution matricielle et la propagation temporelle d'une fonction d'onde demandent une grande puissance de calcul. Faire tourner python dans le WebAssembly directement dans le navigateur du client sollicite énormément le CPU local et la Ram.
- Performances réduites : L'expérience n'a pas été aussi fluide qu'espéré lors des animations en temps réel très gourmandes. La latence d'exécution de Pyodide s'est ressentie sur les maillages de points élevés.
- Blocage du thread principal : Il a fallu retravailler l'asynchronisme dans React pour éviter que l'exécution des scripts Python ne "gèle" l'interface utilisateur pendant les calculs.
- Organisation : Gérer la progression de l'équipe entre les phases de recherche théorique et les périodes d'alternance en entreprise.
🎓 Ce que j’ai appris
- Conception d'architecture hybride : Faire communiquer deux écosystèmes totalement différents (Python scientifique et React/JavaScript) via WebAssembly.
- Vulgarisation & UX : Traduire des concepts physiques abstraits en composants graphiques intuitifs.
- Esprit critique sur la performance Web : Comprendre qu'une solution "tout client" via WebAssembly évite le coût d'un serveur backend, mais déplace la charge sur la machine de l'utilisateur, ce qui a ses limites pour du calcul lourd.
- Gestion de projet Agile : Travailler sur 5 Sprints avec une équipe pluridisciplinaire (développeurs web, spécialistes DevOps et référents physiques).
📁 Liens utiles
- 🌐 Application Web : isen-quantum-sim.vercel.app
- 📦 Package Python : quantum-sim-library sur PyPI
- 📚 Technologies : React, Pyodide (WebAssembly), Python (NumPy, SciPy), TailwindCSS
🧠 Et après ?
Ce projet a prouvé la faisabilité de créer des laboratoires scientifiques virtuels modernes. Avec le recul, si nous devions faire évoluer l'application pour une montée en charge massive, la meilleure architecture consisterait à garder le Front-End React, mais à déporter le moteur de calcul Python sur un serveur dédié (API FastAPI / Python). Cela permettrait de conserver la fluidité de React tout en déléguant les calculs matriciels complexes à une infrastructure adaptée.