您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 动网格流沙版完美整理.
..动网格让网格动起来(1)—闲谈动网格在固体有限元计算中,网格运动实非什么稀奇事儿。而且在绝多数固体计算的基本物理量是网格的节点位移,所以,固体计算中,网格节点运动是对的,没有运动反而不正常了。也可以这么说:正因为计算域内部节点间的相对运动,才导致了内应力的产生。流体计算与固体完全不同。其根源在于它们使用的网格类型不同。当前固体有限元计算采用的是拉格朗日网格,而流体计算则大多数采用的欧拉网格。如果说把拉格朗日网格中的节点点看作是真实世界的物质原子的话,那么欧拉网格的节点则好比是真实世界中的一个个传感器,它们总是呆在相同的位置,真实的记录着各自位置上的物理量。正常情况下,欧拉网格系统是这样的:计算域和节点保持位置不变,发生变化的是物理量,网格节点就像一个个布置在计算域中的传感器,记录该位置上的物理量。这其实是由流体力学研究方法所决定的。宏观与微观的差异决定了固体力学计算采用拉格朗日网格,流体计算采用欧拉网格。关于这部分的详细解说,可以参阅任何一本计算流体动力学书籍。世界是公平的。有利必有弊。朗格朗日网格适合计算节点位移,然而对于过大的网格变形却难以处理。欧拉网格生来可以处理大变形(因为节点不动),然而对于对于节点运动的处理,则是其直接软肋。然而很不幸的是,现实生活中有太多网格边界运动的实例。如汽车发动机中的气缸运动、阀门开启与关闭、机翼的运动、飞机投弹等等等等举不胜举。计算流体动力学计算的基本物理量通常为:速度、温度、压力、组分。并不计算网格节点位移。因此要让网格产生运动,通常给节点施加的物理约束是速度。CFD中的动网格大体分为两类:(1)显式规定的网格节点速度。配合瞬态时间,即可很方便的得出位移。当然一些求解器(如FLUENT)也支持稳态动网格,这时候可以直接指定节点位移。(2)网格节点速度是通过求解得到的。如6DOF模型基本上都属于此类。用户将力换算成加速度,然后将其积分成速度。对于第一类动网格问题,在fluent中通常可以使用profile与UDF进行网格设置,通过规定节点或区域的速度、角速度或位移等方式来显式确定网格的运动,通常大部分的动网格问题都归于此类。而对于第二类问题,通常涉及到力的计算,力在流体中通常是对压力进行积分而来。将力转换为速度或位移,一般涉及到加速度、转动惯量等物理量的计算。在fluent中,可以使用6DOF模型进行处理,在CFX中,可以使用刚体模型(13.0以上版本才有)。在FLUENT中,动网格涉及的内容包括:(1)运动的定义。主要是PROFILE文件与UDF中的动网格宏。(2)网格更新。FLUENT中关于网格更新方法有三种:网格光顺、动态层、网格重构。需要详细了解这些网格更新方法的运作机理,每个参数所代表的具体含义及设置方法,每种方法的适用范围。动网格的最在挑战来自于网格更新后的质量,避免负体积是动网格调试的主要目标。在避免负网格的同时,努力提高运动更新后的网格质量。..让网格动起来(2)—PROFILE文件这里要说的PROFILE文件,只针对利用于网格运动定义之用的瞬态profile文件。其它类型的profile文件,可参阅FLUENT用户文档,里头有详细的描述。在ANSYSFLUENT中,有两种方式用于指定瞬态网格区域及边界条件:(1)与标准profile格式相同的瞬态profile文件(2)表格格式的瞬态profile文件。对于这两种方式,网格域及边界条件的变化均只与时间有关。然而如果使用了in-cylinder模型,则用户可以使用crank角代替时间变量。1、标准瞬态profile文件一个标准瞬态profile文件格式如下:((profile-nametransientnperiodic?)(field_name_1a1a2a3…an)(field_name_2b1b2b3…bn)...(field_name_rr1r2r3…rn))注意:(1)profile-name:profile名,必须全部为小写字母,少于64个字符。(2)transient为保留关键字,不可随便更改。(3)n表示每一个场变量所包含的变量个数。(4)periodic?用于标识是否使用周期,1为使用时间周期,0表示不使用时间周期。(5)通常field_name_1为time,后面的变量值为升序排列。(6)所有的值,包括坐标值,都必须使用SI单位制。fluent读入profile文件时不进行单位转换。一个实际的例子:((sampleprofiletransient30)(time123)(u102030))解读:(1)profile名为sampleprofile,读入该profile文件后,合适的地方出现的变量名为sampleprofile。(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变量名。一个使用crankangle替代time的例子:((exampletransient31)(angle0180360)(temperature300500300))..2、表格瞬态profile文件表格格式与标准格式有很大的差异。表格格式如下:profile_namen_fieldn_dataperidoic?field_1field_2field_3…field_4v-1-1v-2-1………v-n_field_1v-1-2v-2-2………v-n_field-2...v-1-n_datav-2-n_data………v-n_field-n_data说明:与标准格式类似,profile_name为profile名,体现在fluent中为运动变量名。格式要求与标准格式一致:小写,少于64个字符。field_1通常为time,表示时间。后方接着的是各个变量名。v-1-1表示field_1的第一个值,依此类推,v-1-2表示第二个值。按升序排列。peridoic?表示是否采用时间周期,1表示采用,0表示不采用。一个例子:sampleprofile230timeu110220330解读:第一行: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。若使用周期,则必须定义一个周期内的时间物理量的变化。简单来说,就是最后一行的物理量的值与第一行物理量的值相同。如下一个例子:periodprofile241timeu010120230310也可以使用crankangle代替时间进行变量定义:exaple231angletemperature0300180500360300请注意:使用列表形式的profile,只能使用TUI命令读入到fluent中:..fileread-transient-table让网格动起来(3)—实例1:Profile定义运动本次实例采用的场景来自于流体中高速飞行的物体。如子弹、火箭、导弹等。这里只是为了说明profile在动网格运动定义中的应用,因此为了计算方便不考虑高速问题。问题描述如下图所示:如图所示,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.4m/s。profile文件如下:((moveVelocitytransient50)(time00.250.50.751)(v_x00.10.20.30.4))(1)将计算域离散为网格。由于三角形网格非常适合于2D动网格,因此本例使用三角形网格。若要使用四边形网格,则需要进行滑移面处理。详细的说明将留待以后网格更新的时候进行。同样的,也不进行边界层处理。简化问题描述,设定四周为wall壁面,中间区域为rigidwall,在动网格中进行设定。全局网格尺寸为2mm,运动边界网格尺寸1mm,网格单元总数19671,节点总数9832。(2)启动fluent,读入msh文件选择2D求解器,勾选双精度选项。检查单位,确保使用的单位为mm。选用瞬态求解器。general中的其它选项采取默认。如下图所示。..(3)选用标准k-e湍流模型,材料使用水。设定cellzonecondition将默认域介质设定为water。由于本例使用全封闭计算域,所有边界类型为wall,所以boundarycondition采用默认设置。(4)读入profile文件利用fileprofile…菜单读入已准备好的profile文件。(5)激活动网格选项如下图所示。勾选smoothing、layering、remeshing选项。各选项的参数设置分别如下图所示。(6)定义运动区域定义中间刚体壁面为rigidbody,选择运动profile为读入的profile文件movevelocity,设置meshingoptions中的cellheight为1mm。该参数用于网格的分裂与合并。当网格高度大于1.4时进行分裂,小于0.2时合并。预览zone的运动与网格运动。注意在预览网格运动之前保存case文件。(7)定义其它选项如动画、节点物理量监测等。(8)总结对于类似本例的纯外流场问题,通过都不利用动网格进行计算。主要原因在于:(1)..网格发生运动后的质量不好,通常都会低于原始网格质量。(2)动网格计算开销比较大。因为每次网格运动时要计算网格节点的位置。要例所示的问题,一般使用相对运动的原理:刚体不动,运动的是流动介质。然而在一些特殊的场合(比如火箭发射后的整流罩分离等)则必须使用到动网格。让网格动起来(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:存储了用户所指定的动网格属性和结构指针。realvel[]:线速度。vel[0]为x方向速度,vel[1]为y方向速度,vel[2]为z方向速度realomega[]:角速度。与线速度定义相同。rea
本文标题:动网格流沙版完美整理.
链接地址:https://www.777doc.com/doc-4512141 .html