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

2025年 4月 24日

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

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

示例:微混合器模型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 作业 — 可以使用 作业 选项添加另一个作业配置,以从此序列中运行。
  • 选项运行 研究 树中 求解器配置 节点下其中一个 节点。
  • 其他 — 在 其他 选项下,可以选择 外部类 来调用外部 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。不过,在这个简单的示例模型中,只有一个模型树节点需要计算,可以省略这一步。

结果 部分,将 目标表格 更改为 表格 1(我们在此处定义了输出文件名和位置)。

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

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

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

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

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

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

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

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

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

下图显示了对一个虚设参数的一个参数值的对应扫描。既然 参数化扫描 1 节点只是 序列 节点 的一种特殊类型,那么子节点 解1、将模型保存到文件 1 全局计算 1 的操作与上一个使用 序列 节点的示例相同,我们可以以同样的方式添加它们。

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

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

使用命令行接口

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

comsolbatch -inputfile mymodel.mph -study std1,

其中,std1研究 1 的标签。

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

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

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

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

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

下一步

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

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

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

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

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

 

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


评论 (0)

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