如何使用有限元计算速度场的散度和涡度

计算科学 有限元 模拟 纳维斯托克斯
2021-12-03 09:10:01

我正在为 Navier-Stokes 方程编写有限元求解器,并且无法正确计算散度和涡度等问题。目前要计算涡度,

ω=vxuy

我会将 rhs 乘以一个测试函数并在元素上积分。这给出了以下形式的元素矩阵:

ΣiΩvidϕidxϕjdAandΣiΩuidϕidyϕjdA ,

在插入我们对 u 和 v 的扩展之后。然而,这似乎是错误的方法,因为我的结果看起来不正确。例如在计算 u 和 v 速度场之后:

在此处输入图像描述

在此处输入图像描述

我的漩涡看起来像:

在此处输入图像描述

特别是涡度显得非常不平滑。这是另一个显示 u 速度和涡度的示例(为清楚起见放大):

在此处输入图像描述

在此处输入图像描述

我在计算分歧时遇到了类似的问题。似乎我计算的速度场不够平滑,因此在计算涡度和散度时,我得到许多正梯度和负梯度,导致场波动。所以我的问题是,如何使用有限元计算计算速度场的涡度(或散度)?

1个回答

如果你有一个用于速度近似的系数向量,那么你的速度场由那么分歧显然是 和类似的卷曲。Uuh=jUjφj

divuh=jUjdivφj

然而,要实现的是,即使您使用连续有限元,即是连续函数,散度和 curl 也不是连续函数。错误的发散和卷曲也是如此。因此,您必须预期这些错误是振荡的。这可能是你观察到的。φj