最近总有小伙伴向我询问Fluent中的动网格问题,因此决定做一期关于Fluent动网格技术的内容。

动网格技术在流体仿真中很特殊,应用也很广。生活中能够碰到形形色色的包含有部件运动的问题,比如说我现在想要出门,那么开门的一瞬间,门的运动会影响到房间内部的空气流动,这就是一个典型的动网格问题。在工程中,动网格应用也非常的广泛,如依靠转子运动而工作的泵和压缩机、依靠旋翼旋转而飞行的直升机、随海浪起伏的船只、内燃机缸内活塞运动等等。

CFD中才有动网格

为什么只有搞CFD的人才会提动网格这个事儿?
固体结构仿真中并不会有动网格的提法。因为在结构计算中,网格节点的运动位移是要求解计算的基本物理量,而模型边界上的位移则可以直接作为载荷条件输入。结构仿真计算基于拉格朗日坐标系, 每一个网格节点都具有转动和(或)平动自由度,因此节点运动是理所当然的事情。

然而流体计算基于欧拉坐标系,在欧拉坐标系中,计算空间与网格节点保持固定,因此在利用CFD计算流体问题时,要考虑区域中部件的变形或运动,则需要通过特殊的手段来解决。

CFD中运动的解决方案

当前很多的CFD软件都有针对边界或区域运动的解决方案。

商业CFD软件中用得比较多的方法包括:

  • 方法一:针对区域运动的单参考系、多参考系及混合平面模型
  • 方法二:针对区域运动的滑移网格
  • 方法三:针对边界运动及区域运动的动网格

其中方法一为稳态模型,采用的是动参考系模型,在计算过程中,网格实际上并不运动。滑移网格方法中,网格的确是在运动,然而滑移网格只能解决区域运动问题,对于只有区域内各边界以不同规则运动的情况则无能为力。而这些问题都可以采用动网格技术来实现。动网格最接近真实物理状态。

其实还有一种情况,比如说在CFD中可以设定壁面是运动的还是静止的,可以设定运动壁面的平动速度或转动速度。但这仅仅只是边界条件的设定罢了,并未涉及到区域或边界的真实运动,网格也不会产生任何变化。

动网格包含的内容

动网格(Dynamic Mesh)通常包含两个方面的内容:运动方式描述以及网格的处理。

运动方式的描述

在CFD中由于速度是可以求解的量,因此在定义物体部件的运动时常用速度进行表达。

主要有两种类型:

  • 显式定义。直接给定运动部件的运动速度。可以是常数,也可以是与时间相关的函数。
  • 隐式定义。无法直接获得速度,但是速度可以通过牛顿定律计算得到。

对于可以显示定义的运动方式,我们可以称之为主动运动;而无法直接得到速度的运动方式,可以称之为被动运动。对于被动运动,目前很多主流的CFD求解器都提供了6DOF模型进行解决。

网格的处理

部件的运动势必会影响原始网格,当运动量较大时,可能会导致网格退化,甚至产生负体积。

目前成熟的CFD软件对于动网格中网格的处理主要分为两个阵营:

  • 采用网格重构。当部件产生运动后,程序检测部件运动对于初始网格的影响,并对运动后的网格进行重新划分,以确保网格质量能够满足要求。
  • 采用重叠网格。重叠网格基本原理很简单,采用两套网格,一套为背景网格,一套为前景网格。部件运动过程中,程序不断的检测背景网格与前景网格的重合区域,并计算交接界面。重叠网格有点儿类似于区域运动,只不过这个区域是叠加在背景网格上而已。

Fluent中的动网格

Fluent中动网格功能非常齐全,对于部件的运动,Fluent提供了Profile及UDF宏来进行定义,只要运动规律能够用数学语言描述,软件可以定义任意复杂程度的运动。

对于网格的处理,Fluent以网格重构(Remeshing)见长,同时还包含了网格光顺方法及动态铺层方法,以应对不同的应用场合。同时在新版本的Fluent中,还加入了Overset重叠网格,对于复杂运动的网格处理提供了更为强大的功能。

在被动运动方面,Fluent可以利用UDF将被动运动转化为主动运动,也可以利用6DOF模型。同时还针对发动机缸内运动提供了in-cylinder运动描述。除此之外,Fluent还提供了接触检测功能以应对边界运动过程中发生的接触问题。

在后续的文章中,我们将会逐步的剖析Fluent处理动网格所采用的方法。


更多CFD资料可微信扫描下方二维码关注微信公众号。

