HFSS的近场仿真.
- 格式:doc
- 大小:1.25 MB
- 文档页数:20
【案例分析】经典HFSS仿真实例详解新朋友请点击上⽅RFsister关注我们关于仿真软件HFSS相信⼤家多少都有听过,这是⼀款⾮常强⼤好⽤的仿真软件,已经被应⽤于多个领域,当然,天线设计也离不开仿真软件。
本期⼩编为⼤家带来的是经典天线——对称振⼦天线仿真。
下⾯我们先来看看软件的简介。
HFSS – High Frequency Structure Simulator,Ansoft公司推出的三维电磁仿真软件,⽬前已被ANSYS公司收购;是世界上第⼀个商业化的三维结构电磁场仿真软件,业界公认的三维电磁场设计和分析的⼯业标准。
HFSS提供了⼀简洁直观的⽤户设计界⾯、精确⾃适应的场解器、拥有空前电性能分析能⼒的功能强⼤后处理器,能计算任意形状三维⽆源结构的S参数和全波电磁场。
HFSS软件拥有强⼤的天线设计功能,它可以计算天线参量,如增益、⽅向性、远场⽅向图剖⾯、远场3D图和3dB带宽;绘制极化特性,包括球形场分量、圆极化场分量、Ludwig第三定义场分量和轴⽐。
使⽤HFSS,可以计算:①基本电磁场数值解和开边界问题,近远场辐射问题;②端⼝特征阻抗和传输常数;③ S参数和相应端⼝阻抗的归⼀化S参数;④结构的本征模或谐振解。
⽽且,由Ansoft HFSS和Ansoft Designer构成的Ansoft⾼频解决⽅案,是⽬前唯⼀以物理原型为基础的⾼频设计解决⽅案,提供了从系统到电路直⾄部件级的快速⽽精确的设计⼿段,覆盖了⾼频设计的所有环节。
下⾯我们先来看看建⽴HFSS⼯程的⼀般过程。
(1)⾸先第⼀步是运⾏Ansoft HFSS:(2)然后单击下图红框处图标,在当前⼯程中插⼊⼀个设计:(3)选择求解类型,如下图:(4)为建⽴模型设置合适的单位,如下图:(5)在3D窗⼝中建⽴模型。
(6)设置需要的辐射边界。
(7)如果选择激励求解或激励终端求解,则需要为模型设置激励。
(8)设置求解频率及扫频操作等。
(9)点击下图按钮,检查当前⼯程的有效性。
《微波技术与天线》HFSS仿真实验报告实验二印刷偶极子天线设计一、仿真实验内容和目的使用HFSS设计一个中心频率为2.45GHz的采用微带巴伦馈线的印刷偶极子天线,并通过HFSS软件Opitmetrics模块的参数扫描分析功能对印刷偶极子天线的一些重要结构参数进行参数扫描分析,分析这些参数对天线性能的影响。
二、设计模型简介整个天线分为5个部分,即介质层,偶极子天线臂,微带巴伦线,微带传输线,见图1。
天线各部分结构尺寸的初始值见表1。
图1 印刷偶极子天线结构图(顶视图)。
表1 印刷偶极子天线关键结构尺寸初始值。
三、建模和仿真步骤1、新建HFSS工程,添加新设计,设置求解类型:Driven Modal。
2、创建介质层。
创建长方体,名称设为Substrate,材质为FR4_epoxy,颜色为深绿色,透明度为0.6。
3、创建上层金属部分1)创建上层金属片,建立矩形面,名称Top_Patch,颜色铜黄色。
2)创建偶极子位于介质层上表面的一个臂。
画矩形面,名称Dip_Patch,颜色铜黄色。
3)创建三角形斜切角,创建一个三角形面,把由矩形面Top_Patch 和Dip_Patch组成的90折线连接起来。
4)合并生成完整的金属片模型。
4、创建下表面金属片1)创建下表面传输线Top_patch_1。
2)创建矩形面Rectangle1。
3)创建三角形polyline2。
4)镜像复制生成左侧的三角形和矩形面此步完成后得到即得到印刷偶极子天线三维仿真模型如图2所示。
5、设置边界条件1)分配理想导体。
2)设置辐射边界条件,材质设为air。
6、设置激励方式:在天线的输入端口创建一个矩形面最为馈电面,设置该馈电面的激励方式为集总端口激励,端口阻抗为50欧姆。
7、求解设置:求解频率(Solution Frequency)为2.45GHz,自适应网格最大迭代次数(Maximum Number of Passes):20,收敛误差(Maximum Delta S)为0.02。
hfss仿真实验报告HFSS仿真实验报告引言:HFSS(High Frequency Structure Simulator)是一款电磁仿真软件,广泛应用于高频电磁场分析和设计。
本篇报告将介绍一次使用HFSS进行的仿真实验,并对实验结果进行分析和讨论。
实验目的:本次实验的目的是通过HFSS仿真软件,对一个电磁场问题进行模拟和分析,以验证其在理论上的正确性。
通过仿真实验,可以更好地理解电磁场的行为规律,并为实际应用提供参考依据。
实验步骤:1. 建立模型:根据实验需求,首先在HFSS中建立相应的电磁场模型。
模型的建立需要考虑几何形状、材料特性等因素,以确保仿真结果的准确性。
2. 设置边界条件:在模型建立完成后,需要设置边界条件,即模型与外界的交互方式。
边界条件的设置对于仿真结果的准确性至关重要,需要根据实际情况进行选择和调整。
3. 定义材料特性:根据实际材料的电磁特性,对模型中的材料进行定义和设置。
材料的特性包括介电常数、磁导率等参数,对于仿真结果的准确性起到重要作用。
4. 设定激励源:在模型中添加激励源,即对电磁场进行激励的源头。
激励源的设置需要考虑频率、功率等参数,以确保仿真结果与实际情况相符。
5. 运行仿真:完成上述设置后,即可运行仿真。
HFSS将根据模型和设置的参数,计算并输出电磁场的分布情况。
实验结果与分析:通过HFSS仿真软件进行实验后,我们得到了电磁场的分布情况。
根据仿真结果,我们可以对电磁场的特性进行分析和讨论。
首先,我们可以观察到电磁场的强度分布情况。
根据模型的不同特点,电磁场的强度在不同区域呈现出不同的分布规律。
通过分析电磁场的分布情况,可以更好地理解电磁场的行为规律,并为实际应用提供指导。
其次,我们可以通过仿真结果来评估不同材料对电磁场的影响。
在模型中,我们可以设置不同材料的特性参数,通过仿真实验来观察不同材料对电磁场的吸收、反射等影响。
这对于材料的选择和设计具有重要的参考价值。
HFSS的近场仿真1、软件安装和破解1)Hfss13只能安装在C盘。
2)破解时先在控制面板里关闭Windows defender并且退出360杀毒软件。
否则Ansoft2008fix.exe会被当病毒杀掉。
3)将Ansoft2008fix.exe和hfss12fix.exe和license.lic拷贝到HFSS13.0目录下。
4)以管理员身份运行Ansoft2008fix.exe。
5)以管理员身份运行hfss12fix.exe,连续patch六个dll。
6)打开hfss,弹出框框,无视继续。
依次点击TOOls-options-general options-webupdate options-never2、模型的建立2.1设计变量2.2画模型2.3 边界条件、2.4激励源2.5加运算器2.6 画近场线近场线要一一对应。
3、数据的导出用Add Trace添加曲线到同一页面,用Apply Trace改变频点。
导出为csv格式。
将横坐标反归一化。
画出三维曲面图。
4、用脚本画近场线Dim oAnsoftAppDim oDesktopDim oProjectDim oDesignDim oEditorDim oModuleSet oAnsoftApp = CreateObject("AnsoftHfss.HfssScriptInterface")Set oDesktop = oAnsoftApp.GetAppDesktop()Set oProject = oDesktop.GetActiveProject()Set oDesign = oProject.GetActiveDesign()Set oEditor = oDesign.SetActiveEditor("3D Modeler")' 声明变量与常数.Dim zpos, Xnum, Ynum, xspan, yspan, dx, dy,posDim Units, indexDim y()Dim x()Units = "mm"pos=6000'-----------------------------3米x面----------------------------------------Units = InputBox("Select the units:"&Chr(13)& _"(cm,mm,um,in,mil)", "Nearfield","mm",pos,pos)zpos = InputBox("Input the Z plane position:","Nearfield", 3200,pos,pos)xspan = InputBox("Input X sampling span:","Nearfield", 4000,pos,pos)yspan = InputBox("Input Y sampling span:","Nearfield", 2100,pos,pos)Xnum = InputBox("Input sampling number in X direction:","Nearfield", 100,pos,pos) Ynum = InputBox("Input sampling number in Y direction:","Nearfield", 15,pos,pos)Redim y(Ynum)dx=xspan/(Xnum-1)dy=yspan/(Ynum-1)y(0)="Position of y"For n=1 To Ynumy(n)=-yspan/2 + (n-1)*dy'将X向点坐标存入数组ZValue=cstr(zpos) & UnitsYValue=cstr(y(n)) & UnitsXValuemin=cstr(-xspan/2) & UnitsXValuemmax=cstr(xspan/2) & Unitsindex="lin3mx" & cstr(n)oEditor.CreatePolyline Array("NAME:PolylineParameters", "IsPolylineCovered:=", true, "IsPolylineClosed:=", _false, Array("NAME:PolylinePoints", Array("NAME:PLPoint", "X:=", XValuemin, "Y:=", YValue, "Z:=", _ZValue), Array("NAME:PLPoint", "X:=", XValuemmax, "Y:=", YValue, "Z:=", ZValue)), _Array("NAME:PolylineSegments", Array("NAME:PLSegment", "SegmentType:=", _ "Line", "StartIndex:=", 0, "NoOfPoints:=", 2)), Array("NAME:PolylineXSection", "XSectionType:=", _"None", "XSectionOrient:=", "Auto", "XSectionWidth:=", "0mm", "XSectionTopWidth:=", _"0mm", "XSectionHeight:=", "0mm", "XSectionNumSegments:=", "0", "XSectionBendType:=", _"Corner")), Array("NAME:Attributes", "Name:=", index, "Flags:=", "", "Color:=", _ "(132 132 193)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _"", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SolveInside:=", _ true)namepara="NAME:" & indexSet oModule = oDesign.GetModule("RadField")oModule.InsertNearFieldLineSetup Array(namepara, "UseCustomRadiationSurface:=", _ false, "Line:=", index, "NumPts:=", cstr(Xnum))Next'------------------------------3米y面---------------------------------------Units = InputBox("Select the units:"&Chr(13)& _"(cm,mm,um,in,mil)", "Nearfield","mm",pos,pos)zpos = InputBox("Input the Z plane position:","Nearfield", 3200,pos,pos)xspan = InputBox("Input X sampling span:","Nearfield", 2100,pos,pos)yspan = InputBox("Input Y sampling span:","Nearfield", 4000,pos,pos)Xnum = InputBox("Input sampling number in X direction:","Nearfield", 15,pos,pos) Ynum = InputBox("Input sampling number in Y direction:","Nearfield", 100,pos,pos)Redim x(Xnum)dx=xspan/(Xnum-1)dy=yspan/(Ynum-1)x(0)="Position of x"For n=1 To Xnumx(n)=-xspan/2 + (n-1)*dx'将X向点坐标存入数组ZValue=cstr(zpos) & UnitsXValue=cstr(x(n)) & UnitsYValuemin=cstr(-yspan/2) & UnitsYValuemmax=cstr(yspan/2) & Unitsindex="lin3my" & cstr(n)oEditor.CreatePolyline Array("NAME:PolylineParameters", "IsPolylineCovered:=", true, "IsPolylineClosed:=", _false, Array("NAME:PolylinePoints", Array("NAME:PLPoint", "Y:=", YValuemin, "X:=", XValue, "Z:=", _ZValue), Array("NAME:PLPoint", "Y:=", YValuemmax, "X:=", XValue, "Z:=", ZValue)), _Array("NAME:PolylineSegments", Array("NAME:PLSegment", "SegmentType:=", _"Line", "StartIndex:=", 0, "NoOfPoints:=", 2)), Array("NAME:PolylineYSection","YSectionType:=", _"None", "YSectionOrient:=", "Auto", "YSectionWidth:=", "0mm", "YSectionTopWidth:=", _"0mm", "YSectionHeight:=", "0mm", "YSectionNumSegments:=", "0","YSectionBendType:=", _"Corner")), Array("NAME:Attributes", "Name:=", index, "Flags:=", "", "Color:=", _"(132 132 193)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _"", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SolveInside:=", _true)namepara="NAME:" & indexSet oModule = oDesign.GetModule("RadField")oModule.InsertNearFieldLineSetup Array(namepara, "UseCustomRadiationSurface:=", _ false, "Line:=", index, "NumPts:=", cstr(Ynum))Next5、用脚本导出近场数据Dim oAnsoftAppDim oDesktopDim oProjectDim oDesignDim oEditorDim oModuleSet oAnsoftApp = CreateObject("AnsoftHfss.HfssScriptInterface")Set oDesktop = oAnsoftApp.GetAppDesktop()oDesktop.RestoreWindowSet oProject = oDesktop.SetActiveProject("Project6")Set oDesign = oProject.SetActiveDesign("HFSSDesign1")Set oModule = oDesign.GetModule("ReportSetup")'---------------------------------------3mx-0.8G--------------------------------------------------------oModule.CreateReport "XY Plot 27", "Near Fields", "Rectangular Plot", _"Setup1 : Sweep", Array("Context:=", "lin3mx1"), Array("NormalizedDistance:=", Array( _ "All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx2"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx3"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx4"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx5"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx6"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx7"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx8"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx9"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx10"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx11"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx12"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx13"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx14"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx15"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.ExportToFile "XY Plot 27", "C:/Users/xiaoen/Documents/3mx-0.8G.csv" oModule.DeleteReports Array("XY Plot 27")'---------------------------------------3my-0.8G--------------------------------------------------------oModule.CreateReport "XY Plot 27", "Near Fields", "Rectangular Plot", _"Setup1 : Sweep", Array("Context:=", "lin3my1"), Array("NormalizedDistance:=", Array( _ "All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my2"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my3"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my4"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my5"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my6"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my7"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my8"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my9"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my10"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my11"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my12"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my13"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my14"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my15"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.ExportToFile "XY Plot 27", "C:/Users/xiaoen/Documents/3my-0.8G.csv" oModule.DeleteReports Array("XY Plot 27")。
希夫曼移相器的HFSS仿真
1、创建Project,插入HFSS Design
2、创建仿真模型(3D或2D),并设置材料及其参数。
3、选择仿真类型。
HFSS包含4种基本仿真类型:Driven Modal、Driven Terminal、Eigen Mode、Transient。
须根据设计需求选择不同的求解类型。
Driven Modal、Driven Terminal是有源驱动情况下的求解类型。
Driven Modal常用于微带线、波导等传输线结构,这种求解类型得到的S参数是基于主模到高次的各种广义S参数。
Drive Terminal常用于终点为多根导体的传输线,如差分线。
这种端口需要定义终端线,求解得到的S参数是基于终端的,例如差分线可得到差模及共模的S参数值。
Driven T erminal多用于天线和微波器件的仿真,高速互连设计仿真及一般的SI仿真,大多会选用Driven Terminal
4、设置端口,一般在需要分析的目标和参考平面(或者外边界)之间,绘制二维平面作为端口并设置激励。
端口分为波端口(Wave Port)和集总端口(Lump Port),一般暴露在外围边界处的端口设置为波端口,模型内部的端口设置为集总端口。
5、设置边界条件(Boundary Condition)一般需要绘制一个airbox 作为求解区域Radiation边界,airbox需要包围3D模型,且外延一定距离,这个距离通常在波长的1/10~1/4范围内。
取决与目标对外辐射能量的大小。
微带分析还需建一个接地平面作为E边界
6、仿真求解设置,有关求解频率,迭代次数和误差阀值设置。
7、设置检查与求解。
HFSS学习小结11、对称的使用对于一个具体的高频电磁场仿真问题,首先应该看看它是否可以采用对称面。
这里面的约束主要在几何对称和激励对称要求。
如果一个问题的激励并不要求是可改变的,比如全部同相馈电的阵列,此时最好采用对称,甚至可以采用2个对称(E 和H 对称),将可以大大节约时间和设备资源。
2、面的使用在实际问题中,有很多结构是可以使用 2 维面来代替的,使用2 维面的好处是可以极大的减少计算量并且结果与使用3 维实体相差无几。
例如计算一个微带的分支线耦合器,印制板的微带以及地都可以指定某些面为理想电面代替,这样可以很快的获得所需要的物理尺寸及其性能。
再以计算偶极子为例,如果偶极子是以理想导体为材质的圆柱,那么相同的其他条件下其计算时间大约是采用等效面为偶极子的4~5 倍,由此可见一般。
3、Lump Port(集中端口)的使用在HFSS8 里提供了一种新的激励:Lump Port,这种激励避免了建立一个同轴或者波导激励,从而在一定程度上减轻了模型量,也减少了计算时间。
LumpPort 也可以使用一个面来代表,要注意的是对该Port 的校准线和阻抗线的设置一定要准确,端口在空间上一定要与其他金属(或电面)相接,否则结果极易出错。
4、关于辐射边界的问题在不需要求解近(远)场问题时,比如密封在金属箱体里面的滤波器等密闭问题,无需设置辐射边界。
在需要求解场分布或者方向图时,必须设置辐射边界。
这里有些需要注意的问题:在计算大带宽周期性结构时,比如3 个倍频程,最好分段计算,例如以一个倍频程为一段,也就是说在不同的频段计算时设置不同大小的辐射边界,否则在计算的频率边缘难以保证计算精度;其次,辐射边界的大小和问题的具体形状密切相关,如果物体的外部轮廓可以装在一个球或并不过分的椭球中时,宜采用立方体边界——简单有效,如果问题的外部轮廓较为复杂或者椭球2 轴差距太大,以采用相似形边界或圆柱边界,对于辐射问题,如果估计问题的增益较低(比如2dB),那么边界宜采用球形,此时为了得到结果准确也只好牺牲时间了;另在HFSS 8 中提供了一种新的吸收边界——PML 边界条件,对于这种边界,笔者并不是很满意,尽管其有效距离为八分之一个中心波长——是老边界的一半,可以减少计算量,然而这种边界由程序自己生成,为一个立方体的复杂结构,对于一些特殊的复杂问题,这种边界内部有很多的空间是无用的,此时还不如使用老边界灵活。
引言•建立三维仿真模型的过程与绘制三维工程图类似。
通常用一些基本元件构造复杂结构。
基本元件可以分成点、线、面和实体四种基本类性。
每种类型又包含多种基本元素例如,面类中矩形、圆形、多边形、椭圆形和由函数定义的面等。
•每种基本类型又可以通过平拉、旋转等操作转换。
例如,线经过平拉转换成面。
面经过平拉转换成实体。
•在四种基本类型中只有实体具有材料属性。
点、线和面没有材料属性。
在四种基本类型中只有面和实体的表面可以赋边界。
•建立模型并不是简单地照搬,应去掉与电磁特性无关的部分。
建立和简化模型需要利用电磁场和微波技术的基本概念。
HFSS的基本界面什么是仿真模型?导入模型?Import From a File•HFSS和CST都可以从其它软件导入2D或3D图形。
•导入的模型一般不能参数化,不能修改。
•一般不提倡导入模型–多数零件都是金属件,计算的场在介质中;–零件有公差。
Import From a File•HFSS手工绘制仿真模型?HFSS的画线菜单Draw Geometry•Basic Geometry–Line –Face –SolidHFSSCSTDraw Geometry•Transform–Line->Face–Face->solid旋转结构-螺旋的建模1. 定义要旋转的截面定义整个螺旋的圈数和高度NOTE: 旋转方向依赖右手法则5. 删掉刚才选的虚拟截面,按(D)拉伸生成扭曲波导选择面= -5 度基本3D 结构汇总方块圆柱圆环椭圆柱球体圆锥拉伸旋转Boolean (HFSS)•BooleanGeometry Transform (HFSS)•Transform–Arrange–Duplicate–Scale结构变换-窗口详解结构变换-效果举例四次平移依XOY平面镜像布尔运算(CST)两物体“相交”(立方体和圆球)布尔运算-操作步骤现以立方体“减”圆球为例,来说明布尔运算的操作步骤1. 原始两不同材料物体 5. 回车确定Working Coordnate System•Working CS(HFSS)工作坐标系-概述CST MWS中有两套坐标系统1. 全局坐标系(X,Y,Z)全局坐标系工作坐标系-应用举例(1)现用一立方体上倾斜圆柱的创建过程来举例说明WCS的用法1. 全局坐标系下的立方体3. 激活WCS,选中顶面工作坐标系-应用举例(2)5. 选中顶点 6. 让WCS与顶点对齐续工作坐标系-应用举例(3)12. 最终效果9. 将WCS沿V轴旋转30°10. 在WCS 下创建圆柱11. 在Overlap提示框中将二者相加Draw Equation Based CurveDraw Equation Based Surface由解析曲线生成旋转体1) 执行宏命令2)enter your functionFor xxx = 1.5 To 10 STEP 0.53) 使用捕捉功能对解析曲线闭合4) 由线到面5) 旋转analytic_curves.modFillet the selected EdgeChamfer the selected Edge倒角1. 原始物体 4.b 设置倒角半径5. 最终结果4.a 设置倒角宽度Objects->Chamfer Edges渐变操作选择要连接的2个面,以说明:不平行也可以操作掏空“掏空”功能对很多物体(如波导,喇叭,抛物面天线等)的建模都极为方便1. 原始物体2. 分别选中前后两个面参数化建模•在HFSS和CST中都可以参数化建模。
HFSS的近场仿真1、软件安装和破解1)Hfss13只能安装在C盘。
2)破解时先在控制面板里关闭Windows defender并且退出360杀毒软件。
否则Ansoft2008fix.exe会被当病毒杀掉。
3)将Ansoft2008fix.exe和hfss12fix.exe和license.lic拷贝到HFSS13.0目录下。
4)以管理员身份运行Ansoft2008fix.exe。
5)以管理员身份运行hfss12fix.exe,连续patch六个dll。
6)打开hfss,弹出框框,无视继续。
依次点击TOOls-options-general options-webupdate options-never2、模型的建立2.1设计变量2.2画模型2.3 边界条件、2.4激励源2.5加运算器2.6 画近场线近场线要一一对应。
3、数据的导出用Add Trace添加曲线到同一页面,用Apply Trace改变频点。
导出为csv格式。
将横坐标反归一化。
画出三维曲面图。
4、用脚本画近场线Dim oAnsoftAppDim oDesktopDim oProjectDim oDesignDim oEditorDim oModuleSet oAnsoftApp = CreateObject("AnsoftHfss.HfssScriptInterface")Set oDesktop = oAnsoftApp.GetAppDesktop()Set oProject = oDesktop.GetActiveProject()Set oDesign = oProject.GetActiveDesign()Set oEditor = oDesign.SetActiveEditor("3D Modeler")' 声明变量与常数.Dim zpos, Xnum, Ynum, xspan, yspan, dx, dy,posDim Units, indexDim y()Dim x()Units = "mm"pos=6000'-----------------------------3米x面----------------------------------------Units = InputBox("Select the units:"&Chr(13)& _"(cm,mm,um,in,mil)", "Nearfield","mm",pos,pos)zpos = InputBox("Input the Z plane position:","Nearfield", 3200,pos,pos)xspan = InputBox("Input X sampling span:","Nearfield", 4000,pos,pos)yspan = InputBox("Input Y sampling span:","Nearfield", 2100,pos,pos)Xnum = InputBox("Input sampling number in X direction:","Nearfield", 100,pos,pos) Ynum = InputBox("Input sampling number in Y direction:","Nearfield", 15,pos,pos)Redim y(Ynum)dx=xspan/(Xnum-1)dy=yspan/(Ynum-1)y(0)="Position of y"For n=1 To Ynumy(n)=-yspan/2 + (n-1)*dy'将X向点坐标存入数组ZValue=cstr(zpos) & UnitsYValue=cstr(y(n)) & UnitsXValuemin=cstr(-xspan/2) & UnitsXValuemmax=cstr(xspan/2) & Unitsindex="lin3mx" & cstr(n)oEditor.CreatePolyline Array("NAME:PolylineParameters", "IsPolylineCovered:=", true, "IsPolylineClosed:=", _false, Array("NAME:PolylinePoints", Array("NAME:PLPoint", "X:=", XValuemin, "Y:=", YValue, "Z:=", _ZValue), Array("NAME:PLPoint", "X:=", XValuemmax, "Y:=", YValue, "Z:=", ZValue)), _Array("NAME:PolylineSegments", Array("NAME:PLSegment", "SegmentType:=", _ "Line", "StartIndex:=", 0, "NoOfPoints:=", 2)), Array("NAME:PolylineXSection", "XSectionType:=", _"None", "XSectionOrient:=", "Auto", "XSectionWidth:=", "0mm", "XSectionTopWidth:=", _"0mm", "XSectionHeight:=", "0mm", "XSectionNumSegments:=", "0", "XSectionBendType:=", _"Corner")), Array("NAME:Attributes", "Name:=", index, "Flags:=", "", "Color:=", _ "(132 132 193)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _"", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SolveInside:=", _ true)namepara="NAME:" & indexSet oModule = oDesign.GetModule("RadField")oModule.InsertNearFieldLineSetup Array(namepara, "UseCustomRadiationSurface:=", _ false, "Line:=", index, "NumPts:=", cstr(Xnum))Next'------------------------------3米y面---------------------------------------Units = InputBox("Select the units:"&Chr(13)& _"(cm,mm,um,in,mil)", "Nearfield","mm",pos,pos)zpos = InputBox("Input the Z plane position:","Nearfield", 3200,pos,pos)xspan = InputBox("Input X sampling span:","Nearfield", 2100,pos,pos)yspan = InputBox("Input Y sampling span:","Nearfield", 4000,pos,pos)Xnum = InputBox("Input sampling number in X direction:","Nearfield", 15,pos,pos) Ynum = InputBox("Input sampling number in Y direction:","Nearfield", 100,pos,pos)Redim x(Xnum)dx=xspan/(Xnum-1)dy=yspan/(Ynum-1)x(0)="Position of x"For n=1 To Xnumx(n)=-xspan/2 + (n-1)*dx'将X向点坐标存入数组ZValue=cstr(zpos) & UnitsXValue=cstr(x(n)) & UnitsYValuemin=cstr(-yspan/2) & UnitsYValuemmax=cstr(yspan/2) & Unitsindex="lin3my" & cstr(n)oEditor.CreatePolyline Array("NAME:PolylineParameters", "IsPolylineCovered:=", true, "IsPolylineClosed:=", _false, Array("NAME:PolylinePoints", Array("NAME:PLPoint", "Y:=", YValuemin, "X:=", XValue, "Z:=", _ZValue), Array("NAME:PLPoint", "Y:=", YValuemmax, "X:=", XValue, "Z:=", ZValue)), _Array("NAME:PolylineSegments", Array("NAME:PLSegment", "SegmentType:=", _"Line", "StartIndex:=", 0, "NoOfPoints:=", 2)), Array("NAME:PolylineYSection","YSectionType:=", _"None", "YSectionOrient:=", "Auto", "YSectionWidth:=", "0mm", "YSectionTopWidth:=", _"0mm", "YSectionHeight:=", "0mm", "YSectionNumSegments:=", "0","YSectionBendType:=", _"Corner")), Array("NAME:Attributes", "Name:=", index, "Flags:=", "", "Color:=", _"(132 132 193)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _"", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SolveInside:=", _true)namepara="NAME:" & indexSet oModule = oDesign.GetModule("RadField")oModule.InsertNearFieldLineSetup Array(namepara, "UseCustomRadiationSurface:=", _ false, "Line:=", index, "NumPts:=", cstr(Ynum))Next5、用脚本导出近场数据Dim oAnsoftAppDim oDesktopDim oProjectDim oDesignDim oEditorDim oModuleSet oAnsoftApp = CreateObject("AnsoftHfss.HfssScriptInterface")Set oDesktop = oAnsoftApp.GetAppDesktop()oDesktop.RestoreWindowSet oProject = oDesktop.SetActiveProject("Project6")Set oDesign = oProject.SetActiveDesign("HFSSDesign1")Set oModule = oDesign.GetModule("ReportSetup")'---------------------------------------3mx-0.8G--------------------------------------------------------oModule.CreateReport "XY Plot 27", "Near Fields", "Rectangular Plot", _"Setup1 : Sweep", Array("Context:=", "lin3mx1"), Array("NormalizedDistance:=", Array( _ "All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx2"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx3"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx4"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx5"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx6"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx7"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx8"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx9"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx10"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx11"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx12"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx13"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx14"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3mx15"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.ExportToFile "XY Plot 27", "C:/Users/xiaoen/Documents/3mx-0.8G.csv" oModule.DeleteReports Array("XY Plot 27")'---------------------------------------3my-0.8G--------------------------------------------------------oModule.CreateReport "XY Plot 27", "Near Fields", "Rectangular Plot", _"Setup1 : Sweep", Array("Context:=", "lin3my1"), Array("NormalizedDistance:=", Array( _ "All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my2"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my3"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my4"),Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=",_"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my5"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my6"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my7"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my8"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my9"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my10"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my11"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my12"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my13"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my14"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.AddTraces "XY Plot 27", "Setup1 : Sweep", Array("Context:=", "lin3my15"), Array("NormalizedDistance:=", Array( _"All"), Array("NAME:VariableValues", "Freq:=", "0.8GHz")), Array("X Component:=", _"NormalizedDistance", "Y Component:=", Array("NearETotal")), Array()oModule.ExportToFile "XY Plot 27", "C:/Users/xiaoen/Documents/3my-0.8G.csv" oModule.DeleteReports Array("XY Plot 27")。