Você está na página 1de 17

8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.

CIV 2118 - Método dos Elementos Finitos - 2018.2


Prof. Deane Roehl
Monitor: Marcello Congro

Aulas 1 e 2: O Método da Rigidez Direta - Partes 1 e 2


Referências: Cap. 2 e 3 Felippa (C.A. Felippa, Introduction to Finite Element Methods. Notas de Aula da
disciplina Introduction to Finite Elements Methods (ASEN 5007) - Fall 2018, Department of Aerospace
Engineering Sciences, University of Colorado at Boulder, 2018)

Resumo Teórico:
Equação Geral:

[F ] = [K ][u]

Se as propriedades de cada um dos membros são uniformes ao longo de seu comprimento, a teoria de
barras da Resistência dos Materiais nos afirma que:

In [1]: syms E A ks L F k d
ks=E*A/L

%A equação em função da força e do deslocamento podem ser reescritas como:


F = ks*d

ks =

(A*E)/L

F =

(A*E*d)/L

Note que, neste caso, F é a força axial interna e d o deslocamento axial relativo, que pode ser
interpretado fisicamente como o alongamento da barra. A força axial e o alongamento podem ser
expressos em termos das forças e deslocamentos conjuntos, que expressam as relações de equilíbrio
de forças e de compatibilidade cinemáticas, respectivamente.

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 1/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [2]: %Vamos denotar a expressão da matriz de rigidez em coordenadas locais:


syms K
K = (E*A/L) * [1 0 -1 0; 0 0 0 0; -1 0 1 0; 0 0 0 0]

K =

[ (A*E)/L, 0, -(A*E)/L, 0]
[ 0, 0, 0, 0]
[ -(A*E)/L, 0, (A*E)/L, 0]
[ 0, 0, 0, 0]

Matrizes de Transformação para Deslocamentos e Forças

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 2/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [3]: syms uxi uxj uyi uyj phi s c fxi fxj fyi fyj
uxi = uxi*cos(phi)+uyi*sin(phi)
uxj = uxj*cos(phi)+uyj*sin(phi)
uyi = -uxi*sin(phi)+uyi*cos(phi)
uyj = -uxj*sin(phi)+uyj*cos(phi)

uxi =

uxi*cos(phi) + uyi*sin(phi)

uxj =

uxj*cos(phi) + uyj*sin(phi)

uyi =

uyi*cos(phi) - sin(phi)*(uxi*cos(phi) + uyi*sin(phi))

uyj =

uyj*cos(phi) - sin(phi)*(uxj*cos(phi) + uyj*sin(phi))

OBS: A mesma analogia de cálculo é utilizada para o caso da transformação de forças.

As matrizes após a transformação de coordenadas pode ser revista a seguir.

In [4]: u = [c -s 0 0; s c 0 0; 0 0 c -s; 0 0 s c]*[uxi; uyi; uxj; uyj]

u =

c*(uxi*cos(phi) + uyi*sin(phi)) + s*(sin(phi)*(uxi*cos(phi) + uyi*sin(phi))


- uyi*cos(phi))
s*(uxi*cos(phi) + uyi*sin(phi)) - c*(sin(phi)*(uxi*cos(phi) + uyi*sin(phi))
- uyi*cos(phi))
c*(uxj*cos(phi) + uyj*sin(phi)) + s*(sin(phi)*(uxj*cos(phi) + uyj*sin(phi))
- uyj*cos(phi))
s*(uxj*cos(phi) + uyj*sin(phi)) - c*(sin(phi)*(uxj*cos(phi) + uyj*sin(phi))
- uyj*cos(phi))

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 3/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [5]: f = [c s 0 0; -s c 0 0; 0 0 c s; 0 0 -s c]*[fxi; fyi; fxj; fyj]

f =

c*fxi + fyi*s
c*fyi - fxi*s
c*fxj + fyj*s
c*fyj - fxj*s

Exemplo de Aplicação 1: MRD em Treliças Planas

