制造的不可压缩的Navier-Stokes解决方案-如何找到无散度的速度场?


10

在制造解决方案(MMS)的方法中,假设一个精确的解决方案,将其代入方程式并计算相应的源项。然后将该解决方案用于代码验证。

对于不可压缩的Navier-Stokes方程,MMS容易导致连续性方程中的源项(非零)。但是,并非所有代码都允许连续性方程式中使用源项,因此对于这些代码,只有制造的具有无散度速度场的解决方案才可以。我发现该示例适用于域 \ begin {align} u_1&=-\ cos(\ pi x)\ sin(\ pi y)\\ u_2&= \ sin(\ pi x)\ cos(\ pi y)\ end {align} 在一般的3D情况下,如何制造无散度的速度场?Ω=[0,1]2

u1=cos(πx)sin(πy)u2=sin(πx)cos(πy)

Answers:


7

使用矢量流函数或取两个梯度的叉积。即:

u=×A
其中A是您选择的矢量场,或
u=f×g
其中fg是您选择的两个标量字段。

很难使速度保持无散度并规定边界条件,但是只要您的代码允许您为边界条件设置任意函数,就可以了。

ETA:当然,您的动量方程必须要接受一个强制函数,但是与强制在连续性方程中添加右侧相比,我对强迫动量方程一直感觉更好。


谢谢!(据我所知,连续性方程的强制仅发生在空化模型中)
chris

5

这不是一个普遍的答案,但是对于Navier-Stokes方程,有一些描述实际流量的制造解决方案。例如,Kovasznay流场是一个受欢迎的选择:

http://link.springer.com/article/10.1007/BF00948290

原始参考是:Kovasznay LIG,“二维网格后面的层流”。程序 剑桥Philos。,第44页,1948年。


1948(!)我没有意识到这是“真实的流动”。就是说,您实际上可以在物理实验中对它进行测量(而不是在数值实验中进行模拟)?
克里斯,

我相信,是的。
Wolfgang Bangerth

否。它是网格后面一定距离内的理想流动。但是没人知道网格的外观,最有可能的是网格必须由“非常柔软”的材料制成
Guido Kanschat

2

那就是我通常所做的。

定义简化功能:

Ψ=[ψxψyψz]

速度等于:

u=×Ψ=[ux=yψzzψyuy=zψxxψzuz=xψyyψx].

现在,您可以选择任何合理的零平均压力并构造一个强迫项。

我发布了和齐次边界条件的SymPy示例代码,请享受:Ω=[0,1]3

 from sympy import *

 x,y,z = symbols('x y z')

 X = Matrix([[x],[y],[z]])

 psi = zeros(3,1)
 psi[0,0] = sin(2*pi*x)*y**2*(1-y)**2*z**2*(1-z)**2
 psi[2,0] = x**2*(1-x)**2*y**2*(1-y)**2*sin(2*pi*z)

 curl_psi = zeros(3,1)
 curl_psi[0] = diff(psi[2],X[1]) - diff(psi[1],X[2])
 curl_psi[1] = diff(psi[0],X[2]) - diff(psi[2],X[0])
 curl_psi[2] = diff(psi[1],X[0]) - diff(psi[0],X[1])
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.