Simulation · Défauts & Microstructure

Défauts & Joints de Grains

Modélisation avancée des non-idéalités : pièges ponctuels SRH, distributions continues de défauts (Gaussian, Urbach, Uniforme) et joints de grains colonnaires 2D. Modules simulations/defects.py et simulations/grain_boundary_2d.py.

Cartographie recombinaison
Fig. 1 — carte 2D des porteurs minoritaires autour d'un joint de grain.

Trois modes de simulation

1. Défauts Ponctuels Discrets (simulate_with_defects)

Chaque défaut est décrit par sa position spatiale, son énergie dans le gap, sa densité et ses sections efficaces de capture. SPARC les transmet directement à sesame.add_defects().

R_SRH = (np − ni²) / [τp(n + n1) + τn(p + p1)]
n1 = ni·exp(Et / kT)     p1 = ni·exp(-Et / kT)

2. Distribution Continue de Défauts (simulate_with_continuous_defects)

SPARC discrétise une distribution d'états dans le gap en n_levels niveaux distincts (défaut : 15). Quatre distributions sont disponibles :

Type Formule des poids Usage typique
"gaussian" exp(−0.5·((E−Ec)/σ)²) Défauts d'impuretés, centres de recombinaison localisés
"urbach_cb" exp(−(Ec−E)/E₀) Queues de bande conduction (silicium amorphe, perovskites)
"urbach_vb" exp(−(E−Ev)/E₀) Queues de bande valence
"uniform" constante sur [Ec±w/2] Distribution plate, étude paramétrique

3. Joints de Grains 2D (analyze_grain_boundaries)

Extension en 2D du maillage Sesame (sesame.Builder(x, y) avec 41 nœuds en Y). Un joint de grain colonnaire est placé à y = Ly/2 comme une ligne de défauts d'interface (sesame.add_defects() avec location = [(0, Ly/2), (Lx, Ly/2)]). Cette approche permet de capturer les puits de potentiel latéraux et la réduction de mobilité effective dans les couches minces polycristallines (CdTe, CIGS, Si polycristallin).

Paramètres d'entrée

Clé JSON / Argument Type Unité Description
defects[].density float cm⁻² ou cm⁻³ Densité de pièges (interface ou volume)
defects[].energy float eV Niveau énergétique depuis le milieu du gap
defects[].sigma_e float cm² Section efficace capture électrons
defects[].sigma_h float cm² Section efficace capture trous
defects[].location list cm [(x1,y1),(x2,y2)] pour défauts d'interface, None pour volume
trap_distribution.type string "gaussian" | "urbach_cb" | "urbach_vb" | "uniform"
trap_distribution.total_density float cm⁻³ Densité totale intégrée
trap_distribution.energy_center float eV Centre de la distribution (depuis milieu gap)
trap_distribution.width float eV σ (Gaussien) ou E₀ (Urbach) ou demi-largeur (uniforme)
trap_distribution.n_levels int Nombre de niveaux discrets (défaut: 15)
grain_boundaries.density float cm⁻² Densité de défauts au joint de grain
grain_boundaries.grain_size float cm Taille du grain (dimension latérale Ly)

Sorties clés

Clé Description
current_density Courbe J(V) avec impact des défauts sur Jsc, Voc et FF
defect_config Configuration complète des défauts utilisée
trap_distribution_config (Mode continu) Type, densité, niveaux discrets générés
quasi_fermi_levels Niveaux quasi-Fermi extraits à V≈0
solution Solution de l'équation de Poisson (pour visualisation des cartes 2D)

Exemple de configuration JSON (défauts discrets)

config_defects.json
{
  "simulation_name": "si_avec_defauts",
  "simulation_type": "with_defects",
  "materials": { "active": "Si" },
  "geometry": {
    "thickness_n": 1e-5,
    "thickness_p": 2e-4,
    "doping_n": 1e18,
    "doping_p": 1e15,
    "defect_regions": [
      {
        "density": 5e14,
        "energy": 0.0,
        "sigma_e": 1e-15,
        "sigma_h": 1e-15,
        "location": null
      }
    ]
  },
  "voltages": { "start": 0.0, "stop": 0.72, "points": 50 },
  "illumination": { "enabled": true, "photon_flux": 2.5e17, "absorption_coefficient": 1e4 }
}

Exemple : Distribution continue (queues de bande Urbach)

config_urbach.json
{
  "simulation_type": "continuous_defects",
  "materials": { "active": "a-Si" },
  "trap_distribution": {
    "type": "urbach_cb",
    "total_density": 1e16,
    "energy_center": 0.3,
    "width": 0.05,
    "n_levels": 20,
    "sigma_e": 1e-15,
    "sigma_h": 1e-16,
    "region": "bulk"
  }
}

Mises en garde

Mode 2D et coût numérique. Les simulations de joints de grains 2D sont significativement plus coûteuses en temps de calcul (41 nœuds en Y × N nœuds en X). Commencez avec un maillage grossier avant d'affiner.
Défauts d'interface vs volume. Dans simulate_with_continuous_defects, le paramètre region: "interface" modélise les pièges comme une couche mince autour de la jonction (plus robuste numériquement en 1D que l'appel direct à add_defects).

Références

  • Shockley, W. & Read, W.T. (1952). Statistics of the recombinations of holes and electrons. Phys. Rev. 87, 835.
  • Hall, R.N. (1952). Electron-hole recombination in germanium. Phys. Rev. 87, 387.
  • Taretto, K. & Rau, U. (2008). Grain boundary effects in polycrystalline thin films. J. Appl. Phys.