工业软件研发中处理超大模型

本文探讨一下超大模型前处理性能优化方面的问题。

1. 如何定义超大模型?

超大模型主要从两个方面定义,一个是几何单元的数量,一个是网格的数量,分别对应几何复杂度和仿真复杂度。

继续细分的话,考量几何单元数量的同时还需统计每个单元具体的面,边,点等数据以及曲面,曲线的数量。相同的面,参数平面和曲面的数据量可以相差数量级。

分析单元网格数量也要考虑求解模型类型,比如边界元,矩量法满秩矩阵数量会比稀疏矩阵多出几个数量级。相同网格数量,高阶网格自由度会随着会成倍增加。使用显式方法无需求解方程组,非常适用分布式计算且没有误差。

有些复杂的三维几何在结构计算中通过分析,可能将整体简化成计算的二维或者一维单元,在局部使用三维单元,分步分析,简化模型减少计算量。

假设现有一个几何单元数目在 10 万,六面体网格自由度在 1 亿左右的模型。
关于数量级的分析,参见“一亿”是“一千万”的十倍吗?

在操作这种模型的时候,不管是 GUI 操作,视图显示,模型编辑,都非常容易卡顿,或者程序容易死机。工程师对操作这种规模的模型应该是有概念的。

2. 考察因素

2.1 UI 层面

将 10 万个单元挂在 UI 树形节点上,如果只是单纯的添加,性能应该没问题,如果涉及到快速反复插入,删除,更新,遍历等操作时,UI 会出现明显卡顿。

2.2 渲染层面

10 万个几何需要单独处理的话,需要 10 万个实体几何对象,离散成面片,根据实际情况,面片数普遍在千万级别,如果不使用任何加速方法,显示会非常卡顿。刚推出的 UE5 使用 NANITE 已经能支持十亿面片的渲染。

对于工业仿真软件的渲染显示,考虑性价比,其加速在已有框架的基础上,更多的是在偏业务层实现。

2.3 模型编辑

模型编辑设计到模型的创建,删除,修改,赋属性等操作。

以最常用的创建模型的捕捉操作为例。捕捉操作是为了在模型创建时保证精准性。

比如为了做接触分析,需要创建两个相互接触的对象,第一个对象创建好后,创建第二个对象时需要捕捉到第一个对象的几何。在捕捉第一个对象时,需要遍历第一个对象的几何数据。如果有 10 万个对象,那就需要遍历 10 万个对象,因为捕捉操作是实时计算,所以必需要做过滤优化处理。类似操作还有拾取,框选,高亮等操作。

超大模型的几何编辑一定要通过优化过滤等操作控制在局部范围。

2.4 模型检查遍历

公差中常见的几何干涉分析,需要遍历计算整个模型中的几何数据。针对 10 万个三维对象每两个做干涉计算,程序直接拉胯。同理还有分析整体模型中的自由实体,最短边,最短距离,最短形心距,最短质心距。这些计算操作都涉及到整体模型的遍历检查,有些可能是实时操作。

作者:邓子平
  • 分享于 · 2022.04.10 23:34 · 阅读 · 2142

[版权声明] :本文系网友分享,仅以非商业性的交流和科研为目的,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网( friends@stuch.cn )联系!我们将协调给予处理。转载授权码:确权中,请原作者尽快与我们取得联系,阅读原文(请登录)..

0 条评论

请先 登录 后评论
猜猜我是谁
chen

6
提问
3
回答
2
文章
注册推广