中科院计算流体力学最新讲义CFD2011-第14讲-MPI并行程序设计初步培训课件
计算流体力学绪论课件
求解器多样
OpenFOAM提供了多种求解器,如 稳态求解器、瞬态求解器、非牛顿流 求解器等。
社区支持
OpenFOAM拥有庞大的用户社区, 提供了丰富的资源和支持,方便用户 学习和交流。
05
计算流体力学研究前沿与 展望
多尺度模拟
总结词
多尺度模拟是计算流体力学领域的重要 研究方向,旨在模拟和分析不同尺度下 的流体运动现象。
03
数值模拟方法
有限差分法
有限差分法是一种将偏微分方程离散化为差分方 程的方法,适用于求解偏微分方程。
优点:简单易行,适用于多种类型的偏微分方程 ,可以处理复杂的边界条件。
有限差分法的基本思想是将连续的偏微分方程离 散化为差分方程,通过求解差分方程来近似求解 原偏微分方程。这种方法在计算流体力学中广泛 应用于求解流体动力学方程。
有限元法
优点
精度较高,适用于处理复杂的偏微分 方程和边界条件。
缺点
计算量大,需要较大的存储空间和计 算资源,对于大规模问题的求解可能 存在挑战。
有限体积法
• 有限体积法是一种将偏微分方程离散化为有限体积方程的方法,适用于求解流体动力学方程。
• 有限体积法的基本思想是将连续的流体域离散化为有限个小的体积单元,在每个体积单元上近似解,然后通过求解有限体积方程来近似求解原偏微分方程。这种方法在计算流体力学中 广泛应用于流体动力学模拟。
详细描述
复杂流动模拟与控制涉及流体运动的多种复杂现象,如湍流、多相流、非牛顿流等。通 过模拟和分析这些复杂流动现象,可以为实际工程中的流体控制提供重要的理论依据和 技术支持。同时,复杂流动模拟与控制还能够为流体工程、航空航天、环境科学等领域
提供更加精准的预测和控制方法。
计算流体力学CFD课件
V
dV
0
空间位置固定的无穷小微团模型 V 0 t
随流体运动的无穷小微团模型
方程不同形式之间的转换
空间位置固定的有限控制体模型 tV dVSVdS0
空间位置固定的无穷小微团模型 V 0 t
方程不同形式之间的转换
空间位置固定的无穷小微团模型 V 0 t
随流体运动的无穷小微团模型
流动控制方程经常用物质导数来表达。
物质导数(运动流体微团的时间变化率)
采用流体微团模型来理解物质导数的概念:
沿流线运动的无穷小 流体微团,其速度等 于流线上每一点的当
物质导数(运动流体微团的时间变化率)
流体微团在流场中的运动-物质导数的示意图
物质导数(运动流体微团的时间变化率)
考虑非定常流动:
随流体运动的无穷小微团模型
动量方程
作用在流体微团上的体 积力的X方向分量=
fxdxdydz
随流体运动的无穷小微团模型
动量方程
作用在流体微 团上的X方向的 压力=
动量方程
作用在流体微 团上的X方向的 正应力=
动量方程
作用在流体微 团上的X方向的 切应力=
动量方程
作用在流体微 团上的X方向总 的表面力=
t
或
txuyv zw0
空间位置固定的无穷 小微团模型
空间位置固定的无穷小微团模型
连续性方程:
txuyv zw0
或
V0
t
空间位置固定的无穷 小微团模型
随流体运动的无穷小微团模型
随流体运动的无穷小微团模型
连续性方程 流体微团的质量:
质量守恒定律
随流体运动的无穷小 微团模型
随流体运动的无穷小微团模型
流体微团在流场中的 运动-物质导数的示 意图
机电一体化系统设计第三章 计算流体力学(CFD)简介
求解器设置
动量 能量
状态方程 所支持的计算模型
紊流 燃烧 辐射 多相流 相转换 动区域 动网格
后处理
选择材料 边界条件 初始条件
FLUENT-通用CFD软件
Fluent基本步骤
问题的鉴定及预处理
定义你所需要的模型 确定即将模拟的区域 设计并创建网格
求解
建立数学模型 计算并监控
t(s)
Ma=0.8的均匀场内静止点声源的声辐射,观察 者位置(100m,0m,0m)
FLUENT-通用CFD软件
矢量图:直接给出二维或三维空间里矢量(如 速度)的方向及大小,一般用不同颜色和长度 的箭头表示速度矢量。矢量图能形象地显示流 动特征
某离心叶轮近轮盖处的速度分布
FLUENT-通用CFD软件
CFD算例
开度100%
压力分布
开度50%
开度10%
CFD算例
Frame 001 13 Dec 2004
压力分布
开度100%
Frame 001 10 Dec 2004
130
120
Volume Flow Rate(m3/h)
110
100
90 85
controlvalve 100%open
Frame 001 22 Feb 2005 title
Y
CFD算例
10.418 9.72344 9.02891 8.33438 7.63984 6.94531 6.25078 5.55625 4.86172 4.16719 3.47266 2.77813 2.08359 1.38906 0.694531
dxdydz v ndA 0 t V A
FLUENT官方培训教材(完整版)
Gas outlet
Oil outlet
Three- Phase Inlet
Water outlet
Contours of Oil Volume Fraction in a Three-Phase Separator
Update Model
1. 定义模拟目的
你希望得到什么样的结果(例如,压降,流量),你如何使用这些结果? 你的模拟有哪些选择? 你的分析应该包括哪些物理模型(例如,湍流,压缩性,辐射)? 你需要做哪些假设和简化? 你能做哪些假设和简化(如对称、周期性)? 你需要自己定义模型吗? FLUENT使用UDF,CFX使用 User FORTRAN 计算精度要求到什么级别? 你希望多久能拿到结果? CFD是否是合适的工具?
Solid model of a Headlight Assembly
Pre-Processing Mesh Physics Solver Settings
4. 设计和划分网格
计算域的各个部分都需要哪种程度的网格密度? 网格必须能捕捉感兴趣的几何特征,以及关心变量的梯度,如速度梯度、压力梯度、温度梯度等。 你能估计出大梯度的位置吗? 你需要使用自适应网格来捕捉大梯度吗? 哪种类型的网格是最合适的? 几何的复杂度如何? 你能使用四边形/六面体网格,或者三角形/四面体网格是否足够合适? 需要使用非一致边界条件吗? 你有足够的计算机资源吗? 需要多少个单元/节点? 需要使用多少个物理模型?
Problem Identification Identify domain
2. 确定计算域
工程流体力学的计算方法CFD基础课件
云计算技术使得大规模CFD模拟成为 可能,同时提供了灵活的计算资源和 数据管理方式。未来,云计算技术将 进一步优化,以降低计算成本和提高 计算效率。
THANKS
CFX
工业标准的CFD软件
CFX是全球公认的工业标准的CFD软件之一,广泛应用于能源、化工、航空航天、汽车等领域。它具 有强大的求解器和先进的物理模型,能够模拟复杂的流体流动和传热问题,并提供丰富的后处理功能 。
OpenFOAM
开源CFD软件
OpenFOAM是一款开源的CFD软件,由C编写,具有高度的灵活性和可定制性。它提供了丰富的工具包和案例库,适用于各 种流体动力学模拟,包括复杂流动、传热、化学反应等问题。
粘性。
热传导
流体在温度梯度作用下会产生 热传导现象。
流体动力学基本方程
质量守恒方程
表示流体质量随时间的变化规律 。
动量守恒方程
表示流体动量随时间的变化规律。
能量守恒方程
表示流体能量随时间的变化规律。
流体流动的分类
层流流动
均匀流动和非均匀流动
流体质点仅沿流线方向作有规则的线 运动,互不混杂。
根据流动是否具有空间均匀性进行分 类。
06
CFD未来发展与挑战
高精度算法与求解器
总结词
随着计算能力的不断提升,高精度算法和求解器在 CFD领域的应用将更加广泛。
详细描述
高精度算法和求解器能够提供更精确的流场模拟结果 ,有助于更深入地理解流体动力学现象。未来,高精 度算法和求解器将进一步优化,以适应更复杂、更高 要求的CFD模拟。
多物理场耦合模拟
有限体积法的优点在于能够很好地处 理流体流动中的非线性特性和复杂边 界条件,因此在工程流体力学中得到 了广泛应用。
计算流体力学(中科院力学所_李新亮)——_经典转载 (1)
0 31 32 G3 (U ) 33 C p T u 31 v 32 w 33 Copyright by Li Xinliang Pr Re z
ui u j i j ), ( x j xi ij (2 ui 2 divV ), i j xi 3
波音787 波音777
Copyright by Li Xinliang 8
CFD 面临的挑战及主要任务:
多尺度复杂流动的数学模型化; 湍流的计算模型; 转捩的预测模型; 燃烧及化学反应模型; 噪声模型…… 可处理间断及多尺度流场的高分辨率、强鲁棒性、高效数值方法; 高精度激波捕捉法; 间断有限元法; …… 可处理复杂外形、易用性强的算法; 复杂外形—— 网格生成工作量大 多块分区算法; 无网格法; 粒子算法;
Mach10 正激波
60°
平板
Copyright by Li Xinliang
5
连续解 微分方程
U ( F Fv ) (G G v ) ( H H v ) 0 t x y z
Mach10 正激波
↓
网格划分 数值方法
60°
平板
↓
解的离散表示 代数方程
↓
Copyright by Li Xinliang
2
第1讲 流体力学基本方程
• 计算流体力学(CFD) 的概念及意义 • 流体力学的基本方程 • 偏微分方程组的类型 重点: 了解N‐S方程的由来及物理含义,熟练掌握N‐S方程 了解偏微方程的基本类型
Copyright by Li Xinliang 3
u v u 2 p u uv U v F1 (U ) uv F2 (U ) v 2 p uw vw w u ( E p ) E v ( E p )
计算流体力学(中科院力学所)_第12讲-不可压流动
Vn
Step 1 : 得到 时间步的值 得到n
Step 2: 进行如下内迭代直至收敛
p k +1 p k + β V k = 0 t V k +1 V k 1 2 n + V n V n = p k + V t Re
在v的网格点上离散 交错网格示意图 压力p 压力 速度 u 速度v 速度
p pi , j p = i , j +1 y x i , j +1/ 2
pi , j
ui +1 / 2, j
vi , j +1 / 2
注: 对流项通常采用迎风格式离散
u
Copyright by Li Xinliang
拟压缩性方法 求解压力Poisson方程法 求解压力 方程法 涡流函数法 Simple方法 方法
讲义、 流体中文网) 流体论坛” “ 讲义、课件上传至 (流体中文网) -> “流体论坛” ->“ CFD基础理论 ” 流体中文网 基础理论 讲课录像及讲义上传至网盘 /browse.aspx/.Public
u13 L u1n u 23 L u 2 n u 33 L u3n L L u nn
a j x j 1 + b j x j + c j x j +1 = d j
x j = A j x j +1 + B j
2
Copyright by Li Xinliang
知识回顾
迭代法
2u 2u + = f ( x, y ) x 2 y 2 u = g ( x, y )
计算流体力学课件概述
2018/12/24
13
能源工业:图a是CFD模拟的500 [Mwe]电站煤粉锅炉炉内
燃烧。结果显示了在燃烧器喷流交叉形成的高温、高氧区, NOX生成速率大。
图b显示的是管壳换热器的流线及温度分布。同时考虑管外 流体、管内流体、以及管壁部分的耦合传热。
图c是模拟燃料电池中氧浓度的分布。用户开发了专门的电 化学反应模型,通过催化层的电化学反应速率模拟当地的电 流密度。
2018/12/24 8
CFD拥有包括流体流动、传热、辐射、多相流 、化学反应、燃烧等问题丰富的通用物理模 型;还拥有诸如气蚀、凝固、沸腾、多孔介 质、相间传质、非牛顿流、喷雾干燥、动静 干涉、真实气体等大批复杂
现象的实用模型。
2018/12/24
9
航空航天:图a为模拟美国F22战斗机的结果,图中 显示的是对称面上的马赫数分布。计算共采用了 260万个网格单元。模拟的升力、阻力及力矩系数 都与实验值吻合的很好。 图b是某飞机多段翼周围的压力分布 图c是美国J-31型涡轮喷气发动机的整机模拟。包 括进气道、压缩机、燃烧室、尾喷管四个部分。
图c 模拟出添加剂的浓度分布。改变添加剂的投放位置,用 CFD模拟来优化添加剂浓度分布,以达到最好的防腐效果
2018/12/24
15
冶金工业:图a 模拟的钢水铸造过程,图中显示的是铸造
模具内的流线及表面温度分布 图b是模拟连续加热炉,该炉采用直接加热方式,从图中温度 分布可以看出,钢带有一角的温度过高,这会影响钢产品的 质量。 图c是模拟优化铸造炉内烧嘴的类型和位置。很好地模拟出了 融池内因浮力驱动产生的二次流现象,及诸如回流区、涡、 表面波的发展、温度分布的不均匀性等设计缺陷。
2018/12/24
10
计算流体力学-中国科学院力学所研究生教育网
计算流体力学Computational Fluid Dynamics类型:属性:专业基础课课时/学分:60/3一、预修课程流体力学;空气动力学;偏微分方程数值解法二、内容简介和教学要求本课程包含基础及应用两个部分。
基础部分讲述流体力学方程组及其物理含义,双曲型方程组的数理性质,有限差分法及有限体积法的理论基础及计算方法等;应用部分介绍国内外当前流行的高速流动和不可压缩流动的主要解法,网格生成技术,计算流体力学当前的主要问题、最新计算方法、及发展动向等。
此外还介绍了并行计算的基础知识及湍流计算方法等。
本课程的特点是强调基础、突出应用,希望学生通过学习这一课程,对计算流体力学有一个系统深入的理解,具有一定的理论基础和较强的解决实际问题的能力。
同时,在这一课程中也注意把课程学习和研究所的工作结合起来,使学生到研究所后能立即开展和计算流体力学有关的研究工作。
本课程还将讲授并行程序设计的基本内容,使得学生们能够了解并行程序设计的基本思想及编程方法,并能编制基本的并行计算程序。
为培养学生独立思考和独立工作的能力,本课程采用启发的课程讲习方法,鼓励学生在掌握基础知识的基础上自己动手编制程序,以便加深对计算流体力学本质的理解和增强对实际问题的感性认识。
力求学生们学完该课程后,能够独立编写计算流体力学程序。
三、简要目录第一章引论1.1 计算流体力学及其特征1.2 计算流体力学的发展第二章流体力学方程组及模型方程2.1 流体力学基本方程2.2 模型方程及其数学性质2.3 双曲型方程组的初边值问题2.4 Riemann 间断解第三章有限差分方法3.1 差分方法基本概念3.2 差分方程的有效性及稳定性分析3.3 数值解的精度及分辨率分析3.4 数值解中的耗散效应、色散效应及群速度控制第四章有限体积法4.1有限体积法的基本思4.2 表面积近似及体积积分近似4.3 插值算法4. 4 边界条件处理第五章代数方程的数值求解5.1 直接法5.2 迭代法5.3 分裂算法5.4 近似因式分解算法5.5 多重网格法第六章激波处理与高速流动的数值方法6.1 捕获激波的主要方法6.2 激波捕获精度分析及提高捕获激波精度的方法6.3 Godunov类算法6.4 TVD方法6.5 NND算法6.6 紧致格式及其应用6.7 WENO方法简介6.8 群速度控制格式简介第七章不可压缩粘性流动数值解法7.1 不可压缩流动基本方程组特点和困难7.2 涡量流函数算法7.3 原始变量算法第八章网格生成技术8.1 网格生成技术的基本思想8.2 代数网格法8.3 微分方程法8.4 自适应网格8.5 无结构网格简介第九章 MPI并行程序设计初步9.1 MPI并行程序设计的基本概念9.2 MPI并行程序设计的主要方法9.3 CFD程序的并行优化第十章湍流的数值模拟10.1 工程湍流模式方法10.2 大涡模拟方法10.3 直接数值模拟方法10.4 分离涡模拟方法10.5 转捩的计算四、教材1.计算流体力学(傅德薰、马延文)高等教育出版社, 20022. 计算空气动力学(傅德薰、马延文)国防工业出版社,1996五、参考书1.计算流体力学方法及应用(阎超)北京航空航天大学出版社 20062.计算流体力学(祈孝康、刘儒动、蒋伯诚)国防科大出版社 19893.一维流体力学差分方法(水鸿寿)国防工业出版社 1998教学方式课堂讲授为主,配合课程内结合实例进行编程练习六、考核方式闭卷考试与开卷考试结合。
中科院计算流体力学最新讲义CFD112讲双曲型方程组11314
u u c[ t (u c) x ] [ t (u c) x ] 0 u u c[ (u c) ] [ (u c) ] 0 t x t x
j
kj
(
U j t
k
U j x
t=1
0
利用特征线,分析不同区域的差异 等(均)熵情况下,同族特征线不会相交 思考题: 小扰动的传播情况?
-0.005
u
-0.01
1D Euler with initial disturbance u=0.01sin(x)
-0.015 -5
0
5
10
x
不同时刻的速度分布(A=0.01) u( x, t ) 0.005sin(x ct ) 0.005sin(x ct )
S u 2c const 1
t
特征线2
dx / dt u c
特征线1
C
dx / dt u c
Ru
2c const 1
S u
2c const 1
x
A
B
知识点,牢记!
一维均熵流动沿特征线Riemann不变量保持不变
在(x,t)空间: 沿特征线1: 沿特征线2:
p
绝热与等温情况相比,气体更难压缩了
5
等熵情况下,仅有一个 独立的热力学变量; 给定任何一个都意味着 给定全部热力学量;
Copyright by Li Xinliang
均熵运动情况下,能量方程可用熵为常数替代
u 0 t x u ( u 2 p ) 0 t x
解出 u3 , c3
解出t3时刻的流场,继续推进下个时刻
计算流体动力学(CFD)简介PPT优秀课件
选择“开始”→“程序”→Fluent Inc Products→Gambit2.2.30→Set environment,单击Set environment,进入如图3-4所示的对话框。单击 “是”按钮就设置好了Gambit的环境变量。另外,注意以上两种环境变 量设置好后需要重启系统,否则仍会提示找不到环境变量。
多 块网格,以及二维混合网格和三维混合网格。
图3-1 Fluent使用的网格的形状 ➢10
1.2.2 各软件之间的协同关系 如图3-2所示,最基本的流体数值模拟可以通过以上软件的合作而
完成:UG/AutoCAD属于CAD,用来生成数值模拟所在区域的几何形状; Tgrid和Gambit 是把计算区域离散化,或网格的生成,其中Tgrid可以从 已有边界网格中生成体网格,而Gambit自身就可以生成几何图形和划分 网格的;Fluent求解器是对离散化且定义了边界条件的区域进行数值模 拟;Tecplot可以把从Fluent求解器导出的特定格式的数据进行可视化, 形象地描述各种量在计算区域内的分布。
TGrid用于从现有的边界网格生成体网格,Filters可以转换由其他软件生 成的网格从而用于Fluent计算。与Filters接口的程序包括ANSYS、 I-DEAS、NASTRAN 、 PATRAN等。
(2)求解器: 它是流体计算的核心,根据专业领域的不同,求解 器主要分以下几种类型。
①Fluent4.5:基于结构化网格的通用CFD求解器。 ②Fluent6.2.16:基于非结构化网格的通用CFD求解器。 ③ Fidap:基于有限元方法,并且主要用于流固耦合的通用CFD求 解器。 ④ Polyflow:针对粘弹性流动的专用CFD求解器。 ⑤ Mixsim:针对搅拌混合问题的专用CFD软件。 ⑥ Icepak: 专用的热控分析CFD软件。 (3)后处理器:Fluent求解器本身就附带有比较强大的后处理功 能。另外,Tecplot也是一款比较专业的后处理器,可以把一些数据可视 化,这对于数据处理要求比较高的用户来说是一个理想的选择。
计算流体力学课件
• 引言 • 基本概念与原理 • 数值模拟方法 • 计算流体力学软件介绍 • 计算流体力学在工程中的应用 • 计算流体力学的未来发展与挑战
目录
Part
01
引言
流体力学的重要性
流体力学是物理学的一个重要分支,它研究流体(液体和气体)的运动规律、热力 学性质以及流体与其他物质的相互作用。
Part
04
计算流体力学软件介绍
Fluent软件介绍
1
商业化的计算流体动力学 软件
4
提供丰富的物理模型和材 料库,方便用户进行模拟 和分析
2
支持多种求解器和网格生
成技术
3
广泛应用于流体动力学模
拟、燃烧模拟等领域
CFX软件介绍
英国AEA公司开发的计算流体动 力学软件
提供丰富的物理模型和材料库, 方便用户进行模拟和分析
迭代法
通过迭代的方式求解离散 化的方程组,得到数值解 。
有限差分法
有限差分法的基本思想
将偏微分方程转化为差分方程,通过 求解差分方程得到数值解。
有限差分法的步骤
建立差分方程、求解差分方程、误差 估计等。
有限元法
有限元法的基本思想
将连续的物理量离散为有限个单元,通过求解每个单元的近似解得到整个问题 的数值解。
规模的流动模拟。
大涡模拟
总结词
大涡模拟是一种针对湍流中大尺度涡旋进行模拟的方法,通过过滤掉小尺度涡旋 的影响,降低计算量。
详细描述
大涡模拟只关注大尺度涡旋的运动规律,忽略小尺度涡旋的影响。这种方法能够 显著减少计算量,适用于较大尺度的流动模拟。然而,由于忽略了小尺度涡旋的 影响,大涡模拟的精度和适用范围有限。
水流模拟
计算流体力学课件完整版
●实验要受测量技术限制,实验周期长、费用高。
☆ 理论研究 ●在研究流体流动规律的基础上,建立了流体流动基 本方程。 ●对于一些简单流动,通过简化求出研究问题的解析 解。
计算流体力学
●对于实际流动问题,通常需运用流体力学基本方程, 借助于计算机求数值解(计算机数值模拟)— 计算流体力学CFD。
Z
skirt.plt X Y
75 50 25
0 -25 -50 -75
-2
Y(M) 0
2
0 2 4 6 10 8 X(M) 12 14
D) 16 Feb 2003 Velocity Vectors
4.5
4 velocity.plt
3.5
3
2.5
2
1.5
Z
Z
(3D) 16 Feb 2003 IJK-Ordered DZ ata
ijkcyl.plt X Y
Z
-0.4 -0.2 Y0 0.2 0.4
1
0.8
0.6
0.4
0.2
0 -0.4 -0.2 0 X 0.2 0.4
Z
jetflow.plXt Y
0.6 0.5 0.4 0.3 0.2 0.1
0 0 Y0.1 0.2
-0.6 -0.4 -0.2 0 X 0.2 0.4 0.6
轴流叶轮计算与实验叶片表面极限流线
计算流体力学
轴流叶轮计算与实验性能比较
计算流体力学
轴流叶轮计算与实验流场结构比较
计算流体力学
第二章 流体力学数值计算数学模型及定解条件
☆本章所涉及的基本方程有两类: ●流体力学基本方程,基本出发点:质量守恒、动量守恒和能
计算流体力学简明讲义讲解
第一章绪论第一节计算流体力学:概念与意义一、计算流体力学概述任何流体运动的规律都是由以下3个基本定律为基础的:1)质量守恒定律;2)牛顿第二定律(力=质量×加速度),或者与之等价的动量定理;3)能量守恒定律。
这些基本定律可由积分或者微分形式的数学方程(组)来描述。
把这些方程中的积分或者(偏)微分用离散的代数形式代替,使得积分或微分形式的方程变为代数方程(组);然后,通过电子计算机求解这些代数方程,从而得到流场在离散的时间/空间点上的数值解。
这样的学科称为计算流体(动)力学(Computational Fluid Dynamics,以下简称CFD)。
CFD有时也称流场的数值模拟,数值计算,或数值仿真。
在流体力学基本方程中的微分和积分项中包括时间/空间变量以及物理变量。
要把这些积分或者微分项用离散的代数形式代替,必须把时空变量和物理变量离散化。
空间变量的离散对应着把求解域划分为一系列的格子,称为单元体或控制体(mesh,cell,control volume)。
格子边界对应的曲线称为网格(grid),网格的交叉点称为网格点(grid point)。
对于微分型方程,离散的物理变量经常定义在网格点上。
某一个网格点上的微分运算可以近似表示为这个网格点和相邻的几个网格点上物理量和网格点坐标的代数关系(这时的数值方法称为有限差分方法)。
对于积分型方程,离散物理量可以定义在单元体的中心、边或者顶点上。
单元体上的积分运算通常表示为单元体的几何参数、物理变量以及相邻单元体中物理变量的代数关系(这时的数值方法称为有限体积方法和有限元方法)。
所谓数值解就是在这些离散点或控制体中流动物理变量的某种分布,他们对应着的流体力学方程的用数值表示的近似解。
由此可见,CFD得到的不是传统意义上的解析解,而是大量的离散数据。
这些数据对应着流体力学基本方程的近似的数值解。
对于给定的问题,CFD 研究的目的在于通过对这些数据的分析,得到问题的定量描述。
CFD2020-第15讲-MPI并行程序设计初步2
3 Copyright by Li Xinliang
“对等式”程序设计思想 ✓站在其中一个进程的角度思考
如果我是其中一个进程; 我应当做…… 完成我需要完成的任务
Copyright by Li Xinliang
对等式 设计
a.exe
a.exe
MPI_Test(request, flag,stutus,ierr) MPI_Waitall(const,request_array,status,ierr) 等待多个消息完成 • In request • Out status, flag (logical型)
Copyright by Li Xinliang
……
Call MPI_Wait(request,status,ierr)
Sum=……
√
MPI_Irecv(sum1, ……, request, …) …… Call MPI_Wait(request,status,ierr)
Sum=sum0+sum1 √
11 Copyright by Li Xinliang
方法1. 多次发送 通信开销大、效率低
A(1,1), A(1,2), A(1,3) ……
A(1,1), A(2,1), ………
A(1,2), A(2,2) …….
Copyright by Li Xinliang
A(1,3)….
17
方法2. 将发送的数据拷贝到连续的数组中
dimension A(100,50), B(50)
i=N
0
J=1,2,3 ……………………….
N-1, N
12 Copyright by Li Xinliang
中科院计算流体力学最新讲义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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第六讲 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, …)
……
Call MPI_Wait(request,status,ierr)
• 非阻塞消息接收 • MPI_IRecv(buf,count,datatype,source,tag,comm,request,ierr) • In buf,count,datatype,source,tag,comm • Out request,ierr
• 非阻塞通信的完成 • MPI_Wait(request,status,ierr) 等待消息收发完成
MPI_Recv() 返回后缓冲区数据可使用
Call MPI_Recv(sum1,……) Sum=sum0+sum1 ……
7
非阻塞发送
非阻塞接收
启动发送
发
立即返回
送
消 计
息 算
启动接收
立即返回 计 算
通信完成
通信完成
释放发送缓冲区
引用接收数据
非阻塞消息发送与接收
接 收 消 计算
与 息 通信
重叠
8
• 非阻塞消息发送 • MPI_ISend(buf,count,datatype,dest,tag,comm,request,ierr) • In buf,count,datatype,dest,tag,comm • Out request,ierr • Request (返回的非阻塞通信对象, 整数)
串行程序
real A(N,N),B(N,N),h
…..
Do i=1,N
i=N
B(I,1)=(A(I,2)-A(I,1))/h
B(I,N)=(A(I,N)-A(I,N-1))/h
enddo
Do j=2,N-1
Do i=1,N
B(i,j)=(A(i,j+1)-A(i,j-1))/(2.*h)
Enddo
Enddo
MPI_Test(request, flag,stutus,ierr) MPI_Waitall(const,request_array,status,ierr) 等待多个消息完成 • In request • Out status, flag (logical型)
9
非阻塞通信调用后立即返回,缓冲区不能立即使用
Sum=……
√
MPI_Irecv(sum1, ……, request, …) …… Call MPI_Wait(request,status,ierr)
Sum=sum0+sum1 √
10
利用通信与计算重叠技术提高效率
例: 计算差分
i=1
(fy )i,j (fi,j 1fi,j 1 )/2 (h ) i=2
MPI_Comm_rank(MPI_COMM_WORLD,myid,ierr) ➢ 得到通信域包含的进程数
MPI_Comm_size(MPI_COMM_WORLD,numprocs,ierr)
➢ 消息发送
MPI_Send(buf,count,datatype,dest,tag,comm, ierr)
1
MPI 程序的运行原理:
知识回顾
➢ 服务器(前端机)编译
➢ 可执行代码复制 N 份,每个节点运行一份
调用MPI库函数 得到每个节点号 my_id 根据my_id 不同,程序执行情况不同
➢ 调用MPI 库函数进行通讯
MPI 编程的基本思想: 主从式,对等式 重点:对等式程序设计
服务器/前端机
Hale Waihona Puke a.exeendif1
0 J=1,2,3 ……………………….
N-1, N
11
并行程序—— 以两个进程并行为例
0
real A(N,N/2),B(N,N/2),A1(N),h
……
……
If(myid .eq. 0) then
J=1,2 ……N/2
call MPI_send(A(1,N/2),N,MPI_real,1,99,MPI_Comm_world,ierr)
阻塞发送
MPI_Send( A, … )
MPI_Recv( B , …)
开始
阻塞接收 开始
结束
消息成功发出 缓冲区可释放
结束
消息成功接收 缓冲区数据可使用
阻塞式发送与接收
6
MPI_Send( ) 返回后缓冲区可释放
sum= ……
call MPI_Send(sum,……)
sum= ……
变量可重复利用
➢ 消息接收
MPI_Recv(buf,count,datatype,source,tag,comm,status,ierr)
4
MPI的消息发送机制—— 两步进行 MPI_Send( A, … ) 发送 配合使用 MPI_Recv( B, … ) 接收
发送 变量A
接收 到变量B
5
一、 阻塞式通信与非阻塞式通信