XIAN-FEM-2026June/3D opticsfem-master/compare
hpnickk-ai 1abbb6bf71 Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
..
data Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
README.md Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
SBC.mph Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
build_z_slice.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
compare_normE_zslice.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
export_comsol_slice.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
interp_slice_to_grid.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
load_SBCmesh_dat.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
load_comsol_slice.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
load_opticsfem_normE.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
plot_compare_heatmaps.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
run_export_comsol.m Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00

README.md

normE 切面对比COMSOL vs OpticsFEM

z = 0.5 m 平面上对比 COMSOL 与 C++ OpticsFEM 的 |E| 热图。

目录

文件 说明
compare_normE_zslice.m 主脚本,一键出对比图
export_comsol_slice.m SBC.mph 导出 COMSOL 切面数据(需 LiveLink
load_SBCmesh_dat.m SBCmesh.dat
load_opticsfem_normE.m OutFile/normE
build_z_slice.m 四面体网格 z 平面切割
load_comsol_slice.m 读 COMSOL 导出 txt
plot_compare_heatmaps.m 三联热图COMSOL / OpticsFEM / 差值
data/comsol_z050.txt COMSOL 导出数据(需自行生成)
data/compare_normE_z050.png 输出对比图

使用步骤

1. 运行 C++ 求解

cd "3D opticsfem-master\build\Release"
.\OpticsFEM.exe

确认生成 OutFile/normE

2. 导出 COMSOL 切面

方式 AMATLAB LiveLink

cd('3D opticsfem-master/compare')
run_export_comsol    % 打开此脚本,点 F5 运行(不要无参调用 export_comsol_slice

前提:本机有 COMSOL LiveLinkMATLAB 里能执行 mphload),且有 SBC.mph 文件(项目里目前只有 .lock,需从 COMSOL 另存 .mph)。

方式 BCOMSOL GUI 手动导出

  1. Results → Cut Plane → z = 0.5 m
  2. 表达式:sqrt(realdot(ewfd.Ex,ewfd.Ex)+realdot(ewfd.Ey,ewfd.Ey)+realdot(ewfd.Ez,ewfd.Ez))
  3. Export → Data保存为 compare/data/comsol_z050.txt
  4. 格式:每行 x y z normE(单位 m, m, m, V/m

3. 运行对比

cd('3D opticsfem-master/compare')
compare_normE_zslice

输出:

  • 图形窗口COMSOL | OpticsFEM | 差值
  • data/compare_normE_z050.png
  • 命令行打印 max|diff| 与相对 L2 误差

修改切面位置

编辑 compare_normE_zslice.mcfg.zCut(默认 0.5)。