zoukankan      html  css  js  c++  java
  • 【小白的CFD之旅】19 来自计算网格的困惑

    经过一年的忙碌,终于又到了寒假时间,小白又满状态复活了。
    这一年小白学了很多的课程,但是一年下来,小白却感觉脑袋里没留下什么东西,貌似什么东西都在考完试的那一刹那全还回给老师了。这一年学习之余,小白仍然坚持着做案例,做大量不同的案例,虽然有一些案例做起来并没有太大的作用,但是至少可以熟练软件操作过程。

    最近小白对于网格产生了一些困惑,正巧的是中午在食堂吃饭的时候碰到了小牛师兄,这一学期忙着上课,有一阵子没见着小牛师兄了。
    “嘿,师兄,好久不见了耶”,小白上去打招呼。
    “是啊小白,最近忙些啥子呢?”小牛师兄的眼神永远那么犀利的盯着面前的那盘红烧肉。
    “上课啊,考试啊,整天学这些基础理论也不知道后面用不用得到。唉呀妈呀终于结束了,终于可以安心做点事儿了。”小白很无奈的说。
    “哈哈,这不是都学完了嘛,以后就会知道有没有用了。对了,最近还在学CFD么?老蓝还等着你接班呢,嘿嘿”。小牛师兄说。
    “开什么玩笑哦,接班?接谁的班?我还没入门呢,就我学的那点儿假把式,估计还得半年,等研二了再说吧。”小白心里有点发虚。

    “不开玩笑了,说真的,到底学怎样了?估计没那么多时间留给你学习了,最近有新的项目来了,急需人手,我建议你跟老蓝商量进组学习吧,这样比较快。”小牛师兄放下筷子说道。
    “恩,其实软件操作、计算流程都掌握得差不多了,但是总觉得缺点什么,遇到新的问题也还是把握不住。就最近来说吧,就对于计算网格比较困惑,你说在计算的过程中,到底是网格质量重要还是网格数量重要?"小白问道。

    “怎么会有这种问题呢,当然都重要啊”,小牛师兄说。
    “那总有个优先级吧,比如说在为一个新的计算准备模型的时候,我是要优先考虑网格质量还是网格数量?虽然说很多时候网格数量多了网格质量也跟着变好,但是我那破电脑实在无法承受太多的计算网格,稍多一点就死机啊。那网格数量少了,计算结果还有用么?”小白问。

    “其实很多时候,人们往往走入一个误区,他们认为网格数量多就意味着计算精度的提高。但其实并非是这样,对于变化梯度小的区域,你网格数量的增加对于计算精度的贡献其实并不明显,反而对于就计算时间的影响是显而易见的。而网格质量,则在很大程度上会影响计算的精度以及计算收敛过程,要知道收敛过程是直接影响计算时间的,我个人的观点,网格质量要比网格数量重要。高质量的计算网格,哪怕网格数量少点儿,但肯定不会影响计算趋势,但如果网格质量很差,则出现错误计算结果的概率可就比较大了。”小牛师兄说。

    “嗯,懂了,在保证计算网格质量的基础上,再来根据计算机资源来考虑网格数量,对吧?”小白说。
    “根骨不错呀,骚年”,小牛师兄笑道。

    “那问题又来了,网格数量要到什么程度才算合适呢?比如说我要考虑这食堂的环境质量,要画多少网格才行呢?”小白接着问。
    “这问题我没法回答你。首先,你没说你拥有的计算资源有多少。用笔记本和用巨型机,所能考虑的计算网格数量是很不一样的。其次,你没说你要考虑哪些问题。因为不同的物理模型和物理细节,对于网格的精密程度要求也是很不一样的。再次,你也没说你的计算时间有多少,一年的时间和一天的时间,所能接受的网格数量肯定有巨大的区别。但是我要说的是,在目前私人拥有的计算资源条件下,计算精度一般是与计算网格数量成正比的。也就是说,网格数量越多,计算精度越高。因此,如果计算时间充足,可以尽可能的提高网格数量。在工程上还有一种称之为”网格独立性“验证的说法,就是为了说明这一问题。”小牛师兄说。

    “什么叫网格独立性?”小白很好奇的问。
    “所谓的网格独立性,只是一个近似的说法,实际的数值计算,绝对不可能做到网格独立的。网格独立性的做法是这样的:做N套不同密度的计算网格,在相同的工况条件下进行计算,考虑相关物理量的变化率。当网格密度达到一定程度后,继续增加网格密度对于计算结果的影响非常小,此时可以认为计算网格数量的增加对于计算结果的影响可以忽略,在后续的计算过程中,采用计算结果不再发生变化位置的计算网格数量作为网格数量基准。其实说白了就是在计算精度与计算时间之间进行一个折中而已。而这里所说的计算结果不再发生变化,也取决于个人的判断,你觉得变化量在1%以内叫不变化,我也可以认为在5%以内叫不变化,自己确定,但是可以肯定的是,计算结果随着网格数量的增加肯定会有变化的。你想,计算结果怎么可能与网格数量无关嘛。"小牛师兄说。

    “网格独立性验证要求我们的计算网格疏密对计算结果的影响在可以接受的范围之内,但是如果计算资源充足的话,的确可以再提高网格的数量以增加精度。但要记住的一点是:增加网格数量不一定能提高计算精度,但是高精度的计算结果一定来自于高密度的网格。说起来很拗口,你可以这样思考,影响计算结果精度的因素除了计算网格之外还有很多,比如计算模型,边界条件,初始条件,残差标准等等,因此网格数量的增加不一定就能够提高计算精度,但是如果网格数量过少,肯定得不到精确的计算结果。”

    “那么问题来了,多少网格叫粗多少网格叫密呢?通常我们并不说某某模型需要多少网格,网格数量通常取决于你拥有的计算资源和时间资源。打个很简单的比方,比如你要设计某个产品,设计周期是一个月,你利用CFD来帮助进行设计,如果你每一个模型的计算时间需要一周,那时间资源肯定不够,你只能使用低密度的网格,每个计算时间在一天之内的网格模型来进行计算。或者你可以换用更高级的计算机,但一定要确保每个模型的计算时间不能超过一天。很简单的道理对不对。”

    “还有个很容易被忽略的问题,那就是网格的分布。初学者划分的网格常常是均匀分布的,这其实是一种资源浪费。要记住的一点是只有梯度大的区域才需要高密度的网格。在流场计算过程中,只有一些物理量变化剧烈的场合才需要更精细的网格。因此在划分网格之前就需要对流体域内流动特征有一个初略的估计,在物理量梯度大的区域布置更加细密的网格,这是一个很重要的网格划分规则。”

    小白的总结

    • 一般情况下,网格质量必须得到保证,否则会影响计算收敛过程,甚至导致错误的计算结果。
    • 在保证网格质量的前提下,根据计算资源来考虑网格数量
    • 网格独立性并非表示数值计算结果与计算网格数量无关,而只是在计算精度与计算网格数量之间的一个折衷
    • 增加网格数量不一定能提高计算精度,但是高精度的计算结果一定来自于高密度的网格
    • 梯度大的区域才需要划分更精细的网格,尺寸均匀的网格不一定是好的网格




  • 相关阅读:
    xmpp1
    综合
    CSS进阶(一)width & height
    CSS进阶(二)content
    TypeScript 学习笔记-JSDoc
    TypeScript学习笔记-声明合并
    TypeScript 学习笔记-模块
    TypeScript学习笔记-高级类型
    TypeScript学习笔记-类型兼容性
    TypeScript学习笔记-枚举
  • 原文地址:https://www.cnblogs.com/LSCAX/p/6292651.html
Copyright © 2011-2022 走看看