Vous êtes sur la page 1sur 18

Beatriz C. F.

da Silva 415200 Pablo Tamborra Estima 415090 Rafaela Trevisan Silva 415294

Desenvolvimento de Programa para Anlise de Esforos em Trelias


Introduo:
Trelia um sistema estrutural, que tem funo de resistir a ao de foras aplicadas. Sua estrutura formada por ns e barras, as barras transmitem apenas foras axiais e os esforos devem necessariamente ser aplicadas nos ns. A relao entre o nmero de barras, ns e reaes de apoio de uma trelia fornece informaes acerca do grau de estaticidade da estrutura, ou seja, quo estvel a estrutura. Para ela ser estvel necessrio que o nmero de barras mais 3 seja igual ao dobro do nmero de ns de uma trelia plana. B + 3 = 2n Existem vrios mtodos para o clculo estrutural desses sistemas, do ponto de vista computacional, mais interessante utilizar o mtodo dos deslocamentos, nele impe-se a cada n um deslocamento unitrio e calcula-se os coeficientes de rigidez associados ao sistema de coordenadas adotado. Esta soluo somente para trelias planas e feita atravs da anlise matricial considerando as barras como molas de constante elstica k dada.

Desenvolvimento Terico:
O processo tem inicio com a anlise isolada de cada barra, aplicamos ento a ideia do diagrama de corpo livre em cada um dos elementos da mola. Avaliam-se ento as foras presentes e os deslocamentos causados por elas para a condio de equilbrio. Tomando que as barras so molas, seguiro a Lei de Hooke. Contudo no ser apenas uma fora envolvida. Assim o que relacionar todas as foras com seus referidos deslocamentos ser a Matriz de Rigidez [k]. A dimenso da matriz se relacionar com o numero de deslocamentos possveis, ou seja, para um elemento finito qualquer com n componentes de deslocamentos, a Matriz de Rigidez ter dimenso de n x n. Exemplo para duas foras e dois deslocamentos:

A rigidez da mola, representada por sua constante elstica k, indica a fora necessria para obter um deslocamento unitrio. Partimos dessa ideia para determinar os coeficientes de rigidez da Matriz de Rigidez de qualquer elemento. Assim, aplicamos um deslocamento unitrio em um dos ns da mola e medirmos as foras associadas a esse deslocamento unitrio, e encontramos os coeficientes de rigidez da matriz. Para facilitar, determinamos cada kij da matriz, considerando cada deslocamento nodal separadamente, ou seja, enquanto um n se move o outro fixado.

Diagrama de corpo livre de um elemento de mola.

Na figura temos no primeiro caso a mola sendo comprimida atravs de um deslocamento unitrio u1 enquanto que o n 2 est fixado (u2=0). J no segundo caso h o tensionamento da mola atravs do deslocamento unitrio de u2, fixando-se o n 1 (u1=0). Para o caso 1, vamos ter que f2 = - f1 alm de que F = fora interna = k.d , em que d representa a deformao da mola.

d = u2 u1
Como u2 = 0, termos d = - u1 e por consequncia F = - k.u1, como u1 positivo, pois tem a mesma orientao do eixo de referncia, a fora interna negativa, o que confirma a compresso na mola (F < 0).

A fora f1 ser equilibrada pela fora interna F, contudo seus sinais sero opostos. Assim: f1 = - F e como F = - k.u1, teremos: f1 = k.u1 e como f2 = - f1 resultar: f2 = - k.u1 Para o caso 2 segue a mesma linha de raciocnio, contudo teremos f1 = - f2, enquanto que u1=0 e F = k.u2 (caracterizando trao na mola, F > 0). Chegamos ento s seguintes equaes: f2 = k.u2 f1 = - k.u2 Colocando essas quatro equaes no sistema, { } [ ] { }

encontraremos a Matriz de Rigidez do elemento. [ Considerando duas dimenses: ] = [k]

Em trelias planas, a orientao das barras dada pelos ngulos que estas formam com os eixos de referncia, por isso, a matriz de coeficientes de rigidez tem de ser rotacionada e escrita para um sistema de referncia XY, comum a todas as barras.

