结构配置
Structure 是 Dreapex TMM 中的结构建模页面,用于定义入射侧介质、膜系本体和透射侧介质。该页决定了计算对象本身;如果结构不成立,后续 Run、Run Sweep 和 Run Optimizer 即使可见,也不会得到可用结果。
本章给出用于工程建模的结构配置方法,覆盖顶层结构编辑、折射率模型选择、Layer Group、环境介质与结构校验。
页面结构与配置顺序
Structure 页面由四个功能区构成:
| 区域 | 主要内容 | 工程作用 |
|---|---|---|
| 页面工具栏 | Add、Insert、Duplicate、Reverse、Move、Delete、RI Status、Table / 3D | 管理顶层结构元素、RI 数据库状态与视图 |
| 入射介质面板 | Incidence Medium | 定义入射边界条件 |
| 结构表 | 顶层层、层组及其参数编辑器 | 定义待求解膜系本体 |
| 透射介质面板 | Transmission Medium | 定义出射边界条件 |
页面底部状态栏持续显示参数验证状态。结构配置应始终遵循“修改一轮,检查一次状态栏”的节奏,而不是连续输入后再集中排错。

结构配置顺序:
- 先确认
Incidence Medium。 - 再编辑普通层或创建
Layer Group。 - 按需要调整层序。
- 最后设置
Transmission Medium。 - 确认底部状态栏通过后,再进入
Optics。
折射率模型、非相干设置、环境介质吸收限制和层序相互耦合。先固定边界条件,再完成堆栈编辑,可以减少返工。
顶层编辑:工具栏与结构表
页面工具栏仅作用于顶层结构表,不作用于 Layer Group 对话框内部的子层表。
| 控件 | 作用 | 使用前提 | 使用建议 |
|---|---|---|---|
Add | 在末尾追加普通层 | 参数未锁定 | 用于继续扩展堆栈 |
Add > Layer Group | 在末尾追加层组 | 参数未锁定 | 用于周期结构或重复单元 |
Insert | 在当前选中行后插入普通层 | 必须先选中一行 | 用于在指定位置插入过渡层 |
Insert > Layer Group | 在当前选中行后插入层组 | 必须先选中一行 | 用于在中间插入周期模块 |
Duplicate | 复制当前选中行 | 必须先选中一行 | 用于快速复用相近参数 |
Reverse | 反转顶层结构顺序 | 顶层结构非空 | 用于快速检查反向入射情形 |
Move Up / Move Down | 将选中行上下移动一位 | 必须先选中一行 | 用于细调层序 |
Delete | 删除当前选中行 | 必须先选中一行 | 删除前先确认选中的确是目标顶层行 |
Table / 3D | 切换表格视图与 3D 视图 | 页面可编辑 | 3D 用于检查层序;参数编辑仍以表格视图为主 |
如果 Insert、Duplicate、Move Up、Move Down 或 Delete 处于禁用状态,第一检查项永远是”是否已选中目标行”。

