# scat3D.em 与 sbc3d.json 对照说明

| 项目 | 路径 |
|------|------|
| LASPCEM/HOFEM 配置 | `laspcem scat3D/scat3D/scat3D.em` |
| OpticsFEM JSON | `3D opticsfem-master/scat3D/Release/sbc3d.json` |
| MATLAB 主程序 | `matlab 3D一阶散射问题/main.m` |
| MATLAB 网格 | `matlab 3D一阶散射问题/SBCmesh.dat` |
| LASPCEM 网格 | `laspcem scat3D/scat3D/scat3D.em.mesh` |
| 求解后副本（注意阶次不同） | `laspcem scat3D/scat3D/scat3D/1_Result/Design.em` |

**文档日期**：2026-06-16

---

## 1. 结论（先看这里）

| 维度 | 是否一致 | 说明 |
|------|----------|------|
| 单元阶次（`scat3D.em`） | ✅ 一致 | `geometrical_order = 1`，`variational_order = 1`，与 MATLAB 一阶 Nedelec 一致 |
| 频率 / 波长 | ✅ 基本一致 | JSON `lambda=0.8 m` ↔ `.em` 单频 `375 MHz`（≈ c/0.8） |
| 介质 εr | ⚠️ 部分一致 | JSON 两域 `[1, 1.5]`；`.em` 另有 PEC 材料条目（边界用，非体域） |
| 边界条件 | ❌ 不一致 | JSON/MATLAB：6 个面 SBC（mark 1–5, 14）；`.em`：仅 mark 1=PEC、2=PMC、3=ABC |
| 入射面 / 激励 | ❌ 不一致 | MATLAB 入射面 mark **4**；`.em` 平面波挂在 mark **3** 的 ABC 面 |
| 网格文件 | ❌ 不一致 | JSON 用 `SBCmesh.dat`；`.em` 用 `scat3D.em.mesh`（不同网格、不同格式） |
| 几何单位 | ⚠️ 需换算 | JSON/MATLAB 坐标为 **m**（约 ±0.5）；`.em` 声明 **mm**（约 ±500） |
| 求解器段 | — | 仅 `.em` 有（HOFEM direct）；JSON 走 OpticsFEM `complexsolver` |

**一句话**：`scat3D.em` 与 `sbc3d.json` **不是同一套已对齐的输入**；频率、一阶 Nedelec、ε=[1,1.5] 等核心参数接近，但**边界编号、入射面、网格**差异很大，**不能直接指望两者数值结果一致**。若要对齐，需在 LASPCEM 中按 MATLAB 的 `phy.out` / `phy.inc` 重新配置边界与网格。

> **注意**：同目录下求解后生成的 `1_Result/Design.em` 里 `geometrical_order = 2`、`variational_order = 2`，与根目录 `scat3D.em`（一阶）不同；对比时请以**你实际打开的文件**为准。

---

## 2. `.em` 文件是什么

`scat3D.em` 是 **LASPCEM/HOFEM** 的求解配置文件（键值 + `--` 注释），角色上类似 OpticsFEM 的 JSON：

- 物理方程与单元阶次
- 频率
- 材料
- 边界条件
- 激励（平面波等）
- 求解器参数

网格在单独文件 `scat3D.em.mesh` 中，由 `mesh_filename` 引用。

OpticsFEM 当前**不能**直接读取 `.em`，需经适配转换为 JSON + 网格（参见仓库 `OpticsFEM_LASPCEM_接口规范.md`）。

---

## 3. `scat3D.em` 逐行解析（全文件 254 行）

本节按 **源文件行号** 说明 `scat3D/scat3D.em` 中每一行（或每一组重复行）的含义，并标注与 `sbc3d.json` / MATLAB 的对应关系。

**阅读约定**

| 列 | 含义 |
|----|------|
| **行号** | `scat3D.em` 中的行号 |
| **内容** | 该行原文（注释行仅写要点） |
| **含义** | HOFEM 如何理解该行 |
| **JSON / MATLAB** | 是否有对应；`—` 表示无直接字段 |

> `--` 开头为 **注释**，求解器不读取；`键 = 值` 才是有效配置。网格拓扑、面 mark 编号在 `scat3D.em.mesh` 中，本节只解析 `.em` 文本。

---

