首页/文章/ 详情

计算电磁学三大算法的开源代码

3月前浏览3875

计算电磁学包含了广泛的应用领域,包括天线、纳米光子学、太阳能电池、超材料、激光等等。在这些不同的领域中,也有许多方法来进行所需的计算。电磁模拟有三种主要的数值方法:FDTD, FEM和MOM。每种方法都最适合特定的情况,各有优缺点。在这篇文章中,汇总这些方法的一些最好的开源实现的参考资料(附链接)。

三大算法简介


  • FDTD算法:采用差分直接离散时域Maxwell方程,电磁场的求解基于时间步的迭代,无需存储全空间的电磁场信息,内存消耗较小,同时采用立方体网格和差分算法,网格形式和算法均十分简单,计算速度也贼快,基于时域算法,特别适合“宽带问题”的求解。但是,简单的立方体方体网格带来的弊端就是模型拟合精度较低,对于含有精细结构的模型,计算精度较低,同时基于“微分方程”,计算区域需要设置截断。FDTD比较适合于不含有较多精细结构的电大尺寸模型的电性能计算以及宽带问题的计算;

  • FEM算法:采用四面体网格对目标进行离散,拟合精度比FDTD算法更高,计算精度也要明显优于FDTD算法。但是,FEM基于频域/微分算法,需要同时对整个区域内的电磁场信息进行求解和存储,内存消耗大,计算速度慢,计算模型的电尺寸也相对较小。FEM主要适合于微波电路器件,天线等目标“辐射问题”的精确计算;

  • MoM算法:通过“场-源关系”,将“场”的求解问题转化为“源”求解问题,采用的基函数“格林函数”天然满足辐射条件,无需设置截断,计算精度高,同时矩阵的计算采用直接计算,不存在收敛性的问题,同时由于网格的剖分仅存在于目标体表面或内部,未知量数目大幅降低,矩阵规模小于FDTD和FEM,但是由于“源”之间均存在耦合,因此矩阵为“稠密”矩阵,计算复杂度大,计算速度慢。MoM主要适合于含有精细结构的电小尺寸目标“散射问题”的精确计算。






三大算法的开源代码



1、三大算法的区别


2、fdtd最好的开源代码

  • Meep.

    Developed at MIT, Meep is a highly efficient FDTD package, scriptable in Python, Scheme or callable from C++ APIs. It is parallelized with MPI, and it includes a library with support for a variety of material types.

  • https://meep.readthedocs.io/en/latest/

  • Meep由麻省理工学院开发,是一个高效的FDTD包,可以用Python、Scheme编写脚本,也可以从C++API调用。它与MPI并行,并包含一个支持多种材料类型的库。


  • gprMax. Developed at the University of Edinburgh, gprMax was designed for modelling Ground Penetrating Radar (GPR) but can also be used to model electromagnetic wave propagation for many other applications. gprMax is command-line driven software written in Python, with performance-critical parts written in Cython/OpenMP.

  • https://www.gprmax.com/

  • gprMax由爱丁堡大学开发,旨在为探地雷达(GPR)建模,但也可用于许多其他应用的电磁波传播建模。gprMax是用Python编写的命令行驱动软件,性能关键部分用Cython/OpenMP编写。


  • OpenEMS. Developed at the University of Duisburg-Essen, and parallelized with MPI. Matlab or Octave are used as a scripting interfaces.

  • http://openems.de/index.php/Tutorials

  • 由杜伊斯堡-埃森大学开发,并与MPI并行。Matlab或Octave用作脚本接口。


3、FEM最好的开源代码

  • FEniCS. FEniCS is a popular open-source LGPLv3-licenced software package for solving partial differential equations (PDEs). It features high-level Python and C++ interfaces, and can be run in high-performance clusters. To get started, visit the FEniCS Tutorial which includes an example in magnetostatics, or check out the official Discourse forum.

  • https://fenicsproject.org/

  • FEniCS是一个流行的开源LGPLv3许可软件包,用于求解偏微分方程(PDE)。它具有高级Python和C++接口,可以在高性能集群中运行。要开始使用,请访问FEniCS教程,其中包括静磁学示例,或查看官方话语论坛。


  • Elmer FEM. An open-source Finite Element Solver, dealing with multiphysical simulations. Built-in Electromagnetics Solvers include magnetostatic, electrostatic and wave-equation solvers. See the Elmer Models Manual for more information. Elmer has a GUI, a command-line interface, and a Python wrapper pyelmer.

  • http://www.elmerfem.org/blog/

  • 一个开源的有限元求解器,处理多物理模拟。内置的电磁学求解器包括静磁、静电和波动方程求解器。有关更多信息,请参阅Elmer型号手册。Elmer有一个GUI、一个命令行界面和一个Python包装器pyelmer。


  • FreeFEM. FreeFEM is an open-source LGPLv3-licenced PDE solver relying on its own programming language. FreeFEM offers a large list of finite elements. Pre-built physics for Electromagnetic simulations include Magnetostatics and Electrostatics only.

  • FreeFEM. 

  • https://freefem.org/

  • FreeFEM是一个开源的LGPLv3许可的PDE求解器,依赖于自己的编程语言。FreeFEM提供了大量的有限元列表。用于电磁模拟的预构建物理学仅包括静磁学和静电学。


