飞机结构静强度试验虚拟显示中的CAE图形可视化关键技术

2023-08-06 03:39王晓辉许向彦聂小华常亮
科学技术与工程 2023年21期
关键词:线程云图绘制

王晓辉, 许向彦, 聂小华, 常亮

(中国飞机强度研究所强度与结构完整性全国重点实验室, 西安 710065)

飞机结构静强度虚拟试验作为飞机物理试验的主要辅助手段之一,在预试及正式试验阶段,通过综合利用虚拟试验与物理试验结果数据,可实现对试验的实时监控与预警,并将试验状态和响应进行高逼真虚拟显示,可为试验指挥决策提供技术支撑,从而降低试验风险。伴随着数字化技术驱动和计算机信息技术的变革,计算机辅助设计(computer aided design,CAD)、计算机辅助工程(computer aided engineering,CAE)、计算机辅助制造(computer aided manufacturing,CAM)技术的迅猛发展正在改变着传统的飞机设计流程[1],虚拟试验技术呈现出智能化、自动化和融合化的发展趋势。其中将CAE/CAD技术深度融合到虚拟试验流程和虚拟显示业务中已成为目前工程应用中最为广泛的技术实践之一。

在国外,虚拟试验技术的研究主要集中在高等院校、研究院所及商业公司。比如Nelson等[2]针对三维模型精确显示和动态高效交互的需求,研发了统一架构的ElVis系统,但主要还是应用于仿真分析领域,再就是基于专业的可视化软件,如美国的VCollab[3]、TecPlot[4]和ParaView[5]等软件,通过二次开发支撑大规模仿真数据的可视化,但是无法支撑以模型数据为中心的全自主虚拟试验流程和可视化分析过程,同时专业性较强,学习维护成本较高。在国内,目前对该领域的研究还处于初步探索阶段,主要包含基于商软二次开发形成工具及基础技术研究两个方面。如基于CAD软件二次开发实现的机体结构虚拟装配系统[6-7],具备虚拟试验环境建模能力,可模拟试验加载过程;基于CAE图形可视化技术可实现物理试验结果可视化[8],完成试验结果数据分析和评定,为物理试验过程提供技术参考,如温俊杰等[9]将CAE可视化技术应用到了声场分析系统中,有效提高了声像阵列空间关系标定的效率;杨昆等[10]将有限元可视化方法应用到了湖泊表面水温的预测分析中,提高了水温测算分析方法的可视化水平;聂小华等[11]将CAE可视化分析技术用于车门密封性分析过程,提高了装备仿真建模分析效率,扩大了传统CAE技术的应用范围。目前以上工程应用大多通过商业软件或开源软件进行实现,如CATIA、EnSight和TecPlot等,但由于其软件实现方法和代码封闭或者专业跨度大,不能适应国内虚拟显示的多样化的特殊功能需求,同时针对飞机结构高精度虚拟显示而言,其可视化显示效率还有改进的余地。

中国飞机强度研究所作为国内航空领域的强度鉴定专业院所,近年来开展了可支撑飞机结构物理试验的虚拟显示关键技术研究,充分利用自主设计的相关CAE图形可视化算法及先进的数据处理算法,基于自主CAE图形引擎SABRE.visual[12]实现了飞机结构静强度试验虚拟显示软件的研发,并在试验现场进行了应用,效果显著。鉴于此,现针对该软件的研发,主要讨论其中涉及的CAE图形可视化共性关键技术,包含基于Qt多线程的试验数据监控处理技术、基于三角形区域填充的三维云图快速绘制技术和基于三维模型的图形绘制及标注技术等。

1 软件功能框架设计

试验虚拟显示软件主要功能是完成对试验实时采集数据的监控和三维显示,为飞机结构静强度试验提供可视化分析手段,其中主要包含试验应变三维云图实时监控显示、虚拟应变片快速定位和用户界面三个功能模块,逻辑框架如图1所示。

图1 飞机结构静强度试验虚拟显示软件功能框架

该软件运行流程如图2所示。首先采用Qt多线程技术实时监控试验数据完成数据解析;其次通过线性数据插值获取连续物理场分布;最后通过Qt信号槽机制驱动主线程,调用自主CAE图形引擎的标量数据显示接口完成三维云图实时渲染显示。以下针对其中的关键技术进行讨论,主要包括试验应变三维云图实时监控显示技术和试验应变片快速定位及关联显示技术。

图2 飞机结构静强度试验虚拟显示业务流程

2 试验应变三维云图实时监控显示技术

2.1 基于Qt多线程的试验数据监控处理技术

