zoukankan      html  css  js  c++  java
  • SnappyHexMesh(之九)边界层

    转载:知乎大神 中国空气动力研究与发展中心 力学博士 刘云楚 的文章

    5.6边界层(addLayersControls)

    snappyHexMesh的网格生成策略是自上而下生成网格,即先生成体网格,再拟合表面上面网格。边界层网格生成时,软件采用中轴位移法收缩现有体网格。即先沿表面法向向网格划分区域投影指定厚度,再根据投影厚度值计算网格松弛系数收缩现有体网格,收缩后形成的空腔作为边界层网格的划分区域。具体边界层划分原理步骤如下所示:

    在划分边界层时,用户需注意在全局参数设置中激活边界层划分功能,即将addLayers值设置为true。边界层配置参数在addLayersControls子字典中设置,其参数类型可分为基本参数与高级控制参数。

    边界层命令设置示例如下:

    addLayerControls
    {
        //基本参数输入
        relativeSizes true;
        expansionRatio 1.2;
        finalLayerThickness 0.3;
        minThickness 0.1;
        nGrow 0;
        layers
        {
            leftHalf //允许用户对各个面指定不同边界层设置
            {
                nSurfaceLayers 3;
            }
            "(road|motorBike_.*)" //输入面名称时支持正则表达式
            {
                nSurfaceLayers 3;
                expansionRatio 1.2;
                finalLayerThickness 0.3;
                minThickness 0.1;
            }
        }
        //高级控制参数输入
        featureAngle 180;
        slipFeatureAngle 75;
        nRelaxIter 5;
        ...
    }

    5.6.1基本参数设置

    snappyHexMesh边界层生成基本参数包含:相对值(relativeSizes)、边界层数(nSurfaceLayers)、膨胀比(expansionRatio)、最后一层厚度(finalLayerThickness)、第一层厚度(firstLayerThickness)边界层总厚度(thickness)、边界层最小总厚度(minThickness)以及nGrow。

    用户可通过expansionRatio、finalLayerThickness、firstLayerThickness、thickness四项参数,选择其中两项指定边界层厚度。如果同时指定多个参数,则软件只会使用最后两个参数。因为snappyHexMesh划分边界层时是先挤出一定边界层厚度区域,再插入边界层。为提高边界层网格生成质量,边界层厚度控制参数选择finalLayerThickness优于firstLayerThickness,相对临近单元尺寸比值优于绝对值,即relativeSizes值true优于false。

    基本参数详细解析如下。

    relativeSizes

    边界层基础参数中finalLayerThickness、firstLayerThickness、thickness与minThickness的参数值有两种定义方法。1、采用相对临近单元尺寸比值,2、直接由绝对值(单位m)定义。用户选用哪种定义方法通过设置relativeSizes确定。

    命令示例如下所示:

    addLayersControls
    {
        relativeSizes true;
    }

    参数值为true:边界层厚度参数值为相对于邻近曲面上的体网格单元大小的比值。

    参数值为false:边界层厚度参数值直接由绝对单位的值(单位.米)定义。

    如下例所示:finalLayerThickness参数值分别采用绝对值参数和相对值参数。当设置绝对值时,边界层最后一层网格尺寸与邻近体网格尺寸无关;当设置为相对值参数时,边界层最后一层网格尺寸值与邻近体网格单元大小成比例关系。

    边界层膨胀比(expansionRatio)

    两个相邻层的厚度比,该值越大,各层间的高度差越大。调整膨胀比参数,不同膨胀比下边界层网格划分结果如下图所示:

     

    边界层最后一层厚度(finalLayerThickness)

    确保边界层最后一层网格不大于该值。调整最后一层网格的最大厚度,在不同厚度下边界层网格的划分结果如下如所示:

    finalLayerThickness=0.7 finalLayerThickness=1

    图3. 不同边界层最后一层高度对比图

    边界层第一层的厚度(firstLayerThickness)

    指定距离曲面最近的边界层的高度,确保边界层第一层网格不大于该值。调整第一层网格的最大厚度,在不同厚度下边界层网格的划分结果如下如所示:

    注:此处厚度值为体网格相对值

    边界层总厚度(thickness)

    这指定了所有边界层的最大厚度。设置较大的边界层总厚度值会导致体网格收缩位移相应增大,体网格变形量增加将导致网格质量降低。当网格质量小于用户设置网格质量控制参数时,系统将取消此处边界层网格划分。

    调整边界层总厚度,在不同厚度下边界层网格的划分结果如下如所示:

    注:边界层总厚度值不宜大于五倍相邻体网格尺寸值。

    最小总层厚度(minThickness)

    这指定了所有边界层的总体最小厚度。若边界层挤出区域厚度小于该值,则该区域将不会生成边界层。

    注:此图参数采用相对值,边界层总厚度控制到1,故当minThickness设置为2时边界层不会生成

    最大取消边界层单元数(nGrow)

    该参数指定未设置边界层的相邻面相交处边界层的过渡层数。这有助于将边界层过渡到特征边附近。

    在边界层生成时,体网格需先沿表面法向向网格划分区域收缩指定厚度,有些特征边上存在未移动的节点,则包含该节点的表面单元也不会移动。通过设置nGrow值,指定此单元附近多少个单元不会移动,以保证该特征边附近网格贴体性及质量。

    指定面设置边界层基本参数

    snappyHexMesh中允许用户对各个表面设置不同的边界层基本参数。如果未指定,则应用全局基本参数。边界层的几何面名称指定于面加密不同,其名称包含几何体与面信息,例如:用户需对几何体box中的Face1面划分边界层,则边界层指定的面名称应该为box_Face1,而不是Face1。并且用户在指定面名称时支持正则表达式。

    指定面边界层设置命令如下:

    layers
    {
        box_Face1
        {
            nSurfaceLayers 3;
        }
        "(box_Face1|box_side.*)"
        {
            nSurfaceLayers      3;
            expansionRatio      1.2;
            finalLayerThickness 0.3;
            minThickness        0.1;
        }
    }

    边界层层数(nSurfaceLayers)

    nSurfaceLayers该参数确定边界层层数,需在指定面设置边界层基本参数中输入,为强制性参数。

    网格划分结果如下图所示:

    5.6.2高级控制参数设置

    表面网格最大纵横比(maxFaceThicknessRatio)

    该参数指定了表面网格纵横比的最大允许值。当要在高度扭曲的单元上(特别是在角落)生成边界层时,纵横比高于此值的单元上边界层停止生成,以保证边界层网格质量。

    建议值为0.5。

    边界层最大面夹角(featureAngle)[°]

    两个相邻面边界层网格划分时,软件可根据featureAngle值确定两个面相交边处体网格是否收缩,以确定边界层划分区域。当两个曲面之间的法向夹角(如下图所示θ角)小于参数featureAngle值时,允许两个曲面的相交边处体网格向域内收缩,形成边界层划分区域。用户可根据几何特征设置合适的featureAngle值,以确保边界层的生成范围。

    下图显示了特征角为60度和180度时边界层生成的差异。在面夹角为90度区域,若featureAngle值小于面夹角时,则取消夹角处边界层划分。

    图10. 不同最大面夹角参数设置对比图

    注:为确保角落边缘处边界层生长,featureAngle可设置为180或更高值。但在大角度或较扭曲区域边界层质量会急剧下降,受网格质量控制影响,此处边界层也会无法生成。

    边界层滑移角度(slipFeatureAngle)[°]

    在早期版本snappyHexMesh添加边界层时,指定的面边缘的顶点已经固定。当边界层生成到面边缘处时,会在此处收缩。现若用户想保留在面边缘处的边界层效果,可以指定slipFeatureAngle参数,使边界层面边缘处顶点延边界面滑动,以保证边界层在边缘处的划分空间。例如:当需要划分边界层的面与其相邻面之间的角度大于slipFeatureAngle值时,则保留边界处边界层网格。否则,边界处边界层网格将收缩(如下图所示)。

    注:建议使用70-80之间的最佳值来限制层的滑动,默认值为featureAngle的一半。

    边界层终止面的缓冲单元数(nBufferCellsNoExtrude)

    为边界层终止端创建缓冲收缩区,即逐渐降低边界层数。设置值小于0,则表示在终止端立即停止边界层。

    边界层厚度平滑迭代次数(nSmoothThickness)

    边界层网格生成前,软件需要根据投影厚度值收缩现有体网格,用户可通过nSmoothThickness值设置投影厚度值的迭代次数。软件通过迭代投影厚度松弛系数值(1-0)使体网格质量达到质量控制要求。

    边界层曲面法线平滑迭代次数(nSmoothSurfaceNormals)

    边界层网格生成前,软件需要根据曲面法线方向收缩现有体网格,用户可通过nSmoothSurfaceNormals指定曲面法线平滑迭代次数。该值越高,边界层网格间平滑性越好,但网格划分时间越长。建议值为1。

    拾取中间轴点的角度(minMedianAxisAngle)

    这指定用于拾取中间轴点的角度。建议值为90度。最新版本90度对应17x版本前的130度。

    层厚度与中间轴长度的最大比率(maxThicknessToMedialRatio)

    这指定了边界层厚度与中间轴长度的最大比率。当比率大于指定值时,层生长减少。建议值为0.3

    体网格收缩迭代次数(nRelaxIter)

    单步投影厚度值的迭代中,系统需根据投影厚度值计算体网格收缩松弛系数。用户可设置nRelaxIter参数指定该松弛系数迭代次数,该值越大越有利于提高体网格网格质量。建议值为5

    体网格平滑迭代次数(nSmoothNormals)

    体网格收缩时,用户可通过nSmoothNormals指定体网格间移动方向的迭代次数。该值越高,体网格间平滑性越好,但网格划分时间越长。建议值为3。

    边界层添加的最大总迭代次数(nLayerIter)

    这指定了整体边界层添加算法迭代次数。如果达到此迭代次数,边界层网格划分将立即停止,并保留最后一次迭代生成的边界层。建议值为50-60。

    宽松质量控制标准的起始迭代次数(nRelaxedIter)

    这指定了开始使用宽松网格质量控制的起始迭代次数。软件在划分边界层网格时会优先使用meshQualityControls中基础质量控制参数,检测网格是否满足要求。若边界层添加算法迭代次数达到用户设置nRelaxedIter参数值后,网格依然不能达到质量控制要求,则在此后的迭代中软件将采用用户设置的宽松质量控制标准值。参数建议值为20。

  • 相关阅读:
    poj 3468 A Simple Problem with Integers (线段树区间更新求和lazy思想)
    hdu 1166 敌兵布阵(线段树区间求和)
    队列和栈
    完数的输出
    数据类型
    ASP.NET 图片上传工具类 upload image简单好用功能齐全
    ASP.NET 文件上传类 简单好用
    将form表单元素转为实体对象 或集合 -ASP.NET C#
    .NET框架面向对象分层的个人想理
    .NET VS2012 将代码同步上传到 oschina.net 和 github
  • 原文地址:https://www.cnblogs.com/Xiwang-Sun/p/15370778.html
Copyright © 2011-2022 走看看