问题描述

我正在求解一个瞬态模型,并在“研究设置”的时间步:框中更改了步长,但求解器仍然采用完全相同的时间步长。求解器采用的时间步长似乎与我指定的步长无关。这是为什么?

我增加了模拟的总时间跨度,现在求解器的时间步长和结果与之前完全不同。为什么?

如何使求解器采用不同的时间步长?

解决方法

以下屏幕截图中显示的时步:框中的步长条目仅控制数据写出的时步。默认情况下,增加起始时间与结束时间之间的输出时步数不会改变求解器实际采用的时步。软件在内部使用自适应或固定的时间步进。在使用自适应时间步进时,软件会根据总仿真时间计算初始时步,因此,更改总仿真时间会影响时步和结果。

默认输出时间

瞬态求解器的默认设置。

自适应时间步进

默认情况下,COMSOL Multiphysics 中的大多数瞬态问题都使用自适应时间步进方案进行求解。这意味着,软件将自动调整时间步长以保持所需的相对容差。其默认设置为物理场控制,如上面的屏幕截图所示。您也可以将该设置改为用户控制,然后可以手动输入不同的相对容差,如下面的屏幕截图所示。将相对容差降至较小的数值可以减小时步,从而提高解的精度,但同时会增加求解时间。

修改后的相对容差

用户控制的相对容差。

使求解器减少时步以及验证模型的方法是,使用更严格的相对容差重新求解模型,以及使用更细化的网格重新求解。为了确保瞬态模型结果的可信度,您必须将模型与采用更细化网格和更小时步运行的其他模型进行比较。通过此操作来验证模型结果,这一点非常重要。

如果您的模型包含随时间突然变化的载荷,则还应在模型中包含事件接口。此接口将告知求解器如何准确捕获解的突然变化。有关如何使用事件的指导信息,请参见:知识库 1245:求解包含时变脉冲载荷的模型

当求解器启动时,它会根据总仿真时间来估计要采用的初始时间步长。因此,如果您对同一模型求解两次,并且其总时间不同,则初始时步可能不同。如果在开始求解后立即发生了一些重大事件,这可能会导致不同的结果。要指定初始时间步长,请转到瞬态求解器设置,在时间步进栏中启用初始步长:选项,并输入固定的初始步长大小,如下面的屏幕截图所示。请注意,软件仍然可以自由选择小于该值的时步,但不会使其变大。此外,您还可以酌情考虑是否可以改用事件

指定初始时步。

指定求解器尝试采用的初始时间步长。

在求解过程中,求解器将根据需要自动减小时步,以解析解中的任何快速变化。在解仅发生逐渐变化的期间,求解器还会增大时步。您可以控制所采用的最大时步,方法是转到瞬态求解器设置的时间步进栏,将最大步长约束:的默认值自动改为常数表达式,如下面的屏幕截图所示。常数选项用于指定可能的最大时步,表达式选项可以使最大时间步长约束根据模型中的任意全局表达式发生变化。

指定可能的最大步长

指定求解器可能采用的最大时间步长。

我们不可能显式控制自适应时间步进采用的最小时步。当您观察到求解器采用非常小的时步时,表明模型正在接近一个奇点,解正趋于无穷大;或者在给定的当前相对容差和网格大小条件下,解的变化速度快于可解析的速度。另请参见:知识库 1261:执行网格细化研究知识库 1127:提高非线性瞬态模型的收敛性以及知识库 1240:手动设置变量的缩放比例

手动设置时间步进

您也可以在模型中使用常数时间步进方案。默认情况下,瞬态压力声学模型等几类问题使用固定时步求解。使用固定时步可以更好地求解许多波型问题(其中的解场在时间和空间上发生振荡)。 为了确定软件是否使用固定时步,可以转到“瞬态求解器”设置的“时间步进”栏,其中显示解的计算方法。这些方法是向后差分公式广义 α龙格-库塔法。有关这些方法的描述,请参见知识库 1062:向后差分公式法、广义 α 法和龙格-库塔法。方法下方有一个求解器采用的步长下拉列表,其中包含自由中级精确手动选项。自由选项支持求解器自由选择时步,如上所述。手动时步选项支持您使用固定时步。

修改时间步进

切换求解器采用的步长选项。

使用手动时间步进时,您可以显式设置所采用的时步,并且相对容差条目不再影响求解器特性。有关如何为波型问题选择时步的指导信息,请参见:知识库 1118:向后差分公式,解析瞬态波知识库 1244:求解载荷呈阶跃变化的波型问题

其他求解器选项

除此之外,软件还提供其他两个时间步进选项:中级精确。这两个选项强制求解器采用额外的时步,从而修改自由时间步进算法的特性。使用中级选项时,求解器将在请求的输出时步的每个间隔内采用一个额外时步,但求解器仍可以自由选择这一中级步骤发生的时间。精确选项强制求解器严格按照请求的输出时步采用合适的时步。因此,当您使用其中任一选项时,请求的输出时步都将影响求解器的时步。我们很少使用这些选项,这是因为,与前面讨论的收紧相对容差、使用事件或设置最大步长相比,它们通常没有明显的优势。

如果您想要以求解器采用的精确时步输出结果,请转到瞬态求解器设置的输出栏,将要存储的时步:设为求解器采用的步长,如下所示。请注意,此选项可能会生成大量输出数据。使用指定值选项(默认设置)时,软件将通过在求解器采用的实际时步之间进行插值,在请求的时间点写出数据。

保存求解器采用的步长

保存求解器采用的时步数据。

如果您想要减少模型中存储的数据量,另请参见:知识库 1255:减少模型中存储的数据量