动网格除了前面讲了很多的关于运动指定之外,另一个重要主题则为网格的更新。
在部件运动之后,不可避免的会造成网格形状的变化,如若不对网格加以控制,在持续运动的过程中,则可能造成网格极度变形、歪曲率过大,甚至产生负体积。因此必须对发生变形的网格进行矫正。
Fluent主要提供了三种方式控制网格:

  • Smoothing
  • Layering
  • Remeshing
    本文关注Fluent中的Smoothing方法。

    启用Smoothing方法

    Smoothing方法的启用非常简单,只需要在Dynamic Mesh中激活Smoothing选项即可,如图所示。

    之后可进入Setting...菜单项中进行参数设置。

    Smoothing设置面板

    Smoothing参数比较多,如图所示。

    其包含三种光顺方法:

  • Spring/Laplace/Boudary Layer
  • Diffusion
  • Linearly Elastic Solid
    通常选择:
  • 小幅度的网格运动,使用smoothing方法,此方法计算量较小
  • 大幅度的网格运动,建议使用Diffusion方法,此方法可以提供较好的网格质量
  • 对于存在旋转运动的边界,可以使用Linearly Elastic Solid方法,此方法计算量最大,但能够提供更好的网格质量。

弹簧光顺

弹簧光顺(Spring)是最基础的光顺方法,也是Fluent默认使用的光顺方法。
该方法的基本思路是将网格节点之间的连接线近似为弹簧,通过计算节点之间力平衡方程得到各节点光顺后的位置。
\[
\vec{F_{i}}=\sum_{j}^{n_i}{k_{ij}(\Delta\vec{x}_j-\Delta\vec{x}_i)}
\]

式中\(\Delta \vec{x}_i\)及\(\Delta \vec{x}_j\)分别为节点i与节点j的位移。\(n_i\)为与节点i相连的节点数量;\(k_{ij}\)为节点i与节点j之间的弹簧刚度。

弹簧刚度可定义为:
\[
k_{ij} = \frac{k_{fac}}{\sqrt{|\vec{x}_i-\vec{x}_j|}}
\]
式中\(k_{fac}\)为Spring Constant Factor,是一个需要用户输入的值。

当弹簧力达到平衡时,可计算得到:
\[
\Delta \vec{x}_i^{m+1}=\frac{\sum_{j}^{n_i}{k_{ij}\Delta \vec{x}_j^m}}{\sum_{j}^{n_i}{k_{ij}}}
\]
其中,m为迭代次数。

当节点i的位移计算得到之后,即可更新网格位置:
\[
\vec{x}_{i}^{n+1}=\vec{x}_i^n+\Delta \vec{x}_i^{converged}
\]

需要设置的参数包括:

  • Spring Constant Factor:弹簧常数因子。该参数控制了扩散阻尼,参数取值范围0~1,默认值为1。此参数越小,表示网格之间的阻尼越小,网格运动更容易扩散到更远的节点。当边界运动较为剧烈时,可适当减小此数值。
  • Convergence Tolerance:收敛精度。计算网格节点运动采用的是迭代法,这个迭代容差控制了迭代精度。默认值为0.001,通常不需要修改。
  • Number of Iterations:迭代次数。当迭代次数达到此设定值,停止迭代计算。默认值为20,通常不需要修改。
    这三个参数决定了弹簧光顺过程中网格节点的运动方式。
    Elements方式决定了更新的网格类型:
  • Tri in Tri Zones:只光顺三角形或四面体网格
  • Tri in Mixed Zones:光顺混合区域中的三角形或四面体网格

要点

对于弹簧光顺方法:

  • 光顺方法并不会改变网格拓扑关系。意思是说,不管部件如何运动,网格节点之间的链接关系不会发生改变,网格的数量也不会变化。因此光顺方法只适合于小幅度的运动
  • 可通过调整设置参数Spring Contant Factor来控制网格节点的运动幅度。当边界运动幅度很大时,可适当降低该参数值,从而利用更多的网格节点运动来消减边界运动造成的网格影响。
  • 光顺方法只要适用于三角形或四面体网格,虽然Fluent宣称smoothing方法可以用于所有网格,但其实在其他类型的网格上,smoothing并不会得到好的结果。
    ---
    更多关于CFD内容,可微信扫描下方二维码关注微信公众号。

