首页/文章/ 详情

21世纪了,CFD不是计算器!

19天前浏览627

关于工程模拟中不确定性来源的思考。

这只是一个关于计算流体动力学(CFD)领域的小思考。具体来说,我想思考工程模拟可能的不确定性来源以及哪些方面对于成功交付项目至关重要。

我将主要讨论CFD,但类似的原则也适用于其他虚拟原型学科,如有限元分析(FEA)、优化和整个计算机辅助工程(CAE)。

无可避免的问题是CFD更像是一门科学而不是计算器。更像是一种手艺而不是工具。这是一个常见的误解。这就是为什么CFD常常与失望联系在一起。

以一个典型的科学工具——计算器为例。计算器直接执行算术运算,并在精确的输入上给出确切的答案,其结果不会引发关于正确性的讨论,而工程模拟则不同

在CFD中,总是涉及一定程度的不确定性。原因是求解的方法。所求解的是Navier-Stokes方程,这些方程从技术上讲是非抛物线非线性非均质偏微分方程。在这样一个高度动态的系统上,首先应用一组物理模型,然后必须使用各种方案在时间和空间上进行离散化,然后将其转换为线性代数问题并求解。最终结果总是一个近似值。即使一切都做得完美,也总是涉及一定程度的错误,这是几乎不可能量化的。    

          

 
 

   

   

误差是什么?


   

我们将结果的误差理解为它们与完美结果的差异。在流体动力学领域,参考结果总是与物理测量(实验)相关联。也许你知道这个古老的工程笑话:

“没有人相信CFD模拟,除了制作它的人。每个人都相信测量结果,除了制作它的人。”

CFD并不完美,测量结果也不完美。但在流体动力学世界里,CFD必须追逐测量结果,而不是反过来。这是我们玩的游戏,这是规则,不管我们喜不喜欢。

          

 
 

   

   

总误差


   

首先,任何CFD工作流程都是各种技术(方法)的集 合。总误差由那些应用技术中产生的几种误差组成。让我们看看对CFD结果总误差贡献最大的几个因素。              

A.CAD模型误差

让我们从最基本和最明显的误差源开始。这是模拟的非现实CAD模型。CAD模型是待模拟的实际对象的虚拟表示。问题是,模拟就绪的CAD模型总是实际对象的某种简化。它总是被模拟的模型。不是实际对象。模型必须是干净的、无漏洞的,所有微小的、不相关的和有问题的模型部分必须被移除,所有的孔都必须被封闭。CAD建模阶段是每个模拟工作流程中极其重要的部分。它设定了所有模拟的潜力和限制。它永远不应该被低估。CAD建模阶段的错误或工程质量差很难在模拟阶段和后处理阶段得到补偿。

          

B.数学模型误差

每个模拟项目都需要在物理和数学之间建立联系。我们称之为数学模型——它将物理理论转化为数学公式。让我们考虑以下项目示例:我们有一个医疗设备——血液泵。我们的目标是模拟泵在特定流量和转速下产生的总压力。我们必须建立我们的数学模型。必须做出一些决定。简单来说,我们可以选择1. 稳态流动 2. 不可压缩流动 3. 牛顿粘度模型 4. 非弹性流体 5. 无化学反应流 6. 标准RANS湍流 7. 光滑壁面。这意味着我们有意识地把瞬态行为、可压缩性、剪切变稀效应、血液弹性、化学反应、解析湍流、壁面粗糙度、弹性壁面等效应放在一边。所有这些决定都与得到的数学模型——特定要求解的方程有关。这个数学模型带有特定的简化,但它足够好,可以给出满足我们目标的结果。尽管血液流动要复杂得多,我们的模型仍然可以非常准确——就满足我们的目标而言——泵的总压力。在那里我们知道物理误差相对较低。另一方面,如果我们的目标是血液化学,其中反应瞬态效应至关重要,上述模型将完全不适用。数学模型极其重要,必须根据模拟的目标来创建。    

          

C.边界条件误差

在模拟域内部,在体积中,有要求解的方程(数学模型)。在域边界上,应用边界条件。边界条件有两个主要问题。1. 边界方程的第一个问题是数量的大小(通常适用于固定、狄利克雷边界条件)和分布。2. 第二个问题(通常适用于外推(诺伊曼边界条件)和模拟数量)是它们的应用方式。在现实世界中,没有什么是完全封闭的域,边界条件只是一种简化,使得能够创建有限的欧拉区域。边界条件是每次模拟极其重要的部分。我们建议对它们给予最好的关注。我们从技术支持中知道,边界条件是CFD中大多数错误的来源。    

          

