利用python和HFSS来设计实现波导缝隙天线(二)

系列文章目录

利用python和HFSS来设计实现波导缝隙天线(一)

前言

提示:这里可以添加本文要记录的大概内容:

参照利用python和HFSS来设计实现波导缝隙天线(一)已经计算完成缝隙偏移量和每个缝隙的谐振长度,接下来在HFSS中完成仿真,缝隙数量21,旁瓣抑制符合泰勒分布,旁瓣抑制25dBc,谐振频率10

一、模型搭建

求解模式modal,输入模型和激励端口,文章末尾会提供整个python运行脚本。结构图如下:
在这里插入图片描述

二、仿真结果

直接利用公式输入的缝隙偏移量和缝隙谐振长度,结果非常不错。3D增益图如下:
在这里插入图片描述
2D增益图如下:
在这里插入图片描述
S参数如下,结果也很不错。
在这里插入图片描述

三、python脚本

代码如下(示例):

# ----------------------------------------------
# Script Recorded by Ansys Electronics Desktop Version 2023.1.0

# ----------------------------------------------
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oProject = oDesktop.SetActiveProject("Project1")
oProject.SaveAs("D:\\waveguide_antenna\\waveguide_slot_array_python\\one_array_21_elements\\one_array_21_elements.aedt", True)
oProject.InsertDesign("HFSS", "HFSSDesign1", "HFSS Terminal Network", "")
oDesign = oProject.SetActiveDesign("HFSSDesign1")
oEditor = oDesign.SetActiveEditor("3D Modeler")
oEditor.SetModelUnits(
	[
		"NAME:Units Parameter",
		"Units:="		, "mm",
		"Rescale:="		, False,
		"Max Model Extent:="	, 10000
	])
oDesign.SetSolutionType("HFSS Modal Network", 
	[
		"NAME:Options",
		"EnableAutoOpen:="	, False
	])
oEditor.CreateBox(
	[
		"NAME:BoxParameters",
		"XPosition:="		, "0mm",
		"YPosition:="		, "0mm",
		"ZPosition:="		, "0mm",
		"XSize:="		, "2mm",
		"YSize:="		, "0.4mm",
		"ZSize:="		, "0.4mm"
	], 
	[
		"NAME:Attributes",
		"Name:="		, "Box1",
		"Flags:="		, "",
		"Color:="		, "(143 175 143)",
		"Transparency:="	, 0,
		"PartCoordinateSystem:=", "Global",
		"UDMId:="		, "",
		"MaterialValue:="	, "\"vacuum\"",
		"SurfaceMaterialValue:=", "\"\"",
		"SolveInside:="		, True,
		"ShellElement:="	, False,
		"ShellElementThickness:=", "0mm",
		"ReferenceTemperature:=", "20cel",
		"IsMaterialEditable:="	, True,
		"UseMaterialAppearance:=", False,
		"IsLightweight:="	, False
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DAttributeTab",
			[
				"NAME:PropServers", 
				"Box1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:Name",
					"Value:="		, "inner_box"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:a",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "22.86mm"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:b",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "10.16mm"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:lamda_g",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "39.71mm"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:N",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "21mm"
				]
			]
		]
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DCmdTab",
			[
				"NAME:PropServers", 
				"inner_box:CreateBox:1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:Position",
					"X:="			, "0mm",
					"Y:="			, "-a/2",
					"Z:="			, "-b/2"
				],
				[
					"NAME:YSize",
					"Value:="		, "a"
				],
				[
					"NAME:ZSize",
					"Value:="		, "b"
				],
				[
					"NAME:XSize",
					"Value:="		, "lamda_g/2*N+lamda_g/4"
				]
			]
		]
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DCmdTab",
			[
				"NAME:PropServers", 
				"inner_box:CreateBox:1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:XSize",
					"Value:="		, "lamda_g/2+lamda_g/4"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:DeletedProps", 
				"N"
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:N",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "21"
				]
			]
		]
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DCmdTab",
			[
				"NAME:PropServers", 
				"inner_box:CreateBox:1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:XSize",
					"Value:="		, "lamda_g/2*N+lamda_g/4"
				]
			]
		]
	])
oEditor.Copy(
	[
		"NAME:Selections",
		"Selections:="		, "inner_box"
	])
oEditor.Paste()
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DAttributeTab",
			[
				"NAME:PropServers", 
				"inner_box1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:Name",
					"Value:="		, "outer_box1"
				],
				[
					"NAME:Material",
					"Value:="		, "\"pec\""
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:thick",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "1mm"
				]
			]
		]
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DCmdTab",
			[
				"NAME:PropServers", 
				"outer_box1:CreateBox:1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:Position",
					"X:="			, "0mm",
					"Y:="			, "-a/2-thick",
					"Z:="			, "-b/2-thick"
				],
				[
					"NAME:XSize",
					"Value:="		, "lamda_g/2*N+lamda_g/4+thick"
				],
				[
					"NAME:YSize",
					"Value:="		, "a+2*thick"
				],
				[
					"NAME:ZSize",
					"Value:="		, "b+2*thick"
				]
			]
		]
	])
oEditor.Subtract(
	[
		"NAME:Selections",
		"Blank Parts:="		, "outer_box1",
		"Tool Parts:="		, "inner_box"
	], 
	[
		"NAME:SubtractParameters",
		"KeepOriginals:="	, False,
		"TurnOnNBodyBoolean:="	, True
	])
