一种基于OpenGL的三维有限元模型及响应云图显示方法与流程

文档序号:18512976发布日期:2019-08-24 09:15阅读:664来源:国知局
一种基于OpenGL的三维有限元模型及响应云图显示方法与流程

本发明涉及计算机图形学领域,具体涉及一种基于opengl的三维有限元模型及响应云图显示方法。



背景技术:

随着航空航天技术的不断发展,各类飞行器的性能在不同领域取得突破进展。大国之间的博弈现在不仅仅是硬实力之间的博弈。强度校核对于复合材料结构设计甚至整个飞行器的设计都是至关重要的。合适、便捷、准确的有限元处理软件可以大大缩短设计历程,提高设计精度,降低设计成本。为满足其在服役过程中对速度的要求并配合它的各项军事战略优势技能,其外部结构要满足比一般民用飞行器更高的力学性能。会面临许多严酷复杂的工况,受到气动载荷、声/热载荷等环境载荷的联合作用,严重威胁着结构的完整性、可靠性和使用寿命。但是,现在国内各大高校和科研院所使用的有限元软件大多为国外进口的有限元软件,这不仅仅会对我国信息安全带来一定的风险,同时也因为很少有有限元软件会对用户开放程序使用户可以进行软件二次开发。所以,这在一定程度上也限制国内机械工程动力学的发展。



技术实现要素:

发明目的:针对以上问题,本发明提供一种可以进行二次开发的有限元模型以及云图显示程序,解决了目前缺少有限元后处理软件开源和二次开发的问题,加快了构建设计和仿真进程。

技术方案:为实现本发明的目的,本发明所采用的技术方案是:本发明提供了一种基于opengl的三维有限元模型及响应云图显示方法,包括以下步骤:

(1)针对hypermesh有限元软件输出的有限元模型文件、有限元模型对应工况计算完成的计算结果文件进行模型信息快速读取:

检查模型文件、运算结果文件的格式和信息完整性。

调用位置检测函数实现对于文件位置进行检测,如果选定文件目录下没有模型以及计算结果文件,将会返回错误信息。

遍历模型文件,得到六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元的个数信息、节点个数信息。

按照遍历得到的单元个数信息以及节点个数信息进行相关数组的建立。分别建立功能单元数组、节点数组。后续用来存放组成单元的节点对应的节点编号、节点位置信息和颜色信息。

遍历文件,根据关键词(grid、chexa、cpenta、cquad4、ctria3、cbar、cbeam、rbe2、ctetra)完成对于组成单元的节点的编号和节点位置信息的读取,并且进行存储。使用循环函数完成对组成模型的所有的单元的节点的编号和节点位置信息进行读取并存储。上述关键词所代表的含义指的是不同的单元类型。

选择节点位置信息的x、y、z三个方向的最大值和最小值作为模型坐标信息的极值,记为(xmax、ymax、zmax)、(xmin、ymin、zmin),其极大值与极小值的差即为坐标信息的幅值,节点对应物理场的最大值和最小值作为颜色信息的极值,其极大值与极小值的差即为颜色信息的幅值,节点对应的位置信息和颜色信息分别除以其位置信息和颜色信息的幅值,即可完成模型节点的位置信息和颜色信息进行归一化处理。

(2)hypermesh有限元软件输出的有限元模型文件、有限元模型对应工况计算完成的计算结果文件进行opengl可视化处理,完成六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元、彩色梯度显示条的绘制。

根据显示要求进行处理数据以进行绘图,本发明可以选择模型显示模式或者云图显示模式进行绘图,具体方法如下:

1、模型显示模式绘图

显示模型需要满足的是线框显示模式,即点和点之间通过线连接组成模型。不同点之间连线之间没有颜色填充,基本图元为线段。这样能最大限度的表达有限元模型的几何信息。处理模型节点坐标时,按照画线函数的要求进行点数扩存,画线函数是每两个点绘制一条短线。

在进行绘图模型之前,需要对模型文件进行数据扩存。数据扩存的形式针对不同的显示方式是不同的。几何上,组成有限元模型的是六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元等单元,组成单元的基本单位是节点。同时,也是只有节点具有空间的几何位置信息。因此,在进行绘图时,需要针对不同的绘图图元,比如线段图元、三角形图元,按照六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元等单元的节点组成信息,对原始节点进行重新排列。

