NSsimulation:使用python模拟Navier-Stokes equations(ns方程),附项目GitHub地址,亲测可用。(2023 apmcm、2024美赛)

概要

利用python模拟Navier-Stokes方程

ns方程

纳维-斯托克斯方程(Navier-Stokes equations),简称N-S方程,是描述粘性流体动量守恒的运动方程。
在这里插入图片描述

ns方程介绍

N-S方程在流体力学中具有十分重要的意义,因为它们反映了粘性流体(又称真实流体)流动的基本力学规律。这些方程是由法国工程师克劳德-路易·纳维和爱尔兰物理学家乔治·斯托克斯分别在19世纪提出。具体如下:

  • 方程形式:N-S方程是一个非线性偏微分方程组,它们表达了流体内部任意点的速度、压力和密度等物理量之间的关系。
  • 物理意义:从物理的角度来看,N-S方程可以被理解为牛顿第二定律在流 体运动中的应用,即动量守恒的数学表述。
  • 求解难度:由于N-S方程的复杂性,只有在一些非常简单的流动情况下才能求得精确解。在实际应用中,通常需要通过数值方法近似求解这些方程。
  • 简化情况:在某些特定条件下,N-S方程可以简化。例如,当雷诺数较大时,粘性力远小于惯性力,方程中的粘性项可以忽略,从而简化为理想流动中的欧拉方程;而在边界层内,N-S方程又可简化为边界层方程。
  • 应用领域:N-S方程广泛应用于气象学、海洋学、航空航天、环境科学等领域,对于理解和预测流体行为至关重要。
  • 研究挑战:尽管N-S方程已经存在了近两个世纪,但科学家们仍然在研究如何更有效地求解这些方程,特别是在湍流等高度复杂的流动现象中。
  • 最新进展:随着计算机技术的发展,N-S方程的数值求解技术也在不断进步,这为研究更加复杂的流体动力学问题提供了可能。

综上所述,N-S方程是流体力学中的基础方程,对于理解和预测流体行为有着不可替代的作用。虽然求解这些方程具有一定的难度,但随着科学技术的发展,人们对其的理解和应用也在不断深化。

ns方程形式

N-S方程广义上包括质量守恒方程、动量守恒方程(也即狭义上的N-S方程)、能量守恒方程等三大守恒控制方程。具体如下:

  • 质量守恒方程:描述了流体的连续性,即在没有源或汇的情况下,流体的质量是守恒的。
  • 动量守恒方程:描述了流体内部粒子动量的变化,包括对流项、压力项、体积力和粘性力。它的矢量形式为:
  • 能量守恒方程:描述了流体中能量的转换和传递过程。

在实际计算中,N-S方程通常需要结合具体的初始条件和边界条件才能求解。由于这些方程具有非线性以及相互耦合的特点,除了一些简单的情况外,一般无法得到解析解,因此常常依赖于数值方法进行近似求解。

ns方程求解

纳维-斯托克斯方程(Navier-Stokes equations,简称N-S方程)的求解通常涉及复杂的计算流体动力学(CFD)方法。以下是N-S方程求解的一些关键点:

  • 离散化方法:N-S方程的求解通常需要将连续的方程离散化,以便在计算机上进行数值计算。常用的离散化方法包括有限差分法、有限体积法和有限元法等。
  • 数值方法:在离散化之后,需要应用数值方法来求解方程组。例如,SIMPLE(Semi-Implicit Method for Pressure-Linked Equations)和SIMPLEC(SIMPLE-Consistent)是两种常用的求解压力和速度场的迭代方法。
  • 网格处理:在CFD中,对计算域的网格划分也非常重要。不同的网格类型和细化程度会影响求解的精度和计算效率。
  • 边界条件和初始条件:为了得到具体的解,需要为N-S方程设定适当的边界条件和初始条件。这些条件反映了流体在特定时刻的状态和物理特性。
  • 计算软件:有许多专业的CFD软件可以用来求解N-S方程,如ANSYS Fluent、OpenFOAM等。这些软件提供了用户友好的界面和强大的后处理功能,使得复杂的流体分析变得可行。
  • 理论与实践结合:理解N-S方程的理论基础是非常重要的,但实际操作中还需要结合具体问题来选择合适的求解策略和参数设置。
  • 应用领域:N-S方程的求解广泛应用于航空航天、环境工程、生物医学等多个领域,对于设计和优化流体相关的系统和设备至关重要。
  • 研究发展:尽管N-S方程已经建立了很长时间,但它们仍然是研究的热点,特别是在湍流模型、多相流和高性能计算等方面。
  • 教育意义:通过求解N-S方程的实例,如方腔流动问题,可以帮助学生和

研究人员更好地理解流体动力学的基本概念和数值方法的应用。
综上所述,求解N-S方程是一个涉及多个步骤和方法论的复杂过程,需要综合考虑理论、数值方法和实际应用。

整体架构流程

一个ns方程仿真模型
将"Arakawa C型交错网格"作为框架,并采用"分数步方法"来离散每个方程。同时,还采用了"雅可比方法"作为迭代方法来求解泊松方程。由于条件复杂,在解决对流方程的函数中有一些for循环。

技术名词解释

Variables
这个模拟假定是一个二维的房间。它有高度和宽度。
变量 lx 表示它的宽度,ly 表示它的高度。
当你想做一个三维的房间时,lx 表示它的宽度,ly 表示它的深度,lz 表示它的高度。
这里把变量放在下面。

VariableExplanation
lx, ly, lzThe Lengths of Imaginary Room [m].
DELTThe Micro Time. Default is 0.01[s].
DELLThe Micro Length of The Micro Volume. Default is 0.1[m].
divlx, divlyDivided Numbers in x, y Directions.
ux, uyFluid Velocities in x, y Directions at Point (x, y)ndarray.
vx, vyTemporary Velocities in x, y Directions.
ux_astCalculated Velocity in x Direction at Point (x, y)ndarray.
uy_astCalculated Velocity in y Direction at Point (x, y)ndarray.
divCalculated Divergence at Point (x, y)ndarray(This Must be Nearly Zero).
RHODensity(Uniform). Default is 1.293kg/m^3.
MUThe Dinamic Viscosity Coeficient. Default is 1.82e-8[Pa s].
hFan Height.
v0The First Velocity Condition.
EPSTiny Error Constance That Evaluate Pressure. Default is 1e-8.
CNT_MAXThe Number That You Wanna Repeat. Default is 10000[times].
pThe Presure at Point (x, y).
fx, fyThe Forces in x, y Directions at Point (x, y)ndarray.
saveIf 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基础即可快速使用。

  • 如果你想修改参数,可以直接在simulater.py修改函数的参数值;
  • 如果你想修改图像效果,可以对plots.pyplots3d.py下手。

使用

对于小白。
0、 clone项目,具体可看如何通过ssh链接本地与Github
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上的,打不开可以看【新手必看】解决GitHub打不开问题,亲测有效,clone项目可以看如何通过ssh链接本地与Github-。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cxlhyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值