让 AI 替你跑 FDTD 仿真:编程 Agent 全自动设计优化实战

引言

FDTD 仿真广泛应用于光子学器件的设计与验证。在传统工作流程中,研究者需在 Lumerical 中手动构建结构、配置光源与监视器、设置网格精度,并在仿真结果不理想时反复调整参数。若涉及参数扫描或设计优化,这一过程往往需要大量人工值守。

近期,”找寻归宿的流浪猫”分享了一篇文章及配套视频,展示了利用编程 Agent(Vibe Coding)对 Lumerical FDTD、Ansys HFSS、CST 等仿真软件实施全自动建模与优化的方法。作者表示,在掌握该方法后,已不再需要手动执行仿真。

本文基于上述资料整理为一份实战教程:首先介绍 Vibe Coding 的基本概念,随后以 Codex 全自动完成 1×2 MMI 分束器设计与仿真为例说明完整流程,并提供可直接复用的 Prompt 模板。

Vibe Coding 概述

Vibe Coding 指以自然语言描述目标,由 AI 自动生成代码并完成执行。其较高级的应用形态已超越”对话生成代码”的范畴,而是:

以自然语言描述目标,由 Agent 负责拆解、执行、调试与交付,人类负责定义问题、设定边界并审核结果。

按工具形态,可大致分为三个层次:

层次 工具 特点
网页对话 ChatGPT、DeepSeek 等网页端 门槛最低,但需人工复制粘贴传递信息,效率较低
IDE 内 AI VS Code 插件、Trae、AntiGravity、Cursor 支持代码补全与修改,但难以独立完成完整流程
纯 Agent 编程 Claude Code、Codex 可调用终端、读写文件、运行脚本、读取报错并反复迭代,实现全流程自动化

纯 Agent 编程的代表工具为 Claude Code 与 Codex。Claude Code 目前以官方订阅为主,成本较高;Codex 支持自行注册账户,订阅价格相对较低。Cursor、Trae 国际版、Kimi Code、智谱 ZCode 等亦可用于此类任务,但部分模型能力较弱,较易出错。本文以 Codex Windows 桌面端为例进行演示。

FDTD 自动化适配性分析

并非所有任务都适合直接交由 Agent 执行,但 Lumerical 仿真属于典型的适用场景,主要原因如下:

原因 说明
任务目标明确 仿真对象、波段、工艺平台等参数均可明确定义
反馈链路完整 脚本报错、仿真结果与监视器数据均为机器可读信息,Agent 可自行读取结果并调试
验收条件可量化 损耗、透射率、分束比等指标具有明确数值,可直接写入验收标准
交付物可核查 仿真文件、报告及图像均可打开验证,结果可追溯

换言之,该流程天然构成”编写代码 → 运行仿真 → 读取报错 → 修改代码”的闭环,与编程 Agent 的核心能力高度契合。只要需求描述足够清晰,整个迭代过程即可交由 Agent 独立完成。

实战:Codex 全自动完成 1×2 MMI 分束器设计

本节以 Lumerical FDTD(2025 R1 版本)为例,演示一个完整案例:设计一个 3D 的 1×2 MMI 分束器,在 1550nm 波段实现等功率分束。整个过程无需手动操作 Lumerical。

第一步:环境准备

  1. 创建独立的工作文件夹;
  2. 启动 Codex,将上述文件夹设置为 Workspace;
  3. 建议在权限设置中开启”完全访问权限”,以避免 Agent 在执行脚本、读写文件时频繁进行手动确认。目前仿真场景下该权限的风险较低,如对此有所顾虑,亦可保留手动确认机制。

第二步:Prompt 设计(核心环节)

Prompt 的质量直接决定 Agent 能否完成任务,是该方法中最关键的环节。一份完整的仿真 Prompt 至少应包含以下四类要素:

要素 内容
① 解释器路径 Lumerical 自带 Python 解释器的完整路径,用于指定脚本运行环境
② 器件与工艺参数 结构组成、材料、工艺平台、波段、模式、网格精度等,描述越详细越好
③ 可量化验收条件 例如”损耗 < 0.5dB、分束不均衡度 < 5%”,用于明确完成标准
④ 交付物要求 保存 .fsp 文件、生成仿真报告等,便于后续验收

针对本案例,可直接使用以下 Prompt(基于原作者版本整理):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
你需要完成 Lumerical FDTD 仿真任务,具体细节如下:

1. 我正在使用 2025 R1 版本的 Lumerical,请使用其自带的 Python 解释器,
路径为 "C:\Program Files\ANSYS Inc\v251\Lumerical\python-3.9.9-embed-amd64\python.exe"。
2. 编写脚本仿真设计一个 3D 的 1×2 MMI 分束器,分束器包括输入波导、
输入 taper、矩形的 MMI 干涉区、输出 taper、输出波导等结构。
你需要自己搜索学习标准的 1×2 MMI 的结构。
3. 仿真波段为 1550nm,基模 TE 模式。
4. 基于 220nm 的 SOI 硅波导工艺平台,衬底和包层均为二氧化硅,波导宽度 450nm。
5. FDTD 的仿真精度设为 2。

