批处理扫描功能的优势 您所在的位置:网站首页 comsol探针表数据处理 批处理扫描功能的优势

批处理扫描功能的优势

2023-10-12 04:26| 来源: 网络整理| 查看: 265

你是否曾经通宵运行大量的参数化扫描,第二天早上却发现参数化求解器仍在运行?你或许希望在等着最后几个参数的收敛的时候,能够查看已计算好的参数解。批处理扫描 功能是解决上述问题的有效方法,计算好的参数化解会自动保存为文件,便于打开进行可视化及结果评估。

编者注: 这篇博客最初发表于 2016 年 2 月 2 日,现在已经更新用于反映软件的新特征和新功能。

批处理扫描:众多仿真分析的有效解决方案

在以前的一篇博客文章中,我们探讨了批处理扫描中任务并行的附加值。今天,我们将讨论批处理扫描的另一个重要功能:在求解过程中检索参数化扫描的解。使用批处理扫描可以随时检索部分解,即使在求解器无法计算某些参数时,也可以这样做。当所研究的问题中每个参数的解都独立于其他所有参数的解时,就适合采用批处理扫描。

在求解器扫描过程中,许多情况下会希望查看部分结果。例如:

在扫描输入数据表时,你会发现求解表中所列的一部分数值所需的时间格外长,但却无法判断具体是哪些值。你仍希望求解尽可能多的参数以查看对应的解,从而判断是中止求解过程,还是在整个扫描完成之前就开始分析结果。 你在用数学表达式描述某一材料属性或边界条件,结果却得到某些参数的非物理结果。 你用 C 语言或 FORTRAN 语言编写了一个有关定义复杂材料的外部函数,但未检查所有的输入数据,结果某些参数值的输出数据出现了异常。 你正运行一个含有几何尺寸参数的参数化扫描,但参数的尺寸范围不小心定义得太宽了。当你意识到这一点时,求解已经运行了很长时间,所以不希望停下来。

如果以上任何一种情况中使用了批处理扫描,那么每个参数都在一个能独立开始和停止的进程中求解。每一个求解完的参数值都被存储为一个.mph 文件,你可以在求解过程中打开任何一个这样的文件进行查看。在下面的示例中,你还会了解如何将探针结果保存到文本文件中。

一个静电传感示例

为了演示批处理扫描,我们采用 COMSOL Multiphysics® 核心产品的“案例库”中的电传感器示例。这个示例模型介绍了在盒子边界施加电位差后,盒内的情况。其中产生的表面电荷取决于盒内物体的介电常数,用于判断盒内是否存在物体,甚至可以帮助确定物体的形状。例如电阻抗断层成像采用了一种类似的技术用于医疗诊断,只不过这种技术使用的是交流电。

电传感器模型中盒外的表面电荷。 盒外的表面电荷。

屏幕截图显示了盒内待检测的物体。 盒内待检测的物体。

初始模型中,物体拉伸到 0.8 米厚。在这个示例中,拉伸距离改为 0.5 米。

参数化扫描的输入数据

假设有一组十个样本物体,其形状相同,但制作材料的介电常数值不同。我们要探究的是物体及其形状的检测能力,而不管物体的制作材料是什么。十个样本的介电常数值已存储在内插表 int1 中。我们不会真的在这个表中插入任何值,只是把它作为存储和调用表列值的简便方法。(在这里,我们将内插方法从默认的线性内插 改为最相邻内插,但在本示例中结果不变。)

模型开发器中的介电常数表格。 介电常数的表格。

现在用全局参数 sn(样本编号的英文缩写)对这个样本组添加索引。

使用全局参数对样本组添加索引。 样本编号参数 sn 作为全局参数。

此模型在“材料”节点下定义了三种材料。“材料 3”表示盒内的星形物体,“材料 2”表示另一个物体。“材料 1”对应盒内物体周围的空气。我们调用了内插表 int1,使用其中的值作为“材料 3”的材料属性定义中星形物体的介电常数。使用语法 int1(sn)。请注意,这里没有考虑单位,因为介电常数没有单位。

星形物体的介电常数。 星形物体的介电常数取自通过参数 sn 进行索引的表。

探测表面电荷

为了监控星形物体上方的表面电荷,我们在上表面的位置 x = 1.5,y = 1.5,z = 1.0 处定义了一个“边界点探针”。要快速定义此位置,只须在上表面靠近物体上方的大致位置处单击,然后在设置 窗口中手动调整坐标值。

所研究物体上方的边界点探针。 所研究物体上方的 边界点探针

至于“点探针表达式”,我们选择用变量名 es.nD 和单位 nC/m^2 来表示表面电荷的大小(模值)。

点探针表达式设置窗口的近视图 单位为 nC/m^2 的表面电荷的 点探针表达式

稍后,我们会将此探针的输出写入文本文件。为此,单击更新结果。这一操作会生成派生值 和表格项。

边界点探针设置中的更新结果按钮 探针的 更新结果 按钮

在 COMSOL Multiphysics® 中设置批处理扫描