[ [ ]

] [ ]

Para rotacionar a matriz de rigidez local para um sistema global, fazemos:

Na sequncia montamos a matriz de rigidez global que representar a rigidez de toda a estrutura considerando as contribuies das n barras em seus respectivos locais ij, ou seja, linha correspondente fora e coluna ao deslocamento considerado. Para achar os deslocamentos locais precisamos saber os graus de liberdade da trelia. Como consideramos trelia plana, temos apenas dois graus de liberdade por n, ou seja, deslocamentos nas direes X e Y. Assim podemos simplificar a matriz de rigidez global, para isso coloca-se zeros na coluna e na linha que correspondem aos graus de liberdade restritos (apoios) com a exceo do termo da diagonal onde coloca-se o 1. Nestas condies o sistema de equaes reduz-se em nmero de equaes e de incgnitas no total correspondente aos deslocamentos existentes nos ns. Sistema que podemos descrever pela seguinte operao de matrizes:

Onde K a matriz de rigidez global, a matriz coluna que representa o descolamento de cada n, e F a fora aplicada em cada n. Sendo este deslocamento calculado o global, teremos de achar o local pela equao abaixo,

para, finalmente, encontrar a fora exercida em cada barra:

Desenvolvimento Computacional:
Primeiramente vamos pedir os dados necessrios para definir as posies dos ns e das barras:
%% Dados nbar=input('Nmero de barras nnos=input('Nmero de ns da for i=1:nnos coordx=input('Coordenada coordy=input('Coordenada N(i,:)=[coordx coordy]; No(1,i)=coordx; No(2,i)=coordy; end de sua trelia: '); trelia: '); de cada n no eixo x (cm):'); de cada n no eixo y (cm):');

for i=1:nbar disp(' que ns cada barra est ligada, olhando a tabela acima, sendo o nmero do n igual o nmero da linha da matriz: '); bar1=input('Primeiro n : '); bar2=input('Segundo n : '); B(i,:)=[bar1 bar2]; Barra(1,i)= bar1 ; Barra(2,i)= bar2 ; end

E a constante elstica das barras:


k=input('Constante Elstica das barras(kN/cm): ');

Com esses dados pode-se definir: Comprimento de cada barra (hip)

%% Matriz de rigidez global KG=zeros(2*nnos,2*nnos); for i = 1:nbar bx= B(i,1); by= B(i,2); dx= N(by,1)- N(bx,1); dy= N(by,2)- N(bx,2); hip= sqrt(dx^2+dy^2);

ngulo que a barra forma com o eixo x adotado (ANG)


sen= dy/hip; cos= dx/hip; ANG(i,:)=[sen cos];

Matriz de rotacional (TETA)

TETA=[ANG(i,2) -ANG(i,1) 0 0; ANG(i,1) ANG(i,2) 0 0 ; 0 0 ANG(i,2) -ANG(i,1); 0 0 ANG(i,1) ANG(i,2)]; TETA2=inv(TETA);

Matriz K local no sistema de coordenadas global


KL=[k 0 -k 0; 0 0 0 0; -k 0 k 0; 0 0 0 0]; K=TETA*KL*TETA2;

Matriz K global (KG)


