已知一维单相不稳定流的模型如下:(∂^2 p)/(∂x^2 )=∂p/∂t p(x,0)=10 (0<x≤L) p(0,t)=5 p(5,t)=2 取Δx=√2,Δt=1,L=4√2 网格系统为均匀的块中心网格,求t=1,t=2,t=3时刻的压力分布(用显式差分格式计算),并绘图标识计算结果。
时间: 2023-11-24 07:07:25 浏览: 46
为了用显式差分格式计算,我们需要将偏微分方程离散化。这里我们采用二阶中心差分格式,即:
(p(i+1,j) - 2p(i,j) + p(i-1,j)) / Δx^2 = ∂p(i,j) / ∂t
其中,i表示空间坐标x在网格上的离散位置,j表示时间坐标t在网格上的离散位置,Δx和Δt分别表示空间和时间上的步长。
根据上面的公式,我们可以得到:
p(i,j+1) = p(i,j) + Δt * (p(i+1,j) - 2p(i,j) + p(i-1,j)) / Δx^2
根据题目给出的参数,我们可以计算出网格上的离散点数:
Δx = √2
L = 4√2
=> N = L / Δx = 4
同时,时间间隔Δt已经给出,我们可以根据时间步长计算出需要迭代的次数:
Δt = 1
=> M = 3
现在我们可以开始用显式差分格式计算了。根据题目的要求,我们需要在t=1、2、3时刻的位置上计算压力分布。为了方便计算,我们可以用一个二维数组来表示网格上的离散点:
p = [[0 for j in range(M+1)] for i in range(N+1)]
p[1:N,0] = 10
p[0,:] = 5
p[N,:] = 2
其中,p[i,j]表示在第j个时间步长时,第i个空间位置上的压力值。我们可以将初始条件p(x,0)=10用p[1:N,0] = 10来表示;将p(0,t)=5用p[0,:] = 5来表示;将p(5,t)=2用p[N,:] = 2来表示。
接下来,我们可以按照时间步长循环计算压力分布了。具体来说,我们可以用一个双重循环来实现,其中外层循环控制时间,内层循环控制空间。每一次内层循环结束后,我们就可以在当前时刻t的位置上得到压力分布。
代码实现如下:
阅读全文