动网格归纳-流沙版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)在 3 个时间点上定义了值,分别为 1s,2s,3s。其中 1s 时的 x 方向速度值为 10m/s, 2s 时刻对应的速度值为 20m/s,3s 时刻对应的速度值为 30m/s。u,v,w 是表示 x,y,z 三方向的 速度,也可以使用 v_x,v_y 与 v_z,旋转速度使用 omega_x,omega_y,omega_z 变量名。 一个使用 crank angle 替代 time 的例子: ((example transient 3 1) (angle 0 180 360) (temperature 300 500 300) )
对于第一类动网格问题,在 fluent 中通常可以使用 profile 与 UDF 进行网格设置,通过 规定节点或区域的速度、角速度或位移等方式来显式确定网格的运动,通常大部分的动网格 问题都归于此类。而对于第二类问题,通常涉及到力的计算,力在流体中通常是对压力进行 积分而来。将力转换为速度或位移,一般涉及到加速度、转动惯量等物理量的计算。在 fluent 中,可以使用 6DOF 模型进行处理,在 CFX 中,可以使用刚体模型(13.0 以上版本才 有)。 在 FLUENT 中,动网格涉及的内容包括: (1)运动的定义。主要是 PROFILE 文件与 UDF 中的动网格宏 (2)网格更新。
(6)所有的值,包括坐标值,都必须使用 SI 单位制。fluent 读入 profile 文件时不进行单位 转换。
一个实际的例子:
((sampleprofile transient 3 0) (time 1 2 3) (u 10 20 30) ) 解读:
(1)profile 名为 sampleprofile,读入该 profile 文件后,合适的地方出现的变量名为 sampleprofile。
要例所示的问题,一般使用相对运动的原理:刚体不动,运动的是流动介质。然而在 一些特殊的场合(比如火箭发射后的整流罩分离等)则必须使用到动网格。
让网格动起来(4)—动网格 UDF 宏 虽然瞬态 PROFILE 文件可以在一定程度上定义网格 运动,然而其存在着一些缺陷。最主要的一些缺陷存在于以下一些方面: (1)PROFILE 无法精确的定义连续的运动。其使用离散的点值进行插值。如果想获得较为精确的运动定义, 势必要定义很多点。 (2)一些情况下无法使用 profile。比如稳态动网格。 在 FLUENT 中定义网格运动,更多的是采用 UDF 宏。fluent 中与动网格有关的 UDF 宏一共有 5 个,其 中 四 个 用 于 常 规 的 网 格 运 动 定 义 , 一 个 用 于 6DOF 模 型 。 这 些 宏 分 别 为 : DEFINE_CG_MOTION 、 DEFINE_DYNAMIC_ZONE_PROPERTY 、 DEFINE_GEOM 、 DEFINE_GRID_MOTION、DEFINE_SDOF_PROPERTIES 注意:动网格宏只能为编译型 UDF。 1、 DEFINE_CG_MOTION 最常用的运动网格宏。用户可以使用该宏定义每一时间步上的线速度 或 角 速 度 来 指 定 fluent 中 某 一 特 定 区 域 的 运 动 。 DEFINE_CG_MOTION(name,de,vel,omega,time,dtime) 参数说明: name:UDF 的名字。体现 在 fluent 中表现为可选择的函数列表。 Dynamic_Thread *dt:存储了用户所指定的动网格 属性和结构指针。 real vel[]:线速度。vel[0]为 x 方向速度,vel[1]为 y 方向速度,vel[2]为 z 方向速度 real omega[]:角速度。与线速度定义相同。 real time:当前时间。 real dtime: 时间步长。 函数返回值为:void 从函数的参数类型,配合 c 语言的参数调用方式可知, vel,omega 为数值类型,属于传入类型。因此只需在函数体中显式定义 vel 与 omega 即可将
动网格
让网格动起来(1)—闲谈动网格
在固体有限元计算中,网格运动实非什么稀奇事儿。而且在绝多数固体计算的基本物理 量是网格的节点位移,所以,固体计算中,网格节点运动是对的,没有运动反而不正常了。 也可以这么说:正因为计算域内部节点间的相对运动,才导致了内应力的产生。
流体计算与固体完全不同。其根源在于它们使用的网格类型不同。当前固体有限元计 算采用的是拉格朗日网格,而流体计算则大多数采用的欧拉网格。如果说把拉格朗日网格中 的节点点看作是真实世界的物质原子的话,那么欧拉网格的节点则好比是真实世界中的一个 个传感器,它们总是呆在相同的位置,真实的记录着各自位置上的物理量。正常情况下,欧 拉网格系统是这样的:计算域和节点保持位置不变,发生变化的是物理量,网格节点就像一 个个布置在计算域中的传感器,记录该位置上的物理量。这其实是由流体力学研究方法所决 定的。宏观与微观的差异决定了固体力学计算采用拉格朗日网格,流体计算采用欧拉网格。 关于这部分的详细解说,可以参阅任何一本计算流体动力学书籍。
这里要说的 PROFILE 文件,只针对利用于网格运动定义之用的瞬态 profile 文件。其它类型的
profile 文件,可参阅 FLUENT 用户文档,里头有详细的描述。 在 ANSYS FLUENT 中,有两种方式用于指定瞬态网格区域及边界条件: (1)与标准 profile 格式相同的瞬态 profile 文件 (2)表格格式的瞬态 profile 文件。
. . . (field_name_r r1 r2 r3 … rn) ) 注意: (1)profile-name:profile 名,必须全部为小写字母,少于 64 个字符。 (2)transient 为保留关键字,不可随便更改。 (3)n 表示每一个场变量所包含的变量个数。 (4)periodic?用于标识是否使用周期,1 为使用时间周期,0 表示不使用时间周期。 (5)通常 field_name_1 为 time,后面的变量值为升序排列。
(5)激活动网格选项 如下图所示。勾选 smoothing、layering、remeshing 选项。
Байду номын сангаас
各选项的参数设置分别如下图所示。
(6)定义运动区域 定义中间刚体壁面为 rigid body,选择运动 profile 为读入的 profile 文件 movevelocity,设置
meshing options 中的 cell height 为 1mm。该参数用于网格的分裂与合并。当网格高度大于 1.4 时进行分裂,小于 0.2 时合并。 预览 zone 的运动与网格运动。注意在预览网格运动之前保存 case 文件。 (7)定义其它选项
(3)选用标准 k-e 湍流模型,材料使用水。 设定 cell zone conditio 将默认域介质设定为 water。由于本例使用全封闭计算域,所有边界
类型为 wall,所以 boundary condition 采用默认设置。 (4)读入 profile 文件 利用 file> profile…菜单读入已准备好的 profile 文件。
由于三角形网格非常适合于 2D 动网格,因此本例使用三角形网格。若要使用四边形网格, 则需要进行滑移面处理。详细的说明将留待以后网格更新的时候进行。同样的,也不进行边 界层处理。
简化问题描述,设定四周为 wall 壁面,中间区域为 rigid wall,在动网格中进行设定。全局 网格尺寸为 2mm,运动边界网格尺寸 1mm,网格单元总数 19671,节点总数 9832。 (2)启动 fluent,读入 msh 文件,选择 2D 求解器,勾选双精度选项。检查单位,确保使用 的单位为 mm。选用瞬态求解器。general 中的其它选项采取默认。如下图所示。
2、表格瞬态 profile 文件
表格格式与标准格式有很大的差异。表格格式如下: profile_name n_field n_data peridoic? field_1 field_2 field_3 … field_4 v-1-1 v-2-1 … … … v-n_field_1 v-1-2 v-2-2 … … … v-n_field-2 . . . v-1-n_data v-2-n_data … … … v-n_field-n_data 说明:与标准格式类似,profile_name 为 profile 名,体现在 fluent 中为运动变量名。格式要 求与标准格式一致:小写,少于 64 个字符。
对于这两种方式,网格域及边界条件的变化均只与时间有关。然而如果使用了 in-cylinder 模型,则用户可以使用 crank 角代替时间变量。
1、标准瞬态 profile 文件 一个标准瞬态 profile 文件格式如下: ((profile-name transient n periodic?) (field_name_1 a1 a2 a3 … an) (field_name_2 b1 b2 b3 … bn)
如图所示,1 为运动刚体,2 为计算域。由于不考虑也没办法考虑刚体的变形,因此在构建 面域的时候,将 1 中的部分通过布尔运算去除。计算域总长度为 300mm,其中固体运动最 大位移为 300-40-30-6mm=224mm。为了防止固体边界与计算域边界发生重叠,我们使运动 最大距离为 200mm。运动速度 v=0.4t,这样可能计算运动完 200mm 需要的时间为 1s。 采取 5 个时间数据点分别为:0,0.25,0.5,0.75,1s,相对应的速度为:0,0.1,0.2,0.3, 0.4 m/s。 profile 文件如下: ((moveV elocity transient 5 0) (time 0 0.25 0.5 0.75 1) (v_x 0 0.1 0.2 0.3 0.4) ) (1)将计算域离散为网格。
FLUENT 中关于网格更新方法有三种:网格光顺、动态层、网格重构。 需要详细了解 这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范 围。
动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。 在避免负网格的同时,努力提高运动更新后的网格质量。
让网格动起来(2)—PROFILE 文件
如动画、节点物理量监测等。 (8)总结
对于类似本例的纯外流场问题,通过都不利用动网格进行计算。主要原因在于: (1)对于类似本例的纯外流场问题,通过都不利用动网格进行计算。主要原因在于:网格 发生运动后的质量不好,通常都会低于原始网格质量。 (2)动网格计算开销比较大。因为每次网格运动时要计算网格节点的位置。
世界是公平的。有利必有弊。朗格朗日网格适合计算节点位移,然而对于过大的网格 变形却难以处理。欧拉网格生来可以处理大变形(因为节点不动),然而对于对于节点运动 的处理,则是其直接软肋。然而很不幸的是,现实生活中有太多网格边界运动的实例。如汽 车发动机中的气缸运动、阀门开启与关闭、机翼的运动、飞机投弹等等等等举不胜举。 计算流体动力学计算的基本物理量通常为:速度、温度、压力、组分。并不计算网格节点 位移。因此要让网格产生运动,通常给节点施加的物理约束是速度。CFD 中的动网格大体分 为两类:(1)显式规定的网格节点速度。配合瞬态时间,即可很方便的得出位移。当然一些 求解器(如 FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。(2)网格节点速 度是通过求解得到的。如 6DOF 模型基本上都属于此类。用户将力换算成加速度,然后将其 积分成速度。
field_1 通常为 time,表示时间。后方接着的是各个变量名。 v-1-1 表示 field_1 的第一个值,依此类推,v-1-2 表示第二个值。按升序排列。 peridoic?表示是否采用时间周期,1 表示采用,0 表示不采用。 一个例子: sampleprofile 2 3 0 time u 1 10 2 20 3 30 解读: 第一行:sampleprofile 表示 profile 名,fluent 读入此 profile 后,将会在使用 profile 的地方 显示该 profile 名。2 表示两个场变量(time 与 u)或者说是表的列数,3 表示一共有 3 个数据 点或者说表有三行。0 表示不使用周期。 第二行:定义场变量。一共是两个场变量:time 与 u,通常 time 放在第一个。 第三行到最后一行:第一个值表示时间值,第二个值表示 u 的值。定义了 1s 时的 x 方向 速度值为 10m/s,2s 时刻对应的速度值为 20m/s,3s 时刻对应的速度值为 30m/s。 若使用周期,则必须定义一个周期内的时间物理量的变化。简单来说,就是最后一行的物 理量的值与第一行物理量的值相同。如下一个例子: periodprofile 2 4 1 time u 0 10 1 20 2 30 3 10 也可以使用 crank angle 代替时间进行变量定义: exaple 2 3 1 angle temperature 0 300 180 500 360 300 请注意:
使用列表形式的 profile,只能使用 TUI 命令读入到 fluent 中: file > read-transient-table
让网格动起来(3)—实例 1:Profile 定义运动 本次实例采用的场景来自于流体中高速飞行的物体。如子弹、火箭、导弹等。这里只是为了 说明 profile 在动网格运动定义中的应用,因此为了计算方便不考虑高速问题。问题描述如 下图所示:
相关文档
最新文档