首页/文章/ 详情

通用仿真CAE软件开发中的数据格式

1年前浏览6589

数据是工程软件的核心内容之一,数据的读写,转换,以及数据操作的稳定性都是衡量一款工程软件性能的重点。通用仿真CAE软件也不例外,加上研发与使用周期较长,对于可维护性也有着很高的要求。仿真软件涉及面广,既有软件工程中常涉及的数据持久化方式,也有工程计算,如有限元,有限体积等数值计算的节点单元数据。需要采用多种不同的数据格式,来实现各种功能。

选择好的数据格式,可以极大地提高产品的性能与维护性,同时对于开发者是事半功倍,节约开发时间与资源。在多年实际开发WELSIM产品的经验基础上,本文讨论通用工程仿真CAE软件中的数据格式与应用理念。

几何形状数据

通用仿真软件的入口点是各种几何模型,也就是工程师常说的CAD模型。CAE仿真软件的核心是计算与分析,所以主要的获得几何数据的方式是读取CAD模型,而不是自己生成。

目前最适合仿真软件的几何数据格式是STEP。STEP诞生与上世纪80年代,至今沿用。STEP格式清晰,文件能以高精度读取并保存 3D 模型的整个主体,而不仅仅是基本几何形状。支持装配体。支持长度单位。是能够满足绝大多数CAE应用的几何格式。知名的云端CAD厂商OnShape对于CAD数据的导出格式就是STEP。同时知名的开源几何引擎OpenCascade对STEP的支持也是极为友好。这些都很大程度上方便了STEP格式的应用与兼容。目前STEP也是WELSIM的主要CAD文件导入格式。

也有一些其他知名的几何数据格式,如JT,ACIS,Parasolid等格式。篇幅所限,可能会在以后的文章中讨论。

除了完整的几何数据格式,还有一类以STL为代表的只含表面信息的几何数据格式。这类数据不含拓扑信息,只有表面的三角面片网格数据。随着3D打印近年来的兴起,STL这类数据又变得流行起来。然而由于只含有表面三角面片和法向信息,使得其在通用CAE分析中的应用有一定的限制。


网格数据

网格数据是工程仿真软件中最重要的求解器输入数据,有数据量大,种类多等特点。兼顾性能与通用性是选择网格数据格式的主要标准。WELSIM经过多年的实际开发与客户反馈,认为UNV与PVTU是两种表现优异的网格数据格式。

UNV是I-DEAS提出的一种通用的中性网格数据格式,字段定义清晰易于理解,编程易于实现,适用范围广,可定义各种类型的单元。群组模块支持定义各种边界条件、接触。是一款被业界广泛接受的,且有效的网格数据格式。实际应用中,默认是ASCII的文本格式,开发者也可以使用gzstream等工具转换为二进制文件。

PVTU是基于Kitware公司提出的,基于VTU的非结构化网格格式。特点是支持多核并行的读写,极大的提高了网格文件的读写速度。其基础版本VTU是一种基于XML的数据格式,同时核心数据支持ASCII和二进制两种格式,满足不同的使用场景。

材料数据

工程软件会涉及到大量的材料。虽然材料数据量没有网格或者结果数据体量大,但有时也会包含测试数据等内容,属于中等体量。XML兼顾可读性,读写效率以及网页端的支持,是比较好的选择。材料种类繁多,目前还没有一个通用的数据格式标准,基本是各大软件厂商自行设计。WELSIM和MatEditor两款软件中都使用了XML格式作为文本数据格式,表现优异。值得注意的是,由于材料数据中有大量的单位,在设计格式时,应尽量复用已有的单位,减少文件大小,提高读写效率。



求解器控制输入数据

求解器控制输入数据(以下简称求解器文件)通常会将网格与控制命令分开,这样求解器文件体积会不太大,ASCII文本格式可以胜任。求解器文件的格式主要取决于求解器的规定。如果是自研的求解器,使用JSON可以快速实现求解器文件的读写,是很好的选择,同时JSON天然支持RPC通信,为远程调用求解器提供基础,减少维护成本。一些传统的求解器格式也有不少应用,如Calculix使用Abaqus格式,Dyna和Nastran等格式也都被广泛使用。

结果数据

