有朋友看完了我前面一篇文章(利用程序让FEKO仿真工程文件自己排队算好等着你)后留言表示:这都啥时代了,还光顾着用Matlab?美帝都要卡脖子不让用了,居然还不会用Python?
这不,我都被这话说得热血沸腾:不就是个Python吗,谁不会啊?我有这么菜吗?
话说这Matlab和Python之争,也不是一天两天了,凭着开源的优势,Python的确是有后来居上的态势。
不过,俺们都是成年人了,Matlab和Python是哪个更好不重要,重要的是——作为成年人,我全都要。是的,Matlab和Python的程序我都想要,我猜你肯定也是!
不过,事情可没有那么简单,无论你是去谷歌家,还是私会美丽的度娘,都会发现,这块信息,在网上真是个0啊! 谷歌家好不容易搜出一个结果,还是利用Python直接处理feko计算结果的,压根没有涉及调用FEKO计算的事。
算了,人一定要靠自己,还是我自己来吧。
经过我一番摸索、请教、尝试,终于可以给你们上干货了。
首先说明运行环境:
Python 版本:3.7.6
运行环境: Anaconda (Jupyter notebook and Spyder )
无论是Jupyter notebook还是Spyder,相信总有一款适合你,反正两个都能正常运行。
大致思路:
类似在Matlab里面运行dos命令的操作,在python中去复现相应的语句。这么简单?下面你看看就知道罗。
具体实施有以下几个步骤:
以win10系统为例,“此电脑”——“属性”——“高级系统设置”——“环境变量”——“系统变量”——“编辑”——“path”,再将path增加FEKO的运行路径,一般默认路径是:
C:\Program Files\Altair\2021\feko\bin
注意:环境变量添加后,要重启生效,不重启的人就困在这吧。其他win7系统也很容易度娘一下得到类似结果。
添加和重启后,可以利用cmd命令调出dos命令的黑窗口,输入runfeko.exe,看看反应。
如果有以下显示,则为正常。我们还可以基于此,写出更为复杂的控制命令语句。
例如Jupyter notebook通常对应的是 C:\Users\wuyifan
而Spyder通常对应的是 C:\Users\ wuyifan \.spyder-py3
而FEKO工程文件的重点是*.pre文件。
根据你自己计算资源和想法,Python程序的语句也可以设置不同,自行选定计算的核心等情况。常言道,真传一句话,假传万卷书。别瞎BB,talk is cheap. show me the code.
这就来啦!具体典型语句如下图所示:
正所谓难者不会,会者不难。看起来非常简单的几句代码,但是相信你翻遍了谷歌,度娘也没有任何直接收获。这几句确保运行的代码也的确也琢磨了不止一会呢。
作个简单说明吧:
这里,使用os.system("wyf")这是最简单的一种方法,其执行过程中会输出显示wyf命令执行的信息。
例如:print(os.system("mkdir dmz")) 输出:0
如果看到结果打印出0,表示命令执行成功;否则表示失败(再次执行该命令,输出:子目录或文件dmz已经存在。
一般来说,前面语句都不用管,就把cylinder_VV.pre这个改成你自己的FEKO工程文件即可。
np 后面的4是代表的调用的计算核心数,可以手动改成其他数目。偷懒的话,直接改成all。
你如果坚持要语句2试试,保证一个死。
接下来,咱们看看效果如何。直接运行语句1的计算截图如下所示。
左边会弹出dos的黑窗口,运行FEKO的计算信息,而任务管理器则显示FEKO的计算进程吃满了CPU资源。那么运行语句3会怎么样?请看下图,差不多,但是CPU占用的进程变成了windows命令处理程序。
前面2个计算都是在Spyder环境下运行的,如果你喜欢Juypter notebook,那么看到的情形就是下图罗。占坑的又是Python进程了,这么换来换去,还真是伦敦(轮着蹲CPU的坑)啊。
多说两句讲解的内容(完全可以不看,哈哈):
如果代码是使用了start调用,那么运行完关闭dos窗口弹出的是runfeko的信息,这时进程与dos命令无关了。相应的,python程序中统计时间的函数也就不会计入FEKO程序的计算时间部分,仅仅只计入了这几行语句的内容。
如果直接在控制的语句中写d,因为d就在r""的语句内,就没有把d对应的字符串表达出来,而是以d字符串形式,所以,调用FEKO计算会失败。如下图所示。
类似的,如果我们还想利用Python实现类似其他的应用,例如类似利用matlab一键生成FEKO近场仿真云图的自动化报告,基于matlab建立海面模型导入Altair FEKO软件开展海面电磁仿真,显然都不是很难了。怎么样,这回又让FEKO拜倒在你Python的石榴裙下了吧!
我忘了说,自动化部分就是增加了循环语句,都在附件的代码里面。请点赞吧,关注吧,少年!还有代码和视频等着你呢!