Coding of Direct Stiffness Method
Coding of Direct Stiffness Method
%Taking input
n=input('Enter number of nodes\n');
ne=input('Enter number of springs or elements\n');
nca=input('Enter the nodal connectivities in a form of matrix\n');
k=input('Enter the stiffness of the springs as an array\n');
nf=input('Enter number of forces\n');
f=input('Enter node number & force values as a matrix\n');
nr=input('Enter number of restraints\n');
nre=input('Enter node number of corresponding restraints as an array\n' );
%Creation of the global matrix
kg=zeros(n);
for i=1:ne
ke=[k(i) -k(i);-k(i) k(i)];
n1=nca(i,1);
n2=nca(i,2);
kg(n1,n1)=kg(n1,n1)+ke(1,1);
kg(n1,n2)=kg(n1,n2)+ke(1,2);
kg(n2,n1)=kg(n2,n1)+ke(2,1);
kg(n2,n2)=kg(n2,n2)+ke(2,2);
end
%Creation of force vector matrix.
kg_original=kg
fg=zeros(n,1);
for i=1:nf
n1=f(i,1);
fg(n1)=fg(n1)+f(i,2);
end
%Imposition of boundary conditions.
for i=1:nr
n1=nre(i);
kg(n1,:)=0;
kg(:,n1)=0;
kg(n1,n1)=1;
end
%Solution of global matrix.
U=inv(kg)*fg;
for i=1:n
fprintf('\nDisplacement of node %d = %fmm\n',i,U(i,1));
end
%Finding the reaction forces.
for i=1:nr
n1=nre(1,i);
R(n1)=0;
for j=1:n
R(n1)=R(n1)+kg_original(n1,j)*U(j,1);
end
fprintf('\nReaction at node %d=%f Newton\n',n1,R(n1));
end
%Finding the force on each spring.
for i=1:ne
k1=k(1,i);
n1=nca(i,1);
n2=nca(i,2);
n3=U(n1,1);
n4=U(n2,1);
F=k1*(n3-n4);
fprintf('\nForce on element %d = %f Newton\n',i,F);
end