基于OCC+OSG的CAD之GMSH与Netgen网格连贯性测试

     本文是对前几次的博客的一个扩展,本文的重点在于对于多个子实体(有接触性的)划分网格时,经常出现网格在子实体边界不连贯的问题,考虑到之前本人仅仅对这些子实体简单的进行了组装(OCC接口是MakeCompound),好处是相比于BRepAlgoAPI_Fuse速度要快很多,当然,这肯定带来了网格的不连贯问题,于是,本人目前没有想到更好的方式下,仅仅利用BRepAlgoAPI_Fuse对子实体求并集,然后再传给netgen或者gmsh。

具体接口为:

TopoDS_Shape  QFormDoc::makeOneShape(Handle(TopTools_HSequenceOfShape) theShapes)
{
    TopoDS_Shape res;
    Standard_Integer nb = theShapes->Length();
    if (nb == 0)
        return res;
    else if (nb == 1) 
        return theShapes->Value(1);
    else 
    {
        res = theShapes->Value(1);
        for (Standard_Integer i = 2; i <= nb; i++)
        {
            res = BRepAlgoAPI_Fuse(res, theShapes->Value(i));
        }
        ShapeUpgrade_UnifySameDomain unif(res, false, true, false);
        unif.Build();
        return  unif.Shape();
    }
}

将得到的shape直接传给gmsh 或者 netgen即可。效果如下:

图1.stp模型加载

                                                 图2.选中非叶节点(测试组合效果)

                                                         图3.面网格连贯性效果

@ 潇湘散客

                                                             图4.体网格连贯性效果 

潇湘散客

                                                     图5.netgen面网格连贯性效果

                                                         图 6.netgen体网格连贯性效果

 后记:从面网格来看,连贯性是正常的,体网格由于太密集目前不少很好的观看效果,需要进一步替换方法测试。总体来说,多个有接触的实体同时划分网格处理上有了一定的积累,后期将进一步探索。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片