如何在多重网格方法中定义残差?

计算科学 有限差分 流体动力学 离散化 纳维斯托克斯 多重网格
2021-12-03 07:45:46

我希望使用下面提到的预测校正方法在并置网格上使用多重网格方法求解二维 Navier Stokes 方程。但首先,让我详细说明我已经做了什么。以前,我使用交错网格和基于人工可压缩性的求解器。所以我的控制方程是:

在此处输入图像描述

由于我的求解器是明确的(这里的时间术语只是为了进行迭代)。为了在这种方法中实现多重网格,我将细网格上的缺陷/残差定义为:

在此处输入图像描述

然后使用简单的注入算子将这种缺陷/残差以及细网格上的解决方案限制为粗网格(完全存储近似方案)。由于粗网格上的方程在外观上几乎保持不变,除了它们的 RHS 不是零而是定义为

在此处输入图像描述

其中虚线项是m而不是更正本身。 因此,在我求解粗网格方程以找到修正后,我将它们插值到细网格以修正细网格解。

这种方法效果很好。

现在,我想使用以下基于预测器-校正器的离散化在同地网格上实现多重网格:

在此处输入图像描述

其中三个步骤分别是预测器、校正器和更新步骤。预测器本质上是基于旧时间级别的值的前向差异,而校正器使用使用预测器时间级别的值的后向差异。

对于该方案,我将如何定义细网格上的缺陷/残差?任何帮助将不胜感激。如果我现有的方法有任何问题,请告诉我。

1个回答

残差应该只是您编写的方程式,其中所有项都移到一侧(加号或减号),您可以在求解未知数后计算它(这对于您指出的第二步似乎是隐含的)。由于您需要两个时间级别的信息,因此可能需要额外的存储空间来计算当前和先前时间步长的残差,但可能不会太多。

您可以尝试将此计算集成到您的代码中,这可能有助于提高性能,但我更喜欢在计算解决方案后应用这种计算,并且每 100 个左右的时间步才这样做。