### 3.1 文件头（第 1–4 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 1–3 | `---------------------------------------------------` 等分隔线 | 纯排版，无物理含义 | — |
| 2 | `-- HOFEM --` | 标明本文件供 **LASPCEM-HOFEM** 求解器读取 | — |
| 4 | 空行 | 分隔 | — |

---

### 3.2 物理与离散 `Physic & formulation declaration`（第 5–18 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 5–7 | 章节标题注释 | 本节定义 **求什么方程、用什么有限元** | — |
| 9 | `-- HOFEM physics` | 注释 | — |
| **10** | `physics = "wave_equation"` | 控制方程为 **时谐 Maxwell 波动方程**（频域电磁散射/辐射类问题） | JSON 无此键；由 `FemType: 4` 在 OpticsFEM 侧路由到 3D 散射 |
| 11 | `-- HOFEM basis functions` | 注释 | — |
| **12** | `basis_functions = "nedelec"` | 采用 **Nédélec 边元**（矢量有限元，切向电场沿边展开） | MATLAB 一阶边元程序与此一致；JSON 无单独字段 |
| 13 | `-- HOFEM variational unknowns` | 注释 | — |
| **14** | `variational_unknown = "electric_field"` | 主未知量为 **电场矢量 E**（非标量势、非仅 H） | 对应 JSON `"EletricType": 2`（完整 E 矢量） |
| 15 | `-- HOFEM geometrical order approximation` | 注释 | — |
| **16** | `geometrical_order = 1` | **一阶几何**：四面体由 4 个顶点确定，边为直线、面为平面 | MATLAB `SBCmesh.dat` 为一阶直四面体 ✅ |
| 17 | `-- HOFEM variational order approximation` | 注释 | — |
| **18** | `variational_order = 1` | **一阶 Nedelec**：每四面体 6 条边 → 6 个边自由度 | MATLAB 一阶散射 ✅；**勿与** `EletricType` 混淆 |

**`geometrical_order` vs `variational_order`（本算例均为 1）**

| 字段 | 控制对象 | `=1` 时 | `=2` 时 |
|------|----------|---------|---------|
| `geometrical_order` | 单元**几何映射** | 4 顶点定四面体 | 10 几何节点，可曲边/曲面 |
| `variational_order` | 单元内 **E** 的插值阶次 | 6 DOF/四面体 | 约 20 DOF/四面体（二阶 Nedelec） |

---

### 3.3 几何与网格 `Geometry & Mesh properties`（第 20–29 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 20–22 | 章节标题 | — | — |
| 24 | `-- HOFEM geometry units` | 注释 | — |
| **25** | `geometry_units = "mm"` | 网格文件 `scat3D.em.mesh` 中顶点坐标 `(x,y,z)` 的单位为 **毫米** | JSON/MATLAB 用 **米**（`SBCmesh.dat` 约 ±0.5）；物理尺寸相同（±500 mm = ±0.5 m）⚠️ |
| 26 | `-- Mesh format file` | 注释 | — |
| **27** | `mesh_format = "ASCII"` | 网格为 **文本格式**（非二进制） | — |
| 28 | `-- Mesh filename` | 注释 | — |
| **29** | `mesh_filename = "scat3D.em.mesh"` | 网格文件名；须与 `.em` **同目录** | JSON `"MeshFile": "SBCmesh.dat"` ❌ 不同文件 |

**网格规模对照（两文件物理尺度同为 ~1 m 立方体，但拓扑不同）**

| 对比项 | `scat3D.em.mesh` | `SBCmesh.dat` |
|--------|------------------|---------------|
| 顶点数 | 14774 | 6595 |
| 四面体数 | 9559 | 35832 |
| 坐标量级 | 约 ±500 **mm** | 约 ±0.5 **m** |

---

### 3.4 稀疏求解器 `Sparse solver properties`（第 31–56 行）

