adding different matrices with for loop into another matrix
Ältere Kommentare anzeigen
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:

Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu Stress and Strain finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!