我正在尝试在现有的有限体积代码中实现Weiss 和 Smith 预处理器,并且我正在为双时间步进的想法而苦苦挣扎。我的内部时间步长是预测校正器,具有本地时间步长加速的二阶显式。时间步长基于基于对流速度的稳定 CFL 数,因为它使用的是预处理值。
我的外部时间步长是二阶后向差分隐式方法。这完全来自 Weiss 和 Smith 1995 AIAA 论文。外部时间步长是自由选择的,以解决所需的任何感兴趣的特征。在伪时间上执行内部时间步长直到收敛,理论上当伪时间行进到无穷大时。发生这种情况时,解决方案应该是用于外部方案的物理时间步长。
我有两个相关的问题。现在在我的代码中,流程演变为由迭代次数乘以内部时间步长确定的时间,而不是简单地成为我的外部时间步长。例如,如果我以 1 m/s 的速度运行涡旋对流情况,外部时间步长为 1 s,内部时间步长为 0.001 s,我希望涡旋在每个外部时间步长移动 1 米。然而,它实际上对流0.001*<number of inner steps>米。
所以我觉得我在整个概念中遗漏了一些东西。我的内部步如何收敛到每个外部时间步 1 秒的物理时间,而不是内部步数乘以内部时间步的物理时间?