点击工具栏的 3D 按钮可切换到 3D 可视化模式。3D 视图提供相机角度预设(Front/Isometric/Dimetric/Trimetric)、形状(Square/Circle)和显示选项(Lighting/Names/Thickness/Incident Ray/Explode),支持导出图像。
结构表中的每一行都是一个顶层结构元素,可以是普通 Layer,也可以是 Layer Group。关键列的职责如下:
| 列 | 含义 | 关键规则 |
|---|---|---|
| 勾选框 | 启用或禁用该顶层元素 | 顶层至少保留 1 个启用元素 |
Type | 标识当前行是 Layer 还是 Group | 只读,用于识别编辑方式 |
Name | 顶层元素名称 | 必填,且顶层名称必须唯一 |
Thickness / Repeat | 普通层显示厚度;层组显示重复次数 | 厚度必须大于 0;重复次数必须为正整数 |
Refractive Index | 普通层显示折射率模型;层组显示 Edit Layer Group | 层组内部参数必须进入对话框编辑 |
| 参数编辑区 | 根据当前折射率模型切换不同输入器 | 参数必须与模型类型一致 |
Transparency | 普通层透明层标记 | 仅普通层可编辑 |
Incoherent | 普通层非相干标记 | 仅普通层可编辑,且与双折射存在限制 |
Delete | 删除当前顶层行 | 删除的是顶层元素,不是层组内部子层 |
实际建模时,结构表需要优先关注以下四类规则:
- 顶层元素不能全部禁用。
- 顶层名称不能重复,复制后应立即改名。
- 普通层厚度必须严格大于
0;临时排除某层时应取消勾选,而不是把厚度改成0。 Incoherent只适用于普通层;一旦启用,不应再将该层设置为双折射材料。
Transparency 可用于辅助表达该层在模型中的角色,但它不会替代材料本身的物理参数要求。无论是否标记为透明层,普通层仍然必须提供合法的折射率参数。
折射率模型选择
普通层的折射率编辑器会随模型类型切换。结构建模的核心工作之一,就是为每层选择正确的折射率表达方式。
| 模型 | 适用场景 | 必填参数 | 关键限制 |
|---|---|---|---|
Constant | 常数折射率近似、概念验证、快速原型 | n、k | n > 0,k >= 0 |
Const. Birefringence | 常数双折射近似、各向异性参数敏感性测试 | no、ko、ne、ke | 四个值都必须合法;不可与非相干层组合 |
File | 使用波长相关真实材料数据 | 文件或数据库材料 | 文件内容必须与当前材料类型匹配 |
对大多数建模任务,可按以下判断选择:
- 做概念验证或快速建立参考模型,优先使用
Constant。 - 需要在不引入外部数据的前提下测试各向异性,使用
Const. Birefringence。 - 需要接近真实色散特性时,使用
File。

当切换到 Const. Birefringence 时,参数区会从两栏扩展到四栏;这是页面上最直接的模式切换标识。
File 模式下会出现 6 个相关控件:
| 控件 | 作用 |
|---|---|
Upload(回形针图标) | 上传本地 .nk / .txt 折射率文件 |
Database | 打开折射率数据库对话框 |
Clear(垃圾桶图标) | 清空当前折射率文件(需确认) |
| 文件名显示区 | 只读,显示当前加载的文件名 |
Preview(放大镜图标) | 打开折射率图表预览对话框 |
Interpolation | 选择插值方法:Linear / PCHIP / Cubic Spline |
建议固定采用如下顺序:先查数据库,再导入本地文件;导入后先预览曲线,再继续建模;更换材料前先清空当前文件,避免误判当前数据来源。
Layer Group:周期结构建模
当结构包含重复单元时,应优先使用 Layer Group,而不是手工复制大量普通层。典型场景包括 DBR、周期对、重复功能层单元等。
Layer Group 有两个入口:
Add > Layer Group:在顶层结构末尾追加层组。Insert > Layer Group:在当前选中行后插入层组。
两者的编辑界面完全相同,唯一差别是插入位置。

对话框内部可按功能分为四部分:
| 区域 | 内容 | 作用 |
|---|---|---|
| 基本信息区 | Name、Repeat Count、Description | 定义层组身份和重复次数 |
| 内部工具栏 | Add、Insert、Duplicate、Reverse、移动、删除 | 管理层组内部子层 |
| 内部层表 | 子层名称、厚度、折射率模型与参数 | 定义一个周期单元 |
| 预览信息区 | 内部层数、重复后总层数、总厚度 | 快速检查层组规模 |
填写层组时应重点注意以下规则:
| 字段 | 规则 | 工程建议 |
|---|---|---|
Name | 必填,且作为顶层元素时不能与其他顶层名称重复 | 用结构语义命名,如 DBR Pair |
Repeat Count | 必须为正整数 | 先用较小值验证,再增加到目标次数 |
Description | 可选 | 用于记录设计目的或周期说明 |
当前实现存在一个需要明确记住的差异:
Layer Group对话框内的Repeat Count控件,界面限制为1-100。- 回到顶层结构表后,层组重复次数可继续调整到
1-1000。 - 底层校验逻辑接受
1-1000的正整数。
因此,当目标重复次数超过 100 时,正确做法是先创建层组,再回到顶层表格继续增大重复次数。
层组内部编辑与顶层编辑相似,但只作用于当前层组内部。内部子层同样必须满足名称非空、名称在组内唯一、厚度大于 0、折射率参数与模型匹配等规则。
需要特别区分的点有三项:
- 层组内部子层可用
Transparency,但不提供Incoherent。 - 内部层序变化不会直接改变顶层结构顺序。
- 只有点击
Save才会写回顶层结构;Cancel会丢弃本次对话框修改。
如果你需要频繁切换相干/非相干状态,普通顶层层通常比 Layer Group 更适合。
环境介质配置
Structure 页面在结构表上下分别提供 Incidence Medium 和 Transmission Medium。它们定义的是膜系两侧的边界条件,而不是膜系内部层。

