标题不写,直接从二级标题开始。
1. 龙伯透镜的“卖点”究竟藏在那条公式里
第一次有人跟我描述龙伯透镜(Luneburg lens)时,我脑子里浮现的是那种晶莹剔透的玻璃球,看着人畜无害,实际上是个能把平面波和球面波互相“翻译”的几何光学器件。真正动手在 CST 里建它之前,我建议先把它的数学骨架摸清楚,否则后面建模就是在盲人摸象——参数填进去了,也不知道为什么对、为什么错。
龙伯透镜本质上是一颗半径 R 的球(或者柱),内部填充的介质介电常数不是常数,而是沿径向连续下降的梯度分布。它的设计目标只有一个:让平行入射的平面波,在球面对侧精确汇聚到球面上的一点;反过来,把球面上的点源变成出射的平面波。这个“球面共轭”的特性,是整个器件的灵魂。
这个目标反推出来的折射率分布,就是那条必须刻进肌肉记忆的公式:
n(r) = √(2 − (r/R)²),0 ≤ r ≤ R
代入两个端点验算一下:球心 r=0 处,n=√2≈1.414;球表面 r=R 处,n=√((2−1))=1,正好等于空气折射率。这个“表面自然匹配到自由空间”的边界条件,是龙伯透镜最优雅的地方——理论上不需要额外的抗反射层,波从球面出去就跟回家一样自然,反射极小。
介质材料的磁导率一般是 μr≈1,所以折射率完全由介电常数承担:
εr(r) = n²(r) = 2 − (r/R)²
这条式子说明一件事:龙伯透镜是“纯电介质梯度材料”器件,不是超材料那种靠谐振结构凑等效参数的玩法。它对频率的依赖性很弱(只要材料本身的色散不大),所以带宽可以做得非常宽,这也是它在宽带波束成形场景里被反复提起的原因。
1.1 为什么它天生就适合宽角度扫描
普通反射面或者透镜天线,一旦馈源偏离光轴,像差就上来了——彗差、像散一大堆,增益掉得难看。龙伯透镜的结构是球对称的,球面上任意一点到对侧球面的光学路径完全等价。也就是说,你把馈源沿球面挪动到任何角度,出射方向就跟着转同样的角度,波束形状几乎不变。
现实里能做到的扫描范围通常被两件事卡住:馈源本身的遮挡,以及馈源阵列机械结构能不能沿着球面排布。工程上常见的是 ±60° 到 ±90° 的连续扫描,再往外就要考虑馈源之间的干涉和边缘效应。
对比一下常见的替代方案:介质透镜(比如半球透镜)便宜、好加工,但扫描角一大,像差明显;相控阵灵活,但单元通道成本和功耗摆在那;反射面天线增益高、成本低,却只能机械转。龙伯透镜正好卡在中间——宽角、宽带、无源、可以多波束同时工作。多馈源同时贴在球面上,就能同时打出多个独立波束,不用切换、不用分时,这是它在一些地面通信和雷达前端场景里被反复评估的核心原因。
1.2 一个极容易被忽略的前提:μr 必须等于 1
上面那个 n = √(εr·μr) 的关系,只有在 μr=1 时才简化为 n=√εr。这句话听着像废话,但在 CST 里踩坑的人不少——有人为了“凑折射率”给材料同时改 εr 和 μ(磁损耗角),结果球内部的波阻抗和自由空间不匹配,波在球内来回反射,近场图上一片横向波纹,还以为是网格问题。
我的建议很明确:龙伯透镜的项目里,μr 老老实实设成 1,损耗角正切 tanδ 设成材料实测值,不要动磁参数。除非你做的不是经典龙伯透镜,而是某种阻抗匹配层改造过的变体,那属于另一个设计问题,需要单独讨论。
还有一点,前面说的“表面 εr=1 所以天然匹配”,成立的前提是表面那一层真的做到了 εr≈1。实际制造时最外层的 εr 会在 1.0 到 1.2 之间徘徊,这点小失配在宽角扫描时会被放大,是后面实测和仿真对不上的常见原因之一。
2. 把折射率换算成 CST 能认的介电常数
理论公式谁都会写,麻烦的是把它变成 CST 材料树里一个能被求解器识别的对象。这一步的做法选择,直接决定了你的模型是能在半小时内跑完,还是卡在内存不足上。
先说结论:εr 的取值必须用坐标的解析表达式,或者用离散球壳的分段常数去逼近,两者不能混着来。混着来的后果是,CST 里的材料定义和几何体边界对不上,求解器采样时会出现“半空气半介质”的模糊单元,结果不可信。
2.1 连续梯度写进材料表达式时的注意事项
CST 的微波工作室里,材料有一个“空间变化材料”的类型——不同版本的入口位置不太一样,有的在材料新建对话框里直接选,有的要通过材料分布或者用户自定义的场函数来定义。打开之后,你可以把 εr 写成一个关于全局坐标 (x, y, z) 的表达式。
对于球心在原点的龙伯透镜,R 取 40 mm 的话,表达式大致长这样:
epsilon = 2 - (x^2 + y^2 + z^2) / (40^2)看起来完美,实际上有两个坑。
第一个坑:表达式在球外会变成负数。当 r > R 时,2 − (r/R)² 是负的,物理上无意义,求解器大概率会报错或者给出诡异的场。所以必须做截断,写成类似max(2 - (x^2+y^2+z^2)/(R^2), 1.0)的形式,把球外区域钳位到 1(也就是空气)。虽然球体几何本身会把计算限制在球内,但网格单元跨越边界时,采样点有可能落在球外,这个保险必须加上。
第二个坑:空间变化材料在时域求解器里是被网格离散化的。也就是说,你写的是连续函数,求解器实际看到的是一堆阶梯状的常数单元。如果你的网格步长是 2 mm,而介电常数在径向上每 2 mm 变化 0.05,那离散误差还算能接受;但如果网格步长是 5 mm,而整个球半径只有 40 mm,梯度被粗糙量化,等效的折射率分布就偏离设计值了。这个误差不体现在任何报错里,只体现在你的焦斑变胖、旁瓣抬高。
2.2 连续分布、分层离散与相位误差的取舍
实际制造几乎不可能做连续梯度,所以仿真和实物之间迟早要经历“分层离散”这一步。问题是分多少层。
我的一般做法是先算相位误差再定层数。假定第 i 层球壳的内外半径是 r_{i−1} 和 r_i,用中点半径 r_m=(r_{i−1}+r_i)/2 处的 εr 作为这一层的常数值,那么单层引入的相位误差量级近似是:
Δφ ≈ (1/2)·k₀·|dn/dr|·(Δr)²
其中 k₀ 是自由空间波数,Δr 是层厚。这个式子告诉我们,误差随层厚的平方增长,所以想降低误差,加密层数比什么都有效。经验值:对于半径在 1~2 个波长的中小型透镜,12~20 层能压住相位误差;如果透镜半径只有 0.5 到 1 个波长,层数可以少一些,但也要 8 层以上。
层数一多,建模工作量就上去了。这里没有捷径,只能靠脚本批量生成,下一节会讲具体做法。
2.3 加一层外壳之后焦距就不在球面上了
纯龙伯透镜的焦点就在球面上,这带来一个很现实的测量难题:你放近场探针的位置正好和介质表面重叠,仿真里探针卡片跟介质曲面相交,网格剖分也别扭,实物上更是没法把探头塞进球里。
工程上常见的解法是在外面套一层均匀介质壳,把焦点“推”到球外。经典近似关系是:壳的折射率 n_s,焦距(从球心算起)大约为
f ≈ R / (n_s − 1)
比如壳材料 εr=2.0、n_s≈1.414,f ≈ 2.41R。这个公式是在壳折射率与透镜表面折射率接近时成立,属于一阶近似。稍微偏离就会出现球差,最终位置一定要靠仿真验证,不能拿公式直接下料。
另外,加了壳之后,等于在原本天然匹配的表面上加了一层阻抗突变,回波会明显上升。这时候要么把壳的厚度做成四分之一波长的匹配层,要么接受一定的回波损耗,用整体效率去权衡。
3. 三种建模路线,选错了要多花一周
同样一颗龙伯透镜,CST 里至少有三种建模路径。我在不同项目里三种都用过,各有各的适用场景,选错的话返工成本很高。
3.1 路线一:空间变化材料直接写表达式
这是最“干净”的做法,几何上就是一个球,材料上挂一个坐标表达式。建模时间十分钟,几何树清爽得像样板间。
适用场景:方案评估阶段。你想快速知道“R=40mm、单频 10 GHz 的龙伯透镜焦斑有多宽”“加壳之后焦距推到哪”,这条路最快。因为几何简单,网格也可以做得比较规整。
缺点也很直接:它描述的是理想连续梯度,跟你能造出来的东西差着一层。而且刚才提过,时域求解器会把连续分布离散成阶梯,如果网格不够密,你看到的其实是“被网格强行分层的透镜”,跟真实分层又是另一回事。
我的用法是把它当“理论上限”基准:先跑出理想情况下的焦斑宽度和增益,后面所有离散方案都跟这个基准比,看性能掉了多少。这个基准非常重要,因为很多设计最后卡住,不是因为方案本身差,而是因为你根本不知道最优能到哪一步。
3.2 路线二:同心球壳加脚本批量生成
这是最贴近实物的一种做法,也是最费事的一种。思路是把球拆成 N 个同心球壳,每层赋一个固定的 εr,值取该层中点半径处的理论值。
几何上,先建 N 个半径递增的球体,然后从外往内做布尔减运算,得到 N 个球壳。CST 的历史树支持 VBA 宏,手工点 N 次不现实,一般都用脚本循环。核心逻辑大致是这样(字段名不同版本略有差异,思路照搬就行):
' 假设已定义参数 R(球半径,单位 mm)和 N(层数) For i = 1 To N With Sphere .Reset .Name "lens_layer_" & CStr(i) .OuterRadius "R*" & CStr(i) & "/" & CStr(N) .InnerRadius "0" .Create End With Next i ' 从外到内逐层做减法,挖出球壳 For i = N To 2 Step -1 Solid.Subtract "lens_layer_" & CStr(i), "lens_layer_" & CStr(i-1) Next i减完之后,第 i 层球壳的介电常数用参数表达式赋值:
eps_i = 2 - ((R*(i-0.5)/N)/R)^2 = 2 - ((i-0.5)/N)^2这个式子很漂亮,因为它跟 R 无关,只跟层序有关——第 i 层的 εr 只取决于 i/N。这也顺带说明一个特性:龙伯透镜的介电常数分布是尺度无关的几何相似分布,同一个层数比例,放大缩小都成立,只是频段跟着变。
这条路的坑在于球壳太薄时布尔运算会失败。当层厚小于建模精度(默认公差通常设得很小,但曲面求交仍然可能出问题),减出来的球壳会出现破面或者零厚度区域。我的处理办法是:先确认最内层和最外层的厚度不小于 0.2 mm,如果 R 很小(比如 10 mm)又想要 20 层,那层厚只有 0.5 mm,勉强能过,但网格剖分时会有很多细小面,四面体网格数量飙升。
3.3 路线三:打孔介质板与有效介质理论
真要造出来,最常见的手段是在一块高介电常数的基板上打孔,用孔的密度来控制局部等效介电常数。孔多的地方等效 εr 低,孔少的地方接近基材本身的 εr。
问题来了:你手上只有 εr=2.8 的打印材料或者板材,但龙伯透镜中心需要 εr=2.0,表面需要 εr=1.0。从 2.8 打到 2.0 不难,从 2.0 打到 1.0 就极其困难——那意味着要挖掉几乎全部材料。所以基材选择很关键:基材 εr 越接近 2,整个映射区间越窄,打孔越均匀,机械强度也越好。
等效介电常数怎么算?球形气孔的 Maxwell-Garnett 公式是一个常用近似:
εeff = εm · [1 + 2f(εi − εm)/(εi + 2εm)] / [1 − f(εi − εm)/(εi + 2εm)]
其中 εm 是基材介电常数,εi=1 是空气,f 是气孔体积占比。如果孔是贯穿的圆柱孔,而且电场主要垂直于孔轴,公式形式会变成二维版本:
εeff = εm · [1 + f(εi − εm)/(εi + εm)] / [1 − f(εi − εm)/(εi + εm)]
注意:这两个公式都建立在“孔径远小于波长”的准静态假设上。如果你的孔尺寸接近 λ/10,误差会迅速上升,这时候必须把实际孔洞建进模型里直接仿真,不能靠公式估。
这就带来一个两难:为了制造方便,孔要开得大一些;为了等效理论成立,孔要开得小一些。折中点在 λ/15 到 λ/20 附近。10 GHz 时 λ₀=30 mm,孔尺寸就得控制在 1.5~2 mm,一颗 40 mm 半径的球里要塞进去成百上千个孔,建模和网格都会爆炸。
3.4 三条路线到底怎么选
| 路线 | 建模耗时 | 计算量 | 与实物贴合度 | 典型用途 |
|---|---|---|---|---|
| 空间变化材料 | 10 分钟 | 中 | 低(理想连续) | 方案评估、性能上限 |
| 同心球壳 | 1~2 小时(含脚本) | 中高 | 高 | 分层介质方案验证 |
| 打孔建模 | 半天到一天 | 极高 | 最高 | 定型前的最终校核 |
我的实际工作流是这样的:先用路线一拿到性能上限,再用路线二验证分层带来的损失,最后只用路线三对关键的一两个角度做校核,不会全角度跑。因为路线三的计算量实在太大了,跑一次可能要几小时,全角度扫一遍不现实。
4. 网格、边界与激励:让结果出错的那几项设置
模型建得再漂亮,设置错了照样白干。这一节说的几个点,我几乎每次带新人都会强调一遍,因为它们的错误表现都很隐蔽——求解器不报错,结果看着也像那么回事,但就是跟理论对不上。
4.1 时域还是频域:先看你的梯度是连续还是离散
时域求解器的优势是一次跑完宽频带,看扫频特性很方便。它对曲面靠 PBA(完美边界近似)技术处理,球面不会被台阶化成“千层饼”,这点比早期的六面体网格好太多。
但用在空间变化材料上要小心。材料参数是在网格单元上采样的,网格越粗,梯度被量化得越厉害。如果你想要的是“真正的连续梯度”结果,时域求解器的网格必须加密到常规的两倍以上,否则你测到的其实是“粗糙分层”的性能。
频域求解器用四面体网格,对曲面和薄层更友好,而且能做自适应网格细化——它会自己判断哪里场变化剧烈,自动加密。对龙伯透镜这种中心到表面介电常数变化快慢不均的结构,自适应的价值很高。
我的选择逻辑:看宽频带用频域(选几个离散频点),看单频焦斑也用频域;只有在需要看脉冲响应或者超宽带特性时,才上时域。这不是死规则,但按这个来,返工次数会少很多。
4.2 网格密度:这里要比常规加密一档
常规建议是每波长 10~15 个网格,在龙伯透镜这里不够。原因在于梯度区域。
波在球内传播时,路径上的折射率是变化的,等效波长 λ(r) = λ₀/n(r),球心处波长最短(n 最大)。你按自由空间波长设网格,在球心附近就偏粗了。更麻烦的是梯度本身需要被分辨——如果一层网格跨过了一个明显的介电常数跃变,那个单元的有效参数就没有物理意义。
我的经验配置:
- 球内最大网格步长 ≤ λ₀/(20·n_max),n_max=1.414,也就是约 λ₀/28;
- 球面附近至少加一层局部加密,因为那里 εr 从 1.05 掉到 1.0,场变化快;
- 用四面体网格时,打开自适应细化,让它自己跑 2~3 轮,收敛判据看 S 参数变化小于 0.01。
代价是内存和时间。一颗 R=40mm、10 GHz 的球,按这个密度跑频域,网格量很容易到几十万四面体单元,一台普通工作站跑一个频点十几分钟,多频点就是几小时。这是没办法的事,龙伯透镜的计算量就是这样。
4.3 激励与边界的搭配
平面波激励是最常用的验证手段:设一个沿 −z 方向传播的平面波,看球后在 z 轴正向的焦点附近场强分布。这时候边界用 open (add space),四周留出至少 λ/4 的空间,让散射波能自然辐射出去。
点源激励更贴近实际天线用法:在球面某点放一个小型馈源(喇叭或者偶极子),看远场方向图。这时候要注意馈源本身不能太大,否则会遮挡球面、干扰近场。馈源直径最好控制在 0.3R 以内。
关于对称面,有个容易出错的细节。球对称结构看着很适合用对称面砍一半,但平面波的极性决定了对称面的边界条件——平行于电场的对称面要用电壁(PEC),垂直于电场的要用磁壁(PMC)。两者不能随意互换,换错了场分布完全是另一回事。而且要确认激励方向关于该平面确实是对称的,否则减半计算得到的结果是错的。我一般第一次跑都不用对称,先用全模型拿到基准,确认没问题后再试对称加速,对比一下两者结果是否一致。
5. 出结果之后重点看这几项
跑完求解,得到一堆场图和数据。哪些是必须看的,哪些是可以跳过的,直接决定你能不能从结果里读出问题。
5.1 焦点位置:和理论值对一下
先把理论值算出来:纯龙伯透镜,R=40 mm,焦点应该在球面上,也就是距球心 40 mm 处。加了一层 εr=2.0 的壳之后,按 f≈R/(n_s−1) 估,焦点推到约 96 mm。
然后在 CST 里沿轴线取一条场强曲线,找最大值的位置。如果实测焦点明显偏近或偏远,第一怀疑对象是介电常数分布。偏近通常是整体 εr 偏高(等效折射率大,聚焦更靠内),偏远则是 εr 偏低。
第二个怀疑对象是离散层数。层数太少会让有效梯度变“台阶化”,聚焦位置会有系统性偏移。有个简单的诊断方法:把层数从 10 加到 20 再加到 30,看焦点位置是否收敛。如果 20 层和 30 层的结果差不到 1%,说明 20 层够了;如果还在明显移动,那层数还不够。
5.2 焦斑宽度:别指望能小于衍射极限
焦点处的场强横向分布,取 −3 dB 宽度,这是判断透镜好坏的直观指标。
衍射极限给的下界大致是 λ/2 量级。以 10 GHz 为例,λ₀=30 mm,在 εr 较高的介质里波长更短,理论焦斑可以做到 10 mm 左右。仿真得到的焦斑如果明显宽于这个值,说明有问题。
常见原因排查顺序:
| 现象 | 可能原因 | 排查方法 |
|---|---|---|
| 焦斑宽、增益低 | 离散层数不足 | 增加层数看是否收敛 |
| 焦斑宽、有旁瓣 | 介电常数分布偏差 | 导出径向 εr 曲线核对理论值 |
| 焦斑位置偏移 | 整体 εr 偏高或偏低 | 扫 εr 缩放系数做灵敏度分析 |
| 焦斑发散、拖尾 | 网格太粗 | 加密网格重跑对比 |
| 场图出现周期条纹 | 材料损耗设置异常 | 检查 tanδ 和磁损耗 |
我这里列的是排查顺序,不是结论清单。具体问题一定要用“改一个变量、跑一次、对比”的方式定位,一次改多个参数,最后根本不知道是哪个起的作用。
5.3 能量平衡:一个被严重低估的检查项
CST 的求解结果里有一个能量平衡报告,列了入射、反射、透射、吸收各占多少,加起来应该接近 1。
龙伯透镜是纯介质结构,理论上吸收应该很小(除非材料 tanδ 大)。如果报告里吸收占比超过 5%,先别急着怀疑材料——先怀疑网格。网格太粗会导致数值耗散,表现为“虚假吸收”。这种情况在空间变化材料的模型里尤其常见,因为阶梯化的介电常数会在单元边界上产生非物理的反射和散射。
另一个常见情形:反射占比偏高。龙伯透镜理论上表面匹配,反射应该很小。如果反射到了 10% 以上,八成是表面那层 εr 没做到接近 1,或者外面那层壳的阻抗突变太剧烈。
5.4 扫描验证:把馈源沿球面挪几个位置
这一步经常被跳过,但它才是龙伯透镜的核心价值所在。做法是在球面不同极角位置放馈源,比如 0°、30°、60°、85°,每个位置跑一次远场,看主瓣方向是否跟着转、增益是否保持、旁瓣是否失控。
理想情况下主瓣方向应该精确等于馈源所在的角度,增益基本不变。现实中会看到:角度越大,增益略微下降,旁瓣略微抬高。下降幅度是判断设计好坏的关键指标。我的经验阈值是,在 ±60° 范围内增益下降不超过 1 dB 算合格,超过 2 dB 就得回头看是不是馈源位置和球面贴合不好,或者外壳的球差在起作用。
6. 从仿真到实物:几个必须提前处理的问题
仿真跑通不等于能造出来。龙伯透镜从模型到实物,中间隔着材料标定、加工公差、装配误差三道坎,每一道都能把性能吃掉一截。
6.1 打印材料的 εr 必须先标定,不能用厂家标称值
这是我最想强调的一条。介质打印材料或者板材,厂家给的 εr 通常是某个频点的典型值,实测的批次波动可能有 5% 到 10%。而龙伯透镜的聚焦位置对 εr 相当敏感——εr 整体偏 5%,焦点位置可能偏出好几个毫米。
标定方法不复杂:做一个已知尺寸的谐振腔(比如矩形腔或者圆柱腔),用同批材料做样品放进去,测谐振频率偏移,反推 εr。或者更简单一点,做一块厚度已知的平板,用自由空间法测传输相位,也能反推。这两种方法精度够用,成本也低。
标定一定要用和实际加工同一批次的材料。不同批次的打印材料,填充率、固化程度、含水率都可能有差异。
6.2 分层界面的空气间隙,是最容易忽略的损耗源
如果用多层介质板叠起来做龙伯透镜(这是常见的低成本方案),层与层之间难免有微小间隙。这个间隙看起来只有零点几毫米,但它的 εr=1,相当于在梯度里插了一层空气。
单层间隙的影响不大,问题是层数一多,间隙累积。我见过一个案例,20 层叠起来,总间隙到了 2 mm,等效于整个透镜的介电常数分布被整体拉低,焦点位置偏了将近 1 厘米。
对策有两个:一是仿真里显式建出间隙,把它当成模型的一部分,这样你至少知道它会影响多少,可以反向补偿;二是用薄层胶或者定位结构把间隙压到 0.05 mm 以内,从工艺上解决。前者是仿真层面的诚实,后者是工程层面的解决,两个都要做。
6.3 最外层几乎就是空气,怎么撑住
理论上最外层 εr→1,也就是纯空气,这层材料在机械上根本不存在。实际设计必须做取舍:
- 最外层用低介电泡沫,εr 在 1.05~1.1 之间,接受一点失配;
- 最外层打满孔,让等效 εr 尽量接近 1,但结构强度会下降;
- 用截断方案,比如只做半球(半龙伯透镜),平面那侧贴金属地板,牺牲一点扫描范围换加工便利。
还有一种思路是把整个透镜做成分块拼接的结构,每块单独加工再组装。拼缝处的介电常数不连续会引入散射,必须在仿真里建模评估,不能想当然地认为“拼紧就没问题”。
最后分享一个我觉得挺有用的习惯:每次改完模型参数,先把上一次的场图存下来,改完再叠在一起对比。龙伯透镜这种梯度器件,单看一张场图很难判断好坏,但两张叠起来,焦点的偏移、焦斑的胖瘦、旁瓣的抬升,一眼就看出来了。我最早做这类项目时吃过亏,改了一堆参数,最后发现性能反而下降了,却已经找不到是哪一步开始变差的。留档对比这个笨办法,比什么高级后处理都管用。