切维切
ceviche的Python项目详细描述
切维切
电磁模拟工具+自动微分。纸张Forward-Mode Differentiation of Maxwell's Equations的代码。在
什么是切维切?在
ceviche
为求解麦克斯韦方程组提供了两个核心电磁模拟工具:
- 在
频域有限差分法
在 - 在
时域有限差分法
在
它们都是用numpy
/scipy
编写的,与HIPS autograd package兼容,支持正向模式和反向模式自动微分。在
这允许您编写代码来解决E&M问题,然后对结果使用自动区分。在
因此,您可以进行基于梯度的优化、灵敏度分析,或者将E&M解算器插入机器学习模型中,而不必经历手工推导导数的繁琐过程。在
示例
在this link上有一个全面的ceviche教程,其中有几个ipython笔记本示例:
- Running FDFD simulations in ceviche.
- Performing inverse design of a mode converter.
- Adding fabrication constraints and device parameterizations.
- Inverse design of a wavelength-division multiplexer and advanced topics.
在examples/*
目录中也有一些例子。在
安装
有很多方法可以安装ceviche
。在
最简单的是
pip install ceviche
但是要从本地副本安装,您可以改为这样做
^{pr2}$从主目录。在
或者,只需下载:
git clone https://github.com/twhughes/ceviche.git
然后从python脚本中导入包
importsyssys.path.append('path/to/ceviche')
包装结构
切维切
ceviche
目录包含所需的所有内容。在
要获得FDFD和FDTD模拟器,请直接导入from ceviche import fdtd, fdfd_ez, fdfd_hz
要获得差异,请导入from ceviche import jacobian
。在
constants.py
包含一些常量EPSILON_0
、C_0
、ETA_0
、Q_E
,这些常量在整个包中都是必需的
utils.py
包含一些有用的函数,用于绘图、自动添加和其他各种功能。在
optimizers.py
包含用于进行逆向设计的优化器函数。在
viz.py
是帮助绘制字段和结构的函数。在
modes.py
包含一个模式分类器(WIP),可用于为模拟创建波导模式剖面。在
示例
在examples
目录中有许多演示,这将使您对如何使用该包有一个很好的了解。在
测试
测试位于tests
。要运行,cd
到tests
和
python -m unittest
运行全部或
python specific_test.py
运行一个特定的。其中一些测试包括对现场图进行目视检查,而不是对值进行错误检查。在
要运行所有渐变检查函数,请运行
chmod +x test/test_all_gradients.sh
tests/test_all_gradients.sh
学分
如果你将此用于你的研究或工作,请引用
@article{hughes2019forward,
title={Forward-Mode Differentiation of Maxwell’s Equations},
author={Hughes, Tyler W and Williamson, Ian AD and Minkov, Momchil and Fan, Shanhui},
journal={ACS Photonics},
volume={6},
number={11},
pages={3010--3016},
year={2019},
publisher={ACS Publications}
}
我们的徽标是由@nagilmer创建的
- 项目
标签: