Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DINAMICA
Aplicación con el método de elementos finitos usando octave
Profesor:
SALAZAR HUAMANI, GUSTAVO NESTOR
Alumno:
Baca Garay, Carlos Sebastian
2021
VMT
Algoritmo del ejercicio:
numelementos=3;
E=[30*10^6 30*10^6 15*10^6];
area=[1 1 2];
nodos=[0 ; 30 ; 60 ; 90];
UnionNodos=[1 2 ; 2 3 ; 3 4];
Desplazamientos=[0 1 1 0];
Fuerzas=[0 3000 0 0];
L=[30 30 30];
%Construcción de las matrices de rigidez por cada elemento
A = zeros(2,2,numelementos);
for i = 1:numelementos
A(:,:,i) = ((E(i).*area(i))./L(i))*[1 -1 ; -1 1];
end
A
S=size(nodos,1);
MG=zeros(S,S);
for i=1:numelementos
m=UnionNodos(i,1);
n=UnionNodos(i,2);
MG([m n],[m n],i)=A(:,:,i);
end
MG=sum(MG,3)
d2
Esfuerzos
Reacciones=MG*d2
% grafica
line([nodos(1) nodos(end)],[0 0],'Color','k','LineWidth',2);
hold on
plot(nodos',zeros(1,length(nodos)),'or','MarkerSize',6,'MarkerFaceColor','r');
grid on
NodosDesp=nodos'+d2';
Nocero=find(d2~=0);
hold on
plot(NodosDesp(Nocero),zeros(1,length(Nocero)),'og','MarkerSize',6,'MarkerFaceColor','g');
axis([nodos(1)-10 nodos(end)+10 -1 1]);
title('Sistema resuelto (Haga zoom en cada nodo hasta ver el desplazamiento');
legend({'Barra';'Nodos empotrados' ; 'Nodos desplazados'});
Algoritmo del ejercicio 2.
numelementos=3;
E(1:numelementos)=210*10^9;
area(1:numelementos)=10*10^-4;
nodos=[12 -3 -4 ; 0 0 0 ; 12 -3 -7 ; 14 6 0];
UnionNodos=[1 2 ; 1 3 ; 1 4];
Desplazamientos=[1 1 1 0 0 0 0 0 0 0 0 0];
Fuerzas=[20000 0 0 0 0 0 0 0 0 0 0 0];
L = zeros(1,numelementos);
Cx = zeros(1,numelementos);
Cy = zeros(1,numelementos);
Cz = zeros(1,numelementos);
LAMDA = zeros(6,6);
for i = 1:numelementos
indice = UnionNodos(i,:);
P1 = [nodos(indice(1),1) nodos(indice(1),2) nodos(indice(1),3)];
P2 = [nodos(indice(2),1) nodos(indice(2),2) nodos(indice(2),3)];
L(i) = norm(P1-P2);
Cx(i) = (P2(1) - P1(1))/ L(i);
Cy(i) = (P2(2) - P1(2))/ L(i);
Cz(i) = (P2(3) - P1(3))/ L(i);
lamda = [Cx(i)^2 Cx(i)*Cy(i) Cx(i)*Cz(i) ; Cy(i)*Cx(i) Cy(i)^2 Cy(i)*Cz(i) ;...
Cz(i)*Cx(i) Cz(i)*Cy(i) Cz(i)^2];
LAMDA(:,:,i) = [lamda -lamda ; -lamda lamda];
end
k = (E.*area)./L;
A = zeros(6,6);
for i = 1:numelementos
A(:,:,i) = k(i)*LAMDA(:,:,i);
j = UnionNodos(i,:);
B(:,:,i) = mat2cell(A(:,:,i),[3 3],[3 3]);
S = 3*size(nodos,1);
m = cell(S/3,S/3);
for i = 1:size(nodos,1)
for j = 1:size(nodos,1)
%En cada vuelta recogemos todos los elementos con el mismo índice
%(i,j), los superponemos y sumamos entre sí.
clear x
x(:,:,:) = cell2mat(reshape(C(i,j,:),1,[],numelementos));
m(i,j) = {sum(x,3)};
if size(m{i,j}) == [0 0]
m(i,j) = {zeros(3,3)};
end
end
end
MG = cell2mat(m)
d = MGR\Fuerzas';
dfinal = zeros(S,1);
k = 1;
for i = 1:length(Desplazamientos)
if Desplazamientos(i) == 0
dfinal(i,1) = 0;
else
dfinal(i,1) = d(k);
k = k+1;
end
end
d2 = mat2cell(dfinal,3*ones(1,size(nodos,1)),1);
Esfuerzos = zeros(1,numelementos);
Flocal = zeros(numelementos,6);
j = 1;
for i = 1:numelementos
indice = UnionNodos(i,:);
Esfuerzos(i) = (E(i)./L(i)) * [-Cx(i) -Cy(i) -Cz(i) Cx(i) Cy(i) Cz(i)] * [d2{indice(1,1)} ; d2{indice(1,2)}];
Flocal(i,:) = A(:,:,i)*[d2{indice(1,1)} ; d2{indice(1,2)}];
j = j + 2;
end
dfinal
Esfuerzos
Reacciones=MG*dfinal
Flocal
d3 = reshape(dfinal,[3,size(nodos,1)])';
NodosDesp = nodos + d3;
d4 = reshape(Desplazamientos,[3,size(nodos,1)])';
for j = 1:numelementos
indice = UnionNodos(j,:);
line([nodos(indice(1),1) nodos(indice(2),1)],...
[nodos(indice(1),2) nodos(indice(2),2)],...
[nodos(indice(1),3) nodos(indice(2),3)],...
'LineWidth',1.5,'Color','k');
hold on
line([NodosDesp(indice(1),1) NodosDesp(indice(2),1)],...
[NodosDesp(indice(1),2) NodosDesp(indice(2),2)],...
[NodosDesp(indice(1),3) NodosDesp(indice(2),3)],...
'LineWidth',1,'Color','b');
end
for i = 1:size(nodos,1)
plot3(nodos(i,1),nodos(i,2),nodos(i,3),'ro','MarkerSize',6,'MarkerFaceColor','r');
hold on
end
grid on
NodosDespx = NodosDesp(:,1);
NodosDespy = NodosDesp(:,2);
NodosDespz = NodosDesp(:,3);
[fil,col] = find(d4 ~= 0);
plot3(NodosDespx(fil),NodosDespy(fil),NodosDespz(fil),'og','MarkerSize',6,'MarkerFaceColor','g');
view(45,45);