使用 AI 工具简化数据传输与文件转换

作者
2026年 6月 11日

在使用 COMSOL Multiphysics® 这类仿真软件时,长期存在一项难题:如何高效导入并转换来自其他来源的数据。初次接手这类工作时,你或许会手动完成数据转换。但这类工作的数据量往往会不断增加,甚至你可能需要反复处理同一类数据。在本篇博文中,我们将介绍如何将人工智能(AI)工具与 COMSOL® 软件结合使用,帮助你将这些数据转换方法转化为一套可重复调用的工作流。

理解数据传输的痛点

我们经常会遇到这样的问题:如何将不同格式的数据导入 COMSOL® 中?这类数据通常存储在文本文件中,且文件格式可能并不常见,没有现成的转换工具可用。我们的客户通常十分熟悉这类文件格式,而我们则精通如何在 COMSOL® 中调用这类数据。在这种场情况下,AI工具就能大显身手了——AI能够大幅降低搭建数据转换工作流所需的工作量。接下来,我们结合一个具体的应用场景展开详细说明。

一个具体的应用示例

假设现在有一个文本文件,内容为一个集总热模型的相关说明。集总模型与你在 COMSOL Multiphysics® 中熟悉的有限元模型有所不同。集总模型使用代表材料体积的节点,每个体积的密度和比热容均为已知参数,因此每个节点都对应着一个热质量。节点的温度会因施加热载荷而升高,节点之间可以通过传导辐射 进行热量交换,其计算依据是两个节点之间的温差。此外,我们还可以设定恒温节点,这类节点被称为热沉。为了让这个概念更具体,我们来构建一个非常简单的太空卫星的集总模型。

我们将要处理的卫星模型如下图所示。它是一个箱体结构,两侧各伸出一块太阳能电池板。箱体的六个面和两块太阳能电池板各自用一个热节点来表示。箱体的相邻面之间存在传导热通量,箱体侧面与太阳能电池板之间存在辐射热通量。同时,所有的面都会向太空产生辐射热通量。该模型的目标是从一个初始温度出发,计算温度随时间的变化。本次分析将假设太阳和行星的热载荷忽略不计(例如地球同步卫星进入阴影期时),仅考虑单个节点上加热器产生的热载荷。

太空卫星的灰色集总参数模型。该卫星为灰色立方体结构,两侧各伸出一块矩形太阳能帆板。 一张卫星八节点集总热模型的原理图。图中展示了箱体各节点之间的热传导,以及所有节点向深空产生的热辐射。

这类集总模型非常常见,而且业界用来表示它们的文件格式也五花八门。为了让我们的示例不受文件格式的限制,我们将生成一个逻辑思路与各类格式相近(语法细节可能不完全一致)的文件。正如我们接下来会看到的,具体的语法其实并不是重点。下文展示了该示例文件中的一段节选内容:

TSINK, 99, 2.7 # Thermal Sink 99
NODE, 10, 300, 12150 # Node 10

NODE, 80, 300, 3220 # Node 80
LOAD, 60, 750 # Load on node 60
CON, 1020, 10, 20, 0.71 # Conductor 10 - 20

CON, 5020, 50, 20, 0.71 # Conductor 50 - 20
RAD, 2070, 20, 70, 8.9e-9 # Radiation 20 - 70

RAD, 8099, 80, 99, 1.8e-7 # Radiation 80 - 99

这个文件中包含五种类型的数据:TSINK, NODE, LOAD, CON, RAD.。它们分别代表热沉、带质量的热节点、特定节点上的热载荷、节点之间的热传导,以及节点之间或节点与热沉之间的热辐射。符号 # 后面的内容属于注释。如果你熟悉同类文件格式,从计算机科学的角度来说,可以把上述格式看作是一种全新的“语法方言(dialect)”。

再借用几个计算机科学的术语,这个文件中的信息实际上描述了一个“连通图(connected graph)”,其中描述传导和辐射的记录就是 节点 之间的 。这非常有用,因为 AI 工具非常擅长处理这类数据结构。我们先记住这一点,接下来,我们把注意力转向如何将这些数据导入到 COMSOL® 中。

