如何利用Python批处理CST的仿真模型并提取关注的结果?
作者 | Ma Bin
如果对于一个CST仿真模型,我们需要不断的尝试各种参数组合,以比较不同参数组合下的计算结果,那么我们应该怎么做呢?
方法一:一次一次的打开模型,修改参数并且启动仿真,然后保存每一次的结果?
方法二:进行一些参数扫描,甚至是迭代的进行多个参数的扫描?
显然,方法二适用于每次只变1-3个参数,如果每次需要改变的参数很多,并且参数的变化没有规律,那么这种嵌套的扫参方式会计算一些无用的参数组合结果,不仅浪费时间还多占用内存。
如果只需进行3次或者5次的参数组合,那其实直接用方法一,就是最高效最简单的办法。但是如果参数的组合数上升到50次甚至500次,那我们就需要寻求另一种方法了,这也是这篇文章中我想跟大家介绍的利用Python进行批处理的方法。
方法三:利用Python进行批处理
我们以一个CST自带的喇叭天线为例,这里的监视器做了删减,只保留了三个频点的远场监视器,我们关心的是天线的远场性能和S参数。
在这个喇叭天线模型中,有很多参数。我们创建一个Excel,命名为Parameter List,然后输入三组天线的参数,这里我们只改变其中三个参数。需要注意的是,参数的修改必须是合理的,否则会造成3D建模报错,进而会导致Python代码运行不成功,无法达到批处理的效果。
在CST中,我们还需要设置两个后处理模板,一个是导出远场方向图,另一个是导出S参数。这里的结果导出,可以根据需要随意调整。
在Python脚本中,有以下几个重要的组成部分。
导入必要的库,包括CST的库:这里主要是导入DesignEnviroment,它可以控制CST的打开和关闭;其他的库比如xlrd、numpy、matplotlib等等视需要而定;
读取参数列表:从Excel中读取我们需要的参数组合;
For循环:遍历Excel中所有的行,每个循环中嵌套CST的打开、修改模型、仿真、导出数据最后关闭CST等一系列操作。
CST控制:完成指定CST仿真工程的打开和关闭,按照Excel中的参数修改模型的parameter list,选择求解器并启动仿真。其中,将Excel中的参数传递给CST,并控制CST的parameter list进行参数修改,主要参照下面的代码;
数据导出:CST中设置的后处理模板,会将需要的结果保存到所在工程文件夹下的Export文件夹中,需要通过Python将每次循环计算的结果抓取并存放到指定output文件夹中。
数据绘图:利用Python可以对每次计算的结果进行绘图,在批处理完成之后,可以对每种参数组合的主要结果进行预览。这一步可有可无,按需取舍。
运行Python代码,如下图,可以显示Number of Antenna和 Parameter name等等信息,还可以显示目前的进度。当然这里也可以显示CST模型的网格数量,端口数量等等用户关心的信息,只需要加代码即可。
随后,在指定的output文件夹内,可以看到导出的数据,这里的数据都自动加了前缀以便区分。值得说明的是,在本例中我们关心的是每个喇叭天线的S参数和远场性能,所以这里就只抓取了这些结果。如果需要场源文件、电场数据等等,都可以通过后处理+Python的方式抓取并保存。
最后,将每个天线的主要性能都用Python绘制出来,方便查看。
也可以将同类的数据都绘制在一起,更方便对比。当然,这个比较灵活,根据需要修改代码即可。
最后做个总结,以前CST软件的二次开发多以VBA语言为主,近年来,细心的读者已经发现我们开放了很多Python的接口,因为Python的开源性、可扩展性以及可读性使得它更容易被电磁工程师接受和上手。
在本例中,我们展示了利用Python批处理CST的仿真工程,并抓取我们所关心的结果。当我们需要进行大量的重复性仿真时,我们可以尝试编写一段python脚本帮助我们,正所谓磨刀不误砍柴工嘛。