如何从命令行以批处理模式运行仿真

作者 Jeff Hiller
2016年 12月 20日

你有没有发现自己在 COMSOL Multiphysics® 软件中创建新模型的速度比在 COMSOL Desktop® 环境中以交互方式启动它们的速度更快?如果在启动下一个模型之前必须等待当前模型完成求解,这听起来并不吸引人。那么,现在是学习如何从命令行以批处理模式运行仿真的时候了。事实证明,这是一个非常简单的过程。

为什么要从命令行以批处理模式运行 COMSOL Multiphysics®?

如果你在任何一段重要的时间内使用过仿真工具,你可能会发现自己创建新模型的速度比计算机求解它们的速度要快。如果你的模型设置时间很短,但却需要相当长的时间来求解,那么这种情况尤其常见。在同一台计算机上同时运行多个模型不是一个好的选择,因为它们会争夺资源(特别是 RAM),因此同时运行比顺序运行或连续运行要花更长的时间。

使用 COMSOL Multiphysics 是一个很好的职业转变

那么,建模师需要做什么?

你可以在图形用户界面(GUI)中启动第一个模型并等待它求解,在用户界面中启动第二个模型并等待它求解,以此类推。但是谁会愿意下班后或周末回到办公室,只是为了运行他们的下一个模型呢?

幸运的是,对于这个问题我们有一个解决方案:创建一个shell 脚本批处理文件,它们会自动一个接一个地启动 COMSOL Multiphysics 仿真。下面,我将解释如何在装有 Windows® 操作系统的计算机上逐步执行此操作,这也适用于其他支持的平台(macOS 和 Linux® 操作系统)。

如何从命令行运行单个模型

我们首先演示如何从命令行运行单个 COMSOL Multiphysics 模型。

首先,我们在 COMSOL Multiphysics 用户界面中创建一个模型文件,也称为 COMSOL 桌面。因为我们正在讨论如何使用一个新功能,所以模型越小越好。这将使我们能够快速理解其功能并对其进行测试。一旦熟悉了这种功能,它也可以应用于需要很长时间才能求解的复杂模型。

在这个阶段,我们通过运行一个相对粗糙的网格来检查模型是否正确设置。这显示了在模型树的研究分支中生成默认数据集和一个或两个默认绘图的额外好处。现在我们已经确保正确地设置了模型,就可以细化网格并将文件保存在在我们的工作文件夹中的 Model1.mph 名称下。在本例中,就是 C:/Users/jf

这时,我们可以关闭 COMSOL 桌面。

接下来,我们打开一个命令提示符 窗口,并在命令行中进入我们的工作文件夹。我们输入工作文件夹的名称:cd C:\Users\jf

然后,按 Enter 键。

我们即将使用 comsolbatch 命令调用 COMSOL® 软件。在这样做之前,我们需要确保 Windows® 操作系统知道在哪里可以找到这个命令。如果我们之前没有这样做过,我们可以将 COMSOL® 软件可执行文件的路径添加到 Windows® 路径环境变量中。在运行默认安装了 Windows® 的计算机上,这些可执行文件位于 C:\Program Files\COMSOL\COMSOL52a\Multiphysics\bin\win64

好,我们开始了!

回到命令行,我们输入以下命令,然后按 回车

comsolbatch -inputfile Model1.mph -outputfile Model1_solved.mph

在批处理模式下运行 COMSOL Multiphysics® 模型的命令提示符示例

此命令指示 Windows® 在批处理模式下启动 COMSOL Multiphysics®,因此没有图形用户界面。正如语法所暗示的那样,我们将其 Model1.mph 用作输入,并且该文件 Model1_solved.mph 是带有解决方案的文件。如果我们省略-outputfile Model1_solved.mph 在上面的命令,解决方案将存储在输入文件中 Model1.mph 中。

随着软件的运行,命令行上会显示一些进度信息。几分钟后,运行就完成了,我们可以在用户界面中打开输出文件 Model1_solved.mph。我们可以看到,模型确实已经被求解了,并且我们可以交互地对结果进行后处理,就像我们在 COMSOL 桌面中计算了解一样。

