complexphoton / APF_inverse_design

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

APF_inverse_design

APF (Augmented Partial Factorization) is an efficienct method proposed in Nature Computational Science 2, 815–822 (2022) that can solve multi-input electromagnetic forward problems in one shot, offering substantial speed-up and memory usage reduction compared to existing methods. Here, we generalize APF to enable efficient gradient computation for and inverse design of multi-input nanophotonic devices.

This repository includes codes used to inverse design a metasurface beam splitter using APF method, which splits the incident light equally into the $\pm$ 1 diffraction orders for any incident angle within a wide angular range. Detailed documentation is given in the comments of each file.

To take fully advantage of the APF method and efficienctly perform optimizations, one needs to

  • Install MESTI.m [download it and add the MESTI.m/src folder to the search path using the addpath command in MATLAB], the serial version of MUMPS and its MATLAB interface.
  • Install NLopt to use various well-developed algorithms for optimizations. If NLopt is not installed, one can specify other methods in inverse_design_beam_splitter.m.
  • Run inverse_design_beam_splitter.m [one can customise the optimization using options; check the documentation of this file for more details].

An animation on the evolution of the metasurface and its transmission matrix is shown below.

See the corresponding paper Fast Multichannel Inverse Design through Augmented Partial Factorization for more details.

About


Languages

Language:MATLAB 100.0%