尝试python 进行CFD计算
1维线性对流方程是用于学习有关CFD的知识最简单,最基本的模型,其方程表示如下:
需要给出方程的初始条件,假设方程具有初速度c,且无形状的改变。则初始条件可以表示为,即时间为0时刻时位置为x处点的速度。因此,方程可以表示为:
利用时间导数的正向差分格式和空间导数的反向差分格式,对该方程进行了空间和时间的离散。考虑离散化空间坐标x点我们索引从i= 0 至N,以Δt为离散时间间隔的大小。
由导数的定义可知,:
方程离散后:
其中n和n+1是时间上连续的两个步骤,而i和i-1是离散的x坐标的两个相邻点。如果有给定的初始条件,那么这个离散化过程中唯一未知的就是。即:
import numpy
from matplotlib import pyplot
import time,sys
#jupyter 需要输入
%matplotlib inline
需要给出计算域,对于一位空间来说就是x的坐标范围,定义.定义nx变量作为密度值,dx为计算网格点的距离。nt为时间步长,dt则为每步计算时间。
nx = 41
dx = 2 / (nx-1)
nt = 25
dt = 0.025
c = 1
给出的初始条件
u = numpy.ones(nx)
u[int(.5 / dx):int(1 / dx + 1)] = 2
print(u)
[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
pyplot.plot(numpy.linspace(0, 2, nx), u)
图像如下: