首页 > 编程知识 正文

matlab等距节点求插值多项式,matlab多项式插值函数

时间:2023-05-06 06:58:15 阅读:16208 作者:1172

摘要:为了在MSC Patran中实现字段的大规模创建,利用VC将包含多个字段数据的文本和与MSC Patran相关的有限元模型数据导入Matlab程序中; 然后利用Matlab的插值函数将文本中对应的域数据转换为与有限元模型的需求匹配的域数据; 用VC将Matlab求出的字段数据以卡片形式写入bdf文件,实现多字段批量生成,并与Matlab生成的字段的计算结果进行比较,说明有限元计算中Matlab生成的字段的可行性; 最后利用Matlab建立场的方法,计算多场多工况扫描辐射计的热变形分析问题,说明该方法在处理多场多工况时的方便性。

关键词:多次多案例; 导入数据; 插值函数; 扫描辐射计; 热变形; MSC Patran Matlab

中图分类号: TP391.9文献标识代码: a

establishmentofmulti-fieldsinmscpatranbyinterpolationfunctionsofmatlab

张世熙,王德玉

(State Key Lab. of Ocean Eng .Shanghai Jiaotong Univ .Shanghai 200030,China ) )。

abstract:toestablishlargeamountofmulti-fieldsinmscpatran, vcisusedtoimportthemulti-fieldsdataandtherelatedfiniteelementmodeldataintothematlabprogram.thenthefielddataintextfilesisco soffiniteelementmodel.byusingvc, thenewfielddataobtainedbymatlabiswrittenintobdffiletorealizethebatchcreationofmulti-fields.the multi-fieldscreatedbymscpati dby MATLAB.thecomparisonshowsthefeasibilityofthefieldscreatedbymatlabinfiniteelementanalysis.at last hermaldeformationofscation 多协调sisanalyzedwiththemethodofcreatingfieldsbymatlab.itshatedofcreatingfieldsbymatlab.its hated venienceofproced

key words :多字段; 多重情况; 数据导入; 国际功能; 扫描雷达; 热变形; MSC Patran Matlab

0领先

有限元计算中经常需要建立字段。 一般而言,描述字段的方法是在整个场的时域或空间域中获取一定数目的样本点,并从这些样本点的数据来描述字段。 样本点的数据可以通过测量或计算方法获得。 使用测量方法,样品点通常很少。 软件计算可以得到期望的样本点密度,但如果计算样本点数据的模型与有限元计算模型不同,为了解决这一问题,开发人员在MSC Patran等有限元软件中提供了现场功能。 实际上,场功能是使用已知样本点的数值通过插值函数获得整个场的任意点的数值的插值功能。 在MSC Patran中创建字段的主要方法之一是从表中手动输入数据。 在实际项目中,经常会遇到非常庞大的数据输入量。 例如,如果一个字段包含大量的采样点数,则手动填写表单非常困难或不可能,需要通过数据导入的方法完成字段的创建。 MSC Patran从2005版开始提供数据导入功能。 [1]但是,如果有大量字段,则必须为每个字段输入数据。 在这种情况下,即使采用MSC Patran的导入功能,完成工作也非常困难。 本文探讨用Matlab在MSC Patran中引入数据建立场的功能及其在处理多场多工况扫描辐射计热变形分析问题中的应用。

基于Matlab插值函数的场功能实现

1.1使用Matlab实现插值的Matlab一维插值函数支持特殊的外推算法extrap,而高维插值函数为超出插值范围的数据返回NaN。 [2]因此,用MATLAB编写外推程序时都应该用一维外推实现,用内插求解尽可能多的被求点。 每次进行插值计算时,使用尽可能多的采样点和已经求解的点。 对于插值函数的选择,可以容易地选择不同的插值函数。 插值的想法是,在应插值的区域有1个以上、且必须包含的区域中,首先利用已知

数值的点,按照一定坐标次序,在各个坐标方向下进行一维线性插值,包括内插值和外插值.这样,当所有坐标方向均插值完成后,便得到此区域边界和内部的部分数值.最后,利用以上所有已知数值点对待插区域上的所有待插值点进行插值.用1个二维的例子说明此插值方法,见图1.

正方形ABCD为待插值区域,正方形EFGH为1个略大于并且包含待插值区域的区域.点1至7为已知数值的点,即为采样点(图中用圆圈表示的位置).(1)在水平方向用采样点1,2,3做一维插值求得8和9(用采样点4和5插值求得10,11,12,用采样点6和7插值求得13,14,15);(2)在竖直方向用已知数据的点,包括采样点和在步骤1中已求得数值的点做一维插值,即利用点8,10,13插值求得点16和17(同理利用点1,11,6插值求得18和19,利用2,4,7插值求得20和21,利用3,5,14插值求得22和23,利用9,12,15插值求得24和25);(3)利用点1至25的值,对区域ABCD中的所有待求点进行二维插值求解.用XN表示点N的x坐标,用YN表示点N的y坐标.水平向右为x轴正方向,垂直向上为y轴正方向.此例的Matlab程序为(参照图1)

步骤1:在x方向的线插值