%k11(i)=[K(1,1) K(1,2);K(2,1) K(2,2)]; k1111=K(1,1); k1112=K(1,2); k1121=K(2,1); k1122=K(2,2); %k12(i)=[K(1,3) K(1,4);K(2,3) K(2,4)]; k1211=K(1,3); k1212=K(1,4); k1221=K(2,3); k1222=K(2,4); %k21(i)=[K(3,1) K(3,2);K(4,1) K(4,2)]; k2111=K(3,1); k2112=K(3,2); k2121=K(4,1); k2122=K(4,2); %k22(i)=[K(3,3) K(3,4);K(4,3) K(4,4)]; k2211=K(3,3); k2212=K(3,4); k2221=K(4,3); k2222=K(4,4); KG(2*bx-1,2*bx-1)=KG(2*bx-1,2*bx-1)+k1111; KG(2*bx-1,2*bx)=KG(2*bx-1,2*bx)+k1112; KG(2*bx,2*bx-1)=KG(2*bx,2*bx-1)+k1121; KG(2*bx,2*bx)=KG(2*bx,2*bx)+k1122; KG(2*bx-1,2*by-1)=KG(2*bx-1,2*by-1)+k1211; KG(2*bx-1,2*by)=KG(2*bx-1,2*by)+k1212; KG(2*bx,2*by-1)= KG(2*bx,2*by-1)+k1221; KG(2*bx,2*by)=KG(2*bx,2*by)+k1222; KG(2*by-1,2*bx-1)=KG(2*by-1,2*bx-1)+k2111; KG(2*by-1,2*bx)=KG(2*by-1,2*bx)+k2112; KG(2*by,2*bx-1)= KG(2*by,2*bx-1)+k2121; KG(2*by,2*bx)=KG(2*by,2*bx)+k2122; KG(2*by-1,2*by-1)=KG(2*by-1,2*by-1)+k2211; KG(2*by-1,2*by)=KG(2*by-1,2*by)+k2212; KG(2*by,2*by-1)=KG(2*by,2*by-1)+k2221; KG(2*by,2*by)= KG(2*by,2*by)+k2222;

end

Pede-se, tambm, os esforos feitos na trelia, montando, assim, a matriz de fora aplicada MF:
%% Carregamento nfor=input('Quantas foras esto aplicadas na trelia? '); MF=zeros(2*nnos,1); for i=1:nfor Forca=input('Intensidade da Fora aplicada na trelia (kN): '); noF=input('N em que a fora est aplicada: '); angF=input('ngulo entre o eixo x e a fora. (Sentido anti-horrio) () : '); angFx=Forca*cosd(angF); angFy=Forca*sind(angF); MF(2*noF-1,1)= MF(2*noF-1,1)+angFx; MF(2*noF,1)=MF(2*noF,1)+angFy; end

E os graus de liberdade restritos para se simplificar as matrizes de rigidez global (KGsimp) e fora aplicada na trelia (MFsimp):
%% Apoios e Matrizes simplificadas Neng=input('Quantos apoios h na trelia? '); KGsimp=KG; MFsimp=MF; for i=1:Neng noeng=input('N em que est o apoio : '); engx=input('Este apoio restringe o movimento no eixo x? (S/N) ','s'); engx=upper(engx); if strcmp(engx,'S') KGsimp(2*noeng-1,:)=(0); KGsimp(:,2*noeng-1)=(0); KGsimp(2*noeng-1,2*noeng-1)=1; MFsimp(2*noeng-1,:)=(0); end engy=input('E no eixo y? (S/N) ','s'); engy=upper(engy); if strcmp(engy,'S') KGsimp(2*noeng,:)=(0); KGsimp(:,2*noeng)=(0); KGsimp(2*noeng,2*noeng)=1; MFsimp(2*noeng,:)=(0); end

end

Logo, podemos calcular a matriz de deslocamento global:


L=inv(KGsimp)*MFsimp E, finalmente, se calcula o deslocamento local (x) e a fora resultante desejada (B(i,3), onde i o nmero de barras): %% Fora resultante em cada barra for i=1:nbar bx= B(i,1); by= B(i,2); dx= N(by,1)- N(bx,1); dy= N(by,2)- N(bx,2); hip= sqrt(dx^2+dy^2); sen= dy/hip; cos= dx/hip; lamb1=L(2*by-1,1)*cos+L(2*by,1)*sen; lamb2=L(2*bx-1,1)*cos+L(2*bx,1)*sen; x=lamb1-lamb2; B(i,3)=k*x; if abs(B(i,3))<0.0001 B(i,3)=0; end end

