222 lines
7.6 KiB
Markdown
222 lines
7.6 KiB
Markdown
# 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*
|