在飞机结构静强度试验虚拟显示过程中,核心是要完成对试验数据的实时监控采集、分析处理和图形可视化,其关注的重要指标就是实时性和准确性。目前对于数据的实时监测通常采用计时器和多线程的方法,其中计时器的方法主要取决于工程经验进行设置,存在数据监控漏项的风险,多线程方法属于全程监控数据状态,可保证数据监控完整性,如文献[13]将多线程技术用于了网络通信,解决了信号传递延时问题,文献[14]将多线程技术用于云计算中的资源配置,解决了云计算资源实时调度和资源高效利用问题。为了实现试验数据实时显示和处理,采用Qt多线程技术编写图形应用程序,遵循“子线程处理复杂的逻辑程序,主程序实时显示窗口内容”的原则,构建多任务并发的工作方式,提高应用程序的响应速度和工作效率[15-16]。其中在Qt中提供了与平台无关的最重要的线程类即QThread类,该类提供了创建一个新线程以及控制线程运行的各种方法。其基本技术原理描述如下。

当调用一个QThread对象的start()方法时,会创建一个新的线程并执行它的run()方法。默认地,run()会调用exec()方法进入自己的消息循环中,如图3所示。

图3 基于多线程的事件循环默认处理机制

图3中,主线程和工作线程都是执行事件循环。主线程的事件循环负责检测QObject对象(thr、w、objs)是否有消息处理,有的话则调用对象的slot方法。可以使用QObject::moveToThread方法将某个对象转移到其他线程中。程序实现代码如下。

Class Worker:public QObject{

Q_OBJECT

}

Void someFunc()

