在HFSS中快速建模/创建天线阵的方法

写在前面的话

时隔两周,我又回来啦!这次主要带来一个在软件学习过程中的一个额外收获,就是基于Matlab创建天线阵的方法。其实HFSS自带的3D模型创建已经可以满足日常使用所需,但是在一些特殊结构(比如满足某个函数的天线阵列)的创建中,建模的操作会变得无比繁琐。这时候就不得不提到HFSS的脚本文件vbs了。我们可以使用Matlab丰富的库函数来帮助我们生成vbs文件,然后在HFSS中将模型快速的建立。

有关的资料和视频链接

这边推荐一下B站up主shygeyang的视频,我也是从这里面了解到这个的:
MATLAB,HFSS, API表面阵列的设计: link.
视频中提到的吴迪(无敌?)大佬的文件:link.
视频中up主的演示文件:link

关于脚本文件vbs

VBScript 是 Microsoft Visual Basic Script Edition 的缩写,是微软公司可视化 BASIC的脚本版。而VBS是VBScript的简写。是基于 Visual Basic 的脚本语言设计的。换言之, Microsoft Visual Basic 是微软公司,推出的一套可视化编程工具, 语法基于 Basic 模式。在此环境下,脚本语言, 不编译成二进制文件, 直接由宿主解释源代码并执行, 在此条件下所写的程序不是直接编译成.exe 格式可执行文件,而是直接给用户发送信息到.vbs 的源程序, 用户能直接执行,而不需了解其中很多繁杂的环节。也就是说,它可以实现各种各样的任务自动化,可以使我们从重复琐碎的工作中解脱出来,极大的提高工作效率,节省大量的时间和精力。(这段是我复制的,O(∩_∩)O哈哈~)
在这里而言,我们只要知道可以通过编写vbs文件来实现天线的快速创建就可以了,而Matlab就是我们可以快速创建vbs文件的工具。实际上Python也可以的,而HFSS也可以直接读取py格式的脚本文件。只是对我而言还是Matlab更加熟悉一些,这就看个人的喜好了。

脚本文件的简单展示

打开可爱的海飞丝,左键单击工具栏tools->record script to file,选择好存储路径,文件类型为vbs。之后软件就开始记录你的操作了,这边我们创建一个贴片Patch:
在这里插入图片描述
然后单击tools->stop script recording,操作的记录就停止了。当然可以选择更为复杂的操作,这边只为演示。这边可以把原来的图形删掉。此时在保存的路径下,会出现一个比较复古的图标:
在这里插入图片描述
这时双击它,软件会创建一个一模一样的贴片。此时如果用记事本打开脚本文件:
在这里插入图片描述
这边可以简单分析一下,创建一个贴片的步骤可以分为四步(实际上是三步)。其中第一段是vbs文件的申明,这个可以不用管。第二段算是接口的申明?(这个我不太懂)。第三段是我一开始画的贴片,而第四段是修改参数的脚本。其实对计算机而言,第四段就不是必须的了。

创建阵列

我学习这个的根本目的在于,在可以预见的将来,我会面对不少天线阵的建模。虽然主从边界条件很方便,但是还是有很多它无法顾及的地方,比如边缘效应,还有一些非周期的天线阵。

使用Matlab的函数的注意事项

啊,这边就是调用啊,你甚至不太用懂函数是怎么运作的,只要知道输入和输出就好……而且吴迪大佬的函数名都很直接的,只要HFSS建模的操作会用基本不存在使用障碍。,就是使用之前注意一下HFSS版本会不会有冲突——毕竟海飞丝的换代还是挺频繁的,有时候脚本文件的一些命名也会发生改变,这边2018,2019版本的HFSS基本都可以运行。
还有就是吴迪的工程下有很多文件夹,这边只要使用3dmodeler,analysis和boundary三个文件夹下的就可以了。还有就是这些函数其实不能完整的覆盖所有建模的工作,比如有一些边界条件(RLC什么的)是没有的,喜欢的大兄弟可以自己写写,懂了之后其实相对还是比较简单的。

建模的目标

就拿我手头上的一个仿真工作来说吧,基本目标就是这个玩意,基本单元并不复杂,具体细节在’‘Circuit-based nonlinear metasurface absorbers for high power surface currents’'这篇文章中可以看到。因为要在超表面上添加电路元件,所以每一个电路元件要留两个集总端口,而光是一个单元就有两个电阻,两个电容还有一个二极管!更不要说其他的一些相减操作了。其实这个仿真后续还涉及到路的仿真,我现在还在琢磨,再过段时间可以抽空写一写心得。
在这里插入图片描述

编程的简单介绍

可以创建文件:

  fileName = ['absorb_surface',num2str(N),'_',num2str(fc),'G_',num2str(arraynum)];
tmpScriptFile = ['路径'.vbs'];

Matlab中也可以添加HFSS的变量,使用’hfssaddVar’

  hfssaddVar(fid, 'f0', f, []);

这边编程的时候可以使用相对坐标系:这边给出一部分代码吧

  for n=1:N
        for m=1:M
            i=N*(m-1)+n;
            %%%%add local CS
            CSName = ['CS', num2str(i)];
            Origin = {['(',num2str(m),' -(M+1)/2)*p'],['((N+1)/2-',num2str(n),')*p'],'0'};
            XAxisVec = [1 0 0 ];
            YAxisVec = {0, 1, 0};
            hfssCreateRelativeCS(fid, CSName, Origin,XAxisVec, YAxisVec, units);
            hfssSetWCS(fid, CSName);
   %%%%%%%Array of metasrface(square loop)
            squarebig{i} = ['squarebig_',num2str(i)];
            Start_squareloop = {'-te/2','-te/2','h'};
            hfssRectangle(fid, squarebig{i}, 'Z', Start_squareloop, 'te', 'te', units);

            squaremedium{i} = ['squaremedium',num2str(i)];
            Start_squareloop1 = {'-tc/2','-tc/2','h'};
            hfssRectangle(fid, squaremedium{i}, 'Z', Start_squareloop1, 'tc', 'tc', units);
  
            hfssSubtract(fid, squarebig{i}, squaremedium{i}); 
            cut_square{1,1}= squarebig{i};
            PEbig{i}=['PEbig_',num2str(i)];
            hfssAssignPE(fid, PEbig{i},cut_square, false);
            …………………………
                  hfssSetWCS(fid, 'Global');
        end
    end

集总端口创建,不过这个函数好像不接受相对坐标系,必须使用原本的坐标系计算起点和终点的坐标。

  hfssAssignLumpedPort(fid, Port1{i}, squareport1{i}, [-20+(m-1)*p, 36-(n-1)*p, h],…… 
  [-20+(m-1)*p, 36-(n-1)*p-port_l, h], Units, 50, 0);

大概就是这些吧,其实我没有写完,有一些设置编程反而麻烦了。
在这里插入图片描述
这个就是大概的样子了,gif还挺好做的,原以为要折腾一会儿。

结论

这个就没什么好结论了吧,就是蛮方便的,O(∩_∩)O哈哈~。此外文章中的文件就不上传了,我是个代码苦手,不是很喜欢编程,文件也没写注释,就不脏了大家的眼了,之前的链接里面的实例是可以运行的,可以去github上下载,还不要积分。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值