You are on page 1of 4

clear all

close all
clc
n=input('ENTER THE NUMBER OF NODES:-');

ne=input('ENTER THE NUMBER OF ELEMENTS:-');

nen=2;
ndof=input('ENTER THE NUMBER OF DEGREE OF FREEDOM:-');
nsd=input('ENTER THE NUMBER OF SPATIAL DIMENSIONS:-');
nee=nen*ndof;
ID=zeros(ndof,n);
r=size(ID);
c=r(1,2);
r=r(1,1);
number=1;
for c1=1:c
for r1=1:r
ID(r1,c1)=number;
number=number+1;
end
end

fixed_dof=[];
disp('NODAL CONSTRAINTS\n');
disp('\n');
disp('ENTER THE NODES WHICH ARE CONSTRAINED.\n');
disp('ONE BY ONE AT THE PROMPT. \n');
var='y';
if ndof==2
while var~='n'
disp('\n');
t=input('ENTER THE NODE NUMBER:- \n');
if t<=n
disp('THERE ARE TWO TYPES OF CONSTRAINTS\n');
disp('1. PIN JOINT\n');
disp('2. ROLLER JOINT\n');
t1=input('ENTER YOUR CHOICE\n');
if t1==1
fixed_dof=[fixed_dof;ID(:,t)];
else
fixed_dof=[fixed_dof;ID(2,t)];
end
disp('ANY OTHER NODE FIXED\n');
disp('Y FOR YES, N FOR NO \n');
var=input('Y=YES AND N=NO ','s');
else
disp('INVALID NODE IS FIXED. PLEASE RE-ENTER THE NODE NUMBERS AGAIN
\n');
var='y';
end
end
else
disp('ENTER THE NODES WHICH ARE PINNED.\n');
disp('ONE BY ONE AT THE PROMPT. \n');
while var ~='n'
disp('\n');
t=input('ENTER THE NODE NUMBER:- \n');
if t<=n
fixed_dof=[fixed_dof;ID(:,t)];
disp('ANY OTHER NODE FIXED ');
var=input('Y=YES AND N=NO ','s');
else
disp('INVALID NODE IS FIXED. PLEASE RE-ENTER THE NODE NUMBERS AGAIN');
var='y';
end
end
end

fixed_dof=sort(fixed_dof);
fixed1=fixed_dof;
node=1:1:n*ndof;
free_dof=node;
for i=1:length(fixed_dof)
free_dof(fixed1(i))=[];
fixed1=fixed1-1;
end
clear fixed1;
free_dof=sort(free_dof);
free_dof=free_dof';

load=[];
disp('\n');
disp('\n');

disp('GETTING THE LOADS AT DIFFERENT NODES\n');


for count=1:length(free_dof)
if ndof==2
disp('ENTER FORCE ALONG THE DEGREE OF FREEDOM');
disp(free_dof(count));
u=input('ENTER FORCE \n');
load=[load;u];
end
if ndof==3
disp('ENTER FORCE ALONG THE');
disp(free_dof(count));
fprintf('TH DOF: \n');
u=input('ENTER FORCE ALONG THIS DOF \n');
load=[load;u];
end
end
L=zeros(nen,ne);
disp('GETTING THE L MATRIX \n');
for count=1:ne
disp('ELEMENT');
disp(count);
disp('THIS ELEEMENT IS CONNECTED BY \n');
disp('\n');
node1=input('NODE 1 :- ');
node2=input('NODE 2 :- ');
L(1,count)=node1;
L(2,count)=node2;
end
disp('GETTING THE CO-ORDINATE MATRIX \n');
coord=[];
for count=1:n
disp('FOR NODE');
disp(count);
disp('\n');
x=input('ENTER X CO-ORDINATE:- ');
disp('\n');
y=disp('ENTER THE Y CO-ORDINATE:- ');
disp('\n');
z=input('ENTER THE Z CO-ORDINATE:- ');
disp('\n');
coord=[coord [x;y;z]];
end
if ndof==2
coord(3,:)=[];
end
for e=1:ne
for i=1:nen
for a=1:ndof
p=ndof*(i-1)+a;
LM(p,e)=ID(a,L(i,e));
end
end
end

e1=2e11;
dia=0.01;
a=pi*(dia^2)/4;
K=zeros(n*ndof);
lambda_vec=[];
h_vec=[];
for e=1:ne
localcoord=[coord(:,L(1,e)) coord(:,L(2,e))];
h=0;
for count=1:ndof
temp=(localcoord(count,2)-localcoord(count,1))^2;
h=h+temp;
end
h=sqrt(h);
h_vec=[h_vec;h];
lambda=[];
for count=1:ndof
lambda=[lambda;(localcoord(count,2)-localcoord(count,1))/h];
end
lambda_vec=[lambda_vec lambda];
A=lambda*lambda';
k=(e1*a)/h*[A -A;-A A];
for p=1:nee
P=LM(p,e);
for q=1:nee
Q=LM(q,e);
K(P,Q)=K(P,Q)+k(p,q);
end
end
end
lambda_vec=lambda_vec';
K1=K;
for counter=1:length(fixed_dof)
K1(fixed_dof(counter),:)=[];
K1(:,fixed_dof(counter))=[];
fixed_dof=fixed_dof-1;
end
d=K1\load;
disp_vec=zeros(n*ndof,1);

for count=1:length(free_dof)
disp_vec(free_dof(count))=d(count);
end

You might also like