本节将演示如何使用 solid map 功能对一个复杂的几何实体进行网格剖分。剖分的思路是:首先对该实体进行适当的切割,以使其各个部分均处于 mappable 的状态;然后分别对各个子块进行 solid map 剖分。事实上,针对同一个几何实体,可能有多种分块方案。究竟哪种方案能获得更高质量的网格,是需要我们通过大量的练习,积累经验得到的。因此针对同一模型,建议用户尝试多种切分方案,并比较其结果的异同之处,从而更好的掌握 solid map 技术。

Step01:读入模型

(1) 读入模型 Exercise_4a.prt。

该模型为一 Pro/E 格式的三维数模。

Step02:模型简化

在模型中,一些无关紧要的较小圆倒角特征往往会给我们的网格剖分工作带来困难。多数情况下,这些圆倒角特征是在零件在制造过程中,受到加工工艺的限制添加的,在 FEA 分析中我们可以对此类特征进行适当简化。

(1) 使用 Defeature(模型简化)功能,去除所有的圆倒角特征。

图 4-12 使用模型简化功能去除几何特征

在这个模型中,将圆倒角曲率半径搜索容差控制在 0.5 到 5.5 或者更大,可以有效地帮助我们找到所有的圆倒角特征。需要注意的是,通过搜索功能找到了所有的圆倒角特征,将它们移除后将出现较为尖锐的几何特征。进而在后续的分析中,引起一定的应力集中。因此,在进行结果后处理和分析评价时,需要考虑由此引入的误差。

Step03:初次切分。

在进行实体切割时,并没有明确的流程可以告诉我们从哪里开始。因此,第一次切割也往往是最困难的一次切割。但是通常来讲,我们总是希望通过尽量少的切割次数,来达到令所有子块都处于 Mappable 的状态。那些仅仅切割一次就可以从原有实体上分离下来,并具备 Mappable 状态的子块,会成为我们的首选。在这个模型中,关注其底部的几何特征,可以发现,从那里开始是很自然的想法。

(1) 将模型显示切换到 mappable 方式。

图 4-13 设置模型视图模式

(2) 在 solid edit 面板中,选择 trim with plane/surf 子菜单。

(3) 如图所示,使用三点定义平面方式,对该几何体进行切割。

图 4-14 定义平面切割几何

(4) 切割结束之后,该子块将处于 Mappable 状态,如下图所示:

图 4-15 几何切割后的拓扑状态

(5) 在模型底部的对称位置,重复该操作。

Step04:进一步的切割

通过第一次的切割,我们已经将模型底部的两个子块切割了下来。在下一步的工作中,将集中精力处理模型中部的部分。如图所示,该部分仍然处于 non-mappable 状态。隐藏底部切割下来的子块,仅显示中间部分。

(1) Mask 底部两个子块。

图 4-16 隐藏部分几何

(2) 在 trim with plane/surf 子面板中,选择实体开槽的底面部分,以其为切割工具。

(3) 切割该实体。

(4) 重复该过程,选择呢模型另一侧开槽的地面部分为切割工具进行切割。切割完毕后的实体应该如下图所示。

(5) Mask 两个新切割完毕,且处于 Mappable shape 状态的子块。

图 4-17 第 4 步切割后的几何拓扑状态

Step05:最终切割

完成了前两步的切割后,该模型中仍然有部分区域处于 non-mappable 的状态。此时,需要仔细模型,以确定是何类原因导致该模型的子块仍然无法直接进行实体网格剖分。通过 solid map 的基本原理我们知道,一个子块如果处于 mappable 状态,那么它必须有一个或若干个已经合并的源面,有且仅可以有一个目标面以及一个完整的扫略路径。观察模型可知,该子块仍然处于 non-mappable 状态的主要原因是无法确定扫略的目标面。因此,我们需要对其再进行两次切割,将 V 字型的延伸部分自该子块上切割下来,使每一子块

均仅具有一个扫略目标面,从而完成最终的实体网格剖分。

图 4-18 模型在上述操作后仍处于 non-mappable 状态的部分

(1) 选择 trim with lines 子菜单。

(2) 在 with sweep lines 中,选择仍然处于 non-mappable 状态的几何体。

(3) 在 sweep lines 中,选择如上图所示,红色区域的外缘作为切割工具。

(4) 在切割方向定义中,设置 sweep to 为 by a vector >> z-axis, 选择 sweep all 选项,然后点击 trim 完成切割。

(5) 在模型另外一侧的对应位置,使用类似的方式,完成切割。

(6) 两次切割结束后,该模型应如下图所示,所有子块均处于 Mappable 状态。

(7) 点击 Save,保存模型。

图 4-19 完成切割后的模型拓扑状态

Step06:实体网格剖分。

一旦获取了所有子块均处于 Mappable 状态的几何模型,后续的工作将变得十分简单。逐一选择各个子块,对其进行实体网格剖分,生成六面体/三棱柱混合网格。几何上的连续性,将被精确的映射到三维网格的连续性上。

(1) 在 solid map 面板下,选择 multi solids 子菜单。

(2) 按照图 4-20 设置网格剖分参数。

图 4-20 实体网格剖分设置

multi-solids 功能提供了针对多个几何子块一次性实体网格剖分的功能。选择各个子块并点击 mesh 后,HyperMesh 会显示出各个子块的剖分次序,以及每一个子块的扫略方向,并提供用户查看和编辑功能。