默认情况下不会显示批处理扫描选项。要启用该选项,在模型开发器的工具栏中选择显示更多选项。在显示更多选项 对话框选择研究>批处理和集群。

显示更多窗口中打开的批处理和集群研究 高级研究选项,在模型开发器中的 显示更多选项菜单激活

如果右键单击研究 节点,可以在列表中选择批处理扫描 (单次运行,选择批处理,不要选择批处理扫描)。

 COMSOL Multiphysics中的批扫描菜单选项。 从 研究菜单中选择 批处理扫描

在如何定义扫描范围方面,批处理扫描与参数化扫描相似。在这里,我们使用整数 1 到 10 来定义参数 sn 扫描时的步长。

扫描的参数范围。 批处理扫描的参数范围。

批处理扫描 模型树设置 窗口的批处理设置 栏中包含了用于控制结果的设置。

在批量扫描设置窗口中展开的批量设置部分的屏幕截图。 控制批处理扫描的设置。

默认文件名为 batchmodel.mph,用于自动创建一个 MPH 文件序列,其中的每个文件对应于扫描中的每个参数。文件名可以更改,不过对于此演示示例,我们仍保留此文件名,生成的MPH文件名将分别为 batchmodel_sn_1.mph,batchmodel_sn_2.mph,……,batchmodel_sn_10.mph。稍后我们会探讨这其中的每个文件为何是一个完整的模型,可以单独打开并执行后处理。

扫掠前 一栏有两个选项:清除网格和清除解。我们清除了这两个复选框,因为只有在执行远程集群计算或云计算时,这两个选项才真正有用,因为这时我们希望经网络传递的文件尽可能小(只有使用网络浮动许可证时才能这样做)。

在扫描过程中 一栏有两个选项:同步解 和同步累积探针表。同步解 将存储的所有文件中的结果收集到我们要开始仿真的“主模型” MPH 文件中,最终结果与运行参数化扫描的结果极其相似。我们选择清除这个复选框,因为在这个示例中我们假定只希望查看每个结果。此外,如果扫描的数量过于庞大,则收集全部结果可能要消耗大量的时间和内存。同步累积探针表 保持选中,表示对探针的输出结果进行累积,与完整的求解信息相比,收集这种信息非常轻松。

在扫掠后 一栏中,我们勾选输出模型到文件 复选框,这确保了自动保存的 MPH 文件包含解(对应每个参数)。

下一个设置是存储所有这些文件的目录(此处是 C:\COMSOL)。

如果你有网络浮动许可证,并且希望使用远程安装的 COMSOL 软件执行这一计算,那么可以使用指定服务器路径 选项。本文中,我们只讨论包括单用户许可证在内的 COMSOL 所有许可证类型都能使用的功能。

将探针数据保存到文件

要将探针数据保存到文件,不能使用常规的探针表。而要使用一种特殊的累积探针表。第一步是手动添加一个探针表,即右键单击结果下的表格 节点,将表格名称改为保存的探针表。稍后,我们会通过批处理扫描在其中写入“累积探针表”的数据。当异步生成的数据要在表格中按照一定的顺序排列时,就可以使用“累积探针表”。请记住,一般而言,我们不清楚不同的参数对应的解应该按照什么顺序排列,而“累积探针表”帮我们解决了这一难题。

屏幕截图显示了如何添加保存的探针表 手动添加“保存的探针表”。

在“保存的探针表”的设置中,将存储表 设置改为模型和文件中。在本示例中,我们将探针结果保存到 C:\COMSOL\results.txt。如果扫描的数量过于庞大,则可能需要提高最大行数 的值(这通常适用于需要大量扫描的情况或瞬态解)。

保存的探针表设置的屏幕截图。 “保存的探针表”设置。

在批处理扫描 设置的求解时输出 一栏中,将输出表 改为保存的探针表。这就是我们的“累积探针表”。

突出显示具有批处理扫描的模型开发器,并展开具有求解时输出部分的相应设置窗口。 “保存的探针表”用作“累积探针表”。

运行批处理扫描

现在可以单击计算 启动批处理扫描。求解过程中,在图形 窗口下的信息窗口中会看到一个外部进程 窗口。

外部进程窗口屏幕截图 外部进程窗口。

通过“外部进程”窗口,我们可以了解正在运行的批处理进程及其状态的概况。在我们的示例中,共有十个这样的进程,分别对应扫描中的每一个参数。

在这个阶段,大部分的用户界面不能交互,不过可以单击进度条左侧的脱离作业,重新获得对用户界面的控制。

脱离作业选项 脱离作业 选项。 使用 脱离作业后,就看不到进程状态的实时更新了,不过这时可以对各个进程执行操作。

屏幕截图显示了脱离作业后外部进程窗口。 脱离作业后的 外部进程窗口。

此时可以停止所有进程,或者单击某一行来停止该进程。甚至可以单击表中状态为完成 的进程,在另一个 COMSOL Desktop 窗口中打开它。在新打开的窗口中,可以执行任何可视化操作或后处理任务,就像通常对模型所做的那样。

