# 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*
