还剩9页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
利用Python与HFSS联合仿真设计一个微带天线我们知道HFSS是一款电磁仿真商用软件,用其进行天线的设计十分方便而该软件也预留了可以运行脚本的接口,使用者可以使用脚本对软件进行控制,实现模型的建立、求解等等由于后期可能会用到联合仿真,而大多数联合仿真的脚本都是使用的Matlab进行编程,网上也有不少现成的api,因为对python比较熟悉,且python除了数值计算其他的功能也相当强大,并且免费开源,于是决定用python写一个建模的脚本(其实是我matlab学得太烂了),折腾了两天,终于把微带天线的模型建立与仿真的过程搞定了,当然是基于有MatthewRadway这位大牛的基础上这个例子也是接触HFSS时手绘天线做的第一个例子,现在用代码做一遍,也是很有意思的事情下面分享给大家
1、连接软件第一步当然要用脚本实现打开软件了关于这个步骤,HFSS帮助文档中是这样写的GetAppDesktopUse:GetAppDesktopis afunction ofoAnsoftApp.This functiondoesnot takean inputand itreturns anobject.The objectis assignedto thevariable oDesktop.Syntax:GetAppDesktop()Return Value:Object.Parameters:NoneExample:Set oDesktop=oAnsoftApp.GetAppDesktop()给出了函数名,参数值,返回值,以及一个实例(这个帮助文档写得很不错,但是后面阅读过程中也发现了一些小错误,当然很可能是因为我用的是daoban)这个返回值oAnsoftApp就是后面进行一o系列操作要使用的对象,所有的操作的形式都是下面这样oAnsoftApp.CommandName argspython中编写了一个接口函数把这个函数封装在里面代码如下(不是我写的)曲Ansoft HFSS-microstrip antenna-HFSSDesignl-3D Modeler-SOLVED-[microstrip antenna-HFSSDesignl1j File EditView Project Draw Modeler HFSS Tools Window Help1|l Ijy|s3•电固昌;叵奈苧三:图虺JQEProject ManagerProperties日夕Solids白•copper|白夕tcrostrip_antenna*・・Coa.•0HFSSDesi gnlDrivenModal自・Rogers白夕「Definitionssubi•…白■vacuurr白…夕洽i…0白口SheetsS-口LumpeiS□Perfect田忆Coordinati E-Planes由•格ListsI03D3I e0I士卜丫』它□@rrrProj ect-尊microstrip_antenna B/dj/test/白•.HFSSDesignl DrivenModalSolving inside a solid with high conductivity may require a large mesh5^08:40下午四月22■2016Solving insidea solidwith highconductivity mayrequire alarge mesh510840下午四月22■2016j jWarning-Boundary groundand BoundaryAir overlap.5*08:46下午四月23,2016k
8、退出HFSShfss.quit_applicationoDesktop结束语今天暂时研究到这儿,还有很多比如查看求解完成后的驻波、增益曲线等等还有设置主从边界啦很多的api还没有编写,有时间会继续完善做了个有趣的小玩意儿,分享给大家〜完整主函数源码(api部分还不是很完整,哦,相当不完整,就先不给出了)说明本文中的微带线设计案例来自李明洋老师的《HFSS电磁仿真设计应用详解》一书的第10章一一HFSS微带天线设计实例部分api设计参考使用了Matthew Radway在github中分享的Interact withANSYSHFSS viathe HFSSWindows COMAPI地址.github.io/hycohanz/1from_future_import division,print functionjunicode literals^absolute import23import win32com.client45def setupJnterfaceO6…7Set upthe COMinterface tothe runningHFSS process.8Returns9oAnsoftApp:pywin32COMObject10Handle tothe HFSS叩plication interface11oDesktop:pywin32COMObject12Handle tothe HFSSdesktop interface13Examples14import Hyphasisas hfss15[oAnsoftApp,oDesktop]=hfss.setupJnterfaceO1617#「m stilllooking fora betterway todo this.This attachesto an18#existing HFSSprocess insteadof creatinga newone./would highly19#prefer thata newprocess iscreated.Apparently20#win32com.dient.DispatchExO doesntwork hereeither.21oAnsoftApp=win32com.client.Dispatch,AnsoftHfss.HfssScnptlnterface22oDesktop=oAnsoftApp.GetAppDesktop23return[oAnsoftApp,,oDesktop]用了win32com.client.Dispatch这个函数,这个函数是专门用来连接接口的,返回值中的那个Desktop就是生成的对象实际调用代码[oAnsoftApp,oDesktop]=hfss.setup interface
2、新建一个project这里就是用了上面生成的oDesktop对象新建了一个object,具体查阅help文档和编写api的工作和上一步一致,并且平时使用时直接使用接口调用即可注意,下面进行的操作都在这个project中,所以下面操作的对象就是oProject了这个时候HFSS里应该长这样了曲Ansoft HFSS-PrqjectlFile EditView ProjectTools Window HelpI□@I s3jv|、电空传奈苧||回I w凰l曲出I03I3o||二二Project Manager_________x Properties__________xName ValueUnit EvaluatHFVari ables养成良好习惯,新建的文件之后先保存,在编写过程中因为没有先保存,生成了一堆临时文件,挺讨厌的这个传人的参数可以包含路径hfss.save_as_project oDesktop,/ZE:/dj/test/microstrip antenna.hfss〃
4、新建一个design这里传人的参数为design的名字,设计模式oDesign=hfss.insertdesignoProject,〃HFSSDesignl〃,〃DrivenModal〃新建完成后发现和我们手动操作是一样的心Ansoft HFSS-microstrip_antenna-HFSSDesignl-3D Modeler-[microstrip_antenna-HFSSDesignl・Modeler:1File EditView ProjectDraw ModelerHFSS ToolsWindowHelpia||l2jy|s j3•:口亶浓跑固昌国]奈苧图哂|q上Project ManagerPropertiesCoordinate I0I o33s Hi I告困收告日电△©叵_画告口田同WOK□mi crostr ip_antenna*Name ValueUnit Evaluat由同Planes田“印^HFSSDesignl DriveiFA-1^-1Definitions4HI rrrProjectVariables
5、建立模型教程中首先新建了一个地板,并设置为PEC这里也分别调用了这两个函数,尺寸可以用字符串输入,很方便灵活,不需要自己转换为一堆小数点的数字设置PEC表面首先需要获得平面的faceid,再给这个表面设置边界条件1paw_inputPress Enter to drawa groundpiano123ground=hfss.create_rectangle4□Editor,56,--45mm70,90mm\90mm\Name=*ground\89Transparency=
0.81011raw_input PressEnter toassign aPerfectE boundarycondition onthe ground.〉12ground_faceid=[]13ground_faceidnum=hfss.getfaceby_positionoEditor ground,03030print ground_faceidnumJ14ground faceid.appendgroundfaceidnum15hfss.assign_perfect_eoDesign ground,ground faceidJ1617由于建模过程比较类似,这里就不逐个给出了,模型建立完毕如下图(包括了设置边界条件18和设置端口)心Ansoft HFSS-microstrip_antenna-HFSSDesignl-3D Modeler-[microstrip_antenna-HFSSDesignl-Modeler■3FileEditViewProjectDrawModelerHFSSToolsWindowHelpIDgs I®|B|X Q|l Ijy IS iI Qc国]奈¥三图••画Project ManagerProperties日…夕Solids白•copper白夕tcrostrip_anteim*CoaMFSSDesi gnlDrivenModal,||…]Defini tions0自・Rogers白夕sub1•…白■vacuurr白…夕I000AO©S©i^10~333HiI土[画告心由旧XY…e白口SheetsS-口LumpeiS□Perfect由k CoordinatiE-短Planes由•格ListsrrrProj ect□鸵]microstrip_antenna E/dj/test/S-曲HFSSDesi gnlDrivenModalSolving insidea solidwith highconductivity mayrequire alarge mesh5*02:36下午四月22△2016Solvinginsideasolidwithhighconductivitymayrequirealargemesh50236下午四月222016」▲芝芝Nothing isselectedX4spupSP5SOI
6、设置求解和扫频这里求解函数传人了中心频点;扫频传入了扫频方式,起始频率和终止频率,频率间隔1raw_input PressEnterto insert analysissetup.》’23setuplist=[]6setupname=hfss.insert_analysis_setupoDesign
2.45J78setuplist.appendsetupname910raw-input PressEnter-toinsertfrequency sweep.〉1112hfss•insert_frequency_sweepoDesign setupname,Sweep1\
1.5,
350.1,IsEnabled=Truej13JSetupType=LinearStepj Type-Discrete,SaveFields=True ExtrapToDC=False14J
15167、求解1718对于每个setup进行求解是不是和手动操作是一样的19hfss.solveoDesign,setuplist2021。