INVERSE DESIGN FOR NANO-PHOTONICS June 4th 2013 Yablonovitch Group, UC Berkeley Seminar outline This morning: Theory General presentation on inverse design Our approach: the adjoint method Step by step example This afternoon: Software presentation Code structure outline Hands on experience Shape Optimization for photonic devices Problem statement: Given FOM(E,H), find eps(x) such that FOM is maximum and eps(x) respects some constraints. ? Typical figures of merit and constraints Figures of Merit - Transmission - Mode matching - Absorption - Field intensity - Scattering cross section Constraints - Materials available - Minimum dimensions - Radius of curvature - Periodicity Typical figures of merit Transmission Mode-Match Field intensity Absorption Typical constraints Radius of curvature Minimum dimension Materials Periodicity Parameterization: describing shapes Index maps Level sets ? Splines Custom parameters Optimizations: Heuristic methods Genetic algorithms Particle swarm optimization Ant colony Parameter sweeps Opsis optimization: particle swarm 1500 2D simulations: -0.28 dB insertion loss The problem: Simulations required: ~C^(variables) !!! The solution: deterministic optimization Gradient descent Calculating the gradient With this information we can calculate the gradient for any parameterisation But how do we calculate the gradient? But how do we calculate that? Our Approach Duality in Linear Algebra Problem: Compute gTb such that Ab=c gT such that B B is unknown A B = must solve for B first c Duality in Linear Algebra Problem: Compute gTb such that Ab=c gT such that B B A = Substitution of Variables: I could solve this dual problem instead sT such that c sTc = sTAB = (ATs)TB = gTB AT s = g c Iterative Gradient Descent Iterative Gradient Descent Adjoint Method for Electromagnetics Goal = Efficiently solve for the gradient of Merit(E,H) Optimization Problem light input x0 Where should I add material? light input light input x' x0 Need to know dF/dx’ for all x’ light input x' x0 x' x0 … What happens when I add material? Original Perturbation = small sphere of material Eperturbed E0 ε1 ε1 P ε2 How can I approximate this perturbation? Eperturbed Escattered E0 ≈ + Gradient light input x' x0 Island Perturbation Approximation Boundary Perturbation Approximation Key Trick 1: (approximate every perturbation as a dipole scatterer) + x' x0 x0 + x0 x' x0 x' x0 … x' … x0 x' x0 x' x0 Reciprocity (Rayleigh-Carson) Drive a dipole at x’ Find E at x0 Drive a dipole at x0 Find E at x’ equivalent x' x0 x' x0 Reciprocity (Lorentz) More generally: equivalent J1 E2 E1 J2 J1 E2 = J2 E1 Reciprocity (Lorentz) Problem: Solve for E1 and E2 Dual Problem: Solve for E3 E3(x’’) J1(x’) E3(x’) E1 equivalent J3 J1 E3 = J3 E1 J2(x’’) E2 J2 E3 = J3 E2 Gradient light input x' Treat electric field at x0 as a current: x0 Key Trick 2: (Lorentz reciprocity) + x' x0 x0 + x0 x' x' x' x' x' x' x' x0 x0 x' x' x' x' x0 … What does this achieve? + x0 x' x' x' x' x' x' x' x' x' x0 2 Simulations Gradient of Merit Function with respect to changes in geometry and/or permittivity is calculated everywhere in the simulation volume Did not have to vary any geometric parameters Optimization Process Every iteration = Calculate the gradient and step closer to a local optimum Step by step example: direct simulation Phase extracted=-137° Adjoint simulation Phase of dipole:13 7° The derivative field! Add some material here! Red = adding material will improve Merit Function New geometry Inclusion of index=2 Result Incident field Scattered field Constructive interference! E2 Iteration Repeat! Software Implementation Code Structure Maxwell Solver Optimizer Geometry Merit Function FreeForm FieldEnergy LevelSet Transmission ModeMatch Gradient Lumerical FDTD Supports HPC cluster with MPI Optimization Region Merit Function = ModeMatch abs(Ez) Source (frequency = 830nm) Geometry (eps = Ta2O5, epsOut = SiO2) (minimum dimension = 300nm) (radius of curvature = 150nm) How to run an optimization: 1. Create a setup file setup.m %% Lumerical Simulation %% Frequency %% Optimization Region %% Geometry Properties %% Merit Function 2. Create a Lumerical base file baseFile.fsp 3. Run runOpt in Matlab runOpt.m Source Optimization Region Initial Geometry Field and Index monitors Merit Function monitors FreeForm/LevelSet Geometries Binary 2D Geometry: 1 = eps, 0 = epsOut Constant thickness Materials: eps/epsOut = ‘material name’ or custom permittivity Optional Geometric constraints: minimum dimension, radius of curvature, minimum padding, symmetries Optional Optimization constraints: boundary changes only, allow new shapes to emerge Optional Non-Designable Region: 1 = Designable, 0 = Non-Designable Merit Functions Transmission through a plane transmission Field Energy in a volume E intensity H intensity absorption Mode Match at a plane E mode ExH Propagating Mode H mode Complex Merit Function (j,k,l) = user defined (1), frequency (2), monitor (3) f = (transmission, field energy, mode match) Example: Waveguide Spectral Splitter: maximize the minimum transmission through branch 1 at frequency 1, branch 2 at frequency 2, etc. for N branches Custom Geometry Type Install the software: 1. Download all Inverse Design files 2. Install Lumerical 3. Edit runOpt_params.m Example Waveguide Couplers for Silicon Photonics Level set geometry class Inside Outside phi<0 phi>0 Example Our implementation First order accurate Can enforce radius of curvature constraints Can anchor points of the initial geometry Works great for Silicon photonics! Does not use the boundary derivative D/E calculation Doesn’t (yet) support new shapes Can be computationally demanding if many mesh points (but is ok for most problems) Examples: 50%/50% splitter Figure of merit: Mode-matching to the TE mode of two waveguides Optimized using level set geometry representation and an effective index method Example 1: 50%/50% splitter Optimization video Example Optical Antenna for Heat-Assisted Magnetic Recording Optical Antenna Example 1 TE mode Optimization Region = Planar Gold Film Arm = 650 x 150 nm2 Peg = 50 x 50 nm2 Thickness = 40 nm Media Coupling = Absorption in Storage Layer (FWHM) Power injected into Waveguide Media Stack 10nm thick Storage Layer (FePt) Optical Antenna Example 1 TE mode Antenna Geometry Media Coupling Efficiency (%) Optical Antenna Example 1 storage layer cross-section 800 nm Media Coupling Media Coupling 2% 7% Wasted Antenna Absorption Wasted Antenna Absorption 26% 27% storage layer cross-section 800 nm Optical Antenna Example 2 TM mode Optimization Region = Planar Gold Film Arm = 650 x 150 nm2 Peg = 50 x 50 nm2 Thickness = 40 nm Media Coupling = Absorption in Storage Layer (FWHM) Power injected into Waveguide Media Stack 10nm thick Storage Layer (FePt) Optical Antenna Example 2 TM mode Antenna Geometry Optical Antenna Example 2 media cross-section 800 nm Media Coupling Media Coupling 4% 10% Wasted Antenna Absorption Wasted Antenna Absorption 31% 32% media cross-section 800 nm Optical Antenna Example 3 TM mode Merit Function = Absorption in Storage Layer (FWHM) Absorption in Antenna Peg Example Custom Wrapper for Silicon Photonics Easy Silicon Photonics Optimization Extremely easy setup of an optimization Only figure of merit possible: Mode-matching Just one Lumerical file to set up and matlab file to modify Covers many Silicon Photonics applications Easy Silicon Photonics Optimization -Create a simulation file as if you were just going to test your own design -Name your source “Source” -Name your mode matching monitor “merit1” -Add a monitor around the region to optimize named “Velocity” -Use sources to create the mode you would like to couple into and call them mode1, mode2, etc… Matlab setup file “setup_EZSiPh_params” Then type runOpt in matlab and enjoy!