Para deixar o programa com a interface com o usurio melhor, desenhou-se um grfico que ilustra a trelia e d os esforos em cada barra.
%% Grfico figure hold on grid title('Trelia','Fontsize',14,'Fontname','times') for i=1:nbar x = [No(1,Barra(1,i)) No(1,Barra(2,i))]; y = [No(2,Barra(1,i)) No(2,Barra(2,i))]; pos1 = (No(1,Barra(1,i)) + No(1,Barra(2,i)))/2; pos2 = (No(2,Barra(1,i)) + No(2,Barra(2,i)))/2; plot(x,y,'k*');

if B(i,3)>0 plot(x,y,'r', 'Linewidth', 2); elseif B(i,3)<0 plot(x,y,'b', 'Linewidth', 2); elseif B(i,3)==0 plot(x,y,'k', 'Linewidth', 2); end axis equal if B(i,3)>0 nome=['F = ' num2str(B(i,3)) ' N']; elseif B(i,3)<0 nome=['F = ' num2str(B(i,3)) ' N']; else nome=['F = ' num2str(B(i,3)) ' N']; end texto(i)=text(pos1,pos2,nome); set(texto(i), 'BackgroundColor', 'w') set(texto(i), 'HorizontalAlignment', 'center', 'Edgecolor', 'w') xlabel('eixo x (cm)','Fontsize',12,'Fontname','times'); ylabel('eixo y (cm)','Fontsize',12,'Fontname','times'); end gtext({'Trao em vermelho','Compresso em azul'})

Exemplo
Segue um exemplo de uma trelia calculada no programa descrito:
Nmero de barras de sua trelia: 11 Nmero de ns da trelia: 7 Coordenada de cada n no eixo x (cm):0 Coordenada de cada n no eixo y (cm):0 Coordenada de cada n no eixo x (cm):50 Coordenada de cada n no eixo y (cm):0 Coordenada de cada n no eixo x (cm):100 Coordenada de cada n no eixo y (cm):0 Coordenada de cada n no eixo x (cm):150 Coordenada de cada n no eixo y (cm):0 Coordenada de cada n no eixo x (cm):150 Coordenada de cada n no eixo y (cm):50 Coordenada de cada n no eixo x (cm):100 Coordenada de cada n no eixo y (cm):50 Coordenada de cada n no eixo x (cm):25 Coordenada de cada n no eixo y (cm):50 N = 0 50 100 150 0 0 0 0

150 100 25

50 50 50 est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz: est ligada, olhando a tabela acima, sendo o nmero da linha da matriz:

que ns cada barra nmero do n igual o Primeiro n : 1 Segundo n : 2 que ns cada barra nmero do n igual o Primeiro n : 2 Segundo n : 3 que ns cada barra nmero do n igual o Primeiro n : 3 Segundo n : 4 que ns cada barra nmero do n igual o Primeiro n : 4 Segundo n : 5 que ns cada barra nmero do n igual o Primeiro n : 5 Segundo n : 6 que ns cada barra nmero do n igual o Primeiro n : 6 Segundo n : 7 que ns cada barra nmero do n igual o Primeiro n : 1 Segundo n : 7 que ns cada barra nmero do n igual o Primeiro n : 2 Segundo n : 7 que ns cada barra nmero do n igual o Primeiro n : 2 Segundo n : 6 que ns cada barra nmero do n igual o Primeiro n : 3 Segundo n : 6 que ns cada barra nmero do n igual o Primeiro n : 4 Segundo n : 6 B = 1 2 3 4 5 6 1 2 2 3 2 3 4 5 6 7 7 7 6 6

Constante Elstica das barras(kN/cm): 1 KG = Columns 1 through 6 1.2000 0.4000 -1.0000 0 0 0 0 0 0 0 0 0 -0.2000 -0.4000 0.4000 0.8000 0 0 0 0 0 0 0 0 0 0 -0.4000 -0.8000 -1.0000 0 2.7000 0.1000 -1.0000 0 0 0 0 0 -0.5000 -0.5000 -0.2000 0.4000 0 0 0.1000 1.3000 0 0 0 0 0 0 -0.5000 -0.5000 0.4000 -0.8000 0 0 -1.0000 0 2.0000 0 -1.0000 0 0 0 0 0 0 0 0 0 0 0 0 1.0000 0 0 0 0 0 -1.0000 0 0