D.离散化误差

为了使这篇文章足够简单,我允许自己将网格误差和数值方案误差放在一个称为离散化误差的部分。模拟域需要在时间和空间上进行离散化。这意味着连续函数实际上是在离散点上被虚拟地切割,因为那时可以应用数值数学。在CFD中,大多数情况下欧拉域被网格覆盖——域被分割成许多小体积。在每个单独的离散体积(单元)和每个数量(或项)上,应用数值方案,并总结在结果的标准线性方程组Ax=b中。然后可以使用精确的代数方法相对容易地求解线性系统。

再次,这里需要做出许多关键决定。1. 要制作多细的网格?2. 网格拓扑?3. 网格质量?4. 边界层?5. 数值方案?更细的网格通常(并非总是)给出更低的误差。但你为细网格付出的代价是巨大的,CPU时间随着单元格数量的增加而迅速增长。网格设置通常以足够细的网格和CPU时间之间的痛苦妥协结束。数值方案的选择也非常关键。虽然一阶方案相当稳定且不太准确,但二阶方案(和更高)更准确但稳定性差得多。此外,还有许多混合阶方案,它们在准确性和鲁棒性方面都处于中间位置。最重要的是,数学模型和网格的每种组合可能导致一组不同的合适数值方案。    

          

E.数值误差

特别是在大型模拟(大网格导致大型线性系统)中,数值误差起作用。数值数学的问题是它进行了大量的简单操作,但即使是很小的数值误差,如果重复多次,也会传播和增长。最终,它可能会破坏你的结果。关键是实数精度(你的代码编译的方式)。我记得几年前,我们对OpenFOAM的各种精度进行了一些基准测试。单精度(32位,8位数字)非常快,但对于从几百万个单元格开始的网格,数值误差完全破坏了结果。对于生产性CFD模拟,推荐使用双精度(64位,16位数字)。大型、多百万网格用于例如适当解析的LES或DNS模拟,产生的线性系统必须使用四倍精度(128位,34位数字)。几乎不可能预先列举每个特定案例的数值误差,一个人必须依赖特殊测试和经验。总之,你可以肯定每次模拟都会涉及一些数值误差。唯一的问题是它有多大。

          

F.人为误差    

尽管我们使用的工具不完美,但我们使用它们的方式更糟。我们是人。大自然使我们聪明,但一点也不完美。事实上,人为误差可能是CFD中最常见的痛苦来源。原因很明显。每次工程模拟都有许多参数。即使是非常简单的模拟也迫使我们做出许多决定。无论是有意识的还是无意识的。不幸的是,我们不断犯错误。出于许多原因,粗心、知识缺乏、知识过多(笑)、经验不足等。我的技术支持同事可以告诉你许多故事。其中一些很有趣,其中一些不那么有趣。是的,问题大部分时间就在屏幕前。人为误差当然是成功的真正杀手。

          

G.后处理误差

我个人最讨厌这个。你会惊讶地发现,原始模拟结果正确,但它们的评估或解释是错误的情况有多频繁。有时后处理包括许多复杂的数学运算,在那里很容易犯错误。听起来很疯狂,但许多时候,特别是在新的工程项目中,后处理是最具挑战性的学科。再次,后处理阶段的错误或工程质量差可能会破坏本应正确的结果。我们在过去看到过无数案例,比如:物理单位混淆、总量与静量、通量加权与面积加权平均等。

          

H.X因素误差

在每个新项目中,总有我们不知道的东西。你必须对新项目非常小心,因为即使你之前做过许多类似的项目,实践一次又一次地向我们展示,即使是小小的不同情况也会导致结果的巨大差异。在CFD中,比任何其他地方都多:魔鬼在细节中。每个项目都有它的X因素,必须以最大的关注来对待。    

         

 
 

   

   

减少误差


   

上述所有误差都可以通过工程技能来减少。经验至关重要。没有人第一次就能获得出色的CFD结果,就像没有人第一次就能骑自行车一样。是知识、专注、训练有素的判断、耐心、奉献、开放的心态、大量的咖啡和学习新事物的意愿帮助你获得出色的结果。顺便说一下,你知道培养一位资深CFD工程师需要五年时间吗?

   

   

需要博士学位吗?


   