两者的共同基础规则如下:
- 名称不能为空。
- 折射率模型只支持
Constant与File。 - 环境介质不支持双折射常数模式。
- 环境介质也不支持双折射折射率文件。
两侧介质的差异如下:
| 项目 | Incidence Medium | Transmission Medium |
|---|---|---|
| 物理含义 | 定义入射侧边界条件 | 定义出射侧边界条件 |
| 可编辑字段 | Name、Index Type、n 或文件输入区 | Name、Index Type、n、k 或文件输入区 |
| 吸收限制 | 必须为无吸收,等效 k = 0 | 可为无吸收,也可为有吸收 |
| 数据库可用性 | 不作为主要数据库入口 | File 模式下可直接使用数据库 |
其中最关键的工程限制是:入射介质必须保持无吸收。即使切换到文件模式,导入文件中的 k 列也必须全部为 0,否则结构验证会失败。
透射介质则更接近“基底或出射环境”的建模入口。在常数模式下,它可以直接输入 k;在文件模式下,它也可以直接从折射率数据库选择材料。因此,吸收基底、衬底或有损输出介质通常都在 Transmission Medium 中建模。
折射率数据库
当普通层或环境介质使用 File 模式时,可以通过 Database 按钮打开 refractiveindex.info Database 对话框,从内置折射率数据库中选取材料。

对话框布局
对话框分为左右两栏:
| 区域 | 内容 | 作用 |
|---|---|---|
| 左侧面板 | 材料树浏览器(Shelf > Book > Material 三级展开)或搜索结果列表 | 按类别逐级定位材料,或用搜索快速跳转 |
| 右侧面板 | Selected Material 元数据 + 折射率曲线预览 | 写入前确认材料信息与曲线形状 |
搜索
顶部搜索栏支持按材料名称、materialId 或数据库路径(source path)搜索。输入关键词后按 Enter 可直接跳转到匹配材料并加载预览。

材料元数据
选中材料后,右侧面板显示以下信息:
| 字段 | 含义 |
|---|---|
Material ID | 数据库中的唯一标识符 |
Version | 材料数据版本号 |
Ordinary Path | 寻常光数据路径 |
Extraordinary Path | 非寻常光数据路径(仅双折射材料显示) |
选取流程
- 在左侧树中按
Shelf > Book > Material逐级展开,或在搜索栏输入关键词后按Enter。 - 点击材料条目,右侧自动加载折射率曲线预览。
- 核对元数据与曲线后,点击
Confirm写入当前层或环境介质。 - 如需取消,点击
Cancel或关闭对话框。
写入后,层行会显示材料文件名。在图表预览对话框中会出现 Linked to Database 标签,表明当前数据来自数据库。
插值方法
当层或环境介质使用 File 模式时,层行末尾会出现 Interpolation 下拉菜单,用于控制折射率数据在采样点之间的插值方式。
| 选项 | 说明 |
|---|---|
Linear | 线性插值(默认) |
PCHIP | 分段三次 Hermite 插值(Piecewise Cubic Hermite Interpolating Polynomial),保持单调性 |
Cubic Spline | 三次样条插值,曲线更光滑但可能出现过冲 |

Linear 插值的层和环境介质,并建议改为 PCHIP。如果数据点较少,Linear 可能导致折射率曲线不够平滑,影响计算精度。RI 状态检查
页面工具栏中的 RI Status 按钮用于检查所有关联了数据库的层是否存在更新。
检查流程
点击 RI Status 后,系统会遍历所有数据库关联层并与远程数据库版本比对。Toast 消息会依次显示三种状态之一:
| 状态 | 显示内容 |
|---|---|
| 检查中 | 旋转图标 + "Checking N database-linked layer(s)..." |
| 全部最新 | 绿色勾选图标 + "All RI data is already up to date" |
| 发现更新 | 分层操作表,列出每层的原因(updated 或 missing)、版本信息、来源,以及 Refresh / Detach 按钮 |

