你知道吗?你可以在 COMSOL 中使用研究节点执行一系列程序化操作,包括求解模型、将模型保存到文件,以及生成和导出绘图组、结果和图像。这篇博客,我们将详细介绍这一实用功能。
编者注:本文最初发布于 2017 年 6 月 21 日。内容和图片现在已经更新。
示例:微混合器模型
为了演示此功能,我们将从案例库中加载微混合器教程模型。该模型位于COMSOL Multiphysics>流体动力学文件夹中,演示了层流静态混合器中的流体流动和质量传输。
该模型首先使用层流接口模拟流体流动。然后,将流体流动模拟的结果作为输入,通过稀物质传递接口计算混合效率。物质将基于流体速度被输送到下游。
该模型的计算时间为几分钟。为了简化模型以更快地运行计算,我们将不求解物质传递。为此,我们将修改第二个研究步骤 (步骤 2:稳态 2)的设置,清除设置窗口中的稀物质传递和反应流,稀物质复选框。
为了加快模型运行速度,我们还可以做一个额外的更改。在网格节点设置中,将序列类型设置为物理场控制的网格,将单元大小设置为极粗。
现在,我们可以计算研究 1,以确保一切正常。结果图显示了沿混合器几何形状的几个切面的速度大小。
使用作业序列自动保存模型
准备好模型后,我们就可以使用作业序列来自动完成模型求解和保存的过程。
要在研究节点下定义操作序列,首先要单击模型开发器工具栏上的相应按钮(眼睛图标),打开显示更多选项对话框。然后,选择求解器和作业配置复选框。
启用此设置后,模型树中会出现一个隐藏的作业配置节点。在常规建模工作中,不需要担心这个节点。它主要存储与求解过程运行顺序有关的底层信息。通常,这种顺序由研究的顶层间接控制,无需启用求解器和作业配置选项。
右键单击作业配置并选择序列选项,添加序列子节点。
接下来,右键单击序列节点,查看运行选项下方的各种选项,这些选项可在运行序列时添加为顺序操作。
- 作业— 可以使用作业选项添加另一个作业配置,以从此序列中运行。
- 解—解选项运行研究树中求解器配置节点下其中一个解节点。
- 其他— 在其他选项下,可以选择外部类来调用外部 Java 类文件。几何选项可创建一个几何节点,例如,与参数扫描结合使用,可生成一系列具有不同几何参数的 MPH 文件。网格选项会生成一个网格节点。方法调用选项将会调用 App 开发器中创建,并添加在全局定义下的方法。
- 将模型保存到文件—将模型保存到文件将求解的模型保存到 MPH 文件中。
- 结果— 在结果选项下,可以选择绘图组来运行所有或选定的绘图组。使用绘图组选项可以自动生成绘图组,即不必在求解后手动点击所有绘图组来生成相应的可视化结果。派生值选项是根据惯例设置的,建议使用计算派生值选项,该选项将计算结果>派生值下的节点。导出至文件选项可以在导出节点下运行任何节点来进行数据导出。
注:通过添加序列节点执行的所有操作也可以通过编写 Java API 代码和使用方法编辑器来实现。一般来说,在用户界面中执行的任何操作也可通过 COMSOL API 执行。
现在让我们创建一个简单的序列。右键单击序列节点,选择解选项。
一般来说,根据模型及其研究,不同的研究将定义多个求解器序列。在解节点设置的常规部分,运行设置可指定要计算的求解器序列。默认情况下,全部选项会为所有研究运行求解器配置下的所有求解器序列。通常,需要将运行设置为你打算运行的特定求解器序列。
在本例中,求解器序列解1 (sol1)包含求解器配置>求解器 1下所列的操作。同时,解数据结构解存储 1 (sol2)用作稳态求解器 1计算出的解的辅助存储,与解序列无关。因此,在这种情况下,我们将选择解1 (sol1)。
求解器完成求解后,我们需要保存文件。为此,右键单击序列节点并选择 将保存模型到文件。
在将模型保存到文件设置窗口中,可以看到一系列选项,用于保存一系列 MPH 文件,并在文件名末尾添加参数。这些选项对于批量扫描等参数扫描非常有用。不过,在这种简单示例中,并不需要这样做,因此我们将为将参数添加到文件名设置中选择无选项。在此阶段,我们还需要为有写入权限的位置提供文件名。在本例中,文件名和文件路径为C:\COMSOL\myfile.mph。
要运行这些操作,请选择序列节点并单击运行。
在 COMSOL Multiphysics®中求解模型后导出数据
我们使用的案例库模型微混合器已经定义了一个派生值。您可以在结果>派生值>全局计算中看到。该变量名为S_outlet,是出口处的相对浓度方差,其定义位于组件>定义>变量下。
S_outlet的值被发送到表 1。我们可以通过更改表 1设置窗口中的设置,将此值存储到文件中。将存储表设为在文件中,并指定文件名,例如C:\COMSOL\my_data.txt。
现在,在序列中添加计算派生值操作。
在计算派生值节点设置的常规部分,如果你想计算所有量,可以将计算设置从全部改为全局计算 1。请注意,选择此选项后,模型树中的节点名称将变为计算:全局计算 1。不过,在这个简单的示例模型中,只有一个模型树节点需要计算,可以省略这一步。
在结果部分,将目标表格更改为新表格。
再次运行序列前的最后一步是在步骤 2:稳态 2的设置窗口中启用稀物质传递接口 和反应流,稀物质选项,以求解物质传递(我们最初为了更快地运行模型跳过了这一步)。
现在,我们可以运行序列了。
从研究层或命令行运行任务序列
要从主研究节点或命令行运行作业序列,可以使用参数化扫描来代替上述方法。参数化扫描是一种特殊类型的作业序列,与上述说明基本相同。不过,在这种情况下,作业配置>参数扫描节点扮演了作业配置>序列节点的角色。
在添加参数化扫描节点之前,请删除作业配置>序列节点及其子节点。
然后,在研究 1下添加参数化扫描。但是,默认情况下,顶层研究节点不识别作业配置下的作业序列。同样,命令行接口也不允许在研究节点内直接执行作业序列;它只支持运行整个研究。在全局定义>参数下添加一个虚设参数(例如,dummy = 1),就能为识别引入必要的识别机制,从而可以直接从研究 1或通过命令行执行。
对应的参数化扫描显示方式如下图所示:
现在,右键单击研究 1并选择显示默认求解器。这将在作业配置下添加一个参数化扫描节点。
注意:如果你正在使用其他模型,可能需要先在研究 1 的高级设置中,将使用参数化求解器切换为关闭,
的节点才会出现在作业配置的下方。
下图显示了对一个虚设参数的一个参数值的对应扫描。既然参数化扫描 1节点只是序列节点 的一种特殊类型,我们可以为其添加将模型保存到文件和全局计算节点,让它们与自动创建的解子节点搭配使用。这些子节点的操作与之前使用序列节点的示例相同。
要从模型开发器运行作业序列,请右键单击研究 1节点并选择计算。
使用命令行接口
如果希望使用命令行接口(如 Windows®操作系统中的命令提示符窗口)运行作业序列,添加了虚设参数后,就可以键入如下命令:
comsolbatch -inputfile mymodel.mph -study std1,
其中,std1是研究 1的标签, 而mymodel.mph会被替换为实际的文件名。
要在命令提示符中运行该命令,需完成以下步骤:
- 确认 COMSOL®可执行文件的路径已经被添加至 PATH 环境变量。
- 打开命令提示符,切换至存放输入文件的目录。
- 输入指令,按下回车键执行。
查阅博客如何从命令行运行 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
从文件资源管理器中复制了comsolbatch.exe文件的路径。
就像在 COMSOL Desktop®上运行研究一样,该命令将执行一系列操作,包括求解、将模型保存到文件,以及最后对全局计算节点进行计算。请注意,如果模型中只有一个研究节点,则可以省略输入参数study std1。
要显示模型树标记,请从模型开发器工具栏上的模型树节点文本菜单中选择标记。
研究标记std1现在在模型树中可见:
请注意,如果模型中已经有参数化扫描,则每次扫描都将是 内部扫描 或 外部扫描。上例中使用虚设参数的扫描是 外部扫描。研究节点会自动检测使用哪种类型的扫描以获得最佳性能,但您也可以根据需要手动确定。要使用命令行作业序列,你的扫描必须是 “外部扫描”。
几乎所有类型的扫描都可以从内部扫描变为外部扫描,但反之则不行。内部扫描可以更快,因为它们会使用计算的一些底层结构来加快速度。然而,并非所有类型的扫描都可以是内部扫描。例如,对几何参数的扫描必须是外部扫描;同样,求解器会自动处理。要确保参数扫描是外部扫描,请将参数化扫描设置中的使用参数求解器更改为关;然后执行显示默认求解器操作并继续。
下一步
求解模型后,作业序列可用于自动执行许多常见任务。在这篇博客中,我们演示了如何:
- 将模型保存为 MPH 文件
- 将派生值导出到文件
你还可以自己尝试其他使用工作序列的任务,包括:
- 求解后重新生成所有绘图
- 将绘图数据导出到文件
- 将图像数据导出到文件
希望作业序列能成为您日常建模工作中的一项有用功能!
Oracle 和 Java 是 Oracle 和 / 或其附属公司的注册商标。Microsoft 和 Windows 是微软公司在美国和/或其他国家的注册商标或商标。




评论 (0)