1) Considere a estrutura de treliça representada na figura a seguir. Utilizando a formulação e as etapas de


cálculo do Método da Rigidez Direta, calcule o vetor de forças nodais em cada um dos nós da treliça, indicando
claramente se são forças de tração (T) ou compressão (C). A seguir, determine os deslocamentos nodais em
cada um dos nós da estrutura. Utilize o software MATLAB para otimizar os cálculos matriciais necessários à sua
solução.

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 4/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [6]: clc; clear all; close all;

%Inicialmente, vamos determinar as coordenadas de cada um dos 3 nós da treliça


em questão, conforme explicita
%a figura do enunciado:

N = [0 0
3 0
3 4];

%Precisamos agora definir os elementos da treliça. O elemento 1 tem os nós 1 e


2 como extremidades, enquanto que
% o elemento 2 tem os nós 1 e 3 como extremidades.

E = [1 2
1 3];

%Cálculo do número do elemento, utilizando o comando length do MATLAB:


NN = length(N);

In [7]: %Vamos agora definir os vetores de forças Q e deslocamentos Ddo problema. Inic
ialmente, ele deverá estar vazio,
%o que nos fará utilizar o comando zeros do MATLAB. Note que a força no nó 2 é
conhecida e vale 2 kN. Portanto:

Q = zeros(2*NN, 1);
Q(2) = -2; %Força conhecida

D = zeros(2*NN, 1); %Vetor de deslocamentos

In [8]: %Cálculo da força interna para o primeiro elemento:

L = 3; %Comprimento da primeira treliça


P1 = E(1,1); %Primeira extremidade do elemento
P2 = E(1,2); %Segunda extremidade do elemento
lx = (N(P2,1)-N(P1,1))/L; %Cálculo dos cossenos diretores
ly = (N(P2,2)-N(P1,2))/L; %Cálculo dos cossenos diretores

%% Cálculo da matriz de rigidez para o primeiro elemento (Matriz de Rigidez Lo


cal)
k1 = [ lx*lx lx*ly -lx*lx -lx*ly
ly*ly ly*ly -lx*ly -ly*ly
-lx*lx -lx*ly lx*lx lx*ly
-lx*ly -ly*ly lx*ly ly*ly]/L;

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 5/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [9]: %Cálculo da força interna para o segundo elemento:

L = 5;
P1 = E(2,1); P2 = E(2,2);
lx = (N(P2,1)-N(P1,1))/L;
ly = (N(P2,2)-N(P1,2))/L;

%1 2 5 6 (Matriz de Rigidez Local)


k2 = [ lx*lx lx*ly -lx*lx -lx*ly
ly*ly ly*ly -lx*ly -ly*ly
-lx*lx -lx*ly lx*lx lx*ly
-lx*ly -ly*ly lx*ly ly*ly]/L;

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 6/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [10]: %Zerando as matrizes globais K1 e K2 para depois preenchê-las adequadamente:

K1 = zeros(2*NN, 2*NN);
K1([1 2 3 4], [1 2 3 4]) = k1;
K2 = zeros(6);
K2([1 2 5 6], [1 2 5 6]) = k2;

%Assembly - Obtenção de matriz global K


K = K1 + K2;

% Claramente sabemos que, para determinar os deslocamentos D, devemos fazer: i


nv(K)*Q. Isto nos leva intuitivamente
% a escrever no formato Q\K.

%Entretanto, no MATLAB, a notação para escrever a inversa pode confundir em de


terminas ocasiões, e por isso merece
%atenção. Ao utilizar a sintaxe "\", estamos indicando que a matriz localizada
à esquerda da contra-barra que
%terá a sua inversa calculada. Portanto, ao escrever K\Q, estamos representand
o: inv(K)*Q. Atenção à esta sintaxe!

%Confira esta terminologia utilizando o comando 'help'

help \

D([1 2]) = K([1 2], [1 2])\Q([1 2]);

%A nomenclatura exibida anteriormente é uma notação compacta do MATLAB. Ela in


