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

2016年12月20日

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

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

如果您在任何很长一段时间内都使用了模拟工具,则可能发现自己创建的新型号比计算机可以解决的速度更快。如果您的模型快速设置,但要花费大量时间来解决,这尤其普遍。同时在同一计算机上运行多个模型不是一个不错的选择,因为它们会争夺资源(尤其是RAM),因此比顺序或背对背的同时运行时间需要更长的时间。

与Comsol Multiphysics合作是一个很好的职业举动。

那么,建模者该怎么办?

您可以在图形用户界面(GUI)中启动第一个模型,并等待它求解,在GUI中启动第二个模型并等待它求解等等。但是,几个小时或周末只是为了启动下一个模型,谁愿意返回办公室?

幸运的是,有一个解决方案:创建一个外壳脚本,或批处理文件,它会自动启动您的comsol多物理模拟。我将解释如何使用Windows®操作系统在计算机上逐步进行此操作,但是这些想法也适用于其他受支持的平台(MacOS和Linux®操作系统)。

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

让我们从演示如何从命令行中运行单个comsol多物理模型。

首先,我们在comsol多物理GUI(也称为comsol桌面)中创建一个模型文件。由于我们要介绍如何使用新功能,因此模型较小且较少详细,越好。这将使我们能够了解功能并迅速执行测试。一旦您对此功能感到满意,当然,它也可以应用于需要很长时间才能解决的复杂模型。

在此阶段,我们通过使用相对粗糙的网格运行该模型是否正确设置了该模型。这给出了生成默认数据集和一个或两个默认图的其他好处学习模型树的分支。现在我们已经确保正确设置了模型,我们可以完善网格并将文件保存在名称中Model1.mph在我们的工作文件夹中。在此示例中,那就是C:/用户/JF

在这一点上,我们可以关闭Comsol桌面。

接下来,我们打开一个命令提示符窗口,在命令行,进入我们的工作文件夹。我们键入工作文件夹的名称:

CD C:\ users \ jf

然后,我们按进入钥匙。

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

现在,请滚动!

返回命令行,我们键入以下命令,然后按进入

comsolbatch -inputfile model1.mph -outputfile model1_solved.mph

示例命令提示,以在批处理模式下运行comsolMultiphysics®模型。

此命令指示Windows®在批处理模式下启动ComsolMultiphysics®,因此没有图形用户界面。正如语法所建议的,我们使用Model1.mph作为输入和文件model1_solved.mph是带有解决方案的文件。如果我们要省略“-outputfile model1_solved.mph”一部分在上面的命令中,该解决方案将存储在输入文件中,Model1.mph

随着软件运行,在命令行中显示了一些进度信息。片刻后,运行完成,我们可以打开输出文件,model1_solved.mph,在GUI中。我们可以看到,该模型确实已经解决,并且可以在comsol桌面中计算解决方案的情况,可以在交互式上进行交互式过程。

编写和运行shell脚本

现在,我们已经弄清楚了如何从命令行启动comsol多物理模型,让我们看看如何自动运行两个或多个模拟。

让我们创建第二个模型,检查是否正确设置了它,然后将文件保存到我们的工作文件夹中model2.mph。完成此操作,我们可以再次关闭Comsol桌面。

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

comsolbatch -inputfile model1.mph -outputfile model1_solved.mph
comsolbatch -inputfile model2.mph -outputfile model2_solved.mph

然后,我们将其保存在工作文件夹中,作为带有.bat扩展名的纯文本文件。在这里,我们命名了该文件batch_commands_for_comsol.bat

在批处理模式下运行comsol多物理模拟的输入命令的示例。

在命令提示下,仍在我们的工作文件夹中,我们启动batch_commands_for_comsol.bat。在命令行,我们键入:

batch_commands_for_comsol

然后,我们按进入钥匙。

comsol多物理将在没有GUI打开的情况下运行并解决文件中定义的问题Model1.mph。然后,comsol®软件将对文件中定义的问题进行相同的操作model2.mph。运行完成后,我们可以检查文件model1_solved.mphmodel2_solved.mph在Comsol桌面中,看到它们确实包含了这两个分析的解决方案。另一方面,如果我们打开文件Model1.mphmodel2.mph在GUI中,我们看到它们没有改变,仍然包含问题定义,但没有解决方案。

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

通过学习如何从命令行以批处理模式运行comsol多物理模拟,您将能够更有效,轻松地完成项目。

进一步的资源

微软和Windows是美国和/或其他国家的Microsoft Corporation的注册商标或商标。

MACOS是美国和其他国家的Apple Inc.的商标。

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


评论(19)

发表评论
乐动体育app
加载...
Min Yao
Min Yao
2016年12月20日

有用的内容!还想知道如何在模型中选择要计算的研究。它将在指定模型中自动运行每项研究吗?谢谢〜

杰夫·希勒
杰夫·希勒
2016年12月20日

嗨,敏,
很高兴您发现它有帮助。
是的,您可以使用研究标签,然后使用研究标签指定在模型中计算的研究。请参阅《 comsol多物理参考手册》,第1299页。
杰夫

Niklas Rom
Niklas Rom
2016年12月23日

嗨,敏,您可以做更多方便的事情。例如,要在许多值上扫描参数P1,请使用交换机
-pname p1- plist 1,2,3,4,5

乔什·托马斯(Josh Thomas)
乔什·托马斯(Josh Thomas)
2016年12月29日

杰夫

感谢您有用的文章。非常适合Windows!您是否也能够逐步发布Linux?我对如何在Linux上运行Shell脚本特别感兴趣。

-josh

