实际运行中常遇到了 Time-step size < dtmin 的情况。
求解器的停止是因为时间步长小于最小时间步长。这里涉及两个量,最小时间步长,时间步长。最小时间步长默认为 1e-4 乘以初始时间步长,其值也可通过 Time-step controls 选项去设置。(Model Setup > Numberics > Time-step control >Minimum time step)
求解器运行期间的时间步长可通过两种方式中的一种确定。第一种,求解器设定的时间步长可满足稳定。第二种,如果时间步长的控制设置为稳定和收敛 Stability and convergence(默认)。则压力迭代次数大于时间步长减小前的最大迭代次数(最大迭代次数可通过 Model Setup > Numerics > Pressure iterations > Convergence Controls > Maximum number of iterations before time step is reduced 设置)会导致的时间步长会被减小。
这种做法通过平衡时间步长和压力迭代次数去优化运行时间。然而,有时时间步长被过分地减小,于是就造成了 Time-step size < dtmin 的情况出现。
首先,查看运行器中的 " stability limit & time-step size "。(同样可以在求解文件 hd3msg.dat 中查看)如果时间步长一直小于稳定极限,求解器会一直迭代。
正常一段时间后,时间步长会主动降低,这是由于 AUTOT 设置的影响(自动恢复法)。
如果机器不能自动恢复,则需要我们自己采取一些手段。一方面,可以采取将时间步长的控制条件设置为 Stability。如若不行,增加时间步长减小前的最大迭代次数(Maximum number of iterations before time step is reduced)值。(Model Setup > Numerics > Pressure iterations > Convergence Controls > Maximum number of iterations before time step is reduced)
再者,减小收敛准则中的最大允许迭代次数(Maximum allowable number of iterations)或者最大允许失败迭代次数(Maximum number of iteration failures allowed)。
如果稳定极限值较小,是最小时间步长的设置值不合理的问题。如果初始时间步长太大,最小时间步长的值同样会很大。必要的情况下,重置最小时间步长。如果稳定极限非常小,合理的时间内将不会出现问题。但仍需要我们去做一些调整。如,将求解更换为隐式求解(implicit solver)。大多数显式稳定极限与网格大小成比例(网格越小,稳定极限越小),但是,某些稳定极限与网格大小的平方成比例。求解输出文件(hd3out.dat)中标示了最小稳定极限发生处网格。可以考虑修改网格去降低稳定极限。确保 AVRCK 设置为负,例如 -2.1。如果涉及热力交换以及粘性压力限制稳定极限的情况,考虑使用隐式极限法。
我在解决上述问题中,最初将时间步长的控制设置从默认的 Stability and convergence 更改为 Stability 无果,调整文中提到的迭代次数也相继失败,后来加大了网格尺寸(Size of cells),从 0.8 增加到 1,实际也增加了稳定极限,解决了问题。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删