Papers with Code

Qi Guo, Purdue University; Todd Zickler, Federico Capasso, Harvard University
D-Flat (D♭) is a framework in TensorFlow that renders physically-accurate images induced by metasurface optical systems. This framework is fully differentiable with respect to metasurface shape and post-capture computational parameters and allows simultaneous optimization with respect to almost any measure of sensor performance. D♭ enables simulation of millimeter to centimeter diameter metasurfaces on commodity computers, and it is modular in the sense of accommodating a variety of wave optics models for scattering at the metasurface and for propagation to photosensors.
D. S. Hazineh, S. W. D. Lim, Z. Shi, F. Capasso, T. Zickler, and Q. Guo
Jonathan Fan, Stanford University
GLobal Optimization NETwork or GLOnet is a global optimizer, based on a generative neural network, which can output ensembles of highly efficient topology-optimized metasurfaces.
J. Jiang and J. A. Fan
Metagrating Topology Optimization
Jonathan Fan, Stanford University
Basic topology optimization codebase for simple periodic metasurface deflectors or metagratings. This package utilizes adjoint-based gradient descent in order to generate devices with freeform geometries. Such devices are physically complex and demonstrate ultra-high efficiencies.
D. Sell, J. Yang, S. Doshay, R. Yang, and J. A. Fan
Shanhui Fan, Stanford University
Angler (named for 'adjoint nonlinear gradients') is a package for simulating and optimizing optical structures. It provides a finite-difference frequency-domain (FDFD) solver for simulating for linear and nonlinear devices in the frequency domain. It also provides an easy to use package for adjoint-based inverse design and optimization of linear and nonlinear devices. For example, you can inverse design optical switches to transport power to different ports for different input powers.
T. W. Hughes*, M. Minkov*, I. A.D. Williamson, and S. Fan
Shanhui Fan, Stanford University
This python package provides recurrent neural network (RNN) modules for pytorch that compute time-domain solutions to the scalar wave equation. This package not only provides a numerical framework for solving the wave equation, but it also allows the gradient of the solutions to be computed automatically via pytorch's automatic differentiation framework. This gradient computation is equivalent to the adjoint variable method (AVM) that has recently gained popularity for performing inverse design and optimization of photonic devices.
T. W. Hughes*, I. A.D. Williamson*, M. Minkov, and S. Fan
Eli Yablonovitch, University of California, Berkeley
This is a continuous adjoint opimtization wrapper for Lumerical, using Python as the main user interface. It is released under an MIT license.
C. M. Lalau-Keraly, S. Bhargava, O. D. Miller, and E. Yablonovitch
Jelena Vuckovic, Stanford University
SPINS-B is the open source version of SPINS, a framework for gradient-based (adjoint) photonic optimization developed over the past decade at Jelena Vuckovic's Nanoscale and Quantum Photonics Lab at Stanford University.

  • Gradient-based (adjoint) optimization of photonic devices
  • 2D and 3D device optimization using finite-difference frequency-domain (FDFD) on GPUs
  • Support for custom objective functions, sources, and optimization methods
  • Automatically save design methodology and all hyperparameters used in optimization for reproducibility
L. Su, D. Vercruysse, J. Skarda, N. V. Sapra, J. A. Petykiewicz, and J. Vuckovic

Useful Code

Nicolas Lebbe, INRIA Sophia-Antipolis
This is a toolbox to convert .mat files on MetaNet into GDS files.
Jelena Vuckovic, Stanford University
Jaxwell is a GPU-accelerated, differentiable 3D iterative FDFD electromagnetic solver. Jaxwell is differentiable and fits seamlessly in the JAX ecosystem, enabling nanophotonic inverse design problems to be cast as ML training jobs and take advantage of the tsunami of innovations in ML-specific hardware, software, and algorithms.
J. Lu and J. Vuckovic