模型求解完成后如何使用作业序列保存数据

作者
2025年 4月 24日

你知道吗?你可以在 COMSOL 中使用研究节点执行一系列程序化操作,包括求解模型、将模型保存到文件,以及生成和导出绘图组、结果和图像。这篇博客,我们将详细介绍这一实用功能。

编者注:本文最初发布于 2017 年 6 月 21 日。内容和图片现在已经更新。

示例:微混合器模型

为了演示此功能,我们将从案例库中加载微混合器教程模型。该模型位于COMSOL Multiphysics>流体动力学文件夹中,演示了层流静态混合器中的流体流动和质量传输。

COMSOL Multiphysics 中的案例库屏幕截图,选中了微混合器教程。

该模型首先使用层流接口模拟流体流动。然后,将流体流动模拟的结果作为输入,通过稀物质传递接口计算混合效率。物质将基于流体速度被输送到下游。

该模型的计算时间为几分钟。为了简化模型以更快地运行计算,我们将不求解物质传递。为此,我们将修改第二个研究步骤 (步骤 2:稳态 2)的设置,清除设置窗口中的稀物质传递和反应流,稀物质复选框。

为了加快模型运行速度,我们还可以做一个额外的更改。在网格节点设置中,将序列类型设置为物理场控制的网格,将单元大小设置为极粗。

COMSOL Multiphysics 用户界面的特写图,其中突出显示了“网格 1”节点,相应的“设置”窗口中的“序列类型”和“物理控制网格”部分展开。

现在,我们可以计算研究 1,以确保一切正常。结果图显示了沿混合器几何形状的几个切面的速度大小。

COMSOL Multiphysics 用户界面显示了模型开发器,选中了”研究1“节点,相应的设置窗口和图像窗口中的微混合器模型。

使用作业序列自动保存模型

准备好模型后,我们就可以使用作业序列来自动完成模型求解和保存的过程。

要在研究节点下定义操作序列,首先要单击模型开发器工具栏上的相应按钮(眼睛图标),打开显示更多选项对话框。然后,选择求解器和作业配置复选框。

“显示更多选项”对话框的屏幕截图,其中勾选了“求解器和作业配置”复选框。

启用此设置后,模型树中会出现一个隐藏的作业配置节点。在常规建模工作中,不需要担心这个节点。它主要存储与求解过程运行顺序有关的底层信息。通常,这种顺序由研究的顶层间接控制,无需启用求解器和作业配置选项。

右键单击作业配置并选择序列选项,添加序列子节点。

在 COMSOL Multiphysics 中右键单击“作业配置”节点后截取的屏幕截图。

接下来,右键单击序列节点,查看运行选项下方的各种选项,这些选项可在运行序列时添加为顺序操作。

在 COMSOL Multiphysics 中右键单击“序列”节点后的截幕屏图。
  • 作业— 可以使用作业选项添加另一个作业配置,以从此序列中运行。
  • 解—解选项运行研究树中求解器配置节点下其中一个解节点。
  • 其他— 在其他选项下,可以选择外部类来调用外部 Java 类文件。几何选项可创建一个几何节点,例如,与参数扫描结合使用,可生成一系列具有不同几何参数的 MPH 文件。网格选项会生成一个网格节点。方法调用选项将会调用 App 开发器中创建,并添加在全局定义下的方法。
  • 将模型保存到文件—将模型保存到文件将求解的模型保存到 MPH 文件中。
  • 结果— 在结果选项下,可以选择绘图组来运行所有或选定的绘图组。使用绘图组选项可以自动生成绘图组,即不必在求解后手动点击所有绘图组来生成相应的可视化结果。派生值选项是根据惯例设置的,建议使用计算派生值选项,该选项将计算结果>派生值下的节点。导出至文件选项可以在导出节点下运行任何节点来进行数据导出。

注:通过添加序列节点执行的所有操作也可以通过编写 Java API 代码和使用方法编辑器来实现。一般来说,在用户界面中执行的任何操作也可通过 COMSOL API 执行。

现在让我们创建一个简单的序列。右键单击序列节点,选择解选项。

一般来说,根据模型及其研究,不同的研究将定义多个求解器序列。在解节点设置的常规部分,运行设置可指定要计算的求解器序列。默认情况下,全部选项会为所有研究运行求解器配置下的所有求解器序列。通常,需要将运行设置为你打算运行的特定求解器序列。

