使用python-cst实现角锥喇叭的建模仿真
内容
完全使用python-cst联合仿真脚本模式,从0开始实现角锥喇叭的建模、端口添加、远场监视器添加,以及模型仿真。喇叭的形状如图所示:

一,创建cst项目
# 创建CST文件,文件路径名为cst_path
def creat_cst(cst_path):
allpids = cst.interface.running_design_environments() # 以列表形式返回运行的cst环境名(PIDs)
DE_is_open = False # 判断是否有打开的DE
for pid in allpids:
my_DE = cst.interface.DesignEnvironment.connect(pid) # 连接到指定PID的DE
DE_is_open = True
break
if not DE_is_open: # DE不存在,则新建一个DE,否则使用上面已打开的最后一个DE
my_DE = cst.interface.DesignEnvironment()
my_project = my_DE.new_mws()
my_project.save(cst_path)
return my_DE, my_project
二,定义VBA执行(添加历史书)
# 执行VBA代码并添加历史书
def add_vba_history(my_modeler, sCommand, history_name):
line_break = '\n' # 用于VBA代码的拼接
sCommand = line_break.join(sCommand)
my_modeler.add_to_history(history_name, sCommand)
return my_modeler
三,设置变量和仿真频率
# 设置参数
class set_parameter(object):
def __init__(self, my_modeler):
super().__init__()
self.parameter_list = {
'taper_angle': 7, # 嘴部抬头角度
'horn_length': 166.71, # 喇叭嘴部长
'wall_thickness': 1.8, # 喇叭厚度
'waveguide_height': 24, # 喇叭尾部高
'waveguide_width': 12, # 喇叭尾部宽
'waveguide_length': 51.4, # # 喇叭尾部长
'theta': 0, # unit cell下设置的入射电磁波角度
'phi': 0
}
self.frq = [12, 14]
self.my_modeler = my_modeler
def add_parameter(self):
for par_key, par_value in self.parameter_list.items():
self.my_modeler.add_to_history('StoreParameter', f'MakeSureParameterExists("{
par_key}", {
par_value})')
return self.my_modeler
# 添加频率
def set_frq(self):
sCommand = 'Solver.FrequencyRange %f, %f' % (self.frq[0], self.frq[1])
self.my_modeler.add_to_history('define FrequencyRange', sCommand)
return self.my_modeler
四,设置Units
# 单位初始化
def init_unit(my_modeler):
sCommand = ['With Units',
'.Geometry "mm"',
'.Frequency "GHz"',
'.Voltage "V"',
'.Resistance "Ohm"',
'.Inductance "H"',
'.TemperatureUnit "Kelvin"',
'.Time "s"',
'.Current "A"',
'.Conductance "Siemens"',
'.Capacitance "F"',
'End With']
history_name = 'define Units'
my_modeler = add_vba_history(my_modeler, sCommand, history_name)
return my_modeler
五,设置Background
# 设置背景材料
def set_background(my_modeler):
sCommand = ['With Background',
'.ResetBackground',
'.Type "Normal"',
'.XminSpace "0.0"',
'.XmaxSpace "0.0"',
'.YminSpace "0.0"',
'.YmaxSpace "0.0"',
'.ZminSpace "0.0"',
'.ZmaxSpace "0.0"',
'.ApplyInAllDirections "False"',
'End With']
history_name = 'define Background'
my_modeler = add_vba_history(my_modeler, sCommand, history_name)
return my_modeler
六,设置Boundaries
这里设置的open(add space)边界条件,如果是设置成unit cell,则将注释部分的注释取消,其中周期边界角度设置为了theta, phi。
def set_boundary(my_modeler):
sCommand = ['With Boundary',
'.Xmin "expanded open"',

该文介绍如何使用Python-CST库从零开始创建角锥喇叭的建模和仿真。通过定义VBA执行、设置变量和频率、单位、背景、边界条件,然后构建喇叭模型,修改频域求解器,设置波导端口和远场监视器,最后执行仿真。文章提供了详细的代码示例,涵盖了建模和仿真的全过程。
最低0.47元/天 解锁文章
2306





