# 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(单频点)**。
常见编码:`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** → 只算一个频点
频率单位:**MHz** | JSON `"lambda": 0.8`(**米**)✅ 等价:
`f = c/λ ≈ 299792458/0.8 ≈ 3.75×10⁸ Hz = 375 MHz`
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:
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}`
→ **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`,请重新核对边界与网格节。*