在本例中,求解器序列解1 (sol1)包含求解器配置>求解器 1下所列的操作。同时,解数据结构解存储 1 (sol2)用作稳态求解器 1计算出的解的辅助存储,与解序列无关。因此,在这种情况下,我们将选择解1 (sol1)。

COMSOL Multiphysics用户截面的特写视图,突出显示了解1节点,并展开了”常规“部分的相应设置窗口。

求解器完成求解后,我们需要保存文件。为此,右键单击序列节点并选择 将保存模型到文件。

OMSOL Multiphysics 用户界面的特写视图,其中突出显示了将模型保存到文件1,并展开了相应的设置窗口,”常规“和”输出“部分。

在将模型保存到文件设置窗口中,可以看到一系列选项,用于保存一系列 MPH 文件,并在文件名末尾添加参数。这些选项对于批量扫描等参数扫描非常有用。不过,在这种简单示例中,并不需要这样做,因此我们将为将参数添加到文件名设置中选择无选项。在此阶段,我们还需要为有写入权限的位置提供文件名。在本例中,文件名和文件路径为C:\COMSOL\myfile.mph。

COMSOL Multiphysics 用户界面的特写视图,高亮显示了“将模型保存到文件1”和相应的设置窗口,其中展开了“常规”和“输出”部分。

要运行这些操作,请选择序列节点并单击运行。

在 COMSOL Multiphysics®中求解模型后导出数据

我们使用的案例库模型微混合器已经定义了一个派生值。您可以在结果>派生值>全局计算中看到。该变量名为S_outlet,是出口处的相对浓度方差,其定义位于组件>定义>变量下。

COMSOL Multiphysics 用户界面的特写视图,突出显示了全局计算1节点和相应的设置窗口,其中展开了数据、表达式和数据系列操作部分。

S_outlet的值被发送到表 1。我们可以通过更改表 1设置窗口中的设置,将此值存储到文件中。将存储表设为在文件中,并指定文件名,例如C:\COMSOL\my_data.txt。

COMSOL Multiphysics 用户界面的特写视图,突出显示了表1节点和相应的设置窗口,其中展开了注释、数据和列标题部分。

现在,在序列中添加计算派生值操作。

COMSOL Multiphysics 用户界面的特写视图,高亮显示了模型开发器的 ”计算:全局计算1“节点,展开了相应的设置窗口,”常规“和”结果“部分。

在计算派生值节点设置的常规部分,如果你想计算所有量,可以将计算设置从全部改为全局计算 1。请注意,选择此选项后,模型树中的节点名称将变为计算:全局计算 1。不过,在这个简单的示例模型中,只有一个模型树节点需要计算,可以省略这一步。

在结果部分,将目标表格更改为新表格。

已勾选全部派生值计算选项的模型设置窗口

再次运行序列前的最后一步是在步骤 2:稳态 2的设置窗口中启用稀物质传递接口 和反应流,稀物质选项,以求解物质传递(我们最初为了更快地运行模型跳过了这一步)。

现在,我们可以运行序列了。

从研究层或命令行运行任务序列

要从主研究节点或命令行运行作业序列,可以使用参数化扫描来代替上述方法。参数化扫描是一种特殊类型的作业序列,与上述说明基本相同。不过,在这种情况下,作业配置>参数扫描节点扮演了作业配置>序列节点的角色。

在添加参数化扫描节点之前,请删除作业配置>序列节点及其子节点。

然后,在研究 1下添加参数化扫描。但是,默认情况下,顶层研究节点不识别作业配置下的作业序列。同样,命令行接口也不允许在研究节点内直接执行作业序列;它只支持运行整个研究。在全局定义>参数下添加一个虚设参数(例如,dummy = 1),就能为识别引入必要的识别机制,从而可以直接从研究 1或通过命令行执行。

对应的参数化扫描显示方式如下图所示:

COMSOL Multiphysics 用户界面的特写视图,显示了模型开发器,突出显示了参数扫描节点和相应的设置窗口,同时展开了求解部分的研究设置和输出。

现在,右键单击研究 1并选择显示默认求解器。这将在作业配置下添加一个参数化扫描节点。

注意:如果你正在使用其他模型,可能需要先在研究 1 的高级设置中,将使用参数化求解器切换为关闭, 的节点才会出现在作业配置的下方。

