我們知道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.
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")
新建完成后發現和我們手動操作是一樣的。
教程中首先新建了一個地板,并設置為PEC。這里也分別調用了這兩個函數,尺寸可以用字符串輸入,很方便靈活,不需要自己轉換為一堆小數點的數字。設置PEC表面首先需要獲得平面的faceid,再給這個表面設置邊界條件。
由于建模過程比較類似,這里就不逐個給出了,模型建立完畢如下圖(包括了設置邊界條件和設置端口):
這里求解函數傳人了中心頻點;掃頻傳入了掃頻方式,起始頻率和終止頻率,頻率間隔。
7、求解
hfss.solve(oDesign,setuplist)
hfss.quit_application(oDesktop)
結束語:今天暫時研究到這兒,還有很多比如查看求解完成后的駐波、增益曲線等等還有設置主從邊界啦很多的api還沒有編寫,有時間會繼續完善。
做了個有趣的小玩意兒,分享給大家~
完整主函數源碼(api部分還不是很完整,哦,相當不完整,就先不給出了):
說明:本文中的微帶線設計案例來自李明洋老師的《HFSS電磁仿真設計應用詳解》一書的第10章----HFSS微帶天線設計實例。