本发明涉及一种基于有限元后处理的模型重建方法,属于工业工程设计领域。
背景技术:
有限元分析技术在当今的工业工程设计和仿真等活动中,起到重要的基础性作用,为企业节省了大量时间和经济成本。有限元分析分为前处理和后处理两部分,前处理包括建模、设置材料属性、设置边界条件和划分网格等;后处理就是将模型提交到求解器进行求解,生成求解结果,并以云图、动画等形式显示结果。传统的后处理显示方式已经难以满足工业设计发展的需要(如将后处理结果在虚拟现实环境中做进一步处理),发展的瓶颈在于没有一种将后处理得到的模型重建以在其他环境中使用的通用方法。
现有技术的缺点概括如下:
对于不同的有限元软件,在提取后处理数据时,方法无法通用。有限元分析的结果通常存放在一个结果文件里,文件包含模型的节点坐标、应力、位移等数据。虽然这些文件格式各有不同,但有一个共同点,即无法直接提取文件中的数据,只能通过编程读取。但对于不同软件,提取这些数据所用的编程语言不同。如在abaqus二次开发提取结果文件内的数据时,通常使用python语言编程进行;而在ansys二次开发提取结果文件的数据时,使用的编程语言为apdl。不同的编程语言对应的编写规则也不同,这就要求开发者掌握多种编程语言来应对不同的软件,造成很大不便。有鉴于此,有必要提供一种基于有限元后处理的模型重建方法。
技术实现要素:
为解决现有技术存在的问题,本发明提供一种基于有限元后处理的模型重建方法。
本发明的技术方案是:一种基于有限元后处理的模型重建方法,其步骤为:a.将一个已经分析完成的有限元后处理模型的输入文件打开,提取模型的初始节点坐标和单元节点编号;
b.将模型的各个节点位移输出保存;
c.将初始节点坐标与其对应的位移相加,得出位移后的坐标;
d.根据节点位移后的坐标和单元节点编号进行模型重建。
所述的步骤a包括:通过编程进行关键字筛选,略去文件中其他无用信息,只将输入文件中初始节点坐标和单元节点编号提取并分别输出到两个文件中以备使用。
所述的步骤b包括:在输出各个节点位移时,应确保所输出的位移为模型仿真在最后时刻的位移。
所述的步骤c包括:通过编程提取节点坐标文件中的节点以及其坐标,并在节点位移文件中,通过节点编号找到相应的位移,计算各个节点位移后的坐标,保存成新的节点坐标文件。
所述的步骤d包括:在单元节点编号文件可看到一个单元由哪些节点构成,根据此,提取新节点位移坐标,重建出后处理模型。
本发明的有益效果是:
本发明的基于有限元后处理的模型重建方法,能够通用于不同有限元软件后处理模型的重建。相较于现有的通过编程二次开发提取模型数据,更具有通用性。
附图说明
图1为本发明的基于有限元后处理的模型重建方法的流程图。
具体实施方式
下面结合附图以及具体实例对本发明作进一步的详细说明。
参阅图1,本发明的基于有限元后处理的模型重建方法,以将有限元软件abaqus后处理模型重建为stl模型文件为例,作进一步的详细说明。
步骤s1,打开模型输入文件,提取模型的初始节点坐标和单元节点编号。具体如下:
模型的输入文件包含了模型的许多信息,包括单元、节点、单元性质、材料等,其文件内容也是有固定的格式,每一项信息之前的一行都有相应的关键字引导,而关键字以*开始。节点坐标开始的关键字为“*node”,其格式为“节点编号,x坐标,y坐标,z坐标”,每一行只包含一个节点的信息。同样单元节点编号也有固定格式,其关键字为“*element,type=单元类型”,格式为“单元编号,节点1,节点2,节点3,节点4……”。单元类型不同,每个单元所含的节点个数也不一样。提取节点坐标和单元节点编号的工作通过c语言编程来完成。
第一步,通过关键字查找找到“*node”,将节点坐标输出并单独保存。
第二步,通过关键字查找找到“*element”,将单元节点编号输出并单独保存。
步骤s2,输出各节点的位移坐标并保存。具体如下:
第一步,模型分析完毕之后切换到可视化模块查看分析结果,在工具栏中选择报告—场输出,打开报告场变量输出对话框。在分析步/帧栏中选择最后一个分析步,最后一帧,以此来输出节点最终的位移。
第二步,模型重建需要各个节点的位移,因此在变量选项卡的输出变量处,位置下拉框中选择单一节点;在下方的复选框内找到“u:空间位移”,将其子项目u1、u2和u3前的方框选中;在设置选项卡中,设置文件名,保持文件的默认格式不变;将文件名下方“附加到文件”前的勾取消;其余设置保持默认,点击确定输出并保存模型各个节点的位移。
步骤s3,将各个节点初始坐标与位移坐标相加得出位移后的坐标。具体如下:
第一步,输出的节点位移文件除了包含位移数据,还包括一些必要的说明信息,这些信息与模型重建无关,为了数据计算方便,将这些信息剔除,只提取位移数据。位移数据在文件中的保存格式为“节点编号u1u2u3”,每行只存有一个节点的位移数据。与输出节点坐标和单元节点编号一样,同样是通过关键字查找,利用c语言编程完成。
第二步,提取节点的初始坐标,与位移相加,得出各个节点位移后的坐标,并保存到新的坐标文件中。因为有的模型在分析过程中产生的形变较小,不明显,为了观察方便,在位移坐标与初始坐标相加之前给位移乘以一个放大倍数。这个放大倍数根据模型的情况确定。
步骤s4,根据位移后的坐标以及单元节点编号进行模型重建。具体如下:
在本实例中,将后处理模型重建输出为stl(stereolithography)文件。stl文件有两种文件格式,一种为ascii明码格式,另一种为二进制格式,本实例以ascii明码格式为例。ascii明码格式的stl文件中的三角面片的信息单元facet是一个带矢量方向的三角面片,stl三维模型就是由一系列这样的三角面片构成。在文件中,每个facet由7行数据组成,其结构如下所示:
facetnormalninjnk
outerloop
vertexx1y1z1
vertexx2y2z2
vertexx3y3z3
endloop
endfacet
其中facetnormal是三角面片指向实体外部的法向量坐标;outerloop之后的3行数据分别是三角面片3个顶点的坐标。
第一步,abaqus网格单元多为四面体或六面体,若网格单元为四面体,则直接提取每个面的节点编号,在步骤s3得出的新的坐标文件中检索节点对应的新坐标;若网格单元为六面体,则需将其六个面的四边形分别分成两个三角形,再提取三角形三个顶点的编号,在新的坐标文件中检索对应的新坐标。
第二步,检索得到新坐标之后,先计算三个顶点构成的三角形的法向量,再按照上述ascii明码格式将每个facet的数据输出。如此循环直至将所有三角形面片都输出完成,此步骤同样是有c语言编程完成。
至此模型重建完成。
虽然本发明参照当前的实施方式进行了描述,但本领域的技术人员应能理解,上述实施方式仅用来说明本发明,并非用来限定本发明的保护范围,任何在本发明的精神和原则范围之内,所做的任何修饰、等效替换和改进等,均应包含在本发明的权利保护范围之内。