飞机气动力工程估算的程序化实现方法
2014-02-19陈春鹏杨康智王莉萍
陈春鹏 杨康智 王莉萍
摘 要:飞机气动力工程估算是获取飞机气动力数据的主要手段,在方案设计的初期占有重要的地位。文章根据当前飞机气动力工程估算存在的数据处理繁琐、周期长、效率低等的主要问题,通过借助Matlab等工程软件,提出了一种实现飞机气动导数程序化计算处理的整体实现方法,这种气动力工程估算的自动处理方法一方面大大减少了计算周期、提高了工作效率。另一方面这种方法提高了计算结果的精度,为飞机气动力工程估算、气动布局参数调整提供了快速、有效手段。
关键词:气动力;工程估算;自动处理;Matlab应用
1 前言
在飞机研制设计方案初期,由于飞机初步设计方案的参数需要经常调整,而通过风洞试验和数值计算获取飞机气动力参数比较耗时,难以在较短时间内跟上参数调整的步伐,工程估算方法能够快速得出飞机不同气动布局的主要气动特性,以便通过反复迭代来对方案进行优化设计,因此工程估算在这期间占有比较重要的地位。然而,当前使用的工程估算的计算方法已经严重落后,没有最大限度展现出它在飞机方案设计阶段所具有的优势,其中主要问题在于:
1.1 目前采用的工程估算方法耗费的时间太长:工程估算的计算公式主要来源于大量风洞试验结果和前人经验总结,大部分属于半经验公式,计算过程中很多的气动参数要查阅图表,根据目前型号飞机的工程估算来看,提供一套完整的飞机气动导数,至少要查300个左右的图表,一个熟练的设计人员将近75%的时间耗费在查图取数上面,极大浪费了人力。
1.2 计算的结果累积误差较大:查表取数的过程中,图表网格稀疏,数据取值存在误差,并且不同设计人员从图上读到的数据也存在差异,而飞机的气动导数是相互联系相互影响的,前面导数的计算误差对后续导数的计算有很大的影响,这种误差的积累造成计算结果精度较差。
1.3 计算结果重复性不高:一方面,由于计算公式没有固化,因而同一总体参数下不同期的计算结果可能存在差异,另一方面,同一设计人员在不同时间的查图所得数据也存在差异。
出现这些问题的根源就是没有形成一套完整的自动化处理软件或者计算程序,结合目前的实际情况,文章基于Matlab等一些工程应用软件,提出一种方便、有效、快速实现对飞机气动力工程估算自动处理的方法。
2 实现工程估算程序化处理的方案流程
计划方案如图1。
图1 工程估算程序化处理方案的流程示意图
方案流程说明:第一步,建立整体方案的标准化库,由于整个方案实现的子程序和涉及的飞机气动力参数很多,为了便于设计人员相互协作并且使程序调用参数方便,在方案实施开始阶段要统一规定数据存储方式、各全局变量符号的定义、功能函数的命名方式等。第二步,开始对所有的曲线图表数字化,每条曲线存储为二维数组,同一图表的曲线统一存储在一个结构变量名下,最后根据命名规则存储为数据文件。第三步,编写查图所需参数的子函数,调用图表数据文件并根据曲线形态编写插值函数,然后存储为标准的M文件;然后根据飞机气动特性分类,根据参考公式和适用范围,编写每部分的子函数。第四步,对主程序的主要部分分别定义,做到计算状态、参数输入、计算方式的定义都通俗易懂,然后对程序各部分调试,验证程序运行无误并且没有冲突。第五步,对结果输出格式进行描述,调用曲线绘图等功能。第六步,后期处理工作,主要是编写可视化界面,方便结果的输入和输出,对飞机的气动特性有更直观的描述。
3 实现过程
3.1 图表曲线的数据化处理
由于工程估算需要查阅大量图表,因此首先解决的是联合getdata、Excel、Matlab软件的功能实现图表曲线的数据化过程:利用getdata软件主要利用它的自动取点功能,Excel可以将取到的数据点进行单调排序,利用Matlab读取数据并存储统一格式。以飞机机翼零升阻力估算时的升力面修正因子的经验曲线为例,它是马赫数和机翼最大厚度线后掠角的函数,数据化建模的过程如下:
3.1.1 把图像保存为.BMP位图文件,然后导入getdata软件,利用getdata软件定义好纵横坐标,利用它的自动取点功能把每条曲线转化成二维数组。得到的二维数组一定保证X坐标为单调函数(可以借助EXCEL的升序排列功能)。
3.1.2 在Matlab中建立图表数据的结构变量,例如:curve(M1,M2,M3,M4),假设M1, M2, M3, M4分别表示M1=0.25,M2=0.6,M3=0.8,M4=0.9的四条曲线,通过把取点得到的四个二维数组分别赋值给curve.M1,curve.M2,curve.M3,curve.M4。
3.1.3 利用Matlab的SAVE功能将结构变量存储为数据文件,例如:save curveXXX.mat curve(具体运用时可根据图表编号来命名,方便查找)以便以后的程序直接调用取值。
3.2 建立曲线取值的子函数
建立图表数据库后,还要从数据库中准确查找所对应的参数,才能达到精确取值的目的,根据2.1节建立的数据文件,如果给出最大厚度线后掠角?撰t/c,max和马赫数M,这就需要从curveXXX.mat文件中检索出所对应的RLS值。由于原始图表里面只有四条曲线,相对应只有四个二维数组,如果要查找任意马赫数下的RLS,那么唯一的办法就是插值,插值的具体方法可以用两点线性插值,三点线性插值或者非线性插值,选用什么方法根据曲线形态来决定。如果这些都写到主程序,那么会造成不易修改而且容易出错,为避免程序臃肿,可以使用Matlab的特色功能,建立一个曲线取值的功能函数。这个功能函数(M文件)可以供任何子函数调用。
3.3 创建分块函数
根据飞机气动力工程估算主要内容,可以根据飞机的气动特性分类建立分块函数,如升力特性、阻力特性、俯仰力矩特性等;也可以根据飞机部件来定义,例如机翼气动特性、机身气动特性、尾身组合体气动特性等。分块函数是互不干扰,可以互相调用彼此结果。以升力特性计算为例,其创建过程为:
3.3.1 定义函数function[Cy0,Cymax,C■■,?琢0,…]=ShengLiTeXing(bA,l,S,…),其中括号里面Cy0,Cymax,C■■,?琢0表示函数返回值,也就是要计算的气动导数方面输出,可根据需要进行添加;小括号里面bA,l,S表示变量名,也就是需要输入的飞机总体参数。
3.3.2 编写各气动导数的计算过程,例如需要查图1的曲线数值,那么可以直接调用子函数RLS=curve(M,?撰t/c,max)读取数据。
3.3.3 将计算的各参数结果统一存在规定格式的文件中,方便其它函数调用数据。
3.4 主程序运行示意图
前面建立很多各部分子函数和分块函数,其主要目的是简化主程序行数,方便输入,方便读写,复杂部分均写成了函数,让没有使用过Matlab的设计人员也能够娴熟调用函数并进行计算,以图2为例,主程序仅包含四个部分内容:
3.4.1 标号1部分的主要功能是进行计算空间的内存清理和所有计算方法的来源(参考资料),这部分不需要改动,仅供分析计算结果时参考;
3.4.2 标号2部分是计算状态输入和说明,包含飞行马赫数、飞行高度、大气运动粘性系数等,和所要计算的飞机飞行状态密切相关;
3.4.3 标号3部分主要是飞机主要几何参数输入,例如机翼形状参数,机身外形参数以及尾翼外形参数等,此处要求参数尽可能简化,中间参数不需要输入,具体输入参数需求根据计算内容而定。
3.4.4 标号4部分为主要的计算内容,根据需要计算的气动导数来调用相关函数,也可以在此对所需要的气动导数进行输出。例如,需要查看全机的C■■,那么仅需要输入C■■即可在Matlab主程序的运行状态栏即可看到C■■的输出结果。
4 界面可视化
根据前三节实现了气动力工程估算的自动处理的整个过程,并且程序也能够被不熟悉Matlab的人员操作使用,但存在参数输入不方便,容易对总体参数的输入产生错误,并且输出结果不便查找(需要对照符号表查找计算的导数符号)数值,输出不直观等问题。因而,需要对整个方案进行后期的可视化封装,这不仅使界面明了清晰,并且还可以对计算结果进行特定处理,更加直观体现飞机的气动特性。
4.1 参数输入功能:建立参数输入对话界面,通过中文文字说明,参数输入过程将不再需要和符号一一对应,这不仅减小了人为的输入错误,也提高了效率。
4.2 计算与数据输出: 参数输入完成以后,即可点击开始计算,默认状态下时将把可能计算的所有气动导数完全计算,实际编写程序时可加入对特定的导数进行计算。计算完成后可以将计算结果按已设定好的数据格式进行输出。
5 结束语
飞机气动力工程估算是飞机气动布局设计的一项重要工作,它的发展关系飞机气动布局设计的时间和成本。文章通过Matlab软件,提供了一种飞机气动力工程估算程序化自动处理方法,对存在的主要技术问题提供了解决的办法。这种工程估算程序化自动处理方法在XXX飞机气动力工程估算的过程中实现部分应用,体现出了高效、快捷的特点,并且计算结果的重复性精度很高。不足之处是功能还不是很强大。参考国内外同行在这方面的经验,基于文章基础,可以在后续工作将逐步加入结果分析、参数优化设计等功能,为设计人员提供一个较为完善的计算处理软件。
参考文献
[1]飞机设计手册总编委会.飞机设计手册(第六册)[M].北京:航空工业出版社,2002.
[2]董辰辉.MATlAB2008 全程指南[M].北京:电子工业出版社,2009.
[3]谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2009.
[4]达恩·亨赛尔曼.精通Matlab[M].西安:李人厚,等译.西安交通大学,1997.
作者简介:陈春鹏,男,工程师,研究方向:飞机气动力设计。
杨康智,男,工程师,研究方向:飞机气动力设计。
王莉萍,女,工程师,研究方向:飞机标准化设计。