7.6 KiB
7.6 KiB
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 结果,建议改为 三算例并列:
- SBC 立方体(原有,z=0.5 切面)
- 单周期 PBC(
OutFile/normE或OutFile_single_on_double) - 双周期 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 |
生成命令:
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
七、汇报叙事建议
- 先讲已有成果:2D→3D 框架、SBC 散射闭环、本征矩阵对齐
- 重点讲阶段三:PBC 是光学周期结构仿真的关键,双周期角点合并是技术难点
- 用数字收尾:normE 相关系数 1.0、相对误差 ~10⁻⁶,说明实现可靠
- 下一步一笔带过:阶段 4 源项、.em 接口,与第 10–11 页呼应
文档生成日期:2026-06-23