análise de esforços em treliças

18
Beatriz C. F. da Silva 415200 Pablo Tamborra Estima 415090 Rafaela Trevisan Silva 415294 Desenvolvimento de Programa para Análise de Esforços em Treliças Introdução: Treliça é um sistema estrutural, que tem função de resistir a ação de forças aplicadas. Sua estrutura é formada por nós e barras, as barras transmitem apenas forças axiais e os esforços devem necessariamente ser aplicadas nos nós. A relação entre o número de barras, nós e reações de apoio de uma treliça fornece informações acerca do grau de estaticidade da estrutura, ou seja, quão estável é a estrutura. Para ela ser estável é necessário que o número de barras mais 3 seja igual ao dobro do número de nós de uma treliça plana. B + 3 = 2n Existem vários métodos para o cálculo estrutural desses sistemas, do ponto de vista computacional, é mais interessante utilizar o método dos deslocamentos, nele impõe-se a cada nó um deslocamento unitário e calcula-se os coeficientes de rigidez associados ao sistema de coordenadas adotado. Esta solução é somente para treliças planas e é feita através da análise matricial considerando as barras como molas de constante elástica k dada. Desenvolvimento Teórico: O processo tem inicio com a análise isolada de cada barra, aplicamos então a ideia do diagrama de corpo livre em cada um dos elementos da mola. Avaliam-se então as forças presentes e os deslocamentos causados por elas para a condição de equilíbrio. Tomando que as barras são molas, seguirão a Lei de Hooke. Contudo não será apenas uma força envolvida. Assim o que relacionará todas as forças com seus referidos deslocamentos será a Matriz de Rigidez [k]. A dimensão da matriz se relacionará com o numero de deslocamentos possíveis, ou seja, para um elemento finito qualquer com n componentes de deslocamentos, a Matriz de Rigidez terá dimensão de n x n. Exemplo para duas forças e dois deslocamentos:

Upload: beforastiere

Post on 26-Jul-2015

123 views

Category:

Documents


21 download

TRANSCRIPT

Page 1: Análise de Esforços em Treliças

Beatriz C. F. da Silva – 415200

Pablo Tamborra Estima – 415090

Rafaela Trevisan Silva – 415294

Desenvolvimento de Programa para Análise de Esforços em Treliças

Introdução:

Treliça é um sistema estrutural, que tem função de resistir a ação de forças

aplicadas. Sua estrutura é formada por nós e barras, as barras transmitem apenas forças

axiais e os esforços devem necessariamente ser aplicadas nos nós.

A relação entre o número de barras, nós e reações de apoio de uma treliça

fornece informações acerca do grau de estaticidade da estrutura, ou seja, quão estável é

a estrutura. Para ela ser estável é necessário que o número de barras mais 3 seja igual ao

dobro do número de nós de uma treliça plana. B + 3 = 2n

Existem vários métodos para o cálculo estrutural desses sistemas, do ponto de

vista computacional, é mais interessante utilizar o método dos deslocamentos, nele

impõe-se a cada nó um deslocamento unitário e calcula-se os coeficientes de rigidez

associados ao sistema de coordenadas adotado. Esta solução é somente para treliças

planas e é feita através da análise matricial considerando as barras como molas de

constante elástica k dada.

Desenvolvimento Teórico:

O processo tem inicio com a análise isolada de cada barra, aplicamos então a

ideia do diagrama de corpo livre em cada um dos elementos da mola. Avaliam-se então

as forças presentes e os deslocamentos causados por elas para a condição de equilíbrio.

Tomando que as barras são molas, seguirão a Lei de Hooke. Contudo não será apenas

uma força envolvida. Assim o que relacionará todas as forças com seus referidos

deslocamentos será a Matriz de Rigidez [k].

A dimensão da matriz se relacionará com o numero de deslocamentos possíveis,

ou seja, para um elemento finito qualquer com n componentes de deslocamentos, a

