Cavity Flow CFD 边界条件和奇异波

计算科学 流体动力学 计算物理学
2021-12-18 14:05:27

所以我有一个 PDE,我用它来描述材料如何流过一个体积(2D 或 3D)。 现在使用有限差分我得到以下结果: 其中 D 是扩散系数,上标是时间,下标是空间。(想象一个网格)。通过一些已经验证的代码,我们得到了现在,我们使用

Ct+uC=(D+D)2C
Cj,ki+1=Cj,ki+Δt[(D+D)[Cj+1,ki2Cj,ki+Cj1,ki(Δx)2+Cj,k+1i2Cj,ki+Cj,k1i(Δy)2]uxCj,kiCj1,kiΔxuyCj,kiCj,k1iΔy]
uxuyC=0在边缘。我知道这是一个愚蠢的边界条件,但这无关紧要,因为即使我们使用少量时间,我要向您展示的问题仍然存在。(浓度没有达到边缘)

在此处输入图像描述

[查看评论...它告诉我我不能发布 2 个链接...我在哪里有第二个?]

这是代码。它相对简单。

import numpy as np 
import matplotlib.pyplot as plt
import time
%matplotlib inline
from scipy import ndimage
import scipy.io as sio
a =sio.loadmat('C:\\Users\\Tsila elbag\\Documents\\IPythonNotes\\New folder\\Cavity10k_1.mat')
b = a['VelField']
N =50
M =300
ux = b[0][0][0]
uy = b[0][0][1]
#ux = np.zeros((50,50))
#uy = np.ones((50,50))
dx = 2/N
dy =2/N
D= .001
Dprime =0
dt = .0001
C = np.zeros((N,N))
#C[np.floor((.25+1)/dx):np.floor((.75+1)/dx),np.floor((.25+1)/dy)\
#  :np.floor((.75+1)/dy)]=1
C[np.floor((.25+1)/dy)\
  :np.floor((.75+1)/dy),.1/dx:np.floor((.25)/dx)]=1
f, axarr = plt.subplots(2, sharex=True)
axarr[0].contourf(C)
Chist= C
Ctemp = C
for T in range(M):
    for j in range(N):
        for k in range(N):
            if k==49  or j ==49 or k ==0 or j ==0:
                Ctemp[j,k]=0
            else:

                Ctemp[j,k]= C[j,k]+dt*((D+Dprime)*(((C[j+1,k]-2*C[j,k]+\
                C[j-1,k])/(dx**2))+((C[j,k+1]-2*C[j,k]+C[j,k-1])/(dy**2)))-\
                ux[j,k]*(C[j,k]-C[j-1,k])/(dx)-uy[j,k]*(C[j,k]-C[j,k-1])/dy)
    #Chist.append(list(C))
    C = Ctemp    
axarr[0].set_title('Original') axarr[2].contourf(C)
axarr[2].set_title('{} seconds later'.format(dt*M))

所以问题是我为什么会有这些波,如果有人知道有效的边界条件,我将不胜感激。提前致谢。

0个回答
没有发现任何回复~