基于JSON格式的强度校核软件数据交互接口设计

2021-10-28 07:50许向彦王立凯
软件导刊 2021年10期
关键词:校核解析界面

艾 森,许向彦,王立凯

(中国飞机强度研究所计算结构技术与仿真中心,陕西西安 710065)

0 引言

随着计算机技术及计算力学的快速发展,有限元法作为工程分析的有效方法,在理论、方法、计算机程序开发及应用领域的拓展等方面均取得了举世瞩目的成绩[1]。尤其如Nastran、ANSYS、Abaqus 等大型有限元软件的迅速壮大,使得有限元法的应用向着大型化、通用化的趋势稳步发展。大型通用有限元软件对于静力、动力、非线性、稳定性问题一般可以获得满意的解答,并可解决许多复杂的工程问题[2-5]。

大型通用有限元软件的特点是通用性强,但在专用方面表现不足,无法快速适应工程应用带来的新问题[6]。而且大型通用有限元软件开发难度很大,如果想在通用有限元软件基础上,快速开发专门问题的软件工具,则时间周期难以赶上工程进度。为解决这一矛盾,现有的做法基本是在通用有限元软件平台上进行二次开发,或将专用软件整合到通用有限元软件平台上作为单独模块,并与通用有限元平台实现前后置交互。其中,由中国飞机强度研究所研发的强度校核软件就选择了第二条道路,实现了强度校核专用工具的研发与集成[7-8]。

强度校核软件以飞机结构静强度分析作为应用对象,包含金属结构和复合材料结构的强度分析与校核。该软件采用Python 语言编写,作为独立的求解器集成到大型通用有限元软件HAJIF 平台上,并借助HAJIF 平台的前后置界面实现数据交互和结果可视化。由于HAJIF 平台提供的前端界面和结果可视化都采用C++语言编写,而强度校核软件求解器作为独立模块,采用Python 语言编写,造成前后数据的通信隔离,必须定义一种统一的格式作为前后置与求解器数据交互的媒介。

为实现强度校核软件求解器与前后置的快速通信,采用JSON 格式的文件作为数据交互媒介。HAJIF 平台提供的前端界面生成强度校核所需的参数文件,并以JSON 格式写出。求解器读取JSON 文件进行解析,并根据解析结果完成相应的强度校核任务,再以JSON 格式将校核结果返回到前端界面,用于结果的显示与查询。本文对基于JSON 格式的强度校核软件数据交互接口的设计和实现过程进行说明,为类似专用模块开发提供参考。

1 强度校核流程与数据交互机制

以飞机蒙皮结构压缩稳定性校核流程作为案例进行说明。如图1 所示,对于大曲率的飞机蒙皮结构,在校核压缩稳定性上,可将其简化为承受均匀轴向压缩载荷的矩形平板,其弹性临界应力可按式(1)计算[9-10]:

其中,b为加载边宽度;δ为板厚度;E为材料弹性模量;μe为材料弹性泊松比;Kc为压缩临界应力系数,与板的边界支持条件及长宽比(a/b)有关。

Fig.1 Compressed plate parameters and load form图1 压缩平板参数及受载形式

利用式(1)计算获得σcr后,将其作为许用值。为获得结构的安全裕度,还需要从总体有限元分析结果中获取结构的工作应力。因此,强度校核流程主要包含两部分:结构的许用值计算和工作应力的提取。在得到许用值和工作应力后,即可利用式(2)计算安全裕度:

其中,[σ]为结构的许用应力,可以是正应力或剪应力,有时也可以是结构的许用力;对应地,σ为结构的工作应力,同样可以是正应力、剪应力或工作力。

从以上案例可见,强度校核基本流程为首先获取强度计算公式中所需要的参数,然后进入求解器中根据参数确定校核类型(如蒙皮压缩、蒙皮剪切、长桁压缩等),并调用相关计算公式获得校核部位的许用值。进一步从总体有限元分析结果中提取工作应力,计算安全裕度,输出校核结果并返回到后置显示界面。

