# 轴向磁拉力仿真 GUI 工具

基于 PyQt5 的桌面工具，调整参数后一键运行 Motor-CAD 轴向磁拉力仿真，无需 AI token。

## 快速开始（直接用 exe）

1. 确保本机已安装 **Motor-CAD 2026R1** 且许可证可用
2. 双击 `dist/AxialForceGUI.exe`
3. 确认模型文件路径（默认指向仓库内 MARS 模型）
4. 调整工况参数（RMS 电流 / 转速 / 气隙 / 磁钢温度）
5. 点击「运行单点仿真」或切换到「气隙扫描」标签页
6. 等待 ~2 分钟，结果显示在右下方面板，可导出 JSON/CSV

## 两种运行模式

| 模式 | 说明 |
|---|---|
| 单点仿真 | 当前参数跑一次求解，输出空载+负载净轴向力、纹波、三判据 |
| 气隙扫描 | 设置起始/结束气隙和步长，依次求解，输出力-气隙曲线 + 磁负刚度 |

> 气隙扫描点数超过 10 个时会弹窗确认（每点约 2~3 分钟）。

## 可调参数

| 参数 | 默认值 | 对应 .mot 变量 |
|---|---|---|
| RMS 电流 | 21 A | `RMSCurrent`（RMS 口径，勿用 PeakCurrent） |
| 转速 | 5000 rpm | `ShaftSpeed` |
| 气隙 | 1.0 mm | `Airgap` |
| 磁钢温度 | 100 °C | `Magnet_Temperature`（热态；冷态对标用 20°C） |

## 开发模式运行

```bash
pip install -r requirements.txt
python main.py
```

## 重新打包 exe

> **为什么仓库里没有 exe？**
> `dist/AxialForceGUI.exe`（约 40MB）是 PyInstaller 打包的二进制生成物，按项目
> 纪律"生成物不入库"不纳入 git 版本管理。原因：① 二进制文件不适合 git 差异管理，
> 每次重新打包都会产生 40MB 的全新 blob，仓库体积会快速膨胀；② exe 与本机 Python
> 环境/PyQt 版本绑定，源码 + `build.bat` 才是可复现的交付物；③ 同事拿到源码后
> 运行 `build.bat` 即可在自己机器上一键打包（约 1 分钟），或直接向维护者拷贝 exe。

```bash
build.bat
```

或手动执行：

```bash
pyinstaller --onefile --windowed --name AxialForceGUI ^
  --hidden-import solver --collect-submodules ansys main.py
```

生成的 `dist/AxialForceGUI.exe` 可独立运行（约 40MB）。

## 三判据（结果可信的依据）

1. **作用-反作用**：定/转子合力反号，偏差 < 5%
2. **转矩交叉**：Σ(Ft×r) 与转矩图偏差 < 10%
3. **解析量级**：B²A/2μ₀ 与 FEA 同量级（解析偏高 ~1.4× 属正常）

## 注意事项

- 仅支持 AFM（轴向磁通）模型；径向机的 Fr 不是轴向力
- 仿真运行时 Motor-CAD 会前台弹出，求解期间请勿关闭
- 若 Motor-CAD 窗口不可见（任务栏有图标点不开），工具已内置 `set_visible(True)` 自动修复
- 结果文件默认输出到仓库 `output_motorcad/`（不入库）
