Research People Publications Software Group Wiki  
Fan Group Open-Source Software

Our group develops computational packages for a wide variety of photonics applications. All of our software is available on the group GitHub page, and major packages which are in a reasonably complete state are listed below.

S⁴ (Stanford Stratified Structure Solver) is a frequency-domain solver for layered periodic structures. Internally, it uses Rigorous Coupled Wave Analysis (RCWA) and the S-matrix algorithm. S⁴ can compute transmission, reflection, or absorption spectra of structures composed of periodic, patterned, planar layers. The electromagnetic fields throughout the structure can also be obtained, as well as certain line and volume integrals. The spectra obtained from S4 are extremely smooth, making it easier for local and global optimization.
Ceviche is our research group's finite difference frequency domain (FDFD) and time domain (FDTD) package, which is fully compatible with automatic differentiation. As a result, you can do gradient-based optimization, sensitivity analysis, or plug your E&M solver into a machine learning model without having to go through the tedious process of deriving your derivatives by hand.
Neuroptica is a flexible chip-level simulation platform for nanophotonic neural networks written in Python/NumPy. It provides a wide range of abstracton levels for simulating optical NN's: the lowest-level functionality allows you to manipulate the arrangement and properties of individual phase shifters on a simulated chip, and the highest-level features provide a Keras-like API for designing optical NN by stacking network layers.
Legume (le GUided Mode Expansion) is a python implementation of the GME method for photonic crystal slabs, including multi-layer structures. Plane-wave expansion for purely 2D structures is also included. Also, we have an autograd backend that allows gradients of all output values with respect to all input parameters to be computed efficiently!
Wavetorch provides recurrent neural network (RNN) modules for PyTorch that compute time-domain solutions to the scalar wave equation. The code in this package is the basis for the results presented in our recent paper, where we demonstrate that recordings of spoken vowels can be classified as their waveforms propagate through a trained inhomogeneous material distribution. As with many of our software packages, this library is fully compatible with automatic differentiation.
Angler (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 and is an easy-to-use package for adjoint-based inverse design and optimization of linear and nonlinear devices.
MESH (Multilayer Electromagnetic Solver for Heat transfer) is a program for computing electromagnetic far-field and near-field heat transfer for periodic, layered structures. It is enabled with heat flux calculation in both far and near field for planar, grating and pattern geometries.
Quantum programmable gate arrays (QPGAs) are photonic integrated circuits which can be dynamically reprogrammed — or trained using machine learning techniques — to prepare any quantum state or operator. This repository contains TensorFlow-based models for simulating the evolution of many-photon quantum states as they propagate through the chip.


© 2020, Ginzton Laboratory, Department of Electrical Engineering, Stanford University