
先把边界写在第一屏:这篇没有在 Windows 工作站上运行 COMSOL。
我手里没有可用的 COMSOL 安装、许可证和真实 .mph 模型,本机也没有 PowerShell。能确认的部分只有三件事:我查了 COMSOL 与 OpenAI 的官方文档,写了一份 PowerShell 批处理模板,再用本机 Codex CLI 0.144.5 做了两轮只读静态审阅。
所以,这不是一篇“Codex 已经把 COMSOL 跑通”的实测。它是一份上工作站之前的准备清单:命令怎样写,原模型怎样保护,哪些回执能自动检查,哪些科学判断必须留给研究者。
01 CHAPTER 01
Codex 站在求解器外面
如果后来把这条链落到 Windows 工作站,关系大致是:Codex 准备和审阅任务,PowerShell 调用 comsolbatch.exe ,COMSOL 负责网格、矩阵与数值求解。

图:机制示意。Codex 在 COMSOL 外部准备调度,不能据此证明模型已执行。
Codex 可以帮你找路径、拼参数、检查日志与文件。材料参数、边界条件、网格是否足够、求解结果能否解释实验,依旧需要专业判断。
02 CHAPTER 02
运行地点要和 COMSOL 在同一台机器
COMSOL 安装在 Windows 工作站上,实际调用必须发生在能访问安装目录、许可证服务和模型文件的本地环境里。云端隔离环境看不到这些资源。
OpenAI 的 Windows 文档提供 PowerShell 原生运行和 WSL2 两条路径。对于原生 Windows 版 COMSOL,PowerShell 少一层路径映射,一般更直接。

图:OpenAI 官方文档说明 Windows agent mode 的目录与网络限制。
工作目录可以收得很窄:COMSOL 安装目录只读;模型、日志、临时文件和结果只写进指定计算目录;网络许可证只放开必要连接。完全访问模式会把同一台工作站上的其他模型、原始数据和配置一起暴露给自动任务,没有必要默认开启。
03 CHAPTER 03
把版本和路径写进回执
同一台机器可能同时装有 COMSOL 6.1、6.3,也可能安装在非默认磁盘。脚本里应固定实际可执行文件:
● ● ● PowerShell
$Comsol = 'D:COMSOL63Multiphysicsinwin64comsolbatch.exe'
开跑前再保存版本输出:
● ● ● PowerShell
& $Comsol -version
版本、Study 标签、参数文件哈希都应进入运行回执。 std1 这类标签指的是模型内部 Tag,不必定等于界面上显示的名称;上工作站后要在 Model Builder 里核对。
04 CHAPTER 04
-outputfile 不能省
COMSOL 6.3 官方提供 comsolbatch.exe ,批处理命令可以写成:
● ● ● PowerShell
& $Comsol `
-inputfile 'D: unsinputmodel_original.mph' `
-outputfile 'D: unsoutputmodel_solved.mph' `
-study 'std1' `
-batchlog 'D: unslogscomsol.log'

图:COMSOL 官方文档明确写道,省略输出文件时,输入文件会被结果覆盖。
我会把原模型设为只读,每次计算使用副本,并把输出送进独立目录。运行前后分别计算输入文件 SHA-256;两个哈希不同,直接拒绝本次结果。

