声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

声振论坛 展示 基础理论 流体力学 查看内容

[系列]Python计算CFD问题

2016-4-5 14:45| 发布者: aspen| 查看: 11556| 评论: 0|原作者: funi|来自: lorenabarba.com

摘要: Python计算CFD问题1:一维线性对流问题 #-*-coding=utf-8 -*- import numpy as np import matplotlib.pyplot as plt import time,sys nx=41 #空间节点数 dx=2.0/(nx-1) #网格间距 nt=25 #时间步数 dt ...
[系列]Python计算CFD问题<1>:一维线性对流问题
[attach]69925[/attach]
[attach]69923[/attach]
  1. #-*-coding=utf-8 -*-
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. import time,sys

  5. nx=41 #空间节点数
  6. dx=2.0/(nx-1) #网格间距
  7. nt=25 #时间步数
  8. dt=0.025 #时间步长
  9. c=1

  10. #初始化节点
  11. u=np.ones(nx)
  12. u[0.5/dx:1/dx+1]=2
  13. plt.plot(np.linspace(0,2,nx),u,lw=2)

  14. #离散求解
  15. un=np.ones(nx)
  16. for n in range(nt):
  17.     un=u.copy()
  18.     for i in range(1,nx):
  19.         u[i]=un[i]-c*dt/dx*(un[i]-un[i-1])

  20. #显示计算结果
  21. plt.plot(np.linspace(0,2,nx),u,lw=2,color='red')
  22. plt.xlabel("$x$")
  23. plt.ylabel("$u(x)$")
复制代码


显示的计算结果如图所示:
[attach]69924[/attach]
图中蓝色线条为初始速度分布,红色线条为0.625s(25个时间步,时间步长0.025s)后的速度分布。
利用matplotlib库也很容易制作动画,有兴趣的童鞋可以试着将各时间步上的速度分布以动画的形式输出。


最新评论

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-3-29 02:49 , Processed in 0.098752 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部