从二进制结果解析、截图坐标反演,到堆积体方量估算,看工程师如何通过多轮对话与AI Agent协作,高效处理仿真数据。
在数值仿真中,求解器跑完并不等于任务结束。理解输出格式、解析大体量二进制文件、筛选目标对象、统计空间范围并验证结果,往往需要工程师编写多个临时脚本。
这一次,我们让AI Agent参与CoSim耦合求解器的DEM后处理。它不仅回答问题,还阅读文档和源码、运行分析程序、检查结果并生成能导入可视化软件的验证文件。
整个过程可以概括为:工程师负责提出目标、补充领域方法和判断结果;AI Agent负责理解代码与数据、执行计算并形成可验证的交付物。
普通对话式AI主要提供文字建议;AI Agent则可以在授权范围内读取项目文件、检索代码、运行脚本和生成文件。
目前可以使用Cursor、OpenAICodex等AI编程Agent。它们可以运行在编辑器、命令行或云端环境中。但Agent并不天然理解工程问题,s高质量结果来自多轮对话,而不是一条所谓的“万能提示词”。
工程师没有直接要求计算,而是先告诉Agent:
“CoSim安装目录中包含后处理说明文档和二进制解析脚本;待分析数据来自求解仿真生成的Outputs目录。请先理解这些资料,我随后再提出分析需求。”
对于默认安装的CoSim,文件(目录)对应位置如下:
后处理说明文档:C:\ProgramFiles(x86)\CoSim\bin\doc\output-postprocess
二进制解析脚本:C:\ProgramFiles(x86)\CoSim\bin\CoSim\BinaryIO.py
待解析数据:具体算例目录下由求解仿真生成的Outputs文件夹
用户不需要预先理解BinaryIO.py的实现,也不需要把二进制文件转成文本,只要告诉Agent上述文档、脚本和算例Outputs的位置,Agent就可以了解文件存储格式,并通过解析脚本转为Agent善于处理的数据形式,并自行建立后续的数据解析方法。
CoSim后处理采用JSON元数据与BinaryIO二进制文件配对。JSON记录时间、系统名称、对象数量和字段索引,BIN保存具体的数据数组。BinaryIO.py提供了读取后处理文件的统一程序接口,后处理说明文档则详细描述了通过接口读取到的数据的含义、组织的形式。

本文以某个滑坡离散元模拟为例,分析其仿真结果文件。该算例使用PolyBreakage(多面体转球功能),计算初始、最终的模型示意图如下:


工程师提出第一个简单任务:
“分析最后时刻,列出速度最大的20个块体或球,并统计总体积。”
这句话只描述目标,没有规定实现方式。Agent需要自行判断最后时刻文件、按速度模排序、统一比较球与多面体,并计算体积。
处理时,Agent先按IsActive=1(处于激活状态)过滤仍参与终态计算的对象,再计算:|v|=sqrt(Vx²+Vy²+Vz²)。结果为:前20名全部为球体;Rock球18个,Soil球2个;最大速度为44.809805m/s;20个对象实体总体积为5,710.513095m³。分析还发现,部分失活对象仍保留非零历史速度。如果只对Velocity排序而不检查IsActive,结果会失真。

由此可见,CoSim提供了详细的后处理文档,足以让Agent掌握“什么是最后时刻”、“块体/球分为哪几个Set”、“块体/球的激活/非激活状态”、“块体/球的几何、运动状态量如何获取”等数据细节。
随后,工程师提供一张Z向俯视截图,并用红线圈出目标区域:

切换2D-俯视图视角