Columns 7 through 12 0 0 0 0 -1.0000 0 1.5000 -0.5000 0 0 -0.5000 0.5000 0 0 0 0 0 0 0 0 -0.5000 1.5000 0 -1.0000 0.5000 -0.5000 0 0 0 0 0 0 0 0 0 0 1.0000 0 -1.0000 0 0 0 0 0 0 0 0 0 0 -1.0000 0 1.0000 0 0 0 0 0 0 -0.5000 -0.5000 0 0 -0.5000 0.5000 -1.0000 0 3.0000 0 -1.0000 0 0 0 -0.5000 -0.5000 0 -1.0000 0.5000 -0.5000 0 0 0 2.0000 0 0

Columns 13 through 14 -0.2000 -0.4000 -0.2000 0.4000 0 0 0 0 0 0 -1.0000 0 1.4000 0 -0.4000 -0.8000 0.4000 -0.8000 0 0 0 0 0 0 0 0 0 1.6000

Quantas foras esto aplicadas na trelia? 1 Intensidade da Fora aplicada na trelia (kN): 50 N em que a fora est aplicada: 6 ngulo entre o eixo x e a fora. (Sentido anti-horrio) () : 90

Quantos apoios h na trelia? 2 N em que est o apoio : 1 Este apoio restringe o movimento no eixo x? (S/N) s E no eixo y? (S/N) s N em que est o apoio : 5 Este apoio restringe o movimento no eixo x? (S/N) s E no eixo y? (S/N) n KGsimp = Columns 1 through 6 1.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.7000 0.1000 -1.0000 0 0 0 0 0 -0.5000 -0.5000 -0.2000 0.4000 0 0 0.1000 1.3000 0 0 0 0 0 0 -0.5000 -0.5000 0.4000 -0.8000 0 0 -1.0000 0 2.0000 0 -1.0000 0 0 0 0 0 0 0 0 0 0 0 0 1.0000 0 0 0 0 0 -1.0000 0 0

Columns 7 through 12 0 0 0 0 -1.0000 0 1.5000 -0.5000 0 0 -0.5000 0.5000 0 0 0 0 0 0 0 0 -0.5000 1.5000 0 -1.0000 0.5000 -0.5000 0 0 0 0 0 0 0 0 0 0 1.0000 0 0 0 0 0 0 0 0 0 0 0 0 -1.0000 0 1.0000 0 0 0 0 0 0 -0.5000 -0.5000 0 0 -0.5000 0.5000 0 0 3.0000 0 -1.0000 0 0 0 -0.5000 -0.5000 0 -1.0000 0.5000 -0.5000 0 0 0 2.0000 0 0

Columns 13 through 14 0 0 -0.2000 0.4000 0 0 0 0 0 0 -1.0000 0 1.4000 0 0 0 0.4000 -0.8000 0 0 0 0 0 0 0 0 0 1.6000

MFsimp = 0 0 0 0 0 0 0 0 0 0 0 50 0 0 L = 0 0 75.0000 312.5000 75.0000 587.5000 75.0000 762.5000 0 762.5000 -100.0000 587.5000 -150.0000 137.5000 Na matriz B agora sai na primeira coluna o primeiro n, na segunda coluna o segundo n e na terceira a fora final de trao(se positiva) ou compresso se negativa). B = 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 1.0000 2.0000 2.0000 3.0000 4.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 7.0000 7.0000 6.0000 6.0000 6.0000 75.0000 0 0 0 100.0000 50.0000 55.9017 -55.9017 70.7107 0 0

Bibliografia:
Site que tambm calcula os esforos em trelias:
http://www.jhu.edu/virtlab/bridge/truss.htm

Livro que ensina o mtodo dos deslocamentos para clculo de trelias planas: FILHO, Avelino Alves. Elementos Finitos A base da tecnologia CAE. 2010. Editora rica

