# OpticsFEM3D

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

## 支持的问题类型

| FemType | 说明 | 网格 | 状态 |
|---------|------|------|------|
| 0–3 | 二维问题（本征/散射） | `Mesh_2D` | 遗留接口，与 2D 版相同 |
| **4** | **三维一阶散射（SBC）** | **`Mesh_3D`** | **当前主算例** |

## 快速开始（FemType = 4）

### 环境

- Windows 10/11 x64
- Visual Studio 2026（18），工作负载：使用 C++ 的桌面开发
- CMake ≥ 3.8（随 VS 安装）

### 编译

```powershell
cd "3D opticsfem-master"

# 若 cmake 不在 PATH 中，追加 VS 2026 自带 CMake
$env:Path += ";C:\Program Files\Microsoft Visual Studio\18\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin"

mkdir build
cd build
cmake .. -G "Visual Studio 18 2026" -A x64
cmake --build . --config Release
```

产物：

- `build/Release/OpticsFEM.exe`
- `build/Release/complex/complexsolver.exe`（CMake 自动编译）

### 运行 sbc3d 算例

```powershell
# 复制输入文件到 exe 同目录
Copy-Item ..\sbc3d.json, ..\SBCmesh.dat -Destination Release\

cd Release
.\OpticsFEM.exe
```

结果输出到 `Release/OutFile/`：`Ex`、`Ey`、`Ez`、`normE`。

### 输入文件

| 文件 | 说明 |
|------|------|
| `sbc3d.json` | 算例配置，`FemType` 必须为 **4** |
| `SBCmesh.dat` | 三维四面体网格（顶点、四面体、边、三角边界等） |

## 详细文档

- [OpticsFEM_完整使用说明与代码介绍.md](./OpticsFEM_完整使用说明与代码介绍.md) — 模块说明、JSON 字段、FemType=4 专章
- [compare/README.md](./compare/README.md) — 与 COMSOL 的 normE 切面对比

## 仓库说明

- 只需上传**源码**；`build/` 由 CMake 本地生成，不必提交。
- 散射算例（FemType=4）的 `complexsolver.exe` 可由 CMake 从 `complex/complexsolver.cpp` 编译，无需单独 PETSc 版求解器。