编写和运行 Shell 脚本

现在我们已经了解了如何从命令行启动 COMSOL Multiphysics 模型,接下来让我们看看如何自动连续运行两个或多个仿真。

让我们创建第二个模型,检查它是否正确设置,并将该文件保存到名为 Model2.mph 的工作文件夹中。完成后,我们可以再次关闭 COMSOL 桌面。

使用记事本等文本编辑器,我们创建一个包含以下两行的纯文本文件:

comsolbatch -inputfile Model1.mph -outputfile Model1_solved.mph
comsolbatch -inputfile Model2.mph -outputfile Model2_solved.mph

然后,我们将其保存为扩展名为 .bat 的纯文本文件。在这里,我们将文件命名为 Batch_Commands_For_COMSOL.bat

在批处理模式下运行 COMSOL Multiphysics 仿真的输入命令示例。

在命令提示符下,仍然在我们的工作文件夹中,我们启动 Batch_Commands_For_COMSOL.bat 在命令行中,我们输入:

Batch_Commands_For_COMSOL

然后,按 Enter 键。

COMSOL Multiphysics 将在不打开用户界面的情况下运行并求解文件中定义的问题 Model1.mph。COMSOL® 软件随后将对文件中定义的问题执行相同的操作 Model2.mph。运行完成后,我们可以在 COMSOL Desktop 中检查文件 Model1_solved.mphModel2_solved.mph,查看它们是否确实包含这两种分析的解。在另一方面,如果我们在用户界面中打开文件 Model1.mph,和 Model2.mph,我们看到,他们没有改变,仍然含有问题的定义,但没有解决方案。

如果我们想顺序运行两个以上的文件,我们可以相应地修改 .bat 文件并为我们希望运行的每个文件添加行。

通过学习如何从命令行以批处理模式运行 COMSOL Multiphysics 仿真,我们将能够更高效和更轻松地完成项目。

更多资源

Microsoft 和 Windows 是 Microsoft Corporation 在美国和/或其他国家/地区的注册商标或商标。

macOS 是 Apple Inc. 在美国和其他国家/地区的商标。

Linux 是 Linus Torvalds 在美国和其他国家/地区的注册商标。

 


评论 (7)

正在加载...
鑫一 胡
鑫一 胡
2021-09-19

找到了comsolbatch,但是无法通过命令进行使用

洋洋 张
洋洋 张
2021-09-24 COMSOL 员工

麻烦您将问题的详细描述发送至support@comsol.com,我们会有专业工程师为您解答

qingliang zeng
qingliang zeng
2022-06-03

你好,请问如何同时提交多个任务进行计算,并且设置每个任务对应的物理核数

Qihang Lin
Qihang Lin
2022-06-22 COMSOL 员工

您好,通过作业脚本可以提交多个作业,每个脚本中的命令行通过开关项 np 指定运行时的核数,例如:comsolbatch -np 8 ….. 表示使用 8 个核进行运算

俊 彭
俊 彭
2024-06-12

请问如何以命令行的形式提交多个任务做并行计算,并分配他们的核数?

Yuqing Ge
Yuqing Ge
2024-06-24 COMSOL 员工

您好,如果您是对一系列参数进行扫描,可以参考博客:从命令行运行参数化扫描、批处理扫描和集群扫描 https://cn.comsol.com/support/knowledgebase/1250
如果您是对一些列不相关的模型进行并行,您可以结合本博客,并参考DOS命令中的start命令。

俊 彭
俊 彭
2024-06-26

谢谢您的解答,我在集群的一个节点上提交comsol批处理扫描文件时,logfile文件反馈error in sweep。同一个模型,同样的提交脚本,我第一次成功通过命令行使用了批处理扫描,但之后试图复现却一直报错。请问这是什么原因呢?
Error in sweep.
– Parameters: “It”,”12″
Process status indicates that process is running.
– Status: Running

浏览 COMSOL 博客