不一定。有时我在网上讨论中看到人们争论是否需要博士学位才能产生出色的结果。我是那些认为这不是条件的人之一。在我的职业生涯中,我见过没有博士学位的优秀工程师,也见过拥有博士学位的糟糕工程师。当然,我承认我见过的最好的工程师确实拥有博士学位。在我看来,博士学位更像是一种症状而不是要求。它讲述了个性和一个人处理特定问题的能力,而不是一些额外的理论知识。而这在CFD中确实很重要。    

          

 
 

   

   

保持简单


   

有助于减少误差的是保持简单。为了最小化来自复杂性的各种误差,聪明的做法是不要太复杂化。阿尔伯特·爱因斯坦曾经说过:“一切都应该尽可能简单,但不要过于简单”,这完全适用于工程模拟。一条黄金法则是:所有的动作都必须是合理的,否则就放弃

          


   

   

技能和经验可以内置到模拟软件中吗?


   

这个问题经常出现。是否有可能让一些经验丰富的工程师将他的经验以一种易于使用、健壮且足够准确的方式实现到CFD代码中,即使是对没有经验的使用者也是如此?我认为答案是肯定的,但有很多但是。但只适用于单一应用。但只适用于简单应用。但只适用于一些基本的准确性水平。但只适用于非常有限的用户选项范围。    

         

 

   

   

CFD代码可以同时快速、健壮和准确吗?


   

总的来说,物理模型的选择加上离散化方法是关键,总是会导致某种妥协。模拟方法可以是准确或健壮的,但不能同时都是。同样,一种方法可以是快速或准确。我喜欢Tabor教授的一句话,我在互联网讨论中看到了,他曾经评论说:“模拟可以快速、健壮和准确。你可以选择其中的两个。    

CFD是一个非常复杂的领域,包括数学、物理和软件工程。这三者都不能落后。

以过来人看,基于上述所有这些,我必须以以下结论结束:CFD(CAE)更像是一门科学而不是计算器,更像是一种手艺而不是工具。

          


来源:CFD饭圈
FluentCFXOpenFOAM非线性燃烧化学湍流Polyflow理论科普游戏ParaView
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-10-14
最近编辑:19天前
CFD饭圈
硕士 分享CFD文章,感谢关注
获赞 22粉丝 22文章 377课程 0
点赞
收藏
作者推荐

8种对N-S方程进行离散的方法

