Simulation · Études Paramétriques

Balayage Paramétrique

Étude systématique de l'impact d'un paramètre physique (épaisseur, dopage, température, illumination) sur les performances du dispositif. Module simulations/parametric.py, simulations/temperature.py et simulations/illumination.py.

Balayage paramétrique
Fig. 1 — Profil de densité d'électrons.

Types de sweeps disponibles

1. Balayage Générique (parametric_sweep)

Lance une simulation Sesame complète pour chaque valeur de la liste. La clé cible est spécifiée en notation pointée et peut cibler n'importe quelle feuille de la configuration JSON.

Pour chaque valeur v ∈ parametric.values :
    config[parametric.parameter] ← v
    → simulate(config)
    → extraire (Jsc, Voc, FF, PCE)

2. Étude en Température (temperature_study)

Pour chaque température T, SPARC recalcule automatiquement les propriétés matériaux via les modèles :

Eg(T) = Eg(0) − α·T² / (T + β)          [Varshni]
Nc,Nv(T) ∝ T^1.5
μ(T) ∝ T^(−mu_Texp)  puis limité par dopage [Masetti]
τ(T) ∝ T^(−0.5)

Permet d'extraire le coefficient de température : dVoc/dT, dPCE/dT.

3. Étude en Illumination (variable_illumination)

Balayage de l'intensité lumineuse de 0.01 à plusieurs soleils. Utile pour les applications BIPV (faible lumière) ou CPV (lumière concentrée). Le flux photonique est mis à l'échelle linéairement.

4. Étude Spectrale (spectrum_study)

Évaluation des performances sous différents spectres (AM0 pour spatial, AM1.5G terrestre, spectre personnalisé). SPARC utilise la TMM pour calculer la génération spectrale G(x, λ) et intègre sur le spectre fourni.

Paramètres d'entrée

Clé JSON Type Description
parametric.parameter string Clé cible en notation pointée (ex: "geometry.thickness_p")
parametric.values list[float] Liste des valeurs à simuler
temperature.values list[float] Températures en Kelvin (ex: [250, 300, 350, 400])
illumination.intensities list[float] Intensités en soleils (ex: [0.1, 0.5, 1.0, 10.0])
spectrum.wavelengths list[float] Grille spectrale en nm
spectrum.irradiance list[float] Irradiance spectrale en W/m²/nm

Sorties

Clé Type Description
parameter_values list Valeurs du paramètre balayé
jsc_list list[float] Jsc (mA/cm²) pour chaque point
voc_list list[float] Voc (V) pour chaque point
ff_list list[float] Facteur de remplissage pour chaque point
efficiency_list list[float] PCE (%) pour chaque point
iv_curves list[dict] Courbes J-V complètes de chaque simulation

Exemple de configuration JSON

config_sweep_epaisseur.json
{
  "simulation_name": "sweep_epaisseur_p",
  "simulation_type": "parametric_sweep",
  "materials": { "active": "Si" },
  "geometry": {
    "thickness_n": 1e-5,
    "thickness_p": 2e-4,
    "nx": 100
  },
  "doping": { "n_region": 1e18, "p_region": 1e15 },
  "parametric": {
    "parameter": "geometry.thickness_p",
    "values": [5e-5, 1e-4, 2e-4, 5e-4, 1e-3]
  },
  "illumination": { "enabled": true, "photon_flux": 2.5e17, "absorption_coefficient": 1e4 },
  "voltages": { "start": 0.0, "stop": 0.72, "points": 50 }
}
config_temperature_study.json
{
  "simulation_name": "etude_temperature_si",
  "simulation_type": "temperature_study",
  "materials": { "active": "Si" },
  "geometry": { "thickness_n": 1e-5, "thickness_p": 2e-4 },
  "doping": { "n_region": 1e18, "p_region": 1e15 },
  "temperature": {
    "values": [250, 275, 300, 325, 350, 375, 400]
  },
  "illumination": { "enabled": true, "photon_flux": 2.5e17, "absorption_coefficient": 1e4 }
}

Différence avec le module Optimisation

Sweep vs Optimisation. Un balayage paramétrique explore de manière exhaustive un seul paramètre sur une grille fixe. L'optimisation (Optuna, BoTorch) explore intelligemment un espace multi-dimensionnel pour trouver le maximum global. Pour aller au-delà de 2 paramètres et plus de 20 valeurs, utilisez directement la page Optimisation.

Références

  • Varshni, Y.P. (1967). Temperature dependence of the energy gap in semiconductors. Physica 34, 149.
  • Masetti, G. et al. (1983). Modeling of carrier mobility against concentration in arsenic-, phosphorus-, and boron-doped silicon. IEEE TED 30, 764.