验收条件:器件成功实现等功率分束,分束功率的不均衡度小于 5%,
同时传输损耗小于 0.5dB。

要注意的地方:
1. 请你自己运行代码,根据代码的返回结果,在终端里帮我 debug 程序,
直到整个代码可以正常运行,并且器件性能满足验收条件。
2. 全程用固定文件名自动保存文件,避免 Lumerical 弹交互窗口。
3. 注意监视器的尺寸,不要与其他波导重叠,导致检测功率值偏高。

最后,在你完成所有优化后:
1. 把最终优化完成的结果保存为一个 Lumerical FDTD 文件(.fsp)让我检验。
2. 撰写一份详细的仿真报告,展示 MMI 器件的模型结构、传输光场、
损耗、分束功率等核心参数。

Prompt 设计的三点建议:

  • 解释器路径的获取:该路径通常位于 Lumerical 安装目录下,格式与上述示例类似;若无法直接定位,可使用 Everything 搜索 python.exe,并确保将路径提供给 Agent。
  • 验收条件应可量化且可实现:应避免使用”性能较好”等模糊表述,同时需确认指标在物理设计上可达;若无法确定,可增加”若达不到条件,请在迭代 X 次后结束”的说明,X 可根据场景设定为十几次至数十次。
  • 常见问题应预先提示:例如使用固定文件名自动保存以避免交互弹窗、确保监视器不与波导重叠等。此类问题均为实践中 Agent 易犯的错误,预先提示可显著减少无效迭代,并可将其固化于后续所有 Lumerical 仿真 Prompt 中复用。

第三步:自动迭代执行

将 Prompt 发送至 Codex 后,Agent 将自动完成以下循环:

1
建模 → 运行仿真 → 读取结果 → 发现问题 → 修改参数 → 重新仿真 → 直至满足验收条件

整个过程无需人工值守。根据原作者的演示,约半小时后 Codex 即自动完成了全部仿真、优化与报告生成,并在工作目录中创建相应文件。若未开启完全访问权限,期间可能需要手动确认部分操作。

第四步:结果验收

仿真完成后,应按以下步骤进行验收:

  1. 打开生成的 .fsp 文件,检查模型结构是否合理;
  2. 查看仿真报告中的器件结构图、光场传输图、损耗及分束功率;
  3. 核对是否满足验收条件(分束不均衡度 < 5%、传输损耗 < 0.5dB);
  4. 若未达标,可补充反馈并继续迭代。

进阶应用

该方法不仅适用于参数优化,还可扩展至以下场景:

  • 论文复现:可直接提供文献,要求 Agent 复现其中的结构。在 Prompt 充分明确的前提下,可一键复现论文中的仿真。
  • MCP 直接控制:进一步可通过 MCP 将 Lumerical 作为工具暴露给 AI 客户端。社区已有 lumerical-fdtd-mcp 等开源项目,支持在 Codex 中通过工具调用直接控制 Lumerical 会话、运行脚本并读取变量,实现自然语言驱动的仿真工作流。
  • 底层 API:如需了解 Agent 实际调用的接口,可参阅 Lumerical Python API 官方文档。Lumerical 提供完整的 Python 会话与对象接口(如 lumapi.FDTD()),构成自动化仿真的基础。

注意事项与边界

  1. 工具选择:模型能力直接影响任务成功率,建议优先选用 Claude Code、Codex 或性能足够强的模型。
  2. 物理正确性核验:Agent 可确保脚本正常运行并满足指标,但边界条件、材料模型与监视器设置是否物理合理,仍需人工核验。AI 的作用在于减少重复劳动,而非替代专业判断。
  3. 权限管理:开启完全访问权限后,Agent 可执行任意命令,工作环境中应避免存放敏感数据。
  4. 迭代上限:应为验收条件设定迭代次数上限,避免在无法达成的目标上持续消耗计算资源。

总结

整个流程可概括为四个步骤:

步骤 内容
1. 环境准备 创建工作文件夹,将 Codex 设为 Workspace
2. Prompt 编写 包含解释器路径、器件参数、量化验收条件与交付物要求
3. 自动执行 Agent 自主完成建模、仿真、调试与优化,直至满足条件
4. 结果验收 检查 .fsp 文件与报告,未达标时补充反馈继续迭代

概括而言:人类负责定义问题与验收标准,Agent 负责其余全部执行环节。

“工具从来不是为了取代思考,而是为了把思考者从重复劳动中解放出来。当年 MATLAB 替我们算矩阵,FDTD 替我们解麦克斯韦方程,今天 Agent 开始替我们操作这些求解器本身。”

参考来源:

视频:AI 编程实现 Lumerical FDTD 仿真全自动设计优化 公众号原文:让 AI 替你跑仿真