# OpticsFEM 3D PPT 更新建议(阶段三 · PBC 周期边界) > 对应原稿:`yh -3D OpticsFEM.pptx`(9 页,2026-06-09) > 当前进度:阶段 2(PEC/ELE)+ 阶段 3(PBC 单/双周期)已完成 > 配套图片目录:`ppt_assets/` --- ## 一、现有 PPT 结构 vs 当前进度 | 页码 | 现有内容 | 与现状的差距 | |------|----------|--------------| | 1 | 封面(2026.6.9) | 日期、副标题需更新 | | 2–3 | 背景、软件框架 | 基本可用,可小幅补充 PBC 模块 | | 4 | 三维拓展总览表(图片) | **需标绿阶段 2/3 已完成项** | | 5 | SBC 散射 + 本征 FemType 4/5 | **缺 PBC 算例说明** | | 6 | 散射 \|E\| 结果(SBC 立方体) | 仅有 SBC,**缺 PBC 结果图** | | 7 | 后续工作一(PBC 仍列在待做) | **应改为「已完成 + 新待做」** | | 8 | 后续工作二(.em 接口) | 可保留,基本不变 | | 9 | 工作总结 | **未体现 PEC/ELE、PBC** | 按 `3D光学仿真扩展实施计划.md`,当前进度: ``` 阶段0 工程基础 ──→ 阶段1 本征频率 ──→ 阶段2 PEC/ELE ✅ ──→ 阶段3 PBC ✅ ↓ 阶段4 BELE/源项(下一步) ``` --- ## 二、建议「就地修改」的页面 ### 1. 第 1 页 · 封面 - 时间改为 **2026 年 6 月 23 日**(或汇报当天) - 副标题可改为: **「一阶 Nedelec · SBC/PEC/PBC 边界 · 散射与本征矩阵组装」** ### 2. 第 4 页 · 三维拓展总览表 建议在表格或模块图中标注: | 模块 | 状态 | 说明 | |------|------|------| | 体积分 + SBC | ✅ 已有 | 原内容 | | **PEC/ELE(阶段 2)** | ✅ 新增 | `Assemble_PEC_ELE()`,边 DOF 消元 | | **PBC 单/双周期(阶段 3)** | ✅ 新增 | `GetIndexOfPBC` + `Assemble_PBC` + `PBC_Util` | | BELE/MAG/SCD 等 | ⏳ 阶段 4 | 仍待做 | | .em 接口 | ⏳ 接口层 | 第 8 页内容 | ### 3. 第 5 页 · 三维算例验证 在现有 FemType 4/5 下方,**增加 PBC 算例块**: **单周期 PBC 散射** - 配置:`singlePBC_scatter.json` + `singlePBC_mesh.dat` - 方程:A·x = b,约束矩阵 **P^T A P**(Bloch 相位 φ) - 求解:n ≈ 22751,\|r\| ≈ **3.9×10⁻¹³** **双周期 PBC 散射** - 配置:`doublePBC_scatter.json`(pbc + pbc2 两组) - 难点:角点 DOF 重叠合并(`mergeDoublePbcPairs`) - 约束对数:PBC1=819,PBC2=813,合并后 **1570 对** **本征 FemType=5 + PBC** - `Assemble_EigenFreq_Boundary.cpp` 中 `Assemble_PEC_PBC()` 已接入 ### 4. 第 7 页 · 后续工作一(重点改写) 建议拆成两段: **【阶段 2–3 已完成】** - PEC/ELE 边 DOF 约束组装 - 单周期 / 双周期 PBC 边配对与 Bloch 相位 - `Mesh_3D::GetIndexOfPBC()`、`PBC_Util.cpp` - 与 MATLAB `main_singlePBC.m`、`assembly_pbc_double.m` 对齐 **【阶段 4 及以后 — 仍待做】** - BELE / MAG / SCD / MPD / EPD 源项 - PML 吸收层、Port 端口 - 二阶 Nedelec、3D 本征模式(FemType=6) - 各向异性材料 原来写「PBC 待接入」的表述应全部删除或改为「已完成」。 ### 5. 第 9 页 · 工作总结 在「已完成」中补充: ``` ⑥ 阶段2:3D 散射 PEC/ELE 边界组装(Assemble_PEC_ELE) ⑦ 阶段3:单/双周期 PBC 完整实现,C++ vs MATLAB normE 相对误差 ~1.1×10⁻⁶,相关系数 1.0 ``` 「后续方向」改为:**阶段 4 源项边界 → 阶段 5 PML/Port → .em 接口**。 --- ## 三、建议「新增」的页面(插在 6 页之后) ### 新页 A · 「阶段三:周期边界 PBC 原理与实现」 建议内容: - **物理**:Bloch 定理 E(r+R) = E(r)·e^(jk·R) - **实现流程**: ``` PBC 面域 → GetIndexOfPBC 边配对 → 构建约束矩阵 P → A_proj = P^H A P ``` - **关键文件**:`Mesh_Find.cpp`、`PBC_Util.cpp`、`Assemble_Scatter_3D_Boundary.cpp` - **JSON 配置示例**:`pbc` / `pbc2` 块(srcIndex、dstIndex、phiR/I、pbcWaveVec) ### 新页 B · 「PBC 数值验证(C++ vs MATLAB)」 可直接用的数据(`tools/compare_double_pbc.py` 输出): | 指标 | 数值 | |------|------| | 双 PBC 矩阵 max\|diff\| / rel | ~500 / **1.1×10⁻⁶** | | normE L2 相对误差 | **1.1×10⁻⁶** | | normE 相关系数 | **1.0** | | 单 PBC 求解残差 | **3.9×10⁻¹³** | **推荐配图**:`ppt_assets/pbc_faces_domain2_domain5.png`(domain 2 + domain 5 周期面 \|E\| 对比) ### 新页 C(可选)· 「分阶段路线图与进度」 **推荐配图**:`ppt_assets/roadmap_stage_progress.png` | 阶段 | 内容 | 状态 | |------|------|------| | 0 | Test_Main、JSON 导出 | ✅ | | 1 | 本征频率闭环 | ⚠️ 矩阵已对齐,Run/Post 待接 | | 2 | PEC/ELE | ✅ | | 3 | PBC 单/双周期 | ✅ | | 4 | BELE/源项 | ⏳ | | 5 | PML/Port | ⏳ | | 6 | 本征模式/二阶 | ⏳ | --- ## 四、第 6 页散射结果的微调 不必删原 SBC 结果,建议改为 **三算例并列**: 1. **SBC 立方体**(原有,z=0.5 切面) 2. **单周期 PBC**(`OutFile/normE` 或 `OutFile_single_on_double`) 3. **双周期 PBC**(`OutFile_double/normE`) 每图下方一行标注:算例名、DOF 数、残差或相对误差。 --- ## 五、更新后的推荐页序(约 12 页) ``` 1. 封面(更新日期/副标题) 2. 项目背景与目标 3. 软件整体框架(+ PBC 模块) 4. 三维拓展总览(标绿阶段 2/3) 5. 算例验证总览(SBC + 本征 + PBC) ← 改 6. SBC 散射结果展示 ← 保留 7. 【新】阶段三 PBC 原理与实现 8. 【新】PBC 数值验证(C++ vs MATLAB) ← 用 pbc_faces_domain2_domain5.png 9. 【新/可选】分阶段路线图 ← 用 roadmap_stage_progress.png 10. 后续工作(阶段 4+,删 PBC 待做) ← 原第 7 页改 11. 后续工作二:.em 接口 ← 原第 8 页 12. 工作总结 + 谢谢 ← 原第 9 页改 ``` --- ## 六、配套图片清单 | 文件名 | 用途 | 来源 | |--------|------|------| | `ppt_assets/pbc_faces_domain2_domain5.png` | PBC 面 2+5 **合并**在同一坐标系(C++/MATLAB 对比) | `plot_domain_faces.py --combined` | | `ppt_assets/face_domain2.png` | domain 2 单独(可选) | `--domains 2` | | `ppt_assets/face_domain5.png` | domain 5 单独(可选) | `--domains 5` | | `ppt_assets/roadmap_stage_progress.png` | 分阶段进度路线图 | `make_ppt_assets.py` | | `ppt_assets/pbc_validation_metrics.png` | PBC 验证指标柱状图 | `make_ppt_assets.py` | | `ppt_assets/module_status_stage3.png` | 模块完成状态表 | `make_ppt_assets.py` | 生成命令: ```powershell cd "3D opticsfem-master" # 合并 domain 2+5(同一坐标系,类似 COMSOL 切面) python tools/plot_domain_faces.py --mesh build/Release/PBCmesh.dat ` --outdir build/Release/OutFile ` --mat-outdir "..\三维matlab代码\matlab 3D一阶基+散射边界条件+单周期边界\OutFile" ` --domains 2 5 --combined ` --output ppt_assets/pbc_faces_domain2_domain5.png # 或一键生成全部 PPT 素材 python ppt_assets/make_ppt_assets.py ``` > 若 C++ `OutFile/normE` 顶点数与 `PBCmesh.dat` 不一致,请先在 `build/Release` 下运行: > `OpticsFEM.exe pbc3d_sbc.json` --- ## 七、汇报叙事建议 1. **先讲已有成果**:2D→3D 框架、SBC 散射闭环、本征矩阵对齐 2. **重点讲阶段三**:PBC 是光学周期结构仿真的关键,双周期角点合并是技术难点 3. **用数字收尾**:normE 相关系数 1.0、相对误差 ~10⁻⁶,说明实现可靠 4. **下一步一笔带过**:阶段 4 源项、.em 接口,与第 10–11 页呼应 --- *文档生成日期:2026-06-23*