【原创分享】我的FDTD学习之路(附150M资料收集)
2017-04-22 by:CAE仿真在线 来源:互联网
前言:随着数值计算和可视化技术的快速发展,电磁学理论不再枯燥无味、晦涩难懂,一批优秀的商业软件,如CST、HFSS、FEKO等,从数值仿真层角度将Maxwell方程学习变得生动有趣,显著降低了电磁学研究的难度。但令人担忧的是,不少用户缺乏电磁仿真基本理解,过度依赖软件仿真,导致了大量时间和精力的浪费。
个人认为:电磁仿真软件开发初衷是辅助用户理解、验证用户预测,而不是代替用户从事科研!为此建议大家至少要从编程层面掌握一种电磁仿真算法的数值实现,这样使用相应软件时便会得心应手、操作自如。下面跟大家分享一下本人学习时域有限差分(FDTD)算法的过程和心得。
(1)辛路历程
-
2009年接触电磁数值计算(CEM),学会用商业软件CST仿真天线;
-
2010年3月初次学习FDTD,教材选用葛德彪老师的《电磁波时域有限差分方法》,照着书把公式抄了一通,没整明白,暂时搁置;
-
2010年9月再次学习FDTD,教材选用Sullivan的《Electromagetic Simulation using the FDTD Method》,基本找到感觉。后来对照Taflove的《Computetional Electrodynamics the FDTD Method》加强学习,并利用matlab初步实现了简单的FDTD仿真(一维、二维电磁波空间传播),FDTD学习基本入门;
-
2011年利用matlab编程实现了简单周期结构的FDTD仿真(包含周期边界和PML吸波边界实现)以及简单的场路联合仿真(matlab调用pspice电路),FDTD学习迈出了坚实的一步;
-
2012年以后,从算法层面加强了CST微波工作室各项参数设置的理解,从数值计算层面提高了对网格剖分、激励设置、集总加载、场路联合以及数据后处理实现的认识,仿真效率和精度显著提高(虽然基于FIT技术,但笛卡尔坐标系下与FDTD完全等效)。
(2)心得体会
1. 选择什么教材入门?
case1 如果你不习惯英文,那么选择西安电子科技大学教材《电磁波时域有限差分方法》,第一遍学习时不求甚解,不怕麻烦。建议看完了合上书,自己把三维FDTD差分离散过程一步一步推导出来,保证你的理解比直看书强百倍。
case2 如果你有一定英语基础,强烈推荐Sullivan的《Electromagetic Simulation using the FDTD Method》,该书的优点是简单直接,通过举例的方式进行介绍,每个例子都有C语言的程序代码。
case3 如果你有一定的计算电磁学基础,那么建议选择Taflove的《Computetional Electrodynamics the FDTD Method》,这本书很厚实,专业性很强,非常适合用于FDTD的进阶学习。
上述三本经典教材都连续发行了多版,处于入门阶段,大家可以不必纠结于选择哪一版,都差不多:),这些教材的pdf版我已帮大家收集整理,见文章结尾资料收集部分。
2. 选择何种语言编程?
总的来说,主要有四种语言可供大家选择:Matlab,Fortran,C,Python。
case1 如果没有任何编程基础,建议选择Matlab,因为一方面该语言入门门槛低,另一方面matlab绘图很方便,会给编程调试带来很大帮助。
case2 如果一味追求仿真精度,建议选择Fortran(FormulaTranslation的缩写),该语言是数值计算的首选,执行效率非常高,广泛应用于科学和工程计算领域。
case3 如果对代码有移植的打算,建议选择C语言,当前国内大多高校的计算机程序设计课程都是选择C语言,编程灵活,可供参考的代码较多。
上述三种语言对应的FDTD编程代码很多,这里为大家收集了部分放在资料共享部分,当然也包括个人编写的简单周期结构电磁仿真的Matlab代码(欢迎交流)。
特别的,作为入门推荐大家学习Taflove的《Computetional Electrodynamics the FDTD Method》的matlab代码,无论是从算法实现还是从编程风格上都值得参考(见资料收集-2 FDTD学习代码-Matlab文件夹)。
此外,有兴趣的朋友还可以尝试Python语言,专为非专业程序人员开发,完全免费,语法简洁清晰,有丰富的扩展库,可以很轻松的将各种语言的模块结合在一起。
3. 选择哪样软件练习?
时域电磁仿真软件不胜枚举,例如商业软件CST、xFDTD、FDTD Solutions以及开源软件包MEEP、ToyFDTD、GMES、OpenEMS、FDTD++等等。
如果使用处于入门阶段,这里首先推荐CST软件。原因很简单,建模效率高、操作简单方便、help文档丰富全面,因此受到广大工程师和学生的极度青睐。
如果有意向进行二次开发或者深入学习算法实现,可以考虑开源软件,例如基于Python开发的MEEP、GMES, 基于C和Fortran的ToyFDTD,基于C++开发的OpenEMS、FDTD++等等。
(3)资料收集
最后,为方便大家学习,本人特意将前期相关资料收集整理,主要包括论文、报告、教材、代码等等,如果大家对该资料感兴趣,请联系useful2you(微信)或关注公众号useful4you索取全套设计资料。
---------------申明--------------------
原创不易,欢迎分享,转载请注明作者和出处:yc97463240,有点小用吧(公众号useful4you)
相关标签搜索:【原创分享】我的FDTD学习之路(附150M资料收集) HFSS电磁分析培训 HFSS培训课程 HFSS技术教程 HFSS无线电仿真 HFSS电磁场仿真 HFSS学习 HFSS视频教程 天线基础知识 HFSS代做 天线代做 Fluent、CFX流体分析 HFSS电磁分析