计算流体力学过渡到编程的傻瓜入门教程
CFD理论过渡到编程的最简单教程
CFD理论过渡到编程的最简单教程
CFD是一种计算流体动力学的技术,主要利用计算机模拟流体运动过程。
它用数值方法来模拟流体的运动,从而求解流体流动、传热、反应等物理学问题,可以用来研究流体流动的物理特性,如热传导、扩散和其它物理现象。
CFD模拟可以帮助科学家和工程师更深入地了解流体运动,从而提高机械设计的性能。
二、CFD理论和编程
在研究CFD之前,我们必须从数据收集、处理、模拟到结果可视化等步骤,全面理解CFD的原理。
在理论研究的基础上,需要进行编程,以实现CFD的功能。
实现一个CFD程序,必须将CFD的理论和基础知识转化为可执行的程序码,最终实现CFD的功能,模拟真实世界的流体运动特征。
CFD的实现过程主要包括以下几个步骤:
1.首先,确定要模拟的物体形状和结构,并根据物体的尺寸、形状和材料等建立三维的模型;
2.根据运动粒子原理,将模型划分为许多空间网格,计算每个网格内的流体流量;
3.为了保证模拟结果的精确度,调整网格细化程度、增加网格点的数量;
4.运用CFD理论,根据粒子运动原理进行计算,确定网格内粒子的速度、密度、能量等参数;。
《流体力学入门》课件
03
气体压力计利用弹性元 件的变形来测量压力, 适用于测量较低的压力 。
04
流体静压力的计算需要 考虑流体的密度、重力 加速度和作用面积等因 素。
03
流体动力学基础
流体动力学基本概念
01
流体
流体是气体和液体的总称,具有流 动性和不可压缩性。
流线
流线是表示流体运动方向的几何线 条。
03
02
流场
流场是流体运动所占据的空间区域 。
伯努利方程
伯努利方程描述了流体在 封闭管道中流动时,流体 的压力、速度和高度之间 的关系。
连续性方程
连续性方程描述了流体在 流动过程中质量守恒的规 律。
流体流动的阻力与损失
摩擦阻力
摩擦阻力是由于流体与管 壁之间的摩擦而产生的阻 力,通常用达西-韦伯定律 来描述。
局部损失
局部损失是由于流体在管 道中流动时,由于管道形 状、方向变化等原因而产 生的能量损失。
《流体力学入门》 ppt课件
xx年xx月xx日
• 流体力学简介 • 流体静力学基础 • 流体动力学基础 • 流体流动现象与规律 • 流体力学在工程中的应用
目录
01
流体力学简介
流体的定义与特性
总结词
流体的定义与特性是流体力学研究的基础。
详细描述
流体是指在任何微小剪切力作用下都能发生连续变形的物体,具有粘性、压缩性和流动性等特性。
流体动力学还用于解决一些工程问题,例如管 道流动的阻力和传热问题,以及流体动力学的 振动和稳定性问题等。
流体动力学在航空航天、交通运输、能源等领 域也有着重要的应用,例如飞机和汽车的设计 、发动机的工作原理等。
流体流动现象与规律在工程中的应用
(完整版)CFD理论过渡到编程的傻瓜入门教程
CFD理论过渡到编程的傻瓜入门教程(注:这是一篇不知道谁写的介绍一维无粘可压缩Euler方程,以及如何编程实现求解该方程的论文。
作者从最基本的概念出发,深入浅出的讲解了控制方程,有限体积格式,MSUCL方法,限制器,Roe格式等相关知识。
这篇论文我觉得有利于大家学习CFD编程的相关知识,所以推荐给大家。
文章的后面附有我写的程序(C语言),用于求解一维激波管问题,大家有兴趣可以看看(程序中加了注释说明)胡偶2011)借宝地写几个小短文,介绍CFD的一些实际的入门知识。
主要是因为这里支持Latex,写起来比较方便。
CFD,计算流体力学,是一个挺难的学科,涉及流体力学、数值分析和计算机算法,还有计算机图形学的一些知识。
尤其是有关偏微分方程数值分析的东西,不是那么容易入门。
大多数图书,片中数学原理而不重实际动手,因为作者都把读者当做已经掌握基础知识的科班学生了。
所以数学基础不那么好的读者往往看得很吃力,看了还不知道怎么实现。
本人当年虽说是学航天工程的,但是那时本科教育已经退步,基础的流体力学课被砍得只剩下一维气体动力学了,因此自学CFD的时候也是头晕眼花。
不知道怎么实现,也很难找到教学代码——那时候网络还不发达,只在教研室的故纸堆里搜罗到一些完全没有注释,编程风格也不好的冗长代码,硬着头皮分析。
后来网上淘到一些代码研读,结合书籍论文才慢慢入门。
可以说中间没有老师教,后来赌博士为了混学分上过CFD专门课程,不过那时候我已经都掌握课堂上那些了。
回想自己入门艰辛,不免有一个想法——写点通俗易懂的CFD入门短文给师弟师妹们。
本人不打算搞得很系统,而是希望能结合实际,阐明一些最基本的概念和手段,其中一些复杂的道理只是点到为止。
目前也没有具体的计划,想到哪里写到哪里,因此可能会很零散。
但是我争取让初学CFD 的人能够了解一些基本的东西,看过之后,会知道一个CFD代码怎么炼成的(这“炼”字好像很流行啊)。
欢迎大家提出意见,这样我尽可能的可以追加一些修改和解释。
计算流体力学编程教程第10节
计算流体力学编程教程第10节计算流体力学是一门关键的学科,它涉及的领域非常广泛,包括
空气动力学、水动力学等等。
在今天的工业和科技领域中,CFD模拟和计算已成为必要的工具。
因此,每一个计算机工程师或科学家都应该
掌握CFD编程。
首先,学习CFD编程需要了解流体力学的基础知识,如Navier-Stokes方程、数学方法等。
通过建立数学模型和边界条件,我们才能
开始编写CFD程序。
在这个过程中,需要采用合理的计算方法和算法,比如有限体积法(FVM)和有限元法(FEM)。
这些方法不仅可以提高
程序的精度和鲁棒性,还可以提高程序的运行效率,以便在合理的时
间内获得结果。
其次,正确使用CFD软件和相关工具非常重要。
需要掌握一些流
行的CFD软件,如OpenFOAM、Ansys Fluent等,这些软件提供了完整
的CFD模拟和计算环境,包括网格划分、边界条件设置、求解器选择等。
此外,还需要了解一些标准的网格文件格式,如STL、VRML等,
方便实现三维模型的导入和导出。
最后,与实践结合非常重要。
我们可以通过模拟实现真实环境的
数值计算,比如压力、流速等等,从而分析流体的行为和反应特性。
通过分析计算结果,我们可以改进和优化设计,提高产品性能。
总而言之,掌握CFD编程需要明确流体力学基础知识、选择合适的计算方法、正确使用软件和工具,并与实践相结合。
通过不断地学习和实践,我们可以成为真正的CFD编程专家。
ICEM_CFD基础入门教程操作界面中文
ICEM_CFD基础入门教程操作界面中文ICEM_CFD是一款常用的计算流体力学(CFD)前处理软件,它可以用来进行几何建模、网格生成以及网格质量改进等操作。
本教程将介绍ICEM_CFD软件的基础入门操作界面,并详细说明其主要功能和使用方法。
1.工作窗口:-图层窗口:用于管理不同的几何元素和网格单元。
可以将几何模型和网格分别分配到不同的图层中,便于管理和操作。
2.工具栏:-文件操作:包括新建、打开、保存和导出等文件操作。
-网格操作:包括网格划分、网格改进、网格质量检查和网格参数设置等操作。
-显示选项:可以选择显示几何模型、网格和图层等,方便用户对模型进行观察和分析。
-操作模式:设置不同的操作模式,如选择模式、移动模式、旋转模式和缩放模式等,方便用户进行几何模型和网格的操作和调整。
3.属性窗口:-几何模型属性:可以设置几何模型的名称、颜色和透明度等属性。
-网格生成属性:可以设置网格单元类型、边界条件和网格参数等属性。
-网格质量属性:可以设置网格质量检查和改进的参数和标准。
-显示属性:可以设置几何模型和网格的显示方式、颜色和透明度等属性。
4.建模流程:在ICEM_CFD中,进行建模和网格生成的一般流程如下:-导入CAD几何模型:可以通过导入现有的CAD几何模型文件,如STEP、IGES或者CATIA等文件格式,或者直接在ICEM_CFD中手动创建几何模型。
-网格划分:在几何模型的基础上进行网格划分,可以使用不同的网格划分算法和参数设置,生成合适的网格。
-网格改进:对生成的网格进行质量检查和改进,可以使用网格质量检查工具来查看和修复网格质量问题,并采用网格平滑和网格形变等操作来改进网格质量。
-边界条件设置:在网格上设置边界条件,包括流动边界条件、壁面边界条件和入出口边界条件等。
- 导出网格:将生成的网格导出为适用于CFD计算的文件格式,如ANSYS Fluent、OpenFOAM等格式。
通过上述步骤,可以完成几何建模和网格生成的基本操作和流程。
计算流体力学入门
计算流体力学入门第一章基本原理和方程1.计算流体力学的基本原理1.1为什么会有计算流体力学1.2计算流体力学是一种科研工具1.3计算流体力学是一种设计工具1.4计算流体力学的冲击-其它方面的应用1.4.1汽车和发动机方面的应用1.4.2工业制造领域的应用1.4.3土木工程中的应用1.4.4环境工程中的应用1.4.5海军体形中的应用(如潜艇)在第一部分,作为本书的出发点,首先介绍计算流体力学的一些基本原理和思想,同时也导出并讨论流体力学的基本控制方程组,这些方程组是计算流体力学的物理基础,在理解和应用计算流体力学的任何一方面之前,必须完全了解控制方程组的数学形式和各项的物理意义,所有这些就是第一部分的注意内容。
1.1 为什么有计算流体力学时间:21世纪早期。
地点:世界上任何地方的一个主要机场。
事件:一架光滑美丽的飞机沿着跑道飞奔,起飞,很快就从视野中消失。
几分钟之内,飞机加速到音速。
仍然在大气层内,飞机的超音速燃烧式喷气发动机将飞机推进到了26000ft/s-轨道速度-飞行器进入地球轨道的速度。
这是不是一个充满幻想的梦?这个梦还没有实现,这是一个星际运输工具的概念,从20世纪八十年代到九十年代,已经有几个国家已经开始这方面的研制工作。
特别的,图1.1显示的是一个艺术家为NASD设计的飞行器的图纸。
美国从八十年代中期开始就进行这项精深的研究。
对航空知识了解的人都知道,象这种飞行器,这样的推进力使飞机飞的更快更高的设想总有一天会实现。
但是,只有当CFD发展到了一定程度,能够高效准确可靠的计算通过飞行器和发动机周围的三维流场的时候,这个设想才能实现,不幸的是地球上的测量装置-风洞-还不存在这种超音速飞行的飞行体系。
我们的风洞还不能同时模拟星际飞行器在飞行中所遇到的高Ma和高的流场温度。
在21世纪,也不会出现这样的风洞,因此,CFD就是设计这种飞行器的主要手段。
为了设计这种飞行器和其它方面的原因,出现了CFD-本书的主要内容。
工程流体力学的计算方法CFD基础课件
云计算技术使得大规模CFD模拟成为 可能,同时提供了灵活的计算资源和 数据管理方式。未来,云计算技术将 进一步优化,以降低计算成本和提高 计算效率。
THANKS
CFX
工业标准的CFD软件
CFX是全球公认的工业标准的CFD软件之一,广泛应用于能源、化工、航空航天、汽车等领域。它具 有强大的求解器和先进的物理模型,能够模拟复杂的流体流动和传热问题,并提供丰富的后处理功能 。
OpenFOAM
开源CFD软件
OpenFOAM是一款开源的CFD软件,由C编写,具有高度的灵活性和可定制性。它提供了丰富的工具包和案例库,适用于各 种流体动力学模拟,包括复杂流动、传热、化学反应等问题。
粘性。
热传导
流体在温度梯度作用下会产生 热传导现象。
流体动力学基本方程
质量守恒方程
表示流体质量随时间的变化规律 。
动量守恒方程
表示流体动量随时间的变化规律。
能量守恒方程
表示流体能量随时间的变化规律。
流体流动的分类
层流流动
均匀流动和非均匀流动
流体质点仅沿流线方向作有规则的线 运动,互不混杂。
根据流动是否具有空间均匀性进行分 类。
06
CFD未来发展与挑战
高精度算法与求解器
总结词
随着计算能力的不断提升,高精度算法和求解器在 CFD领域的应用将更加广泛。
详细描述
高精度算法和求解器能够提供更精确的流场模拟结果 ,有助于更深入地理解流体动力学现象。未来,高精 度算法和求解器将进一步优化,以适应更复杂、更高 要求的CFD模拟。
多物理场耦合模拟
有限体积法的优点在于能够很好地处 理流体流动中的非线性特性和复杂边 界条件,因此在工程流体力学中得到 了广泛应用。
计算流体力学速成课
计算流体力学速成课
计算流体力学速成课程,是帮助学生快速掌握流体力学基本原理、基础概念及相关计算方法的学习课程。
课程主要内容包括:
一、流体力学标准
在本课程中,将介绍流体力学的基本概念,并阐述流体力学的基
本定义、基本方程及流体力学分析的研究方法。
包括集合无量纲和摩
擦的计算,揭示流体力学的物理形式、数学模型、复杂流动特征及其
应用。
二、计算流体力学基础
本课程将深入讲解流体力学中的三维速度场、密度场和压力场的
流体力学计算,以及流体力学计算中必不可少的方程,如热传导方程、平衡方程、拉格朗日方程等。
三、计算流体力学应用
本课程将着重介绍计算机辅助计算流体力学(CFD)技术,讲解该
技术的基本原理、技术特点以及应用领域,为学生提供完整的计算流
体力学实用技能。
四、实验技术
实验技术将让学生实践流体力学中的实验技术,学习如何使用流
体力学仪器进行实验测量、数据处理和模拟试验等。
总之,计算流体力学速成课程,旨在帮助学生快速系统掌握流体
力学的基本原理、基础概念及相关计算方法,以提高学生对流体力学
的理解和应用知识,为他们未来的专业学习和工作作好充分的准备。
中科院计算流体力学最新讲义CFD2011-第14讲-MPI并行程序设计初步培训课件
第六讲 MPI并行程序设计 (2)
李新亮 lixl@ ;力学所主楼219; 82543801
知识点: 阻塞通信与非阻塞通信 非连续数据的发送与接收 OpenMP并行程序设计初步
讲义、课件上传至 (流体中文网) -> “流体论坛” ->“ CFD基础理论” 也可到如下网址下载:/browse.aspx/.Public
call MPI_recv(A1,N,MPI_real,1,99,MPI_Comm_World,status,ierr)
Else
call MPI_recv(A1,N,MPI_real,0,99,MPI_Comm_World,status,ierr)
call MPI_send(A(1,1),N,MPI_real,0,99,MPI_Comm_world,ierr)
a.exe
a.exe
计算节点
2
“对等式”程序设计思想 ✓站在其中一个进程的角度思考
如果我是其中一个进程; 我应当做…… 完成我需要完成的任务
对等式 设计
a.exe a.exe
a.exe
a.exe
计算节点
3
基本的MPI函数(6个) ➢ MPI初始化 MPI_Init(ierr) ; MPI结束 MPI_Finalize(ierr) ➢ 得到当前进程标识
Sum= ……
计算某变量
MPI_Isend(sum ….) 发送该变量
sum=……
不能给变量重新赋值 (发送可能尚未完成)
MPI_Irecv(sum1, ……) sum=sum0+sum1
数据不能立即使用 (接收可能未完成)
MPI_Isend(sum, …, request, …)
应用计算流体力学基础
Fin
x
An i1 2
Fin
Fn i 1
x
Lax-Wendroff格式
Q F G 0 t x y
Qn1 i, j
Qn i, j
t 2x
F F n i1, j
n i1, j
t 2y
G G n i, j1
(t)
xi
ui
(
u
ju 2
j
)
dV
f ju jdV ijnjuidS qinidS q0dV
(t)
S (t )
S (t )
(t)
1.流体力学方程组
方程组的无量纲化
xx L yy L zz L
特征长度
特征密度
0
x xx
y xy
z xz
Fˆv
J
x yx
y yy
z yz
x zx y zy z zz
x bx
yby
zbz
0
x xx
y xy
z xz
q0
微分形式
1.流体力学方程组
ij
pij
ij
pij
ui x j
u j xi
uk xk
ij
2
3
Stokes流体假设
牛顿流体本构关系 Sutherland公式(空气)
【fluent软件学习】计算流体力学软件Fluent培训67页PPT
1. 掌握流体力学、传质传热和化学反应动力学 等基础知识。
2. 了解CFD中使用的数值计算方法。 3. 了解Fluent中各个数值模型的适用范围及各参
数含义。 4. 接下来,可以尝试使用Fluent进行计算了!
4
交流学习的安排
第一讲 流体力学基础、传热学基础 第二讲 燃烧学,计算流体力学基础 第三讲 Fluent介绍 第四讲 Fluent应用实例(1) 第五讲 Fluent应用实例(2)
• 连续介质假设
– 连续介质假设认为真实流体所占有的空间可近似看作由“流体 质点”连续地无空隙地充满着。
– 换一句话说,就是在我们感兴趣的微小尺度内,都包含着无数 个流体分子。
• 局限性
– 当特征尺寸远大于分子间隙时,可以认为满足连续介质假设。 实际上,在一般的工程问题上,均可以满足。
– 当压力很低的稀薄气体中,分子间距很大,能与感兴趣的特征 尺度相比拟。此时,传统的流体力学理论就不适用,必须使用 统计力学的方法。
5
交流学习的安排
第一讲 流体力学基础、传热学基础 第二讲 燃烧学,计算流体力学基础 第三讲 Fluent介绍 第四讲 Fluent应用实例(1) 第五讲 Fluent应用实例(2)
6
什么是流体(Fluid)?
• 固体
– 在静止状态下,能够抵抗一定的压力、 拉力和剪切力。
• 流体
– 在静止状态下,能够抵抗一定的压力。
• 粘度
• 流体内摩擦应力 的大小与流体的 速度梯度成正比
• 持续变形的流体 才能抵抗一定的 剪切力!
11
流体的主要物理性质
• 粘度
• μ:动力粘度系数 • 当流体的μ为常数时,称为牛顿流体。 • 主要受温度影响,基本不受压力影响。 • 一般,液体(如水煤浆、重油)的粘度随温
计算流体力学入门
u f 0 ,对于流动问题,这个偏微分方程实际上是来源于积分形式的 t x
u f (u ) f 0 ,但要求Jacobi矩阵 可对角化,方程(组)才是双曲型守恒方程. t x u
2. 欧拉方程 对于一维欧拉方程对应的 u 和 f(u)分别为:
u p u2 u u , f (u ) uu p ,其中 E ( 1) 2 uE pu E
控制体(称之为有限体积,这也是有限体积法的来历) ,认为 u 是每个网格单元上的平均值
并 且 数 值 上 等 于 格 心 处 的 流 场 参 数 值 , Fi 是 每 个 控 制 面 上 F 的 平 均 值 , 即 记
u
1 V
1 , F d u V i C.V Si
u V F 。那相当于求解 F dS i Si 0 。这个方程就 c.si t i
通常,我们都假设 u 是连续的,也认为 均自由程厚度的间断面来说,实际计算中实际采用的 x 都太大了,这就造成了在间断面上
f f f f 完全不能逼近 ,甚至 与 南辕北辙。这就造成了用来逼近描述守恒律的差分方 x x x x u f 程 求解的精度将无法得到保证。 0 不再能很好地表达守恒律,甚至是完全错误的。 t x
u u a(u, x) 0 t x
以中心差分方法为例来说明。 对于第 i 点:
工程流体力学 第6章 计算流体力学
(4)数据处理,大量的数据可以通过图表形象地显示出 来,并进行分析、判断。
§6-1 概述
二、数值求解方法 流动数值计算方法主要有:有限差分法、有限元法、有限
体积法、有限分析法和边界元法等。 (1)有限差分法是发展最早、目前应用较广的一种流动
§6-1 概述
三、CFD软件 为方便用户使用CFD软件处理不同类型的工程问题,一般
的CFD商用软件往往将复杂的CFD过程集成,通过一定的接口 ,让用户快速地输入问题的有关参数。所有的商用CFD软件均 包括三个基本阶段:前处理、求解和后处理,与之对应的程序 模块简称前处理器、求解器和后处理器。
自1981年以来,出现了如PHOENICS、CFX、STAR-CD、 FIDIP、FLUENT等多个商用CFD软件,随着计算技术的快速 发展,这些商用软件在工程界正在发挥着越来越大的作用。
形式的原因,这种形式称为守恒形式。由空间位置固定的流动
模型直接导出的控制方程就定义为守恒型方程。
§6-2 流动模型
二、动量方程 将牛顿第二定律应用在右
图所示的运动流体微团,将作 用在单位质量流体微团上的体 积力记作f,其x方向分量为fx 。流体微团的体积为dxdydz, 所以:
作用在流体微团上的体积力的x方向分量=ρfx(dxdydz) 式(6-17)
运动的流体穿过任意固定表面
的质量流量=密度×表面面积×垂直于表面的速度分量。因此通
过面积dS的质量流量微元为:
V n dS V d S
§6-2 流动模型
一、连续性方程
通过控制面S流出整个控制体
的质量净流量等于在S上对式表示
计算流体力学---报告
计算流体力学——计算机编程报告班级: 09083201学号: 0908320125: 马海涛一.题目:非定常热传导方程∂u∂t =γ∂2u∂x 2(γ>0)初值问题的有限分差求解。
求解域(x,t)∈[0,1]×[0,∞],初值条件和边界条件为{u (x ,0)=f (x )u (0,t )=a (t )u (1,t )=b (t )其中,γ=1。
处置边界条件具体取法为 F(x)= {0 0<x <0.31 0.3≤x ≤0.7−103x +1030.7≤x ≤1.0取网格点数M x =101,要求计算t=0.01,0.1,1,10时的数据。
计算中时间步长的取法为x =γ∆t ∆x 2=0.1,0.5,1。
差分格式:FTCS 格式,BTCS 格式二.分析:编制通用过程,给定参数由手动输入获得,将给定参数带入相应方程得到不同格式不同参数下的数值解,再将数据输出进行处理。
程序界面如下:三.编程过程:(1)FTCS 格式:根据FTCS 格式解法第一步利用边界条件置n=0,为差分格式赋初值,编程步骤为:For i = 1 To 100 '赋初值x(i) = x(i - 1) + 0.01u(1, i) = 0u(0, i) = 0NextFor i = 0 To 100 '求函数 If x(i) < 0.3 Thenf(i) = 0ElseIf x(i) >= 0.3 And x(i) <= 0.7 Thenf(i) = 1ElseIf x(i) > 0.7 And x(i) < 1 Thenf(i) = (-10 / 3) * x(i) + 10 / 3End IfNextFor i = 0 To 100 '为数组u赋初值 u(i, 0) = f(i)Next第二步:利用循环求解点数值解,并将相应边界条件带入,在计算t 值大于等于输入t值时停止循环,因为迭代循环的一个数据只与它的前一个数据有关,为了节省存在编程时循环当中不断地用本次得到的数据赋给上一个变量,以达到释放前n-2个变量所占用的存。
计算流体力学基础ppt课件
它不受物理模型和实验模型的限制,省钱省时,有较多的灵活性, 能给出详细和完整的资料,很容易模拟特殊尺寸、高温、有毒、 易燃等真实条件和实验中只能接近而无法达到的理想条件。
8
数值解法是一种离散近似的计算方法,依赖于物理上合理、数学上适 用、适合于在计算机上进行计算的离散的有限数学模型,且最终结果 不能提供任何形式的解析表达式,只是有限个离散点上的数值解,并 有一定的计算误差。
对于初始条件和边界条件的处理,直接影响计算结果的精度。
16
划分计算网 采用数值方法求解控制方程时,都是想办法将控制方程在空间区
域上进行离散,然后求解得到的离散方程组。要想在空间域上离 散控制方程,必须使用网格。现已发展出多种对各种区域进行离 散以生成网格的方法,统称为网格生成技术。
不同的问题采用不同数值解法时,所需要的网格形式是有一定区 别的,但生成网格的方法基本是一致的。目前,网格分结构网格 和非结构网格两大类。简单地讲,结构网格在空间上比较规范, 如对一个四边形区域,网格往往是成行成列分布的,行线和列线 比较明显。而对非结构网格在空间分布上没有明显的行线和列线。
数学模型就好理解了,就是对物理模型的数学描写。 比如N-S方程就是对粘性流体动力学的一种数学描写,值得注意的是,数学 模型对物理模型的描写也要通过抽象,简化的过程。
14
建立控制方程 确立初始条件及边界条件 划分计算网格,生成计算节点
建立离散方程
离散初始条件和边界条件
给定求解控制参数
解收敛否
否
显示和输出计算结果
21
给定求解控制参数 在离散空间上建立了离散化的代数方程组,并施加离散化的
计算流体力学C++编程离散化网格
作业:已知一流场满足下面的稳态对流扩散方程:()()⎪⎪⎭⎫⎝⎛∂∂+∂∂Γ=∂∂+∂∂2222y xyv xρu ϕϕϕρϕ其中:5=uρ,3=v ρ,5.0=Γ。
下图中,流场为正方形,边长为1,且50=ABϕ,100=BCϕ,300=CD ϕ,200=ADϕ。
用数值解法,计算此流场的ϕ分布。
解:一、离散化:原式代入数据并变形有:⎪⎪⎭⎫⎝⎛∂∂+∂∂⨯=∂∂⨯+∂∂⨯22225.035y xy x ϕϕϕϕ对上式进行数值求解,取各边步长均相等,并分别设0.1,0.05,0.04三种网格,此三种网格的贝克利数:Γ∆∙=∆xu P ρ,均大于零小于2,可以采用中心差分,离散后公式变为:⎪⎪⎭⎫⎝⎛∆+-+∆+-⨯=∆-⨯+∆-⨯++++21-j i,j ,i 1j ,i 2j,1-i j ,i j ,1i 1-j i,1j ,i j,1-i j ,1i 225.02325x x xxϕϕϕϕϕϕϕϕϕϕ整理后有:()()()()1-j ,i j ,1-i 1j ,i j ,1i j ,i 75.025.025.125.075.0-25.025.1-25.0ϕϕϕϕϕx x x x ∆++∆++∆+∆=++二、源程序:根据上式,利用C++进行编程,主要程序如下: float f1[200][200],f2[200][200],x; int i,j,n,a; printf("%s","输入步长x:");scanf("%f",&x);n=1.00/x;for(i=0;i<=n;i++) //给AB边赋值{ j=0;f1[i][j]=50;}for(j=0;j<=n;j++) //给AD边赋值{ i=0;f1[i][j]=200;}for(i=0;i<=n;i++) //给CD边赋值{ j=n;f1[i][j]=300;}for(j=0;j<=n;j++) //给BC边赋值{ i=n;f1[i][j]=100;}for(i=1;i<n;i++){for(j=1;j<n;j++) //给内部节点设初值f1[i][j]=50;}do{ a=0;for(i=0;i<=n;i++){for(j=0;j<=n;j++)f2[i][j]=f1[i][j]; //将f1的值赋给f2}for(i=1;i<n;i++){for(j=1;j<n;j++){f1[i][j]=(0.25-1.25*x)*f1[i][j+1]+(0.25-0.75*x)*f1[i-1][j]+(0.25+1.25*x)*f1[i][j-1]+(0.25+0.75 *x)*f1[i+1][j];}}for(i=1;i<n;i++){for(j=1;j<n;j++){if(fabs(f1[i][j]-f2[i][j])>=1e-3) //保证每个节点值的误差都小于0.001a=1;}}}while(a==1);三、计算结果(1)步长为0.1,则共有11行节点。
ansys cfd 入门指南 计算流体力学基础及应用
ansys cfd 入门指南计算流体力学基础及应用【ansys cfd 入门指南计算流体力学基础及应用】1. 介绍计算流体力学(CFD)是一种利用计算机对流体流动和传热过程进行数值模拟和分析的技术。
在工程、航空航天、汽车、船舶、能源等领域中有着广泛的应用。
本文将详细介绍ansys cfd入门指南,帮助大家了解流体力学的基础知识和ansys cfd的应用。
2. 流体力学基础流体力学是研究流体运动的科学,它包括流体的基本性质、流体运动的基本规律和流体力学方程等内容。
在ansys cfd入门指南中,我们首先要了解流体的基本性质,如密度、粘度和压力等概念;其次是流体流动的基本规律,如连续性方程、动量方程和能量方程;最后是流体力学方程,如纳维-斯托克斯方程和能量方程的数学形式。
3. ansys cfd简介ansys cfd是一款强大的计算流体力学软件,它能够对流体流动、传热和传质等问题进行数值模拟和分析。
ansys cfd具有友好的用户界面和丰富的后处理功能,可以满足工程实际应用的需求。
在ansys cfd入门指南中,我们将学习如何使用ansys cfd进行流体力学仿真分析,包括建模、网格划分、求解和后处理等步骤。
4. ansys cfd的应用ansys cfd在工程领域有着广泛的应用,如风力发电机组的气动设计、汽车发动机的冷却系统优化、船舶的流体力学性能分析等。
在ansys cfd入门指南中,我们将结合实际案例,介绍如何使用ansys cfd解决实际工程问题,包括模型建立、边界条件设置、求解过程和结果分析等内容。
5. 个人观点和总结我认为ansys cfd入门指南对于学习流体力学和应用ansys cfd的人来说是非常有价值的。
通过系统学习流体力学的基础知识和ansys cfd 的使用方法,可以更好地理解流体力学的原理和应用。
ansys cfd作为一款先进的计算流体力学软件,可以为工程领域的问题提供可靠的数值模拟和分析方法,为工程设计和优化提供有力的支持。
流体力学 第14章 计算流体力学基础
行求解。近似公式应用在空间和时间的小域上,从而通过求解微分方程的数值解,
得到离散空间各个小域上具体物理量的数值,给出数值结果,这就是计算流体力学
的基本数学指导思想。
计算流体力学的基本原理
利用计算流体力学对流动问题进行数值模拟时,通常包括如下四个步骤:
• 有限体积法(FVM)——控制体内的平均近似
出发点是守恒型方程的积分形式,求解域被分成若干连续的控制体。在每
一个控制体上满足守恒方程。在每一个控制体的中心作为计算节点,计算该点
上的物理量。控制体边界上的函数值用节点函数值的插值获得。体积分和面
积分用适当的求积公式近似。结果在每个控制体上都有一个代数方程,未知数
网格线的任意一条有且只有一个交点。
(2)非结构化网格
指网格区域内的内部点不具有相同的毗邻单元,即与
网格剖分区域内的不同内点相连的网格数目不同。
计算流体力学的基本要素
• 有限近似
在选定数值网格以后,还必须确定数值离散过程中的近似方法。
近似程度决定了数值求解的精度以及求解的难度和费用。高精度格式的
方程中包含了更多网格节点数,因此求解的工作量和难度也相应地增加。
• 坐标和矢量系统
流体力学的基本方程与坐标无关,但在不同的坐标系下有不同的表达形式,
因此在数值计算时必须选择合适的坐标系,此外,矢量在该坐标系下的表达形
式也必须事先予以确定。
• 数值网络
数值网格定义了所求物理量在空间的位置。数值网格的种类大致可分为:
(1)结构化网格
由多族网格线构成,同族的网格线互不相交,且和其他族
返回目录
3.计算流体力学的控制方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
借宝地写几个小短文,介绍CFD的一些实际的入门知识。
主要是因为这里支持Latex,写起来比较便。
CFD,计算流体力学,是一个挺难的学科,涉及流体力学、数值分析和计算机算法,还有计算机图形学的一些知识。
尤其是有关偏微分程数值分析的东西,不是那么容易入门。
大多数图书,片中数学原理而不重实际动手,因为作者都把读者当做已经掌握基础知识的科班学生了。
所以数学基础不那么好的读者往往看得很吃力,看了还不知道怎么实现。
本人当年虽说是学航天工程的,但是那时本科教育已经退步,基础的流体力学课被砍得只剩下一维气体动力学了,因此自学CFD的时候也是头晕眼花。
不知道怎么实现,也很难找到教学代码——那时候网络还不发达,只在教研室的故纸堆里搜罗到一些完全没有注释,编程风格也不好的冗长代码,硬着头皮分析。
后来网上淘到一些代码研读,结合书籍论文才慢慢入门。
可以说中间没有老师教,后来赌博士为了混学分上过CFD专门课程,不过那时候我已经都掌握课堂上那些了。
回想自己入门艰辛,不免有一个想法——写点通俗易懂的CFD入门短文给师弟师妹们。
本人不打算搞得很系统,而是希望能结合实际,阐明一些最基本的概念和手段,其中一些复杂的道理只是点到为止。
目前也没有具体的计划,想到哪里写到哪里,因此可能会很零散。
但是我争取让初学CFD 的人能够了解一些基本的东西,看过之后,会知道一个CFD代码怎么炼成的(这“炼”字好像很流行啊)。
欢迎大家提出意见,这样我尽可能的可以追加一些修改和解释。
言归正传,第一部分,我打算介绍一个最基本的算例,一维激波管问题。
说白了就是一根两端封闭的管子,中间有个隔板,隔板左边和右边的气体状态(密度、速度、压力)不一样,突然把隔板抽去,管子面的气体怎么运动。
这是个一维问题,被称作黎曼间断问题,好像是黎曼最初研究双曲微分程的时候提出的一个问题,用一维无粘可压缩Euler程就可以描述了。
这里这个程就是描述的气体密度、动量和能量随时间的变化()与它们各自的流量(密度流量,动量流量,能量流量)随空间变化()的关系。
在CFD常把这个程写成矢量形式这里进一步可以写成散度形式一定要熟悉这种矢量形式以上是控制程,下面说说求解思路。
可压缩流动计算中,有限体积(FVM)是最广泛使用的算法,其他算法多多少少都和FVM有些联系或者共通的思路。
了解的FVM,学习其他高级点的算法(比如目前比较热门的间断有限元、谱FVM、谱FDM)就好说点了。
针对一个微元控制体,把Euler程在空间积分用微积分知识可以得到也就是说控制体气体状态平均值的变化是控制体界面上流通量的结果。
因此我们要计算的演化,关键问题是计算控制体界面上的。
FVM就是以这个积分关系式出发,把整个流场划分为多小控制体,每个控制体和围相邻的某个控制体共享一个界面,通过计算每个界面上的通量来得到相邻控制体之间的影响,一旦每个控制体的变化得到,整个流场的变化也就知道了。
所以,再强调一次,关键问题是计算控制体界面上的。
初学者会说,这个不难,把界面上的插值得到,然后就可以计算。
有道理!咱们画个图,有三个小控制体i-1到i+1,中间的“|”表示界面,控制体i右边的界面用表示,左边的就是。
| i-1 | i | i+1 |好下个问题:每个小控制体长度都是如插值计算界面上的?最自然的想法就是:取两边的平均值呗,但是很不幸,这是不行的。
那么换个法?直接平均得到?还是很不行,这样也不行。
我靠,这是为什么?这明明是符合微积分里面的知识啊?这个道理有点复杂,说开了去可以讲一本书,可以说从50年代到70年代,CFD科学家就在琢磨这个问题。
这里,初学者只需要记住这个结论:对于流动问题,不可以这样简单取平均值来插值或者差分。
如果你非要想知道这个究竟,我现在也不想给你讲清楚,因为我眼下的目的是让你快速上手,而且该不刨根问底的时候就不要刨根问底,这也是初学阶段一种重要的学习法。
好了,既然目的只是为了求,我在这里,只告诉你一种计算法,也是非常重要、非常流行的一种法。
简单的说,就是假设流动状态在界面是不连续的,先计算出界面两边的值,和,再由它们用某种法计算出。
上述法是非常重要的,是由一个联人Godunov在50年代首创的,后来被发展成为通用Godunov法,著名的ENO/WENO就是其中的一种。
好了,现在的问题是:1 怎么确定和2 怎么计算对于第一个问题,Godunov在他的论文中,是假设每个控制体中是均匀分布的,因此第二个问题,Godunov采用了精确黎曼解来计算。
什么是“精确黎曼解”,就是计算这个激波管问题的精确解。
既然有精确解,那还费功夫搞这些FVM算法干什么?因为只有这种简单一维问题有精确解,稍微复杂一点就不行了。
精确解也比较麻烦,要分析5种情况,用牛顿法迭代求解(牛顿法是什么?看数值计算的书去,哦,算了,现在暂时可以不必看)。
这是最初Godunov的法,后来在这个思想的基础上,各种变体都出来了。
也不过是在这两个问题上做文章,怎么确定,怎么计算。
Godunov假设的是每个小控制体是均匀分布,也就是所谓分段常数(piecewise constant),所以后来有分段线性(picewise linear)或者分段二次分布(picewise parabolic),到后来ENO/WENO出来,那这个假设的多项式次数就继续往上走了。
都是用多项式近似的,这是数值计算中的一个强大工具,你可以在很多地看到这种近似。
Godunov用的四精确黎曼解,太复杂太慢,也不必要,所以后来就有各种近似黎曼解,最有名的是Roe求解器、HLL求解器和Osher求解器,都是对精确黎曼解做的简化。
这个多项式的阶数是和计算精度密切相关的,阶数越高,误差就越小。
不过一般来说,分段线性就能得到不错的结果了,所以工程中都是用这个,Fluent、Fastran以及NASA的CFL3D、OverFlow都是用这个。
而黎曼求解器对精度的影响不是那么大,但是对整个算法的物理适用性有影响,也就是说某种近似黎曼求解器可能对某些流动问题不合适,比如单纯的Roe对于钝头体的脱体激波会算得乱七八糟,后来加了熵修正才算搞定。
上次(/node/399)说到了求解可压缩流动的一个重要算法,通用Godunov法。
其两个主要步骤就是1 怎么确定和2 怎么计算这里我们给出第一点一个具体的实现法,就是基于原始变量的MUSCL格式(以下简称MUSCL)。
它是一种很简单的格式,而且具有足够的精度,NASA著名的CFL3D软件就是使用了这个格式,大家可以去它的主页(/Cfl3dv6/cfl3dv6.html)上看手册,里面空间离散那一章清楚的写着。
MUSCL假设控制体原始变量(就是)的分布是一次或者二次多项式,如果得到了这个多项式,就可以求出控制体左右两个界面的一侧的值和。
我们以压力p为例来说明怎么构造这个多项式。
这里我只针对二次多项式来讲解,你看完之后肯定能自己推导出一次多项式的结果(如果你搞不定,那我对你的智商表示怀疑)。
OK,开始假设,这个假设不影响最终结论,因为你总可以把一个区间线性的变换到长度为1的区间。
假设压力p在控制体i部的分布是一个二次多项式,控制体i的中心处于处,左右两个界面就是和。
这里先强调一个问题,在FVM中,每个控制体的求解出来的变量实际上是这个控制体的平均值。
所以,。
我们知道,和,等距网格情况下和处的导数可以近似表示为那么由上述三个有关a,b和c的程,我们可以得到这样就可以得到f(x)的表达式了,由此可以算出和通常MUSCL格式写成如下形式对应我们的推导结果(二次多项式假设)。
但是这不是最终形式。
如果直接用这个公式,就会导致流场在激波(间断)附近的振荡。
因为直接用二次多项式去逼近一个间断,会导致这样的效果。
所以科学家们提出要对间断附近的斜率有所限制,因此引入了一个非常重要的修改——斜率限制器。
加入斜率限制器后,上述公式就有点变化。
这里是Van Albada限制器是一个小数(),以防止分母为0。
密度和速度通过同样的法来搞定。
密度、速度和压力被称作原始变量,所以上述法是基于原始变量的MUSCL。
此外还有基于特征变量的MUSCL,要复杂一点,但是被认为适合更高精度的格式。
然而一般计算中,基于原始变量的MUSCL由于具有足够的精度、简单的形式和较低的代价而被广泛使用。
OK,搞定了。
下面进入第二点,怎么求。
关于这一点,我不打算做详细介绍了,直接使用现有的近似黎曼解就可以了,都是通过和计算得到。
比如Roe因为形式简单,而非常流行。
在CFL3D软件主页(/Cfl3dv6/cfl3dv6.html)上看手册,附录C的C.1.3。
想了一下,还是把Roe求解器稍微说说吧,力求比较完整。
但是不要指望我把Roe求解器解释清楚,因为这个不是很容易三言两语说清的。
Roe求解器的数学形式是这样的显然这个公式的第一项是一个中心差分形式,先前说过简单的中心差分不可行,原因是耗散不足导致振荡,说得通俗点就像一个弹簧,如果缺乏耗散(阻尼)它就会一直振荡。
“耗散”这个术语在激波捕捉格式中是最常见的。
第二项的作用就是提供足够的耗散了。
这里和已经用MUSCL求得了,的定义在第一讲中已经介绍了。
只有是还没说过的。
这个矩阵可以写成特征矩阵和特征向量矩阵的形式而,,和的具体表达式在多书上都有,而且这里的矩阵表达有问题,所以就不写了。
是由、和代入计算得到。
而、和采用所谓Roe平均值这才是Roe求解器关键的地!总结一下,就是用Roe平均计算界面上的气体状态,然后计算得到,这样就可以得到了。
如果有时间,我后面会找一个代码逐句分析一下。
总之,计算还是很不直接的。
构造近似黎曼解是挺有学问的,需要对气体动力学的物理和数学面有较深的理解。
通常,如果不是做基础研究,.你只需要知道它们的特点,会用它们就可以了,而不必深究它们怎么推导出来的。
Word文档。