Unity-数字孪生-实时显示大型结构体有限元分析的应变云图

Motivation

分享针对大型结构体数字孪生的技术思路给到大家,给大家提供一些灵感,促进交流。

研究进展

1、这段时间优化和改进了Abaqus模型转Unity的流程,完成从超50W结点的大型装配体Abaqus inp文件自动提取各部件的结点、面片信息,并在Unity当中进行重构。
在这里插入图片描述
2、成功走通Unity-MySQL实时显示应变云图的路线,通过分部件多线程的方式从MySQL数据库中以0.05s的速度提取几十万条数据,满足数字孪生的实时性需求。
请添加图片描述

研究记录

问题一:通过Abaqus查询结点的方式重构模式失败。

当面对的是比较少量的结点(少于1W)的时候,比如说单个零部件,通过Abaqus的Query功能,能够获得结点的空间位置,有限单元的结点构成,但是,当结点数巨大(我的模型有50W个结点),而且有多个零部件,由于零部件之间的坐标关系复杂,通过Abaqus查询的功能获得的文件就可能出错。我遇到的问题是,模型直接重构成一坨不可名状的东西。
在这里插入图片描述

问题一解决思路:

如果要使用Abaqus的有限元分析结果,在Unity当中重建有限元网格这个问题是绕不开的。多次尝试使用查询或者report的方式,仍然失效。想到在Abaqus转Ansys时,能够通过inp文件来重建网格,那么inp文件当中必定含有Abaqus的网格信息。一看果然有,而且inp文件不是二进制文件,是能够通过记事本打开的。而且记录的方式是通过分部件的形式,那也就是说,可以编写程序解析inp文件,获得多个部件的网格信息,并按照Unity的模型构成的方式来重构部件。而且一个好消息是,在Unity当中重构的mesh是自动保持部件之间的装配关系,不需要后期再繁琐地进行部件之间的装配。

问题二:如何有秩序地将Abaqus的应力应变的信息附着在生成的模型的表面,产生云图,并实时地变化?

当模型的结点数过大的时候,由于IO接口读取大量数据过于缓慢,根本无法实现实时更改颜色。

问题二解决思路:

生成的网格是呈粉红色,如果给其赋予默认白色shader,则模型会变成灰白色。
在这里插入图片描述

如果要产生云图的效果,则需要编写特定的Shader,来根据模型mesh上的数值来采样颜色,然后进行实时渲染。当IO接口读取文件的速度特别慢的时候,则想到利用数据库,因为数据库技术本身就是管理海量数据的技术。在MySQL的数据库当中有根据表的某一列建立索引的功能,一旦建立索引之后,便能够迅速地找到所需要的数据。我将Abaqus不同的分析步的应变数据存储在MySQL数据库当中,然后在模型的不同的部件上挂代码,让其根据我的指令自动从数据库当中读取数据。这样则实现了模型在更换不同的颜色的时间缩短到0.05s,能够满足实时性的要求。
在这里插入图片描述

后续研究方向

问题一:如何在Game视图既显示云图又显示网格?

问题二: 如何训练神经网络作为代理模型来实时更新数据?

结论

欢迎小伙伴私信交流,基本上都会回复。

  • 23
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值