Xt1=[X1 X2 X3];Xt2=[X2 X3];Xt3=[X1 X2];X=[X8 X1 X2 X3 X9];Temp1=[T1 T2 T3];Temp2=[T4 T5];Temp3=[T6 T7];row1=interp1(Xt1,Temp1,X,[],‘extrap’);row2=interp1(Xt2,Temp2,X,[],‘extrap’);row3=interp1(Xt3,Temp3,X,[],‘extrap’);

步骤2:在y方向的线插值

Yt=[Y1 Y11 Y6];Y=[Y18 Y1 Y11 Y6 Y19];Temp1=[row1(1,1) row2(1,1) row3(1,1)];Temp2=[row1(1,2) row2(1,2) row3(1,2)];Temp3=[row1(1,3) row2(1,3) row3(1,3)];Temp4=[row1(1,4) row2(1,4) row3(1,4)];Temp5=[row1(1,5) row2(1,5) row3(1,5)];line1=interp1(Yt,Temp1,Y,[],‘extrap’);line2=interp1(Yt,Temp2,Y,[],‘extrap’);line3=interp1(Yt,Temp3,Y,[],‘extrap’);line4=interp1(Yt,Temp4,Y,[],‘extrap’);line5=interp1(Yt,Temp5,Y,[],‘extrap’);

步骤3:在待求区域上的插值

Temp=[line1’ line2’ line3’ line4’ line5’];X=[X8 X1 X2 X3 X9];Y=[Y18 Y1 Y11 Y6 Y19];P=[];%区域ABCD中所有待插点

%的x坐标的数组.R=[];%区域ABCD中所有待插点

%的y坐标的数组.Tnode=interp2(X,Y,Temp,P,R,‘’);程序说明:插值函数interp的method,在上面均为缺省方法,即线性方法.method的具体选取可以根据采样点的分布情况和对插值精度的要求以及场的分布特点决定.最后得到的数组Tnode即为包含所有待求点结果信息的数组,要注意最后1步的P和R之间的一一对应关系,并且最后Tnode中的结果数据和P与R也是对应的.注意:本例中的采样点和待求点均较少,且采样点位置均在node上.而采用此方法时,通常采样点位置不会与node位置一致,并且待求位置也不一定就是node位置,而此方法对此并无要求.

1.2 程序中数据输入与结果输出插值程序计算所需要的信息有:采样点的坐标和数据,待求位置的坐标.采样点的信息通常以文本形式给出,即data text.如Excel表格文件、txt文本等.待求点的坐标位置可以在建立好有限元模型后,用MSC Patran输出模型的report文件获取.如待求位置为有限元模型的节点位置,则可以先生成节点坐标的report文件,或者bdf文件,然后从这些文本中获取.程序返还的结果有:待求位置的值.在求解待求位置的数值以后,通过计算机程序(VC++,Matlab等),按照相应的MSC Nastran卡片格式,将结果数据处理后写入bdf文件生成场.数据的读入写出可以根据data text的特点,如Excel,txt等进行导入导出.[3]也可通过Matlab自身的读写函数进行,甚至使用复制粘贴的方式实现.插值程序选用Matlab函数,因为这些函数是经专家采用通用算法开发完成的,并针对矩阵的执行效率进行优化,在数值计算方面完全可以替代其他编程语言.但是,由于Matlab在编写文本与程序之间接口时灵活性不足,所以可使用一些高级计算机语言实现数据接口的专门编写,发挥软件各自的优势.[4]在下例中,数据接口由VC++编写.

2 计算实例

分析圆盘结构的热变形.先利用热分析计算得到1个温度场,然后使用4种方法求解圆盘热变形.有限元模型见图2,圆盘内接正方形边长为1 m,左下顶点为坐标原点,图中约束为全约束.对该结构进行热力学分析.设置模型参数如下:材料热导率为25 W/(m・K);对流系数为0.5 W/(m2・℃);环境温度为20 ℃;圆盘厚度为0.01 m,面积热流量为7 000 W/m2;加载面积为0.1 m2,加载在图2带黑圈的节点上.分析后得到的温度分布见图3.图3中,取9个点作为采样点(图2中黑三角位置),“测量”(通过report文件)获得9个采样点的温度,见表1和2.

分析结构的热变形.设置结构的初始温度为20 ℃;假定材料的弹性模量为200 MPa;泊松比为0.27;热膨胀系数为3E-5/℃.方法1:将热力学分析得到的温度分布结果(见图3)在MSC Patran中保存为1个场,将此场加载到圆盘结构上,计算得到结构的热变形结果见图4.在可以预先求得温度场的情况中,此方法是计算结构热变形的一般方法,也是精度最高的方法.方法2:采用MSC Patran中的场功能,将表1中数据在场中用手动输入表格的方法生成场,将场加载在结构上进行计算,结果见图5.此方法为MSC Patran支持的场创建方法,也是最常用的场创建方法之一,因此精度是可信的.

方法3:利用Matlab插值函数实现场的加载,一维和二维均采用线性插值,结果见图6.

方法4:采用一维3次插值,二维线性插值的Matlab插值函数生成场加载计算.结果见图7.

