平面四节点等参单元matlab实现

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算力学报告平面四节点等参单元

学生姓名:**

学号:********

一、问题描述及分析

在无限大平面内有一个小圆孔。孔内有一集中力p,试求用有限元法编程和用ANSYS软件求出各点应力分量和位移分量,并比较二者结果。

根据圣维南原理建立半径为10mm的大圆,设小圆孔的半径a=0.5mm,在远离大圆边界的地方模型是比较精确的。由于作用在小圆孔上的力引起的位移随距离的衰减非常快,所以可以把大圆边界条件设为位移为零。

二、有限元划分描述

在划分单元时,单元数量比较多,于是我采取了使用ansys软件建模自动划分单元网格的方法。具体操作如下:

打开ansys,在单元类型中选择solid->Quad 4 node 182单元;建立类半径为0.5外半径为10的圆环;使用mashtool中的智能划分和将单元退化成三角形单元;使用工具栏中List中的Nodes和Elements 选项将节点和单元数据导出并导入Excle中,总共得到了207个单元和229个节点。如下图:

图1

三、有限元程序及求解

程序求解使用了matlab语言。具体如下:

程序:

clc

clear

E=2e11; %弹性模量

NU=0.3; %泊松比

t=0.1; %厚度

X=xlsread('D:\data','nodes'); %读取节点坐标

elem=xlsread('D:\data','elements'); %读取单元编号

w=[1,2,3,4,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]; %有位移

约束的节点

n=size(X,1); %节点数

m=size(elem,1); %单元数

K=zeros(2*n); %初始总体刚度矩阵

for i=1:m

syms Ks Et x y I1 I2 a b B; %定义可能存在的变量

e=[1,1;-1,1;-1,-1;1,-1];

for j=1:4 %形函数

N(j)=0.25*(1+e(j,1)*Ks)*(1+e(j,2)*Et);

end

x=0;y=0;

for j=1:4 %标准母单元映射到真实单元x=x+N(j)*X(elem(i,j),1);

y=y+N(j)*X(elem(i,j),2);

end

J1=jacobian([x;y],[Ks;Et]); %雅克比矩阵及其转置

J=J1';

for j=1:4

I1=diff(N(j),Ks); %形函数分别对Ks和Et的偏导数

I2=diff(N(j),Et);

C=(J^-1)*[I1;I2];

a=C(1); %形函数对x,y的偏导数

b=C(2);

B(1,2*j-1)=a; %组成B阵

B(1,2*j)=0;

B(2,2*j-1)=0;

B(2,2*j)=b;

B(3,2*j-1)=b;

B(3,2*j)=a;

end

D=(E/(1-NU*NU))*[1,NU,0;NU,1,0;0,0,(1-NU)/2]; %D阵

k=zeros(8,8);

Kss=[-0.906179,-0.538469,0,0.538469,0.906179]; %5*5高斯积分点

Ett=[-0.906179,-0.538469,0,0.538469,0.906179];

H=[0.236926,0.478628,0.568888,0.478628,0.236926];%高斯积分权系数

for j=1:5 %高斯积分求单元刚度阵

for l=1:5

Ks=Kss(j);Et=Ett(l);

B=subs(B);

J=subs(J);

k=k+H(j)*H(l)*B'*D*B*det(J);

end

end

G=zeros(8,2*n); %初始总刚变换矩阵

G(1,2*elem(i,1)-1)=1; %总刚变换矩阵

G(2,2*elem(i,1))=1;

G(3,2*elem(i,2)-1)=1;

G(4,2*elem(i,2))=1;

G(5,2*elem(i,3)-1)=1;

G(6,2*elem(i,3))=1;

G(7,2*elem(i,4)-1)=1;

G(8,2*elem(i,4))=1;

K=K+G'*k*G; %总体刚度矩阵合成

end

KK=K;

b=size(w,1);

for i=1:b

K(2*w(i)-1,2*w(i)-1)=1e20;

K(2*w(i),2*w(i))=1e20;

end %置大数法

f=zeros(2*n,1); %初始载荷矩阵

f(10)=-10e3; %加载荷10kN

U=K\f; %节点位移

for i=1:m %将每个单元各个节点位移集合

u(:,i)=[U(2*elem(i,1)-1);U(2*elem(i,1));U(2*elem(i,2)-1);U(2*elem(i,2));U(2*ele m(i,3)-1);U(2*elem(i,3));U(2*elem(i,4)-1);U(2*elem(i,4))];

end

for i=1:m %求单元应力

syms Ks Et x y I1 I2 a b B;

e=[1,1;-1,1;-1,-1;1,-1];

for j=1:4

N(j)=0.25*(1+e(j,1)*Ks)*(1+e(j,2)*Et);

end

x=0;y=0;

for j=1:4

x=x+N(j)*X(elem(i,j),1);

y=y+N(j)*X(elem(i,j),2);

相关文档
最新文档