闪耀耦入光栅 · 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 · 系统截面(光机在玻璃下方,向上入射) 比例:1 mm = 80 px。光栅 3.8 mm,光机 3.2 mm 对中;玻璃向右伸出光栅区。 Ag 反射层(包住齿槽 + 盖帽) 高折玻璃 n = 1.8 光机出射面 3.2 mm 耦入光栅 3.8 mm 光机对中,两侧各外露 0.30 mm 步骤 1b · 光路(正入射,设计级 m=−1 沿玻璃 TIR) 光机 m=−1 反射进 TIR(526 nm → −53.19°) Ag 挡住透射,T ≈ 0 入射已在玻璃中;RCWA 的反射级就是回到玻璃、可沿波导走的衍射级。

尺寸怎么落到图上

RCWA 不求解 3.8 mm 有限孔径,有限尺寸只通过填充因子进入「有效耦入」。 光栅约 10411 个周期,光机覆盖约 8767 个周期,周期数足够大,边缘衍射可忽略。

2. 光机与光栅孔径

步骤 2 · 孔径重叠(俯视,单位 mm) 光栅 3.8 光机 3.2 填充因子 F = 3.2 / 3.8 = 0.8421 有效耦入 = DE(m) × F 两侧未照明光栅各 0.30 mm

填充因子怎么用

  1. F = 3.2 / 3.8 = 0.842105(84.21%)。
  2. DiffractMOD 给出的 DE 是「照到光栅上的功率」归一。
  3. 光机比光栅窄,有 (1−F)=15.79% 的出射光根本打不到齿上。
  4. 有效耦入 ≈ DER(m) × F。这里没有再乘 NA、波导损耗、模式重叠。

3. 单胞几何(与 CAD / 求解器一致)

步骤 3 · RCWA 单胞(坐标与 CAD 相同,台阶 = 求解器真实分层) x∈[-Λ/2, Λ/2],z=0 为玻璃/胶水界面;橙色线为未离散的直角闪耀;色块为 24 层楼梯 高折玻璃(入射) Ag 盖帽 200 nm Λ = 365 nm H=170 理想直角闪耀 +z 入射

为什么是直角闪耀、为什么要楼梯

  1. H tanα = 170 × tan(65.03°) = 365.00 nm ≈ Λ=365 nm → 斜面正好跨满一个周期,不被截断。
  2. 基板倾角 atan(170/365)=24.97°;对法线闪耀角 90°−该值 = 65.03°。
  3. RCWA 沿 z 分层。函数 blaze_layers() 把斜面切成 24 层矩形,层厚 7.083 nm。
  4. z<0 的玻璃缓冲 80 nm 只表示「光已经在玻璃里」;真实 0.4 mm 基板厚度不进单胞(均匀层不改变衍射效率)。
  5. 下表与 blazed_incoupler.ind 里 Glue_xx / AgFill_xx 线段同一套数字。
层 iz (nm)胶水宽 (nm)Ag 宽 (nm)胶水中心 x+Λ/2Ag 中心 x+Λ/2
00.00–7.08357.407.60178.70361.20
17.08–14.17342.1922.81171.09353.59
214.17–21.25326.9838.02163.49345.99
… 中间层同规则,银宽 = Λ·z/H …
1285.00–92.08174.90190.1087.45269.95
21148.75–155.8338.02326.9819.01201.51
22155.83–162.9222.81342.1911.41193.91
23162.92–170.007.60357.403.80186.30

x 原点在周期中心。胶水左对齐、银右对齐,两宽之和恒为 365 nm。

4. 调用 RSoft CAD API 写 .ind

步骤 4–5 · API 调用链 rstoolsRSoftCircuit .ind单胞 CAD dfmodRCWA .dat级次 DE HTML本报告

代码在做什么(函数 build_cad)

  1. from rstools import RSoftCircuit → c = RSoftCircuit(),这是官方 CAD 对象。
  2. c.set_symbol(名字, 值) 写入 .ind 顶部的符号表(周期、域、谐波、输出开关)。
  3. c.add_material(matname="Ag") 从 RSoft 库拉银的色散;胶水/玻璃用常数 n。
  4. c.add_segment(position, offset, dimensions) 画矩形层:玻璃缓冲、24 层胶+银、Ag 盖帽。
  5. 坐标必须是纯数字。解析器把 begin.x 里的 + 当成「相对定位」,所以不用 "-Period/2+w/2" 这种字符串。
  6. c.write(ind_path) 得到 blazed_incoupler.ind,可用 winrsoft 打开核对。

关键符号

