XIAN-FEM-2026June/3D opticsfem-master
hpnickk-ai db3ea489fe Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows.
Support OpticsFEM_3D_EigenFreq assembly with A/B matrix export, add eigen3d.json, and document scat3D/eigen3D build layout alongside FemType=4 scattering.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-09 15:23:53 +08:00
..
Eigen Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
Interface Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
common Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
compare Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
complex Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
function Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
kernel Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
material Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
mesh Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
nlohmann Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
parser Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
phy Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
post Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
solver Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
test Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
tools Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
.gitignore Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
CMakeLists.txt Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
CMakeSettings.json Update 3D docs for FemType=4 and VS 2026 CMake 2026-06-08 17:21:00 +08:00
OpticsFEM_完整使用说明与代码介绍.md Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
README.md Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
SBCmesh.dat Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00
eigen3d.json Add 3D eigen frequency (FemType=5) and update docs for scatter+eigen workflows. 2026-06-09 15:23:53 +08:00
sbc3d.json Add 3D opticsfem-master and opticsfem-master 2026-06-08 16:51:18 +08:00

README.md

OpticsFEM3D

三维矢量有限元光学电磁仿真程序(一阶 Nedelec 边元)。

支持的问题类型

FemType 说明 网格 状态
03 二维问题(本征/散射) Mesh_2D 遗留接口,与 2D 版相同
4 三维一阶散射SBC Mesh_3D 完整:组装 → 求解 → 后处理
5 三维一阶本征频率 Mesh_3D 组装 + A/B 矩阵导出Run/Post 待接)

三维主算例共用网格 SBCmesh.dat,散射与本征分别使用 sbc3d.jsoneigen3d.json

推荐构建目录

为避免散射与本征互相覆盖 exe 和 OutFile建议使用两个独立 CMake 构建目录

目录 用途 配置文件
scat3D/ FemType=4 散射 sbc3d.json
eigen3D/ FemType=5 本征频率 eigen3d.json

旧目录 build/build1/ 为早期本地构建,可保留或删除,不必上传 Git

环境

  • Windows 10/11 x64
  • Visual Studio 202618工作负载使用 C++ 的桌面开发
  • CMake ≥ 3.8(随 VS 安装)

cmake 不在 PATH 中:

$env:Path += ";C:\Program Files\Microsoft Visual Studio\18\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin"

编译

cd "3D opticsfem-master"

# 散射FemType=4
cmake -B scat3D -G "Visual Studio 18 2026" -A x64
cmake --build scat3D --config Release

# 本征频率FemType=5
cmake -B eigen3D -G "Visual Studio 18 2026" -A x64
cmake --build eigen3D --config Release

产物(每个构建目录各一份):

  • scat3D/Release/OpticsFEM.exeeigen3D/Release/OpticsFEM.exe
  • */Release/complex/complexsolver.exeFemType=4 散射求解必需CMake 自动编译)

运行散射算例FemType = 4

  1. 修改 test/Test_Main.cpp,确保读取 sbc3d.json(当前默认),重新编译 scat3D
  2. 部署输入文件:
Copy-Item sbc3d.json, SBCmesh.dat -Destination scat3D\Release\
cd scat3D\Release
.\OpticsFEM.exe
  1. 控制台应打印 OpticsFEM_All returned 4
  2. 结果在 OutFile/ExEyEznormE

运行本征频率算例FemType = 5

  1. 修改 test/Test_Main.cpp 中 JSON 文件名为 eigen3d.json,重新编译 eigen3D
  2. 部署输入文件:
Copy-Item eigen3d.json, SBCmesh.dat -Destination eigen3D\Release\
cd eigen3D\Release
.\OpticsFEM.exe
  1. 控制台应打印 OpticsFEM_All returned 5
  2. 当前输出 OutFile/ 下 A/B 稀疏矩阵 COOAi/Aj/AvBi/Bj/Bv0-based供与 MATLAB eigs(A,B) 对比验证。

说明FemType=5 的 Run()(特征值求解)与 Post()(场重构)尚未接入主流程;矩阵组装与边界处理已完成。

输入文件

文件 FemType 说明
sbc3d.json 4 散射配置,含 sbc 边界块与 lambda
eigen3d.json 5 本征频率配置,含 NbrModesearchValue
SBCmesh.dat 4 / 5 三维四面体网格(顶点、四面体、边、三角边界等)

物理形式简述

问题 方程形式 矩阵
散射 (4) A·x = b(给定 λ/k₀ A = curl-curl k₀²ε + SBCb 来自入射边界
本征 (5) A·x = λ·B·x A = curl-curl刚度B = ε·质量

体积分核函数相同,散射将刚度与质量合并进 A 并加边界激励;本征拆成 A、B 求特征值。

详细文档

仓库说明

  • 仅上传源码与算例 JSONscat3D/eigen3D/build/build1/ 为本地 CMake 产物,不上传。
  • FemType=4 的 complexsolver.exe 由 CMake 从 complex/complexsolver.cpp 编译,无需单独 PETSc 版求解器。