weiliangjinca / grcwa

Python implementation of rigorous coupled wave analysis, autograd supported for optimization purpose
Other
63 stars 28 forks source link

===== grcwa

.. image:: https://img.shields.io/pypi/v/grcwa.svg :target: https://pypi.python.org/pypi/grcwa

.. .. image:: https://img.shields.io/travis/weiliangjinca/grcwa.svg :target: https://travis-ci.org/weiliangjinca/grcwa

.. image:: https://readthedocs.org/projects/grcwa/badge/?version=latest :target: https://grcwa.readthedocs.io/en/latest/?badge=latest :alt: Documentation Status

grcwa (autoGradable RCWA) is a python implementation of rigorous coupled wave analysis (RCWA) for arbitrarily shaped photonic crystal slabs, supporting automatic differentation with autograd

Citing

If you find grcwa useful for your research, please cite the following paper: ::

@article{Jin2020, title = {Inverse design of lightweight broadband reflector for relativistic lightsail propulsion}, author ={Jin, Weiliang and Li, Wei and Orenstein, Meir and Fan, Shanhui}, year = {2020}, journal = {ACS Photonics}, volume = {7}, number = {9}, pages = {2350--2355}, year = {2020}, publisher = {ACS Publications} }

Features

.. image:: imag/scheme.png

RCWA solves EM-scattering problems of stacked photonic crystal slabs. As illustrated in the above figure, the photonic structure can have N layers of different thicknesses and independent spatial dielectric profiles. All layers are periodic in the two lateral directions, and invariant along the vertical direction.

Quick Start

Note on conventions

Acknowledgements

My implementation of RCWA received helpful discussions from Dr. Zin Lin <https://scholar.google.com/citations?user=3ZgzHLYAAAAJ&hl=en>. Many details of implementations were referred to a RCWA package implemented in c called S4 <https://github.com/victorliu/S4>. The idea of integrating Autograd into RCWA package rather than deriving adjoint-variable gradient by hand was inspired by a discussion with Dr. Ian Williamson and Dr. Momchil Minkov. The backend and many other styles follow their implementation in legume <https://github.com/fancompute/legume>. Haiwen Wang and Cheng Guo provided useful feedback. Lastly, the template was credited to Cookiecutter and the audreyr/cookiecutter-pypackage_.

.. Cookiecutter: https://github.com/audreyr/cookiecutter .. audreyr/cookiecutter-pypackage: https://github.com/audreyr/cookiecutter-pypackage