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

本文探讨了Python中一维常系数对流方程的差分与扩散问题,通过模拟展示了时间步长和节点数对结果的影响。实验结果显示,小时间步长和增加节点数能改善数值算法的失真现象,而过大的时间步长可能导致发散。
摘要由CSDN通过智能技术生成

线性对流方程 差分与扩散

一维常系数对流方程是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()
plt.show()

计算结果如下图所示&

  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值