外部进程窗口的打开文件选项。 选择一个完成的外部进程,单击 打开文件,即可在一个新的 COMSOL Desktop 窗口中显示结果。

要重新显示进程状态的实时更新,单击外部进程 窗口左上角的附加作业。

屏幕截图显示了外部进程窗口的附加作业选项。 对 外部进程窗口附加作业。

探针结果文件

可以使用 Notepad 等文本编辑器打开包含探针输出的 results.txt 文件。

探针结果近图 包含边界点探针结果的 results.txt 文本文件。

在求解过程中也可以查看这个文件,从而在全部参数都完成收敛之前快速浏览结果。不仅是批处理扫描可以这样做,对于常规的参数化扫描,在表格保存为文件后也可以在求解过程中查看。

使用批处理扫描功能时需要考虑的其他因素 性能

如果扫描中每次计算速度都很快,且不需要很大的内存,就如上面的示例,那么批处理扫描所需的计算时间会比常规的参数化扫描的时间长。因为采用批处理扫描时,每个参数都会启动一个 COMSOL Multiphysics 进程。如果扫描中每个参数的计算都比较费时,那么这个额外启动进程的时间就相对较短,可忽略不计。

参数错误处理

假设我们调用的是用户定义的外部 C 语言函数,而不是内插表。再假设我们在 C 代码中犯了一个编程错误,导致一个或几个参数在扫描时出现“段错误”。这种情况下,我们仍然可以浏览 C:\COMSOL 目录(或者指定保存 .mph 文件的目录),打开其中的文件执行可视化及后处理,甚至是进一步的计算工作。

在上面的示例中,演示此类错误的一个简单方法是将其中的一个介电常数值设为零,然后启动批处理作业。介电常数为零意味着我们向求解器提供了一个定义模糊(甚至是异常)的方程(类似于 0 = 1),此时会显示一条错误消息,提示求解器找不到出错参数的对应解。同样地,仍可以打开保存的 .mph 文件并执行后处理。如果更正了表格,将介电常数为零的那一项改成非零,则可以重新运行批处理作业,而不会收到错误消息。请注意,如果错误一直存在,则对外部进程 窗口附加作业时始终会提示错误。此时,仍会更新“累积探针表”中与其他参数对应的项。更正错误后继续运行扫描,对外部进程 窗口附加作业后就可以再次访问该窗口了。

多核处理管理

如果你在使用一台多核机器,这是现代电脑的常见配置,那么可以更改批处理 的相关设置,控制批处理扫描中可运行的并发进程数,以及每个进程可用的内核数。假如使用的是六核机器,那么可以将并发作业数 改为三,将内核数 改为二。这样设置后,可以并行求解三个参数,每个求解器进程可使用两个内核,所以对于上面的示例,仿真时间减少了一半。

如果所执行的仿真中每个参数的计算量都很少,那么可以增加并发作业的数量,使其与计算机的内核数相同。对于计算量较大的问题,应该将并发作业数保留为一,以完全利用求解器的多核处理能力。

多核批处理设置。 “批处理”设置中的“并发作业数”和“内核数”。

请注意,也可以在批处理扫描 节点研究扩展 一栏下控制并发作业数。这种情况下,软件会用实际内核数除以并发作业数,自动计算出“内核数”。(要实现自动计算,务必不要勾选批处理 设置下的内核数 复选框,因此不会使用以灰色显示的数字 1。)

批处理扫描和 App 开发器

借助“App 开发器”,可以在用于构建 App 的模型中使用批处理扫描 节点。此时,App 充当批处理扫描的“驱动”,且无法在外部进程 窗口中看到相关信息。也无法在该窗口中看到保存的 .mph 文件,如同此 App 根本没有用户界面。运行结束后,可以打开这些文件进行传统的模型后处理工作。如果需要更灵活地创建可使用批处理扫描 的 App,可以使用一个内置的方法来包含批处理扫描 ,详细请参考 Programming Reference Manual。(注意,在这里使用“录制代码”工具的作用很有限,因为在生成录制的代码时会与实时运行的批处理命令冲突。)

批处理扫描 vs 集群扫描

COMSOL Multiphysics 的所有许可证类型都可以使用批处理扫描 功能。如果你有网络浮动许可证,则还可以使用集群扫描 这一附加功能。这两个扫描功能很相似,不过集群扫描 选项多了远程计算和集群配置等设置。“集群扫描”功能可以将大量扫描分散到一个(很可能是大型的)集群上。这种做法显著提高了效率,因为独立扫描(也称作易并行计算)所涵盖的范围通常很广。如果你已熟练掌握了批处理扫描,那么运行集群扫描也不是什么难事。

下一步

想自己探索一下这篇博客中讨论的模型吗?欢迎查看 COMSOL 案例库下载:

电传感器 电传感器批处理 拓展阅读

阅读 COMSOL 博客,了解更多关于批处理扫描和集群扫描的文章:

混合计算系列博客 如何使用集群扫描节点 COMSOL Multiphysics® 如何在 COMSOL Desktop® 环境中运行集群 批处理扫描中任务并行的附加值


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有