热管理仿真误差来源

文摘   2024-11-20 18:22   江苏  
点击蓝字 | 关注我们
level水平线仿真

1、先关注公众号,加入热管理交流群(购课人员),有需要进群的童鞋,加小编微信:level-cfder,备注公司+名字哟,方便邀请进群

2、扫码购课:购课前记得联系课程老师领取公众号粉丝优惠

3转发朋友圈领取100元优惠券+领取免费热管理基础课程




引子

在流体的江湖里有这样一个传说:做仿真的除了自己信,谁都不信。很多粉丝朋友也很苦恼,吭哧吭哧仿真了半天,结果摸着自己的头,却陷入了茫然,这结果准吗?于是怀着忐忑的心情去与实验结果进行对比,结果自然是几家欢喜几家愁,相信很多粉丝是愁云满面的。那么我们今天就来扒一扒仿真误差到底有哪些来源,以及如何制定最小化误差的策略。

CFD计算结果的精度受不同误差类型的影响。通过了解每种错误类型的原因,可以开发最佳实践来最小化误差。网格在最小化误差方面起着重要的作用.在上一篇“怎样才算是好网格”中已经做了详细介绍,可参看上篇文作系统了解。

主要内容

五种不同类型误差

最小化误差的策略

另外:在进行CFD模型时,应考虑工作的目的:

结果将用于什么?

需要多高的精确度?

五种误差类型

有几个不同的因素共同影响整体仿真的精度。

按数量级从高到低如下:

• Round-off errors(舍入误差)– 与计算机运算精度相关的舍入误差

• Iteration errors(迭代误差)– 迭代“n”次的解与最终收敛解之间的误差

• Discretization Error errors(离散误差)当前使用网格的收敛解与模型方程精确解的误差

            –l‘Exact’ solution:精确解 à无限密网格的解