所选离散化的稳定性通常通过数值方法而非解析方法来确立,这与简单的线性问题不同。还必须特别小心,确保离散化能够优雅地处理不连续的解。欧拉方程和纳维-斯托克斯方程都允许出现冲击波和接触面。一些正在使用的离散化方法包括: 1. 有限体积法 有限体积法(FVM)是CFD代码中常用的方法,因为它在内存使用和解决速度方面具有优势,特别是对于大型问题、高雷诺数湍流流动和源项主导流动(如燃烧)。在有限体积法中,控制方程(通常是纳维-斯托克斯方程、质量和能量守恒方程以及湍流方程)被重新构成为一个守恒形式,然后在离散控制体积上求解。这种离散化保证了通过特定控制体积的通量的守恒。有限体积方程以以下形式产生控制方程,其中𝑄是守恒变量的向量,𝐹是通量向量(见欧拉方程或纳维-斯托克斯方程),𝑉是控制体积元素的体积,𝐴是控制体积元素的表面积。 2. 有限元方法 有限元方法(FEM)用于固体的结构分析,但也适用于流体。然而,FEM公式需要特别注意以确保保守解。FEM公式已经适应了流体动力学控制方程的使用。尽管FEM必须仔细制定以保守,但它比有限体积方法更稳定。然而,FEM可能需要更多的内存,并且比FVM有更慢的解决时间。在这种方法中,形成了一个加权残差方程:其中𝑅𝑖是元素顶点𝑖处的方程残差,𝑄是在元素基础上表达的守恒方程,𝑊𝑖是权重因子,𝑉𝑒是元素的体积。 3. 有限差分法 有限差分法(FDM)具有历史重要性,并且编程简单。目前,它只用于少数专业代码中,这些代码通过使用嵌入边界或重叠网格(在每个网格上跨网格插值求解)来处理复杂几何形状,具有高精度和高效率。其中𝑄是守保变量的向量,𝐹、𝐺和𝐻分别是𝑥、𝑦和𝑧方向上的通量。 4. 谱元素法 谱元素法是一种有限元类型的方法。它要求数学问题(偏微分方程)以弱形式出现。这通常是通过将微分方程乘以任意的测试函数并在整个域上积分来完成的。纯粹从数学上讲,测试函数是完全任意的——它们属于无限维函数空间。显然,无限维函数空间不能在离散谱元素网格上表示;这就是谱元素离散化开始的地方。最关键的是插值和测试函数的选择。在2D的标准低阶FEM中,对于四边形元素,最典型的选择是二次测试或插值函数,形式为v(x,y) = ax + by + cxy + d。然而,在谱元素法中,插值和测试函数被选择为非常高阶的多项式(通常是CFD应用中的10阶)。这保证了方法的快速收敛。此外,必须使用非常有效的积分程序,因为在数值代码中要执行的积分数量很大。因此,采用高阶高斯积分,因为它们以最少的计算次数实现最高精度。目前,有一些基于谱元素法的学术CFD代码,还有一些正在开发中,因为新的时步方案在科学界出现。 5. 格子玻尔兹曼方法 格子玻尔兹曼方法(LBM)在格子上的简化动力学图像提供了流体动力学的高效计算描述。与传统的CFD方法不同,后者通过数值求解宏观属性(即质量、动量和能量)的守恒方程,LBM模拟由虚构粒子组成的流体,这些粒子在离散格子网格上执行连续的传播和碰撞过程。在这种方法中,人们使用Boltzmann Bhatnagar-Gross-Krook (BGK)形式的动力学演化方程的离散空间和时间版本。 6. 涡旋方法 涡旋方法,也称为拉格朗日涡旋粒子方法,是一种用于模拟不可压缩湍流的无网格技术。在该方法中,涡度被离散到拉格朗日粒子上,这些计算元素被称为涡旋、vorton或涡旋粒子。涡旋方法作为一种无网格方法发展起来,不会受到基于网格方法的基本平滑效应的限制。然而,为了实用,涡旋方法需要快速从涡旋元素计算速度的手段——换句话说,它们需要解决特定形式的N体问题(其中N个物体的运动与它们的相互影响相关)。这一突破发生在20世纪80年代,随着Barnes-Hut和快速多极子方法(FMM)算法的发展。这些为从涡旋元素实际计算速度铺平了道路。基于涡旋方法的软件为解决棘手的流体动力学问题提供了一种新的途径,最小化了用户干预。所需要做的就是指定问题几何形状和设置边界和初始条件。这种现代技术的重要优势包括:它实际上是无网格的,从而消除了与RANS和LES相关的众多迭代。所有问题都以相同的方式处理。不需要建模或校准输入。可以进行时间序列模拟,这对于正确分析声学至关重要。小尺度和大尺度同时被准确模拟。 7. 边界元方法 在边界元方法中,被流体占据的边界被划分为表面网格。边界元方法(Boundary Element Method, BEM)是一种基于积分方程的数值技术,用于求解流体动力学和其他物理领域的边界值问题。与传统的基于微分方程的方法不同,BEM直接在边界上离散并求解问题,将连续域的复杂性转化为边界上的积分表达式。这种方法通过将控制方程转化为边界积分和体积积分,然后在边界上划分元素并应用适当的数值积分技术来近似这些积分,从而实现对问题的求解。BEM特别适用于具有复杂几何形状的问题,因为它允许在边界上使用较简单的网格,同时保持较高的精度和效率。此外,BEM在处理无限域问题或具有奇异性的问题时也显示出其独特的优势。 8. 粒子方法 粒子法是一种基于粒子的计算方法,用于模拟流体动力学和其他物理现象。与传统的基于网格的方法不同,粒子法不依赖于固定的空间网格,而是通过一组离散的粒子来表示和追踪流体的行为。这些粒子携带流体的物理属性,如质量、动量和能量,并根据物理定律在空间中移动和相互作用。粒子法的核心思想是将连续介质离散化,每个粒子代表流体的一小部分。这种方法特别适用于处理复杂的几何形状、自由表面流动、多相流动和大变形问题,因为它不受网格拓扑的限制。在粒子法中,流体的动力学行为是通过粒子之间的相互作用来模拟的。这包括通过粒子间的接触力、压力和粘性力来传递动量和能量。粒子法通常采用牛顿第三定律,即作用力和反作用力,来确保模拟的物理守恒。--- END ---邀您关注▽ 纯粹CFD:软件教程、行业应用、专业理论、基础科普、研究前沿、严选培训广告▽ 只聊CFD相关的大小事,信手天成,娓娓道来来源:CFD饭圈

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