dica que os cálculos matricias devem
%ser realizados considerando cada uma das entradas das matrizes envolvidas, ev
itando com o que programa se perca.
%Observe ainda que duas entradas da matriz D já são conhecidas, e portanto pod
em ser suprimidas. Confira a figura abaixo.

Q = K*D;

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 7/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

\ Backslash or left matrix divide.


A\B is the matrix division of A into B, which is roughly the
same as INV(A)*B , except it is computed in a different way.
If A is an N-by-N matrix and B is a column vector with N
components, or a matrix with several such columns, then
X = A\B is the solution to the equation A*X = B. A warning
message is printed if A is badly scaled or nearly singular.
A\EYE(SIZE(A)) produces the inverse of A.

If A is an M-by-N matrix with M < or > N and B is a column


vector with M components, or a matrix with several such columns,
then X = A\B is the solution in the least squares sense to the
under- or overdetermined system of equations A*X = B. The
effective rank, K, of A is determined from the QR decomposition
with pivoting. A solution X is computed which has at most K
nonzero components per column. If K < N this will usually not
be the same solution as PINV(A)*B. A\EYE(SIZE(A)) produces a
generalized inverse of A.

C = MLDIVIDE(A,B) is called for the syntax 'A \ B' when A or B is an


object.

See also LDIVIDE, RDIVIDE, MRDIVIDE.

Reference page in Doc Center


doc mldivide

Other functions named mldivide

duration/mldivide tall/mldivide timeseries/mldivide

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 8/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [11]: %Preenchimento dos vetores D e Q para cada um dos nós da treliça para output d
os resultados:
% Aqui utilizaremos o comando for apenas para printar ao usuário os valores do
s deslocamentos e forças
% já armazenados nas matrizes calculadas nas linhas de código anteriores.

for i=1:2*NN
fprintf(['D(%i)=%5.3f\n'], i, D(i));
end

for i=1:2*NN
fprintf(['Q(%i)= %5.3f\n'], i, Q(i));
end

L = 3;
P1 = E(1,1);
P2 = E(1,2);
lx = (N(P2,1)-N(P1,1))/L;
ly = (N(P2,2)-N(P1,2))/L;

%Cálculo das Reações q1 e q2


q1 = [-lx -ly lx ly]*D(1:4)/L;
fprintf('q1 = %5.3f\n', q1);

L = 5;
P1 = E(2,1); P2 = E(2,2);
lx = (N(P2,1)-N(P1,1))/L;
ly = (N(P2,2)-N(P1,2))/L;
q2 = [-lx -ly lx ly]*D([1 2 5 6])/L;
fprintf('q2 = %5.3f\n', q2);

D(1)=4.849
D(2)=-20.474
D(3)=0.000
D(4)=0.000
D(5)=0.000
D(6)=0.000
Q(1)= -0.000
Q(2)= -2.000
Q(3)= -1.616
Q(4)= 0.000
Q(5)= 1.616
Q(6)= 2.155
q1 = -1.616
q2 = 2.694

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 9/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

Exemplo de Aplicação 2: MRD em Treliças Planas


2) Dada a estrutura de treliça abaixo, calcule: (a) a matriz de rigidez global do sistema; (b) o vetor de
deslocamentos da estrutura de treliça; (c) o vetor de forças nodais atuantes em cada um dos elementos da
treliça, indicando se são de tração ou compressão; (d) o vetor de tensões em cada um dos elementos da treliça.
Utilize o MATLAB para auxiliar seus cálculos.

Dados:

E = 90*10^8
A = 5*10^-4

Forças aplicadas aos graus de liberdade (as demais são nulas):


Força(4)= -500000.0
Força(8)= -500000.0
Força(11)= 500000.0
Força(12)= -500000.0

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 10/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [22]: clc; clear all

%Nós e Conectividade
elementsnodes=[1 2;1 3;2 3;2 4;1 4;3 4;3 6;4 5;4 6;3 5;5 6];

%Número de Elementos e de Nós


numbelem=size(elementsnodes,1);
numbnod=6;