下图显示了对一个虚设参数的一个参数值的对应扫描。既然参数化扫描 1节点只是序列节点 的一种特殊类型,我们可以为其添加将模型保存到文件和全局计算节点,让它们与自动创建的解子节点搭配使用。这些子节点的操作与之前使用序列节点的示例相同。

要从模型开发器运行作业序列,请右键单击研究 1节点并选择计算。

COMSOL Multiphysics 用户界面的特写视图显示了模型开发器,突出显示了参数化扫描1节点,展开了相应的设置窗口与常规和错误部分。

使用命令行接口

如果希望使用命令行接口(如 Windows®操作系统中的命令提示符窗口)运行作业序列,添加了虚设参数后,就可以键入如下命令:

comsolbatch -inputfile mymodel.mph -study std1,

其中,std1是研究 1的标签, 而mymodel.mph会被替换为实际的文件名。

要在命令提示符中运行该命令,需完成以下步骤:

  1. 确认 COMSOL®可执行文件的路径已经被添加至 PATH 环境变量。
  2. 打开命令提示符,切换至存放输入文件的目录。
  3. 输入指令,按下回车键执行。

查阅博客如何从命令行运行 COMSOL Multiphysics®,了解关于使用命令行的更多信息。

在本示例中,我们先将 COMSOL®可执行文件的路径添加至 PATH 环境变量,再切换目录至输入文件所在的位置,最后执行该命令。

一张截图展示了一条命令开始运行,背景为黑色,白色字体为命令提示符。运行命令前,先将目录切换至输入文件所在位置的命令提示符窗口。

你可以查看命令运行过程中的进度。执行完成后,系统会显示保存路径、总耗时等相关信息。

命令提示符中已执行命令的截图,文字为黑底白字样式命令执行完成后的结果会显示在命令提示符窗口的底部。

如果尚未将 COMSOL®可执行文件的路径添加至 PATH 环境变量中,则需要在命令里指定 comsolbatch.exe 所在的位置。若我们将工作目录切换至输入文件所在的路径(本示例中为 C:\COMSOL),同时使用 comsolbatch.exe 的默认路径,对应的命令如下:

C:\Program Files\COMSOL\COMSOL63\Multiphysics\bin\win64\comsolbatch -inputfile micromixer_parametric_sweep.mph -study std1

文件资源管理器窗口,COMSOL 可执行文件所在位置弹出了右键菜单。从文件资源管理器中复制了comsolbatch.exe文件的路径。

就像在 COMSOL Desktop®上运行研究一样,该命令将执行一系列操作,包括求解、将模型保存到文件,以及最后对全局计算节点进行计算。请注意,如果模型中只有一个研究节点,则可以省略输入参数study std1。

要显示模型树标记,请从模型开发器工具栏上的模型树节点文本菜单中选择标记。

在 COMSOL Multiphysics 中选择标记选项的模型开发器的屏幕截图。

研究标记std1现在在模型树中可见:

COMSOL Multiphysics 中模型树的屏幕截图,放大了研究标记 std1。

请注意,如果模型中已经有参数化扫描,则每次扫描都将是 内部扫描 或 外部扫描。上例中使用虚设参数的扫描是 外部扫描。研究节点会自动检测使用哪种类型的扫描以获得最佳性能,但您也可以根据需要手动确定。要使用命令行作业序列,你的扫描必须是 “外部扫描”。

几乎所有类型的扫描都可以从内部扫描变为外部扫描,但反之则不行。内部扫描可以更快,因为它们会使用计算的一些底层结构来加快速度。然而,并非所有类型的扫描都可以是内部扫描。例如,对几何参数的扫描必须是外部扫描;同样,求解器会自动处理。要确保参数扫描是外部扫描,请将参数化扫描设置中的使用参数求解器更改为关;然后执行显示默认求解器操作并继续。

下一步

求解模型后,作业序列可用于自动执行许多常见任务。在这篇博客中,我们演示了如何:

  • 将模型保存为 MPH 文件
  • 将派生值导出到文件

你还可以自己尝试其他使用工作序列的任务,包括:

  • 求解后重新生成所有绘图
  • 将绘图数据导出到文件
  • 将图像数据导出到文件

希望作业序列能成为您日常建模工作中的一项有用功能!

Oracle 和 Java 是 Oracle 和 / 或其附属公司的注册商标。Microsoft 和 Windows 是微软公司在美国和/或其他国家的注册商标或商标。

评论 (0)

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