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

2017年 6月 21日

COMSOL 软件中的 研究 节点有一项鲜为人知的功能:它能够执行一系列程序化操作,包括求解、保存模型到文件,以及生成和导出绘图组、结果和图像。今天这篇博文,我们将进一步研究这项功能。如果你正在使用 COMSOL Multiphysics® 软件,那么了解这项功能将对你的建模工作很有帮助。

示例: 微混合器模型

为了演示这项功能,我们将首先从应用程序库加载微混合器模型教程。这个模型可以在 COMSOL Multiphysics > 流体动力学文件夹中找到,它演示了层流静态混合器中的流体流动和质量传输。

COMSOL Multiphysics 中 App 库的屏幕截图,其中选择了微混合器教程

此模型使用层流 接口进行流体流动模拟。接下来的步骤中,模型演示了如何使用流体流动模拟的结果作为输入,通过 稀物质传递 接口计算混合效率。组分将根据流体的流速被输送到下游。

这个模型的计算时间是几分钟。为了简化模型以更快地运行计算,我们不求解物质传递。为了实现这一点,我们将对第二步研究步骤(步骤2: 稳态2)的设置窗口进行一次修改,清除“稀物质传递”复选框。

COMSOL Multiphysics 的屏幕截图,其中“稳态研究设置”窗口已打开

为了使模型运行得更快,我们可以对模型做一个额外的更改。将序列类型设置为物理场控制的网格,并把单元大小设置为极粗化

COMSOL Multiphysics 中模型开发器的裁剪屏幕截图,其中突出显示了网格节点

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

The COMSOL software GUI with a micromixer model in the Graphics window.

使用作业序列保存数据

接下来,我们重点研究作业配置的一个重要部分: 序列 选项。

为了能够在 研究 节点下定义一系列操作,我们启用了高级研究选项。这是 模型开发器 工具栏下的一个可用菜单选项。点击“眼睛”符号就可以看到这个菜单。

显示在 COMSOL Multiphysics 中启用的高级研究选项的裁剪屏幕截图

启用这个设置会在模型树中显示隐藏的作业配置 节点。在传统的建模工作中,我们不需要担心这个节点。本质上它适合于存储用于修饰或说明解决方案流程运行顺序的低级信息。通常情况下,这是由一项研究的顶层间接控制的,不需要启用 高级研究 选项。

右键单击“作业配置”,选择“序列”。

右键单击作业配置节点后 COMSOL Multiphysics 的裁剪屏幕截图

接下来,右键单击序列,在运行 选项下面可以看到各种选项,这些选项可以作为运行序列时执行的有序操作序列添加:

  • 作业
  • 其他
  • 将模型保存到文件
  • 结果

作业 指的是要从此序列运行的另一个序列,而 可以运行在求解配置 节点中存在的 节点,该节点在 研究 树中可用。

其他 下,我们可以选择 外部类 选项来调用外部 Java® 类文件。在几何 选项下构建 几何 节点。例如,可以与参数扫描结合使用,生成具有不同几何参数的mph文件序列。另外,在 网格 选项构建 网格 节点。

选择将模型保存到文件 将求解后的模型保存到mph文件中。

结果 选项下,我们可以选择 绘图组 来运行全部或一组选定的绘图组。这对于求解后自动生成绘图组很有用。我们也不必手动单击所有的绘图组来生成相应的可视化效果。这里建议使用计算派生值 选项。该选项将在结果>派生值下评估节点。导出至文件 选项运行 输出 节点下任何进行数据导出的节点。

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

右键单击序列节点后 COMSOL Multiphysics 的屏幕截图。

一个序列中 节点的默认选项是运行所有解节点。常规 部分中的运行 选项允许我们指定应该计算哪些 数据结构。在求解器配置下,数据结构可以作为子节点与其他节点一起使用。可以通过括号内的短名称来识别它们,例如(sol1)和(sol2)。解数据结构是解的低级表示。

在本例中,我们可以为 数据结构保留默认的所有

COMSOL Multiphysics 的屏幕截图,其中打开了“解决方案设置”窗口

当求解完成后我们想保存文件时,可以右键单击 序列 节点并选择 将模型保存到文件

COMSOL Multiphysics 的屏幕截图,其中打开了将模型保存到文件设置窗口

设置 窗口中,我们可以看到许多选项,这些选项与保存一系列mph文件的功能有关,其中这些文件的参数被添加在文件名的末尾。这对于参数扫描(如批处理扫描)非常有用。但是,在这样一个简单的示例中,我们不需要这样做,所以我们将选项将参数添加到文件名 更改为。在这一阶段,我们还需要为具有写入权限的位置指定一个文件名。在此例中,文件名和路径为 C:\COMSOL\myfile.mph。

COMSOL Multiphysics 的屏幕截图,其中“序列设置”窗口已打开

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

求解模型后,将数据写入文件

我们可以在 结果 > 派生值 > 全局计算 下面看到,从模型库开始已经定义了一个派生值。该变量被命名为S_outlet,是出口处的相对浓度方差。它被定义为组件>定义>变量下的一个变量。

COMSOL Multiphysics 的屏幕截图,其中“全局评估设置”窗口已打开