%Coordenadas dos nós


numbcoord=[0 0;0 3;3 0;3 3;6 0;6 3];

% Graus de Liberdade dos elementos


dofelem=[1 2 3 4;1 2 5 6;3 4 5 6;...
3 4 7 8;1 2 7 8;5 6 7 8;5 6 11 12;...
7 8 9 10;7 8 11 12;5 6 9 10;9 10 11 12];

%Definição de E, A para cada elemento

A(1)=5*10^(-3);
A(2)=5*10^(-3);
A(3)=5*10^(-3);
A(4)=5*10^(-3);
A(5)=5*10^(-3);
A(6)=5*10^(-3);
A(7)=5*10^(-3);
A(8)=5*10^(-3);
A(9)=5*10^(-3);
A(10)=5*10^(-3);
A(11)=5*10^(-3);

E(1)=90*10^7;
E(2)=90*10^7;
E(3)=90*10^7;
E(4)=90*10^7;
E(5)=90*10^7;
E(6)=90*10^7;
E(7)=90*10^7;
E(8)=90*10^7;
E(9)=90*10^7;
E(10)=90*10^7;
E(11)=90*10^7;

% Zerando as matrizes de deslocamento, forças e rigidez para o cálculo posteri


or do MATLAB:
D=zeros(2*numbnod,1);
F=zeros(2*numbnod,1);
stiffness=zeros(2*numbnod);

%Forças aplicadas nos graus de liberdade:


F(3)=0.0;
F(4)=-500000.0;
F(5)=0.0;
F(6)=0.0;
F(7)=0.0;
F(8)=-500000.0;

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 11/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

F(9)=0.0;
F(11)=500000.0;
F(12)=-500000.0;

%Condições de Contorno
D (1,1)=0.0;
D (2,1)=0.0;
D (10,1)=0.0;

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 12/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

In [23]: % Cálculo da Matriz de Rigidez

for e=1:numbelem
L(e)=sqrt((numbcoord(elementsnodes(e,2),1)-numbcoord(elementsnodes(e,1),1))^2
+...
(numbcoord(elementsnodes(e,2),2)-numbcoord(elementsnodes(e,1),2))^2);
C=(numbcoord(elementsnodes(e,2),1)-numbcoord(elementsnodes(e,1),1))/L(e);
S=(numbcoord(elementsnodes(e,2),2)-numbcoord(elementsnodes(e,1),2))/L(e);
k=(A(e)*E(e)/L(e)*[C*C C*S -C*C -C*S;C*S S*S -C*S -S*S;...
-C*C -C*S C*C C*S; -C*S -S*S C*S S*S]);

% Retirar as linhas da matriz dofelem para cada elemento 'e'


dofelem_vec=dofelem(e,:);
for i=1:4
for j=1:4
stiffness(dofelem_vec(1,i),dofelem_vec(1,j))=...
stiffness(dofelem_vec(1,i),dofelem_vec(1,j))+k(i,j);
end
end
end

% Vetor F contendo as forças conhecidas


known_f_a=[3;4;5;6;7;8;9;11;12];
for i=1:size(known_f_a,1)
dis_new(i,1)=D(known_f_a(i,1),1);
F_new(i,1)=F(known_f_a(i,1),1);
end

for i=1:size(known_f_a,1)
for j=1:size(known_f_a,1)
stiff_new(i,j)=stiffness(known_f_a(i,1),known_f_a(j,1));
end
end

% Resolvendo a matriz
dis_new=stiff_new\F_new;

for i=1:size(known_f_a,1)
D(known_f_a(i,1),1)=dis_new(i,1);
end

% Plot da configuração da treliça antes da deformação


for e=1:numbelem
x=[numbcoord(elementsnodes(e,1),1) numbcoord(elementsnodes(e,2),1)];
y=[numbcoord(elementsnodes(e,1),2) numbcoord(elementsnodes(e,2),2)];
plot(x,y,'b')
hold on
end