Fluent动网格【1】:概述的更多相关文章

  1. Fluent动网格【13】:网格光顺总结及实例

    光顺(Smoothing)方法是最基本的网格节点更新方法.Fluent提供了三种光顺方法: Spring弹簧光顺 Diffusion扩散光顺 Linearly Elastic Solid光顺 三种方法 ...

  2. Fluent动网格【8】:网格节点运动案例

    Fluent动网格中的DEFINE_GRID_MOTION宏允许用户定义网格节点的运动.本案例演示采用DEFINE_GRID_MOTION宏指定边界节点的运动. 案例动网格效果如图所示. 案例描述 本 ...

  3. Fluent动网格【11】:弹簧光顺

    动网格除了前面讲了很多的关于运动指定之外,另一个重要主题则为网格的更新. 在部件运动之后,不可避免的会造成网格形状的变化,如若不对网格加以控制,在持续运动的过程中,则可能造成网格极度变形.歪曲率过大, ...

  4. Fluent动网格【9】:区域运动

    本文所述的区域运动并非动网格中的运动域,而是指在多参考系(MRF)或滑移网格中所涉及到的区域的运动. 在滑移网格中指定区域运动时,除了能够指定绝对运动外,还能指定某一区域与其他区域间的相对运动,如图所 ...

  5. Fluent动网格【7】:网格节点运动

    在动网格中,对于那些既包含了运动也包含了变形的区域,可以通过UDF来指定区域中每一个节点的位置.这给了用户最大的自由度来指定网格的运动.在其他的动网格技术中(如重叠网格)则很难做到这一点.定义网格节点 ...

  6. Fluent动网格【5】:部件变形

    在动网格中关于部件运动除了指定刚体运动外,有时还需要指定某些边界的变形,这种情况经常会遇到,尤其是与运动部件存在相连接边界的情况下,如下图中边界1运动导致与之相连的边界2和边界3发生变形. Fluen ...

  7. Fluent动网格【3】:DEFINE_CG_MOTION宏

    除了利用Profile进行运动指定之外,Fluent中还可以使用UDF宏来指定部件的运动.其中用于运动指定的宏主要有三个: DEFINE_CG_MOTION DEFINE_GEOM DEFINE_GR ...

  8. Fluent动网格【2】:Profile文件

    动网格中一个重要任务是部件运动方式的指定.在动网格中指定部件的运动,往往将部件的运动方式指定为其加速度.速度或位移与时间的相关关系,本文主要讲述如何在Fluent中利用瞬态Profile文件指定部件的 ...

  9. Fluent动网格【6】:部件变形案例

    本案例描述使用动网格过程中处理边界变形的问题. 案例描述 本案例几何为一个抛物线旋转成型的几何体.如图所示. 其中上壁面刚体运动引起抛物面变形.刚体运动方程为: \[ v=\left\{ \begin ...

随机推荐

  1. 洛谷P2347 砝码称重 【多重背包】(方案数)(经典)

    题目链接:https://www.luogu.org/problemnew/show/P2347 题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入 ...

  2. IT 产品 需求 痛点

    英文应该有个 汉语发音 标注 这样的平台软件.罗马音.

  3. C语言--isspace()函数实现

      c语言中有很多处理string类型的函数,今天简单的使用了一下isspace()函数,自我实现调用了一下. Isspace()函数   包含在ctype.h头文件中 函数原型: int isspa ...

  4. 51nod 1277 字符串中的最大值

    题目链接 51nod 1277 字符串中的最大值 题解 对于单串,考虑多串的fail树,发现next数组的关系形成树形结构 建出next树,对于每一个前缀,他出现的次数就是他子树的大小 代码 #inc ...

  5. Python 爬取bangumi网页信息

    1.数据库连接池 #######db.py########## import time import pymysql import threading from DBUtils.PooledDB im ...

  6. Voltage Translation for Analog to Digital Interface ADC

    Voltage Translation for Analog to Digital Interface 孕龙逻辑分析仪 ZeroPlus Logic Analyzer How to modify an ...

  7. android:碎片的概念

    碎片(Fragment)是一种可以嵌入在活动当中的 UI 片段,它能让程序更加合理和充分 地利用大屏幕的空间,因而在平板上应用的非常广泛.虽然碎片对你来说应该是个全新的概 念,但我相信你学习起来应该毫 ...

  8. DotNetty z

    使用说明 客户端的代码和服务端的代码相差很少,体现了Netty统一的编程模型.有几个不同点: 客户端的Bootstrap不是ServerBootstrap: 客户端不需要主线程组,只有工作线程组,消息 ...

  9. Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。

    ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...

  10. c/c++ 读入一行不确定个数的整数

    假设有一个文件,文件的每一行包括n个整数,整数之间以一个空格隔开,文件总共有m行,但是事先不知道n,m.如何每次从文件中读取一行整数放到一个数组中. 可以分为两步:1.首先从文件中读入一行字符串,2. ...