Fluent动网格【11】:弹簧光顺的更多相关文章

  1. Fluent动网格【13】:网格光顺总结及实例

    光顺(Smoothing)方法是最基本的网格节点更新方法.Fluent提供了三种光顺方法: Spring弹簧光顺 Diffusion扩散光顺 Linearly Elastic Solid光顺 三种方法 ...

  2. Fluent动网格【1】:概述

    最近总有小伙伴向我询问Fluent中的动网格问题,因此决定做一期关于Fluent动网格技术的内容. 动网格技术在流体仿真中很特殊,应用也很广.生活中能够碰到形形色色的包含有部件运动的问题,比如说我现在 ...

  3. Fluent动网格【8】:网格节点运动案例

    Fluent动网格中的DEFINE_GRID_MOTION宏允许用户定义网格节点的运动.本案例演示采用DEFINE_GRID_MOTION宏指定边界节点的运动. 案例动网格效果如图所示. 案例描述 本 ...

  4. Fluent动网格【12】:扩散光顺

    扩散光顺是Fluent提供的另外一种常用的网格光顺方法.其基本原理是通过求解扩散方程得到网格节点的运动位移. 扩散光顺基本计算 扩散光顺通过求解 以下扩散方程来设置网格的节点位置. \[ \nabla ...

  5. Fluent动网格【9】:区域运动

    本文所述的区域运动并非动网格中的运动域,而是指在多参考系(MRF)或滑移网格中所涉及到的区域的运动. 在滑移网格中指定区域运动时,除了能够指定绝对运动外,还能指定某一区域与其他区域间的相对运动,如图所 ...

  6. Fluent动网格【7】:网格节点运动

    在动网格中,对于那些既包含了运动也包含了变形的区域,可以通过UDF来指定区域中每一个节点的位置.这给了用户最大的自由度来指定网格的运动.在其他的动网格技术中(如重叠网格)则很难做到这一点.定义网格节点 ...

  7. Fluent动网格【5】:部件变形

    在动网格中关于部件运动除了指定刚体运动外,有时还需要指定某些边界的变形,这种情况经常会遇到,尤其是与运动部件存在相连接边界的情况下,如下图中边界1运动导致与之相连的边界2和边界3发生变形. Fluen ...

  8. Fluent动网格【3】:DEFINE_CG_MOTION宏

    除了利用Profile进行运动指定之外,Fluent中还可以使用UDF宏来指定部件的运动.其中用于运动指定的宏主要有三个: DEFINE_CG_MOTION DEFINE_GEOM DEFINE_GR ...

  9. Fluent动网格【2】:Profile文件

    动网格中一个重要任务是部件运动方式的指定.在动网格中指定部件的运动,往往将部件的运动方式指定为其加速度.速度或位移与时间的相关关系,本文主要讲述如何在Fluent中利用瞬态Profile文件指定部件的 ...

随机推荐

  1. Nodejs连接mysql的增、删、改、查操作

    一,创建数据库 Source Database : my_news_test SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ...

  2. CC2431 代码分析③-忍辱负重的CC2430

    这节主要分析CC2430的代码,是参考节点的代码,协调器代码我们放到最后分析. 代码分析的原则是事件为导向,我们从CC2431 盲节点code的分析中发现CC2431 向CC2430参考节点发送的信息 ...

  3. BZOJ2702 : 金融风暴

    求出离每个点最近的关键点,然后用二维ST表回答正方形最大值. 将关键点分为上下两部分,以上为例: 从上到下依次考虑每一行,记录每一列往上最近的关键点的距离,那么最优决策具有单调性,可以分治求解. 时间 ...

  4. CSharp遗传算法求解背包问题

    断断续续写了四天,感觉背包问题是最适合了解遗传算法的问题模型 using System; using System.Collections.Generic; using System.Linq; us ...

  5. Java第一章

    第一章 计算机程序:计算机为完成某些功能产生的一系列有序指令集合. Java技术包括:JavaSE(标准版)  JavaEE(企业版) ---JavaME(移动版) 开发Java程序步骤:1.编写 2 ...

  6. 牛客网--C++-2017/8/19

    “\t\v\\0”长度=4:\0:字符串结束符:\\0:\将\0进行了转义,所以\0是两个字符 类的友元函数的访问权限跟类内部的方法相同,但是友元函数不属于本类的对象,一般它是另一个类的成员函数,不能 ...

  7. python部分面试- 测试维度

    2. 软件测试的维度 1. 正确性:功能 正确 2. 健壮性: 意外的输入,不会崩溃 3. 性能: 大压力, 依然能工作 4. 可靠性: 长时间,不会崩溃 5. 易用性: 目标客户,都易用 6. 安全 ...

  8. Delphi 获取当前鼠标下的控件内容

    Delphi 获取当前鼠标下的控件内容 主要函数: GetCursorPos://获取鼠标的位置 WindowFromPoint://获取制定point下的handle GetClassName:// ...

  9. 【记】研究Sharding-JDBC遇到的一个异常(Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get uniformed table structure for `t`. The different meta data of actual tables are as follows)

    一.异常信息 Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get uniformed table str ...

  10. ASP.NET Core WebApi

    ASP.NET Core WebApi 创建项目 使用VS新建项目,选择ASP.NET Core WebAPI即可. 此时Startup的Configure.ConfigureService方法中如下 ...