利用python模拟Navier-Stokes方程
纳维-斯托克斯方程(Navier-Stokes equations),简称N-S方程,是描述粘性流体动量守恒的运动方程。
N-S方程在流体力学中具有十分重要的意义,因为它们反映了粘性流体(又称真实流体)流动的基本力学规律。这些方程是由法国工程师克劳德-路易·纳维和爱尔兰物理学家乔治·斯托克斯分别在19世纪提出。具体如下:
综上所述,N-S方程是流体力学中的基础方程,对于理解和预测流体行为有着不可替代的作用。虽然求解这些方程具有一定的难度,但随着科学技术的发展,人们对其的理解和应用也在不断深化。
N-S方程广义上包括质量守恒方程、动量守恒方程(也即狭义上的N-S方程)、能量守恒方程等三大守恒控制方程。具体如下:
在实际计算中,N-S方程通常需要结合具体的初始条件和边界条件才能求解。由于这些方程具有非线性以及相互耦合的特点,除了一些简单的情况外,一般无法得到解析解,因此常常依赖于数值方法进行近似求解。
纳维-斯托克斯方程(Navier-Stokes equations,简称N-S方程)的求解通常涉及复杂的计算流体动力学(CFD)方法。以下是N-S方程求解的一些关键点:
研究人员更好地理解流体动力学的基本概念和数值方法的应用。
综上所述,求解N-S方程是一个涉及多个步骤和方法论的复杂过程,需要综合考虑理论、数值方法和实际应用。
一个ns方程仿真模型
将"Arakawa C型交错网格"作为框架,并采用"分数步方法"来离散每个方程。同时,还采用了"雅可比方法"作为迭代方法来求解泊松方程。由于条件复杂,在解决对流方程的函数中有一些for循环。
Variables
这个模拟假定是一个二维的房间。它有高度和宽度。
变量 lx 表示它的宽度,ly 表示它的高度。
当你想做一个三维的房间时,lx 表示它的宽度,ly 表示它的深度,lz 表示它的高度。
这里把变量放在下面。
Variable |
Explanation |
---|---|
lx, ly, lz |
The Lengths of Imaginary Room [m]. |
DELT |
The Micro Time. Default is 0.01[s]. |
DELL |
The Micro Length of The Micro Volume. Default is 0.1[m]. |
divlx, divly |
Divided Numbers in x, y Directions. |
ux, uy |
Fluid Velocities in x, y Directions at Point (x, y)ndarray . |
vx, vy |
Temporary Velocities in x, y Directions. |
ux_ast |
Calculated Velocity in x Direction at Point (x, y)ndarray . |
uy_ast |
Calculated Velocity in y Direction at Point (x, y)ndarray . |
div |
Calculated Divergence at Point (x, y)ndarray (This Must be Nearly Zero). |
RHO |
Density(Uniform). Default is 1.293kg/m^3. |
MU |
The Dinamic Viscosity Coeficient. Default is 1.82e-8[Pa s]. |
h |
Fan Height. |
v0 |
The First Velocity Condition. |
EPS |
Tiny Error Constance That Evaluate Pressure. Default is 1e-8. |
CNT_MAX |
The Number That You Wanna Repeat. Default is 10000[times]. |
p |
The Presure at Point (x, y). |
fx, fy |
The Forces in x, y Directions at Point (x, y)ndarray . |
save |
If You Want to Build Animation File in the Script, Set ‘False’. If You Want to Build Animation File after Outputing All Img files, Set ‘True’. Default is ‘False’. |
Main script file is simulater.py, so run this file or import this file to simulate. | |
Args in main function is lx , ly , (lz when you want to simulate 3D room), h , v0 , theta , time_range and save . |
|
I put the meanings of each arge above. | |
Output format is a animation file(animation_v0_theta.mp4) written by ffmpeg. | |
This will be created in this current directory. |
项目结构:
项目非常完整,使用起来也非常方便,只要有一点python基础即可快速使用。
对于小白。
0、 clone项目
,具体可看------------------。
1、 在simulater.py
文件中将参数修改为自己想要的值。
2、 home+R
打开运行,输入cmd
点击确定,打开终端。
3、 输入cd path
,回车。输入path所在的盘+“:”
,回车。(path替换为自己的项目路径,path中最好不要有中文和空格不然可能会报错,比如我的是)
cd D:\college\digifax\2023_Asia_Pacific_B_Question\Bapmcm2308548fj
d:
4、 输入
(如果是3D,就把最后的2D换成3D就可以了。)
python simulater.py 2D
1、【本科组】2023年亚太地区大学生数学建模竞赛(APMCM)B题。
第(1)(2)小问,建立风速的数学模型;第(3)小问提供温室内部的风速分布。利用ns方程模拟风求解。
2、 2024美赛 B题。
第(1)小问,建立定位模型,利用ns方程模拟洋流强化模型。
NAVIER STOKES方程的模拟
项目是在GitHub上的,打不开可以看------------------------,clone项目可以看-----------------------。