计算流体力学过渡到编程的傻瓜入门教程
计算流体力学常用数值方法简介[1]
计算流体力学常用数值方法简介李志印 熊小辉 吴家鸣(华南理工大学交通学院)关键词 计算流体力学 数值计算一 前 言任何流体运动的动力学特征都是由质量守恒、动量守恒和能量守恒定律所确定的,这些基本定律可以由流体流动的控制方程组来描述。
利用数值方法通过计算机求解描述流体运动的控制方程,揭示流体运动的物理规律,研究流体运动的时一空物理特征,这样的学科称为计算流体力学。
计算流体力学是一门由多领域交叉而形成的一门应用基础学科,它涉及流体力学理论、计算机技术、偏微分方程的数学理论、数值方法等学科。
一般认为计算流体力学是从20世纪60年代中后期逐步发展起来的,大致经历了四个发展阶段:无粘性线性、无粘性非线性、雷诺平均的N-S方程以及完全的N-S方程。
随着计算机技术、网络技术、计算方法和后处理技术的迅速发展,利用计算流体力学解决流动问题的能力越来越高,现在许多复杂的流动问题可以通过数值计算手段进行分析并给出相应的结果。
经过40年来的发展,计算流体力学己经成为一种有力的数值实验与设计手段,在许多工业领域如航天航空、汽车、船舶等部门解决了大量的工程设计实际问题,其中在航天航空领域所取得的成绩尤为显著。
现在人们已经可以利用计算流体力学方法来设计飞机的外形,确定其气动载荷,从而有效地提高了设计效率,减少了风洞试验次数,大大地降低了设计成本。
此外,计算流体力学也己经大量应用于大气、生态环境、车辆工程、船舶工程、传热以及工业中的化学反应等各个领域,显示了计算流体力学强大的生命力。
随着计算机技术的发展和所需要解决的工程问题的复杂性的增加,计算流体力学也己经发展成为以数值手段求解流体力学物理模型、分析其流动机理为主线,包括计算机技术、计算方法、网格技术和可视化后处理技术等多种技术的综合体。
目前计算流体力学主要向二个方向发展:一方面是研究流动非定常稳定性以及湍流流动机理,开展高精度、高分辩率的计算方法和并行算法等的流动机理与算法研究;另一方面是将计算流体力学直接应用于模拟各种实际流动,解决工业生产中的各种问题。
计算流体力学知识点
计算流体力学知识点计算流体力学这玩意儿,听起来是不是有点高大上,有点让人摸不着头脑?其实啊,它就藏在我们生活的方方面面,就像一个神秘的小伙伴,时不时地跳出来给我们一些惊喜或者挑战。
咱们先来说说啥是计算流体力学。
简单来讲,它就是一门专门研究流体流动的学问。
比如说,水流过河道、风吹过城市、汽车在空气中飞驰,这些都涉及到流体的流动。
那计算流体力学就是用数学和计算机的方法,来搞清楚这些流动是怎么回事,会产生啥影响。
我记得有一次,我去公园里散步。
那天风挺大的,湖边的柳枝被吹得左摇右摆。
我就突然想到,这风不就是一种流体嘛!它的速度、方向还有力量,都在不断地变化。
如果用计算流体力学的知识来分析,就能算出风在经过不同的障碍物时,速度会怎么降低,压力会怎么变化。
计算流体力学里有一个特别重要的概念,叫控制方程。
这就像是流体流动的“宪法”,规定了它们得怎么动。
比如说连续性方程,它说的是流入一个区域的流体质量,得等于流出这个区域的流体质量,就跟咱们过日子一样,收入和支出得平衡。
还有动量方程,它描述了流体的受力和运动之间的关系,就像你推一个箱子,用的力越大,箱子跑得就越快。
在实际应用中,计算流体力学可厉害了。
比如说在航空航天领域,设计飞机的外形就得靠它。
飞机在天上飞,周围的空气就是流体。
通过计算流体力学的模拟,可以知道怎么设计飞机的翅膀、机身,才能让飞机飞得更快、更稳,还能省油。
汽车行业也是一样,要让汽车的外形更符合空气动力学,减少风阻,提高速度和燃油效率,都得靠计算流体力学来帮忙。
还有能源领域,像火力发电厂的冷却塔,里面热气腾腾的水蒸气往外冒,怎么让这些水蒸气排放得更顺畅,提高发电效率,也得靠计算流体力学来优化设计。
在数值解法这一块,有限差分法、有限体积法和有限元法是常用的几招。
有限差分法就像是把流体流动的区域切成一个个小格子,然后在这些格子上算数值。
有限体积法呢,则是关注每个小体积里的物理量守恒。
有限元法就像是搭积木,把流动区域分成一个个小单元来计算。
第13章 计算流体力学CFD(3)PPT课件
误差与稳定性分析
根据von Neumann(冯诺伊曼)稳定性分析方法,设 误差随空间和时间符合如下Fourier级数分布: 则
97
误差与稳定性分析
稳定性要求
故放大因子
G eat 1
98
误差与稳定性分析
下面采用von Neumann(冯诺伊曼)稳定性分析方法 分析如下差分方程的稳定性:
由于误差也满足差分方程,故有
90
误差与稳定性分析
A=偏微分方程的精确解(解析解)
D=差分方程的精确解 离散误差=A-D
91
误差与稳定性分析
D=差分方程的精确解 N=在某个有限精度的计算机上实际计算出来的解
(数值解) 舍入误差==N-D
N=D+
92
误差与稳定性分析
数值解N=精确解D+误差 数值解N满足差分方程,于是有
93
误差与稳定性分析
在网格点3: 在网格点4: 在网格点5:
A,B,Ki 均为已知量
78
隐式方法
在网格点6:
A,B,Ki 均为已知量
T7 为边界条件,已知量
79
隐式方法
于是有关于T2,T3,T4,T5, T6这五个未知数的五个方程
A,B,Ki 均为已知量
80
隐式方法
写成矩阵形式:
81
隐式方法
系数矩阵是一个三对角矩阵,仅在三条对角线上有非 零元素。 求解线性代数方程组的标准方法是高斯消去法。应用 于三对角方程组,通常采用托马斯算法(国内称为追 赶法)求解。
113
22
有限差分基础
对Y方向的二阶导数有:
二阶中心差分(关于Y方向二阶导数)
23
有限差分基础
计算流体力学编程教程第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)技术,讲解该
技术的基本原理、技术特点以及应用领域,为学生提供完整的计算流
体力学实用技能。
四、实验技术
实验技术将让学生实践流体力学中的实验技术,学习如何使用流
体力学仪器进行实验测量、数据处理和模拟试验等。
总之,计算流体力学速成课程,旨在帮助学生快速系统掌握流体
力学的基本原理、基础概念及相关计算方法,以提高学生对流体力学
的理解和应用知识,为他们未来的专业学习和工作作好充分的准备。
中科院计算流体力学最新讲义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公式(空气)
高等计算流体力学讲义(1)
(8)
∂φ ∂φ ∂ 2φ ∂ 2φ ∂ 2φ ∂ 2φ = ξ xx + η xx + ξ x [ 2 ξ x + ηx ] +ηx[ ξx + 2 ηx ] ∂ξ ∂η ∂ξ ∂ξ∂η ∂ξ∂η ∂η ∂φ ∂φ ∂ 2φ ∂ 2φ ∂ 2φ 2 = ξ xx + η xx + 2 (ξ x ) + 2 ξ xη x + 2 (η x ) 2 ∂ξ ∂η ∂ξ ∂ξ∂η ∂η
2、度量系数及其计算方法
在导数的坐标变换公式中涉及到下列坐标变换系数: ξ x , ξ y ,η x ,η y 。这些系数 称为坐标变换公式(5)对应的度量系数(metrics)。我们看到,为了求解计算平 面中的偏微分方程,如(9)式,必须确定度量系数(有时还包括 ξ xx , ξ xy , ξ yy ,η xx ,η xy ,η yy 等)的离散值。那么,这些度量系数如何计算呢?由于一 般情况下,我们只知道坐标变换关系(5)、(6)的离散表达式,度量系数一般也要 通过有限差分方法近似计算。但是,直接构造 ξ x , ξ y ,η x ,η y 的差分近似是不容易 的。以 ξ x 为例,根据偏导数的意义, ξ x 为 y 保持不变时 ξ 随 x 的变化,如图 2 所示,网格点 P 处的 ξ x 的计算公式应为:
不计质量力的情况下,在直角坐标系中,守恒型 N-S 方程可以写为下列 向量形式: ∂U ∂ ( F − Fv ) ∂ (G − G v ) ∂ ( H − H v ) + + + =0, (1) ∂t ∂x ∂y ∂z 其中
ρu ρv ρw ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ 2 ⎜ ρu + p ⎟ ⎜ ρ vu ⎟ ⎜ ρ uw ⎟ F = ⎜ ρ uv ⎟ G = ⎜ ρ v 2 + p ⎟ H = ⎜ ρ vw ⎟ , ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ 2 ⎜ ρ uw ⎟ ⎜ ρ vw ⎟ ⎜ ρw + p ⎟ ⎜ ( ρ E + p)u ⎟ ⎜ ( ρ E + p )v ⎟ ⎜ ( ρ E + p) w ⎟ ⎝ ⎠ ⎝ ⎠ ⎝ ⎠ 0 ⎛ ⎞ 0 ⎛ ⎞ ⎜ ⎟ ⎜ ⎟ τ xy τ xx ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ τ ⎜ ⎟ τ xy yy G = Fv = ⎜ v ⎜ ⎟, ⎟ τ τ yz xz ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ ⎜ ⎟ T ∂ ∂T ⎜ uτ xy + vτ yy + wτ yz + k ⎟ ⎜ uτ xx + vτ xy + wτ xz + k ⎟ ∂y ⎠ ∂x ⎠ ⎝ ⎝ 0 ⎛ ⎞ ⎜ ⎟ τ xz ⎜ ⎟ ⎜ ⎟ τ zy Hv = ⎜ ⎟。 τ zz ⎜ ⎟ ⎜ ∂T ⎟ ⎜ uτ xz + vτ zy + wτ zz + k ⎟ ∂z ⎠ ⎝ 如果忽略 N-S 方程中的粘性和热传导,得到的简化方程为 Euler 方程:
第13章_计算流体力学CFD(5)讲解
6.3.2 守恒形式
守恒形式
非定常守恒形式欧拉方程(二维):
可以采用Lax-Wendroff方法或 MacCormack方法求解U的分 量在各时间步的值。
u U v 2 v e 2
6.3.3 空间推进
[
]
Lax-Wendroff方法
[
]
Lax-Wendroff方法
Lax-Wendroff显式推进求解 :
6.2 MacCormack方法
MacCormack方法
MacCormack方法是一种显式有限差分 方法,适合于推进求解。 MacCormack方法在时间和空间上都 具有二阶精度。 MacCormack方法比Lax-Wendroff方 法应用起来更简单。
MacCormack方法
预估步 校正步
MacCormack方法
预估步:空间导数预估步:空间导数用向前差分计算。
预估值:
MacCormack方法
校正步:空间导数用向后差分计算。
MacCormack方法
MacCormack方法
在MacCormack方法中,预估步用向前差分, 校正步用向后差分;也可以预估步用向后差分, 校正步用向前差分。或者在时间推进解法的相 继两个时间步中轮流使用这两种办法。
第13章 计算流体力学CFD(5)
6 计算流体力学的基本方法
6.1 Lax-Wendroff方法
Lax-Wendroff方法
Lax-Wendroff方法 是一种显式有限差 分方法,适合于推 进求解。
二维时间推进网格
Lax-Wendroff方法
Lax-Wendroff方法 在时间和空间上都 具有二阶精度。
计算流体力学simple算法
计算流体力学Simple算法1.概述计算流体力学是研究流体运动的一门学科,它的应用范围非常广泛,涵盖了航空航天、能源、环境等多个领域。
Simple算法是计算流体力学中常用的一种简单算法,它可以用于求解流动问题的速度场和压力场。
本文将介绍Simple算法的基本原理、算法流程和应用。
2.基本原理Simple算法是一种基于有限体积法的迭代算法,用于求解流体力学中的Navier-Stokes方程。
它采用的是一个迭代求解压力修正方程和速度修正方程的过程,通过多次迭代,最终得到流体速度场和压力场的数值解。
3.算法流程Simple算法的具体流程如下:步骤一:初始化速度场和压力场,设定收敛准则和迭代次数。
步骤二:根据初始速度场和压力场,计算出流体的质量流率。
步骤三:求解压力修正方程,更新压力场。
步骤四:根据修正后的压力场,求解速度修正方程,更新速度场。
步骤五:检查收敛准则,若未满足则继续迭代,直到满足收敛准则为止。
步骤六:输出最终的速度场和压力场。
4.应用Simple算法适用于各种流动问题,如管道流动、湍流流动等。
它在工程实践中有着广泛的应用,可以用于设计飞机、汽车、船舶等流体力学性能优化的计算模拟。
Simple算法还可以用于求解自然界中的流体现象,如海洋环流、空气动力学等领域。
5.总结Simple算法作为计算流体力学中的一种简单且有效的算法,在工程和科学研究中有着重要的应用价值。
通过本文的介绍,读者可以对Simple算法有一个初步的了解,希望能对相关领域的研究和应用提供一定的参考和帮助。
下面是针对Simple算法的进一步扩展和讨论:6. Simple算法的优缺点Simple算法具有如下优点:- 算法简单易懂,易于实现和使用。
- 对于一些中小规模的流体力学问题,Simple算法的计算效率较高,能够快速求解。
- 由于Simple算法的收敛速度通常较快,对于某些较为简单的流动问题,可以在较少的迭代次数内得到满意的结果。
CFD理论过渡到编程的傻瓜入门教程.
CFD理论过渡到编程的傻瓜入门教程(注:这是一篇不知道谁写的介绍一维无粘可压缩Euler方程,以及如何编程实现求解该方程的论文。
作者从最基本的概念出发,深入浅出的讲解了控制方程,有限体积格式,MSUCL方法,限制器,Roe格式等相关知识。
这篇论文我觉得有利于大家学习CFD编程的相关知识,所以推荐给大家。
文章的后面附有我写的程序(C语言),用于求解一维激波管问题,大家有兴趣可以看看(程序中加了注释说明)胡偶2011)借宝地写几个小短文,介绍CFD的一些实际的入门知识。
主要是因为这里支持Latex,写起来比较方便。
CFD,计算流体力学,是一个挺难的学科,涉及流体力学、数值分析和计算机算法,还有计算机图形学的一些知识。
尤其是有关偏微分方程数值分析的东西,不是那么容易入门。
大多数图书,片中数学原理而不重实际动手,因为作者都把读者当做已经掌握基础知识的科班学生了。
所以数学基础不那么好的读者往往看得很吃力,看了还不知道怎么实现。
本人当年虽说是学航天工程的,但是那时本科教育已经退步,基础的流体力学课被砍得只剩下一维气体动力学了,因此自学CFD的时候也是头晕眼花。
不知道怎么实现,也很难找到教学代码——那时候网络还不发达,只在教研室的故纸堆里搜罗到一些完全没有注释,编程风格也不好的冗长代码,硬着头皮分析。
后来网上淘到一些代码研读,结合书籍论文才慢慢入门。
可以说中间没有老师教,后来赌博士为了混学分上过CFD专门课程,不过那时候我已经都掌握课堂上那些了。
回想自己入门艰辛,不免有一个想法——写点通俗易懂的CFD入门短文给师弟师妹们。
本人不打算搞得很系统,而是希望能结合实际,阐明一些最基本的概念和手段,其中一些复杂的道理只是点到为止。
目前也没有具体的计划,想到哪里写到哪里,因此可能会很零散。
但是我争取让初学CFD 的人能够了解一些基本的东西,看过之后,会知道一个CFD代码怎么炼成的(这“炼”字好像很流行啊)。
欢迎大家提出意见,这样我尽可能的可以追加一些修改和解释。
物理建模中的计算流体力学技术使用方法
物理建模中的计算流体力学技术使用方法计算流体力学(Computational Fluid Dynamics,CFD)是一种通过数学模型和计算机仿真来研究流体力学问题的方法。
在物理建模中,计算流体力学技术广泛应用于设计和分析涉及流体流动的系统,如飞行器、汽车、建筑和能源设备等领域。
本文将介绍物理建模中常用的计算流体力学技术使用方法。
首先,对于计算流体力学技术的使用,首要的步骤是建立准确的几何模型。
在物理建模中,几何模型可以通过3D建模软件或CAD工具来创建。
准确的几何模型可以提供精确的几何信息,这对于后续的计算流体力学分析非常重要。
确保几何模型的准确性,包括去除不必要的几何细节和优化几何表示,将有助于提高计算效率和结果的准确性。
第二步是选择合适的数值方法和离散格式。
计算流体力学使用数值方法来离散化流体力学方程,将连续的偏微分方程转化为离散的代数方程。
数值方法的选择直接影响计算结果的准确性和计算的效率。
常见的数值方法包括有限差分法、有限元法和有限体积法。
在选择数值方法时,需要考虑问题的复杂性、计算资源的可用性以及数值方法的适用性。
第三步是设置数值模拟的边界条件。
边界条件是指在模拟过程中对流体流动的边界施加的限制条件。
边界条件可以包括流体入口速度、温度、压力、流量等。
合理设置边界条件可以模拟真实场景,并准确预测流体流动行为。
需要注意的是,边界条件的选择应基于问题的实际情况和实验数据,以保证模拟结果的准确性。
接下来是选择适当的求解算法。
计算流体力学方程通常是非线性、时间变化的偏微分方程组。
因此,解决这些方程需要使用迭代或递推算法。
在物理建模中常用的求解算法包括迭代法、迭代加速技术(如多重网格方法)和时间积分算法(如显式和隐式算法)。
选择适当的求解算法可以提高计算速度和求解精度。
在进行计算流体力学分析之前,应该对模型进行验证和验证。
验证是指根据已知的实验数据验证计算模型的准确性。
验证的目的是确保模型具有良好的预测能力。
计算流体力学基础ppt课件
它不受物理模型和实验模型的限制,省钱省时,有较多的灵活性, 能给出详细和完整的资料,很容易模拟特殊尺寸、高温、有毒、 易燃等真实条件和实验中只能接近而无法达到的理想条件。
8
数值解法是一种离散近似的计算方法,依赖于物理上合理、数学上适 用、适合于在计算机上进行计算的离散的有限数学模型,且最终结果 不能提供任何形式的解析表达式,只是有限个离散点上的数值解,并 有一定的计算误差。
对于初始条件和边界条件的处理,直接影响计算结果的精度。
16
划分计算网 采用数值方法求解控制方程时,都是想办法将控制方程在空间区
域上进行离散,然后求解得到的离散方程组。要想在空间域上离 散控制方程,必须使用网格。现已发展出多种对各种区域进行离 散以生成网格的方法,统称为网格生成技术。
不同的问题采用不同数值解法时,所需要的网格形式是有一定区 别的,但生成网格的方法基本是一致的。目前,网格分结构网格 和非结构网格两大类。简单地讲,结构网格在空间上比较规范, 如对一个四边形区域,网格往往是成行成列分布的,行线和列线 比较明显。而对非结构网格在空间分布上没有明显的行线和列线。
数学模型就好理解了,就是对物理模型的数学描写。 比如N-S方程就是对粘性流体动力学的一种数学描写,值得注意的是,数学 模型对物理模型的描写也要通过抽象,简化的过程。
14
建立控制方程 确立初始条件及边界条件 划分计算网格,生成计算节点
建立离散方程
离散初始条件和边界条件
给定求解控制参数
解收敛否
否
显示和输出计算结果
21
给定求解控制参数 在离散空间上建立了离散化的代数方程组,并施加离散化的
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作为一款先进的计算流体力学软件,可以为工程领域的问题提供可靠的数值模拟和分析方法,为工程设计和优化提供有力的支持。
中科院计算流体力学最新讲义CFD第讲求代数方程组及网格生成精品文档
知识回顾: 有限体积法基本流程
U tIJ 1 IJ F n d s 1 IJ F vn d s0
无粘项常用方法 (流过AB边的通量):
a. 利用周围点的值,计算出(I+1/2,J) 点处的物理量; 直接利用“差分格式”
n 1 n 1 n 1 n 1
2
i 1 ,j i 1 ,j i,j 1 i,j 1 i,j
i N ,N 1 .1 .;j. .N ,N 1 .1 ..
n
n+1
n+1
n
n+1
n
n+1
n+1
n+1
n
特点: 两次扫描,反复迭代
Copyright by Li Xinliang
0 ann
为了计算稳定,通常使用主元消去法 列主元消去法; 全主元消去法 计算量: 乘法:n3/3n2n/3
加法:n3/3n2/2n5/6
O(n3 / 3)
xnbn/ann
n
xi [bi aikxk]/aii ki1
优点: 简单精确,缺点:计算量大
Copyright by Li Xinliang
l u jk,k1,..n.
k mmj
m1
k1
lik(aik limumk)/ukk ik1,..n. m1
对角线上不能有0, 计算之前先交换矩阵A 的元素,将主值交换到对角线上
Copyright by Li Xinliang
5
回代过程
Axb
LUXb
1 l21 1
y1 b1
t
x2
工程流体力学 第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上对式表示
计算流体力学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行节点。
流体力学简单计算MATLAB程式
用matlab进行编程计算第一问:z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;d=0.257;L=50000 ;mu=6*10^(-6);hf=z+(p1-p2)/(0.86*gama)xdc=2*jdc/d;beta=4.15;m=1;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;Re1=59.7/xdc^(8*xdc/7);Re2=(665-765*log(xdc))/xdc;i=hf/L;if Re<3000Q=Q;elseif 3000<Re<Re1m=0.25;beta=0.0246;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;elseif Re1<Re<Re2m=0.123;A=10^(0.127*log(jdc/d)-0.627);beta=0.0802*A;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;elsem=0;langda=1/(2*log(3.7*d/jdc))^2;beta=0.0816*langda;Q=(hf*d^(5-m)/(beta*mu^m*L))^(1/(2-m));v=4*Q/(pi*d^2);Re=v*d/mu;endiQRevhf =588.1395i =0.0118Q =0.0915Re =7.5526e+004v =1.7632利用IF 语句对四种流态一一进行试算,最终的结果水力损失为588.1395m ,水力坡降0.0118第二问:将其中10km换成直径305mm的管子z=30;p1=50*9.8*10^4;p2=2*9.8*10^4;jdc=0.00015;gama=9800;mu=6*10^(-6);d= [0.257 0.305];L=[40000 10000];x=zeros(4,1);Q1=0.0915;hf=z+(p1-p2)/(0.86*gama);xdc=2*jdc./d;beta=4.15;m=1;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;Re1(1)=59.7/xdc(1)^(8/7);Re1(2)=59.7/xdc(2)^(8/7);Re2(1)=(665-765*log(xdc(1)))/xdc(1);Re2(2)=(665-765*log(xdc(2)))/xdc(2);if Re(1)<3000 & Re(2)<3000Q=Q;elseif 3000<Re(1)<Re1 & 3000<Re(2)<Re1m=0.25;beta=0.0246;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2) *d(2)/mu;elseif Re1<Re(1)<Re2 & Re1<Re(2)<Re2m=0.123;A=10^(0.127*log(jdc/d)-0.627);beta=0.0802*A;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;elsem=0;langda=1/(2*log(3.7*d/jdc))^2;beta=0.0816*langda;Q=(hf/(beta*mu^m*(L(1)/d(1)^(5-m)+L(2)/d(2)^(5-m))))^(1/(2-m));v(1)=4*Q/(pi*d(1)^2);v(2)=4*Q/(pi*d(2)^2);Re(1)=v(1)*d(1)/mu;Re(2)=v(2)*d(2)/mu;endQ Revq=Q-Q1baifenbi=q/Q1Q =0.0978Re =1.0e+004 *8.0795 6.8080v =1.8863 1.3393q =0.0063baifenbi =0.0694先假设流态均为层流,再进行试算,最终可得输量可提高6.94个百分点。
- 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对于钝头体的脱体激波会算得乱七八糟,后来加了熵修正才算搞定。
上次()说到了求解可压缩流动的一个重要算法,通用Godunov方法。
其两个主要步骤就是1 怎么确定和2 怎么计算这里我们给出第一点一个具体的实现方法,就是基于原始变量的MUSCL 格式(以下简称MUSCL)。
它是一种很简单的格式,而且具有足够的精度,NASA著名的CFL3D软件就是使用了这个格式,大家可以去它的主页()上看手册,里面空间离散那一章清楚的写着。
MUSCL假设控制体内原始变量(就是)的分布是一次或者二次多项式,如果得到了这个多项式,就可以求出控制体左右两个界面的一侧的值和。
我们以压力p为例来说明怎么构造这个多项式。
这里我只针对二次多项式来讲解,你看完之后肯定能自己推导出一次多项式的结果(如果你搞不定,那我对你的智商表示怀疑)。
OK,开始假设,这个假设不影响最终结论,因为你总可以把一个区间线性的变换到长度为1的区间。
假设压力p在控制体i内部的分布是一个二次多项式,控制体i的中心处于处,左右两个界面就是和。
这里先强调一个问题,在FVM中,每个控制体内的求解出来的变量实际上是这个控制体内的平均值。
所以,。
我们知道,和,等距网格情况下和处的导数可以近似表示为那么由上述三个有关a,b和c的方程,我们可以得到这样就可以得到f(x)的表达式了,由此可以算出和通常MUSCL格式写成如下形式对应我们的推导结果(二次多项式假设)。
但是这不是最终形式。
如果直接用这个公式,就会导致流场在激波(间断)附近的振荡。
因为直接用二次多项式去逼近一个间断,会导致这样的效果。
所以科学家们提出要对间断附近的斜率有所限制,因此引入了一个非常重要的修改——斜率限制器。
加入斜率限制器后,上述公式就有点变化。
这里是Van Albada限制器是一个小数(),以防止分母为0。
密度和速度通过同样的方法来搞定。
密度、速度和压力被称作原始变量,所以上述方法是基于原始变量的MUSCL。
此外还有基于特征变量的MUSCL,要复杂一点,但是被认为适合更高精度的格式。
然而一般计算中,基于原始变量的MUSCL由于具有足够的精度、简单的形式和较低的代价而被广泛使用。
OK,搞定了。
下面进入第二点,怎么求。
关于这一点,我不打算做详细介绍了,直接使用现有的近似黎曼解就可以了,都是通过和计算得到。
比如Roe因为形式简单,而非常流行。
在CFL3D软件主页()上看手册,附录C的C.1.3。
想了一下,还是把Roe求解器稍微说说吧,力求比较完整。
但是不要指望我把Roe求解器解释清楚,因为这个不是很容易三言两语说清的。
Roe求解器的数学形式是这样的显然这个公式的第一项是一个中心差分形式,先前说过简单的中心差分不可行,原因是耗散不足导致振荡,说得通俗点就像一个弹簧,如果缺乏耗散(阻尼)它就会一直振荡。
“耗散”这个术语在激波捕捉格式中是最常见的。
第二项的作用就是提供足够的耗散了。
这里和已经用MUSCL求得了,的定义在第一讲中已经介绍了。
只有是还没说过的。
这个矩阵可以写成特征矩阵和特征向量矩阵的形式而,,和的具体表达式在许多书上都有,而且这里的矩阵表达有问题,所以就不写了。
是由、和代入计算得到。
而、和采用所谓Roe平均值这才是Roe求解器关键的地方!总结一下,就是用Roe平均计算界面上的气体状态,然后计算得到,这样就可以得到了。
如果有时间,我后面会找一个代码逐句分析一下。
计算流体力学过渡到编程的傻瓜入门教程总之,计算还是很不直接的。
构造近似黎曼解是挺有学问的,需要对气体动力学的物理和数学方面有较深的理解。
通常,如果不是做基础研究,你只需要知道它们的特点,会用它们就可以了,而不必深究它们怎么推导出来的。
11 / 11。