Matriz de Rigidez terá dimensão de n x n. Exemplo para duas forças e dois

deslocamentos:

Page 2: Análise de Esforços em Treliças

A rigidez da mola, representada por sua constante elástica k, indica a força

necessária para obter um deslocamento unitário. Partimos dessa ideia para determinar os

coeficientes de rigidez da Matriz de Rigidez de qualquer elemento. Assim, aplicamos

um deslocamento unitário em um dos nós da mola e medirmos as forças associadas a

esse deslocamento unitário, 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 através de um

deslocamento unitário u1 enquanto que o nó 2 está fixado (u2=0). Já no segundo caso há

o tensionamento da mola através do deslocamento unitário de u2, fixando-se o nó 1

(u1=0).

Para o caso 1, vamos ter que f2 = - f1 além de que F = força interna = k.d , em

que d representa a deformação da mola.

d = u2 – u1

Como u2 = 0, termos d = - u1 e por consequência F = - k.u1, como u1 é positivo,

pois tem a mesma orientação do eixo de referência, a força interna é negativa, o que

confirma a compressão na mola (F < 0).

Page 3: Análise de Esforços em Treliças

A força f1 será equilibrada pela força interna F, contudo seus sinais serão

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 raciocínio, contudo teremos f1 = - f2,

enquanto que u1=0 e F = k.u2 (caracterizando tração na mola, F > 0). Chegamos então às

seguintes equações:

f2 = k.u2

f1 = - k.u2

Colocando essas quatro equações no sistema,

{

} [

] {

}

encontraremos a Matriz de Rigidez do elemento.

[

] = [k]

Considerando duas dimensões:

[

]

Em treliças planas, a orientação das barras é dada pelos ângulos que estas

formam com os eixos de referência, por isso, a matriz de coeficientes de rigidez tem de

ser rotacionada e escrita para um sistema de referência XY, comum a todas as barras.

Page 4: Análise de Esforços em Treliças

[

]

[

]

[

]

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

Na sequência montamos a matriz de rigidez global que representará a rigidez de

toda a estrutura considerando as contribuições das n barras em seus respectivos locais ij,

ou seja, linha correspondente à força e coluna ao deslocamento considerado.

Para achar os deslocamentos locais precisamos saber os graus de liberdade da

treliça. Como consideramos treliça plana, temos apenas dois graus de liberdade por nó,

ou seja, deslocamentos nas direções 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

exceção do termo da diagonal onde coloca-se o 1.

Nestas condições o sistema de equações reduz-se em número de equações e de

incógnitas no total correspondente aos deslocamentos existentes nos nós. Sistema que

podemos descrever pela seguinte operação de matrizes:

Onde K a matriz de rigidez global, δ a matriz coluna que representa o

descolamento de cada nó, e F a força aplicada em cada nó.

Sendo este deslocamento calculado o global, teremos de achar o local pela

equação abaixo,

para, finalmente, encontrar a força exercida em cada barra:

Page 5: Análise de Esforços em Treliças

Desenvolvimento Computacional:

Primeiramente vamos pedir os dados necessários para definir as posições dos

nós e das barras:

%% Dados

nbar=input('Número de barras de sua treliça: '); nnos=input('Número de nós da treliça: '); for i=1:nnos coordx=input('Coordenada de cada nó no eixo x (cm):'); coordy=input('Coordenada de cada nó no eixo y (cm):'); N(i,:)=[coordx coordy]; No(1,i)=coordx; No(2,i)=coordy; end

