6. 计算流体力学基础(二)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LU分解性能好,但不能利用矩阵稀疏性 M接近A时,收敛很快
稀疏矩阵 小矩阵
Stone方法
利用椭圆PDE解的平滑性 L和U只计算一次 收敛很快 其它迭代方法的基础
交替方向隐式(ADI)迭代
Crank-Nicolson
共轭梯度(CG,Conjugate Gradient)法
Fluent中的Deferred-Correction
CDS离散格式
Deferred-Correction
收敛准则与迭代误差
收敛准则一:解在相邻迭代步之间的差值
迭代误差估计:
收敛准则与迭代误差
收敛准则一:特征值为复数
<0.1,实特征值 >0.1,复特征值
收敛准则与迭代误差
收敛准则二:残差的下降程度
基于非线性方程解法
类牛顿法;收敛快,但需合适的迭代初值 全局方法:保证收敛,但速度慢
求极小值:
Fluent中的线性代数方程组求解
有限体积离散 求解 Gauss-Seidel迭代 多重网格法
多重网格法
出发点:
粗网格上的计算量大大减少 几次迭代后,某些迭代算法的迭
代误差在网格上平滑分布(G-S 、ILU)
非迭代时间 推进算法(NITA)
不适用于高 粘性流动
非迭代时间推进算法(NITA)
Fluent非稳态求解:Density-based solver
稳态流动
显式求解:三阶龙格-库塔 隐式求解:隐式Euler
非稳态流动
显式求解:三阶龙格-库塔 隐式求解:dual-time formulation
不适于病态矩阵 残差是求解的一部分,不增加计算量 内循环残差只需下降1到2个量级 外循环残差只需下降3到6个量级
Fluent:至少下降3个量级 能量方程残差下降6个量级 (基于压力的算法) 组分方程残差下降5个量级
细网格(离散误差小)的迭代收敛标准 要更严格
收敛准则与迭代误差
Laplace problem with SOR solver Relaxation parameter smaller (left) and larger (right) than the optimum
内循环求解
Fluent亚松弛
FLUENT 的计算方式
基于压力的解算器(Pressure-based Solver)
(传统上)低速不可压流动 压力由连续方程和动量方程算出 分离方式(Segregated):内存耗用少 耦合方式(Coupled):收敛快
基于密度的解算器(Density-based Solver)
计算流体力学
抖r 抖t
+
(ru ) = S
xi
i
m
抖
抖t
(
r
u i
)
+
(ru u ) =
xj
ij
-
?p 抖x i
+
¶ t ij cj
+
rg + i
F i
代数方程求解
线性方程组求解
结构网格:
线性方程组求解
直接方法
Gaussian消元 (O n 3 3)
LU分解 特殊系统
三对角阵TDMA Cyclic reduction
Bounded second-order scheme
二阶隐式时间离散:
Oscillating solutions in compressible liquid flows
Fluent时间推进算法参数设置
Time step size:
Fluent根据用户输入的这个参数对时间进行离 散。对于隐式算法( 如Pressure-based solver ),步长大小不会wk.baidu.com稳定性构成问题。但会影 响精度,步长越小精度越高。步长的设置应使 每个时间步内的迭代次数为5-10次即可收敛。
细网格上的残差外插到粗网格, 迭代误差在较粗网格上计算, 回插到较细网格上
多重网格法一维举例
CDS N次迭代
Fluent中的多重网格法
Solve -> Controls -> Multigrid...
algebraic (AMG) full-approximation storage (FAS)
Fluent迭代收敛准则
压力解算器
外循环残差:
连续方程:
密度解算器
至少下降3个量级 能量方程残差下降6个量级(基于压力的算法) 组分方程残差下降5个量级
Fluent迭代收敛准则
非稳态问题求解
ODE初值问题回顾
离散格式
Euler显式 Euler隐式 梯形公式
格式精度:
(传统上)高速可压流动 压力由状态方程算出,连续方程给出密度 显式耦合:占内存小 隐式耦合:稳定,收敛快
基基于于压压力力的的分分离离方方式式算算法法
基于压力的耦合方式算法
基于压力的耦合计算
Solve->Controls->Solution
基于密度的耦合方式算法
非线性方程线求解
迭代方法
Gaussian消元
稀疏线性方程组求解:迭代方法
迭代误差
迭代n次
残差
迭代算法:
收敛问题
迭代误差方程: 收敛条件: <1
特征方程
构成完备空间
谱半径,越 小收敛越快,
要求M ~A
基本迭代算法
Jacobi方法
Gauss-Seidel 逐次超松弛
Gauss-Seidel
不完全LU分解(ILU)
Simpson公式校正
CFD非稳态求解
显式方法
显式欧拉 Leapfrog
隐式方法
隐式欧拉 Crank-Nicolson 二阶三层格式
高阶龙格-库塔,多步法等:DNS、LES
显式欧拉
CDS
库朗数
显式欧拉:稳定性分析
稳定条件: ≤1
隐式欧拉
无条件稳定 可用于求解稳态问题 算法上与稳态的亚松弛迭代等价
Crank-Nicolson格式
隐式欧拉与显式欧拉等量混合 无条件稳定
时间三层格式
Fluent非稳态求解:Pressure-based solver
时间隐式离散
一阶隐式时间离散: 二阶隐式时间离散:
空间离散格式
Fluent非稳态求解:
Pressure-based solver
迭代时间推进算法
类牛顿法 全局方法
非线性方程线求解:牛顿迭代
=0 =0
非线性方程线求解:分离求解
Picard迭代
收敛较牛顿迭代慢 和多重网格法结合
非线性方程线求解:分离求解
非线性源项处理
常数,显式处理 局部线化
比常数更合理 隐式处理,收敛快
Fluent中的源项处理
推迟-校正(Deferred-Correction)方法
Adaptive Time Stepping
估算误差,来决定步长大小。 注意FFT要求等间隔步长
Stiff Chemistry solver
步长由程序自己决定。
Fluent中的亚松弛方程
Solve->Controls->Solution
V-Cycle
W-Cycle
方程之间的耦合及求解
方程之间的耦合及求解
耦合解法
代数方程组:分块带矩阵 迭代求解
分离解法
应用:非线性,耦合不强 逐个方程求解:外循环迭代
亚松弛:逐渐加大松弛因子
内循环迭代:
不必精确求解 最佳迭代次数
外循环的亚松弛迭代
第n步外循环:
步长足够小才有意义
算法稳定性:CFL条件 刚性
预估-校正法
结合显式法和隐式法优点,二阶精度
显式欧拉,预估: 梯形公式,校正:
多步法
多项式多点插值
显式, Adams-Bashforth,三阶精度:
隐式, Adams-Moulton,三阶精度:
Runge-Kutta法
显式欧拉预估 隐式欧拉校正 梯形公式预估
稀疏矩阵 小矩阵
Stone方法
利用椭圆PDE解的平滑性 L和U只计算一次 收敛很快 其它迭代方法的基础
交替方向隐式(ADI)迭代
Crank-Nicolson
共轭梯度(CG,Conjugate Gradient)法
Fluent中的Deferred-Correction
CDS离散格式
Deferred-Correction
收敛准则与迭代误差
收敛准则一:解在相邻迭代步之间的差值
迭代误差估计:
收敛准则与迭代误差
收敛准则一:特征值为复数
<0.1,实特征值 >0.1,复特征值
收敛准则与迭代误差
收敛准则二:残差的下降程度
基于非线性方程解法
类牛顿法;收敛快,但需合适的迭代初值 全局方法:保证收敛,但速度慢
求极小值:
Fluent中的线性代数方程组求解
有限体积离散 求解 Gauss-Seidel迭代 多重网格法
多重网格法
出发点:
粗网格上的计算量大大减少 几次迭代后,某些迭代算法的迭
代误差在网格上平滑分布(G-S 、ILU)
非迭代时间 推进算法(NITA)
不适用于高 粘性流动
非迭代时间推进算法(NITA)
Fluent非稳态求解:Density-based solver
稳态流动
显式求解:三阶龙格-库塔 隐式求解:隐式Euler
非稳态流动
显式求解:三阶龙格-库塔 隐式求解:dual-time formulation
不适于病态矩阵 残差是求解的一部分,不增加计算量 内循环残差只需下降1到2个量级 外循环残差只需下降3到6个量级
Fluent:至少下降3个量级 能量方程残差下降6个量级 (基于压力的算法) 组分方程残差下降5个量级
细网格(离散误差小)的迭代收敛标准 要更严格
收敛准则与迭代误差
Laplace problem with SOR solver Relaxation parameter smaller (left) and larger (right) than the optimum
内循环求解
Fluent亚松弛
FLUENT 的计算方式
基于压力的解算器(Pressure-based Solver)
(传统上)低速不可压流动 压力由连续方程和动量方程算出 分离方式(Segregated):内存耗用少 耦合方式(Coupled):收敛快
基于密度的解算器(Density-based Solver)
计算流体力学
抖r 抖t
+
(ru ) = S
xi
i
m
抖
抖t
(
r
u i
)
+
(ru u ) =
xj
ij
-
?p 抖x i
+
¶ t ij cj
+
rg + i
F i
代数方程求解
线性方程组求解
结构网格:
线性方程组求解
直接方法
Gaussian消元 (O n 3 3)
LU分解 特殊系统
三对角阵TDMA Cyclic reduction
Bounded second-order scheme
二阶隐式时间离散:
Oscillating solutions in compressible liquid flows
Fluent时间推进算法参数设置
Time step size:
Fluent根据用户输入的这个参数对时间进行离 散。对于隐式算法( 如Pressure-based solver ),步长大小不会wk.baidu.com稳定性构成问题。但会影 响精度,步长越小精度越高。步长的设置应使 每个时间步内的迭代次数为5-10次即可收敛。
细网格上的残差外插到粗网格, 迭代误差在较粗网格上计算, 回插到较细网格上
多重网格法一维举例
CDS N次迭代
Fluent中的多重网格法
Solve -> Controls -> Multigrid...
algebraic (AMG) full-approximation storage (FAS)
Fluent迭代收敛准则
压力解算器
外循环残差:
连续方程:
密度解算器
至少下降3个量级 能量方程残差下降6个量级(基于压力的算法) 组分方程残差下降5个量级
Fluent迭代收敛准则
非稳态问题求解
ODE初值问题回顾
离散格式
Euler显式 Euler隐式 梯形公式
格式精度:
(传统上)高速可压流动 压力由状态方程算出,连续方程给出密度 显式耦合:占内存小 隐式耦合:稳定,收敛快
基基于于压压力力的的分分离离方方式式算算法法
基于压力的耦合方式算法
基于压力的耦合计算
Solve->Controls->Solution
基于密度的耦合方式算法
非线性方程线求解
迭代方法
Gaussian消元
稀疏线性方程组求解:迭代方法
迭代误差
迭代n次
残差
迭代算法:
收敛问题
迭代误差方程: 收敛条件: <1
特征方程
构成完备空间
谱半径,越 小收敛越快,
要求M ~A
基本迭代算法
Jacobi方法
Gauss-Seidel 逐次超松弛
Gauss-Seidel
不完全LU分解(ILU)
Simpson公式校正
CFD非稳态求解
显式方法
显式欧拉 Leapfrog
隐式方法
隐式欧拉 Crank-Nicolson 二阶三层格式
高阶龙格-库塔,多步法等:DNS、LES
显式欧拉
CDS
库朗数
显式欧拉:稳定性分析
稳定条件: ≤1
隐式欧拉
无条件稳定 可用于求解稳态问题 算法上与稳态的亚松弛迭代等价
Crank-Nicolson格式
隐式欧拉与显式欧拉等量混合 无条件稳定
时间三层格式
Fluent非稳态求解:Pressure-based solver
时间隐式离散
一阶隐式时间离散: 二阶隐式时间离散:
空间离散格式
Fluent非稳态求解:
Pressure-based solver
迭代时间推进算法
类牛顿法 全局方法
非线性方程线求解:牛顿迭代
=0 =0
非线性方程线求解:分离求解
Picard迭代
收敛较牛顿迭代慢 和多重网格法结合
非线性方程线求解:分离求解
非线性源项处理
常数,显式处理 局部线化
比常数更合理 隐式处理,收敛快
Fluent中的源项处理
推迟-校正(Deferred-Correction)方法
Adaptive Time Stepping
估算误差,来决定步长大小。 注意FFT要求等间隔步长
Stiff Chemistry solver
步长由程序自己决定。
Fluent中的亚松弛方程
Solve->Controls->Solution
V-Cycle
W-Cycle
方程之间的耦合及求解
方程之间的耦合及求解
耦合解法
代数方程组:分块带矩阵 迭代求解
分离解法
应用:非线性,耦合不强 逐个方程求解:外循环迭代
亚松弛:逐渐加大松弛因子
内循环迭代:
不必精确求解 最佳迭代次数
外循环的亚松弛迭代
第n步外循环:
步长足够小才有意义
算法稳定性:CFL条件 刚性
预估-校正法
结合显式法和隐式法优点,二阶精度
显式欧拉,预估: 梯形公式,校正:
多步法
多项式多点插值
显式, Adams-Bashforth,三阶精度:
隐式, Adams-Moulton,三阶精度:
Runge-Kutta法
显式欧拉预估 隐式欧拉校正 梯形公式预估