结果数据是仿真软件最重要的数据,也是体积最大的数据。根据求解情况,结果文件可能会包含网格,也可能不包含。而对于含有网格变化的求解过程,包含了网格数据的结果文件体积就会更大了。

和网格数据类似,VTU是目前最好的结果数据格式。开源友好的协议,开发者可以快速读写VTU结果文件。虽然是基于XML的数据格式,但同时支持将大数据部分保存为二进制格式。PVTU支持并行结果文件,可以充分利用多核硬件资源,增加读写效率。对于多时间步的计算结果,可以通过读写基于VTU的PVD格式的结果文件。PVD是开源软件Paraview的默认文件格式,详情参见《ParaView数据文件(pvd)的格式与读写》一文。得益于VTK与Paraview的广阔生态,VTU格式的结果文件的广泛被兼容。

缓存数据

缓存被广泛应用于操作系统、各种软件应用中。通用仿真会在各个环节使用缓存文件方法,用于保存临时的计算结果,用户操作等数据。缓存可以存放在项目或计算目录,也可能存储在操作系统的临时文件夹。

SQLite可以用于一些缓存文件。如网格划分时的缓存,求解器计算时的缓存等等,GPU计算缓存,本地存储缓存等。SQLite读写速度快,易于拓展。可以按照一定格式设计成为缓存文件。

RPC交互数据

现代通用仿真软件,对于灵活性有着更高的要求。基于RPC通信与进程管理机制无疑是最好的实现方式。详情参见《现代大型通用仿真软件的设计与构架》一文。RPC通信中不可避免的需要TLS保证安全性,如RSA加密后的证书与密钥(包含公钥与私钥)文件,通常是ASCII文本格式。一些其他类型的RPC所需文件会是yaml格式,通信的内容可以是JSON格式。

项目持久化数据

项目持久化是一款完整工程软件的必要功能。项目持久化数据的设计好坏,会直接影响到产品的开发效率,与产品向前版本兼容的稳定性。工程仿真CAE仿真软件持久化数据的核心是树窗口中的树节点及其属性数据。WELSIM使用了HDF5的格式表现了很好的性能与可维护性。同时HDF5的压缩功能也能应对项目中含有的大数据。HDF5提供了丰富的开源包用于读写H5文件,官方也提供了HDFView工具用于打开浏览H5文件。

软件配置数据

一款成熟的软件产品会有各种配置数据文件,即可以定制或修改各种设置,又可用于GUI设置的持久化。配置文件的要求是可读性强,易于理解,因为需要考虑到修改配置文件的使用者,会有来自不同的领域。YAML(Yet Another Markup Language)是一种可读性高、表达力强的数据交换格式,它使用简洁的、易于阅读的语法来表示数据,支持注释和多行字符串等特性,使得配置文件更加易于编写和维护。非常适合作为配置数据文件。

一些大型框架软件也提供配置文件的自动生成,如QT提供的QSettings配置方式可以根据操作系统,写入到不同的位置,无需开发者干预,也是不错的配置数据处理方式。

日志数据

日志文件种类较多,可以是用户操作的日志,可以是求解器求解日志,甚至是软件报错产生的日志。为了方便阅读,总体上以ASCII格式的TXT文件为主。需要注意的是日志文件应包含时间。同时,当日志文件过大时,需要自动新建一个不同名的日志文件,用于存储新的日志数据。

总结

通用工程仿真CAE软件的开发,是一项工程量巨大的工作。开发者需要优化开发资源,最快最优的交付产品与功能,同时要兼顾很好的维护性。本文归纳总结的数据格式,已经成功应用于WELSIM的软件开发之中,体现很好的性能同时,维护成本低,易于拓展,是很好的软件开发与选型。现将本文涉及的数据格式总结如下:

由于篇幅所限,本文尽量缩小数据的讨论范围,仅提出了最适合的通用工程仿真软件的数据格式。对初创软件产品,数据格式尽量选择中性文件,通用性强,同时有些中性格式会有开源包可供使用,可以提高产品开发效率。



来源:WELSIM
NastranAbaqus通用WELSIM通信材料控制ParaView
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-06-27
最近编辑:1年前
WELSIM
一枚搞仿真的老员工
获赞 23粉丝 63文章 253课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