Apndice:
O programa feito no matlab em si:
%--------------------------------------------------------------------% DETERMINAO DE ESFOROS EM UMA ESTRUTURA TRELIADA % por Beatriz, Pablo e Rafaela %--------------------------------------------------------------------% Considere o eixo cartesiano xy, sendo o eixo x na horizontal e o y % na vertical. Informe dados de sua trelia plana conforme pedido, % que os esforos (trao ou compresso) sero calculados pela rotina % e um grfico onde sua trelia estar desenhada com os esforos % indicados aparecer na tela. %--------------------------------------------------------------------clear all

clc %% Dados nbar=input('Nmero de barras nnos=input('Nmero de ns da for i=1:nnos coordx=input('Coordenada coordy=input('Coordenada N(i,:)=[coordx coordy]; No(1,i)=coordx; No(2,i)=coordy; end N de sua trelia: '); trelia: '); de cada n no eixo x (cm):'); de cada n no eixo y (cm):');

for i=1:nbar disp(' que ns cada barra est ligada, olhando a tabela acima, sendo o nmero do n igual o nmero da linha da matriz: '); bar1=input('Primeiro n : '); bar2=input('Segundo n : '); B(i,:)=[bar1 bar2]; Barra(1,i)= bar1 ; Barra(2,i)= bar2 ; end B k=input('Constante Elstica das barras(kN/cm): '); %% Matriz de rigidez global KG=zeros(2*nnos,2*nnos); for i = 1:nbar bx= B(i,1); by= B(i,2); dx= N(by,1)- N(bx,1); dy= N(by,2)- N(bx,2); hip= sqrt(dx^2+dy^2); sen= dy/hip; cos= dx/hip; ANG(i,:)=[sen cos]; TETA=[ANG(i,2) -ANG(i,1) 0 0; ANG(i,1) ANG(i,2) 0 0 ; 0 0 ANG(i,2) -ANG(i,1); 0 0 ANG(i,1) ANG(i,2)]; TETA2=inv(TETA); KL=[k 0 -k 0; 0 0 0 0; -k 0 k 0; 0 0 0 0]; K=TETA*KL*TETA2; %k11(i)=[K(1,1) K(1,2);K(2,1) K(2,2)]; k1111=K(1,1); k1112=K(1,2); k1121=K(2,1);

k1122=K(2,2); %k12(i)=[K(1,3) K(1,4);K(2,3) K(2,4)]; k1211=K(1,3); k1212=K(1,4); k1221=K(2,3); k1222=K(2,4); %k21(i)=[K(3,1) K(3,2);K(4,1) K(4,2)]; k2111=K(3,1); k2112=K(3,2); k2121=K(4,1); k2122=K(4,2); %k22(i)=[K(3,3) K(3,4);K(4,3) K(4,4)]; k2211=K(3,3); k2212=K(3,4); k2221=K(4,3); k2222=K(4,4); KG(2*bx-1,2*bx-1)=KG(2*bx-1,2*bx-1)+k1111; KG(2*bx-1,2*bx)=KG(2*bx-1,2*bx)+k1112; KG(2*bx,2*bx-1)=KG(2*bx,2*bx-1)+k1121; KG(2*bx,2*bx)=KG(2*bx,2*bx)+k1122; KG(2*bx-1,2*by-1)=KG(2*bx-1,2*by-1)+k1211; KG(2*bx-1,2*by)=KG(2*bx-1,2*by)+k1212; KG(2*bx,2*by-1)= KG(2*bx,2*by-1)+k1221; KG(2*bx,2*by)=KG(2*bx,2*by)+k1222; KG(2*by-1,2*bx-1)=KG(2*by-1,2*bx-1)+k2111; KG(2*by-1,2*bx)=KG(2*by-1,2*bx)+k2112; KG(2*by,2*bx-1)= KG(2*by,2*bx-1)+k2121; KG(2*by,2*bx)=KG(2*by,2*bx)+k2122; KG(2*by-1,2*by-1)=KG(2*by-1,2*by-1)+k2211; KG(2*by-1,2*by)=KG(2*by-1,2*by)+k2212; KG(2*by,2*by-1)=KG(2*by,2*by-1)+k2221; KG(2*by,2*by)= KG(2*by,2*by)+k2222; end KG %% Carregamento nfor=input('Quantas foras esto aplicadas na trelia? '); MF=zeros(2*nnos,1); for i=1:nfor Forca=input('Intensidade da Fora aplicada na trelia (kN): '); noF=input('N em que a fora est aplicada: '); angF=input('ngulo entre o eixo x e a fora. (Sentido anti-horrio) () : '); angFx=Forca*cosd(angF); angFy=Forca*sind(angF); MF(2*noF-1,1)= MF(2*noF-1,1)+angFx; MF(2*noF,1)=MF(2*noF,1)+angFy;