oEditor.CreateBox(
	[
		"NAME:BoxParameters",
		"XPosition:="		, "20mm",
		"YPosition:="		, "0mm",
		"ZPosition:="		, "0mm",
		"XSize:="		, "60mm",
		"YSize:="		, "-20mm",
		"ZSize:="		, "0mm"
	], 
	[
		"NAME:Attributes",
		"Name:="		, "Box1",
		"Flags:="		, "",
		"Color:="		, "(143 175 143)",
		"Transparency:="	, 0,
		"PartCoordinateSystem:=", "Global",
		"UDMId:="		, "",
		"MaterialValue:="	, "\"vacuum\"",
		"SurfaceMaterialValue:=", "\"\"",
		"SolveInside:="		, True,
		"ShellElement:="	, False,
		"ShellElementThickness:=", "0mm",
		"ReferenceTemperature:=", "20cel",
		"IsMaterialEditable:="	, True,
		"UseMaterialAppearance:=", False,
		"IsLightweight:="	, False
	])
oEditor.Delete(
	[
		"NAME:Selections",
		"Selections:="		, "Box1"
	])
oEditor.CreateBox(
	[
		"NAME:BoxParameters",
		"XPosition:="		, "-20mm",
		"YPosition:="		, "0mm",
		"ZPosition:="		, "0mm",
		"XSize:="		, "50mm",
		"YSize:="		, "10mm",
		"ZSize:="		, "0mm"
	], 
	[
		"NAME:Attributes",
		"Name:="		, "Box1",
		"Flags:="		, "",
		"Color:="		, "(143 175 143)",
		"Transparency:="	, 0,
		"PartCoordinateSystem:=", "Global",
		"UDMId:="		, "",
		"MaterialValue:="	, "\"vacuum\"",
		"SurfaceMaterialValue:=", "\"\"",
		"SolveInside:="		, True,
		"ShellElement:="	, False,
		"ShellElementThickness:=", "0mm",
		"ReferenceTemperature:=", "20cel",
		"IsMaterialEditable:="	, True,
		"UseMaterialAppearance:=", False,
		"IsLightweight:="	, False
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DCmdTab",
			[
				"NAME:PropServers", 
				"Box1:CreateBox:1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:ZSize",
					"Value:="		, "10mm"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:l1",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "14.2mm"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:d1",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "1.02mm"
				]
			]
		]
	])
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:W",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "1.59mm"
				]
			]
		]
	])
oEditor.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:Geometry3DCmdTab",
			[
				"NAME:PropServers", 
				"Box1:CreateBox:1"
			],
			[
				"NAME:ChangedProps",
				[
					"NAME:Position",
					"X:="			, "lamda_g/2-l1",
					"Y:="			, "d1-W/2",
					"Z:="			, "b/2"
				],
				[
					"NAME:ZSize",
					"Value:="		, "thick"
				],
				[
					"NAME:YSize",
					"Value:="		, "W"
				],
				[
					"NAME:XSize",
					"Value:=&#
### 使用HFSS进行共面波导天线设计 #### 设计准备 为了有效地利用 Ansys HFSS 进行共面波导(CPW, Coplanar Waveguide)形式的天线设计,理解 CPW 的基本结构及其工作原理至关重要。CPW 结构由位于同一平面内的中心导体两侧的地组成,在高频应用中表现出良好的特性[^1]。 #### 创建项目与设置环境 启动 Ansys HFSS 软件并创建新项目。选择适合微波频率范围的工作模板,确保仿真精度满足需求。对于 CPW 天线的设计,建议采用三维建模方式以便更精确地捕捉电磁场分布情况[^2]。 #### 建立几何模型 进入 3D Modeler 模块定义天线的具体尺寸参数。通常情况下,需要指定以下几个方面: - 中心导体宽度 (w) - 接地层间距 (s) - 衬底厚度 (h) 及其介电常数 (εr) 这些参数直接影响到最终形成的阻抗匹配效果以及辐射效率等性能指标。可以参照已有的研究资料选取合理的初始值作为起点,并在此基础上逐步调整优化。 ```python # Python伪代码用于说明参数设定过程 parameters = { 'center_conductor_width': w, 'ground_spacing': s, 'substrate_thickness': h, 'dielectric_constant': εr } ``` #### 材料属性配置 为各部分赋予相应的材料属性,特别是介质基板的选择非常重要。常见的选项包括 Rogers RO4003C 或 FR-4 等具有稳定电气特性的板材。正确输入相对介电常数值其他物理参数有助于提高仿真的准确性。 #### 边界条件施加 合理设置边界条件是保证计算收敛性结果可靠性的关键一步。针对开放式端口类型的 CPW 天线,一般会在开放末端处添加 Perfect E 或者 Floquet Port 类型的终止条件;而在其他方向上则可考虑使用 PML(Perfectly Matched Layer)吸收边界来减少反射干扰的影响。 #### 参数化扫描与优化 完成初步布局之后,可以通过变量表实现对某些重要参数(如上述提到的 w,s,h εr)的变化趋势进行全面探索。借助内置的 Optimetrics 工具执行敏感度分析、目标驱动优化等功能,从而找到最佳设计方案以达到预期的功能要求。 #### 后处理与结果评估 最后阶段涉及对所得数据进行整理归纳,绘制 S 参数曲线图、远近场模式图形等多种可视化表达形式,以此判断所设计天线的各项技术规格是否符合标准规定。同时也可以进一步深入挖掘潜在改进空间,持续提升产品竞争力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值