FEM-Course-Matlab/10.四节点八节点四边形单元悬臂梁的Matlab有限元编程/8_nodes/ele_stiff_matrix.m

27 lines
1.2 KiB
Matlab

function ke=ele_stiff_matrix(E_ID,Nodes,Elements,E,u,Width)
ENodes(:,1) = Elements(E_ID,:);
iN = size(ENodes,1);
ke = zeros(2*iN,2*iN);
D=[E/(1-u^2),u*E/(1-u^2),0;
u*E/(1-u^2),E/(1-u^2),0;
0,0,E/(2*(1+u))];
% 计算高斯积分点坐标
r = [-sqrt(1/3) sqrt(1/3)]; % 2*2 高斯积分点
s = [r(1) r(1) r(2) r(2)];
t = [r(2) r(1) r(1) r(2)]; % 高斯积分点坐标
% 高斯积分计算单元刚度矩阵
for i=1:4
J = Jacobi(E_ID,s(i),t(i),Elements,Nodes); % 雅可比矩阵
Nst = DiffShapeFun(s(i),t(i)); % 形函数关于自然坐标s,t求导
Nxy = zeros(8,2);
for j=1:8
Nxy(j,:) = (J\Nst(j,:)')'; % 形函数关于 x,y 求导=inv(J)*Nst
end
Bm = [Nxy(1,1) 0 Nxy(2,1) 0 Nxy(3,1) 0 Nxy(4,1) 0 Nxy(5,1) 0 Nxy(6,1) 0 Nxy(7,1) 0 Nxy(8,1) 0;
0 Nxy(1,2) 0 Nxy(2,2) 0 Nxy(3,2) 0 Nxy(4,2) 0 Nxy(5,2) 0 Nxy(6,2) 0 Nxy(7,2) 0 Nxy(8,2);
Nxy(1,2) Nxy(1,1) Nxy(2,2) Nxy(2,1) Nxy(3,2) Nxy(3,1) Nxy(4,2) Nxy(4,1) Nxy(5,2) Nxy(5,1) Nxy(6,2) Nxy(6,1) Nxy(7,2) Nxy(7,1) Nxy(8,2) Nxy(8,1)];
ke = ke+det(J)*Bm'*D*Bm*Width;
end
end