交给Agent的俯视图及范围圈定
“请根据俯视图的像素分析红线范围、整体地形范围,结合三角网地形数据映射到真实X、Y;统计红线范围内块体/球的总体积。”
Agent对图像进行颜色和连通域分析,识别出:截图尺寸:1024×455px;地形像素范围:X为267~756px,Y为5~449px;红线像素包围范围:X为367~485px,Y为244~309px。再从Mesh1三角网读取地形真实范围:X:-8476.354~9069.335m;Y:-8175.556~7805.158m;像素尺度约为35.881m/px和35.993m/px,红线对应的真实坐标包围范围约为:X:-4888.278~-654.349m;Y:-3136.592~-797.073m;
实际筛选使用红线闭合形状的逐像素掩膜,而不是矩形包围盒。区域内共识别185,859个活动球体:Rock:106,001个;Soil:79,858个;球体实体总体积:44,368,183.422m³。
工程师没有直接接受坐标映射,而是继续要求:
“请根据映射出的红线内真实区域生成一个水平STL,Z坐标高于模型地面即可,我将导入可视化界面对比验证。”
Agent生成了一张9,224个三角形组成的水平STL,高程为5701.786m,比地形最高点高100m。其平面形状来自红线闭合掩膜,不是矩形。
工程师把STL导回CoSim可视化界面,与截图红线叠加检查。

可视化验证无误
这体现了工程AI的重要原则:不要只向AI要答案,还要让它提供验证答案的方法。
第一次区域统计只计算了所有球的实体体积。工程师指出:
“块体/球的堆积有间隙,我要估计‘堆积体’整体方量。可以按XY网格划分,取各网格的块体/球最高点和地形最低点,按高程估计无间隙堆积体体积。”
这里,XY网格的总体思路由工程师提出,Agent负责将其转成算法,并自行补充了网格尺寸选择和敏感性分析。
Agent的执行步骤为:将红线区域划分为10m×10m网格;网格顶面取格内球体的最大CurrentCenter.z+Radius;网格底面取三角网插值及格内地形顶点的最低高程;计算网格体积=(球体最高点-地形最低点)×网格面积;最终得到:堆积体方量76,222,335m³,有效堆积面积4.6167km²,平均厚度16.510m,最大厚度66.543m,与实体体积对比空隙率为41.79%。

Agent反馈报告
本次实践可以总结为五条经验。
1.先提供资料入口
告诉Agent文档、解析代码和结果文件在哪里,并让它先复述数据结构和可用时间步。针对CoSim,可以直接复 制下面这段话,再替换算例路径:
C:\ProgramFiles(x86)\CoSim\bin\CoSim\BinaryIO.py是后处理二进制解析脚本;C:\ProgramFiles(x86)\CoSim\bin\doc\output-postprocess是后处理说明文档;【我的算例路径】\Outputs是求解仿真生成的后处理结果。请先阅读说明文档和解析脚本,盘点Outputs中的文件、时间步和可用物理量,确认理解后再进行分析。
这一步相当于给新同事提供软件手册、工具和数据入口,远比直接说“帮我分析这个BIN文件”有效得多。
2.描述目标、明确关键工程口径
“统计最后时刻速度最大的20个对象”已经是清晰目标。文件读取、排序统计和程序实现都可以交给Agent。关键指标需要交代清楚,比如需要实体体积,还是整体堆积体方量?单位是什么?希望输出表格、图片还是验证文件?
3.把领域方案直接告诉Agent
若工程师已有可信方法,可明确提出。本次XY网格方案就是关键领域输入。如果只说“算一个更合理的体积”,Agent可能采用固定堆积系数、体素化或三维包络面,结果不会相同。
4.要求可验证的中间成果
可以要求Agent:生成STL/VTK供可视化检查;输出对象编号和坐标;比较不同参数下的结果;列出假设、单位和误差来源。
5.AI不替代工程判断
本次分析经历了逐步修正:①简单的数据统计,检验Agent是否清晰理解文档;②红线区域内颗粒实体体积,并通过STL可视化核验坐标映射等关键步骤;③根据工程经验,提出XY网格高程方案,以修正堆积体方量计算。
每一步都来自工程师查看中间结果后的新判断。Agent提高了文档阅读、代码分析和数据处理效率,但最终采用什么口径、结果是否合理,仍由工程师决定。
对于CoSim这样的多物理场耦合求解器,AI最有价值的应用未必是替代求解算法,而是打通仿真结果与工程决策之间的“最后一公里”。
拥抱AI,不是把工程判断交给机器,而是让工程师拥有一名能够阅读代码、理解数据、执行分析并协助验证的数字伙伴。
CoSim下载地址
https://pan.baidu.com/s/1yljXY2mBTUltWSumFB_JZg?pwd=MEGG提取码:MEGG