在模型显示模式下,绘图的基本图元是线段。在将数据存入缓冲区之前,需要识别出需要显示构建诸如六面体单元、四面体单元、三棱柱单元等单元所需要的最少线段序列,将组成线段的两个节点代替线段序列中的线段,即可得到扩存之后的节点重排序列。

使得排列之后的节点数组可以直接满足对应图元的绘图需要,使对应的图元能够直接调用缓冲区的数据进行绘制。这个过程会增加数据的数量,因此也称之为数据扩存。

如图3所示,数据处理前坐标信息为g1-g8,其中排列顺序为:g1、g2、g3、g4、g5、g6、g7、g8。其中,每一个点包含二维数据,分别是模型节点坐标信息、节点颜色信息,颜色信息为节点上对应场的数值,经过归一化之后成为颜色信息。六面图单元的轮廓线段序列一共有12条,将轮廓线段序列使用其端点节点代替之后得到扩存之后的节点重排序列,即g1g2,g2g3,g3g4,g4g1,g5g6,g6g7,g7g8,g8g5,g8g4,g5g1,g6g2,g7g3。此12条线段即为构建6面体单元的最少线段序列。重新排列之后的节点信息以2个节点为一组,可以满足线段图元的绘制。

节点坐标信息通过有限元模型文件可以直接读取到。节点的颜色信息,需要对有限元模型文件的对应场的计算结果文件进行读取。但是,在模型显示的模式下,基本图元是线段。显示目的是显示模型的几何结构信息。所以,显示信息统一赋值为{0,0,1},也就是标准蓝色,也即将节点设置为标准蓝色。将二维节点信息扩存完成之后,存入计算机缓冲区。之后的绘图函数可以直接调用已经存到缓冲区的处理之后的数据。

2、云图显示模式绘图

云图显示模式下的功能是显示模型云图。模型云图是在有限元模型下,经过对应的有限元计算,可以得到有限元模型的单元和节点在相应诸如应力场、应变场等物理场下的结果值,云图可以通过颜色梯度的形式将计算结果直观的表示出来。云图显示模式和模型显示模式是完全不同的。云图显示模式的基本图元为三角形,三角形是具有一定空间结构的图元,以三角形作为基本图元可以很好的实现有限元几何信息和相对应的有限元计算结果云图的可视化。

在云图显示的模式下,绘图的基本图元是三角形。在将数据存入缓冲区之前,需要识别出显示诸如六面体单元、四面体单元、三棱柱单元等单元的组成面序列。在有限元模型中,单元的组成面有两种情况:三角形、矩形。对于三角形组成面而言,组成面的三个节点刚好满足三角形图元的绘图需求。对于矩形组成面而言,需要对其按照对角线进行划分,划分成两个三角形,即一个矩形有两个三角形图元组成。因此,将单元的面序列中的面使用三角形图元替代后,得到三角形基本图元序列,再将三角形基本图元序列中的三角形图元用其组成的节点代替,即可得到扩存之后的节点重排序列。

在云图显示模式下的基本图元是三角形,因此需要按照三角形图元完成对有限元模型节点的数据扩存,绘制三角形函数是每三个点绘制一个三角形。

如图3所示,数据处理前坐标信息为g1-g8,其中排列顺序为:g1、g2、g3、g4、g5、g6、g7、g8。其中每一个点包含二维数据,分别是模型节点坐标信息、节点颜色信息,颜色信息为节点上对应场的数值,经过归一化之后成为颜色信息。

对于六面体单元而言,其组成面的均为矩形,因此按照矩形的对角线进行三角形图元划分。将六面体组成面序列中的组成面使用三角形图元替代之后可以得到单元的三角形图元序列,再将三角形图元序列使用其组成的三个节点替代即可得到数据扩存之后的节点重排序列。据处理完成后数据变成g4g1g5,g5g8g4,g1g2g6,g6g8g1,g4g3g7,g7g8g4,g3g2g6,g6g7g3,g8g5g6,g6g7g8,g4g1g2,g2g3g4。重新排列之后的节点信息以3个节点为一组,可以满足三角形图元的绘制。

节点坐标信息通过有限元模型文件可以直接读取到。节点的颜色信息,需要对有限元模型文件的对应场(应力场、应变场)的计算结果文件进行读取。在应力场对应的有限元模型的计算结果文件中,每个节点都有对应的应力值。把所有节点的最大应力值和最小应力值的差值作为应力赋值,将应力赋值10等分,可以得到应力云图的10个显示颜色梯度,每个颜色梯度对应不同的颜色。通过对每个节点的应力数值的大小判断,即可确定节点处于的颜色显示梯度,进而可以得到节点的颜色信息。将二维节点信息扩存完成之后,存入计算机缓冲区。之后的绘图函数可以直接调用已经存到缓冲区的处理之后的数据进行绘图。