COMSOL 中的等效实现

尽管 COMSOL Multiphysics® 软件的附加产品——传热模块中确实内置了 集总热系统 物理场接口,但对于规模较大的模型,我们需要一种计算成本更低的方法。要表达上述数据,最简便的等效方法是使用 全局方程 接口。由于待导入数据对应的是一个三维结构,而输入文件并未提供关于几何形状和尺寸的足够信息,因此采用抽象格式来搭建模型。

全局方程 接口可将连通图的图形网络转化为一个耦合的常微分方程组,方程形式如下:

T_{sink} = T_0

 

C_{T,i} \partial T_i/\partial t = Q_i + \Sigma_j \left[ G_{ij}\left( T_j – T_i \right) + R_{ij}(T_j^4-T_i^4) \right]

 
这些方程可以在用户界面中进行设置,具体如下图所示。此外,我们还可以通过 保存到文件从文件加载 按钮,将这一整套全局方程导出或导入。

一张 COMSOL Multiphysics 软件中全局方程设置窗口的截图,展示如何录入一组常微分方程。 截图展示了如何设置一组常微分方程。请注意图中的 保存加载 按钮。

我们这里想要复现的模型包含9组节点与热沉的数据条目,这些内容由手动整理输入。尽管流程略显繁复,但鉴于其仅需一次性操作,投入相应的时间成本仍是值得的。需要注意的是,原始文件是基于预设的单位编写的,因此所有的方程都进行了无量纲化处理。在将这些内容输入到软件界面,模型导出保存为了一个文本文件。截取的其中几行内容如下所示:

NODE10 12150*d(NODE10,t)[s]-((0.71*(NODE20-NODE10)+0.71*(NODE30-NODE10)+0.71*(NODE40-NODE10)+0.71*(NODE50-NODE10))+(4.5e-8*(TSINK99^4-NODE10^4))) 300 0 "Node 10"
...
NODE60 12150*d(NODE60,t)[s]-((750)+(0.71*(NODE20-NODE60)+0.71*(NODE30-NODE60)+0.71*(NODE40-NODE60)+0.71*(NODE50-NODE60))+(4.5e-8*(TSINK99^4-NODE60^4))) 300 0 "Node 60"
...
TSINK99 TSINK99-2.7 2.7 0 "Thermal Sink 99"

借助 AI 打造数据转换器

至此,我们对这两个文件应该已经有了充分的了解。同时我们也清楚,如果一个文件里包含成百上千甚至更多的条目,就必须引入一定程度的自动化处理方法。但有一点可能不太容易察觉:我们实际上是在将图数据从“边列表(edge-list)”表示形式,转换为可利用数据稀疏特性的“关联列表(incidence-list)”表示形式。了解计算机科学的读者会明白,要手动编写这种转换算法绝非易事。

幸运的是,这类工作正是 AI 能够帮助我们实现自动化的。需要澄清的是,我们并不是让 AI 直接去执行数据转换,而是让 AI 为我们编写一个通用的转换工具。那么,我们具体需要提出什么要求?又该如何向 AI 下达指令为我们写出这个转换程序呢?

其实,这两个文本文件中已经包含了我们所需的几乎所有数据。我们要做的,仅仅是将它们上传到选定的 AI 工具中,并输入类似下面这样的提示词:

Here is a file that contains nodes and sinks, representing nodes on a graph network. The connections between the nodes are defined by CON and RAD lines. Everything after a # is a comment. I need to convert the first file into the format of the second file. Please write out the transformation rules between them.

本示例中使用的是 ChatGPT。大约一分钟后,它就给出了一份完整且通俗易懂的转换步骤说明。最让我印象深刻的是,这款 AI 工具不仅识别出该文件描述的是一个热学问题,还准确判断出了其中非线性辐射项的物理性质。

一张 ChatGPT 生成内容的截图,内容为制作通用转换工具相关 ChatGPT 输出内容节选。