% Deslocamento conhecido
known_dis_a=[1;2;10];
for i=1:size(known_dis_a,1)
F(known_dis_a(i,1),1)=stiffness(known_dis_a(i,1),:)...

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 13/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

*D;
end

% Tensões nos elementos


for e=1:numbelem
L(e)=sqrt((numbcoord(elementsnodes(e,2),1)-numbcoord(elementsnodes(e,1),1))^2
+...
(numbcoord(elementsnodes(e,2),2)-numbcoord(elementsnodes(e,1),2))^2);
C=(numbcoord(elementsnodes(e,2),1)-numbcoord(elementsnodes(e,1),1))/L(e);
S=(numbcoord(elementsnodes(e,2),2)-numbcoord(elementsnodes(e,1),2))/L(e);
stress(e)=(E(e)/L(e))*[-C -S C S]*D((dofelem(e,:))');
end

disp('Matriz de Rigidez')
stiffness
disp('D')
D
disp('F')
F
disp('Tensão')
stress'

k=0;
for i=1:6
for j=1:2
k=k+1;
numbcoord_def(i,j)=numbcoord(i,j)+D(k,1);
end
end

% Plot da configuração deformada


for e=1:numbelem
x=[numbcoord_def(elementsnodes(e,1),1) numbcoord_def(elementsnodes(e,2),1
)];
y=[numbcoord_def(elementsnodes(e,1),2) numbcoord_def(elementsnodes(e,2),2
)];
plot(x,y,'r')
title ('Trelica e Deformada')
hold on
end

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 14/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

Matriz de Rigidez

stiffness =

1.0e+06 *

2.0303 0.5303 0 -1.5000 0 0 -0.5303 -0.5


303 0 0 0 0
0.5303 2.0303 0 -1.5000 0 0 -0.5303 -0.5
303 0 0 0 0
0 0 2.0303 -0.5303 -0.5303 0.5303 -1.5000
0 0 0 0 0
0 -1.5000 -0.5303 2.0303 0.5303 -0.5303 0
0 0 0 0 0
-1.5000 0 -0.5303 0.5303 4.0607 0 0
0 -1.5000 0 -0.5303 -0.5303
0 0 0.5303 -0.5303 0 2.5607 0 -1.5
000 0 0 -0.5303 -0.5303
-0.5303 -0.5303 -1.5000 0 0 0 4.0607
0 -0.5303 0.5303 -1.5000 0
-0.5303 -0.5303 0 0 0 -1.5000 0 2.5
607 0.5303 -0.5303 0 0
0 0 0 0 -1.5000 0 -0.5303 0.5
303 2.0303 -0.5303 0 0
0 0 0 0 0 0 0.5303 -0.5
303 -0.5303 2.0303 0 -1.5000
0 0 0 0 -0.5303 -0.5303 -1.5000
0 0 0 2.0303 0.5303
0 0 0 0 -0.5303 -0.5303 0
0 0 -1.5000 0.5303 2.0303

D =

0
0
0.5226
-0.3195
0.3472
-0.4558
0.5364
-0.5755
0.5469
0
0.7361
-0.4669

F =

1.0e+06 *

-0.5000
0.5000
0
file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 15/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

-0.5000
0
0
0
-0.5000
0
1.0000
0.5000
-0.5000

Tensão

ans =

1.0e+08 *

-0.9585
1.0415
-0.0587
0.0415
-0.0587
-0.3592
0.5667
-0.8475
0.5993
0.5993
-1.4007

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 16/17
8/14/2018 CIV 2118 - Aula 1 - Método da Rigidez Direta - 2018.2

PARA CASA: Modifique os valores de E, A co código anterior para alguns diferentes tipos de materiais (aço,
alumínio, por exemplo). Verifique a configuração deformada para cada um destes casos. Existe alguma
influência do valor de E,A nos valores dos deslocamentos obtidos? Justifique sua resposta.

file:///D:/CIV%202118%20-%20Aulas%201%20e%202%20-%20M%C3%A9todo%20da%20Rigidez%20Direta%20-%202018.html 17/17