本节 **仅 HOFEM 线性求解器** 使用；组装出稀疏方程组 \(A\mathbf{x}=\mathbf{b}\) 后如何求解。`sbc3d.json` 无对应项（OpticsFEM 走 `complexsolver`）。

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 31–33 | 章节标题 | — | — |
| 35 | `-- Number of post process` | 注释 | — |
| **36** | `num_post_processes = 2` | 后处理（场输出、远场等）并行 **进程数 = 2** | — |
| 37 | `-- Number of process` | 注释 | — |
| **38** | `num_processes = 2` | 主求解流水线 **MPI 进程数 = 2** | — |
| 39 | `-- Solver type (in-core/out-of-core)` | 注释 | — |
| **40** | `solver_type = "in-core"` | **全内存** 求解（矩阵与分解放 RAM）；另一选值为 `"out-of-core"`（溢出用磁盘） | — |
| 41 | `-- Number of Solver thread` | 注释 | — |
| **42** | `solver_threads = 2` | 每个进程内求解器 **OpenMP 线程数 = 2** | — |
| 43–44 | `--Increment of memory...` / `solver_ooc_mb_memory = 800` | **外存模式**下每次向内存加载的块大小 **800 MB**；当前 in-core，基本不生效 | — |
| 45–46 | 注释 / `solver_percentage_memory = 80` | 求解器最多占用可用内存的 **80%** | — |
| 47–48 | 注释 / `solver_rhs_block_size = 5` | 组装右端项 RHS 时的 **分块大小 = 5**（性能参数） | — |
| 49–50 | 注释 / `solver_technique = direct` | **直接法**（稀疏 LU 类）；另一选值为 `iterative` | MATLAB `\` 亦为直接法思路 |
| 51–52 | 注释 / `solver_precision = "double"` | **双精度**浮点；可选 `"mixed"` | — |
| 53–54 | 注释 / `solver_BLR_compresion = false` | 关闭 **BLR 块低秩压缩**（省内存但近似；键名拼写为 compresion） | — |
| 55–56 | 注释 / `solver_BLR_approximations = 5.0E-03` | BLR 开启时的近似容差 **5×10⁻³**；当前未开启，无效 | — |

---

### 3.5 频率 `Frequency properties`（第 58–71 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 58–60 | 章节标题 | — | — |
| 62 | `-- The number of frequency distributions` | 注释 | — |
| **63** | `Freq_distribution_num = 1` | 定义 **1 组** 频点分布（可有多组扫描，本算例只有 1 组） | — |
| 64 | `The type of each frequency distribution(...)` | **说明性文字**（非赋值）；列出类型 1–4 的含义，见下行 | — |
| **65** | `Freq_distribution_type = { 4 }` | 第 1 组分布类型 **4 = SinglePoint（单频点）**。<br>常见编码：`1` Linear Step，`2` Linear Count，`3` Log Scale，`4` SinglePoint | — |
| 66 | `-- The frequency distribution information` | 注释 | — |
| **67** | `Freq_distribution_info = { 3.75E+02, 3.75E+02, 1.0 }` | 单频时三元组 `{f_start, f_end, step}`：**375 MHz, 375 MHz, 步长 1** → 只算一个频点<br>频率单位：**MHz** | JSON `"lambda": 0.8`（**米**）✅ 等价：<br>`f = c/λ ≈ 299792458/0.8 ≈ 3.75×10⁸ Hz = 375 MHz`<br>MATLAB `phy.lda0 = 0.8` ✅ |
| 68 | `-- Save fields for all frequency` | 注释 | — |
| **69** | `Freq_distribution_savefield = 1` | **保存**每个频点的场解（`1` 开，`0` 关） | — |
| 70 | `-- Could exist repeat adaptive frequency` | 注释 | — |
| **71** | `Freq_probably_adapt_repeat = 0` | 自适应频点扫描时是否允许 **重复频点**；`0` = 否 | — |

---

### 3.6 材料 `Material properties`（第 73–158 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 73–75 | 章节标题 | — | — |
| 77 | `-- Number of materials` | 注释 | — |
| **78** | `num_materials = 3` | 材料库共 **3 种**（Vacuum、PEC、Material1） | JSON `NbrDomain: 2`（仅 2 个体域）⚠️ PEC 为边界材料 |

#### 材料字段模板（每种材料重复一组）

以下字段对 **材料 1 / 2 / 3** 各出现一次，后缀 `_1`、`_2`、`_3`：

| 字段模式 | 含义 | 本算例是否用到 |
|----------|------|----------------|
| `material_name_i` | 材料名称（字符串标识） | ✅ |
| `definition_type_i` | `"Isotropic"` = **各向同性** | ✅ |
| `dispersive_mark_i` | `"Non-dispersive"` = **非色散**（ε、μ 不随频率变） | ✅ |
| `permittivity_i` | 相对介电常数 **εr**（实部） | ✅ |
| `electric_loss_type_i` | 电损耗模型：`"Tan"` = 用损耗角正切；`"Sigma"` = 用电导率 σ | 1、3 为 Tan；2(PEC) 为 Sigma |
| `dielectric_loss_tangent_i` | 介电损耗角正切 **tan δ**（`electric_loss_type=Tan` 时） | 均为 0（无损） |
| `electric_conductivity_i` | 电导率 **σ**（`electric_loss_type=Sigma` 时） | 仅材料 2：`1e30` → 理想导体 |
| `permeability_i` | 相对磁导率 **μr** | ✅ |
| `magnetic_loss_type_i` | 磁损耗模型（`Tan`） | ✅ |
| `magnetic_loss_tangent_i` | 磁损耗角正切 | 均为 0 |
| `mass_density_i` | 质量密度（热/力学耦合用） | 0，电磁散射不用 |
| `heat_coefficient_i` | 比热 | 0，不用 |
| `thermal_conductivity_i` | 热导率 | 0，不用 |
| `initial_temperature_i` | 初始温度 **25**（°C 量纲，热分析用） | 电磁散射不用 |

#### 材料 1：Vacuum（第 79–104 行）

| 行号 | 关键赋值 | 值 | JSON / MATLAB |
|------|----------|-----|---------------|
| 80 | `material_name_1` | Vacuum | 域 0：εr=1 |
| 86 | `permittivity_1` | 1.0 | `epsilonrR[0]=1.0` ✅ `phy.eps(1)=1` |
| 92 | `permeability_1` | 1.0 | `murR[0]=1.0` ✅ `phy.mur(1)=1` |

#### 材料 2：PEC（第 106–131 行）

| 行号 | 关键赋值 | 值 | JSON / MATLAB |
|------|----------|-----|---------------|
| 107 | `material_name_2` | PEC | JSON **无**单独 PEC 材料条目 |
| 115 | `electric_loss_type_2` | `"Sigma"` | 用 σ 描述导体 |
| 117 | `electric_conductivity_2` | `1.0E+30` | 极大 σ → **理想电导体**；供 `bound_type=PEC` 引用 |
| 113 | `permittivity_2` | 1.0 | 被 σ 主导，体域不用 |

#### 材料 3：Material1（第 133–158 行）

| 行号 | 关键赋值 | 值 | JSON / MATLAB |
|------|----------|-----|---------------|
| 134 | `material_name_3` | Material1 | 域 1：散射体介质 |
| 140 | `permittivity_3` | **1.5** | `epsilonrR[1]=1.5` ✅ `phy.eps(2)=1.5` |
| 146 | `permeability_3` | 1.0 | `murR[1]=1.0` ✅ `phy.mur(2)=1` |

> 体域 εr、μr 与 MATLAB/JSON **一致**；`.em` 多出的 PEC 条目服务于边界 mark 1，不是第三个体域。

---

### 3.7 磁偏置 `Magnetic bias sources`（第 160–162 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 160–162 | 章节标题，**无赋值行** | 铁磁/偏置磁场（永磁体、外加 H 等）配置位；本算例 **未启用** | — |

---

### 3.8 吸收层 UPML（第 164–169 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 164–166 | 章节标题 | — | — |
| 168 | `--UPML active` | 注释 | — |
| **169** | `UPML_active = 0` | **不启用** 各向异性完美匹配层（UPML）；`1` 为启用 | MATLAB/JSON 用 **SBC 面** 截断，不用 PML |

---

### 3.9 积分方程加速 IIEE（第 170–183 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 170–172 | 章节标题 | — | — |
| 174 | `-- IIEE activation flag` | 注释 | — |
| **175** | `iiee_truncation_method = false` | 关闭 **IIEE**（积分方程边界面截断/加速，大电尺寸问题用） | — |
| 176–177 | 注释 / `iiee_truncation_aceleration = "none"` | 迭代加速方式：**无**（键名拼写 aceleration） | — |
| 178–179 | 注释 / `iiee_truncation_iterations = 10` | IIEE 开启时最大迭代 **10** 次；当前无效 | — |
| 180–181 | 注释 / `iiee_truncation_error = 1e-4` | IIEE 迭代收敛阈值 **10⁻⁴**；当前无效 | — |
| 182–183 | 注释 / `external_domain_material = 1` | 外部无限域材料编号 → **材料 1（Vacuum）** | 与自由空间背景一致 ✅ |

---

### 3.10 周期边界 `Periodic Boundary conditions`（第 185–187 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 185–187 | 章节标题，**无赋值行** | Floquet/周期结构用；本算例 **未配置** | — |

---

### 3.11 边界条件 `Boundary conditions`（第 189–214 行）

网格三角面上带有 **mark 编号**（在 `.mesh` 中）；此处定义「mark → 边界类型」映射。

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 189–191 | 章节标题 | — | — |
| 193 | `-- Total number of boundary conditions` | 注释 | — |
| **194** | `num_boundary_conditions = 4` | 下面列出 **4 条** mark→类型 规则 | JSON 对 **6 个外表面** 配 SBC（见 `sbc.Index`）❌ |
| 196–199 | `bound_mark_1 = 0` / `bound_type_1 = "NULL"` | 网格 mark **0** → **无边界条件**（内部面或未使用面） | — |
| 201–204 | `bound_mark_2 = 1` / `bound_type_2 = "PEC"` | mark **1** → **理想电导体**（切向 E = 0） | MATLAB 外表面 **无 PEC** ❌ |
| 206–209 | `bound_mark_3 = 2` / `bound_type_3 = "PMC"` | mark **2** → **理想磁导体**（切向 H = 0） | MATLAB 外表面 **无 PMC** ❌ |
| 211–214 | `bound_mark_4 = 3` / `bound_type_4 = "ABC"` | mark **3** → **吸收边界 ABC**（一阶吸收或等价 SBC） | JSON 6 面均为 SBC（`BoundaryFlag=2`）；此处 **仅 1 个面** mark 3 ❌ |

**与 MATLAB / JSON 对照**

| 面 mark | MATLAB `phy.out` / `phy.inc` | JSON `sbc.Index` + `SBCType` | `scat3D.em` |
|---------|------------------------------|------------------------------|-------------|
| 1 | 出射 SBC | Index✅, Type=0 出射 | 未单独列出（无 ABC 规则） |
| 2 | 出射 SBC | 同上 | 未列出 |
| 3 | 出射 SBC | 同上 | **ABC**（唯一吸收面） |
| 4 | **入射** SBC | Type=**1** 入射 | 未列出；激励却挂在 mark 3 ❌ |
| 5 | 出射 SBC | Type=0 | 未列出 |
| 14 | 出射 SBC | Type=0 | 未列出 |
| 1 | — | — | 被标为 **PEC**（与 MATLAB 不符） |
| 2 | — | — | 被标为 **PMC**（与 MATLAB 不符） |

> `bound_mark_i` 是 **网格面上的整数标记**，与材料编号、激励编号不是同一套「序号表」，但数字可能巧合相同（如都有 mark 3）。

---

### 3.12 电磁激励 `Electromagnetic excitations`（第 216–252 行）

#### 3.12.1 激励数量总览（第 220–233 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 216–218 | 章节标题 | — | — |
| 220 | `-- Transfinite element method` | 注释 | — |
| **221** | `is_TFEM_method = false` | 不用 **TFEM**（超限插值单元）激励路径 | — |
| 222–223 | 注释 / `composite_excitation = false` | 不用 **组合激励**（多种源叠加为一条配置） | — |
| 224–225 | 注释 / `num_interior_excitations = { 0,0,0,0,0,0 }` | **体内激励** 6 类数量全 0：<br>Ovol, Lvol, VS, CS, Osur, Ofil | — |
| 226–227 | 注释 / `num_exterior_excitations = { 1,0,0,0,0,0,0 }` | **体外激励** 7 类：`{Pwaves_single, Pwaves_Multi, HDwave_E, HDwave_H, Lwave, Cwave, GBwave}`<br>→ **1 个单平面波**，其余为 0 | JSON/MATLAB 平面波入射 ✅（面 mark 不同） |
| 228–229 | 注释 / `num_waveport_excitations = { 0,0,0,0,0 }` | **波端口** 5 类（矩形、同轴、广义、集总、Floquet）全 0 | — |
| 230–231 | 注释 / `num_equivalent_excitations = { 0,0 }` | **等效源**（近场、远场）全 0 | — |
| 232–233 | 注释 / `num_terminal_ports = { 0,0 }` | **终端端口** 全 0 | — |

#### 3.12.2 第 1 个平面波 `exterior_*_1`（第 235–252 行）

| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 235 | `-- Excitation Serial Marker` | 注释 | — |
| **236** | `exterior_serial_marker_1 = 1` | 该平面波在 HOFEM 内部的 **激励序号 = 1**（与 mark 无关） | — |
| 237 | `-- Exterior boundary condition marker` | 注释 | — |
| **238** | `exterior_cond_marker_1 = 3` | 平面波施加在边界 mark **3**（须与 `bound_type=ABC` 的面一致） | MATLAB 入射面 **`phy.inc = 4`** ❌ |
| 239 | `-- Exterior material marker` | 注释 | — |
| **240** | `exterior_material_1 = 1` | 入射侧外部介质 → **材料 1（Vacuum）** | 背景 εr=1 ✅ |
| 241 | `-- Exterior planewave type` | 注释 | — |
| **242** | `exterior_type_1 = "Single"` | **单一** 入射方向平面波（非多角度扫描 `Multiple`） | — |
| 243 | `-- Incidence angle THETA,PHI of planewave` | 注释：球坐标入射角 **θ, φ**（单位：度） | — |
| **244** | `exterior_angles_1 = { 0.0, 0.0 }` | **θ = 0°, φ = 0°** → 沿 +z 轴入射（HOFEM 默认球坐标系） | JSON `kx,ky,kz` 全 0；需结合 HOFEM 角度定义核对极化 |
| 245 | `-- Polarization angle of planewave` | 注释 | — |
| **246** | `exterior_polar_angle_1 = 0.0` | 极化角 **0°** | — |
| 247 | `-- Polarization` | 注释 | — |
| **248** | `exterior_polarType_1 = 0` | 极化类型枚举 **0**（HOFEM 内部：TE/TM 或线极化分类） | — |
| 249 | `-- Magnitude of planewave` | 注释 | — |
| **250** | `exterior_magnitude_1 = 1.0` | 平面波 **幅度 = 1**（归一化） | `phy.Einc` 模长为 1；JSON `E0x="1"` ✅ |
| 251 | `-- Phase of planewave` | 注释 | — |
| **252** | `exterior_phase_1 = 0.0` | 初相 **0°** | — |

**极化与 MATLAB `phy.Einc = [1;0;0]` 的对应关系**

| 项目 | MATLAB / JSON | `scat3D.em` |
|------|---------------|-------------|
| 幅度 | 1 | `exterior_magnitude_1 = 1` ✅ |
| 电场方向 | x 向 `[1,0,0]` | 由 `angles` + `polar_angle` + `polarType` 共同决定；θ=φ=0 时通常对应 **+z 入射、线极化**，是否与 **x 向 E** 完全一致需在 LASPCEM 文档中核对 ⚠️ |
| 入射面 | mark **4** | mark **3** ❌ |

---

### 3.13 全文件行号索引（速查）

| 行范围 | 章节 | 是否影响本算例物理 |
|--------|------|-------------------|
| 1–4 | 文件头 | 否 |
| 5–18 | 物理与离散 | **是** ✅ 与 MATLAB 一阶一致 |
| 20–29 | 几何与网格 | **是** ⚠️ 单位 mm、网格文件不同 |
| 31–56 | 求解器 | 否（仅性能） |
| 58–71 | 频率 | **是** ✅ 375 MHz ↔ λ=0.8 m |
| 73–158 | 材料 | **是** ✅ 体域 εr；多 PEC 条目 |
| 160–162 | 磁偏置 | 否（空） |
| 164–169 | UPML | 否（关闭） |
| 170–183 | IIEE | 否（关闭） |
| 185–187 | 周期边界 | 否（空） |
| 189–214 | 边界条件 | **是** ❌ 与 MATLAB SBC 不符 |
| 216–252 | 激励 | **是** ❌ 入射面 mark 不符 |

---

## 4. 与 `sbc3d.json` 字段对照总表

| 项目 | `sbc3d.json` / MATLAB | `scat3D.em` | 一致？ |
|------|----------------------|-------------|--------|
| 波长 | `lambda = 0.8 m` | `375 MHz` | ✅ 等价 |
| 材料 ε | `[1, 1.5]` | Vacuum=1, Material1=1.5 | ✅ |
| 材料 μ | `[1, 1]` | 均为 1 | ✅ |
| 单元阶次 | 一阶 Nedelec | `variational_order = 1` | ✅ |
| 几何阶次 | 直四面体 | `geometrical_order = 1` | ✅ |
| 矢量未知量 | 完整 E | `electric_field` + `EletricType:2` | ✅ |
| 几何单位 | m | mm（数值 ×1000） | ⚠️ 需换算 |
| 网格 | `SBCmesh.dat` | `scat3D.em.mesh` | ❌ |
| 边界 | 6 面 SBC，mark 1–5,14 | mark 1 PEC, 2 PMC, 3 ABC | ❌ |
| 入射面 | mark 4 | mark 3 | ❌ |
| 问题类型 | `FemType: 4` | HOFEM 自有路由 | — |
| 输出目录 | `OutFile` | HOFEM 后处理 | — |

---

## 5. 同目录下两个 `.em` 的区别

| 文件 | `variational_order` | `geometrical_order` | 说明 |
|------|---------------------|---------------------|------|
| `scat3D/scat3D.em` | 1 | 1 | 工程编辑用，与一阶散射一致 |
| `scat3D/1_Result/Design.em` | **2** | **2** | HOFEM 求解后/自适应副本，**二阶** |

若在 IDE 里打开的是 `1_Result/Design.em`，会看到二阶设置，与 `scat3D.em` 及 MATLAB 一阶算例**不对应**。对比 JSON 时请以 **`scat3D.em`（一阶）** 为准，或先把 `Design.em` 改回一阶并配一阶网格。

---

## 6. 若要让 `.em` 与 `sbc3d.json` / MATLAB 对齐

建议按下列顺序在 LASPCEM 中修改 `scat3D.em`：

1. **网格**：导入或与 `SBCmesh.dat` 同源的一阶网格；单位统一为 m 或 mm（全文一致）。
2. **边界**：为 mark `1,2,3,4,5,14` 配置 ABC（或 HOFEM 等价 SBC），不要用当前仅 mark 3 的单一 ABC。
3. **入射**：平面波激励挂在 mark **4**（`phy.inc`），出射面 `1,2,3,5,14` 用出射 SBC。
4. **阶次**：保持 `geometrical_order = 1`，`variational_order = 1`。
5. **频率**：保持 `375 MHz` 或等价 `lambda = 0.8 m`。
6. **材料**：两体域 ε=1 与 ε=1.5；PEC 仅在有金属面时使用。

也可参考仓库中已写好的转换脚本思路：`FEM3D001-scat/tools/convert_sbc_to_laspcem.py`（从 `SBCmesh.dat` 生成一阶 `Design.em` + `Design.em.mesh`）。

---

## 7. 参考：MATLAB 核心物理参数

```matlab
phy.eps = [1 1.5];
phy.mur = [1 1];
phy.lda0 = 0.8;          % 波长 [m]
phy.out = [1 2 3 5 14];  % 出射 SBC 面 mark
phy.inc = [4];           % 入射面 mark
phy.Einc = [1;0;0];
```

---

## 8. 参考：`sbc3d.json` 全文

```json
{
  "FemType": 4,
  "EletricType": 2,
  "lambda": 0.8,
  "NbrBoundary": 14,
  "BoundaryFlag": [0,2,2,2,2,2,0,0,0,0,0,0,0,2],
  "sbc": {
    "Index": [1, 2, 3, 4, 5, 14],
    "SBCType": [0, 0, 0, 1, 0, 0],
    "E0x": ["1", "1", "1", "1", "1", "1"],
    "E0y": ["0", "0", "0", "0", "0", "0"],
    "E0z": ["0", "0", "0", "0", "0", "0"],
    "kx": [0, 0, 0, 0, 0, 0],
    "ky": [0, 0, 0, 0, 0, 0],
    "kz": [0, 0, 0, 0, 0, 0]
  },
  "NbrDomain": 2,
  "domainType": [2, 2],
  "domainIndex": [0, 1],
  "matType": [0, 0],
  "epsilonrR": [1.0, 1.5],
  "epsilonrI": [0.0, 0.0],
  "murR": [1.0, 1.0],
  "murI": [0.0, 0.0],
  "MeshFile": "SBCmesh.dat",
  "OutFile": "./OutFile"
}
```

---

*本文档由对话整理生成，基于仓库内实际文件内容。若你修改了 `scat3D.em` 或 `sbc3d.json`，请重新核对边界与网格节。*
