切维切

ceviche的Python项目详细描述


切维切Build Status

电磁模拟工具+自动微分。纸张Forward-Mode Differentiation of Maxwell's Equations的代码。在

什么是切维切?在

ceviche为求解麦克斯韦方程组提供了两个核心电磁模拟工具:

  • 频域有限差分法

  • 时域有限差分法

它们都是用numpy/scipy编写的,与HIPS autograd package兼容,支持正向模式和反向模式自动微分。在

这允许您编写代码来解决E&M问题,然后对结果使用自动区分。在

因此,您可以进行基于梯度的优化、灵敏度分析,或者将E&M解算器插入机器学习模型中,而不必经历手工推导导数的繁琐过程。在

示例

this link上有一个全面的ceviche教程,其中有几个ipython笔记本示例:

  1. Running FDFD simulations in ceviche.
  2. Performing inverse design of a mode converter.
  3. Adding fabrication constraints and device parameterizations.
  4. 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_0C_0ETA_0Q_E,这些常量在整个包中都是必需的

utils.py包含一些有用的函数,用于绘图、自动添加和其他各种功能。在

optimizers.py包含用于进行逆向设计的优化器函数。在

viz.py是帮助绘制字段和结构的函数。在

modes.py包含一个模式分类器(WIP),可用于为模拟创建波导模式剖面。在

示例

examples目录中有许多演示,这将使您对如何使用该包有一个很好的了解。在

测试

测试位于tests。要运行,cdtests

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创建的

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

推荐PyPI第三方库


热门话题
在Java中使用Kotlin值类   在Hadoop中表示大文本块作为键的java   java安卓工作室;布局设计视图;   字典Java确定字符串是否以映射中的键开头   JavaG1:混合gc和完全gc之间有什么区别?   java Camunda升级组织。阿帕奇。平民语言错误   java Scanner类具有NextLine无限循环   安卓 GCM Java服务器:发送带有重音字符的消息   java我正在构建一个兴趣计算应用程序,我的项目构建良好,有1个警告,但它不会在我的设备上打开   java在Tilera TileGX上构建OpenJDK 8   GUI中的java惰性初始化与急切初始化   java JodaTime四舍五入到最近的一刻钟   java如何限制菜单。SpringRoo中的jspx可以避免对其他用户的实体执行CRUD操作   java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?