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

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

中图分类号:TP391.9 文献标志码:A

Establishment of multi-fields in MSC Patran by interpolation functions of Matlab

ZHANG Sisi,WANG Deyu

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

Abstract:To establish large amount of multi-fields in MSC Patran,VC++ is used to import the multi-fields data and the related finite element model data into the Matlab program. Then the field data in text files is converted to suit the requirements of finite element model. By using VC++,the new field data obtained by Matlab is written into bdf file to realize the batch creation of multi-fields. The multi-fields created by MSC Patran are compared with those created by Matlab. The comparison shows the feasibility of the fields created by Matlab in finite element analysis. At last the thermal deformation of scan radiometer with multi-fields and multi-conditions is analyzed with the method of creating fields by Matlab. It shows the convenience of processing multi-fields and multi-conditions by using the method.

Key words:multi-fields;multi-cases;data importing;interpolation function;scan radiometer;thermal deformation;MSC Patran;Matlab

0 引 言

在有限元计算中经常需要创建场.一般描述场的方法是在整个场的时间或空间区域内,取一定数量的采样点,通过这些采样点的数据来描述场.采样点数据可以由测量或者计算方法得到.如果使用测量方法,采样点通常比较少.通过软件计算,则可以得到期望的采样点密度,但是如果计算采样点数据的模型与有限元计算模型不同,则这些采样点的位置很难与有限元计算所需要的加载位置一致.为解决该问题,开发商在有限元软件如MSC Patran中提供场功能.场功能其实是个插值功能,即利用已知采样点的数值,通过插值函数求解整个场域上任意点数值的功能.在MSC Patran中创建场的主要方法之一是通过表格手动输入数据,而实际工程中经常会遇到十分庞大的数据输入量,如某个场包含巨大的采样点数目,手动填写表格完成会十分困难甚至不可能完成,需要采用数据导入的方法完成场的建立.MSC Patran从2005版开始提供数据导入功能.[1]但是若有大量的场,则每个场都需要输入数据.在这种情况下,即使采用MSC Patran的导入功能,完成工作也十分困难.本文讨论用Matlab实现MSC Patran中数据导入创建场的功能及其在处理多场多工况扫描辐射计热变形分析问题中的应用.

1 利用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]汤清洪,王兴贵. Patran中采用数据导入的创建场方法[J]. 兵工自动化,2006,25(4):42-43.

[2]蒲俊,吉家锋,伊良忠. Matlab 6.0数学手册[K]. 上海:浦东电子出版社,2002.

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

[4]刘杰,陈泽志. 基于Matlab的样条插值[J]. 航空计算技术,2003,33(3):39-42.

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

