做过有限元分析的家人们第一眼看到这个题目,内心里的第一想法是:有限元网格转实体?倒反天罡!这不是在扯淡么!“有限元先生”怎么变成了“扯淡先生”?
能有这个想法非常好,说明家人已经熟练的掌握批判了,而人不能没有批判精神,就像吃蛋挞不能不撒胡椒面。
但是,家人们就不想知道我是怎么一本正经的扯淡吗?
帖子给有限元网格转几何实体提供了一条思路,即:将网格处理为stl文件,然后在stl文件的基础上重建几何实体。帖子首先分析了stl文件的数据组织方式,然后讲解了abaqus中的C3D4单元的表面抽取方式,最终以C3D4单元和C3D8单元为例,在matlab平台编制程序,将四面体和六面体网格处理为stl数据,最后将重建的几何实体划分网格,验证了思路的正确性。
STL(Stereolithography)文件是一种常用的三维模型文件格式,主要用于3D打印和计算机辅助设计(CAD)。该文件通过仅仅记录几何实体的表面记录几何信息,但是要保证记录的表面必须是水密表面,否则就会报错。
stl文件通常有两种方式:二进制格式和字符型格式,其中,二进制格式不可以直接读,需要借助程序或者专用的商业软件读写,而字符型格式可以直接用文本编辑器打开查看,这两种格式各有优劣,本次帖子主要以字符型为例讲解stl文件的格式。
stl文件将几何实体的表面分割成大量的三角面片,面片的数量决定了stl文件的精度,stl文件的关键就是记录这些三角面片,下面是一个三角面片。 首先是三个角点的坐标,就是九个浮点数字,然后是三角面片的外法向量,这个“外”是相对于几何实体的内部来讲的,即法向量的指向和三个节点的排布顺序要满足右手法则。所以,记录一个三角面片需要十二个浮点数字。一个完整的stl文件如下所示 下面是一些需要注意的地方
abaqus中的一阶四面体单元的节点排布顺序非常有讲究,事实上每一个单元的节点排布都有说道,我在之前的帖子讨论过怎么搞清楚abaqus的节点排布顺序,这里只介绍如何抽取C3D4单元的面信息。下面是一个一阶四面体单元 如果家人曾经给模型施加过面荷载,而且仔细瞅过inp文件的话,当然,假如你没有看过也没有关系,因为我会掰着手指头给你讲清楚,学不会别说看过我的帖子。abaqus给一阶四面体单元定义面的时候,通常会有这样的关键字,
*Elset, elset=_water_S3, internal
...
...
*Elset, elset=_water_S2, internal
...
...
*Elset, elset=_water_S4, internal
...
...
*Elset, elset=_water_S1, internal
...
...
*Surface, type=ELEMENT, name=water
_water_S3, S3
_water_S2, S2
_water_S4, S4
_water_S1, S1
相信家人们看到“s1”那几个关键字,顿时好奇心就起来了,那是什么玩意儿?
我们知道,在有限元中,无论是什么荷载,都需要换算到节点上,因此,节点的抽取至关重要!abaqus的cae工程师就设计出通过抽取单元的面来抽取节点的方式,上面的四个面就对应了四面体的四个面,而每个具体的面又对应了了节点排布里面的节点编号。
假如上面的四面体单元节点的排布顺序为
40,1,2,3,4
那么,这个四面体的四个面就分别为
s1-123
s2-142
s3-243
s4-341
好了,上面是C3D4单元的面抽取方式,C3D8单元的抽取方式我就不赘述了,留给你们当家庭作业了,明天抽查。
下面以一个三维坝体-库水-地基的模型为例(这东西很难搞,别向我要,我不给)。下面是这个几何模型的示意 这里我们首先把它划分成C3D4网格,或者C3D8网格,都无所谓,搞清楚了abaqus的面抽取方法,都好写程序,这里以C3D4和C3D8单元为例。下面是整体网格。 下面是地基的网格,采用C3D4单元离散。 下面是拱坝坝体的网格,采用C3D8单元离散。 下面是库水的网格,同样采用C3D8单元离散。 然后,在matlab平台编制程序,将上述的C3D4和C3D8混合的网格处理为stl文件,将坝体、库水和地基分成三个部分创建stl,下面是坝体的stl文件剖面
下面是库水的stl文件剖面。
下面是地基的stl文件剖面。 现在有了stl文件,下面就是重建实体了。这部分工作的解决方案并不唯一,可以通过一些软件将stl转成实体文件之后再导入进有限元软件中画网格,如stp和igs等等,也可以直接在stl文件的基础上画网格。这里就直接在stl文件的基础上画网格了,starccm可以直接剖分stl形式的几何实体,我在starccm中采用切割体画网格。下面是划分的整体网格。 你会发现,黑乎乎的,什么都看不见!难道这条帖子我真的是在扯淡!?但是,如果我切开这个网格呢? 仔细观察剖面,发现程序创建的stl文件成功的被starccm划分成了切割体网格,说明了帖子的思路是正确的,将stl文件作为桥梁来把有限元网格逆向成几何实体的思路是可行的。