强度校核总体流程及软件实施主要过程如图2 所示。在该流程中,数据交互接口主要存在于两个阶段,一是由HAJIF 平台提供的前端界面生成的强度校核参数文件(如图2 中的“数据交互接口1”),该文件将作为求解器输入文件;二是经过求解器计算输出的结果文件(如图2 中的“数据交互接口2”),该文件将由前端界面读取并进行结果可视化。

Fig.2 Strength check overall process and software implementation process图2 强度校核总体流程及软件实施过程

上述数据交互文件可以采用各种格式实现,如文本格式、XML 格式、JSON 格式等。但文本文件格式零散、不容易解析,作为求解器的输入文件时,需要进行二次解析,增加了较大的工作量;而XML 由于文档庞大、格式复杂、数据冗余、解析消耗太多系统资源等固有缺陷,使其执行效率低下[11]。

JSON 是一种能够代替XML 的轻量级数据交换格式,在扩展性和可读性上与XML 相当,但在数据传输效率和解析难度上远优于XML[12-13]。该格式已在多个领域进行了大量应用[14-17]。因此,为统一强度校核软件的数据交互,本文以JSON 格式作为数据交互媒介,用于参数文件和校核结果文件的数据传输。

2 数据交互接口设计及程序实现

2.1 数据交互接口设计

在本文研发的强度校核软件中,数据交互接口是链接HAJIF 前后置和求解器的唯一媒介,扮演着参数传递和任务分发的角色。从“数据交互接口1”来讲,用户在强度校核软件前端界面(见图3)中定义好相关参数和计算任务后,形成求解器的输入文件,由求解器内部子程序对其进行解析,完成相关计算任务。

“数据交互接口1”定义的参数主要包括3 类:基本控制参数、结构及材料参数、结果提取参数。其中,基本控制参数决定当前校核类型及相关模型存放路径等信息;结构及材料参数将根据当前校核类型所采用的计算公式确定;结果提取参数也将根据当前校核类型及校核部位确定。

求解器通过解析“数据交互接口1”的参数,并调用相应的强度计算程序及结果提取程序完成许用值计算、工作应力提取及安全裕度获取;然后输出“数据交互接口2”的数据模型,返回到前端界面进行结果可视化显示。“数据交互接口2”主要由计算的许用应力、提取的工作应力及安全裕度构成。

在数据交互过程中,交互接口均以JSON 格式的数据模型作为交互媒介,从而实现强度校核软件高效的数据流转,如图4、图5 所示。

Fig.3 Front-end interface of strength check software图3 强度校核软件前端界面

Fig.4 JSON data model output by the front-end interface图4 前端界面输出的JSON 数据模型

Fig.5 JSON data model output by the solver software图5 求解器输出的JSON 数据模型

2.2 基于JSON 格式的数据交互程序实现

强度校核软件前端界面和结果可视化部分均采用C++语言编写,而求解器部分采用Python 语言编写。因此,对于JSON 格式的数据文件将涉及两种语言。当用户在前端界面上完成相关参数的定义后,先由C++语言输出JSON 数据文件;然后进入到求解器,利用Python 语言进行解析并完成计算。生成的结果将由Python 输出为JSON 的数据文件,并由C++进行读入解析,实现可视化显示。

2.2.1 基于C++的JSON 格式文件读写实现

前端C++对JSON 数据文件的写出与读入采用jsoncpp库实现。jsoncpp 是一个开源的轻量级C++json 解析库,允许操作JSON 值,包括与字符串之间的序列化和反序列化。它还可以在反序列化/序列化步骤中保留现有注释,使其成为存储用户输入文件的便捷格式。

为实现JSON 文件的写出与读入,需要jsoncpp 中的Json::Value,Json::Reader,Json::Writer 等3 个基本类。3个基本类的执行过程如图6 所示。

Fig.6 Three basic classes execution process of Jsoncpp library图6 Jsoncpp 库3 个基本类的执行过程

Json::Reader 的作用是将字符串解析为Json::Value 对象,解析使用Reader 对象的parse 函数。以蒙皮压缩数据结构输出为例,其伪代码如下:

Json::Writer 是一个虚类,不能直接使用,可以通过它的两个子类Json::FastWriter 和Json::StyledWriter 进行输出显示。两者的区别是:FastWriter 显示的内容去掉了格式(回车等),为纯字符串,而StyledWriter 保留了格式。同样以蒙皮压缩数据结构输出为例,其伪代码如下:

2.2.2 基于Python 的JSON 格式文件读写实现

相较于C++语言,Python 对JSON 格式文件的读入、解析及写出都要简单得多,Python 通过调用JSON 库实现JSON 文件的操作。主要应用到JSON 库中的4 个模块有:dumps、dump、loads、load。其中,dumps 将数据类型转换为字符串类型;dump 将数据类型转换成字符串并存储在文件中;loads 将字符串转换成数据类型;load 打开文件,并将字符串转换成数据类型。

如图7 所示,采用Python 解析JSON 文件,首先导入JSON 库,并利用loads 或load 模块打开加载数据;然后将加载后的数据转换为Python 语言中的字典格式,字典中的成员以“键:值”的形式作为各参数名及取值的数据规则。同样地,在求解器内部完成强度校核后,其校核结果也将以字典形式构建结果的参数形式,利用dump 模块将其写出到本地文件中,并提供给前端界面进行结果显示及可视化。

Fig.7 Execution flow of Python JSON library图7 Python JSON 库执行流程

3 验证算例

为说明本文所设计的数据交互接口及实现过程的可行性,以某型飞机机翼上壁板结构为验证对象,说明其主要过程。某型飞机上壁板部分有限元模型对应结构由蒙皮和“工”字型筋条组成。根据总体有限元分析,上壁板沿展向(图中Y 向)主要承受压缩载荷,因此针对各区域进行蒙皮压缩稳定性校核。上壁板蒙皮压缩稳定性校核区域如图8 所示,中间两个翼肋之间的蒙皮共划分为5 个校核区域。该区域材料牌号为7050-T7451,根据式(1)所需参数,由前端界面输出的JSON 文件,将由5 个Elm_group_i(i=1,2,……,5)组成,每个Elm_group_i 包含基本控制参数、结构及材料参数、结果提取参数。

Fig.8 Check area for compression stability of upper panel图8 上壁板蒙皮压缩稳定性校核区域

当求解器读入前端界面生成的JSON 文件后,进行内部解析,并调用平板压缩稳定性计算子程序进行压缩许用应力计算。5 个校核区域的结构参数基本一致,因而计算出的压缩许用应力均为91.99MPa。调用工作应力提取子程序,按每个区域最大工作应力进行提取,其值分别为-17.94MPa、-18.07MPa、-18.70MPa、-19.01MPa、-18.92MPa,由此可获得各区域的安全裕度。

将校核结果写入JSON 文件,被前端界面读取解析,进行可视化显示。校核区域安全裕度云图显示结果如图9 所示,由于提取到的工作应力结果不同,各区域的安全裕度计算结果也不同。由上述流程和校核结果可知,基于JSON格式的数据交互可作为强度校核软件的数据通信接口,可支撑强度校核全流程的数据高效流转。

Fig.9 Safety margin cloud chart of the check area图9 校核区域安全裕度云图显示

4 结语

航空结构分析专用软件研发一直都是型号研制的关键工具。本文针对航空航天大型装备研发了强度校核软件,并集成于HAJIF 平台。为解决与HAJIF 平台前端界面数据交互接口不统一等问题,提出以JSON 格式作为数据交互的媒介,并阐述利用C++和Python 语言解析JSON 文件的主要过程,通过验证算例说明了基于JSON 格式进行数据通信的可行性。采用这种数据格式,可以将前后置界面和求解器的研发任务进行分离,降低了系统编程的复杂性,为未来航空结构专业软件研发奠定了良好基础。

猜你喜欢
校核解析界面
发电机进相试验失磁保护与低励限制配合关系的校核
国企党委前置研究的“四个界面”
通行费校核分析方法探究
睡梦解析仪
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
人机交互界面发展趋势研究
相机解析
手机界面中图形符号的发展趋向
基于Mathematica的失磁保护与低励限制配合的校核
高压电器设备选择校核技术要求