matlab一维插值extrap,MSC Patran中基于Matlab插值函数的多场创建相关推荐

  1. MATLAB一维插值笔记与应用–十安辰

    MATLAB一维插值笔记与应用–十安辰 我们以一个题来了解一维插值,如下: ​ 天文学家在1914年8月份的7次观测中,测得地球与金星之间的距离(单位:m),并取其常用对数值与日期的一组历史数据,如表 ...

  2. matlab凸轮转子泵型线设计坐标变换,基于Matlab的双头双螺杆泵转子型线设计

    ? 基于Matlab的双头双螺杆泵转子型线设计 基于Matlab的双头双螺杆泵转子型线设计 朱君,张帆,吴高捷,孙亚静 (扬州大学机械工程学院,江苏扬州 225127) 摘要:选用长幅外摆线加上外摆线 ...

  3. MATLAB一维插值和二维插值

    插值问题描述:已知一个函数上的若干点,但函数具体表达式未知,现在要利用已知的若干点求在其他点处的函数值,这个过程就是插值的过程. 1.一维插值 一维插值就是给出y=f(x)上的点(x1,y1),(x2 ...

  4. 基于matlab的自动识别谱峰的程序设计,基于MATLAB的自动识别谱峰的程序设计

    基于MATLAB的自动识别谱峰的程序设计 (38页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 摘要 1一绪论 21. 1几种常用寻峰方法 ...

  5. 基于matlab的自动识别谱峰的程序设计,基于matlab的自动识别谱峰的程序设计毕业论文-资源下载人人文库网...

    基于matlab的自动识别谱峰的程序设计 毕业论文 目录摘要1一绪论211几种常用寻峰方法的简单说明212小波变换413MATLAB小波分析工具箱6二小波分析基本原理721一维连续小波分析722一维离 ...

  6. 基于matlab的发动机曲轴扭振测试研究,基于MATLAB的轴系扭振仿真研究

    基于MATLAB的轴系扭振仿真研究 以12 000 DWT油船推进轴系系统为背景,通过建立轴系扭转振动的仿真模型,介绍了扭转振动计算方法和仿真方法; (本文共3页) 阅读全文>> 随着电力 ...

  7. MATLAB实战系列(三十一)-基于MATLAB的异步电机调速系统仿真

    前言 本文从异步电动机的数学模型着手介绍一种基于matlab/simulink的异步电动机仿真模型,使用时只需要输入不同的电机参数即可. 文中涉及代码可参见 电力系统仿真-基于MATLAB的异步电机调 ...

  8. MATLAB已知坐标均匀取电,基于MATLAB带钢卷取电液伺服控制系统的分析(word文档良心出品)(11页)-原创力文档...

    系统动力学结课作业-基于MATLAB的 带钢卷取电液控制系统的研究 姓名: 王紫民 流水号:学号: 专业: 机械工程 日期: 2014.05.10 基于MATLAB^钢卷取电液伺服控制系统的分析 一. ...

  9. 基于matlab的智能天线波束方向图仿真,基于MATLAB的智能天线波束方向图仿真

    第29卷第6期孝感学院学报V OL,基于M AT LA B的智能天线波束方向图仿真,汪 睿1,(1,3,摘 要:结合一种直线阵智能天线模型,关键词:智能天线,中图分类号:T N911,随着移动通信技术 ...

  10. 基于matlab的语音信号基本处理系统,基于matlab的语音信号处理及分析

    内容简介: 毕业设计 基于matlab的语音信号处理及分析(共19页,8147字) 引言 数字信号处理的主要研究对象是数字信号,且是采用运算的方法达到处理的目的的,因此,其实现方法,基本上分成两种实现 ...

最新文章

  1. 在SharePoint Foundation 2010中显示来自其他站点的列表
  2. 以太网迎新增长 专家眼中的车载以太网及AVB技术
  3. C#导入Excel2010出现加载DLL失败或者类库未注册的问题,0x8002801D或者0x80029C4A .
  4. 获取选中的radio
  5. [剑指Offer]12.二进制中1的个数
  6. IDEA 部署项目的时候出错:Jar not loaded错误
  7. python操作MySQL实例
  8. 三连冠!百度PARL 拿下NeurIPS 2020电网调度竞赛双赛道冠军
  9. Cmake确实应该用到的时候再学
  10. 如何选择python书籍_关于 Python 的经典入门书籍有哪些?
  11. 【PHP 面试知识梳理】
  12. 唐郑国公魏征金口“斩龙台”梦斩泾河黄龙的传说
  13. python 求当前小时前n个小时
  14. java打开文件对话框
  15. 单片机和嵌入式设计的区别
  16. 序列化对象互转--Jackson中的ObjectMapper,解决超类派生问题,序列化问题
  17. 《AngularJS深度剖析与最佳实践》一2.10 承诺
  18. 小程序创业会有哪些坑
  19. vue webapp之music(六)利用axios与后端接口代理请求歌单推荐数据
  20. gazebo进程崩溃处理

热门文章

  1. imagej得到灰度图数据_老司机带你解锁ImageJ实用技巧(下)
  2. 机器学习评价指标 ROC与AUC 的理解和python实现
  3. npm发布vue组件库
  4. GNSS相关开源项目整理
  5. android relativelayout 垂直居中,RelativeLayout子控件垂直居中
  6. 计算机软件设计费计算标准,水利工程咨询、勘测设计费收费标准及计算程序
  7. [计算机系统-01] 计算机系统漫游
  8. UiBot无法抓取Google Chrome元素和数据抓取工具无法使用的解决方案
  9. 软件测试开发高频面试题及参考答案(适用校招)
  10. jvm内存模型、jvm内存结构、Java内存结构、Java内存模型(JMM)、Java对象模型的区别(吐血研究整理)