• Model errors(模型误差)– 模型方程的“精确”解(‘Exact’ solution与真实解的误差(实验数据或解析解)

Systematic Errors(系统误差)- 即使模型误差和数值误差都降低到一定水平,系统误差也会导致解的精度降低。

1.Round-Off Error(舍入误差)

由机器舍入而引起的解的不准确性


引起误差的原因包括:
高纵横比
长度尺度上存在较大差异
变量值存在较大变化范围


如何确定舍入错误是一个问题:


如果 case 遇到上述三点原因(标准),以 double precision 进行计算



将计算结果与单精度计算结果进行比较
如果重要变量(目标变量)单/双精度模拟结果不同,则后续计算应使用双精度


2.迭代误差:Iteration Error - Best Practice

要检查迭代误差,首先要定义您的目标变量(targetvariables)


例如:
Head rise(扬程)
Efficiency(效率)
Mass flow rate(质量流率)


选择残差的收敛标准

求解迭代时监测并绘制目标变量的变化曲线

选择另一个更严格的残差收敛标准并继续迭代

不断重复,直到目标变量曲线显示其不再变化为止


这样我们就可以知道残差设定为多少,才能确保不会遇到迭代误差


这样操作时,残差最好是单调递减的,虽然不可能始终如此(因此残差不是判断收敛的唯一标准)

最后,在每个收敛水平上,都务必检查质量和能量平衡的通量报告


最佳实践:Iteration Error Example: 2D 压缩机叶栅


3. Discretization Error(离散误差)


无论下列哪种离散方法都不可避免存在一定误差
Finitevolume methods(有限体积法)
Finiteelement methods(有限元法)
Finitedifference methods(有限差分法)


给定网格上的解与无限精细网格上的“精确”解之间的差异称为“离散误差”


无限网格不可实现 à离散误差估计(网格无关性检查的必要性,高阶精度的选择等)


离散误差估计


由此最佳实践可以得出在网格无限密不可实现的前提下,避免离散误差的方法主要为细化网格(做网格无关性研究),以及采用更高阶的离散格式。

4. Model Errors(模型误差)


(经验)数学模型的不足:
基本方程(Euler vs. RANS, steady-state vs. unsteady-state, …)
Turbulencemodels(湍流模型)
Combustionmodels(燃烧模型)
Multiphaseflow models(多相流模型)
我们计算所用的模型无论是理论模型,还是半理论半经验模型,都是做了一定假设或者基于经验的,本身就存在一定的误差。
由于模型误差,即使在所有数值误差都变得无关紧要之后,实验数据和计算之间仍然可能存在差异!
因此合适的物理模型选择非常重要


模型误差:冲击射流

5.Systematic Errors(系统误差)


即使模型误差和数值误差都降低到一定水平,系统误差也会导致解的精度降低。系统误差仍然可能导致结果差异。


系统误差的可能原因:


(1)系统误差可能由几何模型的近似值所导致,就像我们在下图中看到的那样,其中几何表面的一些细节被网格忽略掉了,
(2)也可能是由于只对某个组件进行建模,而没有对更大范围的组件(系统)进行建模所导致,
(3)也可能是由于边界条件或流体及材料属性的不确定性所导致的。


注:最大限度减少系统误差的最有效方法是真正了解应用和物理性质。


看右边的图片,我们可能会认为网格肯定有问题,因为部分细节丢失了,但这取决于应用,这可能对结果有一些影响。如果了解了工程应用及物理性质,那我们就会知道需要什么程度的几何细节。



就系统误差而言,最好是记录和证明所做出的任何假设,如果有不确定的内容,则需要执行不确定性分析,才能判断假设的正确与否。
减少仿真误差

误差虽然无法完全消除,但可以尽可能减少。实际工作中,提升仿真的精度不可能一蹴而就,需要一定时间的经验积累。

如果从零开始做仿真,提高仿真精度会经历以下阶段:

(1)能够得到结果,速度、压力、温度等物理量大趋势正确
(2)根据实验数据和相关科学理论总结出较合适的仿真方法,并固化成标准化文档
(3)考虑更多影响因素,减少简化假设,进一步提升仿真精度

我推荐你用一些简单方法估计误差范围,在仿真的过程中“顺手”找误差范围。你没有必要为了找误差范围,专门算很多仿真算例,你只需要做个有心人,把你的仿真过程认真看一看。

一、零点偏差 — 基本误差

很多算例会有零点,理论上应该是0,但是仿真会算出个小小的数值,这个数值就体现了你的仿真误差大小。

例如:一个水平的流动,理论上垂直方向的作用力应该是0,但是你的计算结果,在垂直方向有1牛顿的作用力,1牛顿是力的基本误差。代表着这个仿真的误差很难小于1牛顿。这个软件和这套算法和这套网格的最小误差大约是1牛顿的量级。

知道基本误差,你就知道了这套仿真的局限性。如果你用这套仿真做优化设计,减小了1牛顿的力,这个优化结果很可能只是个误差,不值一提。
 

二、标准点偏差 — 系统误差

算例中除了零点还有标准点,标准点上的值与理论值的偏差,就是仿真的系统误差。

例如:物体正对来流的点,这个点的压力的理论值,就是来流的滞止压力。你把这个点的压力写出来,发现比滞止压力小了5%。可以猜出来这套仿真的受力偏小5%。

例如:物体做自由落体运动的时刻,加速度应该是重力加速度。你把计算结果写出来,发现加速度比重力加速度大了10%。可以猜测其他时刻的加速度也偏大10%。

这种差别往往不是随机变化,总是偏小或者偏大,代表了这套仿真的系统误差的范围。
记住这个误差的范围,你就知道了你的仿真结果大概率地是偏小或者偏大了多少。
 

三、收敛过程偏差 — 波动误差

仿真有个漫长的计算过程,在这个过程中,数据如同股市的曲线,混乱地上上下下波动。看到这些波动范围越来越小,我们说,仿真收敛了,这个时候的波动范围就是仿真的波动误差。
例如:仿真收敛前100步,速度在99~101的范围波动,速度的波动误差范围就是2%。
记住这个波动误差范围,你写报告的时候,可以明确地说,由于时间有限,仿真的计算收敛不够充分,可能带来的误差不超过2%。
 

四、模型差异 — 模型误差

常用的方法是对比不同模型的计算结果,相差多少就是误差范围。
这个方法不靠谱,即使你保持网格不变、边界不变,只换个模型,带来的变化也不一定是模型误差。也许模型的差异被网格磨灭了,或者模型放大了边界的影响而产生差异。这个方法看起来很合理,往往获得很不合理的误差范围。
有一个简单办法,查找文献。你不可能从文献中找到一个准确的模型,但是你可以对比这些“不太准确”的模型。
这些“不太准确”之间的差异,就是模型误差的范围。 


五、网格形式差异 — 网格误差

没有必要把网格加密后看结果有没有变化,这种网格无关性分析方法很可能没有抓住网格的相关性。
你在做仿真过程中会做不同形式的网格,即使网格总数没有变化,网格形式变化带来的误差更真实。
例如:一百万的非结构网格对比一百万的结构化网格,一百万头部密集网格对比一百万尾部密集网格,们之间的差异就是网格误差范围。


六、有无之间的差异 — 最大误差

以上这些方法可能只发现了比较小的误差范围,万一出现特别大的误差怎么办?如何快速找到最大误差范围?
用有、无之间的差异找到最大误差:
湍流模型的最大误差 < 湍流与层流之间的差异
壁面网格的最大误差 < 壁面无粘与有粘之间的差异

边界的最大误差 < 无穷远与附近边界之间的差异

知道最大的误差能大到什么程度,你就可以对仿真结果放心了。 
七、随机对比 — 正常误差
其实,估计误差范围很简单。同一个仿真,你在调试计算过程中,改来改去,发现某些数总在一个范围变化,这个变化范围差不多就是误差范围。
但是,很多初入行的人在这个过程中被吓死了。在调试仿真的过程中发现,改一个设置、改一点网格,结果数据就会成倍地增加、成倍地减小。仿真结果和试验不一致,和别人的仿真也不一致,误差大得不可思议。
出现这种情况和基本误差、系统误差、波动误差、模型误差、网格误差,和所有的误差都没有关系,就是出错了,而且是出了很低级的错误。
只有当你的计算结果比较固定,而且与试验、与别人的结果大致一样,你才有资格讨论误差,否则你只能讨论错误。
误差:当你消除了低级错误,与各种来源的数据都接近,这点似是而非的差异,就是误差范围。 

防止出现低级错误,就可以保证你的仿真结果基本可用。

没有必要专门分析仿真误差,留意仿真过程中随机产生的各种差异,就是真实的误差范围。
误差不会破坏你的设计,错误才会。
好文推荐阅读
培训案例:
好文阅读
干货推荐

其他资源请关注公众号,查看历史推文;


LEVEL电池热管理技术
专注新能源动力/储能电池包热管理仿真技术、热管理系统设计开发、热管理相关零部件的知识交流,Starccm+和Ansys fluent等仿真软件的应用
 最新文章