Fluent动网格【1】:概述
最近总有小伙伴向我询问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】:概述的更多相关文章
- Fluent动网格【13】:网格光顺总结及实例
光顺(Smoothing)方法是最基本的网格节点更新方法.Fluent提供了三种光顺方法: Spring弹簧光顺 Diffusion扩散光顺 Linearly Elastic Solid光顺 三种方法 ...
- Fluent动网格【8】:网格节点运动案例
Fluent动网格中的DEFINE_GRID_MOTION宏允许用户定义网格节点的运动.本案例演示采用DEFINE_GRID_MOTION宏指定边界节点的运动. 案例动网格效果如图所示. 案例描述 本 ...
- Fluent动网格【11】:弹簧光顺
动网格除了前面讲了很多的关于运动指定之外,另一个重要主题则为网格的更新. 在部件运动之后,不可避免的会造成网格形状的变化,如若不对网格加以控制,在持续运动的过程中,则可能造成网格极度变形.歪曲率过大, ...
- Fluent动网格【9】:区域运动
本文所述的区域运动并非动网格中的运动域,而是指在多参考系(MRF)或滑移网格中所涉及到的区域的运动. 在滑移网格中指定区域运动时,除了能够指定绝对运动外,还能指定某一区域与其他区域间的相对运动,如图所 ...
- Fluent动网格【7】:网格节点运动
在动网格中,对于那些既包含了运动也包含了变形的区域,可以通过UDF来指定区域中每一个节点的位置.这给了用户最大的自由度来指定网格的运动.在其他的动网格技术中(如重叠网格)则很难做到这一点.定义网格节点 ...
- Fluent动网格【5】:部件变形
在动网格中关于部件运动除了指定刚体运动外,有时还需要指定某些边界的变形,这种情况经常会遇到,尤其是与运动部件存在相连接边界的情况下,如下图中边界1运动导致与之相连的边界2和边界3发生变形. Fluen ...
- Fluent动网格【3】:DEFINE_CG_MOTION宏
除了利用Profile进行运动指定之外,Fluent中还可以使用UDF宏来指定部件的运动.其中用于运动指定的宏主要有三个: DEFINE_CG_MOTION DEFINE_GEOM DEFINE_GR ...
- Fluent动网格【2】:Profile文件
动网格中一个重要任务是部件运动方式的指定.在动网格中指定部件的运动,往往将部件的运动方式指定为其加速度.速度或位移与时间的相关关系,本文主要讲述如何在Fluent中利用瞬态Profile文件指定部件的 ...
- Fluent动网格【6】:部件变形案例
本案例描述使用动网格过程中处理边界变形的问题. 案例描述 本案例几何为一个抛物线旋转成型的几何体.如图所示. 其中上壁面刚体运动引起抛物面变形.刚体运动方程为: \[ v=\left\{ \begin ...
随机推荐
- 洛谷P2347 砝码称重 【多重背包】(方案数)(经典)
题目链接:https://www.luogu.org/problemnew/show/P2347 题目描述 设有1g.2g.3g.5g.10g.20g的砝码各若干枚(其总重<=1000), 输入 ...
- IT 产品 需求 痛点
英文应该有个 汉语发音 标注 这样的平台软件.罗马音.
- C语言--isspace()函数实现
c语言中有很多处理string类型的函数,今天简单的使用了一下isspace()函数,自我实现调用了一下. Isspace()函数 包含在ctype.h头文件中 函数原型: int isspa ...
- 51nod 1277 字符串中的最大值
题目链接 51nod 1277 字符串中的最大值 题解 对于单串,考虑多串的fail树,发现next数组的关系形成树形结构 建出next树,对于每一个前缀,他出现的次数就是他子树的大小 代码 #inc ...
- Python 爬取bangumi网页信息
1.数据库连接池 #######db.py########## import time import pymysql import threading from DBUtils.PooledDB im ...
- Voltage Translation for Analog to Digital Interface ADC
Voltage Translation for Analog to Digital Interface 孕龙逻辑分析仪 ZeroPlus Logic Analyzer How to modify an ...
- android:碎片的概念
碎片(Fragment)是一种可以嵌入在活动当中的 UI 片段,它能让程序更加合理和充分 地利用大屏幕的空间,因而在平板上应用的非常广泛.虽然碎片对你来说应该是个全新的概 念,但我相信你学习起来应该毫 ...
- DotNetty z
使用说明 客户端的代码和服务端的代码相差很少,体现了Netty统一的编程模型.有几个不同点: 客户端的Bootstrap不是ServerBootstrap: 客户端不需要主线程组,只有工作线程组,消息 ...
- Error-MVCr:找到了多个与 URL 匹配的控制器类型。如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况。
ylbtech-Error-MVCr:找到了多个与 URL 匹配的控制器类型.如果多个控制器上的特性路由与请求的 URL 匹配,则可能会发生这种情况. 1.返回顶部 1. 找到了多个与 URL 匹配的 ...
- c/c++ 读入一行不确定个数的整数
假设有一个文件,文件的每一行包括n个整数,整数之间以一个空格隔开,文件总共有m行,但是事先不知道n,m.如何每次从文件中读取一行整数放到一个数组中. 可以分为两步:1.首先从文件中读入一行字符串,2. ...