图 4-21 初始网格预览

此外,该面板还提供了针对各个子块,进行扫略源面二维网格剖分,以二维网格作为引导,完成三维网格剖分的功能。与 automesh 面板下的二维网格控制功能类似,该面板也提供了对该源面的二维网格进行单元尺寸、单元数量等参数控制,以帮助用户生成更高质量的引导网格。

图 4-22 网格调整

HyperWorks使用六面体和三棱柱单元进行实体网格剖分的更多相关文章

  1. ABP理论学习之工作单元(Unit of Work)

    返回总目录 本篇目录 公共连接和事务管理方法 ABP中的连接和事务管理 仓储类 应用服务 工作单元 工作单元详解 关闭工作单元 非事务的工作单元 工作单元方法调用其它 工作单元作用域 自动保存 IRe ...

  2. Module-Zero之组织单元(OU)管理【新增】

    返回<Module Zero学习目录> 概览介绍 OrganizationUnit实体 OrganizationUnit管理者 公共用例 设置 概览介绍 组织单元(Organization ...

  3. 基于DDD的.NET开发框架 - ABP工作单元(Unit of Work)

    返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...

  4. DDD中实体与值对象是干什么的

    实体值对象的含义 我们前面已经讲过领域的概念, 今天来讲讲实体, 实体是我们进行设计领域模型时的基础单元, 与之有关的是值对象, 接下来先梳理一下实体以及值对象的含义,然后讲讲他们俩的关系, 希望通过 ...

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

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

  6. abaqus学习笔记-abaqus与umat调用基本原理

    参考: 1.http://ivt-abaqusdoc.ivt.ntnu.no:2080/v6.14/books/sub/default.htm 2.ABAQUS 用户材料子程序开发及应用-杨曼娟 3. ...

  7. Fluent经典问题答疑

    原文链接1 原文链接28 什么叫边界条件?有何物理意义?它与初始条件有什么关系? 边界条件与初始条件是控制方程有确定解的前提. 边界条件是在求解区域的边界上所求解的变量或其导数随时间和地点的变化规律. ...

  8. Delaunay Triangulation in OpenCascade

    Delaunay Triangulation in OpenCascade eryar@163.com 摘要:本文简要介绍了Delaunay三角剖分的基础理论,并使用OpenCascade的三角剖分算 ...

  9. iOS仿京东分类菜单实例实现

    在APP开发过程中此功能还是比较常见的模块,左边为菜单展示,右边为菜单下数据的展示,选择不同的菜单右边的数据源进行更新,此实例主要运用到UITableView,UICollectionView,OC谓 ...

  10. 【转】 UITableView 的indexPath

    原文:http://blog.csdn.net/mengtnt/article/details/6733691 前面说过了viewController的一些基本注意事项.这里针对不同的viewCont ...

随机推荐

  1. BandiZip无广告版安装

    BandiZip无广告版安装 Bandizip 是一款压缩软件,它支持Zip.7-Zip 和 RAR 以及其它压缩格式.它拥有非常快速的压缩和解压缩的算法,从大学用到现在,但是现在最新的版本在每次压缩 ...

  2. Oracle for 循环

    Oracle for in loop 循环的一些实例,以作学习和加强使用熟练度及场景应用. 一些技巧 for 语句后面的 loop end loop 可以类比成 c#/java 等编程语言 for 语 ...

  3. javascript 字符串截取

    <script> //字符截取(需要的字符长度) function cut_str(need_str_length){     var bag_set = document.getElem ...

  4. VJ结营测试

    A 这题其实自己画一下图可以发现当奇数行为每行都为W,偶数行为W与R交替出现,就可以得到满足题意的图形了. 点击查看代码 #include<bits/stdc++.h> using nam ...

  5. springboot接口接收xml

    对xml文件的操作也可以借助hutool的XmlUtil. 1. xml格式 <root> <deviceStatInfo onlineCount="64" of ...

  6. Java+Appium+Junit实现app自动化demo

    1.新建maven工程和引入库 步骤参考https://www.cnblogs.com/wanyuan/p/16408758.html 2.编写代码 代码如下: import org.junit.Af ...

  7. TortoiseGit安装(Windows10环境)

    1.前往官网下载 https://tortoisegit.org/download/ 根据自己系统位数进行选择 2.双击运行 3.默认即可,第一个是基于PuTTY的SSH客户端,与Windows兼容更 ...

  8. 一文速通Python并行计算:09 Python多进程编程-进程之间的数据同步-基于互斥锁、递归锁、信号量、条件变量、事件和屏障

    一文速通 Python 并行计算:09 Python 多进程编程-进程之间的数据同步-基于互斥锁.递归锁.信号量.条件变量.事件和屏障 摘要: 多进程同步机制包括互斥锁.递归锁.信号量.条件变量.事件 ...

  9. 获取当前屏幕的缩放比例,dpi

    Graphics currentGraphics = Graphics.FromHwnd(new WindowInteropHelper(Window.GetWindow(this)).Handle) ...

  10. AI Agent离我们有多远?认知革命的开始(上篇)

    认知是成本最低的对冲. --张三思维进化论 深夜3点,我与AI Agent的惊人对话 2025年的一个深夜,我习惯性地打开电脑处理一些工作.身为一个从大厂转型的自由职业者,夜晚往往是我效率最高的时段. ...