吾生有涯 学海无涯
析模有界 知识无界

【Python-CFD】02:线性对流方程

一维常系数对流方程是CFD中最简单最基本的方程。然而这个简单的方程能够告诉我们很多关于CFD方面的东西。模型方程如下式: 

下面在Python中实现该求解过程。

代码如下所示:

import numpy as np
import matplotlib.pyplot as plt

nx = 41  #x方向网格节点数量
dx = 2/(nx-1)  #空间网格步长,x方向总长度2
nt = 25 # 时间步数
dt = 0.025  # 时间步长
c = 1 #常数

# 指定初始条件
u = np.ones(nx)
u[int(0.5/dx):int(1/dx + 1)] = 2 #这一行实际上是制造了一个方波
# 下面将初始条件画出来
plt.plot(np.linspace(0,2,nx),u, 'r',lw=3, label = 'init')

# 计算25个时间步后的波形
un = np.ones(nx)
for n in range(nt):
   un
= u.copy() #后面的计算会改变u,所以将u拷贝一份
   for i in range(1,nx):
       u[i]
= un[i] - c * dt / dx * (un[i] - un[i-1])

plt.plot(np.linspace(0,2,nx), u , 'b',lw =3,label= 'current')
plt.legend()

计算结果如下图所示:

从图中可以看出,在经过大约0.625s后,波形存在一定程度上的失真,说明数值算法存在扩散。

注意:线性对流问题看似很简单,但实际上存在很多的问题,有兴趣的童鞋可以尝试着增大网格数量nx或增大时间步长dt,看看会发生什么情况,后面我们会专门讨论这个问题。

本篇文章来源于微信公众号: CFD之道

赞(4) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《【Python-CFD】02:线性对流方程》
文章链接:https://www.topcfd.cn/5689/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册