伴随非线性梯度

angler的Python项目详细描述


Angler

钓鱼者

angler(以“adjointn联机gradients”命名)是一个用于模拟和优化光学结构的包。

为线性和非线性器件的频域仿真提供了一种有限差分频域(fdfd)算法。

它还为线性和非线性器件的伴随逆设计和优化提供了一个易于使用的软件包。例如,您可以反向设计光开关,以便在不同的输入功率下将功率传输到不同的端口:

Fields

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中,计算代价最高的操作是稀疏线性系统求解。默认情况下,这是用^{}完成的。如果安装了mkl,angler将其与python包装器一起使用,^{},根据问题的不同,这将显著加快速度。如果使用水蟒,安装mkl的最佳方法是

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提供两个主要类,SimulationOptimization,它们执行大部分功能。

通常,Simulation对象用于执行fdfd模拟,而Optimization类在Simulations上运行逆向设计和优化算法。若要了解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
  • 的代码片段(和建议)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java:字符串。RTL设备语言用标志“+”格式化,数字后加符号   java GAE作为桌面应用程序(Swing)的服务提供商   java将InputStream转换为FileInputStream不适用于Apache POI   java外部Voronoi库“网格”:什么是草图和处理?   重载重写的泛型方法java   java显示组织上设置的错误。springframework。验证。jsp中的错误对象   java一些Spring模型属性没有显示在我的JSP中   java无法编译Guava 23的SimpleTimeLimiter示例   java如何更改JTree中的“根”目录名?   java如何在安卓中对相对布局产生连锁反应?   java错误:org。冬眠例外SQLGrammarException:无法提取结果集,dateAccessed是未知列   如何使用java监听JSON文件更新   由抽象封闭类创建的匿名内部类能否通过反射确定实现类?