如何在 COMSOL Multiphysics® 中为求解器添加停止条件

2017年 5月 17日

有时,一个仿真运行的时间太久超过了所需的时间,从而使我们无法监控中间结果或有条件地停止运行。这可能会使我们不得不紧紧盯着监视器,随时准备“突袭”。本篇博客,我们将讨论如何在 COMSOL Multiphysics® 软件中自动执行此过程。这样,我们可以忙其他的事情,而软件会在每个步骤之后检查条件。另外,我们还可以选择查看首次违反条件时发生的情况。

停止条件:何时以及如何使用

当满足或违反某个条件时,我们通常希望停止瞬态或参数化求解器。但是我们通常不知道停止条件将要发生的确切时间或参数值。在这种情况下,我们首先需要指定一个足够大的求解时间或参数范围,以便可以合理确定停止条件将被激活。然后,再添加停止条件以终止求解器。

一些物理条件(包括许用应力、温度极限和反应中的物质损耗等)或者计算问题(例如求解器采用的时间步长很小)可能会触发停止。

在 COMSOL Multiphysics 中,可以将停止条件添加到以下求解器:

  • 瞬态求解器
  • 频域求解器
  • 带有参数或辅助扫描的稳态求解器

第一步是定义一个可以在关系或逻辑表达式中使用的标量。此标量可以是在某个感兴趣的点定义的一个量,也可以是一个全局的量,例如域或边界上变量的积分、最大值、最小值或平均值。在 COMSOL 软件中,我们可以使用点探针或组件耦合进行定义。第二步是向求解器配置添加停止条件,条件必须是评估为true或false的语句。

在瞬态求解器中使用停止条件

为了演示如何设置停止条件,我们来看一个瞬态传热问题。当最高温度超过阈值时,设置停止计算(我们也可以使用不同的条件,但是过程是一样的)。

下图为一个由移动的热脉冲加热并通过辐射冷却到周围环境的硅晶片模型。(有关更多详细信息,请查看 COMSOL 案例库中的教程模型:硅晶片激光加热)我们希望通过修正模型,在达到阈值温度时停止计算。

激光加热的硅晶片上的温度分布图。
通过移动的热脉冲加热的旋转晶片上的温度分布。

首先,我们在几何实体上通过求积分值、平均值、最大值或最小值定义一个标量。如果我们对某一特定点感兴趣,可以使用点探针或积分组件耦合。在此示例中,我们监控的标量是最高温度,可以使用最大组件耦合算子来获得。

COMSOL Multiphysics® 的屏幕截图,显示了如何添加最大组件耦合。
添加最大组件耦合算子的步骤。

首次计算研究时,我们使用显示默认求解器 命令打开设置。然后,可以转到求解器配置 下的瞬态求解器 节点并添加停止条件 节点。

屏幕截图显示了如何在求解器配置中添加“停止条件”节点。
在求解器配置中,瞬态求解器节点可添加停止条件节点。

最后一步是在停止条件 设置窗口中添加表达式和条件。

“停止条件设置”窗口的屏幕截图。
瞬态求解器的“停止条件设置”窗口。

当最高温度大于或等于 250°C 时,上述停止条件将停止求解器。因为满足了停止条件,所以求解器在 27.238 秒后停止(即使我们要求它在研究设置中计算 60 秒)。我们可以在求解器序列中添加的警告 节点中看到截止时间。

A screenshot of a Warnings node that has been automatically added to a simulation by the solver.
默认情况下,如果计算因停止条件而终止,则求解器会添加一个 警告节点。

在停止条件设置窗口中,我们使用 COMP1 名称范围,以确定最大的算子和温度变量 T。这些是在组件1 下定义的项目,而求解器序列是全局项目。例如,如果我们的模型中有第二个组件并重新定义了 maxop1,则求解器序列无法确定我们所指的是哪个运算符。因此,我们必须使用组件标识符。

请注意,当条件为真或假时,我们可以选择是否要停止。此外,在停止时输出部分,我们可以决定是否要在满足停止条件之前或之后添加时间步骤。

如果模型开发器中有事件接口,则可以通过在停止条件设置窗口中的停止事件 下添加以将其用作停止条件。

当时间步太小时停止

COMSOL Multiphysics 中瞬态求解器是自适应的。因此,时间步长的选择可基于用户指定的误差容限和计算出的局部误差估计值。当误差估计很高时,该软件将采取越来越小的步长。例如,当解奇异时,就会发生这种情况。如果我们想在时间步长太小时停止求解,而不是试图用越来越小的时间步长来求解奇异点,则可以通过保留变量 时间步长 来添加停止条件。

带有时间步长变量的停止条件的“设置”窗口的屏幕快照。
由于 timestep 是一个预定义的全局参数,因此无需名称范围即可识别它。

参数化求解器中的停止条件

停止条件还可以添加到频域研究以及参数化稳态研究中。参数化稳态研究可以是常规参数化扫描或辅助扫描。在所有这些情况下,应将停止条件 节点添加到求解器配置 > 稳态求解器 下的参数 节点。

该屏幕截图显示了带有停止条件的固定分析的“设置”窗口。
在执行辅助或参数化扫描时,可以在稳态分析中添加停止条件。

注意,与瞬态问题一样,我们需要一个标量变量进行监视,并且必须在停止条件下使用正确的变量范围。

如果你想查看如何在辅助扫描中使用停止条件来执行非标准载荷斜升过程,请查看壳结构的后屈曲分析案例模型。

变量、函数和组件耦合命名空间

停止条件中使用的表达式以及求解器配置中的其他项目必须是全局的才能自动识别。否则,我们必须提供组件名称作为前缀。组件内部的每个变量(包括温度等物理变量,如 T)和函数都是如此。另一方面,在模型开发器中的全局定义定义的 参数将被识别而无需组件前缀。

例如,当提到内置的积分算子时,我们可以简单地使用积分。与此相反,当涉及到在组件 comp1 中定义的积分算子 myint 时,我们必须使用 comp1.myint

下述预定义的常量、变量、函数和运算符可以在求解器配置中使用,而无需标识组件:

  • 物理常数,例如重力加速度 g_const
  • 数学常数,例如 pi
  • 内置全局变量,例如 t 表示时间,freq 表示频率
  • 内置数学函数,例如三角函数和指数函数
  • 内置算子,例如微分和积分算子

有关完整的列表和语法,请参见《COMSOL 参考手册》。

在本篇博客文章中,我们讨论了当满足一个或多个条件时,如何添加条件以停止瞬态或参数化求解器。如果您对此主题或 COMSOL Multiphysics 的使用有任何疑问,请点击下方按钮与我们联系。

相关资源


评论 (2)

正在加载...
梦琦 何
梦琦 何
2024-12-04

如何设置两个物体不接触时作为瞬态研究的停止条件呢?有没有参考案例或者设置方法?

Anran Wei
Anran Wei
2024-12-10 COMSOL 员工

可以用接触面的总接触压力作为判据来指定停止条件,比如在接触目标面上对接触压力solid.Tn做积分,这个量等于0表示脱离接触,再结合时间等信息,写出研究停止的条件表达式

浏览 COMSOL 博客