飞道的博客

使用Python编写CFD程序-模拟二维空间气流气压+绘制风场气压场动画(详细教程)

579人阅读  评论(0)

本文为博主原创文章,未经博主允许不得转载

1.模拟二维空间气流气压用到的方程式

计算2D空间气流气压要用到以下方程式:

其中第一个方程为 x x 方向速度 u u N-S方程式(Navier-Stokes equation);第二个方程为 y y 方向速度 v v 的N-S方程式(Navier-Stokes equation);第三个方程为第一二个方程进行数学变换得到的方程。第三个方程将气压 p p 与速度关联起来,称为气压的泊松方程

记号:
u : u: x x 方向速度 [ m / s ] [m/s]
v : v: y y 方向速度 [ m / s ] [m/s]
t : t: 时间 [ s ] [s]
x : x: x x 方向
y : y: y y 方向
ν : \nu: 运动粘度 [ m 2 / s ] [m^2/s]
ρ : \rho: 密度 [ k g / m 3 ] [kg/m^3]
p : p: 气压(实际气压和雷诺平均气压的差值) [ p a ] [pa]

2.将偏微分方程离散化

对第一节中的三个方程进行时间离散化(Temporal Discretization)和空间离散化(Spatial Discretization)。其中时间离散化选用前进差分(Forward Difference),对于空间离散化,一阶偏微分(如: u / x \partial u/\partial x )选用后退差分(Backward Difference),二阶偏微分(如: 2 u / x 2 \partial ^2u/\partial x^2 )选用中心差分(Central Difference)。

离散化之后的方程如下:
u u 的N-S方程式:

v v 的N-S方程式:

气压的泊松方程:

记号:
n : n: n n 时点 [ s ] [s]
n + 1 : n+1: n + 1 n+1 时点( n n 时点之后的一个时点) [ s ] [s]
Δ t : \Delta t: 时间间隔 [ s ] [s]
u i , j : u_{i,j} : 以模拟区域的左下角为原点的 i , j i,j 格子点处的 x x 方向速度

关于计算网格请看下图说明:

接着我们将离散化后的方程式的n+1时点项和n时点项分离,n+1时点项放在等式左边,n时点项放在等式右边。变形后的结果如下:

u u 的N-S方程式:

v v 的N-S方程式:

气压的泊松方程:

3.设置模拟条件

3.1 计算网格

假设我们模拟下图所示二维房间的气流。房间的左右侧完全开敞,无墙壁等物体;上下侧为固体墙壁。风从左侧流入房间,从右侧流出。

3.2 初始条件

假设房间最开始 x x 方向充满了 5 m / s 5m/s 的风, y y 方向充满了 3 m / s 3m/s 的风。气压(实际气压和雷诺平均气压的差值)处处为0。

3.3 边界条件

根据3.1节的模拟条件,选用如下图所示边界条件。

4.编写Python程序

根据以上公式和模拟条件,就可以开始编写Python程序啦。
Python程序代码见以下链接:
link
程序运行结果如下:

感谢您阅读本文,如您对本文有任何疑问,或者发现本文有任何错误之处,欢迎您联系我。
412694462@qq.com
如果您觉得本文还不错,记得点击右边打赏按钮打赏我哦~


转载:https://blog.csdn.net/HEYANfENG1/article/details/105533099
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场