伴随非线性梯度
angler的Python项目详细描述
钓鱼者
angler
(以“adjointn联机gradients”命名)是一个用于模拟和优化光学结构的包。
为线性和非线性器件的频域仿真提供了一种有限差分频域(fdfd)算法。
它还为线性和非线性器件的伴随逆设计和优化提供了一个易于使用的软件包。例如,您可以反向设计光开关,以便在不同的输入功率下将功率传输到不同的端口:
angler
作为纸张的一部分发布,可以查看here。
安装
可以使用
安装最稳定版本的angler
及其所有依赖项(除了mkl)。
pip install angler
或者,使用最新版本
git clone https://github.com/fancompute/angler.git
pip install -e angler
然后可以将此目录添加到导入钓鱼者的路径中,即
import sys
sys.path.append('path/to/angler')
使钓鱼者更快
在angler
中,计算代价最高的操作是稀疏线性系统求解。默认情况下,这是用^{angler
将其与python包装器一起使用,^{
conda install MKL
(当安装了mkl时,pymkl不工作。)
示例/快速启动
在Notebooks/
目录中有几个jupyter笔记本示例。
要获得好的介绍,请尝试:
Notebooks/Splitter.ipynb
对于更具体的应用:
电磁模拟
要使用FDFD解算器对线性设备进行建模(无优化),请参见
Notebooks/Linear_system.ipynb
要使用fdfd(无优化)对非线性设备进行建模,请参见
Notebooks/Nonlinear_system.ipynb
逆向设计与优化
有关优化线性设备的示例,请参见
Notebooks/Splitter.ipynb
Notebooks/Accelerator.ipynb
有关优化非线性设备的示例,请参见
Notebooks/2_port.ipynb
Notebooks/3_port.ipynb
Notebooks/T_port.ipynb
包装结构
angler
提供两个主要类,Simulation
和Optimization
,它们执行大部分功能。
通常,Simulation
对象用于执行fdfd模拟,而Optimization
类在Simulation
s上运行逆向设计和优化算法。若要了解angler
如何工作以及如何使用它的更多信息,请查看angler/README.md以获得更详细的解释。
测试
运行所有测试:
python -m unittest discover tests
或单独运行:
python tests/individual_test.py
贡献
angler
正在开发中,我们欢迎建议、拉取请求、功能请求等。
如果您贡献了一个新功能,请编写一些测试并在angler/README.md或wiki中记录您的更改。
作者
angler
作者是泰勒·休斯、莫姆奇尔·明科夫和伊恩·威廉姆森。
引用
如果您使用angler
,请使用
@misc{hughes2018adjoint,
Author = {Tyler W. Hughes and Momchil Minkov and Ian A. D. Williamson and Shanhui Fan},
Title = {Adjoint method and inverse design for nonlinear nanophotonic devices},
Year = {2018},
Eprint = {arXiv:1811.01255},
}
许可证
这个项目是在麻省理工学院的许可下授权的-请参阅LICENSE.md文件了解详细信息。版权所有2018泰勒休斯。
致谢
- 我们的商标是由Nadine Gilmer
- 代码合并前Rip Ian的贡献
- 我们使用了很多来自Jerry Shi 的代码片段(和建议)。