adding different matrices with for loop into another matrix
Show older comments
Hello,
I am trying to make a stiffness matrix for a finite element problem and my question is; I have 10 element stiffness matrices, these are local matrices and they are 4x4 and I want to assemble them into a global stiffness matrix. So basically, what I am trying to below is I am trying to add them into a 22x22 zeros matrix but also I want to add them into different rows and columns with coinciding values as you can see in the picture. I have also tried something in the below code but I am getting buch of zeros. I can actually do it with like 30 lines of codes I guess but I just want to know a practical way to do it.
(Also I'd appreciate any simplification for my function code too.)
Thanks.
%%% 4-node quad plane stress element (assuming 10x1 elements)
[K1]=shape_function(0,0); %I am getting these matrices through a function command
[K4]=shape_function(1,1);
[K7]=shape_function(2,2);
[K10]=shape_function(3,3);
[K13]=shape_function(4,4);
[K16]=shape_function(5,5);
[K19]=shape_function(6,6);
[K22]=shape_function(7,7);
[K25]=shape_function(8,8);
[K28]=shape_function(9,9);
K=zeros(22,22)
for i=1:3:19
Kd=zeros(22,22);
Kd([i:i+3],[i:i+3])=K(i);
K=K+Kd;
end
display(K)
%shape function calculator
function [K] = shape_function(x1,y1)
syms x y
E=1000;
y4=y1+1;
x2=x1+1;
A=(x2-x1)*(y4-y1);
N1=(x-x2)*(y-y4)/A;
N2=(x-x1)*(y-y4)/-A;
N3=(x-x1)*(y-y1)/A;
N4=(x-x2)*(y-y1)/-A;
N=[N1 N2 N3 N4];
B(1,:)=diff(N,x);
B(2,:)=diff(N,y);
Kx=int((transpose(B)*A*E*B),x,x1,x2);
K=int(Kx,y,y1,y4);
end
What I want to achieve:

Accepted Answer
More Answers (0)
Categories
Find more on Stress and Strain in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!