Mise en pratique
Tutoriels et quickstarts
Cette section décrit les parcours minimaux pour lancer SPARC, créer une configuration, exécuter une simulation, lire les résultats et vérifier leur validité scientifique.
scientific_readiness, iv_metrics_valid, physical_validation, quality_validation et les éventuels fallbacks.
Quickstart 0 : vérifier l'environnement
Ce premier contrôle sert à distinguer un problème d'installation d'un problème physique ou numérique.
| Contrôle | Commande ou page | Résultat attendu |
|---|---|---|
| Importer l'application web | venv/bin/python -m py_compile web/app.py router.py | Aucune erreur Python. |
| Lister les simulations routées | venv/bin/python main.py --list-types | Liste des types connus par SesameRouter.default_routing_table(). |
| Démarrer l'interface | venv/bin/python -m web.app | Serveur Flask local, puis ouverture de http://localhost:5000. |
| Contrôler l'état HTTP | http://localhost:5000/api/health | Réponse JSON avec version et état du service. |
Quickstart 1 : lancer une homojonction depuis l'interface web
Ce parcours utilise la chaîne réelle /form → /api/generate-json → /api/run-simulation/<id>/async → /api/results/<id>/status.
- Ouvrir
http://localhost:5000/form. - Choisir le type
homojunction. - Sélectionner
Sicomme matériau actif. - Renseigner une région N fortement dopée et une région P plus faiblement dopée, par exemple
1e17 cm-3et1e15 cm-3. - Garder une géométrie 1D pour le premier essai :
thickness_netthickness_p, sansly. - Activer l'illumination et conserver le flux AM1.5G proposé par l'interface.
- Générer la configuration JSON, puis lancer la simulation asynchrone.
- Suivre la progression jusqu'au statut final, puis ouvrir la page de résultats.
| Élément à lire | Interprétation |
|---|---|
| Courbe J-V | Vérifier la convention de signe et la cohérence de Jsc, Voc, FF et PCE. |
| Diagramme de bandes | Contrôler la position de la jonction, le champ interne et les quasi-niveaux si disponibles. |
| Validation physique | Lire les erreurs bloquantes avant de commenter les métriques PV. |
| Fallbacks | Un résultat issu d'un fallback analytique ou 2D→1D doit être documenté comme tel. |
Tutoriel 2 : exécuter une configuration JSON en CLI
La CLI est le chemin le plus simple pour reproduire une simulation hors navigateur et archiver les entrées exactes.
venv/bin/python main.py --example homojunction
Enregistrez une configuration JSON dans configs/, puis exécutez-la :
venv/bin/python main.py configs/silicon_homo.json --output outputs
La sortie principale est un dossier de résultats dans outputs/, avec la configuration sauvegardée et un fichier *_summary.json. Ce résumé est le bon point de départ pour relire les métriques, diagnostics et flags de validité.
Tutoriel 2b : explorer et optimiser en CLI Interactive
Le CLI interactif est l'interface console complète de SPARC, conçue pour les terminaux. Elle permet de lancer des simulations, de consulter la base de matériaux, d'exécuter des optimisations bayésiennes et de visualiser des courbes J-V en caractères ASCII directement dans le terminal.
python -m cli_interactif
Fonctionnalités et navigation rapide :
- Raccourcis Clés : Appuyez sur la lettre correspondante pour ouvrir directement un écran :
n: Lancer l'assistant de configuration pas à pas pour configurer et démarrer une nouvelle simulation en arrière-plan.h: Consulter l'historique complet des simulations enregistrées dans SQLite.r: Visualiser les résultats (courbe J-V en caractères ASCII et tracés PNG).m: Parcourir la bibliothèque des matériaux locaux et externes.o: Configurer et exécuter des études d'optimisation bayésienne (Optuna / BoTorch).t: Basculer entre le thème clair et le thème sombre de la console.
- Exécution en arrière-plan : Les simulations lancées depuis le CLI interactif s'exécutent en arrière-plan. Vous pouvez surveiller leur progression (touche
p) et continuer à naviguer dans les menus sans bloquer votre terminal.
Tutoriel 3 : lancer une simulation directement par API
Pour une intégration externe, utilisez /api/simulate si vous voulez créer et exécuter en une requête synchrone. Pour des calculs longs, préférez le couple /api/generate-json puis /api/run-simulation/<id>/async.
curl -X POST http://localhost:5000/api/simulate \
-H "Content-Type: application/json" \
-d '{
"simulation_name": "api_si_homojunction",
"simulation_type": "homojunction",
"materials": { "active": "Si" },
"geometry": { "thickness_n": 5e-5, "thickness_p": 2e-4, "nx": 120 },
"doping": { "n_region": 1e17, "p_region": 1e15 },
"voltages": { "start": 0.0, "stop": 0.75, "points": 60 },
"illumination": { "enabled": true, "photon_flux": 2.5e17, "absorption_coefficient": 1e4 },
"outputs": { "plots": ["iv_curve", "band_diagram"], "format": "both" }
}'
Pour le mode asynchrone, récupérez d'abord simulation_id depuis /api/generate-json, lancez /api/run-simulation/<id>/async, puis interrogez /api/results/<id>/status jusqu'à completed ou failed.
Tutoriel 4 : interpréter correctement les résultats
SPARC expose plusieurs niveaux de diagnostic. Il faut les lire dans cet ordre pour éviter de commenter une métrique invalide.
- Vérifier le statut d'exécution :
completed,failed,runningoucancelled. - Lire les erreurs de validation d'entrée : matériau inconnu, géométrie impossible, dopage hors bornes, maille excessive.
- Lire
physical_validationetquality_validationpour savoir si le résultat est physiquement défendable. - Lire
iv_metrics_validavant d'utiliserJsc,Voc,FFouPCE. - Lire
scientific_readinesspour distinguer usage exploratoire, résultat avec réserves et résultat comparable à une référence. - Comparer aux références de Benchmarking si le résultat doit soutenir une conclusion officielle.
multi_layer, tandem et triple_junction peuvent produire des sorties utiles pour l'analyse, mais les métriques PV globales doivent être relues avec les flags equilibrium_only, pv_metrics_applicable et iv_metrics_valid.
Tutoriel 5 : balayage paramétrique propre
Un balayage paramétrique sert à isoler l'effet d'un seul paramètre. Commencez en 1D, avec peu de points, puis augmentez la résolution.
| Choix | Recommandation | Raison |
|---|---|---|
| Paramètre | doping_n, doping_p, épaisseur ou température | Paramètres physiquement lisibles et faciles à comparer. |
| Nombre de points | 3 à 7 pour un premier passage | Détecter les erreurs sans lancer une campagne longue. |
| Dimension | 1D par défaut | Éviter de transformer un sweep simple en série de calculs 2D coûteux. |
| Lecture | Comparer tendance, monotonicité et ruptures | Une meilleure PCE isolée ne suffit pas si la tendance est non physique. |
Si la barre de progression semble bloquée, vérifiez le statut final et les logs avant de conclure à un blocage. Les sweeps publient leur progression point par point lorsque le chemin asynchrone est utilisé.
Tutoriel 6 : optimisation avec Optuna ou BoTorch
L'optimisation automatise l'exploration d'un espace de paramètres. Elle ne remplace pas la validation physique : elle peut trouver rapidement une zone intéressante, mais les meilleurs essais doivent ensuite être rejoués et interprétés comme simulations normales.
- Ouvrir
http://localhost:5000/optimize. - Choisir un type de base, par exemple
homojunction. - Définir l'objectif :
efficiency, ou une combinaison si l'interface multi-objectifs est utilisée. - Ajouter des paramètres bornés, par exemple
geometry.thickness_poudoping.n_region. - Utiliser
optunapour une exploration robuste, oubotorchpour peu de paramètres avec simulations coûteuses. - Lancer un petit nombre d'essais, vérifier les échecs, puis augmenter
n_trials. - Ouvrir les résultats, la heatmap, la sensibilité et le rapport PDF si nécessaire.
Tutoriel 7 : utiliser la page Validation et la campagne Benchmarking
La page /validation donne une vue utilisateur des contrôles, tandis que validation_campaign/ sert aux campagnes reproductibles.
venv/bin/python3 validation_campaign/run_validation_campaign.py
Relisez ensuite validation_campaign/runs/<timestamp>/campaign_report.md. Une décision PASS_WITH_RESERVATIONS n'est pas un échec logiciel, mais elle interdit de présenter la campagne comme validation officielle sans préciser les réserves.
Erreurs fréquentes et diagnostic rapide
| Symptôme | Cause probable | Premier contrôle |
|---|---|---|
| Erreur réseau dans le navigateur | Réponse serveur 400/500 ou serveur arrêté | Terminal Flask et /api/results/<id>/status. |
| Progression répétée sans fin visible | Polling normal ou calcul long | Différencier logs GET ... status 200 et erreur finale. |
| Matériau inconnu | Nom non normalisé ou absent de la base | Page Matériaux et route /api/materials/list. |
| Métriques PV absurdes | Convention de signe, fallback, courbe IV invalide ou régime non PV | iv_metrics_valid, diagnostic_report, scientific_readiness. |
| Calcul 2D trop lent | Maillage ou domaine trop grand | Réduire nx/ny, valider en 1D, puis raffiner. |