杰夫·希勒
杰夫·希勒
2017年1月3日

嗨,乔什,
我在某个时候没有使用Linux(一年中的轻描淡写),因此我不愿意为如何在Linux上运行Shell脚本的分步说明。此链接看起来很不错,可以作为该主题的介绍:http://linuxcommand.org/writing_shell_scripts.php
至于要使用的comsol命令,在Linux和Mac上是
COMSOL批处理-Inputfile Model1.mph -Outputfile Model1_solved.mph
您将在comsol多人物参考手册(第5.2A版,从第1301页开始)中找到有关linux comsol命令的详细信息。对于Macintosh,相应的部分从第1313页开始。
杰夫

大卫·里斯(David Reens)
大卫·里斯(David Reens)
2017年1月30日

是否有任何方法可以通过命令行的comsolbatch调用来评估派生值的方式?我有一些内存密集的表面集成派生值,我想在没有GUI和大量RAM的机器上运行,这些值或者,也许当在模型上执行comsolbatch时,它默认情况下也可以执行所有派生值?

谢谢,
戴夫

杰夫·希勒
杰夫·希勒
2017年1月31日

嗨,大卫,
comsolbatch呼叫运行求解器序列。但是,您可能能够将派生值重新构架作为探测,并通过求解器序列迫使其评估。
当您准备文件时,该方法与另一个博客中介绍的文件非常相似//www.dvdachetez.com/blogs/the-power-of-the-batch-sweep/,除了您不会扫描参数,因此您将使用批处理节点而不是批处理节点。
Other than that, you’d similarly set up the probe, make sure that it’s evaluated in the study step of interest, and before running the file possibly set up your probe table so it is saved to a plain text file (This way you don’t need to open the mph file to see the value of the probe). And of course, you’d run all the model files you prepared that way via a script as described above.
您需要首先使用一些小型型号尝试一下,然后转到大型型号。如果上面的粗略轮廓不够/清晰,请联系我们的技术支持团队。
杰夫

Victor Zermeno
Victor Zermeno
2017年5月12日

嗨,杰夫,

非常有趣的帖子。感谢分享。
有没有办法可以从命令行中清除comsol文件中的所有解决方案,而无需运行模型?就像是:

comsolbatch -inputfile myfile.mph -norun -clearall -outputfile myfile.mph

干杯,
胜利者

杰夫·希勒
杰夫·希勒
2017年5月12日

你好维克多,
不,据我所知。
最好的,
杰夫

Ying Tang
Ying Tang
2017年5月17日

嗨,杰夫,

我有一个关于导出表的问题。
我正在命令行中进行参数扫描。每批次之后,我想自动将表保存到TXT文件。但是,每次我完成新批次时,导出表文件都会覆盖旧表文件,因为该文件名在comsol GUI中定义是相同的。更改comsol GUI中的导出表文件名是不切实际的,因为批量运行太多。

如何自动导出表并使用不同的名称保存?

感谢您提前回答。

ying

杰夫·希勒
杰夫·希勒
2017年5月17日

你好ying,
由于这仅与博客文章的主题有切线相关,因此我邀请您联系comsol支持(www.dvdachetez.com/support),以获取有关您的问题的帮助。
此致,
杰夫

Nikolaj Feidenhans'l
Nikolaj Feidenhans'l
2017年6月19日

您可以将可执行文件夹添加到Shell脚本中,而不是将文件夹添加到Windows®路径环境变量。像这样:
set exe_path = c:\ program文件\ comsol \ comsol53 \ suptrysics \ bin \ win64
“%exe_path%\ comsolbatch” -Inputfile Model1.mph
“%exe_path%\ comsolbatch” -Inputfile Model2.mph

杰夫·希勒
杰夫·希勒
2017年7月13日

大卫·里斯(David Reens),
这个最近的博客提供了另一种查询的方法:
//www.dvdachetez.com/blogs/how-to-use-job-sequences to-save-data-after-solving-solving-your-model/
最好的,
杰夫

yi yan
yi yan
2019年4月2日

嗨,杰夫,

谢谢您的帖子,这非常有用。
我只是想知道您是否知道如何将Comsol Bash命令的路径添加到Linux群集中。Comsol已成功安装在该系统中。

非常感谢,

杰夫·希勒
杰夫·希勒
2019年4月3日

嗨,yi,
对不起,不,我不。
杰夫

Kriti Agarwal
Kriti Agarwal
2020年2月19日

在同一批处理文件中,是否有任何方法并行运行两个comsol文件?

杰夫·希勒
杰夫·希勒
2020年2月19日 Comsol员工

嗨,克里蒂,
我相信.bat文件中的命令始终是顺序运行的。我可能是错的。但是在任何情况下,您都必须记住,如果您同时运行两个模型,他们将争夺资源。如果模型相对于计算机很小,那很好,但是如果不是,则可能需要花费更多时间才能使模型同时运行,而不是顺序运行。
杰夫

Shant
Shant
2021年4月14日

嗨,克里蒂,
为什么在这种情况下不使用批处理?
这是例子:
//www.dvdachetez.com/blogs/the-power-of-the-batch-sweep/

Mehran Jooya
Mehran Jooya
2020年2月27日

嗨,希勒先生
我正在操作Linux OS(Cent OS)的集群(或服务器)上使用Comsol多物理。我使用此命令来运行并求解名为S4的MPH文件:“ comsol batch -inputfile s4.mph -outputfile s4solve.mph”,然后我下载了s4solve.mph并使用我的系统打开它。但是输出文件没有结果。而升高到1MB到1.55 GB的文件大小。

谢谢

探索comsol乐动体育赛事播报博客