作者介绍
某国家重点实验室高级工程师,长期致力于海面目标电磁特性研究,想要持续了解关于Code-CAE相关内容的,可以关注作者知乎同名账户“爱翁”,相信作者在这个领域的持续输出会对你大有裨益。感觉有帮助的话,可以去他的知乎主页专注和点赞。
本文介绍了基于Python对FEKO进行二次开发的方法,打通了时下最热门的Code语言Python与常用电磁CAE工具FEKO两打平台之间的隔阂,为Code-CAEer的持续开发提供了坚实的基础,相较于传统基于matlab平台对FEKO进行二次开发,Python最大的优势可能就在于网络资源非常丰富,这无疑为CAEer后续持续学习和开发提供了极大的便利。
有朋友看完了我知乎往期文章《利用程序让FEKO仿真工程文件自己排队算好等着你》后留言表示:这都啥时代了,还光顾着用Matlab?美帝都要卡脖子不让用了,居然还不会用Python?
图1全民是不是都在学Python?
图2 把我说得像菜花蛇一样菜——我有这么菜吗?
图3 Matlab vs Python?
图4 成年人的标志之一——“我全都要”!
图5 谷歌家的搜索结果
图6 人一定要靠自己
经过我一番摸索、请教、尝试,终于可以给你们上干货了。
首先说明运行环境:
Python 版本:3.7.6;运行环境:Anaconda (Jupyter notebook and Spyder)
1、添加环境变量
以win10系统为例,“此电脑”——“属性”——“高级系统设置”——“环境变量”——“系统变量”——“编辑”——“path”,再将path增加FEKO的运行路径,一般默认路径是:C:\ProgramFiles\Altair\2021\feko\bin(注意:环境变量添加后,要重启生效,不重启的人就困在这吧。其他win7系统也很容易度娘一下得到类似结果)。
图7环境变量path的添加
图8 cmd命令调出dos命令的黑窗口,输入runfeko.exe
图9 dos命令的黑窗口下输入runfeko.exe的反应
2、将FEKO计算工程文件放置于对应的Python工作文件夹。
例如Jupyternotebook通常对应的是 C:\Users\wuyifan,Spyder通常对应的是 C:\Users\ wuyifan \.spyder-py3,而FEKO工程文件的重点是*.pre文件。
图10 *.pre文件的罗列显示
3、运行Python程序,将FEKO软件在后台调用计算,计算状态信息在dos命令黑窗口显示。
图12 调用FEKO计算的典型语句显示
1) import os是导入os库的命令。其中,os就是“operating system”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。
2)通常,我们接着运行语句1即可开始调用FEKO进行电磁仿真计算。这里,使用os.system("wyf")是最简单的一种方法,其执行过程中会输出显示wyf命令执行的信息。
例如:print(os.system("mkdirdmz")) 输出:0
如果看到结果打印出0,表示命令执行成功;否则表示失败(再次执行该命令,输出:子目录或文件dmz已经存在。
一般来说,前面语句都不用管,就把cylinder_VV.pre这个改成你自己的FEKO工程文件即可。
3)如果你喜欢用变量呢,那么切记,要接着用语句3而不是语句2。你如果坚持要语句2试试,保证一个死。
接下来,咱们看看效果如何。直接运行语句1的计算截图如下所示。
图13 FEKO计算进程占用CPU资源的显示(直接运行语句1)
图14 windows命令处理程序进程占用CPU资源的显示
前面2个计算都是在Spyder环境下运行的,如果你喜欢Juypter notebook,那么看到的情形就是下图。占坑的又是Python进程了,这么换来换去,还真是伦敦(轮着蹲CPU的坑)啊。
图15 Python进程下的FEKO子进程占用CPU资源的显示(Jupyter notebook)
多说两句讲解的内容(完全可以不看,哈哈):
图16语句2和3的差异显示对比