利用 Matlab 在 CST 中自动构建龙伯(Luneburg)透镜

本文首次在公众号【零妖阁】上发表,为了方便阅读和分享,我们将在其他平台进行自动同步。由于不同平台的排版格式可能存在差异,为了避免影响阅读体验,建议如有排版问题,可前往公众号查看原文。感谢您的阅读和支持!

龙伯透镜简介

龙伯透镜是一种折射率不均匀介质透镜
这种透镜的介质折射率分布具有球对称性,即折射率仅与到球心的距离有关。它的工作原理是龙伯光学理论,由于早期低损耗低介电常数材料工艺不成熟,直到上世纪 70 年代末才应用于工程。

龙伯透镜的工作原理如下图所示。其中点 F 为馈电点,亦是透镜面上的焦点。要使透镜辐射口面具有高效率,必须使 AB 上为等相位面波前
因此,从 F 点发出的每一射线 FNPQ 必须具有等电长度。或者反过来说,平行波束的射线经过介质折射后都聚焦于同一点 F,这就是龙伯透镜内介质折射率确定的依据(费马定律)。

请添加图片描述

对于一个半径为 R R R 的龙伯透镜,透镜内部的折射率 n ( r ) n(r) n(r) 为径向尺寸 r r r 的函数,它在 r r r 处的介电常数可表示为
ϵ ( r ) = n ( r ) 2 = 2 − ( r R ) 2 \epsilon(r) = n(r)^2 = 2 - (\frac{r}{R})^2 ϵ(r)=n(r)2=2(Rr)2

根据这个介电常数分布公式,下面我们在 2.4 GHz 下设计一个圆柱形龙伯透镜,假设透镜的半径为 1.5 λ 1.5\lambda 1.5λ,将透镜内部离散化为 30 层具有不同介电常数的介质,则介电常数的计算程序如下:

%% 龙伯透镜参数设置
c = 3e8;        % 光速
freq = 2.4e9;      % 工作频率
lambda = c/freq*1e3;   % 波长 mm
R = 1.5*lambda;        % 透镜半径  mm
N = 30;     % 离散层数
r = 0:R/N:R;    % 各层介质的半径分布
r1 = [0, r(2:end)-R/(2*N)];     % 各层介质的中心处的径向距离
epsilon_r = 2 - (r1/R).^2;     % 各层介质的介电常数分布(对应介质中心处径向距离)
%%%% 绘图
theta = linspace(0, 2*pi, 50);
[theta_mat, r_mat] = meshgrid(theta, r);
[~, epsilon_r_mat] = meshgrid(theta, epsilon_r);
[x_mat, y_mat, z_mat] = pol2cart(theta_mat, r_mat, epsilon_r_mat);   % 极坐标系转换为直角坐标系
surf(x_mat, y_mat, z_mat);

请添加图片描述

安装 CST-MATLAB API

CST-MATLAB API 可以很方便地实现 Matlab 与 CST 之间的交互。

点击 MATLAB 主页的附加功能,直接搜索 “CST”,找到 “hgiddenss/CST_App”,点击添加到 MATLAB,详细安装图解如下。

请添加图片描述

在 CST 中自动构建龙伯透镜

首先需要创建 CST 项目,注意,此时应确保 CST 软件为打开状态。

%% 创建CST项目
CST = CST_MicrowaveStudio(cd, 'LuneburgLens.cst'); % 在当前目录下创建 CST 项目

定义不同介电常数材料

%% 定义不同介电常数材料
mu = 1;   % 磁导率
c_map = parula(length(epsilon_r));   % 材料颜色列表
for i = 1:N
    material = ['Material_', num2str(i)];
    CST.addNormalMaterial(material, epsilon_r(i+1), mu, c_map(i,:));    % 添加材料
end

创建透镜中的离散介质层

%% 创建透镜中的离散介质层
z = [-0.25, 0.25].*lambda;    % 圆柱形龙伯透镜高度为二分之一波长
for i = 1:N
    name = sprintf('cylinder_%d',i);
    component = 'Component 1';
    material = ['Material_', num2str(i)];
    CST.addCylinder(r1(i+1), r1(i), 'z', 0, 0, z, name, component, material);   % 添加圆柱体
end

请添加图片描述

设置仿真参数

%% 设置仿真参数
%%% 设置仿真频率
CST.setFreq(2,3)
%%% 添加两个线源,分别位于 (0,R) 和 (1/sqrt(2)R,1/sqrt(2)R)
CST.addDiscretePort([0, 0], [R, R], z, 0.1, 50);
CST.addDiscretePort([R, R]*cosd(45), [R, R]*cosd(45), z, 0.1, 50);
%%% 设置边界条件
CST.setBoundaryCondition('xmin','open add space','xmax','open add space','ymin',...
    'open add space','ymax','open add space');
CST.setBoundaryCondition('Zmin', 'Electric', 'ZMax', 'Electric');  % 相当于透镜在z方向上无限延展
%%% 设置对称面,减小计算区域
CST.addSymmetryPlane('Z', 'electric');
%%% 设置计算区域
CST.setBackgroundLimits([lambda, lambda], [lambda, lambda], [0 0]);
%%% 添加场监视器
CST.addFieldMonitor('EField', freq/1e9);
CST.addFieldMonitor('farfield', freq/1e9);
%%% 选择时域求解器
CST.setSolver('td');
%%% 开启仿真
CST.runSimulation;

请添加图片描述

仿真结果

馈源 1 对应的近场分布:
请添加图片描述

馈源 1 对应的远场分布:
请添加图片描述

馈源 2 对应的近场分布:
请添加图片描述

馈源 2 对应的远场分布:
请添加图片描述

参考文献

[1] 刘璟. 多波束龙伯透镜天线技术研究[D].电子科技大学,2010.
[2] CST_App 的 Github 项目地址:https://github.com/hgiddenss/CST_App.

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值