end %% Apoios e Matrizes simplificadas Neng=input('Quantos apoios h na trelia? '); KGsimp=KG; MFsimp=MF; for i=1:Neng noeng=input('N em que est o apoio : '); engx=input('Este apoio restringe o movimento no eixo x? (S/N) ','s'); engx=upper(engx); if strcmp(engx,'S') KGsimp(2*noeng-1,:)=(0); KGsimp(:,2*noeng-1)=(0); KGsimp(2*noeng-1,2*noeng-1)=1; MFsimp(2*noeng-1,:)=(0); end engy=input('E no eixo y? (S/N) ','s'); engy=upper(engy); if strcmp(engy,'S') KGsimp(2*noeng,:)=(0); KGsimp(:,2*noeng)=(0); KGsimp(2*noeng,2*noeng)=1; MFsimp(2*noeng,:)=(0); end end KGsimp MFsimp L=inv(KGsimp)*MFsimp %% Fora resultante em cada barra for i=1:nbar bx= B(i,1); by= B(i,2); dx= N(by,1)- N(bx,1); dy= N(by,2)- N(bx,2); hip= sqrt(dx^2+dy^2); sen= dy/hip; cos= dx/hip; lamb1=L(2*by-1,1)*cos+L(2*by,1)*sen; lamb2=L(2*bx-1,1)*cos+L(2*bx,1)*sen; x=lamb1-lamb2; B(i,3)=k*x;

if abs(B(i,3))<0.0001 B(i,3)=0; end end disp(' Na matriz B agora sai na primeira coluna o primeiro n, na segunda coluna') disp('o segundo n e na terceira a fora final de trao(se positiva) ou compresso') disp('se negativa). ') B %% Grfico figure hold on grid title('Trelia','Fontsize',14,'Fontname','times') for i=1:nbar x = [No(1,Barra(1,i)) No(1,Barra(2,i))]; y = [No(2,Barra(1,i)) No(2,Barra(2,i))]; pos1 = (No(1,Barra(1,i)) + No(1,Barra(2,i)))/2; pos2 = (No(2,Barra(1,i)) + No(2,Barra(2,i)))/2; plot(x,y,'k*'); if B(i,3)>0 plot(x,y,'r', 'Linewidth', 2); elseif B(i,3)<0 plot(x,y,'b', 'Linewidth', 2); elseif B(i,3)==0 plot(x,y,'k', 'Linewidth', 2); end axis equal if B(i,3)>0 nome=['F = ' num2str(B(i,3)) ' N']; elseif B(i,3)<0 nome=['F = ' num2str(B(i,3)) ' N']; else nome=['F = ' num2str(B(i,3)) ' N']; end texto(i)=text(pos1,pos2,nome); set(texto(i), 'BackgroundColor', 'w') set(texto(i), 'HorizontalAlignment', 'center', 'Edgecolor', 'w') xlabel('eixo x (cm)','Fontsize',12,'Fontname','times'); ylabel('eixo y (cm)','Fontsize',12,'Fontname','times'); end gtext({'Trao em vermelho','Compresso em azul'})

Vous aimerez peut-être aussi