有益效果:与现有技术相比,本发明的技术方案具有以下有益技术效果:

本发明针对目前有限元软件后处理可视化的空白、后处理可视化相关程序严重依赖软件平台或者系统平台、无法针对后处理显示程序进行二次开发、无法实现大模型的有限元模型和相关结果文件的快速显示等问题,提出了一种基于opengl的三维有限元模型及响应云图显示方法,基于windows下的qt平台的opengl库,考虑了大模型文件的读取效率,编写了大模型文件的相关显示算法。该方法能够准确地实现对三维有限元模型文件进行读取,对单元、坐标、节点等信息进行存储。同时,通过opengl相关绘图函数实现对于模型、响应云图的可视化。提供了一种可以进行有限元后处理二次开发、大模型快速读取并显示的方法。

附图说明

图1是六面体有限元模型;

图2是数据提取流程图;

图3是数据处理流程图;

图4是本发明方法的流程图。

具体实施方式

下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。

如图4所示,本发明提供了一种基于opengl的三维有限元模型及响应云图显示方法,该方法包括以下步骤:

(1)针对hypermesh有限元软件输出的有限元模型文件、有限元模型对应工况计算完成的计算结果文件进行模型信息快速读取:

检查模型文件、运算结果文件的格式和信息完整性。

调用位置检测函数实现对于文件位置进行检测,如果选定文件目录下没有模型以及计算结果文件,将会返回错误信息。

遍历模型文件,得到六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元的个数信息、节点个数信息。

按照遍历得到的单元个数信息以及节点个数信息进行相关数组的建立。分别建立功能单元数组、节点数组。后续用来存放组成单元的节点对应的节点编号、节点位置信息和颜色信息。

遍历文件,根据关键词(grid、chexa、cpenta、cquad4、ctria3、cbar、cbeam、rbe2、ctetra)完成对于组成单元的节点的编号和节点位置信息的读取,并且进行存储。使用循环函数完成对组成模型的所有的单元的节点的编号和节点位置信息进行读取并存储。上述关键词所代表的含义指的是不同的单元类型。

选择节点位置信息的x、y、z三个方向的最大值和最小值作为模型坐标信息的极值,记为(xmax、ymax、zmax)、(xmin、ymin、zmin),其极大值与极小值的差即为坐标信息的幅值,节点对应物理场的最大值和最小值作为颜色信息的极值,其极大值与极小值的差即为颜色信息的幅值,节点对应的位置信息和颜色信息分别除以其位置信息和颜色信息的幅值,即可完成模型节点的位置信息和颜色信息进行归一化处理。

(2)hypermesh有限元软件输出的有限元模型文件、有限元模型对应工况计算完成的计算结果文件进行opengl可视化处理,完成六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元、彩色梯度显示条的绘制。

根据显示要求进行处理数据以进行绘图,本发明可以选择模型显示模式或者云图显示模式进行绘图,具体方法如下:

1、模型显示模式绘图

显示模型需要满足的是线框显示模式,即点和点之间通过线连接组成模型。不同点之间连线之间没有颜色填充,基本图元为线段。这样能最大限度的表达有限元模型的几何信息。处理模型节点坐标时,按照画线函数的要求进行点数扩存,画线函数是每两个点绘制一条短线。

在进行绘图模型之前,需要对模型文件进行数据扩存。数据扩存的形式针对不同的显示方式是不同的。几何上,组成有限元模型的是六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元等单元,组成单元的基本单位是节点。同时,也是只有节点具有空间的几何位置信息。因此,在进行绘图时,需要针对不同的绘图图元,比如线段图元、三角形图元,按照六面体单元、三棱柱单元、四面体单元、三角形单元、rbe2单元、梁单元、杆单元等单元的节点组成信息,对原始节点进行重新排列。

在模型显示模式下,绘图的基本图元是线段。在将数据存入缓冲区之前,需要识别出需要显示构建诸如六面体单元、四面体单元、三棱柱单元等单元所需要的最少线段序列,将组成线段的两个节点代替线段序列中的线段,即可得到扩存之后的节点重排序列。

使得排列之后的节点数组可以直接满足对应图元的绘图需要,使对应的图元能够直接调用缓冲区的数据进行绘制。这个过程会增加数据的数量,因此也称之为数据扩存。

