伴随非线性梯度

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”。lang.反对安卓。util。一对首先   gradle对java的影响。属性作为任务的输入?   java我的return语句不起作用。我做错了什么?   java通用同步代码块[无对象锁定]   macos Java小程序游戏不能在Mac上运行,即使它可以在PC上运行   java Firebase GeoFire设置位置未在服务中工作   java排序字符串对象   java通过JLabel上传背景图像(jpg)后,如何将图像缩放到它所在的面板上?   java无法连接到jsp中的数据库   java如何在整个ant taskdef操作的执行过程中拥有一个singleton类实例   java如何在按键事件中检查JTtextField中的字符串数字验证器   如何最好地输出大型单行XML文件(使用Java/Eclipse)?   内存不足,Java运行时环境无法在Java应用程序中继续运行   java Hibernate连接错误:组织上的NullPointerException。冬眠hql。阿斯特。HqlSqlWalker。createFromJoinElement   linux将参数从shell脚本传递到java类   java对于接受多个参数的setter是否有类似于@JsonCreator的注释?   java在链表中添加节点