24 KiB
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 MHzMATLAB 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:
- 网格:导入或与
SBCmesh.dat同源的一阶网格;单位统一为 m 或 mm(全文一致)。 - 边界:为 mark
1,2,3,4,5,14配置 ABC(或 HOFEM 等价 SBC),不要用当前仅 mark 3 的单一 ABC。 - 入射:平面波激励挂在 mark 4(
phy.inc),出射面1,2,3,5,14用出射 SBC。 - 阶次:保持
geometrical_order = 1,variational_order = 1。 - 频率:保持
375 MHz或等价lambda = 0.8 m。 - 材料:两体域 ε=1 与 ε=1.5;PEC 仅在有金属面时使用。
也可参考仓库中已写好的转换脚本思路:FEM3D001-scat/tools/convert_sbc_to_laspcem.py(从 SBCmesh.dat 生成一阶 Design.em + Design.em.mesh)。
7. 参考: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 全文
{
"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,请重新核对边界与网格节。