S_outlet 的值被发送到表1。通过更改表1设置 窗口中的设置,我们可以选择将这个值存储到文件中。将存储表 更改为 On 文件,并键入文件名;例如, C:\COMSOL\ my_data.txt。

COMSOL Multiphysics 的屏幕截图,其中“表设置”窗口已打开。

现在,向序列添加一个计算派生值 操作。

COMSOL Multiphysics 的屏幕截图,其中“评估派生值设置”窗口已打开

常规 部分中,我们可以将计算 设置更改为全局计算 1。但是,在本文这个简单的示例模型中,我们可以省略此步骤。注意,模型树中的节点名称更改为计算:全局计算1。

现在,我们可以再次运行该序列。然而,为了让最后一步有意义,我们需要在步骤2:稳态2 的设置窗口中启用稀物质传递 接口。

从命令行运行作业序列

如果我们希望在 Windows® 或 Linux® 操作系统或 macOS 中从命令行运行作业序列,就不能使用上面所示的方法,而是需要使用一个虚拟参数添加参数扫描。然而,如果我们已经运行了参数扫描,那么一个参数扫描就是一种特殊类型的作业序列,然后按照上面的指示,使用作业配置>参数扫描 节点替换作业配置 > 序列 节点。

这是由于软件的不断更新,使得 研究 节点功能不断改进。操作系统命令接口不允许我们运行任何不受顶层控制的 研究 节点下的内容。我们只能指定要运行哪个研究,例如,在 Linux® 操作系统中:

comsol batch-inputfile mymodel.mph——study std1

用 std1 标记进行研究1

我们不能以这种方式运行序列,因为顶层的研究步骤不知道我们在作业配置 节点下的编辑。要使研究节点树顶层的研究步骤“意识到”作业配置节点下的编辑,最简单的方法是添加一个参数扫描,其中包含在全局定义>参数下定义的任意参数。假设虚设 值为1。扫过此参数之后,增加额外的顶层需求来得到一个句柄以从研究 节点的顶层控制作业配置 节点。然后,您可以发出一个命令行批处理命令来运行它。

下图为相应的“虚设”扫描设置

COMSOL Multiphysics 的屏幕截图,其中“参数化扫描设置”窗口已打开

对于虚设参数,下图显示了相应的扫描参数值。

COMSOL Multiphysics 的屏幕截图,显示了虚拟参数的参数化扫描 1 设置

现在,我们知道参数扫描1 节点只是序列 节点的一种特殊类型,解1将模型保存到文件1计算:全局计算1 子节点就像上面使用的 序列 例子中一样。

通过从模型树节点文本 菜单中选择标记,可以在模型开发器 工具栏中显示模型树标记。

COMSOL Multiphysics 中模型开发器的裁剪屏幕截图,其中选择了标签选项

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

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

前面显示的 Linux® 命令现在将运行求解、将模型保存到文件并最终计算全局计算 节点的操作序列。注意,如果模型中只有一个 研究 节点,那么可以跳过输入参数研究 std1

请注意,如果我们的模型中已经有一个参数扫描,它可以是两种类型,可以不严格地称为“内部扫描”和“外部扫描”。在上面的例子中,使用 虚设 参数的扫描是“外部扫描”。研究节点将自动检测使用哪种类型的扫描以获得最佳性能,但如果需要,我们可以手动进行控制。为了从命令行使用作业序列,我们的清除需要的是“外部清除”。

或多或少,所有类型的扫描都可以从内部扫描变为外部扫描,但不能反过来。内部扫描可以更快,因为它们将使用一些计算的底层结构来加快速度。然而,并不是所有类型的清除都可以是内部清除。例如,对一个几何参数的扫描总是需要是外部扫描;同样,这是由求解器自动处理的。要确保参数扫描是外部扫描,请将参数扫描设置中的“使用参数求解器”更改为“关闭”,然后执行“显示默认求解器”操作,并从那里继续。

总结

在求解一个模型之后,作业序列可以用来自动化许多常见的任务。在这篇博文中,我们列举了以下例子:

  • 求解后将模型保存为 mph 文件
  • 求解后自动输出 派生值 至文档

还有其他使用作业序列的任务,我们可以自己尝试练习,包括:

  • 在求解后再生成所有的绘图
  • 导出数据到文件
  • 导出图像数据到文件

希望大家能够发现,作业序列对于我们的日常建模工作是一个非常有用的特性!

Oracle 和 Java 是 Oracle 和/或其附属公司的注册商标。微软和 Windows 是微软公司在美国和/或其他国家的注册商标或商标。Linux 是 Linus Torvald 在美国和其他国家的注册商标。macOS 是 Apple Inc. 的商标,在美国和其他国家注册。


评论 (2)

正在加载...
tx 孙
tx 孙
2021-10-11

请问如何导出空间间距一致的计算数据结果呢

hao huang
hao huang
2021-10-20 COMSOL 员工

您好,右键点击“结果”-“导出”,添加“数据”子节点,在“要计算的点”里选择栅格或“规则栅格”,定义您想要导出的数据坐标即可。

浏览 COMSOL 博客