电磁有限差分频域求解器

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 Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误