符号值为什么这样设
background_indexNGlass=1.8入射已在玻璃中
dimension / eim / vector2 / 0 / 12D 矢量,不用等效折射率
polarization0 或命令行覆盖2D TE/TM 唯一有效开关
launch_angle0光机正对,无俯仰
boundary_min/max±Λ/2一个周期
rcwa_harmonics_x21金属锐角需要足够谐波
rcwa_ref/tra_order_x−4:4输出这些级
sim_toolST_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.exeDiffractMOD RCWA 求解器
-hide不打开 CAD/监视窗口
file.ind上一步 rstools 写出的单胞
prefix=wlλ_POL输出文件前缀,避免互相覆盖
wait=0算完即退出(手册 10.D.1)
free_space_wavelength真空波长,单位 μm
polarization=0|12D:0=TE(Ey∥沟槽),1=TM
rcwa_launch_pol3D 偏振角;2D 下不改变结果,仅占位
eim=0 vector=1真矢量 2D,不用等效折射率
rcwa_variation_min=max扫描上下限相同 → 单波长点

本次实际运行

prefixλ偏振耗时返回码DE(m=−1)ΣRA
wl450_TE450TE1.59 s069.59%89.12%10.88%
wl450_TM450TM1.17 s044.87%48.16%51.84%
wl520_TE520TE1.33 s058.73%91.74%8.26%
wl520_TM520TM1.28 s035.92%45.69%54.31%
wl526_TE526TE1.40 s057.24%91.87%8.13%
wl526_TM526TM1.30 s039.61%49.07%50.93%
wl532_TE532TE1.19 s055.68%92.00%8.00%
wl532_TM532TM1.21 s043.00%51.06%48.94%
wl620_TE620TE1.27 s027.41%93.04%6.96%
wl620_TM620TM1.22 s037.15%38.08%61.92%
wl638_TE638TE1.98 s019.25%93.01%6.99%
wl638_TM638TM1.35 s033.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

步骤 6 · 光栅方程(λ=526 nm,正入射,n=1.8) 内盘:空气光锥 |sinθ|<1/n = 0.556 外环:玻璃导波 / TIR 0.556<|sinθ|≤1 m=-1 -53.19° m=+0 0.00° m=+1 53.19° n sinθ_m = m λ/Λ。横坐标 = sinθ。绿点可 TIR。玻璃内截止:m=-3、m=-2、m=+2、m=+3

手算 λ=526 nm、正入射、m=−1

  1. 光栅方程:n sinθ = m λ/Λ = −526/365 = -1.441096
  2. sinθ = (m λ/Λ)/n = -1.441096 / 1.8 = -0.800609
  3. θ = arcsin(-0.800609) = -53.19°(符号表示 −x)
  4. 临界角 θ_c = arcsin(1/1.8) = 33.75°
  5. |θ| = 53.19° > θ_c → 可在玻璃内 TIR,这才叫耦入导波
  6. |m|≥2:|m|λ/Λ = 1052/365>1.8 → 玻璃中截止,DE 列应为 0
λ (nm)m=−1 角TIR?m=0m=+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 级次效率(设计点)

λ=526 nm · TE · 反射级次 DE -4 0.00% -3 0.00% -2 0.00% -1 57.24% +0 17.02% +1 17.62% +2 0.00% +3 0.00% +4 0.00% ΣR=91.87% T=0.00% A=8.13% 绿柱为设计级 m=−1 λ=526 nm · TM · 反射级次 DE -4 0.00% -3 0.00% -2 0.00% -1 39.61% +0 4.91% +1 4.55% +2 0.00% +3 0.00% +4 0.00% ΣR=49.07% T=0.00% A=50.93% 绿柱为设计级 m=−1

怎么读这两张柱状图

8. 全表:各波长 / 偏振 / 级次

每一行是一次 Floquet 通道。列含义:

