LumericalFDTD-simulation · git:20260617.2161c01 · 2026-06-17 · sha256 57c3d31882cf74be

LumericalFDTD-simulation git:20260617.2161c01A

Immutable. This exact content never changes and is served at /api/v1/blob/57c3d31882cf74be.

---
name: LumericalFDTD-simulation
description: |
  执行 Ansys Lumerical FDTD 仿真脚本、自动迭代 debug、提取结果数据。当你需要运行FDTD仿真、调试仿真错误、提取.npz结果时使用此skill。
  Execute Ansys Lumerical FDTD simulation scripts with automated debug loops and result extraction. Use when running FDTD simulations, debugging errors, or extracting .npz results.
---

# FDTD 仿真执行器

## 职责范围

本 skill **仅负责**仿真执行阶段:环境探测、运行仿真、错误修复、结果提取。输出 `.fsp` 和 `.npz` 文件。

**不负责**:结构建模(→ `LumericalFDTD-modeling`)、数据分析与绘图(→ `LumericalFDTD-analysis`)、端到端全流程(→ `LumericalFDTD`)。

## 前置条件

仿真脚本 `*_sim.py`(或 `*_model.py` 加上 `fdtd.run()` 和 `fdtd.save()` 调用)必须已存在。若不存在,先使用建模 skill。

## 环境探测(本会话首次执行)

### 1. 探测操作系统

- **Windows**: `python.exe`,路径含盘符,反斜杠分隔
- **Linux**: `python` 或 `python3`,正斜杠分隔

### 2. 定位 Lumerical Python 解释器

按以下优先级尝试:

**Windows 常见路径:**
```
C:\Apps\ANSYS Inc\v252\Lumerical\python\python.exe
C:\Program Files\ANSYS Inc\v252\Lumerical\python\python.exe
C:\Program Files\Lumerical\v252\python\python.exe
```

**Linux 常见路径:**
```
/opt/ansys_inc/v252/Lumerical/python/python
/opt/lumerical/v252/python/python
/usr/local/lumerical/v252/python/python
```

若所有默认路径都不存在,**向用户询问**实际安装路径和版本号。

### 3. 调用方式

**PowerShell**(路径含空格时用 `&` 操作符):
```powershell
& '{PYTHON_PATH}' 'script.py'
```

**Bash / Git Bash**(`&` 不支持,直接调用):
```bash
'path/to/python.exe' 'script.py'
```

## 仿真执行

### 执行步骤

```
# 步骤 1:运行仿真脚本(耗时最长)
bash: & 'PYTHON_PATH' 'path/to/project_sim.py'

# 步骤 2:确认输出
bash: ls path/to/project/data/
# 预期:results.npz 等文件

# 步骤 3:检查日志
bash: cat path/to/project/fsp/*_p0.log
# 确认无致命错误
```

### 超时设置

| 仿真规模 | timeout |
|---------|---------|
| 简单 2D | 300,000ms (5 分钟) |
| 中等 3D | 1,200,000ms (20 分钟) |
| 大型参数扫描 | 6,000,000ms (100 分钟) |

## 错误处理循环(最多 5 次重试)

```
重试次数 = 0
while 仿真未成功 and 重试次数 < 5:
    运行 sim.py
    if 报错:
        读取 ../LumericalFDTD/references/common-errors.md
        根据错误类型定位解决方案
        修复脚本
        重试次数 += 1
    else:
        检查 .npz 存在 → 继续
        检查 .fsp 存在 → 继续

if 重试次数 >= 5:
    向用户报告:自动修复已达上限,需人工介入
    列出所有尝试过的修复及对应错误信息
```

> **绝对禁止**:创建完 `.py` 文件后直接告诉用户"脚本已创建,请自行运行"。必须亲自执行。

## 结果提取

仿真成功后提取关键数据:

```python
# 在 with 块内提取
E = fdtd.getresult("monitor_name", "E")       # 电场
Ex = fdtd.getresult("monitor_name", "Ex")     # x 分量
T = fdtd.getresult("monitor_name", "T")       # 透射率

# 保存为 .npz
np.savez(os.path.join(data_dir, "results.npz"),
         E=E, Ex=Ex, T=T,
         x=x, y=y, z=z,
         wavelengths=wavelengths,
         metadata={...})
```

**关键注意事项**:
- `getresult` 返回大数据时先存到本地变量,避免重复获取
- Quasi-2D 数据形状:`I = [nx, ny, 1, nfreq]`,沿 y 求和得 1D profile
- 宽带波长:`wavelengths[0]` = 最长波,`[-1]` = 最短波
- 切片结果用 `.copy()` 避免污染原始数据

## 完成定义

- [ ] `.fsp` 文件已生成于 `fsp/` 目录
- [ ] `.npz` 数据文件已生成于 `data/` 目录
- [ ] 仿真日志无致命错误
- [ ] (可选)生成 `_sim.py` 完整脚本(含 run 和数据保存)

## 参考文档

| 参考文件 | 何时读取 |
|---------|---------|
| `../LumericalFDTD/references/common-errors.md` | 运行报错排查时 |
| `../LumericalFDTD/references/api-reference.md` | 需要会话管理、数据传递、远程 API 等高级功能时 |