在仔细审阅了这份输出后,我确信这款工具已经完全理解了任务需求。要知道,输入文件使用的是一种描述集总热模型的、独特且未公开说明的“方言”。我只需要再做一步:要求 AI 生成一段我可以独立运行的代码。为此,我又输入了这样一条提示词:


Please write a monolithic piece of Java code that I can use in COMSOL's Method Editor to convert any file of the original type into this format.

我之所以要求生成 Java 代码,是因为我想完全在 COMSOL Multiphysics® 中运行这段程序。正如 ChatGPT 能毫不费力地理解输入文件中独特的“方言”一样,它在使用我指定的编程语言编写代码时也同样游刃有余。

最终生成的代码长达数百行,这里就不进行展示了。不过,我大致审阅了一下,发现 ChatGPT 为了提高可读性添加了注释,甚至还加入了错误检查机制——如果输入了无效文件,程序会给出明确的报错信息。这段代码编译和运行都非常顺利,我还通过生成结果进行了初步校验。

通常来说,对转换代码进行核验和确认是非常重要的,具体的方法取决于数据的呈现形式。有时,仅对少量样本进行直观的抽样检查便足够;但在另一些场景下,则可能需要采取更严谨的校验方式。其中一种有效的方法是额外编写一个“逆向转换器(back-converter)”,本质上就是对数据做双向转换,并验证转换后的数据是否仍与原始数据一致。同样,我们也可以借助 AI 来完成这一步。

由输入文件计算得出的数据曲线图,该文件用于呈现卫星热模型相关数据 由输入文件计算得出的输出示例。

到这一步,有些读者可能会问:为什么不干脆把这个转换器直接集成到 COMSOL 产品中呢?我需要着重说明,本文介绍的示例仅仅是一个采用独特“方言”编写的简易热网络文件。而在实际应用中,集总热模型文件可能会包含更多种类的数据记录,需要由多个文件组合而成,甚至还会包含用于实现特定恒温控制算法的自定义代码。如果要开发一款通用的转换程序,需要处理大量极端边界情况,而这些情况几乎不会同时出现在同一个文件内。除此之外,简单的一对一格式转换往往不是最佳选择。有时候我们需要退一步,先去梳理和深入理解原始文件创建者的具体建模意图。对于这类热网络模型来说尤其如此,不过这就是另一个话题了。

关于文件转换与 AI 应用的几点思考

这里,我们有必要再次强调,完成整套流程其实并没有耗费太多精力。我们本身已经有了示例输入文件。虽然确实花费了一些时间研究如何在 COMSOL® 中合理搭建模型、生成标准语法,但和 AI 工具的交互过程十分简单:只需上传两个文件、输入两条提示词,生成的代码就能直接适用于所有同格式文件。全程与 AI 工具的总交互时长不过短短几分钟。

如果你也需要处理此类结构化数据或文件的转换,可以很快掌握这套工作流程。如果需要加入更多功能怎么办?只需在示例输入和输出中再补充几行内容,然后重新向 AI 工具发送提示词即可。那如果你想把其他数据自动导入 COMSOL 呢?比如,公司可能有一个自定义格式的大型专有材料数据库需要导入。你完全可以利用这套流程来编写转换程序。请记住,你无需向 AI 工具上传专有的原始数据,只需提供数据格式即可。最终你将得到一套完整的转换算法和源代码。

从更宏观的角度来看,正如我们在之前的 COMSOL 博客中讨论过的那样,AI 工具正在持续快速迭代。对于 COMSOL 用户需要解决的各类问题,这些能力正变得日益实用。

最后,我想向大家展示一次最终提示词的运行结果。在这条提示词中,我要求 AI 画出它对该文件所代表的硬件设备的理解。结果如下所示。虽然目前的呈现效果还不算完美,但我几个月后一定会再来回顾,看看它又有了怎样的进步。

一张 AI 生成的卫星集总参数模型图像。 AI 对全局方程的解读。

下一步

你会如何利用这套工作流程来辅助你的 COMSOL 建模和仿真工作?欢迎在下方留言分享,或与我们联系!

评论 (0)

正在加载...
浏览 COMSOL 博客