动网格的入门专题
- 格式:pdf
- 大小:143.67 KB
- 文档页数:9
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(最大迭代步数,在每个时间子步内迭代的次数,即在一个时间步内计算稳态的过程)。
主要包括两部分内容:(1)Mesh Methods (2)Dynamic Mesh Zones。
该部分主要用于网格或网格域在运动过程中,设置计算域中网格节点位置更新方法。
fluent中有三种主要网格更新方法:(1)网格光顺方法(2)动态层方法(3)网格重构。
对于3D模型,还包括in-cylinder、six-dof、Implicit Update
三种选项。
其中in-cyliner用于发动机气缸模拟,six-dof主要用于流体作用于刚体,预测刚体运动。
implicit update用于设定网格更新方式。
默认采用显式方式,勾选此选项可设定网格以隐式方式更新。
2、动态网格域
用于定义网格运动的区域及运动类型。
FLUENT中网格运动类型主要有:静止、刚体运动、变形区域、用户自定义域、耦合域。
静止域在网格运动过程中,区域内节点位置保持不变。
虽然说默认情况下不设定区域运动,则该区域为静止,但是一些情况下还是需要显式设定某些区域为静止域,尤其是在一些与刚体域相连的区域处理上。
刚体运动域:这是fluent动网格中最常见的运动类型。
通过规定刚体的速度或位移来控制运动。
变形域:由于边界运动导致节点变形。
变形域通常与刚体域是相连的。
自定义域:用户可以使用UDF定义自己需要的域
耦合域:节点位移由耦合求解器计算,在流固耦合计算中,耦合面上通常设定为耦合域类型。
题记:在学习使用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的时候,有不少朋友需要使用动网格模型(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动网格教程摘自/dvbbs/dispbbs.asp?boardid=61&id=1396 题记:在学习使用Fluent的时候,有不少朋友需要使用动网格模型(Dynamic Me sh Model),因此,本版推出这个专题,进行大讨论,使大家在使用动网格时尽量少走弯路,更快更好地掌握;也欢迎使用过的版友积极参与讨论指导,谢谢!。
该专题主要包括以下的主要内容:§一、动网格的相关知识介绍;§二、以NACA0012翼型俯仰振荡实例进行讲解动网格的应用过程;§三、与动网格应用有关的参考文献;§四、使用动网格进行计算的一些例子。
§一、动网格的相关知识介绍有关动网格基础方面的东西,请具体参考FLUENT User’s Guide或FLUENT全攻略的相关章节,这里只给出一些提要性的知识要点。
1、简介动网格模型可以用来模拟流场形状由于边界运动而随时间改变的问题。
边界的运动形式可以是预先定义的运动,即可以在计算前指定其速度或角速度;也可以是预先未做定义的运动,即边界的运动要由前一步的计算结果决定。
网格的更新过程由FLUE NT 根据每个迭代步中边界的变化情况自动完成。
在使用动网格模型时,必须首先定义初始网格、边界运动的方式并指定参予运动的区域。
可以用边界型函数或者UDF定义边界的运动方式。
FLUENT 要求将运动的描述定义在网格面或网格区域上。
如果流场中包含运动与不运动两种区域,则需要将它们组合在初始网格中以对它们进行识别。
那些由于周围区域运动而发生变形的区域必须被组合到各自的初始网格区域中。
不同区域之间的网格不必是正则的,可以在模型设置中用FLUENT软件提供的非正则或者滑动界面功能将各区域连接起来。
注:一般来讲,在Fluent中使用动网格,基本上都要使用到UDF,所以你最好具备一定的C语言编程基础。
2、动网格更新方法动网格计算中网格的动态变化过程可以用三种模型进行计算,即弹簧近似光滑模型(spring-based smoothing)、动态分层模型(dynamic layering)局部重划模型(local remeshing)1)弹簧近似光滑模型原则上弹簧光顺模型可以用于任何一种网格体系,但是在非四面体网格区域(二维非三角形),最好在满足下列条件时使用弹簧光顺方法:(1)移动为单方向。
FLUENT动⽹格系列:区域运动本次使⽤的是滑移⽹格,动⽹格实现以后再讨论。
要实现的运动如下图所⽰。
杯⼦中装满⽔,现在以速度1rad/s延续1s钟使杯⼦倾斜1rad,观察5s钟内⽔的变化情况。
本例可以⽤滑移⽹格或动⽹格实现,但是使⽤滑移⽹格能够保持较好的⽹格质量。
本例使⽤滑移⽹格。
FLUENT中的滑移⽹格可以最⼤限度的代替动⽹格,尤其对于⼀些分界⾯确定的计算模型。
滑移⽹格可以⽤于瞬态模拟中(其它如MRF,SRF,MP则很少⽤于瞬态模拟中)。
本例涉及到的内容包括:(1)分界⾯⼏何模型的建⽴。
涉及到多⼏何体的创建。
在workbench的DM模块中很容易解决此类问题。
但是如果要在ICEM CFD中创建⽹格的话,则需要进⾏⼀些特别的处理。
主要是各部分模型⽹格的组装问题。
(2)区域运动的指定。
在本例中主要是指定运动区域的旋转速度。
需要注意的是旋转中⼼与旋转⽅向的设定。
(3)多相流的使⽤。
本例中使⽤的是VOF模型。
1、⼏何模型本例的⼏何模型如下图所⽰。
尺⼨是随便定的。
如图所⽰,计算模型分为三个区域,1、2、3分别对应名称为braket、zone与cup,如前所述,区域zone与cup为运动区域,运动⽅式⽤UDF进⾏定义。
2、边界类型⼀共有两对interface,分别位于zone区域与cup区域,zone区域与braket区域。
如下图所⽰。
braket区域的左侧、右侧及下⽅边界均为wall类型,上⽅边界为pressure_outlet类型,内部边界为interface类型。
cup区域左、右、下侧边界为wall类型,上⽅边界为interface类型。
在mesh interface中设置interface对,⼀共是两对。
最终组合后的⽹格如下图所⽰。
3、求解参数设置导⼊模型后,在scale⾯板中进⾏必要的scale操作以使模型尺度满⾜要求。
在general⾯板中设置使⽤瞬态模拟,并设置重⼒加速度。
选择RNG K-Epsilon湍流模型。
①进行动网格演示时,首先设置为transient;②动网格预览:display zone motion---preview mesh motion;预览之后不保存,重新打开才能恢复原样;③问题:出现负体积:如果有error前有warning,仔细查看;第一章理论基础1.1 网格生成方法比较1)铺层layering计算区域进行扩张和收缩时,网格进行合并或删除;特点:①网格的增加或删除是一层一层进行的;②适用于四边形、六面体和三棱柱网格,不适用于三角形、四面体网格;③常适用于边界线线性运动;2)弹性光顺spring smoothing计算区域进行扩张和收缩时,网格和节点像弹簧一样被拉伸和压缩(接近运动的地方压缩严重);特点:①节点数量和链接关系不发生变化;②如果变形幅度过大,网格会高度扭曲;③适用于三角形、四面体网格,也适用于四边形、六面体和三棱柱网格;3)局部重构local remeshing计算区域进行扩张和收缩时,会自动重构扭曲或尺寸过大的网格,以满足要求;①节点的数量和链接关系会发生变化;②适合大变形、大位移;仅使用与三角形网格和四面体网格;③常和spring smoothing联合使用;1.2 边界运动1.2.1 in-cylinder对于类活塞运动,fluent集成了气缸(in-cylinder)模型;dynamic mesh---option---in cylinder;1)常用参数Crank radius:曲柄半径;connecting rod length:连杆半径;(1)通过设置起始、终止角度、曲柄、连杆半径,调整指定边界运动范围;设置crank angle step size,调整边界运动速度;设置起始、终止角度、piston axis方向,调整边界运动的方向;2)指定运动区域Dynamic mesh zones---creat/edit;Zone name---选择gambit中指定的运动边界;Type---rigid body;Motion attributes---选择piston-full(motion udf/profile)---指定活塞轴方向(piston axis);设置h_ideal(meshing option---cell hight);1.2.2 profile对于预先指定的运动,可用profile来描述;1)define---profile---read;后缀名为prof;1.2.3 六自由度模型对于物体运动和流体作用力耦合的计算问题,可以使用六自由度模型;1.2.4 udf1.3 变形的指定1.3.1 deforming1)边界上的节点,默认情况下是静止的(既不弹性光顺也不局部重构);在smoothing时,如果将边界设置为deforming,则边界上的节点会做类似内部节点的运动和生成;2)deforming的变形形式(1)面板中只能定义cylinder和plane类型的变形;如果边界复杂,则需要用DEFINE_GEOM来定义形状;①cylinder:2d:轴不能是z轴,其实成了一个矩形,定义的边界沿着两条直线变形;(2)对于边界沿直线变化,用layering时不需要定义deforming;但是沿曲线变化则需要用deforming的udf(如扇形网格中的圆弧);3)变形原理第二章铺层2.1 参数设置Hight based:铺层形成的网格在同一层内高度相同;Ratio based:同一层网格高度可能不同,但是不同位置处不同层网格高度比相同(移动边界为斜直线或曲线时常常出现);Split factor:相邻网格的高度为h_ideal,当网格高度h > (1 + split factor) * h_ideal 时,一层网格被分成两层网格;Collapse fator:当网格高度h < collapse factor * h_ideal时,该层网格与相邻网格层合并;2.2 运动形式1)静止stationary2)刚体运动rigid body motion3)变形deforming4)用户自定义user-defined2.3 区域优先级1)运动优先级静止区域:高;面区域:中;单元区域:低;2)以活塞向上运动为例活塞边界(wall_down)为面区域,fluid为单元区域;如果指定wall_down为rigid body,则网格在wall_down运动的地方进行铺层;如果指定fluid(或者interior和其他边界)为rigid body,指定wall_up为stationary,则网格在顶部进行铺层;2.4 边界条件的继承性第三章弹性光顺3.1 参数3.1.1 convergence tolerance(收敛容差)1)收敛容差和迭代步数,默认值在一般情况下都比较适用;2)在迭代过程中,节点当前一次迭代位移与第一次迭代位移之比作为收敛控制参数,当其小于设定的收敛容差时,迭代停止;在一定迭代步内不能达到规定的收敛容差,也需要停止迭代,防止死循环;3.1.2 spring constant factor弹性常数主要控制内部节点相对于运动边界的位移变形;范围0-1;默认为1,此时网格在活塞(运动边界)变形明显,远离活塞变形不明显,网格仅局部变化,插值过程少,但是网格拉伸扭曲大时,也会影响计算精度;为0时,运动边界几乎影响到所有边界,网格全局变化,需要全局插值,影响计算精度;3.1.3 laplace node relaxation节点松弛因子:内部节点位移对变形边界(deforming)节点位移的影响程度;范围0-1;默认1;先在dynamic mesh zones---meshing option---smoothing methord---laplace,然后在smoothing设置该参数才会起作用;为1,内部节点充分影响到变形边界节点运动;为0,不影响,相当于没有设置deforming变形;3.2 smoothing用于其它类型网格Smoothing一般用于三角形和四面体网格,但也可以用于其他类型的网格;设置:mesh method---setting---smoothing---parameters---element---all;第四章局部重构4.1 remeshing基本特点1)当网格的扭曲率或者尺寸超过用户规定范围时,网格被重构;2)适用于三角形和四面体网格,网格节点和数量都发生改变;3)remeshing一般和smoothing结合使用;4)适用于大位移大变形,比如转动和平动结合的运动;4.2 remeshing算法4.2.1 remeshing算法流程1)标记网格参数:Minimum length scale,maxmum length scale,maxmum cell skewness;标记出尺寸超出最小最大范围的网格,以及扭曲率超过给定值的网格;Size remeshing interval:每几个时间步进行一次网格重构;Mesh cell info可以查看当前网格的信息;2)标记的网格被删除形成空穴;3)求解器使用一系列重构方法,进行区域填充;4)将物理量在重构的网格上进行插值;4.2.2 算法1)面网格重构:(1)Region face remeshing:区域面网格重构;一般定义最小网格尺度是平均尺度的0.4倍,最大尺度是平均尺度的1.4倍;(2)local face remeshing:局部面网格重构;完全基于网格的扭曲率;不能重构那些同时属于多个变形区域的面网格;设置:首先mesh moethods---setting---选中local face---设置face skewness;然后dynamic mesh zones---meshing option---remeshing method---勾选local;(3)2.5Dface remeshing:2.5维度面网格重构;见例9,虽然是三维网格,但是重构仅仅涉及一对表面,故为2.5d;设置:Remeshing---2.5d---设置参数即可;对于2.5为cell hight没什么用;4.2.3 remeshing参数1)Size remeshing interval(SRI):通过网格尺寸控制网格重构的频率;每一个时间步,fluent都会根据扭曲率进行标记网格,并决定是否重构:如果扭曲率超标,进行重构;如果扭曲率不超标,且达到SRI的间隔,且最小最大尺寸超标,则也进行重构;网格扭曲率对计算的影响大于网格尺寸;SRI较大时,网格重构主要受扭曲率控制,SRI较小时,网格重构受扭曲率和尺寸共同控制;2)maxmum cell skewness二维:0.6-0.7;三维:0.85;4.3 其它4.3.1 时间步长动网格预览时的时间步长的选取:1)基于网格尺寸和运动速度:Deta_t < min_scale / max_velocity;4.3.2 算法技巧动网格的时间步长要足够小,每一次移动网格应该小于最小网格尺寸的一半;光顺方法的结合可以适当增加时间步长;如果移动幅度已知,最好将区域划分,减少计算;4.4 sizing function尺寸函数4.4.1 说明1)功能:尺寸函数用于控制重构过程中网格的分布,使网格变化更加均匀;尺寸函数在运动边界处约束网格,使其维持在一个较小的尺度,在远离运动边界处,逐步将其增大;运用尺寸函数时,fluent自动标记出网格尺度大于当地尺寸函数值的网格;尺寸函数仅用于网格标识,并不在重构过程中控制网格尺寸;2)fluen重构网格步骤(1)标记扭曲率大于maximum cell skewness的网格;(2)如果time = SRI * deta_t,标记出长度尺度小于minmum scale length和大于maxmum scale length的网格;(3)如果打开了sizing function,标记出不满足当地尺寸函数的网格;(4)对标记网格进行重构;(5)如果打开了smoothing(推荐打开),进行光顺;4.4.2 参数1)resolution:分辨率,控制背景网格的密度;variation:变化量,最大允许网格尺度的量度;Rate:变化率,网格成长率的量度;rate=0,意味着线性增长,rate越大,表明边界处网格生长越慢,内部网格生长越快;2)设置fluent会自动生成variation和rate,默认参数就行;4.4.3 技巧1)以等高线显示尺寸函数分布:初始化流场---输入:/solve/set/expert---keep temporary memory be freed?[no]yes(这一个打开,其它全为no)---graphics and animation---countours---adaption---background size function;4.4.4 原理1)[me]fluent将当前网格边长代入尺寸函数进行计算,如果大于标准值,则标记出来;标准值:由标准网格尺寸代入求解;标准尺寸deta_s:二维,与网格等面积的三角形网格边长;三维,等体积的四面体边长;第五章其它5.1 耦合运动6DOF5.1.1 概念用in-cylinder或者profile定义的运动一般是预知的;而6DOF求解器可以计算运动与流场耦合的运动5.2.2 设置1)原理6DOF是将每一个时间步的速度角速度进行积分得到当前位置和角度的;2)设置首先:在dynamic mesh中勾选6DOF---setting设置重力加速度;然后:rigid body---motion attributes---six DOF option勾中on;第十章网格实例10.1 油缸1)设置底边为rigid body:网格在底边生成和销毁;10.2 箱体移动1)设置fluid和箱体为rigid body,左右边界为stationary:网格在左右边界生成和销毁;10.3 子弹移动设置下面流域和子弹体为rigid body;最左右侧边界设为stationary;网格在左右侧产生和销毁;设置子弹体为rigid body:网格在子弹体左右产生和销毁(不利于计算);10.4 扇形网格扇形网格铺层:定义右下边界为rigid body,用profile文件定义其转动角速度;定义内外圆弧为deforming,用udf中define_geom定义其上节点在圆上进行节点位置更新;①udf:sector.c: DEFINE_GEOM();10.5 油缸弹性Smoothing网格光顺;左右边界设置为deforming;下边界设置为rigid body;10.6 箱体振动Smoothing其他类型网格;Box设置为rigid body;10.7 投弹Remeshing + smoothing;设置边界层为regid body(边界层自动包含弹体边界);之前出现负网格,是因为指定单体边界运动,而周围边界层网格为四边形不能remeshing;①如果用6DOF:弹体和fluid_bondary_layer都设置为rigid body,并且在fulid_bondary_layer打开6DOF时,选中passive;②udf:6DOF_missile_drop.c:DEFINE_SDOF_PROPERTIES()10.8 活塞Remeshing---region face + smoothing;底面设置rigid body,圆柱侧面设置为deforming---cylinder;10.9 2.5D设置内外表面为rigid body;用profil文件定义旋转,方向相反(设置一个转动即可);设置上下表面为deforming---plane,上表面的meshing method中勾选remeshing,下表面的不勾选remeshing,因为下表面是由上表面拉伸过去的。
动⽹格流沙版完美整理动⽹格让⽹格动起来(1)—闲谈动⽹格在固体有限元计算中,⽹格运动实⾮什么稀奇事⼉。
⽽且在绝多数固体计算的基本物理量是⽹格的节点位移,所以,固体计算中,⽹格节点运动是对的,没有运动反⽽不正常了。
也可以这么说:正因为计算域内部节点间的相对运动,才导致了内应⼒的产⽣。
流体计算与固体完全不同。
其根源在于它们使⽤的⽹格类型不同。
当前固体有限元计算采⽤的是拉格朗⽇⽹格,⽽流体计算则⼤多数采⽤的欧拉⽹格。
如果说把拉格朗⽇⽹格中的节点点看作是真实世界的物质原⼦的话,那么欧拉⽹格的节点则好⽐是真实世界中的⼀个个传感器,它们总是呆在相同的位置,真实的记录着各⾃位置上的物理量。
正常情况下,欧拉⽹格系统是这样的:计算域和节点保持位置不变,发⽣变化的是物理量,⽹格节点就像⼀个个布置在计算域中的传感器,记录该位置上的物理量。
这其实是由流体⼒学研究⽅法所决定的。
宏观与微观的差异决定了固体⼒学计算采⽤拉格朗⽇⽹格,流体计算采⽤欧拉⽹格。
关于这部分的详细解说,可以参阅任何⼀本计算流体动⼒学书籍。
世界是公平的。
有利必有弊。
朗格朗⽇⽹格适合计算节点位移,然⽽对于过⼤的⽹格变形却难以处理。
欧拉⽹格⽣来可以处理⼤变形(因为节点不动),然⽽对于对于节点运动的处理,则是其直接软肋。
然⽽很不幸的是,现实⽣活中有太多⽹格边界运动的实例。
如汽车发动机中的⽓缸运动、阀门开启与关闭、机翼的运动、飞机投弹等等等等举不胜举。
计算流体动⼒学计算的基本物理量通常为:速度、温度、压⼒、组分。
并不计算⽹格节点位移。
因此要让⽹格产⽣运动,通常给节点施加的物理约束是速度。
CFD中的动⽹格⼤体分为两类:(1)显式规定的⽹格节点速度。
配合瞬态时间,即可很⽅便的得出位移。
当然⼀些求解器(如FLUENT)也⽀持稳态动⽹格,这时候可以直接指定节点位移。
(2)⽹格节点速度是通过求解得到的。
如6DOF模型基本上都属于此类。
⽤户将⼒换算成加速度,然后将其积分成速度。
动网格模型(Dynamic Mesh )一个简单的例子。
水在通道中流动如图所示,有一个入口(ab),一个出口(cd),一个可移动的挡板(fg),挡板有一定的移动范围(ef,gh)。
本例研究简单动网格的应用,将会涉及到:(1) UDF 函数的读入以及要注意的问题 (2) 动网格参数的设定 (3) 动网格动画的设定一、 利用Gambit 建立计算模型1、 创建各控制点2、 由点连成直线3、 由线段创建面——流域4、 设定边界类型ab--速度入口(inlet );cd--压力出流(outlet ); ef —可变形边界(form1);hg —可变形边界(form2); fg —移动边界(valve ) 5、 输出网格文件二、 利用fluent-2d 进行计算1、 读入mesh 文件File → Read → Case …2、 网格检查(注意最大长度和最小长度)3、 长度单位设定(cm ),并显示网格fg4、设置非定常求解器保持Unstready Formulation 的1st-Order Implict注意:目前动态网格计算只能用first-Order5、选择紊流模型6、材料设置为水7、边界条件:设置速度入口条件8、编译程序(1)读入和编辑udf函数Define→ User-Defined→ Functions→ Compiled…(a)在Source Files下,点击 Add…Select File 面板将会打开,选择valve.c(b)在Compiles UDF 面板下,点击Build注意:将会在FLUENT目录下产生一个缺省libudf文件夹。
如果工作目录下已有这个文件夹,请将删掉。
(c)点击Load注意:如果出现“找不到系统文件之类的提示”,则需要在计算机里装一个c语言的程序。
Valve.c的内容如下:#include <stdio.h>#include "udf.h"DEFINE_CG_MOTION(valve,dt,cg_vel,cg_omega,time,dtime){if(time<=0.5)cg_vel[0]= - 0.2;elsecg_vel[0]=0.0;}这是一个UDF文件,即用户自定义函数,可用来确定阀门的运动规律。
FLUENT动网格之弹性光顺上次讲到,光顺方法计算网格节点位移并不是依赖于网格质量。
因此,仅使用光顺方法,只能处理一些小变形的情况。
倘若变形量过大,则会造成网格质量降低,轻则影响收敛,重则出现负网格,导致计算出错。
1、问题描述边长120mm的正方形空腔,内有一个边长30mm的正方形固体。
研究固体以角速度1rad/s旋转时对内部流场的扰动。
1、网格方案由于四边形网格在刚体变形时会发生较大的扭曲,不太适合于使用弹簧光顺方法,因此本例中使用三角形网格。
使用全局尺寸2mm,生成网格如下图所示。
2、指定运动可以使用profile文件或DEFINE_CG_MOTION宏来定义运动。
我们这里利用udf 宏来定义运动。
UDF宏文件如下:#include “udf.h”DEFINE_CG_MOTION(RotationVel , dt , vel , omega , time , dtime){omega[2] = 1;}omega[2]表示z方向的角速度。
本例中以恒定的角速度旋转。
将内部四条边定义为rigid body。
并把赋予运动速度。
3、动网格参数勾选Dynamic Mesh选项,激活动网格。
本例只考虑网格光顺,因此只勾选Smoothing。
(说明:通常动网格应用中不会只使用一种网格更新方法,此处只是考虑光顺,所以才会这样。
正常情况下本例应当使用到网格重构)。
点击setting…按键进行smoothing设置面板。
如右下图所示。
采用弹簧光顺需要设置的参数一共有四个:弹簧常数因子、边界节点松弛、收敛精度及迭代次数。
通常需要设置的参数为弹簧常数因子及边界节点松弛,其它两个参数采用默认即可。
(1)弹簧常数因子:该参数取值范围[0,1],取值越大表示阻尼越大,也表示边界运动对内部网格的影响越小。
(2)边界节点松弛:取值范围[0,1],1表示无松弛,0表示禁止节点位移。
这里先将两参数取中间值0.5。
3、其它设置创建运动区域。
题记:在学习使用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)。
弹簧近似光滑模型在弹簧近似光滑模型中,网格的边被理想化为节点间相互连接的弹簧。
移动前的网格间距相当于边界移动前由弹簧组成的系统处于平衡状态。
在网格边界节点发生位移后,会产生与位移成比例的力,力量的大小根据胡克定律计算。
边界节点位移形成的力虽然破坏了弹簧系统原有的平衡,但是在外力作用下,弹簧系统经过调整将达到新的平衡,也就是说由弹簧连接在一起的节点,将在新的位置上重新获得力的平衡。
从网格划分的角度说,从边界节点的位移出发,采用虎克定律,经过迭代计算,最终可以得到使各节点上的合力等于零的、新的网格节点位置,这就是弹簧光顺法的核心思想。
原则上弹簧光顺模型可以用于任何一种网格体系,但是在非四面体网格区域(二维非三角形),最好在满足下列条件时使用弹簧光顺方法:(1)移动为单方向。
(2)移动方向垂直于边界。
如果两个条件不满足,可能使网格畸变率增大。
另外,在系统缺省设置中,只有四面体网格(三维)和三角形网格(二维)可以使用弹簧光顺法,如果想在其他网格类型中激活该模型,需要在dynamic-mesh-menu 下使用文字命令spring-on-all-shapes?,然后激活该选项即可。
动态层模型对于棱柱型网格区域(六面体和或者楔形),可以应用动态层模型。
动态层模型的中心思想是根据紧邻运动边界网格层高度的变化,添加或者减少动态层,即在边界发生运动时,如果紧邻边界的网格层高度增大到一定程度,就将其划分为两个网格层;如果网格层高度降低到一定程度,就将紧邻边界的两个网格层合并为一个层:如果网格层j扩大,单元高度的变化有一临界值:H_min>(1+alpha_s)*h_0式中h_min为单元的最小高度,h_0为理想单元高度,alpha_s为层的分割因子。
在满足上述条件的情况下,就可以对网格单元进行分割,分割网格层可以用常值高度法或常值比例法。
在使用常值高度法时,单元分割的结果是产生相同高度的网格。
在采用常值比例法时,网格单元分割的结果是产生是比例为alpha_s的网格。
若对第j层进行压缩,压缩极限为:H_min<alpha_c*h_0式中alpha_c为合并因子。
在紧邻动边界的网格层高度满足这个条件时,则将这一层网格与外面一层网格相合并。
动网格模型的应用有如下限制:(1)与运动边界相邻的网格必须为楔形或者六面体(二维四边形)网格。
(2)在滑动网格交界面以外的区域,网格必须被单面网格区域包围。
(3)如果网格周围区域中有双侧壁面区域,则必须首先将壁面和阴影区分割开,再用滑动交界面将二者耦合起来。
(4)如果动态网格附近包含周期性区域,则只能用FLUENT 的串行版求解,但是如果周期性区域被设置为周期性非正则交界面,则可以用FLUENT 的并行版求解。
如果移动边界为内部边界,则边界两侧的网格都将作为动态层参与计算。
如果在壁面上只有一部分是运动边界,其他部分保持静止,则只需在运动边界上应用动网格技术,但是动网格区与静止网格区之间应该用滑动网格交界面进行连接。
局部重划模型在使用非结构网格的区域上一般采用弹簧光顺模型进行动网格划分,但是如果运动边界的位移远远大于网格尺寸,则采用弹簧光顺模型可能导致网格质量下降,甚至出现体积为负值的网格,或因网格畸变过大导致计算不收敛。
为了解决这个问题,FLUENT 在计算过程中将畸变率过大,或尺寸变化过于剧烈的网格集中在一起进行局部网格的重新划分,如果重新划分后的网格可以满足畸变率要求和尺寸要求,则用新的网格代替原来的网格,如果新的网格仍然无法满足要求,则放弃重新划分的结果。
在重新划分局部网格之前,首先要将需要重新划分的网格识别出来。
FLUENT 中识别不合乎要求网格的判据有二个,一个是网格畸变率,一个是网格尺寸,其中网格尺寸又分最大尺寸和最小尺寸。
在计算过程中,如果一个网格的尺寸大于最大尺寸,或者小于最小尺寸,或者网格畸变率大于系统畸变率标准,则这个网格就被标志为需要重新划分的网格。
在遍历所有动网格之后,再开始重新划分的过程。
局部重划模型不仅可以调整体网格,也可以调整动边界上的表面网格。
需要注意的是,局部重划模型仅能用于四面体网格和三角形网格。
在定义了动边界面以后,如果在动边界面附近同时定义了局部重划模型,则动边界上的表面网格必须满足下列条件:(1)需要进行局部调整的表面网格是三角形(三维)或直线(二维)。
(2)将被重新划分的面网格单元必须紧邻动网格节点。
(3)表面网格单元必须处于同一个面上并构成一个循环。
(4)被调整单元不能是对称面(线)或正则周期性边界的一部分。
动网格的实现在FLUENT 中是由系统自动完成的。
如果在计算中设置了动边界,则FLUENT 会根据动边界附近的网格类型,自动选择动网格计算模型。
如果动边界附近采用的是四面体网格(三维)或三角形网格(二维),则FLUENT 会自动选择弹簧光顺模型和局部重划模型对网格进行调整。
如果是棱柱型网格,则会自动选择动态层模型进行网格调整。
在静止网格区域则不进行网格调整。
动网格问题中对于固体运动的描述,是以固体相对于重心的线速度和角速度为基本参数加以定义的。
既可以用型函数定义固体的线速度和角速度,也可以用UDF 来定义这两个参数。
同时需要定义的是固体在初始时刻的位置。
注:这一小节主要讲述了动网格的更新方法,最好能掌握,尤其是各种方法的适用范围,通常来讲,在一个case中,我们使用的更新方法都是根据网格类型以及和要实现的运动来选择的,很多时候都是几种更新方法搭配起来使用的。
总结一下:使用弹簧近似光滑法网格拓扑始终不变,无需插值,保证了计算精度。
但弹簧近似光滑法不适用于大变形情况,当计算区域变形较大时,变形后的网格会产生较大的倾斜变形,从而使网格质量变差,严重影响计算精度。
动态分层法在生成网格方面具有快速的优势,同时它的应用也受到了一些限制。
它要求运动边界附近的网格为六面体或楔形,这对于复杂外形的流场区域是不适合的。
使用局部网格重划法要求网格为三角形(二维)或四面体(三维),这对于适应复杂外形是有好处的,局部网格重划法只会对运动边界附近区域的网格起作用。
3、动网格问题的建立设置动网格问题的步骤如下:(1)在Solver(求解器)面板中选择非定常流(unsteady)计算。
(2)设定边界条件,即设定壁面运动速度。
(3)激活动网格模型,并设定相应参数,菜单操作如下:Define -> Dynamic Mesh -> Parameters...(4)指定移动网格区域的运动参数,菜单操作如下:Define -> Dynamic Mesh -> Zones...(5)保存算例文件和数据文件。
(6)预览动网格设置,菜单操作为:Solve -> Mesh Motion...(7)在计算活塞问题时,设定活塞计算中的事件:Define -> Dynamic Mesh -> Events...并可以通过显示阀与活塞的运动,检查上述设置是否正确:Display -> IC Zone Motion...(8)应用自动保存功能保存计算结果。
File -> Write -> Autosave...在动网格计算中,因为每个计算步中网格信息都会改变,而网格信息是储存在算例文件中的,所以必须同时保存算例文件和数据文件。
(9)如果想建立网格运动的动画过程,可以在Solution Animation(计算结果动画)面板中进行相关设置。
注:在这一步中,需要提醒一下,使用动网格进行正式计算之前,最好养成预览动网格更新的习惯;就是在正式计算前,浏览一下动网格的更新情况,这样可以避免在计算过程中出现动网格更新本身的问题。
在预览更新时,很多人都说会出现负体积的警告,更新不成功,出现这样的问题时,最好先把时间步长改的更小点儿试试,一般来讲,排除UDF本身的原因,出现更新出错的原因都与时间步长有关,这需要结合所使用的更新方法多琢磨。
4、设定动网格参数为了使用动网格模型,需要在dynamic mesh(动网格)面板中激活Dynamic Mesh(动网格)选项。
如果计算的是活塞运动,则同时激活In-Cylinder(活塞)选项。
然后选择动网格模型,并设置相关参数。
1)选择网格更新模型在Mesh Methods(网格划分方法)下面选择Smothing(弹簧光顺模型),Layering(动态层模型)和(或)Remshing(局部重划模型)。
2)设置弹簧光顺参数激活弹簧光顺模型,相关参数设置位于Smoothing(光顺)标签下,可以设置的参数包括Spring Constant Factor(弹簧弹性系数)、Boundary Node Relaxation(边界点松弛因子)、Convergence Tolerance(收敛判据)和Number of Iterations(迭代次数)。