第一范文网 - 专业文章范例文档资料分享平台

基于Matlab语言的按平面三角形单元划分的结构有限元程序设计

来源:用户分享 时间:2025/7/5 7:16:07 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

本文档如对你有帮助,请帮忙下载支持!

clear %清除内存变量

FP1=fopen('0.txt','rt'); %打开输入数据文件,读入控制数据 NELEM=fscanf(FP1,'%d',1), %单元个数(单元编码总数) NPION=fscanf(FP1,'%d',1), %结点个数(结点编码总数) NVFIX=fscanf(FP1,'%d',1) %受约束边界点数 NFORCE=fscanf(FP1,'%d',1), %结点荷载个数 YOUNG=fscanf(FP1,'%e',1), %弹性模量 POISS=fscanf(FP1,'%f',1), %泊松比 THICK=fscanf(FP1,'%f',1) %厚度

LNODS=fscanf(FP1,'%d',[3,NELEM])' %单元定义数组(单元结点号)

%相应为单元结点号(编码)、按逆时针顺序输入

COORD=fscanf(FP1,'%f',[2,NPION])' %结点坐标数组

%坐标:x,y坐标(共NPOIN组)

FORCE=fscanf(FP1,'%f',[3,NFORCE])' %结点力数组(受力结点编号, x方向,y方向) FIXED=fscanf(FP1,'%d',[3,NVFIX])' %约束信息(约束点,x约束,y约束) %有约束为1,无约束为0

%*****************************************************************************

%生成单元刚度矩阵并组成总体刚度矩阵

ASTIF=zeros(2*NPION,2*NPION); %生成特定大小总体刚度矩阵并置0

%***************************************************************************** for i=1:NELEM

%生成弹性矩阵D

D= [1 POISS 0; POISS 1 0;

0 0 (1-POISS)/2]*YOUNG/(1-POISS^2)

%*****************************************************************************

%计算当前单元的面积A

A=det([1 COORD(LNODS(i,1),1) COORD(LNODS(i,1),2); 1 COORD(LNODS(i,2),1) COORD(LNODS(i,2),2); 1 COORD(LNODS(i,3),1) COORD(LNODS(i,3),2)])/2

%*****************************************************************************

%生成应变矩阵B

for j=0:2 b(j+1)=

COORD(LNODS(i,(rem((j+1),3))+1),2)-COORD(LNODS(i,(rem((j+2),3))+1),2);

c(j+1)=-COORD(LNODS(i,(rem((j+1),3))+1),1)+COORD(LNODS(i,(rem((j+2),3))+1),1); end

B=[b(1) 0 b(2) 0 b(3) 0;... 0 c(1) 0 c(2) 0 c(3);...

c(1) b(1) c(2) b(2) c(3) b(3)]/(2*A); B1( :,:,i)=B;

%*****************************************************************************

%求应力矩阵S=D*B

本文档如对你有帮助,请帮忙下载支持!

S=D*B;

ESTIF=B'*S*THICK*A; %求解单元刚度矩阵

a=LNODS(i,:); %临时向量,用来记录当前单元的节点编号 for j=1:3 for k=1:3

ASTIF((a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)…

=ASTIF((a(j)*2-1):a(j)*2,(a(k)*2-1):a(k)*2)+ESTIF(j*2-1:j*2,k*2-1:k*2); %根据节点编号对应关系将单元刚度分块叠加到总刚

%度矩阵中

end end end

%*****************************************************************************

%将约束信息加入总体刚度矩阵(对角元素改一法)

for i=1:NVFIX

if FIXED(i,2)==1

ASTIF(:,(FIXED(i,1)*2-1))=0; %一列为零 ASTIF((FIXED(i,1)*2-1),:)=0; %一行为零 ASTIF((FIXED(i,1)*2-1),(FIXED(i,1)*2-1))=1; %对角元素为1 end

if FIXED(i,3)==1

ASTIF( :,FIXED(i,1)*2)=0; %一列为零 ASTIF(FIXED(i,1)*2,:)=0; %一行为零 ASTIF(FIXED(i,1)*2 ,FIXED(i,1)*2)=1; %对角元素为1 end end

%*****************************************************************************

%生成荷载向量

ASLOD(1:2*NPION)=0; %总体荷载向量置零 for i=1:NFORCE

ASLOD((FORCE(i,1)*2-1):FORCE(i,1)*2)=FORCE(i,2:3); end

%*****************************************************************************

%求解内力

ASDISP=ASTIF\\ASLOD' %计算节点位移向量 ELEDISP(1:6)=0; %当前单元节点位移向量 for i=1:NELEM for j=1:3

ELEDISP(j*2-1:j*2)=ASDISP(LNODS(i,j)*2-1:LNODS(i,j)*2);

%取出当前单元的节点位移向量 end i

STRESS=D*B1(:, :, i)*ELEDISP' %求内力 end

本文档如对你有帮助,请帮忙下载支持!

fclose(FP1); %关闭数据文件

五、 程序运行结果

NELEM = 4 NPION = 6 NVFIX = 2 NFORCE = 1 YOUNG = 0 POISS =

2.0000e-001 THICK =

2.0000e-003 LNODS =

1 2 6 2 3 4 2 4 5 2 5 6 COORD =

0 0 1 0 2 0 2 1 1 1 0 1 FORCE =

4 0 -150 FIXED =

1 1 1 6 1 1 D =

2.0833e+008 4.1667e+007 0 4.1667e+007 2.0833e+008 0 0 0 8.3333e+007 A =

5.0000e-001 D =

2.0833e+008 4.1667e+007 0 4.1667e+007 2.0833e+008 0 0 0 8.3333e+007

本文档如对你有帮助,请帮忙下载支持!

A =

5.0000e-001 D =

2.0833e+008 4.1667e+007 0 4.1667e+007 2.0833e+008 0 0 0 8.3333e+007 A =

5.0000e-001 D =

2.0833e+008 4.1667e+007 0 4.1667e+007 2.0833e+008 0 0 0 8.3333e+007 A =

5.0000e-001 ASDISP =

0 0 -8.0607e-004 -1.5848e-003 -1.0281e-003 -4.4727e-003 1.1937e-003 -4.6947e-003 8.6670e-004 -1.8880e-003 0 0 (说明:以上12个ASDISP输出结果数据表示节点位移向量,即各节点分别在X,Y方向上产生的位移。) i = 1 STRESS =

-1.6793e+005 -3.3586e+004 -1.3207e+005 i = 2 STRESS =

-5.5503e+004 -5.5503e+004 -5.5503e+004 i = 3 STRESS =

基于Matlab语言的按平面三角形单元划分的结构有限元程序设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c82ty32xu4v6b8ve00zsa83uyx9681900v8m_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top