Fluent动网格----layering个一个简单实例(作者Snow)
- 格式:doc
- 大小:389.00 KB
- 文档页数:5
目录实例:Profile定义运动 (2)I、参数说明 (2)II、操作步骤 (3)一、将计算域离散为网格 (3)二、Fluent操作步骤 (4)1.启动Fluent 14.5求解器 (4)2.初始设置 (4)3.选择湍流模型 (5)4.设置流体物性 (6)5.设置边界条件 (7)6.动网格设置 (8)7.设置其它选项 (12)在Fluent中,动网格模型可以用来模拟由于流域边界运动引起流域形状随时间变化的流动情况,动网格在求解过程中计算网格要重构,例如汽车发动机中的气缸运动、阀门的开启与关闭、机翼的运动、飞机投弹等等。
CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。
配合瞬态时间,即可很方便的得出位移。
当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。
(2)网格节点速度是通过求解得到的。
如6DOF模型基本上都属于此类。
用户将力换算成加速度,然后将其积分成速度。
在Fluent中,动网格涉及的内容包括:(1)运动的定义。
主要是PROFILE文件与UDF中的动网格宏。
(2)网格更新。
FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。
需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。
动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。
在避免负网格的同时,努力提高运动更新后的网格质量。
拉格朗日网格(固体有限元计算)网格欧拉网格(流体计算)实例:Profile定义运动I、参数说明本次实例采用的场景来自于流体中高速飞行的物体。
如子弹、火箭、导弹等。
这里只是为了说明profile在动网格运动定义中的应用,因此为了计算方便不考虑高速问题。
问题描述如下图所示:图 1 (1为运动刚体,2为计算域)图2计算说明:由于不考虑也没办法考虑刚体的变形,因此在构建面域的时候,将1中的部分通过布尔运算去除。
计算域总长度300mm,其中固体运动最大位移为:300-40-30-6mm=224mm。
FLUENT 6 动网格技巧一、动网格简介CFD动网格大致分为两类:第一类为显式规定网格节点速度,配合瞬态时间,即可很方便的得出位移,当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定网格节点的位移。
第二类为网格节点速度是通过求解得到的,如6DOF模型基本上都属于此类,用户将力换算成加速度,然后将其积分成速度。
对于第一类动网格问题,在FLUENT中通常可以使用Profile与UDF进行网格设置,通过规定节点或区域的速度、角速度或位移等方式来显式确定网格的运动,通常大部分的动网格问题都归于此类。
而对于第二类问题,通常涉及到力的计算,力在流体中通常是对压力进行积分而来。
将力转换为速度或位移,一般涉及到加速度、转动惯量等物理量的计算。
在FLUENT中,可以使用6DOF模型进行处理,在CFX中,可以使用刚体模型(13.0以上版本才有)。
在FLUENT中,动网格涉及的内容包括:1)运动的定义。
主要是PROFILE文件与UDF中的动网格宏。
2)网格更新。
FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。
需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。
动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。
在避免负网格的同时,努力提高运动更新后的网格质量。
二、第一类动网格操作0打开FLUENT双击桌面快捷方式→ 选择2D或3D模式(FLUENT和GAMBIT默认单位为米)1导入网格文件File → Read → Case → 选择mesh文件2检查网格文件Grid > Check(可以查看网格的大致情况,如有无负体积等)3定义求解器Define → Models → Solver → 在Time项里点选Unsteady(非稳态求解器)4编译UDF文件Define → User-Defined → Functions → Compiled → 单击Add添加UDF文件(*.C)→点击Build按钮→ 点击Load按钮→ 点击Close按钮(如果不关闭编译对话框,在调试程序时可随时对程序进行编译)5设定动网格参数Define → Dynamic Mesh → Parameters→ 勾选Dynamic Mesh> Models(模型)Dynamic Mesh(动网格,默认勾选)In-Cylinder(气缸)2.5DSix DOF Solver(六自由度)> Mesh Methods(网格方法)Smoothing(网格光顺,默认勾选)Layering(动态分层)Remeshing(网格重构)> Smoothing(网格方法)Spring Constant Factor(弹簧常数因子,默认为1)Boundary Node Relaxation(边界节点松弛,默认为1)Convergence Tolerance(收敛容差,默认为0.001)Number of Iterations(迭代次数,默认为20)> Layering(网格方法)Constant Height(固定高度)Constant Ratio(固定比例)Split Factor(分割因子)Collapse Factor(收缩因子)> Remeshing(网格方法)Size Function(尺寸函数)Must Improve Skewness(必须提高扭曲度)Face Remeshing(面网格重构)Minimum Length Scale(最小长度缩放,默认为0)Maximum Length Scale(最大长度缩放,默认为1000)Maximum Cell Skewness(最大单元扭曲度,默认为0.6)Maximum Face Skewness(最大面扭曲度,默认为0.7)Size Remeshing Interval(尺寸重构间隔,默认为10)Size Function Resolution(尺寸函数分辨率,默认为3)Size Function V ariation(尺寸函数变异,默认为1.581787)Size Function Rate(尺寸函数比率,默认为0.3)6设定动网格区域Define → Dynamic Mesh → Zones> Zone Names(在下拉列表里选择要运动的区域或边界)> Type(点选区域或移动边界的类型)Stationary(静止的)Rigid Body(刚体,默认勾选)Deforming(变形)User-Defined(用户自定义)> Motion Attributes(运动属性)Motion UDF/Profile(运动自定义文件,一般UDF文件编译后,会在下拉列表中显示)Center of Gravity Location(全部设置为0)Center of Gravity Orientation(全部设置为0)> Geometry Definition(几何定义,一般不设置)> Meshing Options(网格划分选项)Adjacent Zone(毗邻区域,默认为fluid)Cell Height(单元高度,一般设定为网格单元最小尺寸)→ 单击Create按钮→ 单击Draw按钮→ 单击Update按钮→ 单击Close按钮(这一步非常关键,否则无法预览动态网格)7显示网格Display → Grid(弹出网格显示窗口)8预览动网格Solve → Mesh Motion> Time(时间设置)Current Mesh Times(当前时间,即瞬态运动的时间)Time Step Sizes(时间步长,每个子步的时间)Number of Time Steps(时间步,即总的时间步数)> Display Options(显示选项)Display Grid(显示网格,默认勾选)Save Hardcopy(保存硬拷贝)Enable Autosave(启动自动保存)Display Frequency(显示频率,默认为1)三、第二类动网格操作Number of Iterations(最大迭代步数,在每个时间子步内迭代的次数,即在一个时间步内计算稳态的过程)。
目录实例:Profile定义运动 (2)I、参数说明 (2)II、操作步骤 (3)一、将计算域离散为网格 (3)二、Fluent操作步骤 (4)1.启动Fluent 14.5求解器 (4)2.初始设置 (4)3.选择湍流模型 (5)4.设置流体物性 (6)5.设置边界条件 (7)6.动网格设置 (8)7.设置其它选项 (12)在Fluent中,动网格模型可以用来模拟由于流域边界运动引起流域形状随时间变化的流动情况,动网格在求解过程中计算网格要重构,例如汽车发动机中的气缸运动、阀门的开启与关闭、机翼的运动、飞机投弹等等。
CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。
配合瞬态时间,即可很方便的得出位移。
当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。
(2)网格节点速度是通过求解得到的。
如6DOF模型基本上都属于此类。
用户将力换算成加速度,然后将其积分成速度。
在Fluent中,动网格涉及的内容包括:(1)运动的定义。
主要是PROFILE文件与UDF中的动网格宏。
(2)网格更新。
FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。
需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。
动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。
在避免负网格的同时,努力提高运动更新后的网格质量。
拉格朗日网格(固体有限元计算)网格欧拉网格(流体计算)实例:Profile定义运动I、参数说明本次实例采用的场景来自于流体中高速飞行的物体。
如子弹、火箭、导弹等。
这里只是为了说明profile在动网格运动定义中的应用,因此为了计算方便不考虑高速问题。
问题描述如下图所示:图 1 (1为运动刚体,2为计算域)图2计算说明:由于不考虑也没办法考虑刚体的变形,因此在构建面域的时候,将1中的部分通过布尔运算去除。
计算域总长度300mm,其中固体运动最大位移为:300-40-30-6mm=224mm。
【最新整理,下载后即可编辑】Fluent 动网格实例具体操作步骤目录实例:Profile定义运动 (3)I、................................................................................................... 参数说明3II、 ................................................................................................. 操作步骤4一、将计算域离散为网格 (4)二、Fluent操作步骤 (5)1. 启动Fluent 14.5求解器 (5)2. 初始设置 (6)3. 选择湍流模型 (7)4. 设置流体物性 (8)5. 设置边界条件 (9)6. 动网格设置 (11)7. 设置其它选项 (16)Fluent 动网格实例具体操作步骤在Fluent中,动网格模型可以用来模拟由于流域边界运动引起流域形状随时间变化的流动情况,动网格在求解过程中计算网格要重构,例如汽车发动机中的气缸运动、阀门的开启与关闭、机翼的运动、飞机投弹等等。
CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。
配合瞬态时间,即可很方便的得出位移。
当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。
(2)网格节点速度是通过求解得到的。
如6DOF模型基本上都属于此类。
用户将力换算成加速度,然后将其积分成速度。
在Fluent中,动网格涉及的内容包括:(1)运动的定义。
主要是PROFILE文件与UDF中的动网格宏。
(2)网格更新。
FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。
需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。
动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。
Fluent动网格的应用过程一、简介动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。
网格的更新过程由FLUENT根据每个迭代步中边界的变化情况自动完成。
FLUENT要求将运动的描述定义在网格面或网格区域上。
如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。
二、动网格更新方法动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧近似光滑模型、动态分层模型和局部重划模型。
1、弹簧近似光滑模型在弹簧近似光滑模型中,网格的边被理想化为节点间相互连接的弹簧。
移动前的网格间距相当于边界移动前由弹簧组成的系统处于平衡状态。
在网格边界节点发生位移后,会产生与位移成比例的力,力量的大小根据胡克定律计算。
边界节点位移形成的力虽然破坏了弹簧系统原有的平衡,但是在外力作用下,弹簧系统经过调整将达到新的平衡,也就是说由弹簧连接在一起的节点,将在新的位置上重新获得力的平衡。
从网格划分的角度说,从边界节点的位移出发,采用虎克定律,经过迭代计算,最终可以得到使各节点上的合力等于零的、新的网格节点位置,这就是弹簧光顺法的核心思想。
2、动态分层模型对于棱柱型网格区域(六面体和或者楔形),可以应用动态层模型。
动态层模型的中心思想是根据紧邻运动边界网格层高度的变化,添加或者减少动态层,即在边界发生运动时,如果紧邻边界的网格层高度增大到一定程度,就将其划分为两个网格层;如果网格层高度降低到一定程度,就将紧邻边界的两个网格层合并为一个层。
3、局部重划模型在使用非结构网格的区域上一般采用弹簧光顺模型进行动网格划分,但是如果运动边界的位移远远大于网格尺寸,则采用弹簧光顺模型可能导致网格质量下降,甚至出现体积为负值的网格,或因网格畸变过大导致计算不收敛。
为了解决这个问题,FLUENT 在计算过程中将畸变率过大,或尺寸变化过于剧烈的网格集中在一起进行局部网格的重新划分,如果重新划分后的网格可以满足畸变率要求和尺寸要求,则用新的网格代替原来的网格,如果新的网格仍然无法满足要求,则放弃重新划分的结果。
题记:在学习使用Fluent的时候,有不少朋友需要使用动网格模型(Dynamic Mesh Model),因此,本版推出这个专题,进行大讨论,使大家在使用动网格时尽量少走弯路,更快更好地掌握;也欢迎使用过的版友积极参与讨论指导,谢谢!该专题主要包括以下的主要容:##1.动网格的相关知识介绍;##2.以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程;##3. 与动网格应用有关的参考文献;##4. 使用动网格进行计算的一些例子。
##1.动网格的相关知识介绍有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。
1、简介动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。
边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。
网格的更新过程由FLUENT 根据每个迭代步中边界的变化情况自动完成。
在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。
可以用边界型函数或者UDF 定义边界的运动方式。
FLUENT 要求将运动的描述定义在网格面或网格区域上。
如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。
那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。
不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。
注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C 语言编程基础。
2、动网格更新方法动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧近似光滑模型(spring-based smoothing)、动态分层模型(dynamic layering)和局部重划模型(local remeshing)。
Fluent中的动网格动网格是目前求解计算域变化问题的常用方法。
参考Fluent帮助,可以知道动网格技术与一般流动计算设置的主要区别在于网格更新方法和更新域设置。
这里就这两方面问题的一点体会作一简单记录。
一、网格更新方法弹簧近似光滑法将任意两网格节点之间的连线理想地看成一条弹簧,并通过近似弹簧的压缩或拉伸实现网格和计算域的改变。
该方法网格拓扑不变,无需网格的插值处理,对结构化(四边形、六面体)和非结构化(三角形、四面体)网格同样适用。
但不适合于大变形情况,当计算区域变形较大时,变形后的网格质量变差,严重影响计算精度。
动态分层法在运动边界相邻处根据运动规律动态增加或减少网格层数,以此来更新变形区域的网格。
该方法适用于结构化网格,通过设置适当的分层和缩减系数,更新后的网格依然为较为均匀的结构化网格,对计算精度影响较小。
对于运动域具有多自由度和任意变形情况,该方法处理起来非常困难。
网格重生方法在整个网格更新区域内依据设定的最大和最小网格尺寸判断需要进行网格重生的网格,并依据设置的更新频率进行网格重生处理。
该方法适用于非结构化网格,能够较好的应用于任意变形的计算区域处理。
二、更新域设置更新域设置是动网格设置中的一项重要工作,最常用的设置是刚体运动域和变形域,这里针对这两种域的设置注意事项和技巧作一简单介绍。
1、域动网格一般来讲,设置为刚体运动域的区域一般为壁面类边界,通过设置固壁的运动,模拟计算域内物体的运动。
由于固壁边界有时形状较为复杂,壁面附近网格尺度与周围网格尺度存在较大差别,网格更新时变形较大。
在这种情况下,可以设置一个包含固壁运动边界的计算域,通过该计算域的整体运动模拟域内物体的运动,在有的地方将这种方法称为域动网格法。
在域动网格法中,需要设置包含运动物体的内部计算域、内部计算域界面均为刚体运动域。
如下图所示。
2、动态分层法中的分界面在应用动态分层网格更新方法时,当分层界面在计算域内部时,需要采用Split interface(这里称分界面)将运动域运动范围与固定计算域区分开来,以保证动态分层网格处理(如果运动域网格与固定域网格没有分界面,动态分层无法执行)。
Fluent动网格----layering个一个简单实例我这几天看了点动网格技术方面的东西,在学习过程中发现这方面的例子很少,自己也走了一些弯路。
现在还好,弄明白了一些,能够应付现在我的工作。
为了让更多学习者快速了解动网格,我打算尽量把我学习心得在这里和大家分享,这里给出一个layering的一个简单例子。
1.Gambit画网格
本例很简单,在Gambit里画一个10*10的矩形,网格间隔为1,也就是有100个网格,具体见下图。
都学动网格的人了,不至于这个不会做!
这里需要注意一个问题:设置边界条件的时候,一定要把要移动的边单独设定,本例中一右边界作为移动的边,设成wall就可以,这里再后面需要制定。
2.编写UDF
#include "udf.h"
#include "unsteady.h"
#include "stdio.h"
#include "stdlib.h" /************************************************************/
real current_time = 0.0 ;
Domain * domain ;
Thread * thread ;
real NV_VEC( origin ),NV_VEC( force ),NV_VEC( moment ) ;
/************************************************************/
DEFINE_CG_MOTION(throttle,dt,vel,omega,time,dtime)
{
current_time = CURRENT_TIME ;
vel[0] = 30;
Message("time=%f omega=%f\n",current_time) ; }
上面这段代码就是设置x轴方向的速度为30米每秒(UDF默认是SI单位制)。
vel[0]表示x、vel[1]表示y、vel[2]表示z。
细心读者肯定会有疑问,这里并没有指定是哪条边界移动,别急,这需要到后面,在Fluent里设置。
2.Fluent设置
(1)导入mesh文件;
(2)Grid-->Check;
(3)Define-->solver,勾选unsteady,因为是动网格吗,既然动了肯定不是定常的了。
(4)Define-->User-defined-->Function-->Compiled
Add添加UDF文件,点击Build,如果不出错的话,等编译完后点击Load,UDF就OK了。
(5)动网格设置
Define-->Dynamic mesh-->Parameters,勾选Dynamic mesh,就会弹出
点击Remeshing如图中设置,接着点击Layering
(6)Define-->Dynamic mesh-->Zones,弹出
Zone Names中选择你要移动的边界,就是你在Gambit里单独指定的Wall边界条件,当然你也可以更改。
Type里选择刚体,及平移运动,Motion UDF/Profile里选择刚刚编译好的udf,编译成功了肯定是有的。
然后点击Meshing Options,如下图设置
Cell Height在layering方法下是指理想高度,一般就是网格的边长,还记得我们在Gambit 里做的是10*10的正方形,间隔为1画的网格,所以网格边长就是1,因此这里设置成1。
然后依次点击Creat、Draw、Update、Close。
我做的时候就把这一步忘了,结果是边界动了,但是没有画出新的网格(见下图),弄了很久,上网上搜也没结果,希望大家不要出错了。
到这里,就设置结束了,就可以看网格运动了,迫不及待吧,别急,呵呵。
(7)Solve-->Mesh motion,弹出
如图中设置。
解释一下:Time Step Size时间步长,就是你Fluent每执行迭代一次的时间,Number of Time Steps设为100,就是迭代100次,那么总共就是1秒,联想到UDF里面,x轴方向速度设置的是30米每秒,那么执行完右边界将是移动30米,整个网格变为40*10的矩形。
点击Preview就能看到结果了,到这一步很有成就感吧,是不是对UDF有个感性认识,甚者感觉恍然大悟,呵呵。
执行完得图
可惜不会做动画,什么时候做个动画弄上来。
到此就结束了,欢迎各位博友互相交流学习!。