当发现更新时,操作表中每行对应一个需要处理的层:
updated:数据库中有新版本,可点击Refresh更新。missing:材料在最新数据库中已不存在,只能点击Detach移除数据库关联。
批量操作
RI Status 按钮右侧的下拉菜单提供两个批量操作:
| 菜单项 | 作用 |
|---|---|
Refresh RI from Database for All Layers | 一次性从数据库更新所有关联层的折射率数据 |
Detach RI Database Link for All Layers | 一次性移除所有层的数据库关联,保留当前已加载的数据 |
Detach 操作移除数据库关联但不删除已加载的折射率数据。断开后该层的折射率数据变为独立文件,不再跟踪数据库版本。图表预览对话框
点击层行或环境介质的 Preview(放大镜图标)按钮可打开折射率图表预览对话框。
对话框包含以下内容:
| 区域 | 内容 |
|---|---|
| 图表区 | 当前材料的 n/k 折射率曲线 |
| 描述区 | 可编辑的材料描述文本 |
| 导出按钮 | Export TXT、Export CSV |
| 数据库信息区 | 仅数据库关联材料显示:Linked to Database 标签 + Material ID / Version / Ordinary Path / Source |
| 数据库操作按钮 | Refresh From Database(从数据库更新)、Detach Database Link(断开数据库关联) |
图表区显示当前材料的 n/k 折射率随波长变化的曲线,可直观确认色散特性是否符合预期。

对于数据库关联材料,对话框底部会额外显示 Linked to Database 标签以及 Refresh From Database 和 Detach Database Link 按钮,用于管理数据库同步状态。

波长覆盖检查
运行计算(Run、Run Sweep、Run Optimizer)前,软件会自动检查所有 File 模式层和环境介质的折射率数据波长范围是否覆盖了当前设置的波长采样范围。
如果某层的折射率数据波长范围不能完全覆盖请求的波长采样范围,运行会被阻止,并显示具体的错误信息,包含该层名称、数据覆盖范围和请求范围。
Optics 页中的波长采样范围。结构校验
结构页最常见的失败原因可以归纳为下表:
| 问题 | 典型现象 | 处理方式 |
|---|---|---|
| 顶层无启用元素 | 所有行取消勾选后验证失败 | 至少保留 1 个顶层层或层组启用 |
| 名称冲突 | 复制后立即报错或验证提示重复名称 | 先检查顶层名称;如使用 Layer Group,再检查组内子层名称 |
| 厚度为 0 或负值 | 普通层或层组内部层无法通过验证 | 改为大于 0 的值;临时排除请用取消勾选 |
| 非相干与双折射冲突 | 开启 Incoherent 后切到双折射模型导致失败 | 保留其一:要么用非相干普通材料,要么关闭非相干后使用双折射 |
| 入射介质文件含吸收 | 入射介质切到文件模式后验证失败 | 检查 k 列,确保全为 0 |
从工程角度看,进入下一页前应完成以下自检:
- 顶层至少存在 1 个启用元素。
- 顶层名称无重复。
- 所有厚度都大于
0。 - 每个普通层的折射率参数与当前模型一致。
- 两侧环境介质的名称、类型与吸收限制均合法。
- 页面底部验证状态已经恢复为通过。
基准建模流程
若你需要建立一个标准的“空气 / 单层膜 / 基底”模型,建议采用以下顺序:
- 保持
Incidence Medium为无吸收常数介质。 - 编辑默认普通层,设置名称、厚度与折射率模型。
- 若需要真实色散,再切换到
File并载入数据库材料。 - 在
Transmission Medium中设置基底参数;若基底有吸收,在此处补充k。 - 查看底部状态栏,确认结构已通过验证。
- 再进入
Optics配置角度、波长与探测器。
若目标是周期结构,则将第 2 步替换为:创建 Layer Group,先在对话框中定义一个周期单元,再设置重复次数。
完成以上流程后,继续阅读下一章:光学参数。