半拉格朗日方法

半拉格朗日方法是一种处理流动问题中对流项的方法。

完成对流项后,可以通过两个基准算例来验证程序,一个是Gaussian-cone问题,另一个是耦合Burgers方程。

二维Gaussian-cone问题

考虑定义在二维区域Ω=[0,1]×[0,1],t[0,1]\Omega=[0,1]\times[0,1],t\in[0,1]上的Gaussian-cone问题

image-20230625151918890

其中aabb分别表示流体在 xxyy 方向的流动速度,取 a=b=0.8a=b=0.8ν=1/Re\nu=1/Re表示流体扩散速度。式(4-10)的初值条件为

image-20230625152112136

精确解为

image-20230625152156103

最主要比较雷诺数高的情况下的误差。

二维Burgers方程

考虑二维区域Ω=[0,1]×[0,1]\Omega=[0,1]\times[0,1]的如下耦合方程

image-20230625173038859

其边界条件和初始条件分别为:

image-20230625173114981

其中 u 和 v 分别为沿着 x 轴和 y 轴的速度分量, 定解区域定义在(x,y,t)Ω×(0,T](x,y,t)\in \Omega\times(0,T]上。

半拉格朗日方法计算出发点的速度

基本的迭代方式为:速度插值 \rightarrow 更新位置 \rightarrow 速度插值 \rightarrow 更新位置 \rightarrow …。具体来说,uiu_ixix_i已知量, xdx_dudu_d 是未知量,xix_i的初值可以根据未知量在交错网格上的位置给定,xdx_dudu_d的初值分别为xix_iudu_dxdx_dudu_d的值可以通过如下步骤更新:

  1. xdx_duiu_i上的插值可以得到udu_d
  2. 根据udu_dxix_i更新xdx_d

为了验证程序的正确性,可以先给个速度场uiu_i,然后输出xix_ixdx_dudu_d来判断程序是否正确。