与方法3相比,方法4的一维插值函数阶次由1次升至3次,以期获得更接近于“真实”的插值效果.

比较结果:4种方法得到的最大位移节点为同一节点.用后3种方法得到的结果中所有节点坐标与第1种方法得到的结果中所有节点坐标一一对应地进行相减,再计算这些坐标差的平方和.用4种方法得到的最大位移量及坐标差平方和的比较结果见表3.

从表3可见,后3种方法与方法1的最大位移差均小于5%.另从坐标差平方和上考虑,平方和均在1×10-4 m与2×10-4 m之间,那么按照两种极端情况考虑:(1)只有1个节点有误差,则可推出该节点的误差在1×10-2 m与2×10-2 m之间;(2)所有节点拥有相同绝对值的误差量,而模型共有193个节点,则可推出所有节点的误差在8×10-4 m附近.通过本例可以看出,利用Matlab插值函数实现的场功能(方法3和4)与MSC Patran自带的场功能(方法2)进行计算,得到的结果十分接近,说明Matlab插值方法在MSC Patran中创建场的可行性.但是通过比较方法3和4的结果,可以发现在本例中,采样点数量很少的情况下,高阶插值函数并未带来更精确的结果.下文以扫描辐射计的热变形分析为例,说明Matlab创建温度场在多场多工况实际问题中的运用.在此扫描辐射计分析中,考虑到模型中每个构件温度场的采样点数量均较少,而增加插值函数的阶次并不能改善场的插值效果,所以采用低次插值生成场的方法(方法3)进行插值处理.

3 扫描辐射计热变形分析

扫描辐射计热变形分析工作是对扫描辐射计装置进行热变形及热应力的分析,分析包含696组工作温度场,1 392个工况.扫描辐射计的有限元模型包含体单元、板单元和梁单元.整体模型由42个构件组成,共计包含119 525个节点,108 962个单元,见图8.

工作温度场由Excel文件给出,文件的每一列为1个工况,每个工况包含扫描辐射计各个构件的采样点温度值,并且每个构件的温度场也是独立的,其形式见图9.

扫描辐射计热变形分析是典型的以温度场为载荷的多场多工况问题,并且场与工况的数量都很庞大,利用MSC Patran中创建场的方法完成工作十分困难.考虑使用上述的场创建方法,由于其数据输入不依赖于MSC Patran,而是通过接口程序,所以在数据的格式上相对比较自由,只要采样点的数据文本格式比较有规律,或者可以转换为比较有规律的文本格式,就能通过接口程序实现对各种格式的数据进行读入.而在本例中,场数据文本中的数据格式有明显可循的规律.如此,接口程序就可以较容易地在包含多个场信息的Excel中对各个场数据进行识别,从而实现批量处理多个场.所以,选用文中方法,以文本导入方式实现场创建,采用低次插值生成场的方法(方法3),以温度值加载在模型节点上的方式进行扫描辐射计的热场加载,具体步骤如下: 在有限元模型建立后,通过生成各个构件的bdf文件,得到各构件的所属节点及其坐标位置.将某个构件的节点信息和与其对应的某工况温度场文件读入Matlab程序,生成1段包含此构件中所有节点温度的结果数据,再通过VC++将结果数据处理后写成MSC Nastran的卡片格式.把所有构件都如此处理,就得到整个模型的1个工况下完整温度载荷输入.把如图9所示的工作温度场文件读入Matlab保存为1个矩阵,然后逐列对其数据作上述处理,就可以得到各个工况载荷下的温度加载数据.把这些数据读入VC++,以10个为1组生成具有10个工况的bdf文件,然后利用DOS批处理命令将这些bdf文件进行计算.这样,可顺利完成原本即使通过MSC Patran文本导入方式生成场也十分难以完成的工作.

4 结 论

利用Matlab创建场的数据导入方法,与MSC Patran自带的数据导入创建场的功能有所不同.MSC Patran中无论是手动输入还是文本导入创建场,都是利用程序自身的插值功能求解数据,而本文方法中的插值函数用Matlab程序编写.利用Matlab插值函数创建场,虽然在灵活性和批量处理中有优势,但是插值函数的编写较烦琐,当在三维空间内编写插值函数时会更加复杂.并且插值函数与零件一一对应,其通用性较差,需要对具体的模型编写具体的函数,如果能够找到1种比较通用的算法编写插值函数就可以提高工作效率.而如果能按照实际工程中场的分布特点,对具体的场作出符合其分布规律的插值方案,做到具体问题具体分析,则可以改善计算精度.

参考文献:

[1]mhdjmg,mndyet. Patran中采用数据导入的创建场方法[J]. 兵工自动化,2006,25(4):42-43.

[2]鳗鱼洋葱,吉家锋,frdsl. Matlab 6.0数学手册[K]. 上海:浦东电子出版社,2002.

[3]ssdds,wwdgs. 海量数据导入与导出Matlab的有效方法[J]. 数理统计与管理,2007,26(4):649-655.

[4]yydss,称心的毛衣. 基于Matlab的样条插值[J]. 航空计算技术,2003,33(3):39-42.

“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。