闪耀耦入光栅 · RSoft CAD + DiffractMOD
Keysight RSoft 2026 · rstools.RSoftCircuit 写 .ind · dfmod RCWA · 2026-09-12 23:02:52
周期 Λ365 nm
齿高 H170 nm
压印胶 n1.80
高折玻璃 n1.80
Ag 盖帽200 nm
光栅 / 光机3.8 / 3.2 mm
填充 F84.21%
闪耀角(对法线)65.03°
0. 对照用户图纸

这一步在做什么
把图纸上的颜色、位置翻译成仿真约定,后面每一步都按这个方向,不再把光机画到光栅上方。
| 图纸元素 | 颜色 | 仿真里对应什么 |
|---|---|---|
| 黑色块 | 光机 | 不进 RCWA;只提供 3.2 mm 出射宽度和向上的正入射 |
| 蓝色条 | 高折玻璃 | 入射介质 n=1.8;RSoft 背景指数 + 缓冲层 |
| 黄色直角齿 | 压印胶 | 材料 ImprintGlue,n=1.8,底边贴玻璃 |
| 灰色块 | Ag | 齿槽填充 + 200 nm 盖帽;材料库色散 |
光路:光机 → 玻璃(已在介质内)→ 胶水/银界面 → 反射衍射级回到玻璃。Ag 挡住透射,所以「耦入」看的是反射级 DE,不是透射级。
1. 系统位置(已按新图更新)
尺寸怎么落到图上
- 比例 1 mm = 80 px,所以光栅宽 3.8×80 = 304 px,光机 3.2×80 = 256 px。
- 光机对中:左右各 (3.8−3.2)/2 = 0.30 mm 光栅未被照明。
- 玻璃条比光栅长,对应图纸里蓝色基板向右伸出。
- 黄箭头从光机顶穿到玻璃/胶水界面,方向是 RSoft 的 +z。
RCWA 不求解 3.8 mm 有限孔径,有限尺寸只通过填充因子进入「有效耦入」。 光栅约 10411 个周期,光机覆盖约 8767 个周期,周期数足够大,边缘衍射可忽略。
2. 光机与光栅孔径
填充因子怎么用
- F = 3.2 / 3.8 = 0.842105(84.21%)。
- DiffractMOD 给出的 DE 是「照到光栅上的功率」归一。
- 光机比光栅窄,有 (1−F)=15.79% 的出射光根本打不到齿上。
- 有效耦入 ≈ DER(m) × F。这里没有再乘 NA、波导损耗、模式重叠。
3. 单胞几何(与 CAD / 求解器一致)
为什么是直角闪耀、为什么要楼梯
- H tanα = 170 × tan(65.03°) = 365.00 nm ≈ Λ=365 nm → 斜面正好跨满一个周期,不被截断。
- 基板倾角 atan(170/365)=24.97°;对法线闪耀角 90°−该值 = 65.03°。
- RCWA 沿 z 分层。函数
blaze_layers()把斜面切成 24 层矩形,层厚 7.083 nm。 - z<0 的玻璃缓冲 80 nm 只表示「光已经在玻璃里」;真实 0.4 mm 基板厚度不进单胞(均匀层不改变衍射效率)。
- 下表与
blazed_incoupler.ind里 Glue_xx / AgFill_xx 线段同一套数字。
| 层 i | z (nm) | 胶水宽 (nm) | Ag 宽 (nm) | 胶水中心 x+Λ/2 | Ag 中心 x+Λ/2 |
|---|---|---|---|---|---|
| 0 | 0.00–7.08 | 357.40 | 7.60 | 178.70 | 361.20 |
| 1 | 7.08–14.17 | 342.19 | 22.81 | 171.09 | 353.59 |
| 2 | 14.17–21.25 | 326.98 | 38.02 | 163.49 | 345.99 |
| … 中间层同规则,银宽 = Λ·z/H … | |||||
| 12 | 85.00–92.08 | 174.90 | 190.10 | 87.45 | 269.95 |
| 21 | 148.75–155.83 | 38.02 | 326.98 | 19.01 | 201.51 |
| 22 | 155.83–162.92 | 22.81 | 342.19 | 11.41 | 193.91 |
| 23 | 162.92–170.00 | 7.60 | 357.40 | 3.80 | 186.30 |
x 原点在周期中心。胶水左对齐、银右对齐,两宽之和恒为 365 nm。
4. 调用 RSoft CAD API 写 .ind
代码在做什么(函数 build_cad)
from rstools import RSoftCircuit→c = RSoftCircuit(),这是官方 CAD 对象。c.set_symbol(名字, 值)写入 .ind 顶部的符号表(周期、域、谐波、输出开关)。c.add_material(matname="Ag")从 RSoft 库拉银的色散;胶水/玻璃用常数 n。c.add_segment(position, offset, dimensions)画矩形层:玻璃缓冲、24 层胶+银、Ag 盖帽。- 坐标必须是纯数字。解析器把
begin.x里的+当成「相对定位」,所以不用"-Period/2+w/2"这种字符串。 c.write(ind_path)得到blazed_incoupler.ind,可用 winrsoft 打开核对。
关键符号
| 符号 | 值 | 为什么这样设 |
|---|---|---|
| background_index | NGlass=1.8 | 入射已在玻璃中 |
| dimension / eim / vector | 2 / 0 / 1 | 2D 矢量,不用等效折射率 |
| polarization | 0 或命令行覆盖 | 2D TE/TM 唯一有效开关 |
| launch_angle | 0 | 光机正对,无俯仰 |
| boundary_min/max | ±Λ/2 | 一个周期 |
| rcwa_harmonics_x | 21 | 金属锐角需要足够谐波 |
| rcwa_ref/tra_order_x | −4:4 | 输出这些级 |
| sim_tool | ST_DIFFRACTMOD | 指定 RCWA 而不是 FDTD |
from rstools import RSoftCircuit
c = RSoftCircuit()
c.set_symbol('sim_tool', 'ST_DIFFRACTMOD')
c.set_symbol('background_index', 'NGlass')
c.add_material(matname='Ag')
c.add_segment(position=(x, 0, z0), offset=(0, 0, dz), dimensions=(width, 0))
c.write(r'D:\Mac\Simulation\rsoft_blazed_incoupler\blazed_incoupler.ind')
5. DiffractMOD 命令行
函数 run_dfmod:每个波长 × 每种偏振调用一次
D:\Program\Keysight\PhotonicSolutions\2026\RSoft\bin\dfmod.exe -hide D:\Mac\Simulation\rsoft_blazed_incoupler\blazed_incoupler.ind prefix=wl450_TE wait=0 free_space_wavelength=0.45 polarization=0 rcwa_launch_pol=0 eim=0 vector=1 rcwa_variation_min=0.45 rcwa_variation_max=0.45
| 参数 | 含义 |
|---|---|
dfmod.exe | DiffractMOD RCWA 求解器 |
-hide | 不打开 CAD/监视窗口 |
file.ind | 上一步 rstools 写出的单胞 |
prefix=wlλ_POL | 输出文件前缀,避免互相覆盖 |
wait=0 | 算完即退出(手册 10.D.1) |
free_space_wavelength | 真空波长,单位 μm |
polarization=0|1 | 2D:0=TE(Ey∥沟槽),1=TM |
rcwa_launch_pol | 3D 偏振角;2D 下不改变结果,仅占位 |
eim=0 vector=1 | 真矢量 2D,不用等效折射率 |
rcwa_variation_min=max | 扫描上下限相同 → 单波长点 |
本次实际运行
| prefix | λ | 偏振 | 耗时 | 返回码 | DE(m=−1) | ΣR | A |
|---|---|---|---|---|---|---|---|
| wl450_TE | 450 | TE | 1.59 s | 0 | 69.59% | 89.12% | 10.88% |
| wl450_TM | 450 | TM | 1.17 s | 0 | 44.87% | 48.16% | 51.84% |
| wl520_TE | 520 | TE | 1.33 s | 0 | 58.73% | 91.74% | 8.26% |
| wl520_TM | 520 | TM | 1.28 s | 0 | 35.92% | 45.69% | 54.31% |
| wl526_TE | 526 | TE | 1.40 s | 0 | 57.24% | 91.87% | 8.13% |
| wl526_TM | 526 | TM | 1.30 s | 0 | 39.61% | 49.07% | 50.93% |
| wl532_TE | 532 | TE | 1.19 s | 0 | 55.68% | 92.00% | 8.00% |
| wl532_TM | 532 | TM | 1.21 s | 0 | 43.00% | 51.06% | 48.94% |
| wl620_TE | 620 | TE | 1.27 s | 0 | 27.41% | 93.04% | 6.96% |
| wl620_TM | 620 | TM | 1.22 s | 0 | 37.15% | 38.08% | 61.92% |
| wl638_TE | 638 | TE | 1.98 s | 0 | 19.25% | 93.01% | 6.99% |
| wl638_TM | 638 | TM | 1.35 s | 0 | 33.42% | 37.56% | 62.44% |
返回码 0 表示 dfmod 正常结束。能量关系:ΣR + T + A ≈ 1(金属损耗进 A)。
2D 必须改 polarization。只改 rcwa_launch_pol 时 TE 和 TM 会得到同一张表。
输出:prefix.dat(效率)、.pcs(监视)、.dataindex。解析走 parse_de_dat:读 # wavelength -4R … Absorption 那一行。
6. 级次是否进入波导 TIR
手算 λ=526 nm、正入射、m=−1
- 光栅方程:n sinθ = m λ/Λ = −526/365 = -1.441096
- sinθ = (m λ/Λ)/n = -1.441096 / 1.8 = -0.800609
- θ = arcsin(-0.800609) = -53.19°(符号表示 −x)
- 临界角 θ_c = arcsin(1/1.8) = 33.75°
- |θ| = 53.19° > θ_c → 可在玻璃内 TIR,这才叫耦入导波
- |m|≥2:|m|λ/Λ = 1052/365>1.8 → 玻璃中截止,DE 列应为 0
| λ (nm) | m=−1 角 | TIR? | m=0 | m=+1 | 截止 |
|---|---|---|---|---|---|
| 450 | -43.23° | 是 | 0.00° | 43.23° | — |
| 520 | -52.32° | 是 | 0.00° | 52.32° | — |
| 526 | -53.19° | 是 | 0.00° | 53.19° | — |
| 532 | -54.07° | 是 | 0.00° | 54.07° | — |
| 620 | -70.68° | 是 | 0.00° | 70.68° | — |
| 638 | -76.19° | 是 | 0.00° | 76.19° | — |
设计级是反射 m=−1:斜面把金属镜反射指到 −x。m=+1 对称角也能 TIR,但是非闪耀方向,效率应明显更低或至少不是主瓣。
7. 526 nm 级次效率(设计点)
怎么读这两张柱状图
- 柱高 = 该级反射功率 / 入射功率。绿柱是设计级 m=−1。
- TE:电场沿沟槽(Ey)。金属损耗较小,m=−1 通常最高。
- TM:磁场沿沟槽,电场在入射面内,银界面可激发等离子体,吸收 A 会到 ~50%。
- 图注 ΣR、T、A:应满足 ΣR+T+A≈1。T≈0 因为盖帽是光学厚银。
- |m|≥2 的柱应为 0,与步骤 6 的截止判断一致。
8. 全表:各波长 / 偏振 / 级次
每一行是一次 Floquet 通道。列含义:
- 衍射角:玻璃内的 θ_m,由光栅方程算,不是 DiffractMOD 拟合角。
- 状态 evan. = 玻璃中截止;TIR = 可导波;prop. = 能传播但会漏进空气。
- 反射 DE:dfmod 的 mR 列。
- 透射 DE:mT;厚银时应接近空。
- 有效耦入:反射 DE × 3.2/3.8。绿底行是设计级 m=−1 且满足 TIR。
| λ (nm) | 偏振 | m | 衍射角 | 状态 | 反射 DE | 透射 DE | 有效耦入 |
|---|---|---|---|---|---|---|---|
| 450 | TE | -4 | — | evan. | 0.00% | — | 0.00% |
| 450 | TE | -3 | — | evan. | 0.00% | — | 0.00% |
| 450 | TE | -2 | — | evan. | 0.00% | — | 0.00% |
| 450 | TE | -1 | -43.23° | TIR | 69.59% | — | 58.60% |
| 450 | TE | +0 | 0.00° | prop. | 12.13% | — | 10.22% |
| 450 | TE | +1 | 43.23° | TIR | 7.40% | — | 6.23% |
| 450 | TE | +2 | — | evan. | 0.00% | — | 0.00% |
| 450 | TE | +3 | — | evan. | 0.00% | — | 0.00% |
| 450 | TE | +4 | — | evan. | 0.00% | — | 0.00% |
| 450 | TM | -4 | — | evan. | 0.00% | — | 0.00% |
| 450 | TM | -3 | — | evan. | 0.00% | — | 0.00% |
| 450 | TM | -2 | — | evan. | 0.00% | — | 0.00% |
| 450 | TM | -1 | -43.23° | TIR | 44.87% | — | 37.79% |
| 450 | TM | +0 | 0.00° | prop. | 1.31% | — | 1.10% |
| 450 | TM | +1 | 43.23° | TIR | 1.98% | — | 1.67% |
| 450 | TM | +2 | — | evan. | 0.00% | — | 0.00% |
| 450 | TM | +3 | — | evan. | 0.00% | — | 0.00% |
| 450 | TM | +4 | — | evan. | 0.00% | — | 0.00% |
| 520 | TE | -4 | — | evan. | 0.00% | — | 0.00% |
| 520 | TE | -3 | — | evan. | 0.00% | — | 0.00% |
| 520 | TE | -2 | — | evan. | 0.00% | — | 0.00% |
| 520 | TE | -1 | -52.32° | TIR | 58.73% | — | 49.46% |
| 520 | TE | +0 | 0.00° | prop. | 15.97% | — | 13.45% |
| 520 | TE | +1 | 52.32° | TIR | 17.03% | — | 14.34% |
| 520 | TE | +2 | — | evan. | 0.00% | — | 0.00% |
| 520 | TE | +3 | — | evan. | 0.00% | — | 0.00% |
| 520 | TE | +4 | — | evan. | 0.00% | — | 0.00% |
| 520 | TM | -4 | — | evan. | 0.00% | — | 0.00% |
| 520 | TM | -3 | — | evan. | 0.00% | — | 0.00% |
| 520 | TM | -2 | — | evan. | 0.00% | — | 0.00% |
| 520 | TM | -1 | -52.32° | TIR | 35.92% | — | 30.25% |
| 520 | TM | +0 | 0.00° | prop. | 4.97% | — | 4.19% |
| 520 | TM | +1 | 52.32° | TIR | 4.80% | — | 4.04% |
| 520 | TM | +2 | — | evan. | 0.00% | — | 0.00% |
| 520 | TM | +3 | — | evan. | 0.00% | — | 0.00% |
| 520 | TM | +4 | — | evan. | 0.00% | — | 0.00% |
| 526 | TE | -4 | — | evan. | 0.00% | — | 0.00% |
| 526 | TE | -3 | — | evan. | 0.00% | — | 0.00% |
| 526 | TE | -2 | — | evan. | 0.00% | — | 0.00% |
| 526 | TE | -1 | -53.19° | TIR | 57.24% | — | 48.20% |
| 526 | TE | +0 | 0.00° | prop. | 17.02% | — | 14.33% |
| 526 | TE | +1 | 53.19° | TIR | 17.62% | — | 14.84% |
| 526 | TE | +2 | — | evan. | 0.00% | — | 0.00% |
| 526 | TE | +3 | — | evan. | 0.00% | — | 0.00% |
| 526 | TE | +4 | — | evan. | 0.00% | — | 0.00% |
| 526 | TM | -4 | — | evan. | 0.00% | — | 0.00% |
| 526 | TM | -3 | — | evan. | 0.00% | — | 0.00% |
| 526 | TM | -2 | — | evan. | 0.00% | — | 0.00% |
| 526 | TM | -1 | -53.19° | TIR | 39.61% | — | 33.36% |
| 526 | TM | +0 | 0.00° | prop. | 4.91% | — | 4.13% |
| 526 | TM | +1 | 53.19° | TIR | 4.55% | — | 3.83% |
| 526 | TM | +2 | — | evan. | 0.00% | — | 0.00% |
| 526 | TM | +3 | — | evan. | 0.00% | — | 0.00% |
| 526 | TM | +4 | — | evan. | 0.00% | — | 0.00% |
| 532 | TE | -4 | — | evan. | 0.00% | — | 0.00% |
| 532 | TE | -3 | — | evan. | 0.00% | — | 0.00% |
| 532 | TE | -2 | — | evan. | 0.00% | — | 0.00% |
| 532 | TE | -1 | -54.07° | TIR | 55.68% | — | 46.89% |
| 532 | TE | +0 | 0.00° | prop. | 18.18% | — | 15.31% |
| 532 | TE | +1 | 54.07° | TIR | 18.14% | — | 15.28% |
| 532 | TE | +2 | — | evan. | 0.00% | — | 0.00% |
| 532 | TE | +3 | — | evan. | 0.00% | — | 0.00% |
| 532 | TE | +4 | — | evan. | 0.00% | — | 0.00% |
| 532 | TM | -4 | — | evan. | 0.00% | — | 0.00% |
| 532 | TM | -3 | — | evan. | 0.00% | — | 0.00% |
| 532 | TM | -2 | — | evan. | 0.00% | — | 0.00% |
| 532 | TM | -1 | -54.07° | TIR | 43.00% | — | 36.21% |
| 532 | TM | +0 | 0.00° | prop. | 4.30% | — | 3.62% |
| 532 | TM | +1 | 54.07° | TIR | 3.77% | — | 3.17% |
| 532 | TM | +2 | — | evan. | 0.00% | — | 0.00% |
| 532 | TM | +3 | — | evan. | 0.00% | — | 0.00% |
| 532 | TM | +4 | — | evan. | 0.00% | — | 0.00% |
| 620 | TE | -4 | — | evan. | 0.00% | — | 0.00% |
| 620 | TE | -3 | — | evan. | 0.00% | — | 0.00% |
| 620 | TE | -2 | — | evan. | 0.00% | — | 0.00% |
| 620 | TE | -1 | -70.68° | TIR | 27.41% | — | 23.08% |
| 620 | TE | +0 | 0.00° | prop. | 48.41% | — | 40.76% |
| 620 | TE | +1 | 70.68° | TIR | 17.23% | — | 14.51% |
| 620 | TE | +2 | — | evan. | 0.00% | — | 0.00% |
| 620 | TE | +3 | — | evan. | 0.00% | — | 0.00% |
| 620 | TE | +4 | — | evan. | 0.00% | — | 0.00% |
| 620 | TM | -4 | — | evan. | 0.00% | — | 0.00% |
| 620 | TM | -3 | — | evan. | 0.00% | — | 0.00% |
| 620 | TM | -2 | — | evan. | 0.00% | — | 0.00% |
| 620 | TM | -1 | -70.68° | TIR | 37.15% | — | 31.29% |
| 620 | TM | +0 | 0.00° | prop. | 0.80% | — | 0.68% |
| 620 | TM | +1 | 70.68° | TIR | 0.12% | — | 0.10% |
| 620 | TM | +2 | — | evan. | 0.00% | — | 0.00% |
| 620 | TM | +3 | — | evan. | 0.00% | — | 0.00% |
| 620 | TM | +4 | — | evan. | 0.00% | — | 0.00% |
| 638 | TE | -4 | — | evan. | 0.00% | — | 0.00% |
| 638 | TE | -3 | — | evan. | 0.00% | — | 0.00% |
| 638 | TE | -2 | — | evan. | 0.00% | — | 0.00% |
| 638 | TE | -1 | -76.19° | TIR | 19.25% | — | 16.21% |
| 638 | TE | +0 | 0.00° | prop. | 59.87% | — | 50.42% |
| 638 | TE | +1 | 76.19° | TIR | 13.88% | — | 11.69% |
| 638 | TE | +2 | — | evan. | 0.00% | — | 0.00% |
| 638 | TE | +3 | — | evan. | 0.00% | — | 0.00% |
| 638 | TE | +4 | — | evan. | 0.00% | — | 0.00% |
| 638 | TM | -4 | — | evan. | 0.00% | — | 0.00% |
| 638 | TM | -3 | — | evan. | 0.00% | — | 0.00% |
| 638 | TM | -2 | — | evan. | 0.00% | — | 0.00% |
| 638 | TM | -1 | -76.19° | TIR | 33.42% | — | 28.14% |
| 638 | TM | +0 | 0.00° | prop. | 3.19% | — | 2.69% |
| 638 | TM | +1 | 76.19° | TIR | 0.96% | — | 0.81% |
| 638 | TM | +2 | — | evan. | 0.00% | — | 0.00% |
| 638 | TM | +3 | — | evan. | 0.00% | — | 0.00% |
| 638 | TM | +4 | — | evan. | 0.00% | — | 0.00% |
9. 设计级 m=−1 汇总
| λ (nm) | 角 | TIR | TE DE | TM DE | 平均 DE | 平均×F |
|---|---|---|---|---|---|---|
| 450 | -43.23° | TIR | 69.59% | 44.87% | 57.23% | 48.19% |
| 520 | -52.32° | TIR | 58.73% | 35.92% | 47.33% | 39.86% |
| 526 | -53.19° | TIR | 57.24% | 39.61% | 48.42% | 40.78% |
| 532 | -54.07° | TIR | 55.68% | 43.00% | 49.34% | 41.55% |
| 620 | -70.68° | TIR | 27.41% | 37.15% | 32.28% | 27.18% |
| 638 | -76.19° | TIR | 19.25% | 33.42% | 26.34% | 22.18% |
平均按 TE/TM 各 50%(未偏振光机)。若光机是线偏光,应只读对应列,不要用平均。
10. 保存位置
- CAD:
D:\Mac\Simulation\rsoft_blazed_incoupler\blazed_incoupler.ind - JSON:
D:\Mac\Simulation\rsoft_blazed_incoupler\results\simulation_report.json - 本 HTML:
D:\Mac\Simulation\rsoft_blazed_incoupler\blazed_incoupler_report.html - DiffractMOD
.dat / .pcs:工程根目录wl*_TE.dat等 - 脚本:
D:\Mac\Simulation\rsoft_blazed_incoupler\run_blazed_incoupler.py(每段函数都有注释,可用--html-only只重出报告)
11. 运行异常
无。
12. 假设与代码对照
- 高折玻璃折射率未另给,取 n=1.8,与压印胶相同 → 玻璃/胶水界面无菲涅尔;光学对比度来自 Ag。
- 光机正入射、无 NA、无视场扫描。俯仰/偏航未建模。
- Ag 盖帽 200 nm 为光学厚反射层(可见光趋肤深度约 12 nm)。工艺若要求 >500 nm,RCWA 级次效率几乎不再变。
- 无限周期 2D RCWA,忽略有限孔径衍射、波导模式重叠、基板多次反射。
- 胶水无色散;银用材料库色散。
- 无 NIL 残胶层(图纸齿底贴在玻璃上)。
脚本函数 ↔ 本报告步骤
| 函数 | 步骤 | 作用 |
|---|---|---|
blaze_layers | 3 | 24 层胶/银宽度 |
build_cad | 4 | rstools 写 .ind |
run_dfmod | 5 | 调 dfmod.exe |
parse_de_dat | 5–8 | 读 .dat 级次 |
grating_angle_deg / is_tir | 6 | 角与 TIR |
svg_* | 1–7 | 逐步示意图 |
write_html | 全部 | 生成本页 |
main | — | 建库→扫描→存盘 |
2D 仿真必须改
polarization。只改 rcwa_launch_pol 时 TE/TM 会得到同一张表。{
"timestamp": "2026-09-12 23:02:52",
"ind_file": "D:\\Mac\\Simulation\\rsoft_blazed_incoupler\\blazed_incoupler.ind",
"period_nm": 365.0,
"height_nm": 170.0,
"n_glue": 1.8,
"n_glass": 1.8,
"tag_nm": 200.0,
"grating_mm": 3.8,
"engine_mm": 3.2,
"fill": 0.8421052631578948,
"blaze_substrate_deg": 24.9739109058834,
"blaze_normal_deg": 65.0260890941166,
"harmonics": 21,
"n_stair": 24,
"engine_under_glass": true,
"launch": "from high-index glass, +z, normal incidence"
}