for i=1:nbar disp('À que nós cada barra está ligada, olhando a tabela acima,

sendo o número do nó igual o número 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 elástica das barras:

k=input('Constante Elástica 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];

Page 6: Análise de Esforços em Treliças

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

Page 7: Análise de Esforços em Treliças

Pede-se, também, os esforços feitos na treliça, montando, assim, a matriz de

força aplicada MF:

%% Carregamento

nfor=input('Quantas forças estão aplicadas na treliça? '); MF=zeros(2*nnos,1);

for i=1:nfor

Forca=input('Intensidade da Força aplicada na treliça (kN): '); noF=input('Nó em que a força está aplicada: '); angF=input('Ângulo entre o eixo x e a força. (Sentido anti-horário)

(°) : ');

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 força aplicada na treliça (MFsimp):

%% Apoios e Matrizes simplificadas

Neng=input('Quantos apoios há na treliça? '); 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

Page 8: Análise de Esforços em Treliças

end

Logo, podemos calcular a matriz de deslocamento global: L=inv(KGsimp)*MFsimp

E, finalmente, se calcula o deslocamento local (x) e a força

resultante desejada (B(i,3), onde i é o número de barras):

%% Força 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 usuário melhor, desenhou-se um

gráfico que ilustra a treliça e dá os esforços em cada barra.

%% Gráfico

figure hold on grid title('Treliça','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*');

Page 9: Análise de Esforços em Treliças

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({'Tração em vermelho','Compressão em azul'})

Exemplo

Segue um exemplo de uma treliça calculada no programa descrito:

Número de barras de sua treliça: 11

Número de nós da treliça: 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 0

50 0

100 0

150 0

Page 10: Análise de Esforços em Treliças

150 50

100 50

25 50

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 1

Segundo nó : 2

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 2

Segundo nó : 3

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 3

Segundo nó : 4

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 4

Segundo nó : 5

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 5

Segundo nó : 6

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 6

Segundo nó : 7

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 1

Segundo nó : 7

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 2

Segundo nó : 7

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 2

Segundo nó : 6

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 3

Segundo nó : 6

À que nós cada barra está ligada, olhando a tabela acima, sendo o

número do nó igual o número da linha da matriz:

Primeiro nó : 4

Segundo nó : 6

B =

1 2

2 3

3 4

4 5

5 6

6 7

1 7

2 7

2 6

3 6

Page 11: Análise de Esforços em Treliças

4 6

Constante Elástica das barras(kN/cm²): 1

KG =

Columns 1 through 6

1.2000 0.4000 -1.0000 0 0 0

0.4000 0.8000 0 0 0 0

-1.0000 0 2.7000 0.1000 -1.0000 0

0 0 0.1000 1.3000 0 0

0 0 -1.0000 0 2.0000 0

0 0 0 0 0 1.0000

0 0 0 0 -1.0000 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 -0.5000 -0.5000 0 0

0 0 -0.5000 -0.5000 0 -1.0000

-0.2000 -0.4000 -0.2000 0.4000 0 0

-0.4000 -0.8000 0.4000 -0.8000 0 0

Columns 7 through 12

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 -0.5000 -0.5000

0 0 0 0 -0.5000 -0.5000

-1.0000 0 0 0 0 0

0 0 0 0 0 -1.0000

1.5000 -0.5000 0 0 -0.5000 0.5000

-0.5000 1.5000 0 -1.0000 0.5000 -0.5000

0 0 1.0000 0 -1.0000 0

0 -1.0000 0 1.0000 0 0

-0.5000 0.5000 -1.0000 0 3.0000 0

0.5000 -0.5000 0 0 0 2.0000

0 0 0 0 -1.0000 0

0 0 0 0 0 0

Columns 13 through 14

-0.2000 -0.4000

-0.4000 -0.8000

-0.2000 0.4000

0.4000 -0.8000

0 0

0 0

0 0

0 0

0 0

0 0

-1.0000 0

0 0

1.4000 0

0 1.6000

Quantas forças estão aplicadas na treliça? 1

Intensidade da Força aplicada na treliça (kN): 50

Nó em que a força está aplicada: 6

Ângulo entre o eixo x e a força. (Sentido anti-horário) (°) : 90

Page 12: Análise de Esforços em Treliças

Quantos apoios há na treliça? 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 1.0000 0 0 0 0

0 0 2.7000 0.1000 -1.0000 0

0 0 0.1000 1.3000 0 0

0 0 -1.0000 0 2.0000 0

0 0 0 0 0 1.0000

0 0 0 0 -1.0000 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 -0.5000 -0.5000 0 0

0 0 -0.5000 -0.5000 0 -1.0000

0 0 -0.2000 0.4000 0 0

0 0 0.4000 -0.8000 0 0

Columns 7 through 12

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 -0.5000 -0.5000

0 0 0 0 -0.5000 -0.5000

-1.0000 0 0 0 0 0

0 0 0 0 0 -1.0000

1.5000 -0.5000 0 0 -0.5000 0.5000

-0.5000 1.5000 0 -1.0000 0.5000 -0.5000

0 0 1.0000 0 0 0

0 -1.0000 0 1.0000 0 0

-0.5000 0.5000 0 0 3.0000 0

0.5000 -0.5000 0 0 0 2.0000

0 0 0 0 -1.0000 0

0 0 0 0 0 0

Columns 13 through 14

0 0

0 0

-0.2000 0.4000

0.4000 -0.8000

0 0

0 0

0 0

0 0

0 0

0 0

-1.0000 0

0 0

1.4000 0

0 1.6000

Page 13: Análise de Esforços em Treliças

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 força final de tração(se positiva) ou

compressão se negativa).

B =

1.0000 2.0000 75.0000

2.0000 3.0000 0

3.0000 4.0000 0

4.0000 5.0000 0

5.0000 6.0000 100.0000

6.0000 7.0000 50.0000

1.0000 7.0000 55.9017

2.0000 7.0000 -55.9017

2.0000 6.0000 70.7107

3.0000 6.0000 0

4.0000 6.0000 0

Page 14: Análise de Esforços em Treliças

Bibliografia:

Site que também calcula os esforços em treliças:

http://www.jhu.edu/virtlab/bridge/truss.htm

Livro que ensina o método dos deslocamentos para cálculo de treliças planas:

FILHO, Avelino Alves. Elementos Finitos A base da tecnologia CAE. 2010. Editora

Érica

Apêndice:

O programa feito no matlab em si:

%--------------------------------------------------------------------- % DETERMINAÇÃO DE ESFORÇOS EM UMA ESTRUTURA TRELIÇADA % 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 treliça plana conforme é pedido, % que os esforços (tração ou compressão) serão calculados pela rotina

% e um gráfico onde sua treliça estará desenhada com os esforços % indicados aparecerá na tela. %---------------------------------------------------------------------

clear all

Page 15: Análise de Esforços em Treliças

clc

%% Dados

nbar=input('Número de barras de sua treliça: '); nnos=input('Número de nós da treliça: '); for i=1:nnos coordx=input('Coordenada de cada nó no eixo x (cm):'); coordy=input('Coordenada de cada nó no eixo y (cm):'); N(i,:)=[coordx coordy]; No(1,i)=coordx; No(2,i)=coordy; end N

for i=1:nbar disp('À que nós cada barra está ligada, olhando a tabela acima,

sendo o número do nó igual o número 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 Elástica 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);

Page 16: Análise de Esforços em Treliças

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 forças estão aplicadas na treliça? '); MF=zeros(2*nnos,1);

for i=1:nfor

Forca=input('Intensidade da Força aplicada na treliça (kN): '); noF=input('Nó em que a força está aplicada: '); angF=input('Ângulo entre o eixo x e a força. (Sentido anti-horário)

(°) : ');

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;

Page 17: Análise de Esforços em Treliças

end

%% Apoios e Matrizes simplificadas

Neng=input('Quantos apoios há na treliça? '); 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

%% Força 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;

Page 18: Análise de Esforços em Treliças

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 força final de tração(se positiva)

ou compressão') disp('se negativa). ') B

%% Gráfico

figure hold on grid title('Treliça','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({'Tração em vermelho','Compressão em azul'})