{

QThread thr = new QThread;

Worker worker = new Worker;

worker->moveToThread(thr);

Thr->start();

如果在主线程上调用someFunc(),则Thread和Worker在创建后都是关联在主线程上,当调用worker->moveToThread()后,worker对象可关联到新的线程中执行相关事件,如图4所示。

图4 基于多线程的事件循环动态处理机制

基于以上Qt多线程实现原理,可以设计出试验应变数据三维云图显示模块的多线程应用程序结构,如图5所示。其中窗口界面GUI线程是主线程,负责窗口事件处理,主要包含驱动软件运行流程和数据显示及对子线程进行控制,增开的子线程专门负责监控采集的试验数据状态,并完成复杂的数据逻辑操作,包含新数据解析和插值处理,待数据准备完毕即通过信号-槽机制关联主线程完成数据显示。

图5 Qt多线程应用程序结构

2.2 标量数据可视化接口技术

对于数据可视化,目前主流的包含基于VTK和Qt的混合编程实现的轻量化显示引擎[17],也包含基于商业可视化系统进行二次开发。主要基于自主可视化引擎SABRE.Visual通过接口封装,形成标量数据的可视化接口,完成应变数据的三维云图绘制。其中提供了基于三角形的区域填充法[18]。首先,建立离散的物理场量值与颜色的映射关系,如图6所示。

Vmin表示物理场量最小值,用蓝色表示;Vmax表示物理场量最大值,用红色表示;Vmid表示物理场量中间值,用绿色表示

其中单元内部整个区间(Vmin,Vmax)内的值都是采用Lagrange线性插值获得对应的颜色。简要的操作流程如图7所示,首先确定绘制的变量是否为节点变量,如果为单元变量则还需要转化类型;然后按照一定规律确定色谱,根据变量相对值选定颜色数值;最后通过OpenGL绘图命令对模型进行着色、融合和反走样处理,完成云图绘制。

图7 彩色云图绘制流程

2.3 基于Qt的用户控制界面设计技术

用户控制界面相当于模块的启动程序,同时也是软件模块的客户端控制台。如图8所示是试验应变三维云图实时显示子模块的客户端控制界面,主要采用基于Qt的图形界面设计方法[19-20],通过在SABRE.visual开发形成试验应变三维云图实时显示模块用户界面,包含视图控制、输入参数、数据加载状态信息和显示设置等,并且支持分镜头显示。

图8 试验应变三维云图实时显示模块用户界面

其中在多线程应用程序设计中,采用Qt自带的信号-槽的方式进行线程通信。通过在主线程重定义slot函数,在子线程中定义signal函数,通过connect函数实现信号与槽之间的通信,从而实现主线程与子线程之间的数据通信[20]。采用多线程可以提高程序的响应速度,在Qt应用程序中使用多线程只需子类化Qthread并且重新实现它的run()函数即可。

在分镜头显示操作中,关键是要保证显示数据模型的一致性和操作通信的同步性。在此首先需要定义共用的有限元模型数据modelData,作为分镜头初始化基础数据,再按照指定结构进行数据筛选,完成特定结构的显示;其次,分镜头同步操作需要指定主镜头mainView和副镜头secViewi,通过主镜头和程序主窗口进行鼠标操作通信mouseEvent,由主窗口向所有镜头发送操作信号Signal,同步完成操作响应。具体原理如图9所示。

图9 分镜头数据传递及同步操作响应原理

基于以上算法原理,采用C++和Qt混合编程实现试验应变三维云图显示模块,并在自主CAE图形引擎SABRE.visual上实现模块集成,最终效果如图10所示,可支持试验数据加载和实时显示,数据回放,同时通过分镜头操作可以关注局部结构受力情况,辅助试验分析过程。

图10 试验应变三维云图实时显示模块界面

3 试验应变片快速定位及关联显示技术

试验应变片快速定位及关联显示子模块主要功能是结合试验数据监控过程,对其中存在的坏片和所关注的应变片的位置信息进行实时快速的定位和关联显示,为试验人员查看数据,分析试验过程提供支持。鉴于该模块中对试验数据的监控技术原理与2.1节所述类似,以下主要针对基于三维模型的应变特征点图形绘制技术及应用效果进行阐述。

3.1 基于三维模型的应变特征点图形绘制技术

一般试验任务书提出的试验应变片数据信息文件格式如图11所示。通过采用Qt多线程技术实时监控应变测量数据状态,如有新数据即进行数据解析重构,按照有限元节点Grid数据结构重构试验应变片数据模板flimPosDataMap,作为特征点图形绘制的输入。

图11 试验应变片数据格式及数据结构

应变片特征点数据绘制接口可基于自主CAE图形引擎中的标准接口完成二次封装,程序逻辑如下。

//创建应变特征点底层数据

QMap::iterator pIt = flimPosDataMap.begin();

if (flimPosDataMap.size())

{

while (pIt != flimPosDataMap.end())

{

int cNodeID = pIt.key();

GRID fData = pIt.value();

float xyz[3];

xyz[0]= fData.x[0];

xyz[1]= fData.x[1];

xyz[2]= fData.x[2];

createNode(cNodeID, xyz);.//接口

++pIt;

}

}

//绘制应变特征点标注

GlDrawer m_glDrawer; //标准绘制接口类

m_glDrawer.drawLocalFlimNodeLabel();//重写特征点绘制接口函数

MarkupNode *pMarkup = new MarkupNode; //定义标注类

pMarkup->setFont(…); //设置标注字体

pMarkup->setNode(NID); //设置标注关联的特征点

pMarkup->updateFlimNodeValue(m_localFlimNodeInfos);//添加标注信息

drawMarkup(pMarkup); //绘制标注

3.2 应变片快速定位及关联显示模块研发

基于以上算法原理和基于Qt的软件模块用户控制界面设计方法,最终实现的软件模块界面如 图12 所示。当点击控制界面开始监控的按钮时,即可激活监控线程监测应变片关联文件状态,并实时读取数据内容,通过信号槽机制驱动主线程实时绘制应变特征点和标注信息。整个过程可实时在三维模型上通过高亮显示所关注的应变片特征点位置,并通过标注信息显示具体数据信息和周围关联的应变片,为试验分析人员提供直观体验。

图12 应变片快速定位及关联显示子模块界面

4 工程应用验证

结合航空结构试验需求,对以上实现的软件模块进行了测试应用验证,主要针对航空典型结构物理试验过程,基于有限元模型进行了试验应变数据的实时监控和云图显示,测试结果如表1所示,可以满足物理试验加载过程中间隔在5 s以内的实时性要求。

表1 典型结构试验应变实时监控显示实时性测试数据

如图13和图14所示为某航空型号静强度虚拟试验中的应用效果。其中图13为某飞机发动机虚拟试验中的应变数据三维云图实时监控与显示效果,可以看出本文方法能够实现离散试验应变数据的三维云图均布显示,且三维云图显示连续性好,并支持数据回放,从而为强度虚拟试验提供了三维可视化分析新手段,解决了实际工程问题。

图14 某航空型号虚拟试验工程应用(试验应变片快速定位)

如图14所示为某全机虚拟试验过程中的应变片关联显示应用效果,可以看出该模块支持实时在三维模型上通过高亮显示所关注的应变片特征点位置,并通过标注信息显示具体数据信息和周围关联的应变片,为试验分析人员提供直观体验。

5 结论

基于飞机结构静强度虚拟试验过程对于图形可视化的需求,中国飞机强度研究所基于自主CAE图形引擎SABRR.visual,自主突破了可支持“虚拟显示模块”研发的相关图形可视化关键技术,包含提出了基于Qt多线程的强度试验数据实时监控处理技术、试验应变片快速定位及关联显示技术、基于三角形区域填充的三维云图快速绘制技术和支持分镜头同步操作显示的用户界面设计技术等。通过这些关键技术的突破和系统整合,不仅成功实现了“虚拟显示系统”的基本功能要求,而且在航空型号试验中进行了现场应用,实现了CAE技术与工程应用的良好结合,创新了虚实融合的试验新模式,也为未来多专业强度试验虚拟显示和评定提供了技术借鉴。

猜你喜欢
线程云图绘制
成都云图控股股份有限公司
超萌小鹿课程表
放学后
黄强先生作品《雨后松云图》
浅谈linux多线程协作
基于TV-L1分解的红外云图超分辨率算法
云图青石板
在转变中绘制新蓝图
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究