4、MOM最好的开源代码

  • Bempp. Bempp is an open-source, MIT licenced, computational boundary element platform to solve electrostatic, acoustic and electromagnetic problems. Bempp uses just-in-time compiled OpenCL or Numba kernels to assemble BEM operators in CPUs or GPUs. Features include a Python interface, Fast Multipole Method acceleration via Exafmm-t, and coupled FEM/BEM computations via interfaces to FEniCS.

  • http://bempp.com/

  • Bempp是一个开源的、获得麻省理工学院许可的计算边界元平台,用于解决静电、声学和电磁问题。Bempp使用实时编译的OpenCL或Numba内核在CPU或GPU中组装BEM运算符。功能包括Python接口、通过Exafmm-t进行快速多极方法加速,以及通过FEniCS接口进行FEM/BEM耦合计算。


  • PumaEM is an open-source (GPL v3 licensed) Method of Moments implementation for Electromagnetics, accelerated with the Multilevel Fast Multipole Method, and parallelized via MPI.

  • https://github.com/Gjacquenot/Puma-EM

  • PumaEM是一种用于电磁学的开源(GPL v3许可)矩量法实现,采用多级快速多极方法加速,并通过MPI并行化。


  • NEC-2. A classical code by LLNL rewritten in C++, targeted at wire and surface antenna simulation.

  • https://github.com/tmolteno/necpp

  • LLNL用C++重写的经典代码,针对有线和地面天线仿真。


参考:

Open-Source Electromagnetic Simulation: FDTD, FEM, MoM (epsilonforge.com)

缘起“收敛性”——Maxwell方程与求解 



来源:灵境地平线
MaxwellMAGNET电路MATLABpythonUM材料太阳能
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-08-04
最近编辑:3月前
周末--电磁仿真
博士 微波电磁波
获赞 22粉丝 18文章 163课程 0
点赞
收藏
作者推荐

倒F天线 Inverted-F Antenna (IFA)

Inverted-F天线(Inverted-F Antenna,简称IFA)是单极子天线的一种变形结构,具有体积小、结构简单、易于匹配、制作成本低等优点。其广泛应用于蓝牙、WiFi等短距离无线通信领域。inverted F antennaAs shown below👇天线结构和原理归类:如图1所示为一倒F天线(IFA, Inverted-F antenna)。这种天线似乎是线天线,但在对这种天线的辐射方式进行分析之后,就会发现它应该归类为孔径天线。图1 IFA天线结构图馈电:馈电在接地(Ground Plane)与IFA的上臂(Arm)之间。上臂:IFA的上臂的长度大约是波长的四分之一。短路:如图1所示的IFA,在馈电的左侧,上臂与地平面短路。馈电更接近短路,而不是上臂的开口端。IFA短路(W)的高度应为计算波长的一小部分。辐射特性和阻抗不是W的强函数。地板:接地层应至少与 IFA 上臂长度 (L) 一样长,接地层的高度应至少为 λ/4。如果接地层的高度较小,则带宽和效率将降低。由于结构有点类似于倒F,因此该天线的名称为“倒F天线”。天线原理和辐射方向图:该天线的极化是垂直的,如图2所示,辐射方向图大致呈甜甜圈形状,甜甜圈的轴线在垂直方向上。图2 IFA天线的方向图为什么这种结构会辐射?来看槽缝天线,如图 3 所示。图3 槽缝天线为了能够辐射,槽天线的长度应为半波长(更一般地说,槽式天线的周长应大致为一个波长)。该天线馈电(或电压源激励)时,槽两端(孔径两端)的电压必须为零,因为两侧都短路。如果槽边缘的电压为零,则最大电压将处于槽的中心。电流的最大值在哪里?由于该天线也可以被视为传输线,因此从“源”看两个方向都是短路。我们从输电线路理论中知道,当线路短路时,电压和电流相差90度。因此,槽式天线中心的电流将为零,边缘处的电流将为最大值。电压和电流分布如图4所示(峰值电压假设为V伏,峰值电流为A安培)。图4 电压和电流分布槽天线辐射是因为电压在整个孔径上是同相的,因此E场是垂直的,且沿着槽的任何地方。因此会产生垂直极化。这与IFA有何关系?如果槽中心的电流为零(如图4所示),则可以认为槽天线在槽中心有一个开路。因此,如果我们将槽分成两半,并去掉右侧,则留下IFA天线,如图1所示。请注意,IFA可以支持完全相同的辐射模式。也就是说,由于IFA在馈电的右侧有一个开路(图1),因此该点的电流将为零,电压将为最大值,与槽天线完全相同。因此,IFA可以被视为“半槽天线”。实际上这就是IFA天线的有效模型。因此,IFA被归类为孔径天线,即使孔径不是“闭合”的。End 参考文献[1] P. J. Bevelacqua (2014, Aug. 14). Antenna Theory. Retrieved from http://www.antenna-theory.com[2] C. A. Balanis, Antenna theory analysis and design. [Online]. Available: https://www.wiley.com/en-us/Antenna+Theory%3A+Analysis+and+Design%2C+4th+Edition-p-9781119178996来源:灵境地平线

有附件
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