  We introduce dPV, an end-to-end differentiable photovoltaic (PV) cell
simulator based on the drift-diffusion model and Beer-Lambert law for optical
absorption. dPV is programmed in Python using JAX, an automatic differentiation
(AD) library for scientific computing. Using AD coupled with the implicit
function theorem, dPV computes the power conversion efficiency (PCE) of an
input PV design as well as the derivative of the PCE with respect to any input
parameters, all within comparable time of solving the forward problem. We show
an example of perovskite solar-cell optimization and multi-parameter discovery,
and compare results with random search and finite differences. The simulator
can be integrated with optimization algorithms and neural networks, opening up
possibilities for data-efficient optimization and parameter discovery.