图:原模型只读,副本进入批处理,结果落到单独目录,覆盖路径被挡住。
提议每次作业单独留一套目录:
● ● ● Terminal
case-001/
├─ input/model_original.mph
├─ output/model_solved.mph
├─ logs/comsol.log
├─ tmp/
├─ recovery/
└─ run-receipt.json
密码保护模型无法直接通过 comsolbatch 运行,也应在无人值守任务排队前检查。
05 CHAPTER 05
许可证、核数和作业并发分开看
模型需要哪些产品,可以先在工作站执行:
● ● ● PowerShell
& $Comsol -checklicense 'D: unsinputmodel_original.mph'
这个参数会打印模型的许可证需求,但不会替你预留席位。正式运行失败时,要分别检查许可证服务器网络、所需模块和当前占用。
-usebatchlic 对应浮动网络许可证里的 Batch 特性,不是所有批处理任务都该添加。核数也不适合拍脑袋拉满。比较一个代表性模型在 4、8、16 核下的时间和内存,再决定默认 -np :
● ● ● PowerShell
& $Comsol ... -np 8
多模型并发时,机器承担的是“单作业内存 × 同时作业数”。Out of Memory 要回到自由度、网格、求解器和并发预算,虚拟内存只能缓解,无法把慢硬盘变成 RAM。
06 CHAPTER 06
参数扫描还要核对 -mode
普通 Parametric Sweep、Batch Sweep 和 Cluster Sweep 的执行语义不同。
COMSOL 6.3 命令文档说明: -mode batch 是默认值,会忽略模型中的 Batch 与 Cluster Computing 设置; -mode desktop 才按桌面计算方式使用这些设置。
这类错误很隐蔽。命令可以启动,输出文件也可能出现,里面跑的任务却和模型树中的预期不同。验收时必须记录实际 -mode 、Study 标签和参数清单。
07 CHAPTER 07
我让 Codex 审了两轮模板
模板里加入了路径检查、输入输出隔离、版本记录、许可证需求、退出码、日志、哈希、临时目录和恢复目录。
第一轮 Codex 静态审阅拦下两个问题:输出与日志没有哈希;运行回执不是原子写入。修完后再审一轮,才得到 pass。

图:真实 Codex CLI 静态审阅回执。 comsol_executed:false ,不能当成 Windows 求解证明。
这份模板在本文环境里没有经过 PowerShell parser,也没有触发 comsolbatch.exe 。带到工作站后,至少还要做四步:PowerShell 语法检查、一个最小测试模型、许可证签出验证、真实日志与输出文件验收。
08 CHAPTER 08
六类失败不要塞进一个“重试”
上工作站后,可以按下面的入口排查:
- 找不到
comsolbatch.exe:先查固定路径和版本; -checklicense能列需求,正式运行失败:再分网络、模块和席位;- 退出码非 0,但输出文件出现:仍按失败处理;
- 退出码为 0,却没有日志或输入哈希变化:验收脚本主动拒绝;
- Batch Sweep 与模型树不一致:核对
-mode; - Out of Memory:回到网格、求解器和并发预算。
错误保留自己的名字,脚本才知道该停在哪里。盲目重试可能重复占许可证、覆盖文件,或者把同一个错误放大许多次。
09 CHAPTER 09
两道门要分开过
未来在真实工作站上,退出码、输出文件、日志和输入哈希组成第一道执行门。它回答的是“这次任务有没有按约定结束”。
第二道门由研究者把住:求解器是否收敛;单位、材料与边界条件是否正确;网格加密后关键结果是否稳定;守恒与数量级是否合理;结果能否复现人工确认过的基准模型。

图:第一道门可以脚本化,第二道门需要研究者检查证据与解释。
Codex 负责准备、重复检查和记录,COMSOL 负责数值求解,研究者负责物理判断。这三层职责写进验收表,比一句“自动化完成”可靠得多。
这篇文章目前只能交付模板、官方依据和静态审阅记录。等它在 Windows 工作站上拿到真实 .mph 、许可证回执、 comsolbatch.exe 日志和科学验收结果,才有资格写“实机跑通”。
R
REFERENCE
参考来源
- OpenAI|ChatGPT desktop app for Windows |https://learn.chatgpt.com/docs/windows/windows-app
- OpenAI|Windows sandbox |https://learn.chatgpt.com/docs/windows/windows-sandbox
- COMSOL 6.3|COMSOL Commands on Windows |https://doc.comsol.com/6.3/doc/com.comsol.help.comsol/comsol_ref_running.38.31.html
- COMSOL|What are batch licenses and how can I use them? |https://www.comsol.com/support/knowledgebase/1304
- COMSOL|Tuning Computer Performance |https://www.comsol.com/support/knowledgebase/1324
- COMSOL|Error: “Out of memory” |https://www.comsol.com/support/knowledgebase/1030
- COMSOL|Running parametric sweeps, batch sweeps, and cluster sweeps from the command line |https://www.comsol.com/support/knowledgebase/1250
10 CHAPTER 10