如图3所示,数据处理前坐标信息为g1-g8,其中排列顺序为:g1、g2、g3、g4、g5、g6、g7、g8。其中,每一个点包含二维数据,分别是模型节点坐标信息、节点颜色信息,颜色信息为节点上对应场的数值,经过归一化之后成为颜色信息。六面图单元的轮廓线段序列一共有12条,将轮廓线段序列使用其端点节点代替之后得到扩存之后的节点重排序列,即g1g2,g2g3,g3g4,g4g1,g5g6,g6g7,g7g8,g8g5,g8g4,g5g1,g6g2,g7g3。此12条线段即为构建6面体单元的最少线段序列。重新排列之后的节点信息以2个节点为一组,可以满足线段图元的绘制。

节点坐标信息通过有限元模型文件可以直接读取到。节点的颜色信息,需要对有限元模型文件的对应场的计算结果文件进行读取。但是,在模型显示的模式下,基本图元是线段。显示目的是显示模型的几何结构信息。所以,显示信息统一赋值为{0,0,1},也就是标准蓝色,也即将节点设置为标准蓝色。将二维节点信息扩存完成之后,存入计算机缓冲区。之后的绘图函数可以直接调用已经存到缓冲区的处理之后的数据。

2、云图显示模式绘图

云图显示模式下的功能是显示模型云图。模型云图是在有限元模型下,经过对应的有限元计算,可以得到有限元模型的单元和节点在相应诸如应力场、应变场等物理场下的结果值,云图可以通过颜色梯度的形式将计算结果直观的表示出来。云图显示模式和模型显示模式是完全不同的。云图显示模式的基本图元为三角形,三角形是具有一定空间结构的图元,以三角形作为基本图元可以很好的实现有限元几何信息和相对应的有限元计算结果云图的可视化。

在云图显示的模式下,绘图的基本图元是三角形。在将数据存入缓冲区之前,需要识别出显示诸如六面体单元、四面体单元、三棱柱单元等单元的组成面序列。在有限元模型中,单元的组成面有两种情况:三角形、矩形。对于三角形组成面而言,组成面的三个节点刚好满足三角形图元的绘图需求。对于矩形组成面而言,需要对其按照对角线进行划分,划分成两个三角形,即一个矩形有两个三角形图元组成。因此,将单元的面序列中的面使用三角形图元替代后,得到三角形基本图元序列,再将三角形基本图元序列中的三角形图元用其组成的节点代替,即可得到扩存之后的节点重排序列。

在云图显示模式下的基本图元是三角形,因此需要按照三角形图元完成对有限元模型节点的数据扩存,绘制三角形函数是每三个点绘制一个三角形。

如图3所示,数据处理前坐标信息为g1-g8,其中排列顺序为:g1、g2、g3、g4、g5、g6、g7、g8。其中,每一个点包含二维数据,分别是模型节点坐标信息、节点颜色信息,颜色信息为节点上对应场的数值,经过归一化之后成为颜色信息。

对于六面体单元而言,其组成面的均为矩形,因此按照矩形的对角线进行三角形图元划分。将六面体组成面序列中的组成面使用三角形图元替代之后可以得到单元的三角形图元序列,再将三角形图元序列使用其组成的三个节点替代即可得到数据扩存之后的节点重排序列。据处理完成后数据变成g4g1g5,g5g8g4,g1g2g6,g6g8g1,g4g3g7,g7g8g4,g3g2g6,g6g7g3,g8g5g6,g6g7g8,g4g1g2,g2g3g4。重新排列之后的节点信息以3个节点为一组,可以满足三角形图元的绘制。

节点坐标信息通过有限元模型文件可以直接读取到。节点的颜色信息,需要对有限元模型文件的对应场(应力场、应变场)的计算结果文件进行读取。在应力场对应的有限元模型的计算结果文件中,每个节点都有对应的应力值。把所有节点的最大应力值和最小应力值的差值作为应力赋值,将应力赋值10等分,每个等分作为一个区间范围,可以得到应力云图的10个显示颜色梯度,每个颜色梯度对应不同的颜色。通过对每个节点的应力数值的大小判断,即可确定节点处于的颜色显示梯度,进而可以得到节点的颜色信息。将二维节点信息扩存完成之后,存入计算机缓冲区。之后的绘图函数可以直接调用已经存到缓冲区的处理之后的数据进行绘图。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1