龙伯透镜天线这个题目,我最早是在做宽角扫描阵列替代方案预研时啃下来的。当时的需求很直接:希望一个球形介质体,不做任何机械转动,靠球面对称性把馈源放在球面上就能实现 360 度波束覆盖。真正动手之后才发现,难点根本不在几何——画一个球谁都会,难点在空间变化介电材料:介电常数从球心的约 2.0 连续降到球面处的 1.0,这种梯度分布没法直接“填”进 CST 里,必须先离散成若干层、再逐层赋材料、再验证离散误差有没有吃掉方向图。这个案例适合三类人参考:一是刚接触 CST 电磁仿真、想找一个有明确解析解可对照的练手项目的人;二是做天线罩、毫米波透镜、波束赋形相关工作的从业者;三是想把“理论公式—几何建模—材料赋值—结果验证”这条链路走通的学生。下面我按自己当时踩坑的顺序,把整套流程拆开讲。
1. 龙伯透镜的核心原理与建模思路拆解
1.1 折射率分布公式到底在约束什么
龙伯透镜的经典结论是:一个半径为 R 的球,内部折射率满足
n(r) = sqrt(2 - (r/R)^2) r ∈ [0, R]那么一束平行光入射后,会精确汇聚到球面上与入射方向相对的那个点;反过来,把馈源放在球面上任意一点,出射就是一束平行光,方向由“球心—馈源”连线决定。这就是它天然支持 360 度波束扫描的物理根源。
为什么是这个形式?一句话概括:它要求所有从入射波前到聚焦点的光程完全相等。你可以把球切成一圈圈同心薄壳,任意一条平行光线穿过这些壳时,穿越的路径长度不同,靠 n(r) 随半径递减来补偿。球心处路径最长、折射率最高,边缘处路径最短、折射率最低,两边一乘正好抵消。这个思路和渐变折射率光纤、GRIN 透镜是同源的,区别只在于龙伯透镜要的是“球对称”而不是“柱对称”。
对仿真来说,这个公式给出两个硬约束。第一,介电常数 εr = n² = 2 − (r/R)²,球心 2.0、球面 1.0,范围不宽,意味着材料相对好找,但梯度必须平滑。第二,n 只与 r 有关,与 θ、φ 无关,这是后面能只画同心球壳、能用轴对称简化网格的前提。很多人建模时把馈源、支架一起加进去,破坏了球对称却还指望网格能简化,结果算得又慢又不准,这是第一个容易栽的坑。
1.2 “空间变化介质”难在哪三个地方
我把难点归成三类,分开处理会清楚很多。
第一类是离散化误差。连续函数在仿真里必须变成有限个常介电常数的壳层,层数少了,每层内部等效折射率偏离理论值,波前就拼不圆。层数多了,网格量、材料数、建模脚本的复杂度全部上涨,而且薄壳容易被网格“吃掉”——壳厚小于两个网格步长时,求解器会把它等效抹平,你设的材料根本不起作用。
第二类是等效媒质的实现误差。理论上你想要 εr = 1.37 这种任意值,现实中没有这种均质材料。常见做法是用低损耗基材打孔、发泡、或者用不同填充率的 3D 打印线材去“凑”等效介电常数。等效媒质模型(Maxwell-Garnett、Bruggeman)在低填充率下还算准,填充率一高就开始飘,而且各向同性假设在打印层纹明显时会失效。
第三类是电尺寸与网格的矛盾。透镜的增益由口径决定,口径越大增益越高,但球体内部的介质波长比自由空间短,网格步长要按 λ0/(n·每波长网格数) 来算,球体直径又是 2R,算下来网格量按 R³ 增长。一个 R = 100 mm、工作在 10 GHz 的透镜,网格轻松上千万,普通工作站内存直接告急。
提示:如果你的目标是验证算法和方向图趋势,先用小口径(R 在 1.5λ 到 3λ 之间)跑通全流程,再去放大。直接上大口径,一次求解几小时,出问题你都不知道错在哪一步。
1.3 仿真路线怎么选才不返工
CST 里能算这类问题的求解器不止一个,我做过一轮对比,结论如下表。
| 求解器类型 | 适用场景 | 优势 | 代价 |
|---|---|---|---|
| 时域求解器(有限积分) | 宽频、宽带方向图、瞬态 | 一次激励拿到全频段结果 | 介质内网格细,内存吃紧 |
| 频域求解器(有限元) | 窄带、高精度、含精细馈源 | 自适应网格成熟,薄结构处理好 | 每个频点单独求解,扫频慢 |
| 积分方程类 | 辐射体在开放空间、金属为主 | 无需背景网格 | 纯介质体不合适 |
| 射线追踪 / 混合 | 大口径电大尺寸、只关心主瓣 | 速度快,能算到几十波长 | 忽略衍射,旁瓣不可信 |
我的实际选择是:先用时域求解器做原理验证,因为龙伯透镜本质是宽带器件,一次时域激励能同时看到 8 到 12 GHz 的聚焦行为,效率最高;等方向图趋势和解析预期对上了,再用频域求解器在中心频点做一次高精度复核,确认增益和旁瓣不是网格误差造成的假象。射线追踪我只在口径超过 15λ 之后才用,而且只用于看主瓣指向和大致增益,旁瓣电平一概不信。
这个顺序很重要。我见过有人一上来就用射线追踪跑了个大透镜,方向图很漂亮,结果换成全波一算,主瓣宽度差了一倍——因为射线追踪压根没算球面边缘的绕射和壳层间的阻抗失配反射。
2. 介电常数梯度分布的数字化建模实操
2.1 分层数量到底取多少:把误差算出来再决定
分层是这件事的核心操作,层数不能拍脑袋。我的做法是先算相位误差,再定层数。
设球半径 R,分成 N 层,每层厚度 Δr = R/N,第 i 层取中值半径 r_mid 计算介电常数。理论折射率 n(r) = sqrt(2 − (r/R)²),它对 r 的导数在球面附近最大:
|dn/dr| = r / (R^2 * n(r)) → 在 r = R 处取到 1/R层内折射率的最大偏差约 Δn ≈ Δr/(2R) = 1/(2N)。波穿过这一层的相位误差:
Δφ = k0 * Δn * Δr = (2π/λ0) * (1/(2N)) * (R/N) = πR / (λ0 * N^2)以 R = 50 mm、f0 = 10 GHz(λ0 = 30 mm)为例,代入得 Δφ ≈ 5.24/N² 弧度。
| 层数 N | 最大相位误差(弧度) | 折算角度 | 实测方向图表现 |
|---|---|---|---|
| 5 | 0.209 | 约 12° | 主瓣明显变胖,副瓣抬高 2~3 dB |
| 10 | 0.052 | 约 3° | 与解析预期基本吻合 |
| 20 | 0.013 | 约 0.75° | 增益几乎不再提升,网格量翻倍 |
| 40 | 0.003 | 约 0.2° | 纯属浪费算力 |
结论很清晰:N 取 10 到 15 是性价比最高的区间,相位误差已经压到 3° 以内,再往上加密带来的增益提升会被网格误差淹没。我一般取 N = 12,同时保证最外层壳厚不小于 2 个网格步长,这一条比层数本身更容易出问题。
注意:不要用“层数越多越准”的直觉。壳层变薄之后,如果网格没跟上,求解器会把相邻两层等效混合,你精心设置的梯度反而被抹平成近似均匀介质,方向图会诡异地接近一个同尺寸的均质球。
2.2 材料赋值的三条落地路径
CST 里给每层赋不同介电常数,我试过三种方式,各有适用场合。
第一种是手动建材料再逐个赋给实体。十层以内可以接受,超过二十层就是纯体力活,而且极易错行。只推荐给临时试算。
第二种是参数化材料 + 材料库批量导入。把 εr 和损耗角正切写成参数表,通过材料库文件一次性导入,然后按命名规则批量赋给对应实体。适合层数固定、需要反复改参数的场景,比如做层数扫描。
第三种是 VBA 宏全自动生成。这是我现在的主力方案。宏里直接算 εr、直接建球壳、直接赋材料,改一个 N 或 R 就能重跑,复现性最好。下面是我常用的骨架代码,API 名称请按你手上的版本核对,不同版本的属性名略有差异。
Sub CreateLuneburgLens() Dim N As Integer, i As Integer Dim R As Double, dr As Double Dim rOut As Double, rIn As Double, rMid As Double Dim eps As Double, name As String R = 50 ' 球半径 mm N = 12 ' 分层数 dr = R / N For i = 1 To N rOut = i * dr rIn = (i - 1) * dr rMid = 0.5 * (rOut + rIn) eps = 2 - (rMid / R) ^ 2 ' 取层中值半径 ' 建外球 With Sphere .Reset .Name "LensOuter_" & i .OuterRadius CStr(rOut) .Segments 0 .Create End With ' 建内球并做布尔减,得到球壳 If i > 1 Then With Sphere .Reset .Name "LensInner_" & i .OuterRadius CStr(rIn) .Segments 0 .Create End With Solid.Subtract "LensOuter_" & i, "LensInner_" & i End If ' 建材料并赋给球壳 name = "LensMat_" & i With Material .Reset .Name name .FrqType "all" .Type "Normal" .SetMaterialProperty "Epsilon", 1, CStr(eps) .SetMaterialProperty "Mue", 1, "1.0" .SetMaterialProperty "TanD", 1, "0.002" .Create End With Solid.SetMaterial "LensOuter_" & i, name Next i End Sub这段代码有两个细节值得说。一是Segments 设为 0,让 CST 用解析球面而不是多面体近似,否则球面会被离散成小平面,层与层之间出现缝隙或重叠,布尔运算直接报错。二是损耗角正切我习惯先给一个 0.002 的小值,而不是理想的 0。理想无耗介质在时域求解器里容易让能量长时间不衰减,收敛判据一直达不到,白等时间;给一点损耗,能量衰减曲线会干脆很多,而且 0.002 这个量级和常见的低损耗打印材料是同一档。
2.3 等效媒质:从“想要的 εr”倒推“怎么做出来”
仿真是理想梯度,实物必须靠工艺实现。如果你的下一步是加工,建模阶段就要把工艺误差考虑进去。以多孔发泡为例,用 Maxwell-Garnett 混合公式(空气孔分布在基材中):
(εeff - εm) / (εeff + 2εm) = f * (1 - εm) / (1 + 2εm)其中 εm 是基材介电常数,f 是空气体积占比。假设基材 εm = 2.8,目标 εeff = 1.5,代入解得 f ≈ 0.67。也就是说超过六成的体积要是空气,机械强度基本没戏。这个计算给我的直接结论是:单靠一种基材打孔做不出全梯度范围,实际方案通常是分几段,内层用高填充率材料、外层用低介电发泡或蜂窝结构,仿真里也应当分几段给不同的损耗角正切,而不是全球统一 0.002。
这一步的仿真意义在于:把所有壳层的 TanD 按工艺分段设置后,跑出来的增益会比理想模型低 0.3 到 1 dB,同时主瓣会略微展宽。这个差值如果你不提前算,加工回来测出来对不上,就会误判成加工精度问题。
2.4 馈源位置与球面的配合
龙伯透镜的焦点严格落在球面上,但真实馈源有物理尺寸,喇叭口面不可能贴在球面上而不产生遮挡。我的处理是:把馈源口面放在略小于 R 的位置,然后用相位中心校正。具体做法是先按理想焦点位置建模,看方向图的最大增益指向;再把馈源沿径向内移 2 到 3 mm,对比增益变化。通常内移会让增益掉 0.2 dB 左右,但换取的是结构上可安装,这个取舍值得。
另一个容易忽略的点是馈源自身的辐射会照到球体背面,形成二次照射。仿真里必须把馈源金属结构一起建模,否则你算出来的旁瓣比实测干净得多,等到实测发现旁瓣压不下去,再回头查就晚了。
3. 全波仿真设置的关键参数与验证
3.1 求解器、边界与对称性
时域求解器加开放边界是标配。边界距离我一般设成距最外层结构 λ0/4 以上,低频段可以放宽到 λ0/3,但不要再近,否则吸收边界会把近场截断,导致方向图后瓣偏高。
对称面这里有个陷阱。透镜本身球对称,但它和馈源组合之后,整体只剩绕“球心—馈源”连线的旋转对称性,不是三个平面对称。能不能用磁对称面或电对称面,取决于馈源的极化方式和结构。如果馈源是标准矩形波导口,某一平面确实可能构成对称面,可以用它把计算量砍一半;但一旦你在球面上加了支撑结构或者不对称的过渡段,这个对称性就破了,强行使用对称面会算出完全错误的交叉极化。
我的习惯是:第一次求解不加任何对称面,先拿到可信的全空间结果做基准;确认结构确实对称、且交叉极化不是关注重点之后,再加对称面加速。
3.2 网格:介质内部才是真正的瓶颈
自由空间里每波长 10 到 15 条网格线是常规设置,但透镜内部介质波长是 λ0/n,n 最大到 1.414,意味着球心附近的网格步长要按 λ0/1.414 再除以每波长网格数来算。以 10 GHz、R = 50 mm 为例,球心处介质波长约 21 mm,按每波长 12 条线算,步长约 1.8 mm;而最外层壳厚只有 4 mm 左右,勉强够 2 个网格。这就是为什么我把 N 定在 12 而不是 20——层数再高,壳厚就小于网格步长,赋的材料等于白设。
曲面处理上,曲率角度我设 30° 到 40°,球面在这个设置下已经被切成足够细的三角面。自适应网格加密我一般开 1 到 2 轮,判据看 S 参数和远场增益同时收敛,只看其中一个容易被误导。
| 参数 | 我的常用值 | 说明 |
|---|---|---|
| 每波长网格线 | 12~15 | 介质内自动按 1/n 加密 |
| 曲率角度 | 30°~40° | 再小收益有限,网格量涨得快 |
| 最小网格步长 | 不低于最薄壳厚的 1/2 | 硬约束,优先于其他设置 |
| 自适应轮次 | 1~2 | 判据同时看 S 参数与增益 |
| 边界距离 | ≥ λ0/4 | 低频段取 λ0/3 |
实操心得:先把“最小网格步长”这个约束单独跑一遍,看最薄壳层有没有被压到 2 个网格以下。CST 的网格视图能直接看剖面,我一般切一个过球心的平面,数一下每层壳里有几条网格线,少于两条就回去减层数或者加网格密度,别等算完再查。
3.3 激励方式:发射模式和接收模式要分开验证
我建议两种模式都跑一遍,互相印证。
发射模式:在球面焦点处放喇叭或波导端口,看远场方向图。这是最贴近实际使用的配置,能直接读出增益、波束宽度、副瓣电平。缺点是馈源本身参与辐射,它的方向图会“污染”透镜的贡献,尤其在后瓣方向。
接收模式:用平面波从远处照射透镜,在球面对称点放一个近场探针或小端口,看聚焦斑的电场强度分布。这个配置的好处是没有馈源遮挡,能干净地验证梯度分布是否正确——如果聚焦斑明显偏离球面、或者斑的尺寸远大于衍射极限,那一定是介电常数分布或者分层出了问题,与馈源无关。
我的验证顺序是:先跑接收模式确认聚焦,再跑发射模式看方向图。聚焦斑的横向尺寸参考值大约在 0.5λ 到 0.7λ 量级(受口径和离散化共同影响),明显超过这个范围就要回头查模型。
3.4 后处理看哪几个数
方向图上我固定看四个量:最大增益、−3 dB 波束宽度、第一副瓣电平、交叉极化比。
增益可以先用口径公式估个上限做对照:
G ≈ 4πA/λ0² · η, A = πR²R = 50 mm、λ0 = 30 mm 时,A ≈ 7854 mm²,4πA/λ0² ≈ 109.7,折合 20.4 dBi。这是口径效率 100% 的理论上限,实际考虑球面边缘的溢漏、壳层反射、介质损耗,能做到 17 到 18.5 dBi 就算正常。如果你算出来 23 dBi,不用高兴,先怀疑网格或者端口设置有问题。
−3 dB 波束宽度和口径成反比,粗略按 70λ0/D 估算(D = 2R = 100 mm 时约 21°),仿真值偏差超过 30% 就说明梯度分布没生效。
交叉极化是这类透镜最容易翻车的地方。理想球对称结构交叉极化应该很低,一旦你在建模时把球壳切成多面体近似、或者布尔运算留下微小台阶,交叉极化就会莫名其妙抬高十几 dB。看到这个现象,别去调材料,去查几何精度。
3.5 收敛性怎么判断才算数
我判断收敛看三条曲线同时平稳:时域能量衰减到 −30 dB 以下、端口 S 参数相邻两轮自适应变化小于 1%、远场增益变化小于 0.1 dB。三条里有任何一条还在抖,就不要拿结果下结论。
有个特殊情况值得提醒:理想无耗介质加开放边界,能量衰减会非常慢甚至不衰减,求解时间会拖到离谱。前面说的给 0.002 的损耗角正切,主要就是为这个。另外可以把时域求解的激励信号改成高斯脉冲,带宽覆盖你关心的频段即可,不必用默认的宽谱信号,这样能量集中,收敛更快。
4. 常见问题与排查技巧实录
4.1 问题速查表
下面这些是我和同事在实际项目里真碰到过的,按“现象—原因—处理”整理。
| 现象 | 最可能的原因 | 处理方式 |
|---|---|---|
| 方向图和同尺寸均质球几乎一样 | 壳厚小于网格步长,材料被抹平 | 减层数或加密网格,剖面数网格线 |
| 增益明显低于口径估算值 | 馈源溢漏大、焦点位置偏内 | 微调馈源径向位置,检查喇叭口径 |
| 聚焦斑不在球面上 | 层介电常数取错(用了外径或内径而非中值) | 核对 εr 计算用的半径 |
| 交叉极化异常高 | 球面被离散成多面体、布尔留下台阶 | 球面用解析曲面,Segments 设 0 |
| 求解时间远超预期 | 介质无损耗导致能量不衰减 | 加 0.002 量级损耗角正切 |
| 低频端结果明显变差 | 边界距离不足、网格按高频设置 | 边界放到 λ0/3,网格按最低频核算 |
| 布尔运算报错 | 相邻球壳共面重合 | 相邻壳之间留 0.01 mm 间隙或直接整体建再切 |
| 方向图后瓣异常干净 | 馈源金属结构未建模 | 把馈源、支架一起加进去 |
4.2 三个印象最深的坑
第一个坑是“层中值半径”的取法。我最初偷懒,直接用每层的外径算 εr,结果所有层都系统性地偏小,波前累积误差导致主瓣偏了将近 5°。改成中值半径之后偏差消失。这件事说明:离散化不只是层数问题,取样点同样重要。理论上用每层的“等效光程中值”更准,但中值半径已经够用,误差在 3° 相位以内。
第二个坑是球壳之间的共面。用布尔减生成球壳时,第 i 层的外球面和第 i+1 层的内球面半径完全相同,CST 布尔运算会报“面重合”的警告,有时能过有时直接失败。我后来的做法是让内球半径比理论值小 0.01 mm,人为留一条缝,求解器不会在意这条缝,但布尔运算稳定得多。这个 0.01 mm 是我试出来的经验值,太小还是会报错,太大又会让层间出现真实的空气隙影响结果。
第三个坑是平面波照射时的端口设置。接收模式验证聚焦时,我用平面波入射加近场探针,一开始探针放在球面外侧 1 mm 处,结果读到的场强分布很乱。原因是探针离介质界面太近,近场 evanescent 成分占主导,读数不代表真实的聚焦场。把探针移到球面外 λ0/10 左右,曲线立刻干净了。这条经验后来在别的近场验证场景也反复用到:探针不要贴着介质表面放。
4.3 一个提速的小技巧
如果你只关心水平面方向图、不关心全空间,可以把远场监视器设成只记录某个切面,同时把球体沿垂直方向截掉一部分——前提是你确认这个截断对目标切面的影响可以忽略。我用这个办法把一次求解时间从 4 小时压到 1 小时出头,代价是垂直面的结果不可用。做参数扫描时这个技巧非常值,但最终报告里的数据一定要用完整模型复核一遍,别拿简化模型的结果交差。
5. 参数扫描与工程化评估
5.1 层数、损耗、口径三维扫描怎么做才不浪费算力
参数扫描是这类项目里最耗时间的环节,我一般按“先粗后细、先单后多”的顺序。
第一轮固定口径和损耗,只扫层数 N 取 6、8、10、12、16,看增益和副瓣的变化曲线。通常 N 到 10 之后曲线就平了,这个拐点就是你的层数下限。
第二轮固定层数,扫损耗角正切 0.001、0.002、0.005、0.01,看增益下降和波束展宽。这一步直接决定你对材料工艺的要求——如果 0.005 就开始明显掉增益,那材料选型上就不能省钱。
第三轮才扫口径,R 取 40、50、60、75 mm,看增益是否按预期增长。口径增大时网格量按三次方涨,所以我一般只扫三到四个点,够画出趋势就行,不用密扫。
提示:扫描任务尽量用批处理排队跑,别在图形界面里一个个点。每个任务结束后把远场结果导出成固定格式的文件,后面用脚本统一画曲线,比在界面里截图对比高效得多。
5.2 带宽到底受什么限制
龙伯透镜常被说成“宽带”,但这个说法有前提。几何色散很小,因为聚焦靠的是光程补偿,频率变化时折射率分布不变,所以主瓣指向基本不随频率漂移。真正限制带宽的是三样东西:馈源本身的带宽、材料介电常数随频率的漂移、以及球面处的阻抗匹配。
我实测下来,8 到 12 GHz 范围内,如果用理想无色散材料,增益波动能控制在 1 dB 以内;一旦把材料的色散特性(εr 随频率下降几个百分点)加进去,高频端增益会掉 0.5 到 1 dB,同时副瓣抬高。这也解释了为什么文献里的带宽指标都挺好看——大多用的是理想材料模型。你在做工程评估时,务必把材料实测的色散曲线代进去重跑一遍。
5.3 从仿真值到实物值要打多少折扣
我的经验折扣是这样:仿真给出的理想增益,先减 0.3 到 0.5 dB 的材料损耗,再减 0.2 到 0.4 dB 的加工误差(分层厚度偏差、介电常数批次波动),再减 0.2 dB 左右的装配误差(馈源位置偏差)。综合下来,实测比理想仿真低 0.7 到 1.1 dB 是正常范围。
如果实测比仿真低 2 dB 以上,别急着怀疑材料,先查两件事:一是馈源的实际相位中心是不是在设计的焦点上,二是球壳之间有没有因为装配产生空气隙。空气隙这东西仿真里很难建准,但它的影响非常实在——一层 0.2 mm 的气隙在 10 GHz 就能带来明显的反射。
实操心得:如果条件允许,在仿真里故意给每层之间加 0.1 到 0.2 mm 的低介电层(εr 取 1.05 左右模拟压合不实),跑一遍看增益掉多少。这个“最坏情况”结果比理想结果更有参考价值,拿去和实测对比,通常能对上八八九九。
5.4 这套流程还能往哪延伸
把梯度分布这套建模方法吃透之后,能直接迁移的场景不少。柱对称的龙伯透镜(二维版本)建模更省算力,适合快速验证馈源阵列;半球形透镜可以减轻重量,但球面截断会引入额外的边缘绕射,需要在仿真里重点看后瓣;还有把均匀球换成多层不同材料的“准龙伯”设计,牺牲一点扫描精度换取可加工性,这条路线在工程上其实更常见。
最值得推荐的一条延伸是把“离散化误差—方向图偏差”做成一张标定表,积累不同口径、不同频段下的层数选取经验。这张表一旦建立起来,后面再做同类透镜,层数基本不用重新推,直接查表加一轮验证就能定方案。
我个人在实际操作中的体会是:龙伯透镜这个案例最大的价值不在于最后那条方向图曲线,而在于它逼着你把“连续函数怎么变成离散模型、离散误差怎么量化、量化误差怎么和工艺误差对齐”这条完整链路走一遍。这条链路一旦打通,换成别的梯度结构——阻抗渐变天线罩、多层匹配层、渐变折射率平板——你会发现思路几乎不用改,只是公式和几何换一下而已。