电磁有限差分频域求解器

fdfdp的Python项目详细描述


啊![](img/偶极子介质场.png)

#fdfdpy

这是一个纯python实现的有限差分频域(fdfd)方法。它使用scipy、numpy、matplotlib和mkl pardiso解算器。fdfdpy当前支持二维几何图形

##安装

python setup.py install

##结构

###初始化

fdfd类初始化为

simulation = Fdfd(omega, eps_r, dl, NPML, pol, L0)
  • ω:角频率,单位为“2π/秒”
  • eps:指定相对介电常数分布的numpy数组
  • dl:以l0为单位的空间网格大小
  • npml:定义pml网格数
  • 极化,其中一个是横向场。
  • l0:模拟长度刻度,默认为1e-6米(1微米)

为以下对象创建新的fdfd对象解算:

  • xrange:以l0为单位在x中定义空间域[最左位置,最右位置]
  • yrange:以l0为单位在y中定义空间域[最下面的位置,最上面的位置]
  • a:maxwell运算符,稍后用于求解E&M字段。
  • derivs:存储派生运算符的字典。

它还产生一个相对磁导率,mu_r,作为numpy.one(eps_r.shape)和一个源src作为numpy.zeros(eps_r.shape)

###添加资源是令人兴奋的!

可以通过手动编辑仿真对象内部的2d src数组将源添加到仿真中,

simulation.src[10,20:30] = 1

或者通过添加模态源,这些模态源被定义为二维域内的平面,该平面在其法向上发射模态。模态源定义可以通过

simulation.add_mode(neff, direction, center, width) simulation.setup_modes()
  • neff:定义模式的有效索引;这将用作特征值猜测
  • 方向:定义平面的法向,应为“x”或“y”
  • 中心:在单元格坐标[xc,yc]中定义平面的中心坐标
  • 宽度:以单元格数定义平面的宽度

请注意,添加模式后必须始终调用simulation.setup_mode s(),才能填充simulation.src

###电磁场的求解

现在,我们已经有了求解电磁场系统所需的一切,通过运行

fields = simulation.solve_fields(timing=False)

模拟。srcjzmz源项成比例,这取决于pol分别设置为'ez''hz'

字段是包含(ex,ey,hz)(hx,hy,ez)的元组,具体取决于极化。

###设置新的介电常数

如果要更改介电常数分布,可以运行

simulation.reset_eps(new_eps)

这将重建系统矩阵并将其存储在fdfd中。注意,如果任何模态源平面内的介电常数发生变化,也应调用simulation.setup_modes()。

###绘图

主字段(hz/ez)可以使用包含的帮助函数可视化:

simulation.plt_re(outline=True, cbar=True) simulation.plt_abs(outline=True, cbar=True)
<>这些可选地用等高线勾勒出介电常数,并可以提供一个MaMattLIB轴柄来绘制。

###要求

  • 努比
  • scipy
  • matplotlib

加载mkl解算器:

git submodule update –init –recursive

###待办事项

####无论何时 -[X]模态源。 -[X]更多的摄影绘图方法。 -[]x范围,年绘图上的ange标签。 -[]设置模态源振幅(和归一化) -[]增加运行本地jupyter笔记本的能力,该笔记本在hera上并行运行fdfd。 -[]保存fdfd对象中a的因子分解,以便以后在具有相同的a但不同的b对象时重用。 -[]允许源项具有(jx,jy,jz,mx,my,mz),这对于源不一定沿z方向的伴随物是有用的。 -[]清除导入(例如,将numpy导入为np从numpy导入abs,zeros,…

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

推荐PyPI第三方库


热门话题
java是否在servlet中检索上一页路径?   Java抱怨在开关的默认情况下未初始化最终字段   Java泛型:为什么编译器不能判断这个类<t>对象与这个类的类型参数的对象的类具有相同的类型?   Java:继承方法中使用的私有变量   HibernateJava。ClassCastException:java。lang.Integer不能强制转换为abc。def。我的项目。奥姆。EmployeeTopMetaData   http java发布和下载文件   java改进条件检查   java如何将2d数组的条目作为键放在地图中   java如何获取传递给运行时的值。getRuntime。JUnit测试用例中的exit(value)   java注释来创建所有可能的构造函数   自动建议列表:java。lang.IllegalArgumentException:在XPath表达式为null时找不到元素   为什么MapAPI在Java中不提供流功能?   gradle不导入本地java库   尽管我使用的是SessionCreationPolicy,java Spring安全性似乎仍在使用会话。无国籍   使用java查找MongoDB中数组元素的平均值