利用Python与HFSS联合仿真设计一个微带天线
我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便。而该软件也预留了可以运行脚本的接口,使用者可以使用脚本对软件进行控制,实现模型的建立、求解等等。由于后期可能会用到联合仿真,而大多数联合仿真的脚本都是使用的Matlab进行编程,网上也有不少现成的api,因为对python比较熟悉,且python除了数值计算其他的功能也相当强大,并且免费开源,于是决定用python写一个建模的脚本(其实是我matlab学得太烂了),折腾了两天,终于把微带天线的模型建立与仿真的过程搞定了,当然是基于有Matthew Radway这位大牛的基础上。这个例子也是接触HFSS时手绘天线做的第一个例子,现在用代码做一遍,也是很有意思的事情。下面分享给大家。
1、连接软件
第一步当然要用脚本实现打开软件了。关于这个步骤,HFSS帮助文档中是这样写的
GetAppDesktop
Use: GetAppDesktopis a function of oAnsoftApp. This function does not take an input and it returns an object. The object is assigned to the variable oDesktop.
Syntax: GetAppDesktop()
Return Value: Object.
Parameters: None
Example:
Set oDesktop = oAnsoftApp.GetAppDesktop()
给出了函数名,参数值,返回值,以及一个实例(这个帮助文档写得很不错,但是后面阅读过程中也发现了一些小错误,当然很可能是因为我用的是daoban)。这个返回值oAnsoftApp就是后面进行一系列操作要使用的对象,所有的操作的形式都是下面这样:
oAnsoftApp. <CommandName> <args>
python中编写了一个接口函数把这个函数封装在里面。代码如下:
作者用了win32com.client.Dispatch()这个函数,这个函数是专门用来连接接口的,返回值中的那个oDesktop就是生成的对象。
实际调用代码:
[oAnsoftApp, oDesktop] = hfss.setup_interface()
2、新建一个project
oProject = hfss.new_project(oDesktop)
这里就是用了上面生成的oDesktop对象新建了一个object,具体查阅help文档和编写api的工作和上一步一致,并且平时使用时直接使用接口调用即可。注意,下面进行的操作都在这个project中,所以下面操作的对象就是oProject了。这个时候HFSS里应该长这样了。
3、保存project
养成良好习惯,新建的文件之后先保存,在编写过程中因为没有先保存,生成了一堆临时文件,挺讨厌的。这个传人的参数可以包含路径。
hfss.save_as_project(oDesktop,"E:/dj/test/microstrip_antenna.hfss")
4、新建一个design
这里传人的参数为design的名字,设计模式。
oDesign = hfss.insert_design(oProject, "HFSSDesign1", "DrivenModal")
新建完成后发现和我们手动操作是一样的。
5、建立模型
教程中首先新建了一个地板,并设置为PEC。这里也分别调用了这两个函数,尺寸可以用字符串输入,很方便灵活,不需要自己转换为一堆小数点的数字。设置PEC表面首先需要获得平面的faceid,再给这个表面设置边界条件。
由于建模过程比较类似,这里就不逐个给出了,模型建立完毕如下图(包括了设置边界条件和设置端口):
6、设置求解和扫频
这里求解函数传人了中心频点;扫频传入了扫频方式,起始频率和终止频率,频率间隔。
7、求解
对于每个setup进行求解。是不是和手动操作是一样的?
hfss.solve(oDesign,setuplist)
8、退出HFSS
hfss.quit_application(oDesktop)
结束语:今天暂时研究到这儿,还有很多比如查看求解完成后的驻波、增益曲线等等还有设置主从边界啦很多的api还没有编写,有时间会继续完善。
为了降低变焦距系统设计时对经验的过度依赖,提出用Matlab仿真分析来分配变焦系统各组元光焦度。以组元之间的间隔为初始量,把变倍组的物距作为自由量,通过计算公式求出满足间隔要求的光焦度分配和组元运动形式。并通过Matlab仿真,画出变焦过程中各组元移动轨迹,分析各组元偏角、视场角等因素对系统复杂程度的影响,合理分配各组的光焦度,最后制定出初始结构。对没有经验的设计者,是一种很好的方法。为了验证该方案的可行性,设计一个14x正组补偿型变焦系统,所设计系统优化后的光焦度分配值和计算的结果很接近。
本文介绍了Python中的基本数学运算和数学函数,以及如何使用它们进行数学计算和处理。了解这些基础知识可以使你在Python中更加灵活和高效地进行数学计算和处理。同时,也可以为你深入学习Python中更高级的数学处理和科学计算库奠定基础。在进行数学运算时,应该特别注意数据类型和精度,避免出现计算错误。另外,由于Python中的浮点数精度问题,对于精度要求较高的计算,可以使用专门的科学计算库,例如NumPy、SciPy等,它们提供了更加精确和高效的数学计算功能。
Python列表list列表的本质是一种有序的集合,作为一种强大的数据结构,Python列表用于在程序中存储和操作一系列的值。列表是可变的(mutable),可以动态地增加、删除和修改其中的元素。在Python中,列表是最常用的数据结构之一,被广泛应用于各种编程场景,从简单的数据处理到复杂的数据结构和算法。一下本文将介绍Python列表的基本概念、常用操作以及一些实际应用。
通过多年的实践验证,HFSS以其无以伦比的仿真精度和可靠性,快捷的仿真速度,方便易用的操作界面,稳定成熟的自适应网格剖分技术使其成为高频结构设计的首选工具和行业标准。常规的阵列天线方向图综合是基于阵因子分析法,且不考虑单元之间电磁耦合的一种快速分析手段。
大家在科研和工作中,往往会遇到如何在CST中构建人工重复性高、建模步骤繁琐的模型,以及多次导出仿真结果数据等问题。和HFSS的vbs脚本一样,CST也自带VBA脚本控制,并支持MATLAB调用。