航空航天结构中的有限元方法编程作业资料.docx
- 文档编号:5003805
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:12
- 大小:250KB
航空航天结构中的有限元方法编程作业资料.docx
《航空航天结构中的有限元方法编程作业资料.docx》由会员分享,可在线阅读,更多相关《航空航天结构中的有限元方法编程作业资料.docx(12页珍藏版)》请在冰点文库上搜索。
航空航天结构中的有限元方法编程作业资料
航空航天结构中的有限元方法
编程大作业
姓名
熊蕾
班级
110514
学号
11051121
一、使用程序介绍
由于有限元刚度方程求解过程是一个矩阵运算的过程,使用matlab编写程序会比C语言更加方便。
MATLAB是近年来得到迅速发展的数学软件,它将高性能的数值计算和可视化集成在一起,并提供了大量内置函数,被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和实际工作。
二、数据文件生成程序
为了方便计算程序读取数据,我编写了以下程序来生成txt数据文件,这样所得的数据文件中数据储存的格式正是计算时需要的格式。
formatlong
nn=input('请输入节点总数\n')%节点数
nm=input('请输入单元数\n')%单元数
L=input('请输入各杆件的长度,用分号隔开,单位为:
m\n')%各单元长度(单位:
米)
E=input('请输入弹性模量,单位为:
GPa\n')%弹性模量
A=input('请输入杆件截面积,单位为:
m^2\n')%截面积
Q=input('请输入各杆倾角,用分号隔开,单位为:
度\n')%各杆倾角
JM=input('请输入各杆对应的节点(同一杆的节点序号用空格隔开,不同杆之间用分号隔开)\n')%各杆对应的节点(同一杆的节点序号用空格隔开,不同杆之间用分号隔开)
nf=4%外载荷数量
F=input('请输入外载荷,单位为:
kN\n')%外载荷矩阵
bc=input('请输入边界条件,被约束自由度序号的元素置1,未被约束置0')%边界条件,有位移约束的置1
data=zeros(11,2*nn)
data(1,1)=nn
data(2,1)=nm
fori=1:
nm
data(3,i)=L(i,1)
end
data(4,1)=E
data(5,1)=A
fori=1:
nm
data(6,i)=Q(i,1)
end
fori=1:
nm
data(7,i)=JM(i,1)
end
fori=1:
nm
data(8,i)=JM(i,2)
end
data(9,1)=nf
fori=1:
2*nn
data(10,i)=F(1,i)
end
fori=1:
2*nn
data(11,i)=bc(1,i)
end
filename=input('请输入保存的文件名\n','s')
fid=fopen(filename,'w');
fprintf(fid,'%f%f%f%f%f%f%f%f%f%f%f%f\n',data)
fclose(fid)
运行这个.m文件,在指引下输入各项数据,最后能在工作目录下生成文件名可以自定义的txt数据文件。
由于时间仓促,编写时设置的输入量写成了杆件长度和杆件的倾斜角,今后可对这些进行改进,输入节点坐标,然后由
可得出相应杆件的长度和倾角。
另外,也可以不使用这个小程序生成数据文件,只要存储数据时按照格式存成一个矩阵,计算程序就能读取相关数据进行计算。
三、计算程序
编写的计算程序如下,matlab对矩阵的操作十分方便,首先读入数据并将它们存入一个名为data的矩阵,再用这个矩阵对各参数进行赋值,组装总体刚度矩阵也可以很轻松地进行,因为编程时设置的字长比较短,为确保计算精度,在引入边界条件时用了置1法。
filename=input('请输入生成的数据文件的文件名\n','s')
fid=fopen(filename,'r');
[data,count]=fscanf(fid,'%f%f%f%f%f%f%f%f%f%f%f',[11inf]);
fprintf(1,'%f%f%f%f%f%f%f%f%f%f%f',data);
fclose(fid)
%读入数据
nn=data(1,1)
nm=data(2,1)
fori=1:
nm
L(i,1)=data(3,i)
end
E=data(4,1)
A=data(5,1)
fori=1:
nm
Q(i,1)=data(6,i)
end
fori=1:
nm
JM(i,1)=data(7,i)
end
fori=1:
nm
JM(i,2)=data(8,i)
end
nf=data(9,1)
fori=1:
2*nn
F(i,1)=data(10,i)
end
fori=1:
2*nn
bc(i,1)=data(11,i)
end
ndof=2;%平面桁架节点自由度数为2
q=Q*pi/180;
a=cos(q);
b=sin(q);
K2=zeros(nn*ndof);
fore=1:
nm%对每一个单元(杆)
k=A*E/L(e)*[a(e)^2,a(e)*b(e);a(e)*b(e),b(e)^2];
K=[k,-k;-k,k];%总体坐标系下单元刚度矩阵
K1=zeros(nn*ndof);
%组装总体刚度矩阵
m=JM(e,1);n=JM(e,2);
K1((2*m-1),(2*m-1))=K(1,1);
K1((2*m-1),(2*m))=K(1,2);
K1((2*m-1),(2*n-1))=K(1,3);
K1((2*m-1),(2*n))=K(1,4);
K1((2*m),(2*m-1))=K(2,1);
K1((2*m),(2*m))=K(2,2);
K1((2*m),(2*n-1))=K(2,3);
K1((2*m),(2*n))=K(2,4);
K1((2*n-1),(2*m-1))=K(3,1);
K1((2*n-1),(2*m))=K(3,2);
K1((2*n-1),(2*n-1))=K(3,3);
K1((2*n-1),(2*n))=K(3,4);
K1((2*n),(2*m-1))=K(4,1);
K1((2*n),(2*m))=K(4,2);
K1((2*n),(2*n-1))=K(4,3);
K1((2*n),(2*n))=K(4,4);
K2=K2+K1;
end
disp('总刚度矩阵为:
')
K2
fori=1:
2*nn%置1法引入边界条件
ifbc(i,1)==1
forj=1:
2*nn
K2(i,j)=0
K2(j,i)=0
end
K2(i,i)=1
F(i,1)=0
end
end
V=K2\F;%求解位移向量
fori=1:
2*nn
u(i,1)=V(i,1)
end
disp('各节点的位移为:
(单位:
μm)')
u
将数据文件放在matlab工作目录下,然后运行这个.m文件,输入数据文件的文件名,如exm1.txt,稍作等待,就可以看到计算的结果——各节点的位移向量。
四、例题求解
例1:
数据为:
6.00000010.0000009.14400070.0000000.0100000.0000003.0000005.0000004.0000000.0000000.0000000.0000000.0000009.1440000.0000000.0000000.0000001.0000003.0000000.0000001.0000000.0000000.0000000.0000009.1440000.0000000.0000000.0000004.0000006.0000000.0000000.0000000.0000000.0000000.0000009.1440000.0000000.0000000.0000002.0000004.0000000.000000-1.0000000.0000000.0000000.0000009.1440000.0000000.00000090.0000003.0000004.0000000.0000000.0000000.0000000.0000000.0000009.1440000.0000000.00000090.0000001.0000002.0000000.0000001.0000000.0000000.0000000.00000012.9300000.0000000.000000-45.0000004.0000005.0000000.0000000.0000000.0000000.0000000.00000012.9300000.0000000.00000045.0000003.0000006.0000000.000000-1.0000000.0000000.0000000.00000012.9300000.0000000.000000-45.0000002.0000003.0000000.0000000.0000001.0000000.0000000.00000012.9300000.0000000.00000045.0000001.0000004.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.000000
运行后结果是:
图1例1结果截图
例2:
生成的数据为:
11.00000021.0000004.00000070.0000000.0100000.0000001.0000002.0000004.0000000.0000001.0000000.0000000.0000004.0000000.0000000.0000000.0000002.0000003.0000000.0000000.0000001.0000000.0000000.0000004.0000000.0000000.0000000.0000003.0000004.0000000.0000000.0000000.0000000.0000000.0000004.0000000.0000000.0000000.0000004.0000005.0000000.0000000.0000000.0000000.0000000.0000004.0000000.0000000.0000000.0000005.0000006.0000000.0000000.0000000.0000000.0000000.0000004.0000000.0000000.0000000.0000006.0000007.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.00000045.0000001.0000008.0000000.0000001.0000000.0000000.0000000.0000004.0000000.0000000.0000000.0000008.0000009.0000000.0000000.0000000.0000000.0000000.0000008.0000000.0000000.0000000.0000009.00000010.0000000.0000001.0000000.0000000.0000000.0000004.0000000.0000000.0000000.00000010.00000011.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.00000045.00000011.0000007.0000000.0000001.0000000.0000000.0000000.0000004.0000000.0000000.00000090.0000002.0000008.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.00000045.0000002.0000009.0000000.0000000.0000001.0000000.0000000.0000005.6570000.0000000.000000-45.0000003.0000008.0000000.0000000.0000001.0000000.0000000.0000004.0000000.0000000.00000090.0000003.0000009.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.000000-45.0000004.0000009.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.00000045.0000004.00000010.0000000.0000000.0000000.0000000.0000000.0000004.0000000.0000000.00000090.0000005.00000010.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.00000045.0000005.00000011.0000000.0000000.0000000.0000000.0000000.0000005.6570000.0000000.000000-45.0000006.00000010.0000000.0000000.0000000.0000000.0000000.0000004.0000000.0000000.00000090.0000006.00000011.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.000000
运行后结果为:
图2例2运行结果截图
例3:
数据:
11.00000018.0000006.35000070.0000000.0100000.0000001.0000002.0000005.0000000.0000000.0000000.0000000.0000006.3500000.0000000.0000000.0000002.0000004.0000000.000000-88.9700000.0000000.0000000.0000006.3500000.0000000.0000000.0000004.0000006.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.0000000.0000006.0000008.0000000.000000-88.9700000.0000000.0000000.0000006.3500000.0000000.0000000.0000008.00000010.0000000.0000000.0000000.0000000.0000000.0000008.9800000.0000000.00000045.0000001.0000003.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.0000000.0000003.0000005.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.0000000.0000005.0000007.0000000.000000-88.9700000.0000000.0000000.0000006.3500000.0000000.0000000.0000007.0000009.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.0000000.0000009.00000011.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.00000090.0000002.0000003.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.00000090.0000004.0000005.0000000.000000-88.9700000.0000000.0000000.0000006.3500000.0000000.00000090.0000006.0000007.0000000.0000000.0000000.0000000.0000000.0000006.3500000.0000000.00000090.0000008.0000009.0000000.0000000.0000000.0000000.0000000.0000008.9800000.0000000.000000135.0000003.0000004.0000000.0000000.0000000.0000000.0000000.0000008.9800000.0000000.000000135.0000005.0000006.0000000.000000-88.9700000.0000000.0000000.0000008.9800000.0000000.000000135.0000007.0000008.0000000.0000000.0000000.0000000.0000000.0000008.9800000.0000000.000000135.0000009.00000010.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000000.0000001.000000
运行结果:
图3例3运行结果截图
五、程序不足之处与改进方法
1、数据文件的可读性
生成的数据文件格式是txt,这个格式由电脑读取比较快,但是对于人来说,生成的数据比较杂乱无章,看不出来数字所代表的含义。
如果要改进的话可以使用excel格式。
2、数据长度混乱
编写程序时所有的数据都使用了%f,即浮点格式,实际上很多数据比如节点数量都是整数,不需要很多位数的小数。
改进方法:
调整各数据的长度。
3、输入量很难从图形得出
用长度和倾角作为输入量,从图形上不能直观得得到。
如前文所述,可使用节点坐标作为输入量。
4、算法的性质
编写程序时十分仓促,没有考虑计算程序的算法是否简洁精确。
改进时可以运用上学期所学计算方法的知识对算法进行优化。
六、参考文献
[1]王家文.MATLAB7.0编程基础[M].北京:
机械工业出版社,2005.7
[2]罗建军.MATLAB教程[M].北京:
电子工业出版社,2005.7
[3]黄德臣,颜兵兵.一种基于MATLAB的有限元编程方法[J].佳木斯大学学报2011.5
[4]邱志平,王晓军.航空航天结构中的有限元方法[M].北京:
北京航空航天大学出版社,2012.7
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 航空航天 结构 中的 有限元 方法 编程 作业 资料