解决方法编号: 1172
标题: 求解初始值不一致的瞬态模型
平台: 所有平台
适用于: 所有产品
版本: 所有版本
类别: 错误消息, 物理场, 物理场
关键字: failed to find consistent initial values, boundary conditions, CFD

问题描述

在设置瞬态模型时,一个常见的错误是初始条件与载荷和边界条件不一致。在运行瞬态流体流动研究时最容易出现这种问题,但在任意瞬态模型中也可能出现同类问题。

可以观察到在仿真开始时,求解器采用非常小的时间步长,或者求解器将报告类似如下的错误消息:

找不到一致的初始值。
最后一个时间步不收敛。

解决方法

背景

我们以一个简单的流体流动模型为例来说明这个问题及其解决办法,如下图所示。该模型求解二维通道(尺寸为 3m x 1m)中流体的层流 (),通道左侧有一个入口,右侧有一个出口。入口处指定的速度为 1 m/s,出口处指定了零压力边界条件。通道中的初始值保留其默认值,即 (u,v)=(0,0) 和 p=0。您可以在此下载相应的模型文件。

这些边界条件导致在仿真开始时,入口的速度值 u=1 m/s 与通道内的速度值 u=0 m/s 不匹配,瞬态求解器会基于这些初始值开始计算解。这就是初始值不一致

默认情况下,COMSOL 将尝试通过使用“向后欧拉法”来采用较小的时间步(这是初始时间步的一小部分),从而协调不一致的初始值。软件默认会根据总仿真时间跨度自动确定初始时间步,但您也可以手动设置,还可以更改“向后欧拉法”为实现一致初始化所使用的初始时间步部分。这些设置将影响一致初始化过程的结果。如果“向后欧拉法”的步长太大或边界条件确实不一致,则一致初始化可能会失败。更常见的是,结果可能与我们的预期相差甚远,求解器可能需要在仿真开始时采用非常小的时间步才能基于当前解进行演化计算。这样做会延长求解时间,因此不可取。

初始时间步长和一致初始化的默认设置。

在许多情况下,并不需要严格执行一致初始化,因此最好将其关闭,并确保模型基于一致的初始值平滑增加所有载荷和边界条件。本知识库条目提供了两种方式来实现这一操作。

但请注意,如果您的边界条件确实相互不一致,并且物理场也不一致,则本知识库条目中的解决办法将不适用。请始终仔细检查外加载荷和边界条件,确保其一致性。本知识库条目中的建议适用于适定问题。

方法 1:使用稳态研究来初始化瞬态研究

单个研究可以包含多个步骤,且默认情况下,每个步骤的结果都会作为初始值传递到下一个步骤。因此,在瞬态研究步骤之前添加一个稳态步骤,可以首先求解稳态假设下的场,从而为瞬态步骤提供一致的初始值,也就是替代物理场接口的初始值特征中指定的初始值。只要这两个步骤在同一研究中,如下面的屏幕截图所示,就不需要更改其他设置。软件完成对该研究的求解后,将重新计算这两个步骤。

使用稳态步骤计算瞬态研究步骤的初始值。

除此之外,您也可以将稳态步骤和瞬态步骤拆分成两个不同的研究。这需要手动设置瞬态研究中的因变量值,使其引用稳态研究的结果,如下面的屏幕截图所示。您可以在此下载相应的模型文件。

调整瞬态研究的设置,以使用稳态研究计算得到的初始值。

然而,这种策略也有一些缺点。首先,稳态解可能根本不存在。这对于湍流发生时的流体流动模型尤其常见,其中稳态边界条件会产生非定常(时变)流场。另一种可能是,从数值上得到稳态解非常困难,请参见知识库 103:提高非线性稳态模型的收敛性,了解如何解决此类情况。其次,由于系统是从静止状态开始演化的,瞬态模型的目标可能是研究启动特性。在以上任一情况下,请使用下面描述的第二种方法。

方法 2:逐渐增加边界条件

您可以基于与初始值一致的值逐渐增加瞬态模型上的载荷和边界条件。处于平衡状态的系统是最常见的一种情况,其中各个位置的初始值均为零。您可以使用具有平滑功能的内置阶跃函数,如下面的屏幕截图所示。其他一些内置函数也包含平滑处理选项,如知识库 905:阶跃过渡建模中所述。默认情况下,所有这些函数在平滑处理区域开始处的时间导数均为零,这一点非常有用。

具有平滑功能的“阶跃”函数的设置。

平滑后的阶跃函数可用于修改载荷和边界条件,如下面的屏幕截图所示。您可以在此下载相应的模型文件。

您可以使用平滑后的阶跃函数逐渐增加边界条件。

在进行平滑处理时,您需要选择一个时间跨度,对于求解的问题来说,这在物理上是一种现实需要。例如,在层流流动情况下,您不应为了引入超音速激波而过快地提高速度。此外,对于电磁波问题,也不要使提速速度超过光速。另请参见知识库 1244:求解载荷呈阶跃变化的波型问题。根据您需要的模型输出引入一个非常缓慢的速度提升也是合理的。

请注意,并非所有问题都需要执行这种平滑处理。有些问题(尤其是不涉及对流的传热问题)可以通过载荷的阶跃变化进行求解。如果这些阶跃变化发生在仿真时间跨度内,您应该使用事件来准确模拟这些情况,如知识库 1245:求解包含时变脉冲载荷的模型中所述。

总结

采用上述任一技术应该能够解决一致初始化问题,您不必更改研究设置。

如果模型仍然存在收敛问题,可能是因为网格划分不够细化,在这种情况下,您应该执行网格细化研究,如知识库 1261:执行网格细化研究中所述。也可能是因为模型呈高度非线性,如果是这种情况,请参见知识库 1127:提高非线性瞬态模型的收敛性

相关文件

example_with_default_settings.mph 1.4 MB
example_with_smoothing.mph 2.2 MB
example_with_stationary_initialization.mph 4.0 MB

免责声明

COMSOL 尽一切合理的努力验证您在此页面上查看的信息。本页面提供的资源和文档仅供参考,COMSOL 对其有效性不作任何明示或暗示的声明。COMSOL 对所披露数据的准确性不承担任何法律责任。本文档中引用的任何商标均为其各自所有者的财产。有关完整的商标详细信息,请参阅产品手册。