λ (nm)偏振m衍射角状态 反射 DE透射 DE有效耦入
450TE-4—evan.0.00%—0.00%
450TE-3—evan.0.00%—0.00%
450TE-2—evan.0.00%—0.00%
450TE-1-43.23°TIR69.59%—58.60%
450TE+00.00°prop.12.13%—10.22%
450TE+143.23°TIR7.40%—6.23%
450TE+2—evan.0.00%—0.00%
450TE+3—evan.0.00%—0.00%
450TE+4—evan.0.00%—0.00%
450TM-4—evan.0.00%—0.00%
450TM-3—evan.0.00%—0.00%
450TM-2—evan.0.00%—0.00%
450TM-1-43.23°TIR44.87%—37.79%
450TM+00.00°prop.1.31%—1.10%
450TM+143.23°TIR1.98%—1.67%
450TM+2—evan.0.00%—0.00%
450TM+3—evan.0.00%—0.00%
450TM+4—evan.0.00%—0.00%
520TE-4—evan.0.00%—0.00%
520TE-3—evan.0.00%—0.00%
520TE-2—evan.0.00%—0.00%
520TE-1-52.32°TIR58.73%—49.46%
520TE+00.00°prop.15.97%—13.45%
520TE+152.32°TIR17.03%—14.34%
520TE+2—evan.0.00%—0.00%
520TE+3—evan.0.00%—0.00%
520TE+4—evan.0.00%—0.00%
520TM-4—evan.0.00%—0.00%
520TM-3—evan.0.00%—0.00%
520TM-2—evan.0.00%—0.00%
520TM-1-52.32°TIR35.92%—30.25%
520TM+00.00°prop.4.97%—4.19%
520TM+152.32°TIR4.80%—4.04%
520TM+2—evan.0.00%—0.00%
520TM+3—evan.0.00%—0.00%
520TM+4—evan.0.00%—0.00%
526TE-4—evan.0.00%—0.00%
526TE-3—evan.0.00%—0.00%
526TE-2—evan.0.00%—0.00%
526TE-1-53.19°TIR57.24%—48.20%
526TE+00.00°prop.17.02%—14.33%
526TE+153.19°TIR17.62%—14.84%
526TE+2—evan.0.00%—0.00%
526TE+3—evan.0.00%—0.00%
526TE+4—evan.0.00%—0.00%
526TM-4—evan.0.00%—0.00%
526TM-3—evan.0.00%—0.00%
526TM-2—evan.0.00%—0.00%
526TM-1-53.19°TIR39.61%—33.36%
526TM+00.00°prop.4.91%—4.13%
526TM+153.19°TIR4.55%—3.83%
526TM+2—evan.0.00%—0.00%
526TM+3—evan.0.00%—0.00%
526TM+4—evan.0.00%—0.00%
532TE-4—evan.0.00%—0.00%
532TE-3—evan.0.00%—0.00%
532TE-2—evan.0.00%—0.00%
532TE-1-54.07°TIR55.68%—46.89%
532TE+00.00°prop.18.18%—15.31%
532TE+154.07°TIR18.14%—15.28%
532TE+2—evan.0.00%—0.00%
532TE+3—evan.0.00%—0.00%
532TE+4—evan.0.00%—0.00%
532TM-4—evan.0.00%—0.00%
532TM-3—evan.0.00%—0.00%
532TM-2—evan.0.00%—0.00%
532TM-1-54.07°TIR43.00%—36.21%
532TM+00.00°prop.4.30%—3.62%
532TM+154.07°TIR3.77%—3.17%
532TM+2—evan.0.00%—0.00%
532TM+3—evan.0.00%—0.00%
532TM+4—evan.0.00%—0.00%
620TE-4—evan.0.00%—0.00%
620TE-3—evan.0.00%—0.00%
620TE-2—evan.0.00%—0.00%
620TE-1-70.68°TIR27.41%—23.08%
620TE+00.00°prop.48.41%—40.76%
620TE+170.68°TIR17.23%—14.51%
620TE+2—evan.0.00%—0.00%
620TE+3—evan.0.00%—0.00%
620TE+4—evan.0.00%—0.00%
620TM-4—evan.0.00%—0.00%
620TM-3—evan.0.00%—0.00%
620TM-2—evan.0.00%—0.00%
620TM-1-70.68°TIR37.15%—31.29%
620TM+00.00°prop.0.80%—0.68%
620TM+170.68°TIR0.12%—0.10%
620TM+2—evan.0.00%—0.00%
620TM+3—evan.0.00%—0.00%
620TM+4—evan.0.00%—0.00%
638TE-4—evan.0.00%—0.00%
638TE-3—evan.0.00%—0.00%
638TE-2—evan.0.00%—0.00%
638TE-1-76.19°TIR19.25%—16.21%
638TE+00.00°prop.59.87%—50.42%
638TE+176.19°TIR13.88%—11.69%
638TE+2—evan.0.00%—0.00%
638TE+3—evan.0.00%—0.00%
638TE+4—evan.0.00%—0.00%
638TM-4—evan.0.00%—0.00%
638TM-3—evan.0.00%—0.00%
638TM-2—evan.0.00%—0.00%
638TM-1-76.19°TIR33.42%—28.14%
638TM+00.00°prop.3.19%—2.69%
638TM+176.19°TIR0.96%—0.81%
638TM+2—evan.0.00%—0.00%
638TM+3—evan.0.00%—0.00%
638TM+4—evan.0.00%—0.00%

9. 设计级 m=−1 汇总

λ (nm)角TIRTE DETM DE平均 DE平均×F
450-43.23°TIR69.59%44.87%57.23%48.19%
520-52.32°TIR58.73%35.92%47.33%39.86%
526-53.19°TIR57.24%39.61%48.42%40.78%
532-54.07°TIR55.68%43.00%49.34%41.55%
620-70.68°TIR27.41%37.15%32.28%27.18%
638-76.19°TIR19.25%33.42%26.34%22.18%

平均按 TE/TM 各 50%(未偏振光机)。若光机是线偏光,应只读对应列,不要用平均。

10. 保存位置

11. 运行异常

无。

12. 假设与代码对照

脚本函数 ↔ 本报告步骤

函数步骤作用
blaze_layers324 层胶/银宽度
build_cad4rstools 写 .ind
run_dfmod5调 dfmod.exe
parse_de_dat5–8读 .dat 级次
grating_angle_deg / is_tir6角与 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"
}