XIAN-FEM-2026June/三维matlab代码/matlab 3D一阶散射问题/laspcem scat3D/scat3D_em与sbc3d_json对照说明.md

459 lines
24 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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/MATLAB6 个面 SBCmark 15, 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 directJSON 走 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 文件头(第 14 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 13 | `---------------------------------------------------` 等分隔线 | 纯排版,无物理含义 | — |
| 2 | `-- HOFEM --` | 标明本文件供 **LASPCEM-HOFEM** 求解器读取 | — |
| 4 | 空行 | 分隔 | — |
---
### 3.2 物理与离散 `Physic & formulation declaration`(第 518 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 57 | 章节标题注释 | 本节定义 **求什么方程、用什么有限元** | — |
| 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`(第 2029 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 2022 | 章节标题 | — | — |
| 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`(第 3156 行)
本节 **仅 HOFEM 线性求解器** 使用;组装出稀疏方程组 \(A\mathbf{x}=\mathbf{b}\) 后如何求解。`sbc3d.json` 无对应项OpticsFEM 走 `complexsolver`)。
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 3133 | 章节标题 | — | — |
| 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** | — |
| 4344 | `--Increment of memory...` / `solver_ooc_mb_memory = 800` | **外存模式**下每次向内存加载的块大小 **800 MB**;当前 in-core基本不生效 | — |
| 4546 | 注释 / `solver_percentage_memory = 80` | 求解器最多占用可用内存的 **80%** | — |
| 4748 | 注释 / `solver_rhs_block_size = 5` | 组装右端项 RHS 时的 **分块大小 = 5**(性能参数) | — |
| 4950 | 注释 / `solver_technique = direct` | **直接法**(稀疏 LU 类);另一选值为 `iterative` | MATLAB `\` 亦为直接法思路 |
| 5152 | 注释 / `solver_precision = "double"` | **双精度**浮点;可选 `"mixed"` | — |
| 5354 | 注释 / `solver_BLR_compresion = false` | 关闭 **BLR 块低秩压缩**(省内存但近似;键名拼写为 compresion | — |
| 5556 | 注释 / `solver_BLR_approximations = 5.0E-03` | BLR 开启时的近似容差 **5×10⁻³**;当前未开启,无效 | — |
---
### 3.5 频率 `Frequency properties`(第 5871 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 5860 | 章节标题 | — | — |
| 62 | `-- The number of frequency distributions` | 注释 | — |
| **63** | `Freq_distribution_num = 1` | 定义 **1 组** 频点分布(可有多组扫描,本算例只有 1 组) | — |
| 64 | `The type of each frequency distribution(...)` | **说明性文字**(非赋值);列出类型 14 的含义,见下行 | — |
| **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`(第 73158 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 7375 | 章节标题 | — | — |
| 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 为 Tan2(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 量纲,热分析用) | 电磁散射不用 |
#### 材料 1Vacuum第 79104 行)
| 行号 | 关键赋值 | 值 | 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` |
#### 材料 2PEC第 106131 行)
| 行号 | 关键赋值 | 值 | 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 | 被 σ 主导,体域不用 |
#### 材料 3Material1第 133158 行)
| 行号 | 关键赋值 | 值 | 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`(第 160162 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 160162 | 章节标题,**无赋值行** | 铁磁/偏置磁场(永磁体、外加 H 等)配置位;本算例 **未启用** | — |
---
### 3.8 吸收层 UPML第 164169 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 164166 | 章节标题 | — | — |
| 168 | `--UPML active` | 注释 | — |
| **169** | `UPML_active = 0` | **不启用** 各向异性完美匹配层UPML`1` 为启用 | MATLAB/JSON 用 **SBC 面** 截断,不用 PML |
---
### 3.9 积分方程加速 IIEE第 170183 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 170172 | 章节标题 | — | — |
| 174 | `-- IIEE activation flag` | 注释 | — |
| **175** | `iiee_truncation_method = false` | 关闭 **IIEE**(积分方程边界面截断/加速,大电尺寸问题用) | — |
| 176177 | 注释 / `iiee_truncation_aceleration = "none"` | 迭代加速方式:**无**(键名拼写 aceleration | — |
| 178179 | 注释 / `iiee_truncation_iterations = 10` | IIEE 开启时最大迭代 **10** 次;当前无效 | — |
| 180181 | 注释 / `iiee_truncation_error = 1e-4` | IIEE 迭代收敛阈值 **10⁻⁴**;当前无效 | — |
| 182183 | 注释 / `external_domain_material = 1` | 外部无限域材料编号 → **材料 1Vacuum** | 与自由空间背景一致 ✅ |
---
### 3.10 周期边界 `Periodic Boundary conditions`(第 185187 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 185187 | 章节标题,**无赋值行** | Floquet/周期结构用;本算例 **未配置** | — |
---
### 3.11 边界条件 `Boundary conditions`(第 189214 行)
网格三角面上带有 **mark 编号**(在 `.mesh`此处定义「mark → 边界类型」映射。
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 189191 | 章节标题 | — | — |
| 193 | `-- Total number of boundary conditions` | 注释 | — |
| **194** | `num_boundary_conditions = 4` | 下面列出 **4 条** mark→类型 规则 | JSON 对 **6 个外表面** 配 SBC`sbc.Index`)❌ |
| 196199 | `bound_mark_1 = 0` / `bound_type_1 = "NULL"` | 网格 mark **0****无边界条件**(内部面或未使用面) | — |
| 201204 | `bound_mark_2 = 1` / `bound_type_2 = "PEC"` | mark **1****理想电导体**(切向 E = 0 | MATLAB 外表面 **无 PEC** ❌ |
| 206209 | `bound_mark_3 = 2` / `bound_type_3 = "PMC"` | mark **2****理想磁导体**(切向 H = 0 | MATLAB 外表面 **无 PMC** ❌ |
| 211214 | `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`(第 216252 行)
#### 3.12.1 激励数量总览(第 220233 行)
| 行号 | 内容 | 含义 | JSON / MATLAB |
|------|------|------|---------------|
| 216218 | 章节标题 | — | — |
| 220 | `-- Transfinite element method` | 注释 | — |
| **221** | `is_TFEM_method = false` | 不用 **TFEM**(超限插值单元)激励路径 | — |
| 222223 | 注释 / `composite_excitation = false` | 不用 **组合激励**(多种源叠加为一条配置) | — |
| 224225 | 注释 / `num_interior_excitations = { 0,0,0,0,0,0 }` | **体内激励** 6 类数量全 0<br>Ovol, Lvol, VS, CS, Osur, Ofil | — |
| 226227 | 注释 / `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 不同) |
| 228229 | 注释 / `num_waveport_excitations = { 0,0,0,0,0 }` | **波端口** 5 类矩形、同轴、广义、集总、Floquet全 0 | — |
| 230231 | 注释 / `num_equivalent_excitations = { 0,0 }` | **等效源**(近场、远场)全 0 | — |
| 232233 | 注释 / `num_terminal_ports = { 0,0 }` | **终端端口** 全 0 | — |
#### 3.12.2 第 1 个平面波 `exterior_*_1`(第 235252 行)
| 行号 | 内容 | 含义 | 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` | 入射侧外部介质 → **材料 1Vacuum** | 背景 ε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` 模长为 1JSON `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 全文件行号索引(速查)
| 行范围 | 章节 | 是否影响本算例物理 |
|--------|------|-------------------|
| 14 | 文件头 | 否 |
| 518 | 物理与离散 | **是** ✅ 与 MATLAB 一阶一致 |
| 2029 | 几何与网格 | **是** ⚠️ 单位 mm、网格文件不同 |
| 3156 | 求解器 | 否(仅性能) |
| 5871 | 频率 | **是** ✅ 375 MHz ↔ λ=0.8 m |
| 73158 | 材料 | **是** ✅ 体域 εr多 PEC 条目 |
| 160162 | 磁偏置 | 否(空) |
| 164169 | UPML | 否(关闭) |
| 170183 | IIEE | 否(关闭) |
| 185187 | 周期边界 | 否(空) |
| 189214 | 边界条件 | **是** ❌ 与 MATLAB SBC 不符 |
| 216252 | 激励 | **是** ❌ 入射面 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 面 SBCmark 15,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.5PEC 仅在有金属面时使用。
也可参考仓库中已写好的转换脚本思路:`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`,请重新核对边界与网格节。*