zoukankan      html  css  js  c++  java
  • SnappyHexMesh(之七)创建二维几何体

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

    5.5.3可创建二维几何体

    二维几何类型如下表所示:

    圆面片(searchableDisk)

    基于原点、法线方向和半径值定义厚度为零的圆面。指定体加密时,加密方法只能使用distance模式。

    命令用法如下:

    disk
    {
        type   searchableDisk;
        origin (2 2 2);
        normal (0 1 0);
        radius 1;
    
    }

    通过体加密后效果如下所示:

    图1. 圆面体加密效果图

    有界平面(searchablePlate)

    用户可以指定与坐标系对齐的有限平面。通过定义最小对角线坐标点origin与xyz方向跨度长度值span。有界平面为二维几何,设置span参数时用户必须在两个方向上指定跨度,第三个方向必须为零。指定体加密时,加密方法只能使用distance模式。

    命令用法如下:

    plane
    {
        type   searchablePlate;
        origin (2 2 2);
        span   (2 2 0);
    }

    通过体加密后效果如下所示:

     

    图2. 有界平面体加密效果图

    5.5.4高级几何处理

    平面切割(searchablePlane)

    用户可通过定义无界平面切除几何体部分区域,并保留平面法线方向上的网格。可以根据以下3种方法创建平面:1、平面由点和法线向量定义。2、平面由3点定义,平面法向满足右手法则。3、采用代数平面方程:ax+by+cz+d=0定义。指定体加密时,加密方法只能使用distance模式。

    命令用法如下:

    例一 :由点和法线向量定义的平面

    plane
    {
        type          searchablePlane;
        planeType     pointAndNormal;
        pointAndNormalDict
        {
            basePoint (1 1 1);
            normal    (0 1 0);
        }
    }

    例二:由平面上的3个点定义的平面

    plane
    {
        type searchablePlane;
        planeType embeddedPoints;
        embeddedPointsDict
        {
            point1 (1 1 1);
            point2 (0 1 0);
            point3 (0 0 1)
        }
    }

    例三:由平面方程定义的平面

    plane
    {
        type      searchablePlane;
        planeType planeEquation;
        planeEquationDict
        {
            a 0;
            b 0;
            c 1;
            d 2;
        }
    }

    通过体加密后效果如下所示:

    图3. 平面切割效果图

    缩放、转换与合并几何体(searchableSurfaceCollection)

    用户创建或导入三维几何体以后,snappyHexMesh允许用户对已有几何体进行缩放,并支持本地坐标系中对几何体平移与旋转操作。用户通过定义scale(Xa Yb Zc)参数可以对该几何体进行xyz方向缩放。通过改变本地坐标系原点坐标origin实现平移操作,通过向量(e1、e2)、(e2、e3)或(e3、e1)的组合定义旋转角度。另外也支持用户通过命令mergeSubRegions对多个几何体进行布尔求和。

    命令用法如下:

    用户创建或导入三维几何:

    Cylinder
    {
        type   triSurfaceMesh;
        file   "Cylinder.stl";
    }

    图4. 导入圆柱体

    几何操作过程为:对圆柱体进行Y方向缩放2倍,再复制缩放后的圆柱体到y轴方向0.08m处,并合并两个新几何体。

    具体命令如下:

    twoCylinders
    {
        type            searchableSurfaceCollection;
        mergeSubRegions true; //是否合并两个几何体
        Cylinder_cope1
        {
            surface     Cylinder;
            scale       (1 2 1);
            transform
            {
                coordinateSystem
                {
                    type     cartesian;
                    origin   (0 0 0);
                    coordinateRotation
                    {
                        type axesRotation;
                        e1   (1 0 0);
                        e3   (0 0 1);
                    }
                }
            }
        }
        Cylinder_cope2
        {
            surface     Cylinder;
            scale       (1 2 1);
            transform
            {
                coordinateSystem
                {
                    type     cartesian;
                    origin   (0 0.08 0);
                    coordinateRotation
                    {
                        type axesRotation;
                        e1   (1 0 0);
                        e3   (0 0 1);
                    }
                }
            }
        }
    }

    新生成的几何体如下图所示:

    图5. 变形合并后圆柱体

    缝隙修复searchableSurfaceWithGaps

    修复原理为在缝隙处用垂直于原面向量的两个小向量(大小根据gap参数指定)移动测试向量。用+和-来测试此向量,仅当两个都记录为匹配时,稍微扩展测试向量(使用SMALL)以解决几何边界数值误差。软件使用多个稍微偏移的基础表面来确保网格不会穿过间隙。

    用户必须先在在几何字典(geometry)中定义几何三角面元,软件在此基础上识别(并封闭)缝隙,修复缝隙尺寸通过gap指定。

    命令用法如下:

    sphere.stl
    {
        type     triSurfaceMesh;
    }
    sphere
    {
        type     searchableSurfaceWithGaps;
        surface  sphere.stl;
        gap      1e-3;
    }
  • 相关阅读:
    Qt QChart 中 QValueAxis 和 QCategoryAxis 区别
    Qt QChart 绘制面积图 QAreaSeries
    Qt QChart 设置线条样式 虚线
    Qt 读取csv文件并且绘制折线图
    Qt comboBox控件的三种基本用法
    Qt QStringList 的学习笔记
    OpenYurt 联手 eKuiper,解决 IoT 场景下边缘流数据处理难题
    如何避免 Go 命令行执行产生“孤儿”进程?
    阿里巴巴代码平台架构的演进之路
    云原生演进趋势下传统数据库升级实践
  • 原文地址:https://www.cnblogs.com/Xiwang-Sun/p/15370725.html
Copyright © 2011-2022 走看看