Perovskite absorbers (e.g. MAPbI₃) contain mobile point defects — chiefly iodide vacancies — that drift under the cell's internal field like a slow, solid-state electrolyte:
Drift-diffusion: J_ion = -D ∂c/∂x + μ·E·c
Einstein relation: D = μ·k_BT / q
Arrhenius mobility: μ(T) = μ₀·exp[-E_a/k_B (1/T - 1/T₀)]
Ions pile up at the perovskite/transport-layer interfaces, building a polarization charge that screens part of the applied bias. The diode only "feels" the screened voltage:
V_eff(t) = V(t) - α·⟨x_ion⟩(t)
J(V_eff) = J_sc - J₀·[exp(V_eff / nV_t) - 1]
Because ⟨x_ion⟩ lags the applied voltage by the ion relaxation time (set by mobility and vacancy density), the forward (low→high V) and reverse (high→low V) sweeps trace different J-V paths — the hallmark scan-rate-dependent hysteresis reported in perovskite solar cells.
- Scan rate — how fast V(t) sweeps; slow scans let ions keep up (less hysteresis), fast scans outrun them (more hysteresis), fastest scans also outrun them the other way once ions can't move at all.
- Ion mobility μ — sets the drift speed and, via the Einstein relation, the diffusion/jitter of the spheres.
- Vacancy density — how many mobile ions exist (visualized instance count) and how strongly they screen the field.
- Temperature — mobility follows an Arrhenius law with a ~0.35 eV migration barrier, so hysteresis collapses at high T and worsens in the cold — matching real device measurements.
Units here are normalized for a responsive, illustrative animation — real ionic mobilities in halide perovskites are of order 10⁻⁸–10⁻¹⁰ cm²/V·s with relaxation times of seconds.