Escolar Documentos
Profissional Documentos
Cultura Documentos
ELEMENTOS FINITOS em
MATLAB
5 de Novembro de 2007
Prefácio
Este texto tem por objectivo fornecer os conhecimentos básicos sobre a teoria
de elementos finitos e a sua implementação em programas MATLAB. Este
texto compreende as seguintes matérias:
• sistemas discretos
• formulação variacional e método dos resı́duos pesados
• formulação básica pelo método dos elementos finitos
• formulação de vários elementos (barras, vigas, placas, etc)
• programação MATLAB
• ilustração de alguns temas através de programas MATLAB
Este texto segue uma visão de engenharia, ou seja, apresenta apenas os con-
ceitos matemáticos mı́nimos para poder estabelecer os programas de cálculo
e poder estudar alguns exemplos práticos.
Os códigos MATLAB que aqui se incluem podem ser obtidos gratuitamente
do autor, bastando para isso um pedido por email para: ferreira@fe.up.pt
Estes códigos foram elaborados pelo autor, à excepção de algumas rotinas
de geração de malha e visualização de resultados que podem ser encontradas
na internet gratuitamente.
Dedicatória
1 Sistemas discretos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 Alguns conceitos básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.3 Elementos de mola e barra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.4 Equilibrio nos nós . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5 Etapas básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.6 Problema de molas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.7 Código MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.7.1 Passos de programação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.8 Condições fronteira . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
1.8.1 Método da penalidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.9 Programação alternativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
1
Sistemas discretos
1.1 Introdução
Hoje em dia, o método dos elementos finitos é uma realidade cada vez mais
presente em aplicações industriais e na análise de engenharia em geral. O
método dos elementos finitos é utilizado na análise de sólidos e estruturas,
bem como na mecânica de fluidos e transferência de calor.
O método dos elementos finitos teve um grande impacto após o apare-
cimento dos computadores que permitiram a solução rápida e eficiente de
sistemas de equações algébricas resultantes da aplicação do método a um de-
terminado problema de engenharia.
A origem do método dos elementos finitos remonta aos anos 50 e 60, com
os trabalhos de Courant [1], Argyris [6] e Clough [7]. Aparentemente, o termo
“elemento finito” foi introduzido por Clough [7]. As contribuições iniciais de
Zienkiewicz e Cheung [8] e Argyris [6] são consideradas muito significativas
para o desenvolvimento do método. Após os anos 60, tem-se verificado uma
crescente atenção para este método, resultando num número muito elevado
de publicações. Registe-se alguns livros de referência obrigatória: Reddy [100],
Onate [4], Zienkiewicz e Taylor [9], Hughes [122], Hinton [5], entre outros. No
capı́tulo final, apresenta-se uma lista de livros que os leitores devem consultar
sobre o método dos elementos finitos, em particular aqueles que possuem
alguma programação.
O método dos elementos finitos representa uma aproximação dum mo-
delo matemático que representa o mais fielmente possı́vel o problema fı́sico.
Registe-se que o método não pode fornecer mais informação que aquela que é
fornecida pelo modelo matemático.
Neste capı́tulo pretende-se ilustrar alguns conceitos básicos, através da
solução de elementos discretos, com molas, tipicamente.
14 1 Sistemas discretos
(e) (e)
u1 (e) u2
1 2
(e) (e)
R1 R2
L(e)
(e) (e) u2 − u1
R2 = −R1 = N = (EA)(e) (1.4)
L(e)
ou
(e) (e) (e) (e)
R2 = −R1 = N = k (e) (u2 − u1 ) (1.5)
EA
(onde k (e) = L ), podemos então rearranjar as relações na forma
( ) ( (e) )
(e)
R1 1 −1 u1
q (e) = (e) = k (e) (e) = K(e) a(e) (1.6)
R2 −1 1 u2
( (e)
)
(bl)(e)
(e) (e) 1 −1 u1 1
q =k (e) − = K(e) a(e) − f (e) (1.7)
−1 1 u2 2 1
ne
(e)
X
R(e) = Rj (1.8)
e=1
Ka = f (1.9)
k2
3
k1 2
2
1 P x
2
1 k3
4
Barra rigida 2
3
Para cada uma das molas, pode escrever-se o equilibrio (local), na forma
Mola 1: ( ) ( (1) )
(1)
R1 (1) 1 −1 u1
(1) =k (1)
R2 −1 1 u2
Mola 2: ( ) ( )
(2) (2)
R1 (2) 1 −1 u1
(2) =k (2)
R2 −1 1 u2
Mola 3: ( ) ( )
(3) (3)
R1 1 −1 u1
(3) = k (3) (3)
R2 −1 1 u2
Pode ainda impor-se a relação entre os deslocamentos no sistema local
ou do elemento e no sistema global ou da estrutura, na forma (Condições de
compatibilidade):
(1) (1) (2) (2) (3) (3)
u1 = u1 ; u2 = u2 ; u1 = u2 ; u2 = u3 ; u1 = u2 ; u2 = u4 (1.10)
3
(1) (2) (3)
X
Nó 2: R(e) = P ⇔ R2 + R1 + R1 = P (1.12)
e=1
3
(3)
X
Nó 3: R(e) = F3 ⇔ R2 = F3 (1.13)
e=1
18 1 Sistemas discretos
3
(4)
X
Nó 4: R(e) = F4 ⇔ R2 = F4 (1.14)
e=1
Encontrando assim a equação global de equilibrio estático na forma
k1 −k1 0 0 u1
F1
−k1 k1 + k2 + k3 −k2 −k3 u2 P
= (1.15)
0 −k2 k2 0 u3 F3
0 −k3 0 k3 u4 F4
numelem=size(element,1);
numnode=4;
U=zeros(numnode,1);
f=zeros(numnode,1);
K=zeros(numnode,numnode);
O comando zeros permite colocar uma matriz de uma dada dimensão com
os seus elementos todos nulos, o que vai ser particularmente importante para
a matriz de rigidez tendo em conta que ela é formada pela ”soma”de contri-
buições de vários elementos. A este processo também se chama inicialização
das matrizes.
O vector de forças nodais está já todo formado por zeros, pelo que se pode
agora colocar a força P = 10 no grau de liberdade 2,
f(2)=10.0;
index=element(e,:) ;
2
Note-se que cada nó tem aqui apenas 1 grau de liberdade, pelo que há uma
identificação do número de nós com o número de graus de liberdade, o que não
acontecerá com outros problemas mais adiante
1.7 Código MATLAB 21
U=K(activos,activos)\f(activos)
Esta parte do código permite apenas calcular u2 , pelo que deveremos apre-
sentar os resultados considerando também os valores nulos, fazendo uso de
vectores auxiliares, na forma
U=K(activos,activos)\f(activos);U1=zeros(numnode,1);U1(activos)=U;
F=K*U;
reaccoes=F(dofs);
K =
1 -1 0 0
-1 3 -1 -1
0 -1 1 0
0 -1 0 1
>> f
f =
0
10
0
0
Deslocamentos
ans =
1.0000 0
2.0000 3.3333
3.0000 0
4.0000 0
1.8 Condições fronteira 23
reaccoes
ans =
1.0000 -3.3333
3.0000 -3.3333
4.0000 -3.3333
32 jj=1:4; format
33 [jj’ U]
34 % reaccoes
35 F=K1*U;
36 reaccoes=F(dofs);
37 disp(’reaccoes’)
38 [dofs reaccoes]
Ku = f (1.20)
torna-se necessário introduzir as condições de fronteira essenciais, dado que
a matriz de coeficientes inicial é singular. Basicamente pretende-se introduzir
as condições
un = ūn (1.21)
Uma forma simples de colocar estas condições essenciais é o de modificar a
linha da matriz correspondente ao grau de liberdade n, na forma
Knm = δnm (1.22)
para todos os m = 1 : N , sendo N a dimensão da matriz de rigidez e modifi-
cando também o segundo membro na forma
fn = ūn (1.23)
Infelizmente, esta abordagem destrói a simetria da matriz de rigidez. Uma
forma possı́vel de obviar este contratempo é o de modificar também a coluna
correspondente ao grau de liberdade, fazendo
Kmn = δnm (1.24)
para todos os m = 1 : N . É também necessário modificar o segundo membro
na forma
fm = Kmn ūn (1.25)
Isto equivale a tomar uma nova equação, na forma
Kk1 u1 + Kk2 u2 + ... + Kk(n−1) un−1 + Kk(n+1) un+1 + KkN uN = fk − Kkn ūn
(1.26)
Em MATLAB podemos escrever esta fórmula como
ufixed=zeros(size(dofs));
%
f=f-K(:,dofs)*ufixed;
f(dofs)=ufixed;
K(dofs,:)=0;
K(:,dofs)=0;
K(dofs,dofs) =bcwt*speye(length(dofs));
1.8 Condições fronteira 25
46 % U : vector de deslocamentos
47 % dofs : vector de graus de liberdade prescritos
48 % F : vector de reaccoes
49
50 % escrita para ecran
51
52 % deslocamentos
53 disp(’Deslocamentos’)
54 jj=1:length(U); format
55 [jj’ U]
56 % reaccoes
57 F=K*U;
58 reaccoes=F(dofs);
59 disp(’reaccoes’)
60 [dofs reaccoes]
61
62 % escrita para ficheiro externo
63
64 outFileName = ’output’;
65 outfid = fopen(outFileName,’w’);
66 fprintf(outfid,’* Escrita de resultados *\n’);
67 fprintf(outfid,’* ------------------------------------------\n’);
68
69 fprintf(outfid,’ No Deslocamentos \n’);
70 for i=1:length(U);
71 fprintf(outfid,’%3.0f %15.14f \n’,i,U(i));
72 end
73
74 fprintf(outfid,’ No Reaccoes \n’);
75 for i=1:length(dofs);
76 fprintf(outfid,’%3.0f %15.14f \n’,i,F(dofs(i)));
77 end
78
79
80 function U = BC_solucao(method,dofs,ndof,K,f)
81
82 % funcao para imposicao de condicoes fronteira
83 % e solucao do sistema de equacoes por
84
85 % metodo 1: supressao de linhas e colunas
86 % metodo 2: penalidade
87 % metodo 3: modificacao do sistema
88
89 % k : matriz de rigidez
90 % f : vector de forcas
91 % ndof : numero total de graus de liberdade
92 % dofs : vector de graus de liberdade prescritos
93
94 switch method
1.9 Programação alternativa 29
95 case ’linhas’
96
97 activos=setdiff([1:ndof]’,[dofs]);
98 U=K(activos,activos)\f(activos);
99 U1=zeros(ndof,1);
100 U1(activos)=U;
101 U=U1;
102
103 case ’penalidade’
104
105 K1=K;
106 K1(dofs,dofs)=K(dofs,dofs)+1e6;
107 f(dofs)=0;
108 U=K1\f;
109
110 case ’usual’
111
112 bcwt=mean(diag(K)); % valor medio de diag(K) para preservar
113 % bom condicionamentgo da matriz de rigidez
114 ufixed=zeros(size(dofs));
115 f=f-K(:,dofs)*ufixed;
116 f(dofs)=ufixed;
117 K(dofs,:)=0;
118 K(:,dofs)=0;
119 K(dofs,dofs)=bcwt*speye(length(dofs));
120 U=K\f;
121
122 end
2
Introdução ao método dos elementos finitos
u(x, t)
x R0
R(t)
R0
σA|x σA|x+dx
a) Carregamento dx
b) elemento diferencial
∂σ ∂2u
σA|x + A |x − σA|x = ρA 2 |x dx (2.6)
∂x ∂t
A relação constitutiva escreve-se como
∂u
σ = E = E (2.7)
∂x
onde E representa o módulo de elasticidade, σ e são a tensão e a de-
formação e u o deslocamento axial, sendo ainda t a variável tempo. Combi-
nando as equações anteriores, temos então
∂2u ∂2u
EA = ρA (2.8)
∂x2 ∂t2
ou
∂2u 1 ∂2u
= (2.9)
∂x2 c2 ∂t2
Dado assumir-se que a função é contı́nua, não são precisas constrições para a
continuidade de elementos.
As condições fronteira exprimem-se como
∂u
u(0, t) = 0; EA (L, t) = R0 ; t > 0 (2.10)
∂x
enquanto que as condições iniciais se definem como
∂u
u(x, 0) = 0; (x, 0) = 0 (2.11)
∂t
A formulação fica assim completa com as equações (2.9) a (2.11).
Os problemas envolvendo equações elı́pticas são muitas vezes denominadas
de problemas de fronteira, enquanto que as equações parabólicas e hiperbólicas
são chamadas problemas de valores iniciais.
δΠ = 0 (2.12)
em relação às variáveis do problema.
O potencial total Π é também chamado o funcional do problema. Assuma-
se que no problema do funcional a maior derivada da variável em relação às
34 2 Introdução ao método dos elementos finitos
∂F ∂F ∂F
δF = δv + δ(dv/dx) + ... + δ(dp v/dxp ) (2.13)
∂v ∂(dv/dx) ∂(d v/dxp )
p
dn δv dn v
=δ (2.14)
dxn dxn
ou seja, a variação da derivada de v é igual à derivada da variação em v.
Pode também exprimir-se
δ(F + Q) = δF + δQ (2.15)
mas para efeitos de compreensão dos principios variacionais, elas são aqui
avançadas.
Considere-se o problema da figura 2.1, descrito pelas equações (2.9) a
(2.11), onde uma barra de secção constante A é sujeita a uma força distribuida,
q, ao longo de todo o comprimento, sujeita ainda a uma força pontual no final
da barra, R. O funcional é definido por
Z L 2 Z L
1 ∂u
Π= EA dx − uqdx − uL R (2.19)
0 2 ∂x 0
u0 = 0 (2.20)
∂2u
+q =0
EA (2.23)
∂x2
e a condição fronteira natural em x = L
∂u
EA |x=L = R (2.24)
∂x
∂2u
Assumindo q = −Aρ 2 obtemos então a equação diferencial (2.23) é dada
∂t
por
∂2u ∂2u
E = ρ (2.25)
∂x2 ∂t2
que é equivalente a (2.9).
A condição de fronteira natural foi definida em (2.25). O problema vari-
acional é de classe C 0 , ou seja, m = 1. Note-se que, embora ainda não seja
aparente, a incorporação das condições fronteira naturais no funcional faz
com que estas condições não sejam depois impostas no método dos elementos
finitos.
36 2 Introdução ao método dos elementos finitos
x P
L 2 L
d2 w d2 w
Z Z
1 P 1 2
Π= EI dx − dx + kwL (2.26)
0 2 dx2 2 0 dx2 2
Z L Z L
00 00
δΠ = 0 → EIw δw dx − P w0 δw0 dx + kwL δwL = 0 (2.28)
0 0
dw d
onde w0 = , etc. No entanto, regista-se que δw00 = (δw0 ), sendo EI
dx dx
constante. Integrando por partes, obtem-se para o primeiro termo do primeiro
membro
Z L Z L
00 00 00 0
EIw δw dx = EIw δw (0) − EI L
w000 δw0 dx (2.29)
0 0
Z L Z L
000 0
Integrando novamente por partes w δw dx, bem como w0 δw0 dx,
0 0
obtem-se
2.4 Obtenção de equações diferenciais a partir de funcionais 37
Z L
(EIw0000 + P w00 ) δwdx + (EIw00 δw0 ) (L) − (EIw00 δw0 ) (0) −
|0
| {z } | {z }
{z } 2 3
1
[(EIw000 + P w0 ) δw](L) + [(EIw000 + P w0 ) δw](0) + kwL δwL = 0 (2.30)
| {z } | {z } | {z }
4 5 6
A(x) = A0 (2 − x/L)
K
A0
A(x)
R
Tomando o funcional
Z L
1 1
Π= Aσdx − Ru(L) + ku2 (0) (2.34)
0 2 2
ou
38 2 Introdução ao método dos elementos finitos
Z L 2
1 du 1
Π= EA dx − Ru(L) + ku2 (0) (2.35)
0 2 dx 2
Invocando δΠ = 0, obtemos
Z L
EAu0 δu0 dx −Rδu(L) + kuδu(0) = 0 (2.36)
0
| {z }
1
Z L
EAu0 δu(0)L − EAu00 δudx − Rδu(L) + kuδu(0) = 0 (2.37)
0
ou
Z L
− EAu00 δudx + (EAu0 − R) δu(L) + (ku − EAu0 ) δu(0) = 0 (2.38)
0
Z L
(EIw00 − M ) δw0 (L) − (EIw000 δw) (L) + EIw0000 δwdx = 0 (2.46)
0
L(φ) = r (2.50)
onde L é um operador diferencial linear, φ uma variável do problema e r
uma dada função. A solução do problema deve ainda satisfazer equações ou
condições fronteira do tipo
−EAu00 = 0 (2.54)
sujeita às condições fronteira
∂2
L = −EA , φ = u, r = 0 (2.56)
∂x2
B1 = 1, q1 = 0 (2.57)
∂
B2 = EA , q2 = R
∂x
(2.58)
Z L Z L
00 0 L
−EAu vdx = − [EAu v]0 + EAu0 v 0 dx =
0 0
Z L
L
− [EAu0 v]0 + EAuv 0 (0)L − EAv 00 udx (2.59)
0
Como u = v = 0 em x = 0 e u0 = v 0 = 0 em x = L, temos
Z L Z L
−EAu00 vdx = − −EAv 00 udx (2.60)
0 0
Para a solução exacta temos um resı́duo nulo. Uma boa aproximação será
aquela que possui resı́duo nulo em todos os pontos do domı́nio. Os métodos
a seguir apresentados diferem uns dos outros na forma como calculam ai por
forma a que R seja o mais pequeno possı́vel, nomeadamente através duma
média ponderada do resı́duo.
Exemplo
A tı́tulo de exemplo para estes métodos considere-se o problema de fronteira
com equação diferencial
u00 + xu = 1
e condições fronteira:
u(0) = 0; u(1) = 1
Defina-se uma solução aproximada, onde se satisfazem as condições de
fronteira essenciais
N
X
u=x+ ai sen(iπx)
i=1
E(x = 0.25) = 0
E(x = 0.50) = 0
E(x = 0.75) = 0
obtendo-se então o seguinte sistema de equações em termos dos parâmetros
ai
6.8021 39.2284 62.6330 −0.9375
9.3696 0.0000 −88.3264 −0.7500
6.4485 −38.7284 62.2794 −0.4375
sendo então
a1 = −0.0918; a2 = −0.0060; a3 = −0.0012
Obtem-se finalmente a solução com 3 termos:
44 2 Introdução ao método dos elementos finitos
cuja solução é
com solução
a1 = −0.0954; a2 = −0.0077; a3 = −0.0025
Solução com 3 termos:
com solução
a1 = −0.0953; a2 = −0.0077; a3 = −0.0025
Solução com 3 termos:
Z 1 X X
jπcos(jπx)(1 + iπai cos(iπx)) − xsen(jπx)(x + ai sen(iπx))+
0
sen(jπx)dx = 0 , j = 1, 2, ..., N
46 2 Introdução ao método dos elementos finitos
X Z 1
ai jπiπcos(jπx)cos(iπx)) − xsen(jπx)sen(iπx)dx =
0
Z 1
x2 sen(jπx) − sen(jπx) − jπcos(iπx)dx, j = 1, 2, ..., N
0
Exemplo
Considere-se agora o problema da figura 2.2, usando uma aproximação
w = a1 x2 + a2 x3 (2.68)
obtendo-se o funcional
L 2 L 2
d2 w
Z Z
1 P dw 1
Π= EI dx − dx + k(w(L))2 (2.69)
2 0 dx2 2 0 dx 2
Z L
1 2
Π= EI (2a − 1 + 6a − 2x) dx
2 0
Z L
P 2 1
− 2a1 x + 3a2 x2 dx + k(a1 L2 + a2 L3 )2 (2.71)
2 0 2
∂Π ∂Π
Invocando agora = 0, = 0, obtemos
∂a1 ∂a2
2L 3L2
4 1 L a1
2EI + kL
3L2 6L3 L L2 a2
4/3 3L/2 a1 0
− P L3 = (2.72)
3L/2 9L2 /5 a2 0
2.6 Formulação pelo método dos deslocamentos 47
q(x) = ax
R
x q(x)
Figura 2.5. Barra sujeita a uma força distribuida q(x) e uma carga concentrada R
d2 u
EA + q(x) = 0, no domı́nio (2.73)
dx2
e condições fronteira essenciais
u(0) = 0 (2.74)
e naturais
du
EA (L) = R (2.75)
dx
Sendo q(x) = ax, obtemos a solução analitica
du − ax3
1 1
u(x) = + R + aL2 x (2.76)
EA 6 2
a qual corresponde à solução exacta.
48 2 Introdução ao método dos elementos finitos
Tendo em conta que (2.73) é válido para todos os pontos, então pode
escrever-se
d2 u
EA 2 + q(x) δu = 0 (2.77)
dx
Tendo em conta que δu(x) é uma variação arbitrária com δu(x = 0) = 0,
então também se torna válida a expressão
Z L
d2 u
EA 2 + q(x) δudx = 0 (2.78)
0 dx
Integrando por partes o primeiro termo do primeiro membro e rearranjando,
obtem-se Z L Z L L
dδu du du
EA dx = q(x)δudx + EA δu (2.79)
0 dx dx 0 dx 0
∂U ∂V ∂W
XX = , Y Y = , ZZ =
∂X ∂Y ∂Z
(2.88)
∂U ∂V ∂V ∂W ∂U ∂W
γXY = + , γY Z = + , γXZ = +
∂Y ∂X ∂Z ∂Y ∂Z ∂X
As tensões correspondentes a são
50 2 Introdução ao método dos elementos finitos
σXX
σY Y
σZZ
σ=
(2.89)
σXY
σY Z
σXZ
onde
σ = C (2.90)
sendo C é a matriz de elasticidade, matriz constitutiva do material ou tensão-
deformação. Nesta fase do texto, assumem-se relações constitutivas lineares,
tal que
Z Z Z X
T T B
δ σdV = δU f dV + δUSf T f Sf dS + δUTi RiC (2.91)
V V Sf i
ui = uiSu , em Su (2.94)
S T
onde a fronteira S = Su Sf , Su Sf = 0 e nj são as componentes do vector
normal unitário à superfı́cie Sf do corpo.
Considerando os deslocamentos virtuais δui satisfazendo
δui = 0, em Su (2.95)
então
Sendo δui arbitrário, (2.94) pode ser satisfeito se e só se a quantidade entre
parentesis em (2.97) desaparecer. Assim, (2.97) é equivalente ao sistema (2.92).
Usando a identidade
σij δui , j = σij [1/2 (δui , j + δuj , i)] = σij δij (2.103)
Obtendo-se então de (2.102)
52 2 Introdução ao método dos elementos finitos
Z Z Z
S S
−σij δij dV = fiB δui dV + fi f δui f dS (2.104)
V V Sf
(e) (e)
onde e = 1, 2, ...k, sendo k o número máximo de elementos e S1 , S2 , ...
as diversas superfı́cies dos elementos que fazem parte da superfı́cie do corpo
S. Note-se que, em elementos que estejam completamente cercados, não são
consideradas estas superfı́cies, enquanto que para elementos na superfı́cie do
corpo, podem existir uma ou mais superfı́cies dos elementos nos integrais de
superfı́cie. Note-se ainda que em (2.110) os pontos nodais foram colocados em
pontos onde as forças pontuais são aplicadas.
As relações entre os deslocamentos e as deformações virtuais exprimem-se
como
XZ XZ
δ ÛT B(e)T C(e) B(e) dV (e) = δ ÛT N(e)T f B(e) dV (e) +
V (e) V (e)
e e
XZ X
δ ÛT NS(e)T f S(e) dS (e) + δ ÛT RiC (2.113)
(e) (e)
e S1 ,S2 ,... i
KU = R (2.114)
e
R = RB + RS + RC (2.115)
Denominemos, em seguida, Ū = U, por razões de conveniência de escrita.
A matriz de rigidez da estrutura é agora expressa por
54 2 Introdução ao método dos elementos finitos
XZ
K= B(e)T C(e) B(e) dV (e) (2.116)
e V (e)
| {z }
K(e)
as forças de superfı́cie
XZ
RS = δNS(e)T f S(e) dS (e) (2.118)
(e) (e)
e S1 ,S2 ,...
| {z }
(e)
RS
MÜ + KU = R (2.120)
onde agora U e R dependem do tempo.
A matriz de massa da estrutura é agora calculada como
XZ
M= N(e)T ρ(e) N(e) dV (e) (2.121)
V (e)
e | {z }
M(e)
q!1 q
e!1 e
q-1 q
e-1 e
onde σ (e) = C(e) (e) . De acordo com a primeira propriedade, em cada nó,
a soma das forças nodais está em equilı́brio com as forças externas aplicadas
(incluindo forças de corpo, de inércia, concentradas e de amortecimento). De
acordo com a segunda propriedade, cada elemento está em equilı́brio sob as
suas forças F(e) . A propriedade 1 é satisfeita, tendo em conta que
X
F(e) = KU (2.126)
e
Z T Z
δûT F(e) = B(e) δû σ (e) dV (e) = δ(eT ) σ (e) dV (e) = 0 (2.127)
V (e) V (e)
dado que δ(e) = 0. Verifica-se então que para todos os movimentos de corpo
rigido, as forças F(e) estão em equilı́brio.
Assim, na análise por elementos finitos
• a estrutura é idealizada como um conjunto interligado de elementos dis-
cretos ligados em nós
• as forças externas aplicadas (forças de corpo, forças tractivas, forças de
inércia, forças concentradas) são atribuidas a esses nós, usando o princı́pio
2.9 Equações de elementos finitos 57
dos trabalhos virtuais para obter forças nodais equivalentes às forças apli-
cadas
• as forças nodais equivalentes às forças externas aplicadas são equilibradas
pelas forças nodais equivalentes às tensões internas nos elementos, ou seja
X
F(e) = R (2.128)
e
3.1 Introdução
Conforme já referido anteriormente, um aspecto muito importante de qualquer
cálculo por elementos finitos é o cálculo de matrizes de elementos finitos, entre
outras, a matriz de rigidez, a matriz de massa, o vector de cargas nodais
equivalente às cargas exteriores aplicadas.
Um dos avanços mais significativos no método dos elementos finitos foi
obtido Irons [121], na proposta de elementos finitos isoparamétricos.
A ideia básica dos elementos finitos isoparamétricos é a de que a relação
entre os deslocamentos no interior do elemento e os deslocamentos nodais pode
ser directamente estabelecida através de funções de interpolação (também
chamadas funções de forma).
onde
1 1
N1 = (1 − ξ); N2 = (1 + ξ) (3.3)
2 2
60 3 Elementos finitos isoparamétricos e elementos de barra
X2
U1 U2
Z X, U
ξ = −1 ξ = +1
X1
Assim, obtem-se
U2 − U1 2 U2 − U1
= = (3.8)
2 L L
Tendo em conta a relação entre deformações e deslocamentos = BU, obte-
mos então a chamada matriz de deformações-deslocamento ou matriz B,
3.3 PTV 61
1
−1 1 B= (3.9)
L
A matriz de rigidez é então obtida por
EA 1 −1
Z
K= 2 −1 1 Jdξ (3.10)
L −1 1
onde J é o jacobiano, que relaciona o comprimento do elemento no sistema
coordenado global para o correspondente comprimento no sistema natural, ou
seja
dX = Jdξ (3.11)
Temos então
dX L
=J = (3.12)
dξ 2
Obtemos então, a matriz de rigidez em (3.10), como
EA 1 1 −1
Z
EA 1 −1
K= dξ = (3.13)
2L −1 −1 1 L −1 1
3.3 PTV
Note-se que esta matriz de rigidez também poderia ser obtida, de outras for-
mas. Aplicando o princı́pio dos trabalhos virtuais, estabelece-se
Z L Z L N
X
T T
A δ σdx = δu f dx + δui Fi (3.14)
0 0 i=1
ou
Z L Z L N
X
A δuT BT EBudx = δuT f dx + δui Fi (3.15)
0 0 i=1
ou ainda
Z L Z L N
X
δuT EA BT Bdxu = δuT f dx + δui Fi (3.16)
0 0 i=1
ou
Ke u = f e (3.19)
sendo a matriz de rigidez obtida por
EA 1 −1
Z
Ke =
−1 1 dξ (3.20)
2L −1 1
N2
N3
N1
Figura 3.2. Elemento de barra de três nós. Funções de forma quadráticas para
elemento de três nós
(ξ − ξ2 )(ξ − ξ3 ) 1
N1 (ξ) = = ξ(ξ − 1) (3.29)
(ξ1 − ξ2 )(ξ1 − ξ3 ) 2
(ξ − ξ1 )(ξ − ξ3 )
N2 (ξ) = = (1 + ξ)(1 − ξ) (3.30)
(ξ2 − ξ1 )(ξ2 − ξ3 )
(ξ − ξ1 )(ξ − ξ2 ) 1
N3 (ξ) = = ξ(ξ + 1) (3.31)
(ξ3 − ξ1 )(ξ3 − ξ3 ) 2
64 3 Elementos finitos isoparamétricos e elementos de barra
1 dξ 1 dξ 1 1 1 1 u1
=− u1 + u2 = − u1 + u2 = − , (3.37)
2 dx 2 dx L L L L u2
onde
1 1
B= − , (3.38)
L L
representa a matriz de deformações, muito usual na formulação de elementos
finitos baseados em deslocamentos.
n ±xi Wi
1 0.0 2.0
2 0.5773502692 1.0
3 0.774596697 0.5555555556
0.0 0.8888888889
4 0.86113663116 0.3478548451
0.3399810436 0.6521451549
1 2 3 ξ
a)
ξ1 = 0
b) √ √
ξ1 = −1/ 3 ξ2 = 1/ 3
Exemplo 4.1
Considere-se o integral dum polinómio de quarto grau
66 3 Elementos finitos isoparamétricos e elementos de barra
Z 1
1 + x + x2 + x3 + x4 dx
I= (3.41)
−1
cuja solução exacta é 3.0666. Usemos agora vários pontos de integração (figura
3.3), para podermos avaliar da qualidade da técnica de integração.
• Um ponto de integração: p = 1; x1 = 0; W1 = 2 → I = W1 f (x1 ) = 2
• Dois pontos de integração: p = 2; x1 , x2 = ±0.57735; W1 , W2 = 1 → I =
W1 f (x1 ) + W2 f (x2 ) = 2.8888
• Três pontos de integração: p = 3; x1 , x3 = ±0.77459, x2 = 0.0; W1 , W3 =
0.5555, W2 = 0.8888 → I = W1 f (x1 ) + W2 f (x2 ) + W2 f (x2 ) = 3.0666
(valor exacto)
Verifica-se assim que uma integração de grau 2 não satisfaz a integração
exacta, porque 2 × 2 − 1 = 3, sendo que o polinómio é de grau 4. É necessário,
assim, utilizar um polinómio de grau 3 para poder integrar exactamente um
polinómio de grau 3.
30000
9 numx = 3;
10 node=linspace(0,L,numx+1);
11 ii=1:numx; element(:,1)=ii; element(:,2)=ii+1;
12 numnode=size(node,2);
13 numelem=size(element,1);
14
15 %matriz de rigidez
16 K=sparse(numnode,numnode);
17 for e=1:numelem; j=element(e,:);
18 length_element=node(j(2))-node(j(1));
19 k = rigidezBarra(length_element,EA);
20 K(j,j)=K(j,j)+k;
21 end;
22
23 %vector de forcas
24 f=zeros(numnode,1);
25 f(2)=3000.0;
26
27 % Condicoes fronteira e solucao
28 dofs=[1;4];
29
30 % nos livres: activos
31 U=zeros(numnode,1);
32 U = BC_solucao(method,dofs,numnode,K,f);
33
34 % escrita de resultados
35 escrita(U,dofs,K);
36 % end
37
38 %
39
40 function k = rigidezBarra(L,EA)
41
42 % funcao para calcular rigidez de barra
43 % k : matriz de rigidez
44
45 k=EA/L*[1 -1;-1 1];
54 dNdx=dNdxi*invJ0;
55 % B
56 B=zeros(1,nn); B(1:nn) = dNdx(:)’;
57 % deformacao do elemento no ponto de tensao
58 strain=B*U(indiceB); stress(e,q)=E*strain;
59 end
60 end
61
62 strain
63 stress
node=linspace(0,L,numelem+1);xx=node;
Na instrução
for i=1:numelem; element(i,1)=i; element(i,2)=i+1;end
faz-se a geração dos nós em cada elemento, através dum ciclo FOR/END.
Esta forma de gerar as conectividades é interessante se se quiser realizar vários
testes com diferentes número de nós. O resultado obtido é
element =
1 2
2 3
3 4
for e=1:numelem;
indice=element(e,:); nn=length(indice);
length_element=node(indice(2))-node(indice(1));
detJ0=length_element/2;invJ0=1/detJ0;
70 3 Elementos finitos isoparamétricos e elementos de barra
K(indice,indice)=K(indice,indice)+B’*B*2*detJ0*EA;
% longo da barra
end
4.1 Introdução
Neste capı́tulo apresenta-se um estudo por elementos finitos de barras in-
clinadas (treliças) para a análise de pórticos que suportam apenas cargas
longitudinais. Apresenta-se também um código MATLAB para o cálculo de
deslocamentos, reacções e tensões nas barras. É efectuado o desenho da malha
e sua deformada.
Uma treliça consiste em membros estruturais que suportam apenas forças
de compressão ou tracção. Todas as forças e reacções estão aplicadas nos
nós (juntas sem atrito), conforme ilustrado na figura 4.1. Embora se possam
estudar estas estruturas pelo método dos nós ou das secções, o método dos
elementos finitos permite o estudo de estruturas indeterminadas, o que não é
possı́vel pelos métodos dos nós ou secções.
P P1
x0
u4 u02
u3
θ
u2
y
u1
x
u01
uT = [u1 u2 u3 u4 ] (4.2)
A relação entre os deslocamentos dos dois sistemas é dada pelas relações
u0 = Lu (4.5)
sendo a matriz de cossenos directores L dada por
4.3 Matriz de rigidez 73
l m0 0
L= (4.6)
0 0 l m
Estes cossenos directores são calculados por
x2 − x1 y2 − y1
l= ; m= (4.7)
Le Le
sendo o comprimento do elemento, Le , dado por
p
Le = (x2 − x1 )2 + (y2 − y1 )2 (4.8)
K = LT K0 L (4.12)
Obtendo-se finalmente
l2 −l2
lm −lm
EA
lm m2 −lm −m2
K= (4.13)
Le −l2 −lm l2 lm
−lm −m2 lm m2
74 4 Análise de barras inclinadas (treliças)
u02 − u01
0
E u1 E
σ=E = [−1 1] = [−1 1]u0 (4.14)
Le Le u02 Le
Podemos agora proceder à transformação de eixos locais para globais,
E E
σ= [−1 1]Lu = [−l −m l m]u (4.15)
Le Le
2 3
10 45
y
45
1 4 x
10000
10
9 U=zeros(2*numnode,1);
10 f=zeros(2*numnode,1);
11 K=sparse(2*numnode,2*numnode);
12 % forca aplicada no no 1
13 f(2)=-10000;
14 for e=1:numelem
15 indice=element(e,:)
16 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
17 xa=xx(indice(2))-xx(indice(1))
18 ya=yy(indice(2))-yy(indice(1))
19 length_element=sqrt(xa*xa+ya*ya);
20 C=xa/length_element;
21 S=ya/length_element;
22 k1=EA/length_element*...
23 [C*C C*S -C*C -C*S; C*S S*S -C*S -S*S;
24 -C*C -C*S C*C C*S;-C*S -S*S C*S S*S];
25 K(indiceB,indiceB)=K(indiceB,indiceB)+k1
26 end
27 % c. fronteira
28 activeDof=[1 2]’;
29 U=K(activeDof,activeDof)\f(activeDof)
30 U1=zeros(2*numnode,1);
31 U1(activeDof)=U;
32 us=1:2:2*numnode-1;
33 vs=2:2:2*numnode;
34 format long
35 figure
36 L=node(2,1)-node(1,1);
37 dispNorm=max(sqrt(U1(us).^2+U1(vs).^2));
38 scaleFact=15000*dispNorm;
39 clf
40 hold on
41 XX=U1(us);YY=U1(vs);
42 plot_mesh(node+scaleFact*[XX YY],element,’L2’,’k.-’);
43 plot_mesh(node,element,’L2’,’k.--’);
44 % forcas nos elementos
45 for e=1:numelem
46 indice=element(e,:)
47 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
48 xa=xx(indice(2))-xx(indice(1))
49 ya=yy(indice(2))-yy(indice(1))
50 length_element=sqrt(xa*xa+ya*ya);
51 cosa=xa/length_element;
52 sena=ya/length_element;
53 sigma(e)=E/length_element* ...
54 [-cosa -sena cosa sena]*U1(indiceB);
55 end
76 4 Análise de barras inclinadas (treliças)
U1 =
0.00414213562373
-0.01585786437627
0
0
0
0
0
0
>> sigma’
ans =
1.0e+03 *
3.96446609406726
1.46446609406726
-1.03553390593274
120
100
80
60
40
20
0
0 20 40 60 80 100 120
50kN 100 kN 50 kN
4 4 9
2 6
1 3 8
5
6 3m
7 11
1 2 10
5
3m 3 3m
50kN 50 kN
4 4
2
1 3 5
6
1 2
3m 3
Graus de liberdade
restringidos
Figura 4.6. Treliça do livro de Logan, página 128, Opção INCORRECTA de
condições fronteira para simetria
10 numnode=size(node,1);
11 numelem=size(element,1);
12 U=zeros(2*numnode,1);
13 f=zeros(2*numnode,1);
14 K=sparse(2*numnode,2*numnode);
15 % forca aplicada no no 1
16 f(4)=-50000;
17 f(8)=-50000;
18 for e=1:numelem
19 indice=element(e,:)
20 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
21 xa=xx(indice(2))-xx(indice(1))
22 ya=yy(indice(2))-yy(indice(1))
23 length_element=sqrt(xa*xa+ya*ya);
24 C=xa/length_element;
25 S=ya/length_element;
26 k1=EA/length_element*...
27 [C*C C*S -C*C -C*S; C*S S*S -C*S -S*S;
28 -C*C -C*S C*C C*S;-C*S -S*S C*S S*S];
29 K(indiceB,indiceB)=K(indiceB,indiceB)+k1
30 end
31 % c. fronteira
32 activeDof=[1 3 4 8 6]’;
33 U=K(activeDof,activeDof)\f(activeDof)
34 U1=zeros(2*numnode,1);
4.6 Outro problema de treliça bidimensional 79
35 U1(activeDof)=U;
36 us=1:2:2*numnode-1;
37 vs=2:2:2*numnode;
38 format long
39 figure
40 L=node(2,1)-node(1,1);
41 dispNorm=max(sqrt(U1(us).^2+U1(vs).^2));
42 scaleFact=2*dispNorm;
43 clf
44 hold on
45 XX=U1(us);YY=U1(vs);
46 plot_mesh(node+scaleFact*[XX YY],element,’L2’,’k.-’);
47 plot_mesh(node,element,’L2’,’k.--’);
48 % forcas nos elementos
49 for e=1:numelem
50 indice=element(e,:)
51 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
52 xa=xx(indice(2))-xx(indice(1))
53 ya=yy(indice(2))-yy(indice(1))
54 length_element=sqrt(xa*xa+ya*ya);
55 cosa=xa/length_element;
56 sena=ya/length_element;
57 sigma(e)=E/length_element* ...
58 [-cosa -sena cosa sena]*U1(indiceB);
59 end
U1 =
0
0
1.50865353300281
-8.65151067585996
0
-14.42728078345209
0
-15.93593431645490
Na figura 4.7 apresenta-se a deformada da estrutura completa. Note-se o
movimento horizontal do nó 5.
O código (logan128332completo.m) para a estrutura completa é o seguinte
1 % logan pagina 128, estrutura completa
2
3 clear all
4 colordef white
80 4 Análise de barras inclinadas (treliças)
3500
3000
2500
2000
1500
1000
500
!500
!1000
33 activeDof=setdiff([1:2*numnode]’, ...
34 [dofs]);
35
36 %activeDof=[3 4 8 6]’;
37 U=K(activeDof,activeDof)\f(activeDof)
38 U1=zeros(2*numnode,1);
39 U1(activeDof)=U;
40 us=1:2:2*numnode-1;
41 vs=2:2:2*numnode;
42 format long
43 figure
44 L=node(2,1)-node(1,1);
45 dispNorm=max(sqrt(U1(us).^2+U1(vs).^2));
46 scaleFact=2*dispNorm;
47 clf
48 hold on
49 XX=U1(us);YY=U1(vs);
50 plot_mesh(node+scaleFact*[XX YY],element,’L2’,’k.-’);
51 plot_mesh(node,element,’L2’,’k.--’);
52 % forcas nos elementos
53 for e=1:numelem
54 indice=element(e,:)
55 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
56 xa=xx(indice(2))-xx(indice(1))
57 ya=yy(indice(2))-yy(indice(1))
58 length_element=sqrt(xa*xa+ya*ya);
59 cosa=xa/length_element;
60 sena=ya/length_element;
61 sigma(e)=E/length_element* ...
62 [-cosa -sena cosa sena]*U1(indiceB);
63 end
>> U1
U1 =
0
0
7.14285714285716
-9.03863711864189
5.24707716707241
-16.29649260048689
5.24707716707241
-20.08805255205638
10.49415433414481
0
82 4 Análise de barras inclinadas (treliças)
3.35129719128766
50kN 50 kN
4 4
2
1 3 5
6
1 2
3m 3
Graus de liberdade
restringidos
Figura 4.8. Treliça do livro de Logan, página 128, Opção melhorada de condições
fronteira para simetria
8 xx=node(:,1); yy=node(:,2);
9 element=[ 1 2;1 3;2 3;2 4;1 4;3 4];
10 numnode=size(node,1);
11 numelem=size(element,1);
12 U=zeros(2*numnode,1);
13 f=zeros(2*numnode,1);
14 K=sparse(2*numnode,2*numnode);
15 % forca aplicada no no 1
16 f(4)=-50000;
17 f(8)=-50000;
18 for e=1:numelem
19 indice=element(e,:)
20 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
21 xa=xx(indice(2))-xx(indice(1))
22 ya=yy(indice(2))-yy(indice(1))
23 length_element=sqrt(xa*xa+ya*ya);
24 C=xa/length_element;
25 S=ya/length_element;
26 k1=EA/length_element*...
27 [C*C C*S -C*C -C*S; C*S S*S -C*S -S*S;
28 -C*C -C*S C*C C*S;-C*S -S*S C*S S*S];
29 K(indiceB,indiceB)=K(indiceB,indiceB)+k1
30 end
31 % c. fronteira
32 activeDof=[1 3 4 8 6]’;
33 U=K(activeDof,activeDof)\f(activeDof)
34 U1=zeros(2*numnode,1);
35 U1(activeDof)=U;
36 us=1:2:2*numnode-1;
37 vs=2:2:2*numnode;
38 format long
39 figure
40 L=node(2,1)-node(1,1);
41 dispNorm=max(sqrt(U1(us).^2+U1(vs).^2));
42 scaleFact=2*dispNorm;
43 clf
44 hold on
45 XX=U1(us);YY=U1(vs);
46 plot_mesh(node+scaleFact*[XX YY],element,’L2’,’k.-’);
47 plot_mesh(node,element,’L2’,’k.--’);
48 % forcas nos elementos
49 for e=1:numelem
50 indice=element(e,:)
51 indiceB=[ indice(1)*2-1 indice(1)*2 indice(2)*2-1 indice(2)*2]
52 xa=xx(indice(2))-xx(indice(1))
53 ya=yy(indice(2))-yy(indice(1))
54 length_element=sqrt(xa*xa+ya*ya);
55 cosa=xa/length_element;
56 sena=ya/length_element;
84 4 Análise de barras inclinadas (treliças)
57 sigma(e)=E/length_element* ...
58 [-cosa -sena cosa sena]*U1(indiceB);
59 end
3000
2500
2000
1500
1000
500
!500
Figura 4.9. Treliça do livro de Logan, página 128, estrutura com simetria mais
adequada
>> U1
U1 =
-5.05076272276106
0
2.09209442009609
-9.23495156295323
0
-17.24438258837926
0
-19.33647700847535
o que produz um deslocamento vertical no nó 4 mais adequado (19.33).
4.7 Exemplo de treliça com mola 85
2
5m
1 25kN
45o
3 1
10 m 2
3 k=2000kN/m
19 xa=xx(indice(2))-xx(indice(1))
20 ya=yy(indice(2))-yy(indice(1))
21 length_element=sqrt(xa*xa+ya*ya);
22 C=xa/length_element;
23 S=ya/length_element;
24 k1=EA/length_element*...
25 [C*C C*S -C*C -C*S; C*S S*S -C*S -S*S;
26 -C*C -C*S C*C C*S;-C*S -S*S C*S S*S];
27 K(indiceB,indiceB)=K(indiceB,indiceB)+k1
28 end
29 % mola
30 K([2 7],[2 7])= K([2 7],[2 7])+2000*[1 -1;-1 1]
31 % c. fronteira .............................
32 activeDof=[1 2]’;
33 % solucao ..................................
34 U=K(activeDof,activeDof)\f(activeDof)
35 U1=zeros(7,1);
36 U1(activeDof)=U;
37 % tenses nos elementos ....................
38 for e=1:2
39 indice=element(e,:)
40 indiceB=[ indice(1)*2-1 indice(1)*2 ...
41 indice(2)*2-1 indice(2)*2]
42 xa=xx(indice(2))-xx(indice(1))
43 ya=yy(indice(2))-yy(indice(1))
44 length_element=sqrt(xa*xa+ya*ya);
45 cosa=xa/length_element;
46 sena=ya/length_element;
47 sigma(e)=E/length_element* ...
48 [-cosa -sena cosa sena]*U1(indiceB);
49 end
>> U1
U1 =
-1.72413793103448
-3.44827586206897
0
0
0
0
0
4.8 Treliças tridimensionais 87
(4)
(3)
2
5m
1 25kN
(6) (2)
45o
(5) (1)
3 1
10 m 2
3 k=2000kN/m
(7)
Figura 4.11. Treliça do livro de Logan, página 129, numeração dos graus de liber-
dade
>> sigma
sigma =
51.20428415488792 -36.20689655172414
θy 2
y
θx
1 X
θz
Z
3
u=v=w=0
z
(2)
y
u=v=w=0
2 A1 = 0.302
A2 = 0.729
(1) A3 = 0.187
X1 = (72, 0, 0)
X2 = (0, 36, 0)
v=0 X3 = (0, 36, 72)
1
X4 = (0, 0, −48)
(3) x
4 1000
u=v=w=0
Figura 4.13. Problema de treliça 3D
Deslocamentos nodais
1 -0.07111 0.00000 -0.26624
2 0.00000 0.00000 0.00000
3 0.00000 0.00000 0.00000
4 0.00000 0.00000 0.00000
Reaccoes
2 -0.00000
4 -223.16321
5 -1000.00000
6 256.12263
7 -128.06132
8 -0.00000
9 -702.44905
10 351.22453
11 702.44905
12 446.32642
Forcas e tensoes nos elementos
1 -286.35381001 -948.19142387
2 1053.67358035 1445.36842298
3 -536.41759721 -2868.54330060
5
Vigas de Bernoulli e pórticos planos
5.1 Introdução
Neste capı́tulo faz-se a análise por elementos finitos de pórticos planos, através
da combinação de elementos de barra e de elementos de viga fina.
Para situar o problema de forma consistente, apresenta-se em primeiro
lugar a formulação de viga fina, dado que já foi realizada a formulação de
barra.
L 2 L
d2 w
Z Z
1 X X
Π= EI dx − qwdx − Pi wi − Mk wk0 (5.1)
2 0 dx2 0 i k
dV
=q (5.2)
dx
dM
=V (5.3)
dx
92 5 Vigas de Bernoulli e pórticos planos
d2 d2 w
EI 2 − q = 0 (5.4)
dx2 dx
Para uma solução aproximada segundo o método de Galerkin, usamos uma
solução aproximada w, tal que
Z L 2
d2 w
d
EI 2 − q φdx = 0 (5.5)
0 dx2 dx
onde φ é uma função arbitrária que usa as mesmas funções de forma de w.
Integrando por partes esta expressão, obtem-se a expressão
L L
d2 w d2 φ
Z Z X X
EI dx − qφdx − Pi φi − Mk φ0k = 0 (5.6)
0 dx2 dx2 0 i k
w1 w2
1 e
2
w10 w20
Figura 5.1. Graus de liberdade da viga de Bernoulli
Hi = ai + bi ξ + ci ξ 2 + di ξ 3 , i = 1, 2, 3, 4 (5.8)
As funções assim dadas devem satisfazer as condições ilustradas na tabela 5.1.
w = Hu (5.18)
sendo
le le
H = [H1 , H2 , H3 , H4 ] (5.19)
2 2
Sabendo que
dw 2 dw d2 w 4 d2 w
= , = (5.20)
dx le dξ dx2 le2 dξ 2
Substituindo w = Hu, obtemos então
2 2 T 2
d2 w
T 16 d H d H
2
= u 4 2
u (5.21)
dx le dξ dξ 2
2
d H 3 −1 + 3ξ le 3 1 + 3ξ le
= ξ, , − ξ, (5.22)
dξ 2 2 2 2 2 2 2
Tendo em conta que dx = le /2dξ e tomando a energia de deformação do
elemento
Le 2
d2 w
Z
1
Ue = EI dx (5.23)
2 0 dx2
obtemos
9 3 9 3
ξ2 (−1 + 3ξ)le − ξ2 (1 + 3ξ)le
4 8 4 8
2
−1 + 9ξ 2 2
−1 + 3ξ 2 3
le − ξ(−1 + 3ξ)le le
1 8EI
Z 1
4 8 16
Ue = uT 3 dξu
2 le −1
9 2 3
ξ − ξ(1 + 3ξ)le
4 8
2
1 + 3ξ 2
sim. le
4
(5.24)
Sabendo que
Z 1 Z 1 Z 1
2
ξ 2 dξ = , ξ2dξ = 0, dξ = 2 (5.25)
−1 3 −1 −1
obtemos
1 T
Ue = u Ke u (5.26)
2
5.5 Exemplo de viga em flexão 95
qle 1
Z Z
qwdx = Hdξ u (5.28)
le 2 −1
Substituindo H e integrando, obtem-se
Z
qwdx = f eT u (5.29)
le
onde
T
qle2 −qle2
qle qle
fe = , , , (5.30)
2 12 2 12
Este vector de carga é equivalente a uma carga nos nós representada na figura
5.2.
ql/2 ql/2
1 e
2
P = 1(−)
EI = 1
5P L4
δexacto = 384EI
L=1
P = 1(−)
EI = 1
P L4
δexacto = 384EI
L=1
Figura 5.3. Elemento de viga de Bernoulli: resultados para viga simpl. apoiada e
encastrada, carga uniforme
uT = [u1 , u2 , u3 , u4 , u5 , u6 ] (5.31)
Define-se também um sistema de coordenadas locais, com cosenos directores
l, m, relativos a um ângulo θ entre os eixos x0 e x. O vector de deslocamentos
neste sistema local é dado por
5.6 Pórtico plano 99
T
u0 = [u01 , u02 , u03 , u04 , u05 , u06 ] (5.32)
Lembrando que u03 = u3 , u06 = u6 , podemos obter a matriz de transformação
local-global, na forma
u0 = Lu (5.33)
l m0 0 0 0
−m l 0 0 0 0
0 0 1 0 0 0
L=
0
(5.34)
0 0 l m 0
0 0 0 −m l 0
0 0 0 0 0 1
Combinando a rigidez do elemento de barra e do elemento de viga, tendo
em conta os graus de liberdade enunciados, obtem-se a matriz de rigidez do
elemento de pórtico plano, em coordenadas locais
100 5 Vigas de Bernoulli e pórticos planos
EA EA
0 0 − 0 0
L L
12EI 6EI 12EI 6EI
3 2
0 3 2
L L L L
4EI 6EI 2EI
0 − 2
L L L
0e
K =
(5.35)
EA
0 0
L
12EI 6EI
− 2
L3 L
4EI
sim.
L
A matriz de rigidez em coordenadas globais é obtida, tendo em conta a energia
de deformação no elemento,
1 0T 0 0 1
Ue = u K u = uT LT K0 Lu = uT Ku (5.36)
2 2
onde
K = LT K0 L (5.37)
Caso haja forças distribuidas no elemento, para além das forças axiais, podem
calcular-se as forças nodais equivalentes em coordenadas locais, à imagem do
que foi feito atrás e transformá-las para coordenadas globais, na forma
f = LT f 0 (5.38)
500 lb/ft
3000 lb
1 2
1
8ft
2 3
3 4 x
12 ft
5 6
1 2
102
9
7 8
3 4 4 x
11 12
U =
0.09176648375279
0.09011880107473
0
0
-0.00103584864162
-0.00178768077015
0
0
-0.00138736969739
-0.00003883014677
0
0
29
30 k1=[EA/ll -EA/ll 0 0 0 0 ;
31 -EA/ll EA/ll 0 0 0 0 ;
32 0 0 12*EI/ll^3 -12*EI/ll^3 6*EI/ll^2 6*EI/ll^2;
33 0 0 -12*EI/ll^3 12*EI/ll^3 -6*EI/ll^2 -6*EI/ll^2;
34 0 0 6*EI/ll^2 -6*EI/ll^2 4*EI/ll 2*EI/ll;
35 0 0 6*EI/ll^2 -6*EI/ll^2 2*EI/ll 4*EI/ll]
36 K(indexB,indexB)=K(indexB,indexB)+L’*k1*L;
37 end
38
39 bcwt=mean(diag(K));
40 fixedNodeU =[3 4]’; fixedNodeV =[7 8]’; fixedNodeT =[11 12]’;
41
42 fixed=[fixedNodeU;fixedNodeV;fixedNodeT]; % nota : ja estavam seleccionados os graus de
43 ufixed=zeros(size(fixed));
44 dofs=[fixedNodeU;fixedNodeV;fixedNodeT];
45 % BC: alternativa 1
46 % f=f-K(:,dofs)*ufixed;
47 % f(dofs)=ufixed;
48 % K(dofs,:)=0; K(:,dofs)=0;
49 % K(dofs,dofs) =bcwt*speye(length(dofs));
50 % U=K\f;
51 % alternativa 2
52 activos=setdiff([1:3*numnode]’,[dofs]);
53 U=K(activos,activos)\f(activos);U1=zeros(3*numnode,1);U1(activos)=U;
54 U=U1;
55 %desenho de malha original e deformadas
56 plot_mesh(node+100*[U(us) U(vs)],element,’L2’,’g.-’);
57 plot_mesh(node,element,’L2’,’b.-’);
58
U =
0.0033
-0.0097
-0.0033
2 2 3
480
1
450
1 x
360
1 clear;clf;colordef white;state = 0;
2 E=30e3; A=100; I=1000; EA=E*A; EI=E*I; x1=30*12; x2=40*12;
3 node=[0 0;x1 x1;x1+x2 x1];xx=node(:,1); yy=node(:,2); element=[1 2;2 3];
4 numnode=size(node,1); numelem=size(element,1);
5 U=zeros(3*numnode,1); f=zeros(3*numnode,1);
6 K=sparse(3*numnode,3*numnode); us=1:numnode;
7 vs=(numnode+1):2*numnode; ts=(2*numnode+1):3*numnode;
8 P=-1000;f(5)=-20;f(6)=-20;f(8)=-1600;f(9)=1600;
9 for e=1:numelem ; index=element(e,:) ;
10 indexB=[ index index+numnode index+2*numnode] ;
11 nn=length(index); xa=xx(index(2))-xx(index(1));
12 ya=yy(index(2))-yy(index(1)); length_element=sqrt(xa*xa+ya*ya);
13 cosa=xa/length_element; sena=ya/length_element;ll=length_element;
14 L= [cosa 0 sena 0 0 0;
15 0 cosa 0 sena 0 0;
16 -sena 0 cosa 0 0 0;
17 0 -sena 0 cosa 0 0 ;
18 0 0 0 0 1 0;
19 0 0 0 0 0 1];
20 k1=[EA/ll -EA/ll 0 0 0 0 ;
21 -EA/ll EA/ll 0 0 0 0 ;
22 0 0 12*EI/ll^3 -12*EI/ll^3 6*EI/ll^2 6*EI/ll^2;
23 0 0 -12*EI/ll^3 12*EI/ll^3 -6*EI/ll^2 -6*EI/ll^2;
24 0 0 6*EI/ll^2 -6*EI/ll^2 4*EI/ll 2*EI/ll;
25 0 0 6*EI/ll^2 -6*EI/ll^2 2*EI/ll 4*EI/ll];
26 K(indexB,indexB)=K(indexB,indexB)+L’*k1*L;
27 end
28 dofs=[1 4 7 3 6 9];activos=setdiff([1:3*numnode]’,[dofs]);
29 U=K(activos,activos)\f(activos)
30 U1=zeros(3*numnode,1);U1(activos)=U;
31 U=U1;
32 %desenho de malha original e deformadas
5.9 Pórtico plano inclinado 105
33 plot_mesh(node+5000*[U(us) U(vs)],element,’L2’,’g.-’);
34 plot_mesh(node,element,’L2’,’b.-’);
6
Análise de pórticos tridimensionais
6.1 Introdução
O elemento de pórtico tridimensional de 2 nós considera três deslocamentos
(translacções) e três rotações em torno dos eixos locais. Considere-se o ele-
mento da figura 6.1 com eixos locais e globais, com ângulos θXx , θY x e θZx ,
medidos dos eixos globais X, Y e Z, relativamente ao eixo local x.
x
Y
X
i
K = RT K0 R
onde a matriz de rotação é dada por
r000
0 r 0 0
R=
0 0 r 0 (6.2)
000r
sendo
CXx CY x CZx
r = CXy CY y CZy (6.3)
CXz CY z CZz
onde
CXx = cosθXx
6.3 Exemplo 1 109
F = KU (6.4)
onde K e U são a matriz de rigidez da estrutura e o vector de deslo-
camentos nodais da estrutura, respectivamente. Note-se que estamos apenas
interessados nas reacções dos apoios, por isso deve usar-se o comando F(dofs),
sendo dofs os graus de liberdade prescritos.
Calculados os deslocamentos nodais é também possivel calcular as forças
em cada elemento, através da transformação de eixos
fe = ke RUe (6.5)
6.3 Exemplo 1
Considere o problema, ilustrado na figura 6.2, no qual se considera E = 210
GPa, G = 84 GPa, A = 2 × 10−2 m2 , Iy = 10 × 10−5 m4 , Iz = 20 × 10−5 m4 ,
J = 5 × 10−5 m4 , o programa portico3D1.m a seguir ilustrado, calcula os
deslocamentos nodais, reacções nos apoios e forças em cada elemento.
2
3
1 4m
20 kN
10 kN Z
3m 4 3m
53 CYy = CXx/D;
54 CZy = 0;
55 CXz = -CXx*CZx/D;
56 CYz = -CYx*CZx/D;
57 CZz = D;
58 Lambda = [CXx CYx CZx ; CXy CYy CZy ; CXz CYz CZz];
59 end
60 R = [Lambda zeros(3) zeros(3) zeros(3) ;
61 zeros(3) Lambda zeros(3) zeros(3) ;
62 zeros(3) zeros(3) Lambda zeros(3) ;
63 zeros(3) zeros(3) zeros(3) Lambda];
64 K(indexB,indexB)=K(indexB,indexB)+R’*k*R;
65 end
66 % BC and solution
67 dofs=[7:24]; activos=setdiff([1:6*numnode]’,[dofs]);
68 U=K(activos,activos)\f(activos);U1=zeros(6*numnode,1);U1(activos)=U;
69 % displacements
70 U=U1;
71 % reactions
72 F=K*U
73 % forces in elements
74 ff=zeros(numelem,12); format
75 for e=1:numelem;
76 index=element(e,:) ;
77 indexB=[6*index(1)-5 6*index(1)-4 6*index(1)-3 ...
78 6*index(1)-2 6*index(1)-1 6*index(1)...
79 6*index(2)-5 6*index(2)-4 6*index(2)-3 ...
80 6*index(2)-2 6*index(2)-1 6*index(2)] ;
81 u=U(indexB);
82 x1=node(index(1),1);y1=node(index(1),2);
83 z1=node(index(1),3);x2=node(index(2),1);
84 y2=node(index(2),2);z2=node(index(2),3);
85
86 L = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1));
87 w1 = E*A/L;
88 w2 = 12*E*Iz/(L*L*L);
89 w3 = 6*E*Iz/(L*L);
90 w4 = 4*E*Iz/L;
91 w5 = 2*E*Iz/L;
92 w6 = 12*E*Iy/(L*L*L);
93 w7 = 6*E*Iy/(L*L);
94 w8 = 4*E*Iy/L;
95 w9 = 2*E*Iy/L;
96 w10 = G*J/L;
97 kprime = [w1 0 0 0 0 0 -w1 0 0 0 0 0 ;
98 0 w2 0 0 0 w3 0 -w2 0 0 0 w3 ;
99 0 0 w6 0 -w7 0 0 0 -w6 0 -w7 0 ;
100 0 0 0 w10 0 0 0 0 0 -w10 0 0 ;
101 0 0 -w7 0 w8 0 0 0 w7 0 w9 0 ;
112 6 Análise de pórticos tridimensionais
102 0 w3 0 0 0 w4 0 -w3 0 0 0 w5 ;
103 -w1 0 0 0 0 0 w1 0 0 0 0 0 ;
104 0 -w2 0 0 0 -w3 0 w2 0 0 0 -w3 ;
105 0 0 -w6 0 w7 0 0 0 w6 0 w7 0 ;
106 0 0 0 -w10 0 0 0 0 0 w10 0 0 ;
107 0 0 -w7 0 w9 0 0 0 w7 0 w8 0 ;
108 0 w3 0 0 0 w5 0 -w3 0 0 0 w4];
109 if x1 == x2 & y1 == y2
110 if z2 > z1
111 Lambda = [0 0 1 ; 0 1 0 ; -1 0 0];
112 else
113 Lambda = [0 0 -1 ; 0 1 0 ; 1 0 0];
114 end
115 else
116 CXx = (x2-x1)/L;
117 CYx = (y2-y1)/L;
118 CZx = (z2-z1)/L;
119 D = sqrt(CXx*CXx + CYx*CYx);
120 CXy = -CYx/D;
121 CYy = CXx/D;
122 CZy = 0;
123 CXz = -CXx*CZx/D;
124 CYz = -CYx*CZx/D;
125 CZz = D;
126 Lambda = [CXx CYx CZx ; CXy CYy CZy ; CXz CYz CZz];
127 end
128 R = [Lambda zeros(3) zeros(3) zeros(3) ;
129 zeros(3) Lambda zeros(3) zeros(3) ;
130 zeros(3) zeros(3) Lambda zeros(3) ;
131 zeros(3) zeros(3) zeros(3) Lambda];
132 ff(e,:) = kprime*R* u;
133
134 end
135 format long
136 disp(’deslocamentos’)
137 [(1:size(U,1))’,U]
138 format
139 disp(’reaccoes’)
140 [(dofs)’,F(dofs)]
141 disp(’forcas nos elementos’)
142 ff’
143
144
deslocamentos
ans =
1.00000000000000 -0.00000705147750
6.3 Exemplo 1 113
2.00000000000000 -0.00000006653671
3.00000000000000 0.00001417695819
4.00000000000000 0.00000144778793
5.00000000000000 0.00000174858422
6.00000000000000 0.00000113605431
7.00000000000000 0
8.00000000000000 0
9.00000000000000 0
10.00000000000000 0
11.00000000000000 0
12.00000000000000 0
13.00000000000000 0
14.00000000000000 0
15.00000000000000 0
16.00000000000000 0
17.00000000000000 0
18.00000000000000 0
19.00000000000000 0
20.00000000000000 0
21.00000000000000 0
22.00000000000000 0
23.00000000000000 0
24.00000000000000 0
reaccoes
ans =
7.0000 9.8721
8.0000 -0.0306
9.0000 -0.1078
10.0000 -0.0020
11.0000 -0.1740
12.0000 0.0299
13.0000 0.0903
14.0000 -0.0393
15.0000 -19.8477
16.0000 0.0387
17.0000 0.1232
18.0000 -0.0016
19.0000 0.0376
20.0000 0.0699
21.0000 -0.0444
22.0000 -0.0964
23.0000 -0.0018
114 6 Análise de pórticos tridimensionais
24.0000 -0.0872
ans =
6.4 Exemplo 2
Considere o problema, ilustrado na figura 6.3, no qual se considera E = 210
GPa, G = 84 GPa, A = 2 × 10−2 m2 , Iy = 10 × 10−5 m4 , Iz = 20 × 10−5 m4 ,
J = 5 × 10−5 m4 , o programa portico3D2.m a seguir ilustrado, calcula os
deslocamentos nodais, reacções nos apoios e forças em cada elemento.
O código (portico3D2.m) é a seguir apresentado:
1 clear all
2 E=210e6; A=0.02; Iy=10e-5; Iz=20e-5; J=5e-5; G=84e6;
3 node=[0 0 0;
4 0 0 4;
5 4 0 4;
6 4 0 0;
7 0 5 0;
8 0 5 4;
9 4 5 4;
10 4 5 0;
11 ];
12 xx=node(:,1); yy=node(:,2); zz=node(:,3);
13 element=[1 5;2 6;3 7; 4 8; 5 6; 6 7; 7 8; 8 5];
14 numnode=size(node,1);numelem=size(element,1);
15 U=zeros(6*numnode,1);f=zeros(6*numnode,1);K=sparse(6*numnode,6*numnode);
16 f(37)=-15.0;
17 for e=1:numelem ;
18 index=element(e,:) ;
6.4 Exemplo 2 115
8
15kN
7
5
6 X
5m
4
3
1
4m
4m 2
47 0 0 0 -w10 0 0 0 0 0 w10 0 0 ;
48 0 0 -w7 0 w9 0 0 0 w7 0 w8 0 ;
49 0 w3 0 0 0 w5 0 -w3 0 0 0 w4];
50 if x1 == x2 & y1 == y2
51 if z2 > z1
52 Lambda = [0 0 1 ; 0 1 0 ; -1 0 0];
53 else
54 Lambda = [0 0 -1 ; 0 1 0 ; 1 0 0];
55 end
56 else
57 CXx = (x2-x1)/L;
58 CYx = (y2-y1)/L;
59 CZx = (z2-z1)/L;
60 D = sqrt(CXx*CXx + CYx*CYx);
61 CXy = -CYx/D;
62 CYy = CXx/D;
63 CZy = 0;
64 CXz = -CXx*CZx/D;
65 CYz = -CYx*CZx/D;
66 CZz = D;
67 Lambda = [CXx CYx CZx ; CXy CYy CZy ; CXz CYz CZz];
68 end
69 R = [Lambda zeros(3) zeros(3) zeros(3) ;
70 zeros(3) Lambda zeros(3) zeros(3) ;
71 zeros(3) zeros(3) Lambda zeros(3) ;
72 zeros(3) zeros(3) zeros(3) Lambda];
73 K(indexB,indexB)=K(indexB,indexB)+R’*k*R;
74 end
75 % BC and solution
76 dofs=[1:24]; activos=setdiff([1:6*numnode]’,[dofs]);
77 U=K(activos,activos)\f(activos);U1=zeros(6*numnode,1);U1(activos)=U;
78 % displacements
79 U=U1;
80 % reactions
81 F=K*U
82 % forces in elements
83 ff=zeros(numelem,12); format
84 for e=1:numelem;
85 index=element(e,:) ;
86 indexB=[6*index(1)-5 6*index(1)-4 6*index(1)-3 ...
87 6*index(1)-2 6*index(1)-1 6*index(1)...
88 6*index(2)-5 6*index(2)-4 6*index(2)-3 ...
89 6*index(2)-2 6*index(2)-1 6*index(2)] ;
90 u=U(indexB);
91 x1=node(index(1),1);y1=node(index(1),2);
92 z1=node(index(1),3);x2=node(index(2),1);
93 y2=node(index(2),2);z2=node(index(2),3);
94
95 L = sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) + (z2-z1)*(z2-z1));
6.4 Exemplo 2 117
96 w1 = E*A/L;
97 w2 = 12*E*Iz/(L*L*L);
98 w3 = 6*E*Iz/(L*L);
99 w4 = 4*E*Iz/L;
100 w5 = 2*E*Iz/L;
101 w6 = 12*E*Iy/(L*L*L);
102 w7 = 6*E*Iy/(L*L);
103 w8 = 4*E*Iy/L;
104 w9 = 2*E*Iy/L;
105 w10 = G*J/L;
106 kprime = [w1 0 0 0 0 0 -w1 0 0 0 0 0 ;
107 0 w2 0 0 0 w3 0 -w2 0 0 0 w3 ;
108 0 0 w6 0 -w7 0 0 0 -w6 0 -w7 0 ;
109 0 0 0 w10 0 0 0 0 0 -w10 0 0 ;
110 0 0 -w7 0 w8 0 0 0 w7 0 w9 0 ;
111 0 w3 0 0 0 w4 0 -w3 0 0 0 w5 ;
112 -w1 0 0 0 0 0 w1 0 0 0 0 0 ;
113 0 -w2 0 0 0 -w3 0 w2 0 0 0 -w3 ;
114 0 0 -w6 0 w7 0 0 0 w6 0 w7 0 ;
115 0 0 0 -w10 0 0 0 0 0 w10 0 0 ;
116 0 0 -w7 0 w9 0 0 0 w7 0 w8 0 ;
117 0 w3 0 0 0 w5 0 -w3 0 0 0 w4];
118 if x1 == x2 & y1 == y2
119 if z2 > z1
120 Lambda = [0 0 1 ; 0 1 0 ; -1 0 0];
121 else
122 Lambda = [0 0 -1 ; 0 1 0 ; 1 0 0];
123 end
124 else
125 CXx = (x2-x1)/L;
126 CYx = (y2-y1)/L;
127 CZx = (z2-z1)/L;
128 D = sqrt(CXx*CXx + CYx*CYx);
129 CXy = -CYx/D;
130 CYy = CXx/D;
131 CZy = 0;
132 CXz = -CXx*CZx/D;
133 CYz = -CYx*CZx/D;
134 CZz = D;
135 Lambda = [CXx CYx CZx ; CXy CYy CZy ; CXz CYz CZz];
136 end
137 R = [Lambda zeros(3) zeros(3) zeros(3) ;
138 zeros(3) Lambda zeros(3) zeros(3) ;
139 zeros(3) zeros(3) Lambda zeros(3) ;
140 zeros(3) zeros(3) zeros(3) Lambda];
141 ff(e,:) = kprime*R* u;
142
143 end
144 format long
118 6 Análise de pórticos tridimensionais
145 disp(’deslocamentos’)
146 [(1:size(U,1))’,U]
147 format
148 disp(’reaccoes’)
149 [(dofs)’,F(dofs)]
150 disp(’forcas nos elementos’)
151 ff’
152
153
deslocamentos
ans =
1.00000000000000 0
2.00000000000000 0
3.00000000000000 0
4.00000000000000 0
5.00000000000000 0
6.00000000000000 0
7.00000000000000 0
8.00000000000000 0
9.00000000000000 0
10.00000000000000 0
11.00000000000000 0
12.00000000000000 0
13.00000000000000 0
14.00000000000000 0
15.00000000000000 0
16.00000000000000 0
17.00000000000000 0
18.00000000000000 0
19.00000000000000 0
20.00000000000000 0
21.00000000000000 0
22.00000000000000 0
23.00000000000000 0
24.00000000000000 0
25.00000000000000 -0.00039898093138
26.00000000000000 -0.00000298266432
27.00000000000000 -0.00058934587384
28.00000000000000 -0.00003552499889
29.00000000000000 -0.00035808604571
30.00000000000000 0.00004452635512
31.00000000000000 -0.00212492049669
6.4 Exemplo 2 119
32.00000000000000 -0.00000684334973
33.00000000000000 -0.00058934587384
34.00000000000000 -0.00003552499889
35.00000000000000 -0.00035808604571
36.00000000000000 0.00022175503338
37.00000000000000 -0.00213205232576
38.00000000000000 0.00000684334973
39.00000000000000 0.00058934587384
40.00000000000000 0.00003552499889
41.00000000000000 -0.00035939637254
42.00000000000000 0.00022304730891
43.00000000000000 -0.00039898458247
44.00000000000000 0.00000298266432
45.00000000000000 0.00058934587384
46.00000000000000 0.00003552499889
47.00000000000000 -0.00035939637254
48.00000000000000 0.00004455139901
reaccoes
ans =
1.0000 1.1599
2.0000 2.5054
3.0000 1.0091
4.0000 2.6719
5.0000 0.3008
6.0000 -3.2737
7.0000 6.3324
8.0000 5.7484
9.0000 1.0091
10.0000 2.6719
11.0000 0.3008
12.0000 -17.6937
13.0000 6.3481
14.0000 -5.7484
15.0000 -1.0091
16.0000 -2.6719
17.0000 0.3019
18.0000 -17.7439
19.0000 1.1596
20.0000 -2.5054
21.0000 -1.0091
22.0000 -2.6719
23.0000 0.3019
120 6 Análise de pórticos tridimensionais
24.0000 -3.2733
ans =
7.1 Introdução
Apresenta-se agora a análise por elementos finitos de grelhas. Uma grelha é
uma estrutura tipo pórtico plano, mas onde as forças são aplicadas normais
ao seu plano, ao contrário do que acontece com os pórticos planos onde as
forças são aplicadas no seu plano. Uma grelha tipica é ilustrada na figura 7.1.
y
F1 F2
z F3 F4
θz2
θz1 θx1 θx2
2
1 x
z L
w1 w2
Ke = RT ke R (7.3)
Verifica-se que o elemento de grelha de dois nós tem seis graus de liberdade,
pelo que a matriz de rigidez global ”assemblada”possui uma dimensão 3n,
sendo n o número de nós do problema.
Depois de calcular os deslocamentos nodais é possivel calcular as reacções
nos nós de apoio, fazendo
F = KU (7.4)
7.2 Exemplo 1 123
fe = ke RUe (7.5)
7.2 Exemplo 1
Considere-se o problema da figura 7.3. A grelha é constituida por duas barras,
com geometria, forças e apoios ilustrados na figura. Dados E = 210 GPa,
G = 84 GPa, I = 20 × 10−5 m4 , J = 5 × 10−5 m4 , o programa GRID1.M, a
seguir ilustrado, calcula os deslocamentos nodais, reacções nos apoios e forças
em cada elemento.
(2) 10 kN
3m
X
1
3m
(1)
2
4m
Z
Figura 7.3. Exemplo 1
8 U=zeros(3*numnode,1); f=zeros(3*numnode,1);
9
10 K=sparse(3*numnode,3*numnode);
11 f(1)=-10;
12 for e=1:numelem ;
13 index=element(e,:) ;
14 indexB=[ (index(1)-1)*3+1 (index(1)-1)*3+2 (index(1)-1)*3+3 ...
15 (index(2)-1)*3+1 (index(2)-1)*3+2 (index(2)-1)*3+3] ;
16 xa=xx(index(2))-xx(index(1));ya=yy(index(2))-yy(index(1));
17 L=sqrt(xa*xa+ya*ya);
18 C=xa/L;
19 S=ya/L;
20
21 w1 = 12*E*I/(L*L*L); w2 = 6*E*I/(L*L);
22 w3 = G*J/L; w4 = 4*E*I/L;
23 w5 = 2*E*I/L;
24 k = [w1 0 w2 -w1 0 w2 ; 0 w3 0 0 -w3 0 ;
25 w2 0 w4 -w2 0 w5 ; -w1 0 -w2 w1 0 -w2 ;
26 0 -w3 0 0 w3 0 ; w2 0 w5 -w2 0 w4];
27 R = [1 0 0 0 0 0 ; 0 C S 0 0 0 ; 0 -S C 0 0 0 ;
28 0 0 0 1 0 0 ; 0 0 0 0 C S ; 0 0 0 0 -S C];
29
30 K(indexB,indexB)=K(indexB,indexB)+R’*k*R;
31 end
32
33
34 dofs=[4:9];activos=setdiff([1:3*numnode]’,[dofs]);
35 U=K(activos,activos)\f(activos);U1=zeros(3*numnode,1);U1(activos)=U;
36 disp(’deslocamentos ’)
37 U=U1
38
39 disp(’reaccoes ’)
40
41 F=K*U
42
43 EF=zeros(6,numelem);
44
45 for e=1:numelem ;
46 index=element(e,:) ;
47 indexB=[ (index(1)-1)*3+1 (index(1)-1)*3+2 (index(1)-1)*3+3 ...
48 (index(2)-1)*3+1 (index(2)-1)*3+2 (index(2)-1)*3+3] ;
49 xa=xx(index(2))-xx(index(1));ya=yy(index(2))-yy(index(1));
50 L=sqrt(xa*xa+ya*ya);
51 C=xa/L; S=ya/L;
52 w1 = 12*E*I/(L*L*L); w2 = 6*E*I/(L*L);
53 w3 = G*J/L; w4 = 4*E*I/L;
54 w5 = 2*E*I/L;
55 k = [w1 0 w2 -w1 0 w2 ; 0 w3 0 0 -w3 0 ;
56 w2 0 w4 -w2 0 w5 ; -w1 0 -w2 w1 0 -w2 ;
7.2 Exemplo 1 125
U =
-0.0048
0
-0.0018
0
0
0
0
0
0
reaccoes
F =
-10.0000
0
-0.0000
5.0000
13.8905
20.0000
5.0000
-13.8905
20.0000
EF =
-5.0000 5.0000
-0.8876 0.8876
-0.6657 24.3343
126 7 Análise de grelhas
5.0000 -5.0000
0.8876 -0.8876
-24.3343 0.6657
7.3 Exemplo 2
Considere-se o problema da figura 7.4. A grelha é constituida por três barras,
com geometria, forças e apoios ilustrados na figura. Dados E = 210 GPa,
G = 84 GPa, I = 20 × 10−5 m4 , J = 5 × 10−5 m4 , o programa grid2.m, a seguir
ilustrado, calcula os deslocamentos nodais, reacções nos apoios e forças em
cada elemento.
3 4 X
P
4m
2
1
Z 4m
66 end
67
68 disp(’forcas nos elementos ’)
69 EF
70
U =
-0.0033
0.0010
-0.0010
0
0
0
0
0
0
0
0
0
reaccoes
F =
-20.0000
-0.0000
0.0000
10.7937
-1.0189
31.7764
-1.5874
-4.0299
4.0299
10.7937
-31.7764
1.0189
EF =
7.3 Exemplo 2 129
8.1 Introdução
A formulação de elementos de viga é habitualmente baseada na teoria de
Euler-Bernoulli (despreza os efeitos de corte transverso) e na teoria de Ti-
moshenko (que considera esses efeitos).
u = −zθ; w = w0 (8.1)
onde z representa a coordenada na direcção da espessura, θ uma rotação da
normal ao eixo médio da viga e w0 o deslocamento transversal (flecha) dum
qualquer ponto do eixo da viga.
Z L Z L Z L Z L
dδθ dθ dw dδw
EI dx+GAk − δθ
− θ dx = pδwdx+ M δθdx
0 dx dx 0 dx dx 0 0
(8.5)
onde p e M são as cargas transversais e momentos por unidade de compri-
mento.
θ1
θ2 θ3
w1 w2 w3
ou
w = Nw û; θ = Nθ û (8.7)
8.7 Programa MATLAB 133
e
dw dθ
= Bw û; = Bθ û (8.8)
dx dx
onde
ûT = w1 w2 w3 θ1 θ2 θ3
(8.9)
e
Nw = N1 N2 N3 0 0 0 (8.10)
e
Nθ = 0 0 0 N1 N2 N3 (8.11)
bem como
dN1 dN2 dN3
Bw = J −1 000 (8.12)
dξ dξ dξ
e
dN1 dN2 dN3
Bθ = J −1 0 0 0 (8.13)
dξ dξ dξ
dx
onde J = . Para um elemento simples, podemos encontrar a matriz de
dξ
rigidez e o vector de forças nodais consistentes como
Z 1 Z 1
T
K = EI BTθ Bθ det Jdξ + GAk (Bw − Nθ ) (Bw − Nθ ) det Jdξ
−1 −1
(8.14)
e
Z 1 Z 1
R= NTw pdet Jdξ + NTθ M det Jdξ (8.15)
−1 −1
5P L4
wmax = (8.17)
384EI
sendo E o módulo de elasticidade e I o momento de inércia. Verifica-se que o
máximo valor do deslocamento, obtido por
max(U(ws))
é de grande qualidade (conseguem-se erros de cerca de 0.004% para 100 ele-
mentos, convergentes, ou seja, cada vez menor erro). Note-se que a matriz
de rigidez é calculada em duas etapas, uma correspondente à contribuição de
flexão e outra correspondente à contribuição de corte, atendendo à necessidade
de realizar a integração numérica de forma distinta.
2L
−10
−20
−30
−40
−50
−60
−70
−80
−90
−100
0 0.5 1 1.5 2 2.5 3 3.5 4
24 element(i,1)=i;
25 element(i,2)=i+1
26 end
27 %
28 numnode=size(node,2); % num. nos
29 numelem=size(element,1); % num. elementos
30 %
31 K=zeros(2*numnode,2*numnode);
32 f=zeros(2*numnode,1);
33 % rigidez
34 W=zeros(2); Q=zeros(2);
35
136 8 Formulação de elementos de viga Timoshenko
36 Q(1) = 0.577350269189626;
37 Q(2) =-0.577350269189626;
38
39 W(1) = 1.; W(2) = 1.;
40
41 for e=1:numelem; sctr=element(e,:); sctrB=[ sctr sctr+numnode];
42 sctrR=sctr+numnode;
43 nn=length(sctr); length_element=xx(sctr(2))-xx(sctr(1));
44 detJ0=length_element/2;invJ0=1/detJ0;
45 for q=1:size(W,1) ;
46 pt=Q(q,:); wt=W(q);
47 pt=pt(1);
48 N=([1-pt,1+pt]/2)’;
49 dNdxi=[-1;1]/2;
50 dNdx=dNdxi*invJ0;
51 % B
52 B=zeros(2,2*nn); B(1,nn+1:2*nn) = dNdx(:)’;
53 % K
54 K(sctrB,sctrB)=K(sctrB,sctrB)+B’*B*W(q)*detJ0*C(1,1);
55 f(sctr)=f(sctr)+N*P*detJ0*wt;
56
57 end
58 end
59 %
60 W=zeros(1); Q=zeros(1);
61
62 Q(1) = 0.;
63
64 W(1) = 2.;
65
66 for e=1:numelem ;sctr=element(e,:); sctrB=[ sctr sctr+numnode];
67 nn=length(sctr); length_element=xx(sctr(2))-xx(sctr(1));
68 detJ0=length_element/2;invJ0=1/detJ0;
69 for q=1:size(W,1) ;
70 pt=Q(q,:); wt=W(q);
71 pt=pt(1);
72 N=([1-pt,1+pt]/2)’;
73 dNdxi=[-1;1]/2;
74 dNdx=dNdxi*invJ0;
75 % B
76 B=zeros(2,2*nn); B(2,1:nn) = dNdx(:)’;
77 B(2,nn+1:2*nn) = N;
78 % K
79 K(sctrB,sctrB)=K(sctrB,sctrB)+B’*B*W(q)*detJ0*C(2,2);
80 end
81 end
82 % BC
83 bcwt=mean(diag(K));
84 % condicoes fronteira (meia viga com simetria)
8.7 Programa MATLAB 137
85 fixedNodeW =find(xx==max(node(:)))’;
86 fixedNodeTX=find(xx==min(node(:)))’;;
87 %fixedNodeW =find(xx==max(node(:))|xx==min(node(:)))’;
88 %fixedNodeTX=find(xx==min(node(:)))’;;
89 %fixedNodeTX=find(xx==L/2)’;
90 %fixedNodeTX=fixedNodeW;
91 %
92 % encastrado na pontoa x=0
93
94 %fixedNodeW =find(xx==min(node(:)))’;
95 %fixedNodeTX=fixedNodeW;
96
97 activeDof=setdiff([1:2*numnode]’,[fixedNodeW;fixedNodeTX+numnode]);
98 U=K(activeDof,activeDof)\f(activeDof);
99 U1=zeros(2*numnode,1);
100 U1(activeDof)=U;
101 U=U1;
102 plot(xx,U1(1:numnode),’.-’)
103
104 ws=1:numnode;
105
106 exact=5*P*(2*L)^4/384/C(1,1);error=(exact-min(U(ws)))/exact*100
107 disp([num2str(error),’ % ERROR’]) ; plot(xx,U(ws),’b.-’)
9
Estado plano de tensão
9.1 Introdução
Consideram-se aqui elementos bidimensionais para estado plano de tensão
(problemas onde a espessura é desprezável em relação às outras coordenadas).
Considere-se uma placa fina, com espessura h, conforme ilustrado na figura
9.1. A direcção normal à placa z, é também chamada direcção transversal à
placa. Consideram-se ainda os dois eixos globais x, y. Considera-se que a placa
está em estado plano de tensão ou estado de membrana, quando:
• todas as cargas aplicadas actuam no plano médio da placa, sendo ainda
simétricas relativamente a este
• todas as condições de apoio são simétricas relativamente ao plano médio
• os deslocamentos do plano, as deformações e as tensões são consideradas
uniformes relativamente ao plano médio
• as tensões normal e de corte segundo a direcção z são desprezadas, por
serem muito pequenas quando comparadas com as outras componentes.
Considera-se também que o material é homogéneo, sendo a placa assim
chamada de transversalmente isotrópica.
Considera-se então para efeitos de desenvolvimento do problema variaci-
onal e do problema de fronteira um plano médio, com um dominio Ω e uma
fronteira Γ , conforme ilustrado na figura 9.2. Considera-se que todas as enti-
dades relacionadas com a terceira dimensão são funções de x e de y, integradas
na direcção da espessura.
A geometria do problema é definida pela sua fronteira Γ , a espessura é
representada por h, o material é isotrópico e as forças de volume (por exemplo
peso da placa) são consideradas actuantes no interior do domı́nio Ω. As forças
tractivas actuantes nas faces são referidas ao plano médio da placa.
9.2 Variáveis
As variáveis do problema são os seus deslocamentos
140 9 Estado plano de tensão
P1
P2
P5 P3
z
P4
y
y
Ω
Figura 9.2. Estado plano de tensão: plano médio, domı́nio (Ω) e fronteira (Γ )
u(x, y)
u(x, y) = (9.1)
v(x, y)
enquanto que as deformações são obtidas por derivação dos deslocamentos
∂u
∂x
x
∂v
(x, y) = y = (9.2)
∂y
γxy
∂u ∂v
+
∂y ∂x
u = û (9.6)
ou em termos de tracções superficiais (naturais) na fronteira Γt , na forma
σ n = t̂ (9.7)
Π =U −W (9.9)
142 9 Estado plano de tensão
onde Nie são as funções de forma do elemento. Esta expressão pode obter-se
na forma matricial como
e
N1 0 0 N2e 0 ... Nne 0
Πe = U e − W e (9.17)
onde Z Z
1 1
Ue = hT σdΩ e = hT CdΩ e (9.18)
2 Ωe 2 Ωe
e
Z Z
We = huT bdΩ e + huT t̂dΓ e (9.19)
Ωe Γe
onde
n
X ξ − ξj
l(ξ) = (9.25)
ξi − ξj
j=1,j6=i
1
N1 (ξ, η) = l1 (ξ)l1 (η) = (1 − ξ)(1 − η) (9.26)
4
1
N2 (ξ, η) = l2 (ξ)l1 (η) = (1 + ξ)(1 − η) (9.27)
4
1
N3 (ξ, η) = l2 (ξ)l2 (η) = (1 + ξ)(1 + η) (9.28)
4
1
N4 (ξ, η) = l1 (ξ)l2 (η) = (1 − ξ)(1 + η) (9.29)
4
Note-se que estas funções de forma são obtidas por multiplicação das
funções de Lagrange de elementos de linha de 2 nós, em cada direcção (fi-
gura 9.3).
Outros elementos quadriláteros podem ser usados, por exemplo o elemento
de 9 nós de Lagrange, cujas funções de forma são obtidas por
1
N1 (ξ, η) = ξη(ξ − 1)(η − 1) (9.30)
4
9.9 Elementos quadriláteros 145
η
4
3
ξ η
=
2
1 2
ξ
x
1 2 1
Figura 9.3. Elemento de 4 nós: funções de interpolação bidimensionais obtidas por
multiplicação de funções de forma unidimensionais
4 4
3
1 3
ξ Ωe
y
(1,-1)
1 2
x
Elemento de 2
referencia (x2 , y2 )
Elemento real
supondo que J−1 exista, o que será verdade se houver uma relação injectiva
entre as coordenadas locais e naturais do elemento. Em elementos muito dis-
torcidos, podem ocorrer singularidades nesta transformação do jacobiano.
Pode então calcula-se a matriz de deformação-deslocamento, através da
matriz B, com
= Bû (9.38)
onde û representa o vector dos deslocamentos nodais. A matriz de rigidez do
elemento, correspondente aos graus de liberdade locais é obtida como
Z
K= BT CBdV (9.39)
V
Note-se que B é dependente de ξ, η, as coordenadas naturais em 2D do ele-
mento. Assim, o elemento de volume dV pode ser expresso em função de ξ, η,
como
dV = h detJdrds (9.40)
onde detJ é o determinante da matriz Jacobiana e h a espessura da placa.
O cálculo da matriz de rigidez é habitualmente feita numericamente, como
iremos ver mais adiante em pormenor. No entanto, poderá indicar-se desde já
que Z
K=h Fdξdη (9.41)
A
onde Fi,j representa a matriz F nos pontos (ξi , ηj ) e αi,j é uma dada constante
que depende dos valores de (ξi , ηj ). Os pontos de integração (ξi , ηj ) da função e
os correspondentes pesos αi,j são escolhidos para se obter a máxima qualidade
na integração, que aumenta com o número de pontos de integração.
Escrevendo agora
F = NT fB detJ (9.47)
no cálculo de RB .
y y
η
η
1,2
2 1
2 cm ξ ξ
3 4 x 3 4 x
2 cm
2 cm
1 1 1 1
x= (1+ξ)(1+η)x1 + (1−ξ)(1+η)x2 + (1−ξ)(1−η)x3 + (1+ξ)(1−η)x4
4 4 4 4
(9.50)
1 1
y= (1+ξ)(1+η)y1 +(1−ξ)(1+η)y2 + (1−ξ)(1−η)y3 +(1+ξ)(1−η)y4 (9.51)
4 4
e colapsando (x1 = x2 ; y1 = y2 ) obtem-se
1 1 1
x= (1 − ξ)(1 + η)x2 + (1 − ξ)(1 − η)x3 + (1 + ξ)(1 − η)x4 (9.52)
4 4 4
1 1 1
y= (1 + η)y2 + (1 − ξ)(1 − η)y3 + (1 + ξ)(1 − η)y4 (9.53)
2 4 4
Com
1
x= (1 + ξ)(1 − η), y = 1 + η (9.54)
2
∂x 1 ∂y
= (1 − η), =0 (9.55)
∂ξ 2 ∂ξ
∂x 1 ∂y
= − (1 + ξ), =1 (9.56)
∂η 2 ∂η
150 9 Estado plano de tensão
1−η 0 2 0
1 ; J−1 = 1
J= (9.57)
2 1−η
−1 − ξ 2 1+ξ 1−η
Usando o conceito de isoparametrismo, obtem-se
1 1 1
u= (1 − ξ)(1 + η)u2 + (1 − ξ)(1 − η)u3 + (1 + ξ)(1 − η)u4 (9.58)
4 4 4
1 1 1
v= (1 + η)v2 + (1 − ξ)(1 − η)v3 + (1 + ξ)(1 − η)v4 (9.59)
2 4 4
∂u 1 1
= − (1 − η)u3 + (1 − η)u4 (9.60)
∂ξ 4 4
∂v 1 1
= − (1 − η)v3 + (1 − η)v4 (9.61)
∂ξ 4 4
∂u 1 1 1
= u2 − (1 − ξ)u3 + (1 + ξ)u4 (9.62)
∂η 2 4 4
∂v 1 1 1
= v2 − (1 − ξ)v3 + (1 + ξ)v4 (9.63)
∂η 2 4 4
∂ ∂
∂x ∂ξ
= J−1 (9.64)
∂ ∂
∂y ∂η
Assim,
u1
v1
∂u
1 1
u2
∂x 2 0 0 0 − 4 (1 − η) 0 4 (1 − η) 0
1 v2
= u3 (9.65)
∂u 1 − η 1 + ξ 1 − η
1 1 1
2 0 − 4 (1 − ξ) 0 4 (1 + ξ) 0 v
3
∂y
u4
v4
ou
9.10 Integração numérica em duas dimensões 151
u1
v1
∂u
1 1
u2
∂x 0 0 −2 0 2 0
v2
= (9.66)
∂u 1 1
u3
2 0 −2 0 0 0 v
3
∂y
u4
v4
Da mesma forma se obtem
u1
v1
∂v
1 1
u2
∂x 0 0 0 −2 0 2
v2
= (9.67)
∂v 1 1
u3
0 2 0 −2 0 0
v3
∂y u4
v4
obtendo-se assim
u1
v1
0 0 − 12 0 12 0
u2
1 1
v2
0 2 0 − 2 0 0 u3
= (9.68)
1 1 1 1
v3
2 0 − 2 − 2 0 2
u4
v4
O vector de deformação é então constante, para quaisquer valores de u2 , v2 , ..., v4
e independente de ξ e η (elemento triangular de deformação constante). Note-
se que em, η = ±1, a matriz J é singular. Assim, devem calcular-se as tensões
(aliás constantes no elemento) no centro do elemento (ξ = η = 0).
Area A2 Area
A1 η
P
2 (x2 , y2 )
y
(0, 1) 3 (η = 1)
Area A3
1
(x1 , y1 )
x 1 2 (ξ = 1) ξ
(0, 0) (1, 0)
x = L1 x1 + L2 x2 + L3 x3 ; y = L1 y1 + L2 y2 + L3 y3 (9.70)
Podemos então escrever o sistema
1 1 1 1 L1
x = x1 x2 x3 L2 (9.71)
y y1 y2 y3 L3
que produz
1
Li = (ai + bi x + ci y), i = 1, 2, 3 (9.72)
2A
onde
2A = x1 y2 + x2 y3 + x3 y1 − y1 x2 − y2 x3 − y3 x1 (9.73)
e
a1 = x2 y3 − y2 x3 ; a2 = x3 y1 − y3 x1 ; a3 = x1 y2 − y1 x2 (9.74)
b1 = y 2 − y 3 ; b2 = y 3 − y 1 ; b3 = y 1 − y 2 (9.75)
c1 = x3 − x2 ; c2 = x1 − x3 ; c3 = x2 − x1 (9.76)
Temos então a seguinte interpolação
3
X 3
X
u= Ni ui ; v = Ni vi (9.77)
i=1 i=1
3
X 3
X
x= Ni xi ; y = N i yi (9.78)
i=1 i=1
N1 = 1 − ξ − η; N2 = ξ; N3 = η (9.79)
A integração em ξ varia entre 0 e 1, enquanto que a integração em η varia
entre 0 e 1 − ξ.
P P
u=0
v=0
Figura 9.9. Tracção de placa: condições fronteira
1.4
6
1.2
4
2 1
0 0.8
!2 0.6
!4
0.4
!6
0.2
0 2 4 6 8 10 12 14 16 18
0
1
tensao (na deformada), componente XX
6
1
4
1
2 1
0 1
!2 1
1
!4
1
!6
1
0 2 4 6 8 10 12 14 16 18
85 eta=pt(2);
86 % N e derivadas
87 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
88 (1+xi)*(1+eta);(1-xi)*(1+eta)];
89 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
90 1+eta, 1+xi;-(1+eta), 1-xi];
91
92 J0=node(indice,:)’*dNdxi;
93 invJ0=inv(J0);
94 dNdx=dNdxi*invJ0;
95 % matriz B
96 B=zeros(3,2*nn);
97 B(1,1:nn) = dNdx(:,1)’;
98 B(2,nn+1:2*nn) = dNdx(:,2)’;
99 B(3,1:nn) = dNdx(:,2)’;
100 B(3,nn+1:2*nn) = dNdx(:,1)’;
101
102 % matriz K no ponto de quadratura
103 K(indiceB,indiceB)=K(indiceB,indiceB)+B’*C*B*W(q)*det(J0);
104 end
105 end
106
107 % condicoes fronteira
108 dofs=[fixedNodeX;fixedNodeY+numnode];
109 % solucao
110 activeDof=setdiff([1:2*numnode]’,[dofs]);
111 U=K([activeDof],[activeDof])\f([activeDof]);
112 U1=zeros(2*numnode,1);
113 U1(activeDof)=U;
114 U=U1;
115
116 % desenho de malha e deformadas
117 dispNorm=max(node(:,1))/max(sqrt(U(xs).^2+U(ys).^2));
118 scaleFact=0.2*dispNorm;
119 fn=1;
120
121 % deformada
122 figure(fn)
123 clf
124 plot_field(node+scaleFact*[U(xs) U(ys)],element,elemType,U(xs));
125 hold on
126 plot_mesh(node+scaleFact*[U(xs) U(ys)],element,elemType,’blue.-’);
127 plot_mesh(node,element,elemType,’k--’);
128 colorbar
129 fn=fn+1;
130 title(’DEFORMada na direcao X’)
131
132 % tensoes no elemnto Q4
133 stress=zeros(numelem,size(element,2),3);
158 9 Estado plano de tensão
10.1 Introdução
Neste capı́tulo apresenta-se a formulação de elementos finitos para a análise
de placas finas, seguindo as suposições de Kirchhoff. A teoria de Kirchhoff
estabelece que as normais, rectas, ao plano médio indeformado, permanecem
normais ao plano médio deformado.
Com base nesta suposição, desprezam-se os efeitos de corte transverso e
torna-se possı́vel formular um conjunto de elementos finitos que satisfazem
estas condições de Kirchhoff.
∂w
u = −z (10.1)
∂x
∂w
v = −z (10.2)
∂y
w = w0 (10.3)
y, v
z, w
θx
θy
x, u
∂2w
x = −z (10.5)
∂x2
∂2w
y = −z 2 (10.6)
∂y
∂2w
γxy = −2z (10.7)
∂x∂y
O vector de tensões associado é então definido por
σx
1ν 0
E ν 1 0 x
σy = (10.8)
1 − ν2 1−ν y
τxy 00 γxy
2
10.3 Elementos finitos 161
w = α1 + α2 x + α3 y + α4 x2 + α5 xy + ... (10.12)
Impondo as condições
∂w ∂w
wi = (w)i ; θxi = ; θyi = (10.13)
∂x i ∂y i
w = α1 +α2 x+α3 y+α4 x2 +α5 xy+α6 y 2 +α7 x3 +α8 x2 y+α9 xy 2 +α10 y 3 +α11 x3 y+α12 xy 3
(10.14)
Conseguem-se calcular as variáveis nodais e garantir a continuidade em cada
lado do elemento. As constantes αi calculam-se usando as condições 10.13,
obtendo-se
ae = Aα (10.15)
onde
∂w ∂w ∂w ∂w
aeT = w1 ... w4 (10.16)
∂x 1 ∂y 1 ∂x 4 ∂y 4
r = a/b;
d = e*h^3/(12*(1 - nu^2));
re = a*b*q/3*[3; b; -a; 3; b; a; 3; -b; a; 3; -b; -a];
ke = d/(30*a*b)*[30*r^2 - 6*nu + 21 + 30/r^2,...
30*b* r^2 + 3*b + 12*b*nu, -12*nu*r*b - 3*r*b - (30*b)/r,...
15*r^2 + 6*nu - 21 - 30/r^2, 15*b*r^2 - 3*b - 12*b*nu,...
3*nu*r*b - 3*r*b - (30*b)/r, -15*r^2 - 6*nu + 21 - 15/r^2,...
15*b*r^2 - 3*b + 3*b*nu,...
-3*nu*r*b + 3*r*b - (15*b)/r,...
-30*r^2 + 6*nu - 21 + 15/r^2,...
30*b*r^2 + 3*b - 3*b*nu, 12*nu*r*b + 3*r*b - (15*b)/r;
30*b*r^2 + 3*b + 12*b*nu,...
40*r^2*b^2 - 8*nu*b^2 + 8*b^2,...
-30*b^2*nu*r, 15*b*r^2 - 3*b - 12*b*nu,...
20*r^2*b^2 + 8*nu*b^2 - 8*b^2, 0,...
-15*b*r^2 + 3*b - 3*b*nu, 10*r^2*b^2 - 2*nu*b^2 + 2*b^2, 0,...
-30*b*r^2 - 3*b + 3*b*nu, 20*r^2*b^2 + 2*nu*b^2 - 2*b^2, 0;
-12*nu*r*b - 3*r*b - (30*b)/r,-30*b^2*nu*r,...
-8*nu*r^2*b^2 + 8*r^2*b^2 + 40*b^2,...
-3*nu*r*b + 3*r*b + (30*b)/r,0,...
2*nu*r^2*b^2 - 2*r^2*b^2 + 20*b^2,...
3*nu*r*b - 3*r*b + (15*b)/r, 0,...
-2*nu*r^2*b^2 + 2*r^2*b^2 + 10*b^2,...
12*nu*r*b + 3*r*b - (15*b)/r, 0,...
8*nu*r^2*b^2 - 8*r^2*b^2 + 20*b^2;
15*r^2 + 6*nu - 21 - 30/r^2,...
15*b*r^2 - 3*b - 12*b*nu, -3*nu*r*b + 3*r*b + (30*b)/r,...
30*r^2 - 6*nu + 21 + 30/r^2, 30*b*r^2 + 3*b + 12*b*nu,...
12*nu*r*b + 3*r*b + (30*b)/r, -30*r^2 + 6*nu - 21 + 15/r^2,...
30*b*r^2 + 3*b - 3*b*nu, -12*nu*r*b - 3*r*b + (15*b)/r,...
-15*r^2 - 6*nu + 21 - 15/r^2, 15*b*r^2 - 3*b + 3*b*nu,...
3*nu*r*b - 3*r*b + (15*b)/r;
15*b*r^2 - 3*b - 12*b*nu, 20*r^2*b^2 + 8*nu*b^2 - 8*b^2, 0,...
30*b*r^2 + 3*b + 12*b*nu, 40*r^2*b^2 - 8*nu*b^2 + 8*b^2,...
30*b^2*nu*r, -30*b*r^2 - 3*b + 3*b*nu,...
20*r^2*b^2 + 2*nu*b^2 - 2*b^2, 0, -15*b*r^2 + 3*b - 3*b*nu,...
10*r^2*b^2 - 2*nu*b^2 + 2*b^2, 0;
3*nu*r*b - 3*r*b - (30*b)/r, 0,...
2*nu*r^2*b^2 - 2*r^2*b^2 + 20*b^2, 12*nu*r*b + 3*r*b + (30*b)/r,...
30*b^2*nu*r, -8*nu*r^2*b^2 + 8*r^2*b^2 + 40*b^2,...
-12*nu*r*b - 3*r*b + (15*b)/r, 0, ...
8*nu*r^2*b^2 - 8*r^2*b^2 + 20*b^2,...
-3*nu*r*b + 3*r*b - (15*b)/r, 0, -2*nu*r^2*b^2 + 2*r^2*b^2 + 10*b^2;
-15*r^2 - 6*nu + 21 - 15/r^2, -15*b*r^2 + 3*b - 3*b*nu,...
3*nu*r*b - 3*r*b + (15*b)/r, -30*r^2 + 6*nu - 21 + 15/r^2,...
164 10 Placas de Kirchhoff
Eh3
D= (10.22)
12(1 − ν 2 )
sendo h a espessura da placa.
10.3 Elementos finitos 165
clear all
colordef white
tic
% propriedades material
E0 = 10920; % módulo Young
nu0 = 0.30; % coef. Poisson
% geometria
L = 1; % lado
thickness=0.001;
I=thickness^3/12;
P=-1;
% malha
numy = 30; % # elementos em xx
numx = 30; % # elementos em xx
%malha
[node, element] = MalhaRectangular(L, L, numx, numy);
%
xx=node(:,1); yy=node(:,2);
numnode=size(node,1); % numero nos
numelem=size(element,1); % numero elementos
% matriz elasticidade (duas partes)
disp([num2str(toc),’ dados ’])
U=zeros(3*numnode,1); % vector de deslocamentos nodais
f=zeros(3*numnode,1); % vector de carga externa
K=sparse(3*numnode,3*numnode); % matriz de rigidez
for e=1:numelem
indice=element(e,:);
indiceB=[ indice(1)*3-2 indice(1)*3-1 indice(1)*3 ...
indice(2)*3-2 indice(2)*3-1 indice(2)*3 ...
indice(3)*3-2 indice(3)*3-1 indice(3)*3 ...
indice(4)*3-2 indice(4)*3-1 indice(4)*3];
K(indiceB,indiceB)=K(indiceB,indiceB)+ke;
f(indiceB)=f(indiceB)+fe;
%
end
% BC
fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
|xx==max(node(:,1))|yy==min(node(:,2)));
fixedNodeTY =find(yy==max(node(:,2))|yy==min(node(:,2)));
fixedNodeTX =find(xx==max(node(:,1))| xx==min(node(:,1)));
dofs=[fixedNodeW*3-2;fixedNodeTX*3-1;fixedNodeTY*3];
activeDof=setdiff([1:3*numnode]’,[dofs]);
U=K(activeDof,activeDof)\f(activeDof);
U1=zeros(3*numnode,1);
U1(activeDof)=U;
figure
plot3(xx,yy,U1(1:3:3*numnode),’.’)
format long
D1=E0*thickness^3/12/(1-nu0^2);
min(U1(1:3:3*numnode))*D1/L^4
∂2w
2
∂w ∂w ∂w∂w ∂ w
aeT = w1 ... w4
∂x 1 ∂y1 ∂x∂y
1 4 ∂x∂y 4 ∂x∂y 4
(10.23)
O código bfs.m apresenta o cálculo da matriz de rigidez e do vector de
forças nodais equivalentes para este elemento.
function [ke, re] = bfs(coord, h, e, nu, q)
% coord = coordenadas dos nós do elemento
% h = espessura
% e = modulo de elasticidade, nu = coeficiente de Poisson
% q = carga distribuida.
% ke = rigidez do elemento, re = vector de carga equivalente.
a=(coord(2,1) - coord(1,1))/2;
b=(coord(4,2) - coord(1,2))/2;
r = a/b;
d = e*h^3/(12*(1 - nu^2));
re = a*b*q/9*[9, 3*b, 3*a, a*b, 9, 3*b, -3*a, -(a*b), 9, -3*b, -3*a,...
a*b, 9, -3*b, 3*a, -(a*b)]’;
ke = d*[(39*a)/(35*b^3)+18/(25*a*b)+(39*b)/(35*a^3),...
3/(25*a)+(39*a)/(35*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(11*a^2)/(35*b^3)+3/(25*b)+(39*b)/(35*a^2)+(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+nu/5,...
(27*a)/(70*b^3)-18/(25*a*b)-(39*b)/(35*a^3),...
-3/(25*a)+(27*a)/(70*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(-13*a^2)/(70*b^3)+3/(25*b)+(39*b)/(35*a^2),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(-27*a)/(70*b^3)+18/(25*a*b)-(27*b)/(70*a^3),...
-3/(25*a)+(27*a)/(70*b^2)+(13*b^2)/(70*a^3),...
(13*a^2)/(70*b^3)-3/(25*b)+(27*b)/(70*a^2),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(-39*a)/(35*b^3)-18/(25*a*b)+(27*b)/(70*a^3),...
3/(25*a)+(39*a)/(35*b^2)-(13*b^2)/(70*a^3),...
(-11*a^2)/(35*b^3)-3/(25*b)+(27*b)/(70*a^2)-(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10;
3/(25*a)+(39*a)/(35*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(52*a)/(35*b)+(8*b)/(25*a)+(4*b^3)/(35*a^3),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+(6*nu)/5,...
(44*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2)+(4*b*nu)/15,...
168 10 Placas de Kirchhoff
-3/(25*a)+(27*a)/(70*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(18*a)/(35*b)-(8*b)/(25*a)-(4*b^3)/(35*a^3),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(-26*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2),...
3/(25*a)-(27*a)/(70*b^2)-(13*b^2)/(70*a^3),...
(9*a)/(35*b)+(2*b)/(25*a)+(3*b^3)/(35*a^3),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
(-13*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2),...
-3/(25*a)-(39*a)/(35*b^2)+(13*b^2)/(70*a^3),...
(26*a)/(35*b)-(2*b)/(25*a)-(3*b^3)/(35*a^3),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(22*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2)-(b*nu)/15;
(11*a^2)/(35*b^3)+3/(25*b)+(39*b)/(35*a^2)+(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+(6*nu)/5,...
(4*a^3)/(35*b^3)+(8*a)/(25*b)+(52*b)/(35*a),...
(4*a)/75+(4*a^3)/(35*b^2)+(44*b^2)/(105*a)+(4*a*nu)/15,...
(13*a^2)/(70*b^3)-3/(25*b)-(39*b)/(35*a^2),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(-3*a^3)/(35*b^3)-(2*a)/(25*b)+(26*b)/(35*a),...
-a/75-(3*a^3)/(35*b^2)+(22*b^2)/(105*a)-(a*nu)/15,...
(-13*a^2)/(70*b^3)+3/(25*b)-(27*b)/(70*a^2),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
(3*a^3)/(35*b^3)+(2*a)/(25*b)+(9*b)/(35*a),...
-a/75-(3*a^3)/(35*b^2)-(13*b^2)/(105*a),...
(-11*a^2)/(35*b^3)-3/(25*b)+(27*b)/(70*a^2)-(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(-4*a^3)/(35*b^3)-(8*a)/(25*b)+(18*b)/(35*a),...
(4*a)/75+(4*a^3)/(35*b^2)-(26*b^2)/(105*a);
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+nu/5,...
(44*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2)+(4*b*nu)/15,...
(4*a)/75+(4*a^3)/(35*b^2)+(44*b^2)/(105*a)+(4*a*nu)/15,...
(16*a^3)/(105*b)+(32*a*b)/225+(16*b^3)/(105*a),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(26*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2),...
-a/75-(3*a^3)/(35*b^2)+(22*b^2)/(105*a)-(a*nu)/15,...
(-4*a^3)/(35*b)-(8*a*b)/225+(8*b^3)/(105*a),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(13*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2),...
a/75+(3*a^3)/(35*b^2)+(13*b^2)/(105*a),...
(-2*a^3)/(35*b)+(2*a*b)/225-(2*b^3)/(35*a),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(22*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2)-(b*nu)/15,...
(-4*a)/75-(4*a^3)/(35*b^2)+(26*b^2)/(105*a),...
(8*a^3)/(105*b)-(8*a*b)/225-(4*b^3)/(35*a);
(27*a)/(70*b^3)-18/(25*a*b)-(39*b)/(35*a^3),...
10.3 Elementos finitos 169
-3/(25*a)+(27*a)/(70*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(13*a^2)/(70*b^3)-3/(25*b)-(39*b)/(35*a^2),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(39*a)/(35*b^3)+18/(25*a*b)+(39*b)/(35*a^3),...
3/(25*a)+(39*a)/(35*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(-11*a^2)/(35*b^3)-3/(25*b)-(39*b)/(35*a^2)-(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-nu/5,...
(-39*a)/(35*b^3)-18/(25*a*b)+(27*b)/(70*a^3),...
3/(25*a)+(39*a)/(35*b^2)-(13*b^2)/(70*a^3),...
(11*a^2)/(35*b^3)+3/(25*b)-(27*b)/(70*a^2)+(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(-27*a)/(70*b^3)+18/(25*a*b)-(27*b)/(70*a^3),...
-3/(25*a)+(27*a)/(70*b^2)+(13*b^2)/(70*a^3),...
(-13*a^2)/(70*b^3)+3/(25*b)-(27*b)/(70*a^2),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2);
-3/(25*a)+(27*a)/(70*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(18*a)/(35*b)-(8*b)/(25*a)-(4*b^3)/(35*a^3),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(26*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2),...
3/(25*a)+(39*a)/(35*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(52*a)/(35*b)+(8*b)/(25*a)+(4*b^3)/(35*a^3),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-(6*nu)/5,...
(-44*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2)-(4*b*nu)/15,...
-3/(25*a)-(39*a)/(35*b^2)+(13*b^2)/(70*a^3),...
(26*a)/(35*b)-(2*b)/(25*a)-(3*b^3)/(35*a^3),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(-22*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2)+(b*nu)/15,...
3/(25*a)-(27*a)/(70*b^2)-(13*b^2)/(70*a^3),...
(9*a)/(35*b)+(2*b)/(25*a)+(3*b^3)/(35*a^3),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(13*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2);
(-13*a^2)/(70*b^3)+3/(25*b)+(39*b)/(35*a^2),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(-3*a^3)/(35*b^3)-(2*a)/(25*b)+(26*b)/(35*a),...
-a/75-(3*a^3)/(35*b^2)+(22*b^2)/(105*a)-(a*nu)/15,...
(-11*a^2)/(35*b^3)-3/(25*b)-(39*b)/(35*a^2)-(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-(6*nu)/5,...
(4*a^3)/(35*b^3)+(8*a)/(25*b)+(52*b)/(35*a),...
(4*a)/75+(4*a^3)/(35*b^2)+(44*b^2)/(105*a)+(4*a*nu)/15,...
(11*a^2)/(35*b^3)+3/(25*b)-(27*b)/(70*a^2)+(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(-4*a^3)/(35*b^3)-(8*a)/(25*b)+(18*b)/(35*a),...
(4*a)/75+(4*a^3)/(35*b^2)-(26*b^2)/(105*a),...
(13*a^2)/(70*b^3)-3/(25*b)+(27*b)/(70*a^2),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
170 10 Placas de Kirchhoff
(3*a^3)/(35*b^3)+(2*a)/(25*b)+(9*b)/(35*a),...
-a/75-(3*a^3)/(35*b^2)-(13*b^2)/(105*a);
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(-26*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2),...
-a/75-(3*a^3)/(35*b^2)+(22*b^2)/(105*a)-(a*nu)/15,...
(-4*a^3)/(35*b)-(8*a*b)/225+(8*b^3)/(105*a),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-nu/5,...
(-44*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2)-(4*b*nu)/15,...
(4*a)/75+(4*a^3)/(35*b^2)+(44*b^2)/(105*a)+(4*a*nu)/15,...
(16*a^3)/(105*b)+(32*a*b)/225+(16*b^3)/(105*a),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(-22*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2)+(b*nu)/15,...
(-4*a)/75-(4*a^3)/(35*b^2)+(26*b^2)/(105*a),...
(8*a^3)/(105*b)-(8*a*b)/225-(4*b^3)/(35*a),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
(-13*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2),...
a/75+(3*a^3)/(35*b^2)+(13*b^2)/(105*a),...
(-2*a^3)/(35*b)+(2*a*b)/225-(2*b^3)/(35*a);
(-27*a)/(70*b^3)+18/(25*a*b)-(27*b)/(70*a^3),...
3/(25*a)-(27*a)/(70*b^2)-(13*b^2)/(70*a^3),...
(-13*a^2)/(70*b^3)+3/(25*b)-(27*b)/(70*a^2),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(-39*a)/(35*b^3)-18/(25*a*b)+(27*b)/(70*a^3),...
-3/(25*a)-(39*a)/(35*b^2)+(13*b^2)/(70*a^3),...
(11*a^2)/(35*b^3)+3/(25*b)-(27*b)/(70*a^2)+(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(39*a)/(35*b^3)+18/(25*a*b)+(39*b)/(35*a^3),...
-3/(25*a)-(39*a)/(35*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(-11*a^2)/(35*b^3)-3/(25*b)-(39*b)/(35*a^2)-(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+nu/5,...
(27*a)/(70*b^3)-18/(25*a*b)-(39*b)/(35*a^3),...
3/(25*a)-(27*a)/(70*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(13*a^2)/(70*b^3)-3/(25*b)-(39*b)/(35*a^2),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10;
-3/(25*a)+(27*a)/(70*b^2)+(13*b^2)/(70*a^3),...
(9*a)/(35*b)+(2*b)/(25*a)+(3*b^3)/(35*a^3),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
(13*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2),...
3/(25*a)+(39*a)/(35*b^2)-(13*b^2)/(70*a^3),...
(26*a)/(35*b)-(2*b)/(25*a)-(3*b^3)/(35*a^3),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(-22*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2)+(b*nu)/15,...
-3/(25*a)-(39*a)/(35*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(52*a)/(35*b)+(8*b)/(25*a)+(4*b^3)/(35*a^3),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+(6*nu)/5,...
10.3 Elementos finitos 171
(-44*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2)-(4*b*nu)/15,...
3/(25*a)-(27*a)/(70*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(18*a)/(35*b)-(8*b)/(25*a)-(4*b^3)/(35*a^3),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(26*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2);
(13*a^2)/(70*b^3)-3/(25*b)+(27*b)/(70*a^2),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
(3*a^3)/(35*b^3)+(2*a)/(25*b)+(9*b)/(35*a),...
a/75+(3*a^3)/(35*b^2)+(13*b^2)/(105*a),...
(11*a^2)/(35*b^3)+3/(25*b)-(27*b)/(70*a^2)+(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(-4*a^3)/(35*b^3)-(8*a)/(25*b)+(18*b)/(35*a),...
(-4*a)/75-(4*a^3)/(35*b^2)+(26*b^2)/(105*a),...
(-11*a^2)/(35*b^3)-3/(25*b)-(39*b)/(35*a^2)-(3*nu)/(5*b),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+(6*nu)/5,...
(4*a^3)/(35*b^3)+(8*a)/(25*b)+(52*b)/(35*a),...
(-4*a)/75-(4*a^3)/(35*b^2)-(44*b^2)/(105*a)-(4*a*nu)/15,...
(-13*a^2)/(70*b^3)+3/(25*b)+(39*b)/(35*a^2),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(-3*a^3)/(35*b^3)-(2*a)/(25*b)+(26*b)/(35*a),...
a/75+(3*a^3)/(35*b^2)-(22*b^2)/(105*a)+(a*nu)/15;
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(-13*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2),...
-a/75-(3*a^3)/(35*b^2)-(13*b^2)/(105*a),...
(-2*a^3)/(35*b)+(2*a*b)/225-(2*b^3)/(35*a),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(-22*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2)+(b*nu)/15,...
(4*a)/75+(4*a^3)/(35*b^2)-(26*b^2)/(105*a),...
(8*a^3)/(105*b)-(8*a*b)/225-(4*b^3)/(35*a),...
1/50+(11*a^2)/(35*b^2)+(11*b^2)/(35*a^2)+nu/5,...
(-44*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2)-(4*b*nu)/15,...
(-4*a)/75-(4*a^3)/(35*b^2)-(44*b^2)/(105*a)-(4*a*nu)/15,...
(16*a^3)/(105*b)+(32*a*b)/225+(16*b^3)/(105*a),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(-26*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2),...
a/75+(3*a^3)/(35*b^2)-(22*b^2)/(105*a)+(a*nu)/15,...
(-4*a^3)/(35*b)-(8*a*b)/225+(8*b^3)/(105*a);
(-39*a)/(35*b^3)-18/(25*a*b)+(27*b)/(70*a^3),...
-3/(25*a)-(39*a)/(35*b^2)+(13*b^2)/(70*a^3),...
(-11*a^2)/(35*b^3)-3/(25*b)+(27*b)/(70*a^2)-(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(-27*a)/(70*b^3)+18/(25*a*b)-(27*b)/(70*a^3),...
3/(25*a)-(27*a)/(70*b^2)-(13*b^2)/(70*a^3),...
(13*a^2)/(70*b^3)-3/(25*b)+(27*b)/(70*a^2),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
172 10 Placas de Kirchhoff
(27*a)/(70*b^3)-18/(25*a*b)-(39*b)/(35*a^3),...
3/(25*a)-(27*a)/(70*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(-13*a^2)/(70*b^3)+3/(25*b)+(39*b)/(35*a^2),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(39*a)/(35*b^3)+18/(25*a*b)+(39*b)/(35*a^3),...
-3/(25*a)-(39*a)/(35*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(11*a^2)/(35*b^3)+3/(25*b)+(39*b)/(35*a^2)+(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-nu/5;
3/(25*a)+(39*a)/(35*b^2)-(13*b^2)/(70*a^3),...
(26*a)/(35*b)-(2*b)/(25*a)-(3*b^3)/(35*a^3),...
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(22*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2)-(b*nu)/15,...
-3/(25*a)+(27*a)/(70*b^2)+(13*b^2)/(70*a^3),...
(9*a)/(35*b)+(2*b)/(25*a)+(3*b^3)/(35*a^3),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(-13*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2),...
3/(25*a)-(27*a)/(70*b^2)+(11*b^2)/(35*a^3)+(3*nu)/(5*a),...
(18*a)/(35*b)-(8*b)/(25*a)-(4*b^3)/(35*a^3),...
-1/50+(13*a^2)/(70*b^2)-(11*b^2)/(35*a^2)-nu/10,...
(-26*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2),...
-3/(25*a)-(39*a)/(35*b^2)-(11*b^2)/(35*a^3)-(3*nu)/(5*a),...
(52*a)/(35*b)+(8*b)/(25*a)+(4*b^3)/(35*a^3),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-(6*nu)/5,...
(44*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2)+(4*b*nu)/15;
(-11*a^2)/(35*b^3)-3/(25*b)+(27*b)/(70*a^2)-(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)+(13*b^2)/(70*a^2)-nu/10,...
(-4*a^3)/(35*b^3)-(8*a)/(25*b)+(18*b)/(35*a),...
(-4*a)/75-(4*a^3)/(35*b^2)+(26*b^2)/(105*a),...
(-13*a^2)/(70*b^3)+3/(25*b)-(27*b)/(70*a^2),...
1/50-(13*a^2)/(70*b^2)-(13*b^2)/(70*a^2),...
(3*a^3)/(35*b^3)+(2*a)/(25*b)+(9*b)/(35*a),...
a/75+(3*a^3)/(35*b^2)+(13*b^2)/(105*a),...
(13*a^2)/(70*b^3)-3/(25*b)-(39*b)/(35*a^2),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(-3*a^3)/(35*b^3)-(2*a)/(25*b)+(26*b)/(35*a),...
a/75+(3*a^3)/(35*b^2)-(22*b^2)/(105*a)+(a*nu)/15,...
(11*a^2)/(35*b^3)+3/(25*b)+(39*b)/(35*a^2)+(3*nu)/(5*b),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-(6*nu)/5,...
(4*a^3)/(35*b^3)+(8*a)/(25*b)+(52*b)/(35*a),...
(-4*a)/75-(4*a^3)/(35*b^2)-(44*b^2)/(105*a)-(4*a*nu)/15;
1/50+(11*a^2)/(35*b^2)-(13*b^2)/(70*a^2)+nu/10,...
(22*a^2)/(105*b)-b/75-(3*b^3)/(35*a^2)-(b*nu)/15,...
(4*a)/75+(4*a^3)/(35*b^2)-(26*b^2)/(105*a),...
(8*a^3)/(105*b)-(8*a*b)/225-(4*b^3)/(35*a),...
-1/50+(13*a^2)/(70*b^2)+(13*b^2)/(70*a^2),...
10.3 Elementos finitos 173
(13*a^2)/(105*b)+b/75+(3*b^3)/(35*a^2),...
-a/75-(3*a^3)/(35*b^2)-(13*b^2)/(105*a),...
(-2*a^3)/(35*b)+(2*a*b)/225-(2*b^3)/(35*a),...
1/50-(13*a^2)/(70*b^2)+(11*b^2)/(35*a^2)+nu/10,...
(26*a^2)/(105*b)-(4*b)/75-(4*b^3)/(35*a^2),...
a/75+(3*a^3)/(35*b^2)-(22*b^2)/(105*a)+(a*nu)/15,...
(-4*a^3)/(35*b)-(8*a*b)/225+(8*b^3)/(105*a),...
-1/50-(11*a^2)/(35*b^2)-(11*b^2)/(35*a^2)-nu/5,...
(44*a^2)/(105*b)+(4*b)/75+(4*b^3)/(35*a^2)+(4*b*nu)/15,...
(-4*a)/75-(4*a^3)/(35*b^2)-(44*b^2)/(105*a)-(4*a*nu)/15,...
(16*a^3)/(105*b)+(32*a*b)/225+(16*b^3)/(105*a)];
end
Para verificar a qualidade deste elemento na análise de placas, considere-
se uma placa quadrada, simplesmente apoiada ou encastrada em todos os
bordos, sujeita a uma força distribuida P , com lado a, módulo de elasticidade
E e coeficiente de Poisson ν. Considere-se a flecha normalizadas
D
w̄ = w (10.24)
P l4
sendo D a rigidez á flexão, obtida por
Eh3
D= (10.25)
12(1 − ν 2 )
sendo h a espessura da placa.
O código que a seguir se apresenta ( bfsExemplo.m ) pode considerar
apoios simples ou encastramentos.
clear all
colordef white
tic
% propriedades material
E0 = 10920; % módulo Young
nu0 = 0.30; % coef. Poisson
% geometria
L = 1; % lado
thickness=0.001;
I=thickness^3/12;
P=-1;
% malha
numy = 20; % # elementos em xx
numx = 20; % # elementos em xx
%malha
[node, element] = MalhaRectangular(L, L, numx, numy);
%
xx=node(:,1); yy=node(:,2);
174 10 Placas de Kirchhoff
for e=1:numelem
indice=element(e,:);
indiceB=[ indice(1)*4-3 indice(1)*4-2 indice(1)*4-1 indice(1)*4 ...
indice(2)*4-3 indice(2)*4-2 indice(2)*4-1 indice(2)*4 ...
indice(3)*4-3 indice(3)*4-2 indice(3)*4-1 indice(3)*4 ...
indice(4)*4-3 indice(4)*4-2 indice(4)*4-1 indice(4)*4];
K(indiceB,indiceB)=K(indiceB,indiceB)+ke;
f(indiceB)=f(indiceB)+fe;
%
end
% BC
fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
|xx==max(node(:,1))|yy==min(node(:,2)));
fixedNodeTY =find(yy==max(node(:,2))|yy==min(node(:,2)));
fixedNodeTX =find(xx==max(node(:,1))| xx==min(node(:,1)));
fixedNodeTXY =[];
dofs=[fixedNodeW*4-3;fixedNodeTX*4-2;fixedNodeTY*4-1;fixedNodeTXY*4];
activeDof=setdiff([1:4*numnode]’,[dofs]);
10.3 Elementos finitos 175
U=K(activeDof,activeDof)\f(activeDof);
U1=zeros(4*numnode,1);
U1(activeDof)=U;
figure
plot3(xx,yy,U1(1:4:4*numnode),’.’)
format long
D1=E0*thickness^3/12/(1-nu0^2);
min(U1(1:4:4*numnode))*D1/L^4
Para a placa referida, obtém-se os seguintes resultados normalizados para
a flecha máxima (nó central), conforme ilustrado na tabela 10.2.
node_pattern1=[ 1 2 nnx+1 ];
node_pattern2=[ 2 nnx+2 nnx+1 ];
inc_u=1;
inc_v=nnx;
element=[make_elem(node_pattern1,numx,numy,inc_u,inc_v);
make_elem(node_pattern2,numx,numy,inc_u,inc_v) ];
%
xx=node(:,1); yy=node(:,2);
numnode=size(node,1); % numero nos
numelem=size(element,1); % numero elementos
%
disp([num2str(toc),’ dados ’])
U=zeros(3*numnode,1); % vector de deslocamentos nodais
f=zeros(3*numnode,1); % vector de carga externa
K=sparse(3*numnode,3*numnode); % matriz de rigidez
% rigidez
for e=1:numelem
indice=element(e,:);
indiceB=[ indice(1)*3-2 indice(1)*3-1 indice(1)*3 ...
indice(2)*3-2 indice(2)*3-1 indice(2)*3 ...
indice(3)*3-2 indice(3)*3-1 indice(3)*3 ];
%
[ke, fe] = bcizElemento(node(indice,:), thickness, E0, nu0, P);
K(indiceB,indiceB)=K(indiceB,indiceB)+ke;
f(indiceB)=f(indiceB)+fe;
180 10 Placas de Kirchhoff
end
fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
|xx==max(node(:,1))|yy==min(node(:,2)));
dofs=[fixedNodeW*3-2;fixedNodeTX*3-1;fixedNodeTY*3];
activeDof=setdiff([1:3*numnode]’,[dofs]);
U=K(activeDof,activeDof)\f(activeDof);
U1=zeros(3*numnode,1);
U1(activeDof)=U;
figure
plot3(xx,yy,U1(1:3:3*numnode),’.’)
format long
D1=E0*thickness^3/12/(1-nu0^2);
%min(U1(1:3:3*numnode))*D1/L^2
min(U1(1:3:3*numnode))*D1/L^4
Para a placa referida, obtém-se os seguintes resultados normalizados para
a flecha máxima (nó central), conforme ilustrado na tabela 10.3.
10.4 Constrições de Kirchhoff 181
11.1 Introdução
Neste capı́tulo apresenta-se a formulação de elementos de placa espessa, se-
gundo a teoria de Mindlin, também chamada de Mindlin-Reissner.
Apresenta-se a formulação baseada em deslocamentos. Tendo em conta
a melhoria do comportamento ao corte transverso, apresenta-se também a
formulação para o elemento Q4γ (semelhante ao MITC de Bathe/Dvorkin),
sendo considerado dos melhores elementos para problemas de placa espessa
ou fina.
Finalmente, partindo da formulação de Mindlin, apresenta-se o elemento
DKT, que impõe condições de Kirchhoff em pontos seleccionados do elemento,
conduzindo assim a um elemento de placa fina com elevada reputação.
u = zθx (11.6)
v = zθy (11.7)
w = w0 (11.8)
onde θx , θy são as rotações do plano médio em torno dos eixos y e x, respec-
tivamente.
z, w
y, v
q
θx
x, u h
θy
σ f = Df σ f (11.14)
onde Df já foi anteriormente definido e
σ c = Dc σ c (11.15)
sendo
G 0
Dc = (11.16)
0 G
sendo G o módulo de corte, obtido como
E
G= (11.17)
2(1 + ν)
onde Ni (ξ, η) são as funções de forma dum elemento finito bidimensional com
n nós. Considera-se um elemento finito bilinear (figura 11.2)2 , onde as de-
formações são obtidas por
f = zBf de (11.22)
c = Bc de (11.23)
onde
∂N1 ∂N4
0 ∂x
0 ... 0
∂x
0
∂N1 ∂N4
Bf = 0 0 ... 0 0 (11.24)
∂y ∂y
∂N1 ∂N1 ∂N4 ∂N4
0 ... 0
∂y ∂x ∂y ∂x
∂N1 ∂N4
∂x N1 0 ... N4 0
∂x
Bc = (11.25)
∂N1 ∂N4
0 N1 ... 0 N4
∂y ∂y
e
de T = {w1 θx1 θy1 . . . w4 θx4 θy4 } (11.26)
Obtem-se assim a energia de deformação para o elemento de placa
Z Z Z Z
1 eT α eT
U= d BTf Df Bf dzdΩ e de + d BTc DC Bc dzdΩ e de
2 Ωe z 2 Ωe z
(11.27)
1
ao contrário da teoria de placa fina, onde as rotações são derivadas de w
2
designado por Q4 no programa MATLAB a seguir indicado
11.4 Exemplo de placa quadrada 187
2x2 (flexao)
1x1 (corte)
Figura 11.2. Elemento bilinear de placa de Mindlin : diferentes quadraturas para
flexão e corte transverso
1 1 1 1
h3
Z Z Z Z
Ke = BTf Df Bf |J|dξdη + αh BTc DC Bc |J|dξdη (11.29)
12 −1 −1 −1 −1
Eh3
D= (11.32)
12(1 − ν 2 )
sendo h a espessura da placa.
Utilizam-se elementos quadriláteros Q9.
Consideram-se placas espessas e finas. Na tabela 11.1 apresenta-se a flecha
central normalizada para várias espessuras e condições fronteira. Para evitar
situações de retenção de corte, executa-se sempre a integração reduzida (3
pontos de Gauss para contribuições de flexão e 2 pontos de Gauss para con-
tribuições de corte transverso). Apresenta-se apenas o código (mindlinQ4.m)
para o elemento Q4, deixando ao leitor a sugestão para construir o código
para os outros elementos.
1 colordef white
2 tic
3 % propriedades material
4 E0 = 10920; % mdulo Young
5 nu0 = 0.30; % coef. Poisson
6 % geometria
7 L = 1; % lado
8 thickness=0.0001;
9 I=thickness^3/12;
10 kapa=5/6; % ssss case
11 numy = 30; % # elementos em xx
12 numx = 30; % # elementos em xx
13 %
14 P = -1; % pressao uniforme
15 % matriz elasticidade (duas partes)
16 % parte flexao
17 C_bending=I*E0/(1-nu0^2)*[1 nu0 0;nu0 1 0;0 0 (1-nu0)/2];
18 % parte corte
19 C_shear=kapa*thickness*E0/2/(1+nu0)*eye(2);
20
21 %malha
22 [node, element] = MalhaRectangular(L, L, numx, numy);
23 %
24 xx=node(:,1);
25 yy=node(:,2);
26
27 numnode=size(node,1); % numero nos
28 numelem=size(element,1); % numero elementos
29
30 disp([num2str(toc),’ dados ’])
31 U=zeros(3*numnode,1); % vector de deslocamentos nodais
32 f=zeros(3*numnode,1); % vector de carga externa
33 K=zeros(3*numnode,3*numnode); % matriz de rigidez
34
35 % rigidez e carga equivalente
36 % quadratura de 2 pontos
11.4 Exemplo de placa quadrada 189
37
38 Q=[ -0.577350269189626 -0.577350269189626;
39 0.577350269189626 -0.577350269189626;
40 0.577350269189626 0.577350269189626;
41 -0.577350269189626 0.577350269189626]
42
43 W=[ 1;1;1;1];
44
45 for e=1:numelem
46
47 sctr=element(e,:);
48 sctrB=[ sctr sctr+numnode sctr+2*numnode];
49 nn=length(sctr);
50 for q=1:size(W,1) % CICLO QUADRATURA
51 pt=Q(q,:); % PONTO
52 wt=W(q); % PESO
53 xi=pt(1);
54 eta=pt(2);
55 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
56 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
57 (1+xi)*(1+eta);(1-xi)*(1+eta)];
58 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
59 1+eta, 1+xi;-(1+eta), 1-xi];
60 J0=node(sctr,:)’*dNdxi; % MATRIZ JACOBIANA
61 invJ0=inv(J0);
62 dNdx=dNdxi*invJ0;
63 % MATRIZ B
64 % FLEXAO
65 B_b=zeros(3,3*nn);
66 B_b(1,nn+1:2*nn) = dNdx(:,1)’;
67 B_b(2,2*nn+1:3*nn)= dNdx(:,2)’;
68 B_b(3,nn+1:2*nn) = dNdx(:,2)’;
69 B_b(3,2*nn+1:3*nn)= dNdx(:,1)’;
70
71 % RIGIDEZ NO PONTO DE QUADRATURA
72 K(sctrB,sctrB)=K(sctrB,sctrB)+B_b’*C_bending*B_b*W(q)*det(J0);
73 % VECTOR DE CARGA NO PONTO DE QUADRATURA
74 f(sctr)=f(sctr)+N*P*det(J0)*wt;
75 end
76 end
77 disp([num2str(toc),’ MATRIZ DE RIGIDEZ (CORTE)’])
78 % quadratura de 1 ponto
79 Q=[0 0];
80 W=[4];
81 for e=1:numelem
82 sctr=element(e,:);
83 sctrB=[ sctr sctr+numnode sctr+2*numnode];
84 nn=length(sctr);
85 for q=1:size(W,1)
190 11 Elementos finitos de placa de Mindlin
86 pt=Q(q,:);
87 wt=W(q);
88 xi=pt(1);
89 eta=pt(2);
90 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
91 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
92 (1+xi)*(1+eta);(1-xi)*(1+eta)];
93 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
94 1+eta, 1+xi;-(1+eta), 1-xi];
95 J0=node(sctr,:)’*dNdxi;
96 invJ0=inv(J0);
97 dNdx=dNdxi*invJ0;
98 % [B]corte
99 B_s=zeros(2,3*nn);
100 B_s(1,1:nn) = dNdx(:,1)’;
101 B_s(2,1:nn) = dNdx(:,2)’;
102 B_s(1,nn+1:2*nn) = N;
103 B_s(2,2*nn+1:3*nn)= N;
104 %
105 K(sctrB,sctrB)=K(sctrB,sctrB)+B_s’*C_shear *B_s*W(q)*det(J0);
106 end
107 end
108
109 % BC
110 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
111 |xx==max(node(:,1))|yy==min(node(:,2)));
112 %next two lines: simply supported case
113 %fixedNodeTX =find(yy==max(node(:,2))|yy==min(node(:,2)));
114 %fixedNodeTY =find(xx==max(node(:,1))| xx==min(node(:,1)));
115 %next two lines: clamped case
116 fixedNodeTX =fixedNodeW;
117 fixedNodeTY =fixedNodeTX;
118
119 % solucao
120 dofs=[fixedNodeW;fixedNodeTX+numnode;fixedNodeTY+2*numnode];
121 activeDof=setdiff([1:3*numnode]’,[dofs]);
122
123 U=K(activeDof,activeDof)\f(activeDof);
124 U1=zeros(3*numnode,1);
125 U1(activeDof)=U;
126
127 figure
128 plot3(xx,yy,U1(1:numnode),’.’)
129 format long
130 D1=E0*thickness^3/12/(1-nu0^2);
131 min(U1(1:numnode))*D1/L^4
11.4 Exemplo de placa quadrada 191
!1
!2
!3
!4
!5
1
0.8 1
0.6 0.8
0.4 0.6
0.4
0.2 0.2
0 0
Bc = J−1 Bξ (11.46)
(e) (e)
Note-se que ambas as matrizes Kf e Kc são obtidas por integração de
Gauss 2 × 2. Este elemento Q4γ é de facto semelhante ao MITC de Bathe e
Dvorkin. Para problemas rectangulares é também semelhante ao elemento T1
de Hughes e Tezduyar [119], não tem modos parasitas, nem retenção de corte,
quando γξz = γηz = 0.
Eh3
D= (11.48)
12(1 − ν 2 )
sendo h a espessura da placa.
Apresenta-se o código ( q4gammaMindlin1.m ) para o elemento Q4γ, que
recorre a outras rotinas parta execução de algumas tarefas.
1 clear all
2 colordef white
3 tic
4 % propriedades material
5 E0 = 10920; % mdulo Young
202 11 Elementos finitos de placa de Mindlin
x x x
θx Ni1 Ni2 Ni3
= y y y un ; (i = 1, 2, 3) (11.63)
θy Ni1 Ni2 Ni3
com
x 3 3 x 3 3
Ni1 = Pk Ck − Pm Cm ; Ni2 = Ni − Pk Ck2 − Pm Cm 2
;
2Lk 2Lm 4 4
x 3 3
Ni3 = − Pk Ck Sk − Pm Cm Sm
4 4
y 3 3 y x y 3 3
Ni1 = Pk S k − Pm Sm ; Ni2 = Ni3 ; Ni3 = Ni − Pk Sk2 − Pm Sm 2
2Lk 2Lm 4 4
(11.64)
z
3
s=0
i s θn
k
s = Lk
j
θs
Lk 2
wj − wi + (Ck θxi + Sk θyi + Ck θxj + Sk θyj ) + Lk αk = 0 (11.61)
2 3
donde se pode tirar a expressão de αk em função dos nós i e j:
3 3
αk = (wj − wi ) − (Ck θxi + Sk θyi + Ck θxj + Sk θyj ) , k = 4, 5, 6
2Lk 4
(11.62)
Substituindo estas relações em (11.49) obtêm-se expressões explicitas das
rotações θx , θy em função das 9 variáveis nodais u,
202 11 Elementos finitos de placa de Mindlin
x x x
θx Ni1 Ni2 Ni3
= y y y un ; (i = 1, 2, 3) (11.63)
θy Ni1 Ni2 Ni3
com
x 3 3 x 3 3
Ni1 = Pk Ck − Pm Cm ; Ni2 = Ni − Pk Ck2 − Pm Cm 2
;
2Lk 2Lm 4 4
x 3 3
Ni3 = − Pk Ck Sk − Pm Cm Sm
4 4
y 3 3 y x y 3 3
Ni1 = Pk S k − Pm Sm ; Ni2 = Ni3 ; Ni3 = Ni − Pk Sk2 − Pm Sm 2
2Lk 2Lm 4 4
(11.64)
1
J11 = (x21 + x34 + η (x34 − x21 )) (11.68)
4
1
J12 = (y21 + y34 + η (y34 − y21 )) (11.69)
4
1
J21 = (x32 + x41 + ξ (x32 − x41 )) (11.70)
4
1
J22 = (y32 + y41 + ξ (y32 − y41 )) (11.71)
4
A matriz de rigidez à flexão é então calculada da forma habitual
Z
K(e) = BT DBJdξdη (11.72)
A
Eh3
D= (11.74)
12(1 − ν 2 )
sendo h a espessura da placa.
Apresenta-se o código (dkt.m) .
1 clear all
2 colordef white
3 tic
4 % propriedades material
5 E0 = 10920; % mdulo Young
6 nu0 = 0.30; % coef. Poisson
7 rho=1;
8 % geometria
9 L = 1; % lado
10 thickness=0.01;
11 I=thickness^3/12;
12 P=-1;
13 % malha
14 numy = 20; % # elementos em xx
15 numx = 20; % # elementos em xx
16 %malha
204 11 Elementos finitos de placa de Mindlin
17 nnx=numx+1;
18 nny=numy+1;
19 node=square_node_array([0 0],[L 0],[L L],[0 L],nnx,nny);
20
21 node_pattern1=[ 1 2 nnx+1 ];
22 node_pattern2=[ 2 nnx+2 nnx+1 ];
23 inc_u=1;
24 inc_v=nnx;
25
26 element=[make_elem(node_pattern1,numx,numy,inc_u,inc_v);
27 make_elem(node_pattern2,numx,numy,inc_u,inc_v) ];
28 %
29 xx=node(:,1); yy=node(:,2);
30 numnode=size(node,1); % numero nos
31 numelem=size(element,1); % numero elementos
32 % matriz elasticidade (duas partes)
33 vh=E0*thickness^3/12/(1-nu0^2)*[1 nu0 0; nu0 1 0; 0 0 (1-nu0)/2];
34 %
35 disp([num2str(toc),’ dados ’])
36 U=zeros(3*numnode,1); % vector de deslocamentos nodais
37 f=zeros(3*numnode,1); % vector de carga externa
38 K=sparse(3*numnode,3*numnode); % matriz de rigidez
39 M=sparse(3*numnode,3*numnode); % matriz de rigidez
40
41 % rigidez
42 % quadratura
43 ih=3;ihc=2;
44 pg= .166666666666666;
45 pg1= .666666666666666;
46 vpg=[pg ,pg1 ,pg;pg ,pg ,pg1];vwg=[pg pg pg];
47 idle=9;ike=81;innel=3;ipg=3;ih=3;
48
49 for e=1:numelem
50 indice=element(e,:);
51 indiceB=[ indice(1)*3-2 indice(1)*3-1 indice(1)*3 ...
52 indice(2)*3-2 indice(2)*3-1 indice(2)*3 ...
53 indice(3)*3-2 indice(3)*3-1 indice(3)*3 ];
54
55 vcore(1:2:5)=node(indice,1); vcore(2:2:6)=node(indice,2);
56 [vcos,vl]=t3cos(vcore);
57 %
58 % determinante J
59 detj=( vcore(3)-vcore(1) )*( vcore(6)-vcore(2) ) ...
60 -( vcore(2)-vcore(4) )*( vcore(1)-vcore(5) );
61 % inversa da matriz jacobiana
62 vji(2,2)= ( vcore(3)-vcore(1) )/detj ;
63 vji(2,1)= ( vcore(1)-vcore(5) )/detj ;
64 vji(1,2)= ( vcore(2)-vcore(4) )/detj ;
65 vji(1,1)= ( vcore(6)-vcore(2) )/detj ;
11.9 Exemplo de placa com elemento DKT 205
66 % inicializao K, M
67 vke=zeros(9);
68 vm=zeros(9);
69 %
70 for ig=1:3 % ponto de gauss
71
72 [vb]=bdkt(vl,vcos,vji,vpg(1,ig),vpg(2,ig));
73 %
74 K(indiceB,indiceB)=K(indiceB,indiceB)+vb’*vh*detj*vwg(ig)*vb;
75 end % ponto de gauss
76 f(indice*3-2)=f(indice*3-2)+P*detj/6;
77 [vm]=bdkm(rho,thickness,detj) ;
78 M(indiceB,indiceB)=M(indiceB,indiceB)+vm;
79
80 end
81
82 %noCentral=find(node(:,1)==L/2 & node(:,2)==L/2);
83 %f(noCentral*3-2)=-1.0;
84 % BC
85
86 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
87 |xx==max(node(:,1))|yy==min(node(:,2)));
88
89 %next two lines: simply supported case
90 fixedNodeTX =find(yy==max(node(:,2))|yy==min(node(:,2)));
91 fixedNodeTY =find(xx==max(node(:,1))| xx==min(node(:,1)));
92
93 %next two lines: clamped case
94 %fixedNodeTX =fixedNodeW;
95 %fixedNodeTY =fixedNodeTX;
96
97
98 dofs=[fixedNodeW*3-2;fixedNodeTX*3-1;fixedNodeTY*3];
99 activeDof=setdiff([1:3*numnode]’,[dofs]);
100
101 U=K(activeDof,activeDof)\f(activeDof);
102 U1=zeros(3*numnode,1);
103 U1(activeDof)=U;
104
105 figure
106 plot3(xx,yy,U1(1:3:3*numnode),’.’)
107 format long
108 D1=E0*thickness^3/12/(1-nu0^2);
109 %min(U1(1:3:3*numnode))*D1/L^2
110 min(U1(1:3:3*numnode))*D1/L^4
111 %
112 G=E0/2.6;
113 % V : mode shape
114 % D : frequency
206 11 Elementos finitos de placa de Mindlin
Note-se que este código já contém a parte de cálculo de vibrações livres
que será detalhada em capı́tulo próprio mais adiante.
Para a placa referida, obtém-se os seguintes resultados normalizados para
a flecha máxima (nó central), conforme ilustrado na tabela 11.4. Note-se que
sendo um elemento de três nós tem comparativamente menos graus de liber-
dade que o elemento de 4 nós, pelo que necessita de menos graus de liberdade
para chegar a aproximadamente a mesma qualidade de solução.
1 function [vb]=bdkt(vl,vcos,vji,cx,cy)
2 % matriz [B] para elemento DKT
11.9 Exemplo de placa com elemento DKT 207
3 ki=[3,1,2];
4 vn1=[-1 1 0;-1 0 1];
5 c3=1-cx-cy ;
6 vp1(1,1)= 4*(c3-cx);
7 vp1(2,1)=-4*cx ;
8 vp1(1,2)= 4*cy ;
9 vp1(2,2)= 4*cx ;
10 vp1(1,3)=-4*cy ;
11 vp1(2,3)= 4*(c3-cy) ;
12 % c
13 % c------ vp-c(2,3): vp1*cos*1.5/l
14 % c vp-cc,ss,cs:= vp1*.75 * cc ss cs
15 % c
16 for j=1:3
17 cl=1.5/vl(j) ;
18 ac=vcos(1,j) ;
19 as=vcos(2,j) ;
20 for i=1:2
21 vpc(i,j)=cl*vp1(i,j)*ac ;
22 vps(i,j)=cl*vp1(i,j)*as ;
23 vpcc(i,j)=0.75*vp1(i,j)*ac*ac;
24 vpss(i,j)=0.75*vp1(i,j)*as*as;
25 vpcs(i,j)=0.75*vp1(i,j)*ac*as;
26 end
27 end
28 % c
29 % c------- vb(3,9): beta-x betay-y betax-y + betay-x
30 % c
31 cj11=vji(1,1) ;
32 cj12=vji(1,2) ;
33 cj21=vji(2,1) ;
34 cj22=vji(2,2) ;
35 %c------- para cada no : 3 gdl--> w, betax, betay
36 jj=1 ;
37 for j=1:3
38 jm=ki(j) ;
39 %c------- betax-x= vj(1,1)* ksi + vj(1,2)* eta
40 vb(1,jj ) = cj11 * ( vpc (1,j)-vpc (1,jm) ) + ...
41 cj12 * ( vpc (2,j)-vpc (2,jm) ) ;
42 vb(1,jj+1) = -cj11 * (-vn1(1,j)+vpcc(1,j)+vpcc(1,jm) ) ...
43 - cj12 * (-vn1(2,j)+vpcc(2,j)+vpcc(2,jm) ) ;
44 vb(1,jj+2) = -cj11 * ( vpcs(1,j)+vpcs(1,jm) )...
45 - cj12 * ( vpcs(2,j)+vpcs(2,jm) ) ;
46 %c------- betay-y= vj(2,1)* ksi + vj(2,2)* eta
47 vb(2,jj ) = cj21 * ( vps (1,j)-vps (1,jm) ) + ...
48 cj22 * ( vps (2,j)-vps (2,jm) ) ;
49 vb(2,jj+1) = -cj21 * (vpcs(1,j)+vpcs(1,jm) ) ...
50 - cj22 * (vpcs(2,j)+vpcs(2,jm) ) ;
51 vb(2,jj+2) = -cj21 * (-vn1(1,j)+ vpss(1,j)+vpss(1,jm) )...
208 11 Elementos finitos de placa de Mindlin
1 function [vm]=bdkm(rho,espessura,detj)
2
3 % % massa ..................................
4 c=espessura*detj*rho/(24.d0) ;
5 % deslocamento transverso ..................................
6 ii=1 ;
7 for i=1:3
8 jj=1 ;
9 for j=1:3
10 vm(ii,jj)=c;
11 jj=jj+3 ;
12 end
13 vm(ii,ii)=c+c;
14 ii=ii+3 ;
15 end
16 % rotacoes ..................................
17 ch=espessura*espessura/12;
18 ii=1 ;
19 for i=1:3
20 jj=1 ;
21 for j=1:3
22 c=vm(ii,jj)*ch ;
23 vm(ii+1,jj+1)=c ;
24 vm(ii+2,jj+2)=c ;
25 jj=jj+3 ;
26 end
27 ii=ii+3 ;
28 end
11.9 Exemplo de placa com elemento DKT 209
29
12
Teorias de placa de ordem superior
12.1 Introdução
No capı́tulo anterior apresentou-se a chamada teoria de placa espessa de
Mindlin-Reissner, ou teoria de deformação de corte de primeira ordem, que
necessita de factor de correcção de corte, para modificar a matriz constitutiva
ao corte, na forma
10
Dc = kG (12.1)
01
onde k representa o factor de correcção de corte transverso, tipicamente
5/6 para materiais isotrópicos.
Este factor de correcção de corte pode ser calculado de várias formas,
nenhuma dela totalmente satisfatória sob o ponto de vista da mecânica dos
meios contı́nuos.
Uma alternativa eficiente para evitar os factores de correcção de corte é
o de exprimir o campo de deslocamentos como função de z e z 3 , traduzindo-
se o empenamento da normal ao plano médio duma função mais realista.
Com esta abordagem consegue-se ainda tensões de corte parabólicas través
da espessura. A teoria que apresentamos adiante baseia-se na teoria de Kant
e colegas e representa uma boa alternativa à teoria de Mindlin-Reissner de
primeira ordem, à custa de dois graus de liberdade por nó.
∂θx∗
∂u0 ∂θx
m
∂x
∂x ∂x f∗
f
xx
xx
xx
∗
∂θ
∂v 0
∂θ y
f∗
y
myy = ; f
yy = ; yy =
∂y ∂y ∂y
m f
f∗
γxy γ γ ∗
∂u0 ∂v ∂θ ∂θ ∗ ∂θ
∂θ
0
xy x y
xy y
+
+
x
+
∂y ∂x ∂y ∂x ∂y ∂x
(12.6)
∂w0
(0)
γxz + θ x
γ (2)
∂x xz
∗
θ
γ0 = = ; γ2 = = x∗ (12.7)
(0) ∂w0 (2) θy
γyz
+ θy
γyz
∂y
Tendo em conta a abordagem de placa, ou seja, desprezando a tensão
normal transversa, σz , podem definir-se as relações tensão-deformação
E E
2
ν 0
1−ν 1 − ν2
σx x
σ = σy =
E E y
= D (12.8)
ν 0
τxy 1 − ν2 1 − ν2 γxy
0 0 G
τxz G 0 γxz
τ = = = Dc γ (12.9)
τyz 0 G γyz
Note-se que nesta teoria não são necessários os factores de correcção de
corte.
Z
1 T
+ zf + z 3 f ∗ D m + zf + z 3 f ∗ +
m
U=
2 V
h iT h i
γ (0) + 3z 2 γ (2) Dc γ (0) + 3z 2 γ (2) dV (12.11)
214 12 Teorias de placa de ordem superior
(e) (e)
onde Kmm representa a matriz de rigidez de membrana, Kf f representa a
(e)
matriz de rigidez de flexão com termos de primeira ordem, Kf ∗f ∗ representa a
matriz de rigidez de flexão com termos de ordem superior (de terceira ordem),
(e) (e)
Kcc representa a matriz de rigidez de corte, Kc2c2 representa a matriz de
rigidez de corte com termos de ordem superior. As componentes da matriz de
(e) (e)
rigidez Kcc2 e Kc2c representam termos de acoplamento de corte. De seguida
apresentam-se todas essas componentes da matriz de rigidez.
Z Z h/2 Z Z h/2 Z
K(e)
mm = Tm σdzdA = Tm Dm dzdA = h Tm Dm dA
A −h/2 A −h/2 A
(12.13)
h/2 h/2
h3
Z Z Z Z Z
(e)
Kf f = zTf σdzdA = z 2 Tf Df dzdA = Tf Df dA
A −h/2 A −h/2 12 A
(12.14)
h/2 h/2
h7
Z Z Z Z Z
(e)
Kf ∗f ∗ = z 3 Tf∗ σdzdA = z 6 Tf∗ Df ∗ dzdA = Tf∗ Df ∗ dA
A −h/2 A −h/2 448 A
(12.15)
Z Z h/2 Z
K(e)
cc = γ T0 Dc γ 0 dzdA =h γ T0 Dc γ 0 dA (12.16)
A −h/2 A
h/2
h5
Z Z Z
(e)
Kc2c2 = 3z 2 γ T2 Dc 3z 2 γ 2 dzdA = 9 γ T2 Dc γ 2 dA (12.17)
A −h/2 80 A
h/2
h3
Z Z Z
(e)
Kcc2 = γ T0 Dc 3z 2 γ 2 dzdA = 3 γ T0 Dc γ 2 dA (12.18)
A −h/2 12 A
h/2
h3
Z Z Z
(e) 2
Kc2c = 3z γ T2 Dc γ 0 dzdA =3 γ T2 Dc γ 0 dA (12.19)
A −h/2 12 A
12.3 Matrizes de deformação-deslocamento B 215
∗ ∗ ∗ ∗
uT = [w1 · · · wN , θx1 · · · θxN , θy1 · · · θyN , θx1 · · · θxN , θy1 · · · θyN , u1 · · · uN , v1 · · · vN ]
(12.25)
Eh3
D= (12.27)
12(1 − ν 2 )
sendo h a espessura da placa.
Para a placa referida, obtém-se os seguintes resultados normalizados para
a flecha máxima (nó central), conforme ilustrado na tabela 12.1.
Apresenta-se o código (placaKantQ4DOF5.m) para a solução de problemas
de placa isotrópica encastrada ou simplesmente apoiada, recorrendo à teoria
de placa de ordem superior.
1 colordef white
2 tic
3 % propriedades material
4 E0 = 10920; % mdulo Young
5 nu0 = 0.30; % coef. Poisson
6 rho=1;
7 % geometria
8 L = 1; % lado
9 thickness=0.01;
10 I=thickness^3/12;
11 %carga
12 P=-1;
13 numy = 10; % # elementos em xx
14 numx = 10; % # elementos em xx
15 % matriz elasticidade (duas partes)
16 % parte flexao
17 C_bending=E0/(1-nu0^2)*[1 nu0 0;nu0 1 0;0 0 (1-nu0)/2];
12.4 Exemplo de placa quadrada 217
18 % parte corte
19 C_shear=E0/2/(1+nu0)*eye(2);
20 %malha
21 [node, element] = MalhaRectangular(L, L, numx, numy);
22 %
23 xx=node(:,1); yy=node(:,2);
24
25 numnode=size(node,1); % numero nos
26 numelem=size(element,1); % numero elementos
27
28 % inicializacao
29 K=zeros(7*numnode,7*numnode); % matriz de rigidez
30 M=zeros(7*numnode,7*numnode); % matriz de massa
31 f=zeros(7*numnode,1); % vector de carga
32 U=zeros(7*numnode,1); % vector de deslocamentos
33
34 % calculo de MATRIZ DE RIGIDEZ
35
36 % quadratura de 2 pontos
37 Q=[ -0.577350269189626 -0.577350269189626;
38 0.577350269189626 -0.577350269189626;
218 12 Teorias de placa de ordem superior
39 0.577350269189626 0.577350269189626;
40 -0.577350269189626 0.577350269189626];
41 W=[ 1;1;1;1];
42 % rigidez de flexao
43 for e=1:numelem
44
45 indice=element(e,:);
46 indiceB=[ indice indice+numnode indice+2*numnode indice+3*numnode...
47 indice+4*numnode indice+5*numnode indice+6*numnode];
48 nn=length(indice);
49 for q=1:size(W,1) % CICLO QUADRATURA
50 pt=Q(q,:); % PONTO
51 wt=W(q); % PESO
52 xi=pt(1);
53 eta=pt(2);
54 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
55 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
56 (1+xi)*(1+eta);(1-xi)*(1+eta)];
57 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
58 1+eta, 1+xi;-(1+eta), 1-xi];
59
60 J0=node(indice,:)’*dNdxi; % MATRIZ JACOBIANA
61 invJ0=inv(J0);
62 dNdx=dNdxi*invJ0;
63
64 % MATRIZ B
65 % FLEXAO 0
66 B_b=zeros(3,7*nn);
67 B_b(1,nn+1:2*nn) = dNdx(:,1)’;
68 B_b(2,2*nn+1:3*nn) = dNdx(:,2)’;
69 B_b(3,nn+1:2*nn) = dNdx(:,2)’;
70 B_b(3,2*nn+1:3*nn) = dNdx(:,1)’;
71
72 B_b1=zeros(3,7*nn);
73 B_b1(1,3*nn+1:4*nn) = dNdx(:,1)’;
74 B_b1(2,4*nn+1:5*nn) = dNdx(:,2)’;
75 B_b1(3,3*nn+1:4*nn) = dNdx(:,2)’;
76 B_b1(3,4*nn+1:5*nn) = dNdx(:,1)’;
77
78 B_m=zeros(3,7*nn);
79 B_m(1,5*nn+1:6*nn) = dNdx(:,1)’;
80 B_m(2,6*nn+1:7*nn) = dNdx(:,2)’;
81 B_m(3,5*nn+1:6*nn) = dNdx(:,2)’;
82 B_m(3,6*nn+1:7*nn) = dNdx(:,1)’;
83
84
85 % RIGIDEZ E MASSA NO PONTO DE QUADRATURA
86 K(indiceB,indiceB)=K(indiceB,indiceB)+...
87 B_b’*I*C_bending*B_b*W(q)*det(J0);
12.4 Exemplo de placa quadrada 219
88
89 K(indiceB,indiceB)=K(indiceB,indiceB)+...
90 B_b’*thickness^5/80*C_bending*B_b1*W(q)*det(J0);
91
92 K(indiceB,indiceB)=K(indiceB,indiceB)+...
93 B_b1’*thickness^5/80*C_bending*B_b*W(q)*det(J0);
94
95
96 K(indiceB,indiceB)=K(indiceB,indiceB)+...
97 B_b1’*thickness^7/448*C_bending*B_b1*W(q)*det(J0);
98 K(indiceB,indiceB)=K(indiceB,indiceB)+...
99 B_m’*thickness*C_bending*B_m*W(q)*det(J0);
100
101
102 % VECTOR DE CARGA NO PONTO DE QUADRATURA
103 f(indice)=f(indice)+N*P*det(J0)*wt;
104 end
105 end
106
107 % MATRIZ DE RIGIDEZ (CORTE)
108 % quadratura de 1 ponto
109 Q=[0 0];
110 W=[4];
111
112 for e=1:numelem
113 indice=element(e,:);
114 indiceB=[ indice indice+numnode indice+2*numnode indice+3*numnode...
115 indice+4*numnode indice+5*numnode indice+6*numnode];
116 nn=length(indice);
117 for q=1:size(W,1)
118 pt=Q(q,:);
119 wt=W(q);
120 xi=pt(1);
121 eta=pt(2);
122 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
123 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
124 (1+xi)*(1+eta);(1-xi)*(1+eta)];
125 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
126 1+eta, 1+xi;-(1+eta), 1-xi];
127 J0=node(indice,:)’*dNdxi;
128 invJ0=inv(J0);
129 dNdx=dNdxi*invJ0;
130
131 % CORTE
132 B_s=zeros(2,7*nn);
133 B_s(1,1:nn) = dNdx(:,1)’;
134 B_s(2,1:nn) = dNdx(:,2)’;
135 B_s(1,nn+1:2*nn) = N;
136 B_s(2,2*nn+1:3*nn)= N;
220 12 Teorias de placa de ordem superior
137
138 B_s1=zeros(2,7*nn);
139 B_s1(1,3*nn+1:4*nn) = N;
140 B_s1(2,4*nn+1:5*nn) = N;
141 %
142 K(indiceB,indiceB)=K(indiceB,indiceB)+...
143 B_s’*thickness*C_shear*B_s*W(q)*det(J0);
144
145 K(indiceB,indiceB)=K(indiceB,indiceB)+...
146 B_s’*3*I*C_shear*B_s1*W(q)*det(J0);
147
148 K(indiceB,indiceB)=K(indiceB,indiceB)+...
149 B_s1’*3*I*C_shear*B_s*W(q)*det(J0);
150
151 K(indiceB,indiceB)=K(indiceB,indiceB)+...
152 B_s1’*9*thickness^5/80*C_shear*B_s1*W(q)*det(J0);
153 end
154 end
155
156 % BC
157 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
158 |xx==max(node(:,1))|yy==min(node(:,2)));
159 %next two lines: simply supported case
160 % fixedNodeTX =find(yy==max(node(:,2))|yy==min(node(:,2)));
161 % fixedNodeTY =find(xx==max(node(:,1))| xx==min(node(:,1)));
162 % fixedNodeTX1 =find(yy==max(node(:,2))|yy==min(node(:,2)));
163 % fixedNodeTY1 =find(xx==max(node(:,1))| xx==min(node(:,1)));
164 % fixedNodeU =find(xx==min(node(:,1)));
165 % fixedNodeV =find(yy==min(node(:,2)));
166
167 %next two lines: clamped case
168 fixedNodeTX =fixedNodeW;
169 fixedNodeTY =fixedNodeTX;
170 fixedNodeTX1 =fixedNodeTX;
171 fixedNodeTY1 =fixedNodeTX;
172 fixedNodeU =fixedNodeTX;
173 fixedNodeV =fixedNodeTX;
174
175 % condicoes fronteira
176 dofs=[fixedNodeW;fixedNodeTX+numnode;fixedNodeTY+2*numnode;...
177 fixedNodeTX1+3*numnode;fixedNodeTY1+4*numnode;...
178 fixedNodeU+5*numnode;fixedNodeV+6*numnode];
179
180 activeDof=setdiff([1:7*numnode]’,[dofs]);
181 U=K([activeDof],[activeDof])\f([activeDof]);
182 U1=zeros(7*numnode,1);
183 U1(activeDof)=U;
184 U=U1;
185
12.4 Exemplo de placa quadrada 221
186 ws=1:numnode;
187 D1=E0*thickness^3/12/(1-nu0^2);
188 format long
189 min(U1(ws))*D1/L^4% normalizacao para solucao de placa fina
190 figure (1)
191 plot3(xx,yy,U(ws),’.’)
192
13
Uma teoria layerwise
13.1 Introdução
As teorias de placa de Mindlin e Kant aqui apresentadas recorrem a um campo
de rotações da normal idêntico através da direcção da espessura. Segundo uma
normal ao plano médio, qualquer que seja a posição na direcção da espessua,
esse ponto material possui as mesmas rotações que outro ponto nessa direcção.
Imagine-se agora uma estrutura laminada tipo sandwich onde através da es-
pessura, as propriedades mecânicas podem variar de forma significativa. Com
base nesta suposição, apareceram as chamadas teorias layerwise, que atribuem
rotações independentes a camadas matemáticas representativas de materiais.
A teoria que se apresenta aqui [124] considera o seguinte campo de deslo-
camentos para a segunda camada (núcleo da estrutura sandwich), conforme
ilustrado na figura 13.1.
h2 (2) h3 (3)
u(3) (x, y, z) =u0 (x, y) + θ + θx + z (3) θx(3) (13.4)
2 x 2
h 2 h 3
v (3) (x, y, z) =v0 (x, y) + θy(2) + θy(3) + z (3) θy(3) (13.5)
2 2
w(3) (x, y, z) =w0 (x, y) (13.6)
h2 (2) h1 (1)
u(1) (x, y, z) =u0 (x, y) − θ − θx + z (1) θx(1) (13.7)
2 x 2
h 2 h 1
v (1) (x, y, z) =v0 (x, y) − θy(2) − θy(1) + z (1) θy(1) (13.8)
2 2
w(1) (x, y, z) =w0 (x, y) (13.9)
∂u(k)
∂x
(k)
xx
∂v (k)
(k) ∂y
yy
∂u(k) ∂v (k)
(k)
γxy = + (13.10)
∂y
∂x
(k)
γxz
∂u(k)
∂w(k)
∂z + ∂x
(k)
γyz
∂v (k) ∂w(k)
+
∂z ∂y
As deformações de membrana são definidas por
(k) m(k) f (k) mf (k)
xx
xx
xx
xx
(k) m(k) (k) f (k) mf (k)
yy = yy + z yy + yy (13.11)
(k) m(k)
f (k) mf (k)
γxy γxy γxy γxy
(2) (3)
h2 ∂θx h3 ∂θx
+
2 ∂x 2 ∂x
mf (3)
xx
(2) (3)
h2 ∂θy h3 ∂θy
mf (3) +
yy = (13.16)
2 ∂y 2 ∂y
mf (3)
! !
γxy (2) (2) (3) (3)
h2 ∂θx ∂θy h3 ∂θx ∂θy
+ + +
2
∂y ∂x 2 ∂y ∂x
(2) (1)
h2 ∂θx h1 ∂θx
− −
2 ∂x 2 ∂x
mf (1)
xx
(2) (1)
h2 ∂θy h1 ∂θy
mf (1) − −
yy = (13.17)
2 ∂y 2 ∂y
mf (1)
! !
γxy (2) (2) (1) (1)
h2 ∂θx ∂θy h1 ∂θx ∂θy
− 2 −
+ +
∂y ∂x 2 ∂y ∂x
(k)
Desprezando a tensão normal transversa σz para cada camada ortotrópica,
as relações tensão-deformação no sistema coordenado local (material) podem
ser expressas por
13.2 Laminado sandwich com 3 camadas 227
(k)
(k) (k) E2
ν21 = ν12 (k)
E1
Qskin = RQcore
Neste exemplo, normalizam-se os resultados na forma
0.999781
w = w(a/2, a/2, 0)
hq
(1) (1) (2)
σx (a/2, a/2, −h/2) 2 σx (a/2, a/2, −2h/5) σx (a/2, a/2, −2h/5)
σ 1x = ; σx = ; σ 3x =
q q q
(1) (1) (2)
σy (a/2, a/2, −h/2) 2 σy (a/2, a/2, −2h/5) σy (a/2, a/2, −2h/5)
σ 1y = σy = ; σ 3y =
q q q
(2) (2)
τxz (0, a/2, 0) 2 τxz (0, a/2, −2h/5)
τ 1xz = ; τ xz =
q q
Para diferentes valores de R, apresentam-se nas tabelas seguintes os re-
sultados na forma de deslocamentos transversais, tensões normais e tensões
de corte transverso. Comparam-se os resultados com os obtidos por soluções
anaaliticas de terceira ordem de Pandya [129], uma formulação de elementos
finitos de casca de primeira ordem de [126] e com uma formulação sem malha
de Ferreira e colegas [103]. A qualidade da formulação presente é evidente.
13 h3=thickness/10;
14 %
15 I=thickness^3/12;
16 %
17 %(exemplo SRINIVAS)
18 rf=15;
19 % sandwich example, srinivas
20 qbarra=zeros(5,5,3);
21
22 qbarra(1,1,2)=0.999781;
23 qbarra(1,2,2)=0.231192;
24 qbarra(2,1,2)=0.231192;
25 qbarra(2,2,2)=0.524886;
26 qbarra(3,3,2)=0.262931;
27 qbarra(5,5,2)=0.266810;
28 qbarra(4,4,2)=0.159914;
29 %
30 qbarra(:,:,1)=qbarra(:,:,2)*rf;
31 qbarra(:,:,3)=qbarra(:,:,2)*rf;
32 % %
33 %carga
34 P=-1;
35 numy = 10; % # elementos em xx
36 numx = 10; % # elementos em xx
37 % matriz elasticidade (duas partes)
38 % parte flexao
39
40 C1b=qbarra(1:3,1:3,1);
41 C2b=qbarra(1:3,1:3,2);
42 C3b=qbarra(1:3,1:3,3);
43
44 % C1b=E0/(1-nu0^2)*[1 nu0 0;nu0 1 0;0 0 (1-nu0)/2];
45 % C2b=E0/(1-nu0^2)*[1 nu0 0;nu0 1 0;0 0 (1-nu0)/2];
46 % C3b=E0/(1-nu0^2)*[1 nu0 0;nu0 1 0;0 0 (1-nu0)/2];
47 % parte corte
48
49 C1s=qbarra(4:5,4:5,1);
50 C2s=qbarra(4:5,4:5,2);
51 C3s=qbarra(4:5,4:5,3);
52
53 % C1s=E0/2/(1+nu0)*eye(2);
54 % C2s=E0/2/(1+nu0)*eye(2);
55 % C3s=E0/2/(1+nu0)*eye(2);
56
57 %malha
58 [node, element] = MalhaRectangular(L, L, numx, numy);
59 %
60 xx=node(:,1); yy=node(:,2);
61
13.2 Laminado sandwich com 3 camadas 231
160 B_mb3’*h3*C3b*B_mb3*W(q)*det(J0);
161
162 % VECTOR DE CARGA NO PONTO DE QUADRATURA
163 f(indice)=f(indice)+N*P*det(J0)*wt;
164 end
165 end
166
167 % MATRIZ DE RIGIDEZ (CORTE)
168 % quadratura de 1 ponto
169 Q=[0 0];
170 W=[4];
171
172 for e=1:numelem
173 indice=element(e,:);
174 indiceB=[ indice indice+numnode indice+2*numnode ...
175 indice+3*numnode indice+4*numnode indice+5*numnode indice+6*numnode];
176 nn=length(indice);
177 for q=1:size(W,1)
178 pt=Q(q,:);
179 wt=W(q);
180 xi=pt(1);
181 eta=pt(2);
182 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
183 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
184 (1+xi)*(1+eta);(1-xi)*(1+eta)];
185 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
186 1+eta, 1+xi;-(1+eta), 1-xi];
187 J0=node(indice,:)’*dNdxi;
188 invJ0=inv(J0);
189 dNdx=dNdxi*invJ0;
190
191 % CORTE
192 B_s1=zeros(2,7*nn);
193 B_s1(1,1:nn) = dNdx(:,1)’;
194 B_s1(2,1:nn) = dNdx(:,2)’;
195 B_s1(1,nn+1:2*nn) = N;
196 B_s1(2,2*nn+1:3*nn)= N;
197
198 B_s2=zeros(2,7*nn);
199 B_s2(1,1:nn) = dNdx(:,1)’;
200 B_s2(2,1:nn) = dNdx(:,2)’;
201 B_s2(1,3*nn+1:4*nn) = N;
202 B_s2(2,4*nn+1:5*nn)= N;
203
204 B_s3=zeros(2,7*nn);
205 B_s3(1,1:nn) = dNdx(:,1)’;
206 B_s3(2,1:nn) = dNdx(:,2)’;
207 B_s3(1,5*nn+1:6*nn) = N;
208 B_s3(2,6*nn+1:7*nn)= N;
234 13 Uma teoria layerwise
209 %
210 K(indiceB,indiceB)=K(indiceB,indiceB)+B_s1’*h1*C1s*B_s1*W(q)*det(J0);
211 K(indiceB,indiceB)=K(indiceB,indiceB)+B_s2’*h2*C2s*B_s2*W(q)*det(J0);
212 K(indiceB,indiceB)=K(indiceB,indiceB)+B_s3’*h3*C3s*B_s3*W(q)*det(J0);
213
214 end
215 end
216
217 % BC
218 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
219 |xx==max(node(:,1))|yy==min(node(:,2)));
220 %next two lines: simply supported case
221 fixedNodeTX1 =find(yy==max(node(:,2))|yy==min(node(:,2)));
222 fixedNodeTY1 =find(xx==max(node(:,1))| xx==min(node(:,1)));
223 fixedNodeTX2 =find(yy==max(node(:,2))|yy==min(node(:,2)));
224 fixedNodeTY2 =find(xx==max(node(:,1))| xx==min(node(:,1)));
225 fixedNodeTX3 =find(yy==max(node(:,2))|yy==min(node(:,2)));
226 fixedNodeTY3 =find(xx==max(node(:,1))| xx==min(node(:,1)));
227
228 %next two lines: clamped case
229 % fixedNodeTX1 =fixedNodeW;
230 % fixedNodeTY1 =fixedNodeTX1;
231 % fixedNodeTX2 =fixedNodeTX1;
232 % fixedNodeTY2 =fixedNodeTX1;
233 % fixedNodeTX3 =fixedNodeTX1;
234 % fixedNodeTY3 =fixedNodeTX1;
235
236 % condicoes fronteira
237 dofs=[fixedNodeW;fixedNodeTX1+numnode;fixedNodeTY1+2*numnode;...
238 fixedNodeTX2+3*numnode;fixedNodeTY2+4*numnode; ...
239 fixedNodeTX3+5*numnode;fixedNodeTY3+6*numnode];
240
241 activeDof=setdiff([1:7*numnode]’,[dofs]);
242 U=K([activeDof],[activeDof])\f([activeDof]);
243 U1=zeros(7*numnode,1);
244 U1(activeDof)=U;
245 U=U1;
246
247 ws=1:numnode;
248 D1=E0*thickness^3/12/(1-nu0^2);
249 format long
250 %min(U1(ws))*D1/L^4% normalizacao para solucao de placa fina
251 figure (1)
252 plot3(xx,yy,U(ws),’.’)
253
254 min(U1(ws))*0.999781/thickness% srinivas
255
256 %ua=0.999781/h*ua;
257
13.2 Laminado sandwich com 3 camadas 235
307
308 B_b3=zeros(3,7*nn);
309 B_b3(1,5*nn+1:6*nn) = dNdx(:,1)’;
310 B_b3(2,6*nn+1:7*nn) = dNdx(:,2)’;
311 B_b3(3,5*nn+1:6*nn) = dNdx(:,2)’;
312 B_b3(3,6*nn+1:7*nn) = dNdx(:,1)’;
313
314
315 % membrana - FLEXAO
316 B_mb3=zeros(3,7*nn);
317 B_mb3(1,3*nn+1:4*nn) = h2/2*dNdx(:,1)’;
318 B_mb3(2,4*nn+1:5*nn) = h2/2*dNdx(:,2)’;
319 B_mb3(3,3*nn+1:4*nn) = h2/2*dNdx(:,2)’;
320 B_mb3(3,4*nn+1:5*nn) = h2/2*dNdx(:,1)’;
321
322 B_mb3(1,5*nn+1:6*nn) = h3/2*dNdx(:,1)’;
323 B_mb3(2,6*nn+1:7*nn) = h3/2*dNdx(:,2)’;
324 B_mb3(3,5*nn+1:6*nn) = h3/2*dNdx(:,2)’;
325 B_mb3(3,6*nn+1:7*nn) = h3/2*dNdx(:,1)’;
326
327 B_mb1=zeros(3,7*nn);
328 B_mb1(1,nn+1:2*nn) = -h1/2*dNdx(:,1)’;
329 B_mb1(2,2*nn+1:3*nn) = -h1/2*dNdx(:,2)’;
330 B_mb1(3,nn+1:2*nn) = -h1/2*dNdx(:,2)’;
331 B_mb1(3,2*nn+1:3*nn) = -h1/2*dNdx(:,1)’;
332
333 B_mb1(1,3*nn+1:4*nn) = -h2/2*dNdx(:,1)’;
334 B_mb1(2,4*nn+1:5*nn) = -h2/2*dNdx(:,2)’;
335 B_mb1(3,3*nn+1:4*nn) = -h2/2*dNdx(:,2)’;
336 B_mb1(3,4*nn+1:5*nn) = -h2/2*dNdx(:,1)’;
337
338 stress_camada3(e,q,:)=C3b*B_mb3*U(indiceB)+h3/2*C3b*B_b3*U(indiceB);
339 stress_camada2(e,q,:)=C3b*B_mb3*U(indiceB)-h3/2*C3b*B_b3*U(indiceB);
340 stress_camada1(e,q,:)=h2/2*C2b*B_b2*U(indiceB);
341
342 end
343 end % of element loop
344
345
346
347 %%%% ..............................
348
349 % tensoes de corte
350
351 shear_camada1=zeros(numelem,1,2);
352 shear_camada2=zeros(numelem,1,2);
353 shear_camada3=zeros(numelem,1,2);
354
355 % quadratura de 1 ponto
13.2 Laminado sandwich com 3 camadas 237
356
357
358 Q=[0 0];
359 W=[4];
360
361
362 for e=1:numelem
363
364 indice=element(e,:);
365 indiceB=[ indice indice+numnode indice+2*numnode ...
366 indice+3*numnode indice+4*numnode indice+5*numnode indice+6*numnode];
367 nn=length(indice);
368
369 for q=1:size(W,1)
370 pt=Q(q,:);
371 wt=W(q);
372 xi=pt(1);
373 eta=pt(2);
374 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
375 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
376 (1+xi)*(1+eta);(1-xi)*(1+eta)];
377 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
378 1+eta, 1+xi;-(1+eta), 1-xi];
379 J0=node(indice,:)’*dNdxi;
380 invJ0=inv(J0);
381 dNdx=dNdxi*invJ0;
382
383 % CORTE
384 B_s1=zeros(2,7*nn);
385 B_s1(1,1:nn) = dNdx(:,1)’;
386 B_s1(2,1:nn) = dNdx(:,2)’;
387 B_s1(1,nn+1:2*nn) = N;
388 B_s1(2,2*nn+1:3*nn)= N;
389
390 B_s2=zeros(2,7*nn);
391 B_s2(1,1:nn) = dNdx(:,1)’;
392 B_s2(2,1:nn) = dNdx(:,2)’;
393 B_s2(1,3*nn+1:4*nn) = N;
394 B_s2(2,4*nn+1:5*nn)= N;
395
396 B_s3=zeros(2,7*nn);
397 B_s3(1,1:nn) = dNdx(:,1)’;
398 B_s3(2,1:nn) = dNdx(:,2)’;
399 B_s3(1,5*nn+1:6*nn) = N;
400 B_s3(2,6*nn+1:7*nn)= N;
401
402
403 shear_camada1(e,q,:)=C1s*B_s1*U(indiceB);
404 shear_camada2(e,q,:)=C2s*B_s2*U(indiceB);
238 13 Uma teoria layerwise
405 shear_camada3(e,q,:)=C3s*B_s3*U(indiceB);
406
407 end
408 end % of element loop
409 format
410 [ abs(min(U1(ws))*0.999781/thickness), abs(min(stress_camada3(:,3,1))),...
411 abs(min(stress_camada2(:,3,1))), abs(min(stress_camada1(:,3,1))),...
412 max(shear_camada2(:,:,1)),max(shear_camada1(:,:,1))]
14
Teoria de placa de primeira ordem para
laminados
14.1 Introdução
Considera-se aqui teoria de deformação de corte de primeira ordem, que neces-
sita de factor de correcção de corte, para a análise de laminados compósitos.
(14.5)
∂w
0 + θx
(0)
γxz
∂x
γ0 = =
γ (0)
∂w
0 + θy
yz
∂y
(14.6)
14.1 Introdução 241
Z z Z z Z z
∂σx ∂Mx D1 (z) Qx Qx
τxz = − dz = − zdz = − D1 (z)zdz = g(z)
−h/2 ∂x −h/2 ∂x R1 R1 −h/2 R1
(14.10)
Z h/2
onde Qx representa a força de corte no plano xz; R1 = D1 (z)z 2 dz
−h/2
representa a rigidezZda placa na direcção x; z é a coordenada através da
z
espessura; g(z) = − D1 (z)zdz representa a função de forma do corte.
−h/2
Esta função g(z) que representa o diagrama da tensão de corte torna-se a
função parabólica g(z) = [D1 h2 /8][1 − 4(z/h)2 ] para secções homogéneas.
A componente de energia de deformação é dada por
h/2 2 h/2
Q2 g 2 (z)
Z Z
τxz
ws = dz = x2 dz (14.11)
−h/2 G13 (z) R1 −h/2 G13 (z)
242 14 Teoria de placa de primeira ordem para laminados
ws R12
k1 = = h/2
(14.14)
ws
Z
2
hG1 g (z)/G13 (z)dz
−h/2
Z iT
1 m T h h i
U= + zf D m + zf + γ (0) Dc γ (0) dV (14.16)
2 V
h/2 h/2
h3
Z Z Z Z Z
(e)
Kf f = zTf σdzdA = z 2 Tf Df dzdA = Tf Df dA
A −h/2 A −h/2 12 A
(14.19)
Z Z h/2 Z
K(e)
cc = γ T0 Dc γ 0 dzdA = h γ T0 Dc γ 0 dA (14.20)
A −h/2 A
Qskin = RQcore
Neste exemplo, normalizam-se os resultados na forma
0.999781
w = w(a/2, a/2, 0)
hq
(1) (1) (2)
σx (a/2, a/2, −h/2) 2 σx (a/2, a/2, −2h/5) σx (a/2, a/2, −2h/5)
σ 1x = ; σx = ; σ 3x =
q q q
(1) (1) (2)
σy (a/2, a/2, −h/2) 2 σy (a/2, a/2, −2h/5) σy (a/2, a/2, −2h/5)
σ 1y = σy = ; σ 3y =
q q q
(2) (2)
τxz (0, a/2, 0) 2 τxz (0, a/2, −2h/5)
τ 1xz = ; τ xz =
q q
Para diferentes valores de R, apresentam-se nas tabelas seguintes os re-
sultados na forma de deslocamentos transversais, tensões normais e tensões
de corte transverso. Comparam-se os resultados com os obtidos por soluções
analiticas de terceira ordem de Pandya [129], uma formulação de elementos
finitos de casca de primeira ordem de Ferreira [126] e com uma formulação
sem malha de Ferreira e colegas [103]. A qualidade da formulação presente é
evidente, à excepção das tensões de corte transverso.
Regista-se a necessidade de corrigir posteriormente as tensões de corte
transverso, na forma
14.4 Laminado sandwich com 3 camadas 245
cor g(z)
τxz = Ḡ13 γxz (14.25)
ḡ
onde
Z h/2
ḡ = − g(z)dz (14.26)
−h/2
28
29 nc=3; ttt=0;ttt1=0; th(1)=ttt;th(2)=ttt1;th(3)=ttt1;
30 z1(1)=-2*h/5;z1(2)=2*h/5;z1(3)=h/2;
31 z2(1)=-h/2;z2(2)=-2*h/5;z2(3)=2*h/5;
32
33 thick(1:nc)=z1(1:nc)-z2(1:nc);
34
35 % coefe: factores de correccao ao corte (k1 e k2)
36
37 coefe(1:2)=0.0;gbarf(1:2)=0.0;rfact(1:2)=0.0;
38 sumla(1:2)=0.0;trlow(1:2)=0.0;upter(1:2)=0.0;
39
40 % posicao do eixo neutro de flexao...............................
41 dsumm=0.0;
42 for ilayr=1:nc
43 dzeta=z1(ilayr)-z2(ilayr);
44 zheig=dsumm+dzeta/2.0;
45 for i=1:2
46 dindx(i)=rf*dmat(i,i);
47 if(ilayr==2)
48 dindx(i)=dmat(i,i);
49 end
50 upter(i)=upter(i)+dindx(i)*zheig*dzeta;
51 trlow(i)=trlow(i)+dindx(i)*dzeta;
52 end
53 dsumm = dsumm+dzeta;
54 end
55
56 zeta2(1:2)=-upter(1:2)./trlow(1:2);
57
58 % calculo dos factores de correccao ao corte.
59
60 for ilayr=1:nc
61 diff1=z1(ilayr)-z2(ilayr);
62 d1=rf*dmat(1,1);
63 d2=rf*dmat(2,2);
64 d3=rf*dm(1,1);
65 d4=rf*dm(2,2);
66 if(ilayr==2)
67 d1=dmat(1,1);
68 d3=dm(1,1);
69 d4=dm(2,2);
70 d2=dmat(2,2);
71 end
72 index=10;
73 for i=1:2
74 zeta1(i)=zeta2(i);
75 zeta2(i)=zeta1(i)+diff1;
76 diff2(i)=zeta2(i)^2-zeta1(i)^2;
248 14 Teoria de placa de primeira ordem para laminados
77 diff3(i)=zeta2(i)^3-zeta1(i)^3;
78 diff5(i)=zeta2(i)^5-zeta1(i)^5;
79 if(i==1)
80 dindx(i)=d1;
81 gindx(i)=d3;
82 else
83 dindx(i)=d2;
84 gindx(i)=d4;
85 end
86
87 gbarf(i)=gbarf(i)+gindx(i)*diff1/2.0;
88 rfact(i)=rfact(i)+dindx(i)*diff3(i)/3.0;
89
90 term1 = sumla(i)*sumla(i)*diff1;
91 term2 = dindx(i)*(zeta1(i)^4)*diff1/4.0;
92 term3 = dindx(i)*diff5(i)/20.0;
93 term4 =-dindx(i)*zeta1(i)*zeta1(i)*diff3(i)/6.0;
94 term5 = sumla(i)*zeta1(i)*zeta1(i)*diff1;
95 term6 =-sumla(i)*diff3(i)/3.0;
96 coefe(i)= coefe(i)+(term1+dindx(i)*...
97 (term2+term3+term4+term5+term6))/gindx(i);
98 index = index+1;
99 sumla(i)= sumla(i)-dindx(i)*diff2(i)/2.0;
100 end
101 end
102
103 coefe(1:2)=rfact(1:2).*rfact(1:2)./(2.0*gbarf(1:2).*coefe(1:2));
104
105 disp(’coefe 1, 2’)
106 coefe(1)
107 coefe(2)
108 kapa=coefe(1);
109
110 a11=0;a22=0;a12=0;a33=0;
111 for i=1:nc
112 theta=th(i);
113 q11=rf*dmat(1,1);q12=rf*dmat(1,2);q22=rf*dmat(2,2);q33=rf*dmat(3,3);
114 cs=cos(theta);ss=sin(theta);ss11=rf*dm(1,1)*kapa;ss22=rf*dm(2,2)*kapa;
115 if i==2
116 q11=dmat(1,1);q12=dmat(1,2);q22=dmat(2,2);q33=dmat(3,3);
117 cs=cos(theta);ss=sin(theta);
118 ss11=dm(1,1)*kapa;ss22=dm(2,2)*kapa;
119 end
120 dd(1,1)=dd(1,1)+(ss11*cos(theta)^2+ss22*sin(theta)^2)*(z1(i)-z2(i));
121 dd(2,2)=dd(2,2)+(ss11*sin(theta)^2+ss22*cos(theta)^2)*(z1(i)-z2(i));
122 d(1,1)=d(1,1)+(q11*cs^4+2*(q12+2*q33)*ss*ss*cs*cs+...
123 q22*ss^4)*(z1(i)^3-z2(i)^3)/3;
124 d(2,2)=d(2,2)+(q11*ss^4+2*(q12+2*q33)*ss*ss*cs*cs+...
125 q22*cs^4)*(z1(i)^3-z2(i)^3)/3;
14.4 Laminado sandwich com 3 camadas 249
126 d(1,2)=d(1,2)+((q11+q22-4*q33)*ss*ss*cs*cs+...
127 q12*(ss^4+cs^4))*(z1(i)^3-z2(i)^3)/3;
128 d(3,3)=d(3,3)+((q11+q22-2*q12-2*q33)*ss*ss*cs*cs+...
129 q33*(ss^4+cs^4))*(z1(i)^3-z2(i)^3)/3;
130 a11=a11+q11*thick(i);
131 a22=a22+q22*thick(i);
132 a33=a22+q33*thick(i);
133 a12=a12+q12*thick(i);
134
135 qbarra(1,1,i)=q11;
136 qbarra(1,2,i)=q12;
137 qbarra(2,2,i)=q22;
138 qbarra(3,3,i)=q33;
139 qbarra(4,4,i)=ss11;
140 qbarra(5,5,i)=ss22;
141
142 end %nc
143
144 A44=dd(2,2);
145 A55=dd(1,1);
146 D11=d(1,1);
147 D12=d(1,2);
148 D22=d(2,2);
149 D66=d(3,3);
150 A11=a11;
151 A12=a12;
152 A66=a33;
153 A22=a22;
154
155 AMatrix=[A11,A12,0;A12,A22,0;0,0,A66]
156 %srinivas case (su+ymmetric)
157 BMatrix=zeros(3);
158 %BMatrix=[B11,B12,0;B12,B22,0;0,0,B66]
159 DMatrix=[D11,D12,0;D12,D22,0;0,0,D66]
160 SMatrix=[A44,0;0,A55]
161
162 %malha
163 [node, element] = MalhaRectangular(L, L, numx, numy);
164 %
165 xx=node(:,1); yy=node(:,2);
166
167 numnode=size(node,1); % numero nos
168 numelem=size(element,1); % numero elementos
169
170 % inicializacao
171 K=zeros(5*numnode,5*numnode); % matriz de rigidez
172 M=zeros(5*numnode,5*numnode); % matriz de massa
173 f=zeros(5*numnode,1); % vector de carga
174 U=zeros(5*numnode,1); % vector de deslocamentos
250 14 Teoria de placa de primeira ordem para laminados
175
176 % calculo de MATRIZ DE RIGIDEZ
177
178 % quadratura de 2 pontos
179 Q=[ -0.577350269189626 -0.577350269189626;
180 0.577350269189626 -0.577350269189626;
181 0.577350269189626 0.577350269189626;
182 -0.577350269189626 0.577350269189626];
183 W=[ 1;1;1;1];
184 % rigidez de flexao
185 for e=1:numelem
186
187 indice=element(e,:);
188 indiceB=[ indice indice+numnode indice+2*numnode ...
189 indice+3*numnode indice+4*numnode];
190 nn=length(indice);
191 for q=1:size(W,1) % CICLO QUADRATURA
192 pt=Q(q,:); % PONTO
193 wt=W(q); % PESO
194 xi=pt(1);
195 eta=pt(2);
196 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
197 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
198 (1+xi)*(1+eta);(1-xi)*(1+eta)];
199 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
200 1+eta, 1+xi;-(1+eta), 1-xi];
201
202 J0=node(indice,:)’*dNdxi; % MATRIZ JACOBIANA
203 invJ0=inv(J0);
204 dNdx=dNdxi*invJ0;
205
206 % MATRIZ B
207 % FLEXAO 0
208 B_b=zeros(3,5*nn);
209 B_b(1,nn+1:2*nn) = dNdx(:,1)’;
210 B_b(2,2*nn+1:3*nn) = dNdx(:,2)’;
211 B_b(3,nn+1:2*nn) = dNdx(:,2)’;
212 B_b(3,2*nn+1:3*nn) = dNdx(:,1)’;
213
214 B_m=zeros(3,5*nn);
215 B_m(1,3*nn+1:4*nn) = dNdx(:,1)’;
216 B_m(2,4*nn+1:5*nn) = dNdx(:,2)’;
217 B_m(3,3*nn+1:4*nn) = dNdx(:,2)’;
218 B_m(3,4*nn+1:5*nn) = dNdx(:,1)’;
219
220
221 % RIGIDEZ E MASSA NO PONTO DE QUADRATURA
222 K(indiceB,indiceB)=K(indiceB,indiceB)+...
223 B_b’*DMatrix*B_b*W(q)*det(J0);
14.4 Laminado sandwich com 3 camadas 251
224
225 K(indiceB,indiceB)=K(indiceB,indiceB)+...
226 B_m’*AMatrix*B_m*W(q)*det(J0);
227
228 K(indiceB,indiceB)=K(indiceB,indiceB)+...
229 B_m’*BMatrix*B_b*W(q)*det(J0);
230 K(indiceB,indiceB)=K(indiceB,indiceB)+...
231 B_b’*BMatrix*B_m*W(q)*det(J0);
232
233
234 % VECTOR DE CARGA NO PONTO DE QUADRATURA
235 f(indice)=f(indice)+N*P*det(J0)*wt;
236 end
237 end
238
239 % MATRIZ DE RIGIDEZ (CORTE)
240 % quadratura de 1 ponto
241 Q=[0 0];
242 W=[4];
243
244 for e=1:numelem
245 indice=element(e,:);
246 indiceB=[ indice indice+numnode indice+2*numnode indice+3*numnode...
247 indice+4*numnode ];
248 nn=length(indice);
249 for q=1:size(W,1)
250 pt=Q(q,:);
251 wt=W(q);
252 xi=pt(1);
253 eta=pt(2);
254 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
255 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
256 (1+xi)*(1+eta);(1-xi)*(1+eta)];
257 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
258 1+eta, 1+xi;-(1+eta), 1-xi];
259 J0=node(indice,:)’*dNdxi;
260 invJ0=inv(J0);
261 dNdx=dNdxi*invJ0;
262
263 % CORTE
264 B_s=zeros(2,5*nn);
265 B_s(1,1:nn) = dNdx(:,1)’;
266 B_s(2,1:nn) = dNdx(:,2)’;
267 B_s(1,nn+1:2*nn) = N;
268 B_s(2,2*nn+1:3*nn)= N;
269
270 K(indiceB,indiceB)=K(indiceB,indiceB)+...
271 B_s’*SMatrix*B_s*W(q)*det(J0);
272
252 14 Teoria de placa de primeira ordem para laminados
273 end
274 end
275
276 % BC
277 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
278 |xx==max(node(:,1))|yy==min(node(:,2)));
279 %next two lines: simply supported case
280 fixedNodeTX =find(yy==max(node(:,2))|yy==min(node(:,2)));
281 fixedNodeTY =find(xx==max(node(:,1))| xx==min(node(:,1)));
282 fixedNodeU =find(xx==min(node(:,1)));
283 fixedNodeV =find(yy==min(node(:,2)));
284
285 %next two lines: clamped case
286 % fixedNodeTX =fixedNodeW;
287 % fixedNodeTY =fixedNodeTX;
288 % fixedNodeU =fixedNodeTX;
289 % fixedNodeV =fixedNodeTX;
290
291 % condicoes fronteira
292 dofs=[fixedNodeW;fixedNodeTX+numnode;fixedNodeTY+2*numnode;...
293 fixedNodeU+3*numnode;fixedNodeV+4*numnode];
294
295 activeDof=setdiff([1:5*numnode]’,[dofs]);
296 U=K([activeDof],[activeDof])\f([activeDof]);
297 U1=zeros(5*numnode,1);
298 U1(activeDof)=U;
299 U=U1;
300
301 ws=1:numnode;
302 D1=E0*thickness^3/12/(1-nu0^2);
303 format long
304 %min(U1(ws))*D1/L^4% normalizacao para solucao de placa fina
305 min(U1(ws))*0.999781/h% normalizacao para solucao de SRINIVAS
306 figure (1)
307 plot3(xx,yy,U(ws),’.’)
308
309
310 %%%% ..............................
311
312 % tensoes normais
313
314 stress_camada1=zeros(numelem,4,3);
315 stress_camada2=zeros(numelem,4,3);
316 stress_camada3=zeros(numelem,4,3);
317 % quadratura de 2 pontos
318 Q=[ -0.577350269189626 -0.577350269189626;
319 0.577350269189626 -0.577350269189626;
320 0.577350269189626 0.577350269189626;
321 -0.577350269189626 0.577350269189626];
14.4 Laminado sandwich com 3 camadas 253
15.1 Introdução
A maior parte dos problemas de engenharia são tridimensionais. Em muitos
casos não é possı́vel ou desejável adoptar as simplificações de estado plano
de tensão ou outros. Neste capı́tulo realiza-se a análise por elementos finitos
de problemas tridimensionais. Depois de apresentar os principais vectores e
matrizes de interesse para o problema, formulam-se os elementos tetraédrico
de 4 nós e o elemento hexaédrico de 8 nós.
Neste capı́tulo apresenta-se também um programa de elementos finitos em
MATLAB, que serve para resolver o problema duma barra prismática em
tracção.
uT = [u, v, w] (15.1)
onde u, v, w são os deslocamentos segundo os três eixos cartesianos x, y, z.
= Bd (15.4)
onde B representa a chamada matriz de deformações, essencial para o cálculo
de elementos finitos, que é composta apenas por derivadas. Tendo em conta
a necessidade de transformações de eixos naturais e cartesianos, em muitos
casos, como por exemplo em sólidos 3D ou em cascas genéricas, esta matriz
pode ser de cálculo complexo e representar uma boa parte da dificuldade do
problema.
1−ν ν ν 0 0 0
ν 1−ν ν 0 0 0
E ν ν 1 − ν 0 0 0
D= (15.5)
0
(1 + ν)(1 − 2ν) 0 0 0.5 − ν 0 0
0 0 0 0 0.5 − ν 0
0 0 0 0 0 0.5 − ν
σ = D (15.6)
onde
N1 = ξ; N2 = η; N3 = ζ; N4 = 1 − ξ − η (15.8)
Os deslocamentos u, v, w podem agora ser calculados em termos dos desloca-
mentos nodais
15.5 Elemento tetraédrico de 4 nós 259
3 (0,0,1)
4 (0,0,0) ν
2 (0,1,0)
1 (1,0,0)
ξ
Figura 15.2. Elemento padrão para funções de forma
260 15 Análise de sólidos tridimensionais
U = Nu (15.9)
onde a matriz de funções de forma N é dada por
N1 0 0 N2 0 0 N3 0 0 N4 0 0
N = 0 N1 0 0 N2 0 0 N3 0 0 N4 0
(15.10)
0 0 N1 0 0 N2 0 0 N3 0 0 N4
Note-se que esta matriz de funções de forma pode também interpolar a geome-
tria da mesma forma que realiza a interpolação dos deslocamentos (formulação
isoparamétrica).
Assim, podem obter-se as coordenadas
x = N1 x1 + N2 x2 + N3 x3 + N4 x4
y = N 1 y1 + N 2 y2 + N 3 y3 + N 4 y4 (15.11)
z = N 1 z1 + N 2 z2 + N 3 z3 + N 4 z4
Usando agora a notação xij = xi − xj , yij = yi − yj , zij = zi − zj , obtemos
detJ = x14 (y24 z34 − y34 z24 ) + y14 (z24 x34 − z34 x24 ) + z14 (x24 y34 − x34 y24 )
(15.15)
O volume do elemento finito é obtido por
Z Z
1 1−ξ Z 1−ξ−η
Ve = detJdξdηdζ (15.16)
0 0 0
Dado que det J é constante, podemos escrever
Z 1 Z 1−ξ Z 1−ξ−η
Ve = |detJ| dξdηdζ (15.17)
0 0 0
Usando a fórmula
Z 1 Z 1−ξ Z 1−ξ−η
m!n!p!
ξ m η n ζ p dξdηdζ = (15.18)
0 0 0 (m + n + p + 3)!
podemos finalmente obter
1
|detJ|
Ve = (15.19)
6
Escrevendo uma relação inversa da de (15.13),
∂u
∂u
∂x
∂ξ
∂u
∂u
−1
=J (15.20)
∂y
∂η
∂u ∂u
∂z ∂ζ
onde a inversa da matriz jacobiana é expressa por
y24 z34 − y34 z24 y34 z14 − y14 z34 y14 z24 − y24 z14
−1 1
J = z24 x34 − z34 x24 z34 x14 − z14 x34 z14 x24 − z24 x14 (15.21)
detJ
x24 y34 − x34 y24 x34 y14 − x14 y34 x14 y24 − x24 y14
Podemos agora obter a matriz de deformações B. Chamando A = J−1 ,
onde Ã1 = A11 + A12 + A13 , Ã2 = A21 + A22 + A23 , Ã3 = A31 + A32 + A33 .
Note-se que sendo todos os termos da matriz B constantes, as deformações
são portanto constantes no interior do elemento.
σ = D = DBd (15.27)
!2 0
0 2
2
4
4
6
8
!2
!1
72 r1pt=zeros(quadorder,1); r1wt=zeros(quadorder,1);
73
74 r1pt(1) = 0.577350269189626;
75 r1pt(2) =-0.577350269189626;
76
77 r1wt(1) = 1.000000000000000;
78 r1wt(2) = 1.000000000000000;
79
80
81 for i = 1:quadorder
82 for j = 1:quadorder
83 for k = 1:quadorder
84 quadpoint(n,:) = [ r1pt(i), r1pt(j), r1pt(k) ];
85 quadweight(n) = r1wt(i)*r1wt(j)*r1wt(k);
86 n = n+1;
87 end
88 end
89 end
90
91 Q=quadpoint;
92 W=quadweight;
93
94
95 nn=size(element,2);
96 for e=1:numelem % ciclo elemento
97
98 sctr=element(e,:); % conectividades
99 sctrB0=[ sctr sctr+numnode sctr+2*numnode ]; % para matriz B
100
101 for q=1:size(W,1) % ciclo de quadratura
102 coord=Q(q,:); % ponto de quadratura
103 wt=W(q); % peso de quadratura
104
105 xi=coord(1); eta=coord(2); zeta=coord(3);
106 I1=1/2-coord/2;
107 I2=1/2+coord/2;
108 N=[ I1(1)*I1(2)*I1(3);
109 I2(1)*I1(2)*I1(3);
110 I2(1)*I2(2)*I1(3);
111 I1(1)*I2(2)*I1(3);
112 I1(1)*I1(2)*I2(3);
113 I2(1)*I1(2)*I2(3);
114 I2(1)*I2(2)*I2(3);
115 I1(1)*I2(2)*I2(3) ];
116 dNdxi=[ -1+eta+zeta-eta*zeta -1+xi+zeta-xi*zeta -1+xi+eta-xi*eta;
117 1-eta-zeta+eta*zeta -1-xi+zeta+xi*zeta -1-xi+eta+xi*eta;
118 1+eta-zeta-eta*zeta 1+xi-zeta-xi*zeta -1-xi-eta-xi*eta;
119 -1-eta+zeta+eta*zeta 1-xi-zeta+xi*zeta -1+xi-eta+xi*eta;
120 -1+eta-zeta+eta*zeta -1+xi-zeta+xi*zeta 1-xi-eta+xi*eta;
15.8 Programa para analisar barra 3D em tracção 267
170
171 f=f-K(:,udofs)*uFixed; f=f-K(:,vdofs)*vFixed; f=f-K(:,wdofs)*wFixed;
172 f(udofs)=uFixed; f(vdofs)=vFixed; f(wdofs)=wFixed;
173 K(udofs,:)=0; K(vdofs,:)=0; K(wdofs,:)=0;
174 K(:,udofs)=0; K(:,vdofs)=0; K(:,wdofs)=0;
175 K(udofs,udofs) =bcwt*speye(length(udofs));
176 K(vdofs,vdofs) =bcwt*speye(length(vdofs));
177 K(wdofs,wdofs) =bcwt*speye(length(wdofs));
178
179
180 % solucao
181 disp([num2str(toc),’ SOLVING SYSTEM’])
182 U1=K\f; % deslocamentos
183 % I=16/12;P=1;
184 % exacto=P*9^3/3/E0/I;
185 % disp([num2str(exacto),’ flecha exacta’])
186 % disp([num2str(U(48)),’ flecha no 13’])
187
188 I=16/12;P=4;
189 exacto=P*9/E0/4;
190 disp([num2str(exacto),’ displa. exact’])
191 disp([num2str(U1(16)),’ displ. calc.’])
192
193 plot_mesh(node,element,’B8’,’r.-’);
194 plot_mesh(node+10*[U1(us) U1(vs) U1(ws)],element,’B8’,’b.-’);
195
16
Análise de cascas com elementos planos
16.1 Introdução
A análise de cascas por elementos finitos pode fazer-se através de elemen-
tos planos ou curvos, diferindo bastante na formulação e na estratégia de
resolução.
A solução de problemas de casca através de eleemntos planos consiste na
junção de elementos de estado plano de tensão com elementos de placa. Os
primeiros asseguram a deformação de membrana enquanto que os segundos
asseguram a contribuição da flexão.
Quando uma casca tem raio de curvatura infinito, torna-se uma placa.
Quando se divide uma casca num número de elementos finitos, cada um des-
tes elementos pode ser uma placa, conforme figura 16.1. A combinação de ele-
mentos planos de tensão e elementos de placa compreende os seguintes graus
de liberdade locais: u0 , v 0 para elementos planos e w0 , θx0 θy0 para elementos de
placa, conforme ilustrado na figura 16.2.
y, v
z, w
x, u
θy 0
x0 , u0
y0 , v0 x0
z 0 , w0
θx0
=
θy 0
x0 , u0
ou
dlocal = Tdglobal (16.2)
onde (θz )local representa uma rotação que pretende simular o facto duma
rotação de flexão dum elemento representar uma rotação segundo o eixo z 0
noutro elemento. Nesta perspectiva, pode escrever-se em termos locais
Km 0 0 dm fm
0 Km 0 df = ff (16.3)
0 0 0 θz 0
L=50
z, w R=25
A t=0.25
sim E=4.32e8
sim
ν=0
C q=90
B
Livre
θ
D
L
Parede rigida
R 40◦
u = w = θs = 0
x, u
40 con = element(i,:);
41 lm = gdlElemento(i,:);
42 [k,r] = MindlinShellElem(node(con,:), h, e, nu, q1, q2, q3,...
43 ’Global’, rotzStiffFactor);
44 K(lm, lm) = K(lm, lm) + k;
45 R(lm) = R(lm) + r;
46 end
47 % Solucoes (deslocamentos)
48
49 activeDof=setdiff([1:dof]’,[condFronteira]);
50 U=K([activeDof],[activeDof])\R([activeDof]);
51 U1=zeros(dof,1);
52 U1(activeDof)=U;
53 d=U1;
54 d(8*6+3) % deslocamento transverso no n B
83 detJ = det(J);
84 bx = (J(2, 2)*dns - J(2, 1)*dnt)/detJ;
85 by = (-J(1, 2)*dns + J(1, 1)*dnt)/detJ;
86 b = [bx(1),0,n(1),bx(2),0,n(2),bx(3),0,n(3),bx(4),0,n(4);
87 by(1),-n(1),0,by(2),-n(2),0,by(3),-n(3),0,by(4),-n(4),0];
88 k2 = k2 + 5/6*g*h*detJ*w* b’*eye(2)*b;
89 end
90 % colocar a rigidez na ordem habitual (u,v,w,theta_x, theta_y, theta_z)
91 nlm = [1, 2, 7, 8, 13, 14, 19, 20];
92 ke(nlm, nlm) = k1;
93 nlm = [3, 4, 5, 9, 10, 11, 15, 16, 17, 21, 22, 23];
94 ke(nlm, nlm) = k2;
95 rotzStiff = rotzStiffFactor*e*h*elemArea;
96 % elemento adicional (ficticio) para cascas complanares
97 for i=6:6:24
98 ke(i, i) = rotzStiff;
99 end
100 % local -> global
101 ke = T’*ke*T;
102 re = T’*re;
103 end
1 function H = ShellDirectionCosines(nodes)
2 % H = ShellDirectionCosines(nodes)
3 n1 = nodes(1,:);
4 n2 = nodes(2,:);
5 n3 = nodes(3,:);
6 L = sqrt((n2 - n1)*(n2 - n1)’);
7 ex = (n2 - n1)/L;
8 ezz = cross(n2 - n1, n3 - n1);
9 Lt = sqrt(ezz*ezz’);
10 ez = ezz/Lt;
11 ey = cross(ez, ex);
12 H = [ex; ey; ez];
13 end
17
Análise de vibrações livres
17.1 Introdução
Neste capı́tulo faz-se a análise de vibrações livres de vários tipos de estruturas,
através do método dos elementos finitos. Apresenta-se uma explicação teórica
do método, com cálculo das matrizes de massa e de rigidez para vários tipos de
elementos e apresentam-se vários programas MATLAB que resolvem alguns
problemas tipicos.
δW = f δu (17.4)
278 17 Análise de vibrações livres
u(t), f (t)
m
du
Note-se que u̇ representa a primeira derivada em ordem ao tempo, u̇ = .
dt
Substituindo em (17.1), obtemos
Z t2 Z t2
1 1
δ( mu̇2 − ku2 )dt + f δudt = 0 (17.5)
t1 2 2 t1
1
ou seja Z t2
(mu̇δ u̇ − kuδu + f δu)dt = 0 (17.6)
t1
Z t2 Z t2 Z t2
t
mu̇δ u̇dt = [mu̇δu]t21 − müδudt = − müδudt (17.7)
t1 t1 t1
porque δu é nulo em t1 e t2 .
Substituindo (17.7) em (17.6), obtemos então
Z t2
(−mü − ku + f )δudt = 0 (17.8)
t1
mü + ku = f (17.9)
o que representa a equação de movimento do sistema, sem termos
dissipativos.
Tomando agora o sistema da figura 17.2, a energia cinética do sistema é
dada por
1 1
m1 u̇21 + m2 u̇22
T = (17.10)
2 2
e a energia de deformação é obtida por
1
Note-se que aqui δ u̇ = δ(du/dt) = d/dt(δu)
17.2 Equações de movimento 279
u1 u2
f2
m1 m2
k1 k2
1 1 1 1
U= k1 u21 + k2 (u2 − u1 )2 = (k1 + k2 )u21 − k2 u1 u2 + k2 u22 (17.11)
2 2 2 2
O trabalho realizado pelas forças exteriores é obtido por
δW = f2 δu2 (17.12)
As equações de Lagrange são expressas, para sistemas com vários graus de
liberdade, na forma (desprezando os termos dissipativos)
d ∂T ∂U
+ = Qj , j = 1, 2, ..., n (17.13)
dt ∂ q̇j ∂qj
sendo qj , q̇j os deslocamentos e velocidades generalizadas e Qj as forças gene-
ralizadas.
Aplicando então as equações de Lagrange a (17.10)-(17.12), obtem-se
Mq̈ + Kq = Q (17.16)
onde M representa a matriz de massa do sistema, K a matriz de rigidez do
sistema, q o vector de deslocamentos, q̈ o vector de acelerações e Q o vector
de forças externas aplicadas no sistema estrutural.
Note-se que podemos escrever ainda, na forma matricial,
1 T 1
T= q̇ Mq̇; U = qT Kq (17.17)
2 2
onde q̇ representa o vector de velocidades do sistema.
280 17 Análise de vibrações livres
x = −a dx x=a
x
u
Figura 17.3. Elemento de barra no sistema de coordenadas local
1 a
Z
U= σx x Adx (17.20)
2 −a
Assumindo um comportamento linear elástico do material da barra,
σx = Ex (17.21)
onde E representa o módulo de elasticidade do material, podemos substi-
tuir (17.21) em (17.20)
1 a
Z
U= EA2x dx (17.22)
2 −a
A relação entre a deformação x e o deslocamento axial u é
du
x = (17.23)
dx
Podemos então substituir (17.23) em (17.22) obtendo finalmente
17.3 Elemento de barra 281
Z a 2
1 du
U= EA dx (17.24)
2 −a dx
A energia cinética dum pequeno incremento dx, é dada por 1/2u̇2 ρAdx,
onde ρ é a massa por unidade de volume do material da barra. A energia
cinética do elemento é então definida por
1 a
Z
T = ρAu̇2 dx (17.25)
2 −a
Caso ocorra uma força aplicada p, por unidade de comprimento, a força
no incremento dx é pdx e o trabalho realizado num deslocamento virtual δu
é pδudx. O trabalho virtual para o elemento é então
Z a
δW = pδudx (17.26)
−a
x = −a, ξ = −1 x = a, ξ = 1
1 2 ξ x
L = 2a
Z a Z 1 Z 1
1 2 1 1
T = ρAu̇ dx = ρAu̇ adξ = u̇eT ρAa
2
NT Ndξ u̇e (17.30)
2 −a 2 −1 2 −1
282 17 Análise de vibrações livres
ou ainda
1 eT e e
u̇ M u̇ T = (17.31)
2
onde Me representa a matriz de massa do elemento, neste caso obtida por
Z 1
e
M = ρAa NT Ndξ (17.32)
−1
1
Z(1 − ξ)
1
2 ρAa 2 1
Me = ρAa 1 (1 − ξ) 1
2 2 (1 + ξ) dξ = (17.34)
−1 1 (1 + ξ) 3 12
2
Z a 2 Z 1 2 Z 1
1 du 1 EA du 1 eT EA 0 T 0
U= EA dx = adξ = u N N dξue
2 −a dx 2 −1 a2 dξ 2 −1 a
(17.35)
du
onde N0 = . A energia de deformação é assim obtida por
dξ
1
U = ueT Ke ue (17.36)
2
onde Ke representa a matriz de rigidez do elemento, neste caso obtida por
Z 1
EA T
Ke = N0 N0 dξ (17.37)
a −1
Note-se que fazendo L = 2a se obtem a mesma expressão que já foi ante-
riormente obtida pelo principio dos trabalhos virtuais.
Note-se ainda que a soma dos termos em cada linha da matriz é zero, o
que mostra que se o elemento se movimentar como corpo rigido, as forças de
recuperação elástica são nulas.
O trabalho realizado pelas forças distribuidas é definido por
Z a Z 1 Z 1
δW e = pδudx = pδuadξ = δueT a pNT dξ (17.40)
−a −1 −1
ou
δW e = δueT f e (17.41)
onde o vector de forças nodais equivalentes a forças distribuidas, para um
elemento de 2 nós e supondo uma força constante p, é dado por
Z 1
ap 1 1 − ξ
Z
e T 1
f =a pN dξ = dξ = ap (17.42)
−1 2 −1 1 + ξ 1
Para uma barra composta por vários elementos, as expressões das energias
são obtidas pela soma (espalhamento) das energias de todos os elementos
individuais.
Considere-se, a tı́tulo de exemplo, a barra da figura 17.5, dividida em 4
elementos finitos e 5 nós.
No
1 2 3 4 5
1 2 3 4 Elemento
uT = u1
u2 u3 u4 u5 (17.43)
3
Somando a contribuição de todos os elementos, obtemos
4
1 TX e 1
T = u̇ M u̇ = u̇T Mu̇ (17.44)
2 e=1
2
3
tendo em conta a numeração dos graus de liberdade
284 17 Análise de vibrações livres
4
1 TX e 1
U= u K u = u̇T Ku̇ (17.45)
2 e=1
2
4
X
δW = uT f e = u̇T f (17.46)
e=1
2 1 00 0 0 0 00 0 2100 0
1 2 00 0 0 2 10 0
1 4 1 0 0
ρAa
0
ρAa
M= 0 00 0 + 0
1 20 0 +... = 3 0 1 4 1
0 (17.47)
3
0
0 00 0 0 0 00 0
0 0 1 4 1
0 0 00 0 0 0 00 0 0001 2
| {z } | {z }
elemento 1 elemento 2
Mü + Ku = f (17.50)
Tendo em conta a análise de vibrações livres (δW = 0), assumindo um
movimento harmónico do tipo
K − ω2 M A = 0
(17.52)
que tem solução não trivial se o determinante for nulo, ou seja
K − ω 2 M = 0
(17.53)
Considere-se, então, a barra encastrada da figura 17.6, para a qual quere-
mos calcular as frequências e os modos de vibração.
F (t)
x=0 x=L
30 pt=pt(1);
31 N=([1-pt,1+pt]/2)’;
32 dNdxi=[-1;1]/2;
33 dNdx=dNdxi*invJ0;
34 % B
35 B=zeros(1,nn); B(1:nn) = dNdx(:);
36 % K
37 K(indice,indice)=K(indice,indice)+B’*B*W(q)*detJ0*EA;
38 M(indice,indice)=M(indice,indice)+N*N’*W(q)*detJ0*rho*A;
39 end
40 end
41 fixedNodeW =find(xx==min(node(:)))’; dofs=[fixedNodeW]
42 activeDof=setdiff([1:numnode]’,[dofs]);
43
44 % eigenproblem
45
46 [V,D]=eig(K(activeDof,activeDof),M(activeDof,activeDof));
47 D = diag(sqrt(D))*sqrt(rho*L*L/E);
48 D = sort(D);
49
y, w
x, u
z
x = −a dx x=a
dw
u = −y (17.61)
dx
sendo w o deslocamento transverso (flecha).
As componentes de deformação são obtidas por
∂u ∂2w ∂u ∂w
x = = −y 2 ; γxy = + =0 (17.62)
∂x ∂x ∂y ∂x
A energia de deformação é dada por
Z Z
1 1
U= σx x dV = E2x dV (17.63)
2 V 2 V
Assumindo dV = dAdx, integrando na direcção z, obtemos
a 2
∂2w
Z
1
U= EIz dx (17.64)
2 −a ∂x2
onde Iz é o momento de inércia da secção transversal da viga.
A energia cinética num incremento pequeno dx é 1/2ẇ2 ρAdx, sendo a
energia cinética no elemento dada por
1 a
Z
T = ρAẇ2 dx (17.65)
2 −a
Havendo uma força distribuida por unidade de comprimento, p, a força
no incremento dx é pdx. O trabalho realizado num incremento virtual δw é
pδwdx, sendo o trabalho virtual para o elemento completo dado por
Z a
δW = pδwdx (17.66)
−a
dw
Tendo em conta que é necessário tomar w e como graus de liberdade
dx
para cada nó do elemento de viga, temos 4 graus de liberdade para um ele-
mento finito de 2 nós. Podemos usar funções de forma de Hermite, onde
w = N(ξ)we (17.67)
onde
eT dw1 dw2
w = w1 w2 (17.68)
dx dx
sendo
290 17 Análise de vibrações livres
1
N1 (ξ) = (2 − 3ξ + ξ 2 ) (17.69)
4
1
N2 (ξ) = (1 − ξ − ξ 2 + ξ 3 ) (17.70)
4
1
N3 (ξ) = (2 + 3ξ − ξ 2 ) (17.71)
4
1
N4 (ξ) = (−1 − ξ + ξ 2 + ξ 3 ) (17.72)
4
Tendo em conta as expressões das energias para o elemento de viga de
Euler-bernoulli e substituindo (17.67) e (17.69), podemos escrever
Z a Z 1 Z 1
1 1 2 1
T = ρAẇ dx = ρAẇ adξ = ẇeT ρAa
2
NT Ndξ ẇe (17.73)
2 −a 2 −1 2 −1
78 22a 27 −13a
1 2
13a −6a2
Z
ρAa
22a 8a
Me = ρAa NT Ndξ = (17.74)
−1 105 27 13a 78 −22a
−13a −6a2 −22a 8a2
a 2 1 2
∂2w ∂2w
Z Z
1 1 EIz
U= EIz dx = adξ
2 −a ∂x2 2 −1 a4 ∂ξ 2
Z 1
1 EIz T
= weT 3 N00 N00 dξwe (17.75)
2 a −1
d2 N
onde N00 = , sendo a matriz de rigidez do elemento da viga dado por
dξ 2
Z 1 3 3a −3 3a
EIz EIz 2 2
Ke = 3
T
N00 N00 dξ = 3a 4a −3a 2a (17.76)
a −1 2a3 −3 −3a 3 −3a
3a 2a2 −3a 4a2
x=0
x=L
30
31 % condicoes fronteira
32
33 % encastrado em ambos os bordos
34 %fixedNodeU =[1 2*numx+1]’; fixedNodeV =[2 2*numx+2]’;
35 % simplesmente apoiado em ambos os bordos
36 %fixedNodeU =[1 2*numx+1]’; fixedNodeV =[]’;
37
38 % encastrado em x=0
39 fixedNodeU =[1]’; fixedNodeV =[2]’;
40 dofs=[fixedNodeU;fixedNodeV];
41 activos=setdiff([1:2*numnode]’,[dofs]);
42
43 % problema de vibracoes livres
44
45 [V,D]=eig(K(activos,activos),M(activos,activos));
46 D = diag(sqrt(D)*L*L*sqrt(rho*A/E/I));
47 D = sort(D);
48
49
u = −yθz (17.84)
onde θz (x) é a rotação da secção transversal numa dada posição do eixo dos
x.
As deformações não nulas x e γxy são definidas por
∂u ∂θz
x = = −y (17.85)
∂x ∂x
∂u ∂w ∂w
γxy = + = −θx + (17.86)
∂y ∂x ∂x
sendo w o deslocamento transversal da viga, segundo o eixo dos y.
A energia de deformação no elemento é a soma das energias de flexão e de
corte transverso,
294 17 Análise de vibrações livres
Z Z
1 1
U= σx x dV + τxy γxy dV (17.87)
2 V 2 V
onde a tensão normal é dada por
σx = Ex (17.88)
e a tensão de corte transverso é obtida por
Z Z
1 1
U= E2x dV + 2
kGγxy dV =
2 V 2 V
Z a 2 Z a 2
1 ∂θz 1 ∂w
EIz dx + kAG − θz dx (17.91)
2 −a ∂x 2 −a ∂x
1 a 1 a
Z Z
2
T = ρAẇ dx + ρIz θ̇z2 dx (17.92)
2 −a 2 −a
A expressão para o trabalho das forças exteriores é idêntica à das vigas de
Euler-Bernoulli, ou seja Z a
δW = pδwdx (17.93)
−a
w = Nwe (17.94)
θz = Nθze (17.95)
onde
17.8 Código MATLAB para vibrações de vigas Timoshenko 295
1 2 x
θz1 θz2
w1 w2
L = 2a
x = −a x=a
1 1
N= 2 (1 − ξ) 2 (1 + ξ) (17.96)
em coordenadas naturais ξ ∈ [−1, +1].
Tal como anteriormente, podemos calcular as matrizes de rigidez e massa
do elemento, na forma
Z 1 T Z 1 T
EIz dN dN 1 dN 1 dN
Ke = adξ+ kGA −N − N adξ
−1 a2 dξ dξ −1 a dξ a dξ
(17.97)
Z 1 Z 1
e T
M = ρAN N adξ + ρIz N T N adξ (17.98)
−1 −1
8 rho=1;
9 I=thickness^3/12;% momento de inercia
10 A=1*thickness;
11 %
12 numx = 40;
13 %
14 P = 1; % pressao uniforme
15 % matriz constitutiva
16 G=E0/2/(1+nu0);
17 C=[ I*E0 0; 0 5/6*thickness*G];
18 %
19 % malha
20 node=linspace(0,L,numx+1);xx=node;x=node;
21 %
22 for i=1:size(node,2)-1
23 element(i,1)=i;
24 element(i,2)=i+1
25 end
26 %
27 numnode=size(node,2); % num. nos
28 numelem=size(element,1); % num. elementos
29 %
30 K=zeros(2*numnode,2*numnode);
31 M=zeros(2*numnode,2*numnode);
32 % rigidez
33 W=zeros(2); Q=zeros(2);
34
35 Q(1) = 0.577350269189626;
36 Q(2) =-0.577350269189626;
37
38 W(1) = 1.; W(2) = 1.;
39
40 for e=1:numelem
41 indice=element(e,:);
42 indiceB=[ indice indice+numnode];
43 indiceR=indice+numnode;
44 nn=length(indice);
45 length_element=xx(indice(2))-xx(indice(1));
17.8 Código MATLAB para vibrações de vigas Timoshenko 297
46 detJ0=length_element/2;invJ0=1/detJ0;
47 for q=1:size(W,1) ;
48 pt=Q(q,:); wt=W(q);
49 pt=pt(1);
50 N=([1-pt,1+pt]/2)’;
51 dNdxi=[-1;1]/2;
52 dNdx=dNdxi*invJ0;
53 % B
54 B=zeros(2,2*nn); B(1,nn+1:2*nn) = -dNdx(:)’;
55 % K
56 K(indiceB,indiceB)=K(indiceB,indiceB)+B’*B*W(q)*detJ0*C(1,1);
57 M(indiceR,indiceR)=M(indiceR,indiceR)+N*N’*W(q)*I*rho*detJ0;
58 M(indice,indice)=M(indice,indice)+N*N’*W(q)*thickness*rho*detJ0;
59 end
60 end
61 %
62 W=zeros(1); Q=zeros(1);
63
64 Q(1) = 0.;
65
66 W(1) = 2.;
67
68 for e=1:numelem
69 indice=element(e,:);
70 indiceB=[ indice indice+numnode];
71 nn=length(indice);
72 length_element=xx(indice(2))-xx(indice(1));
73 detJ0=length_element/2;invJ0=1/detJ0;
74 for q=1:size(W,1) ;
75 pt=Q(q,:); wt=W(q);
76 pt=pt(1);
77 N=([1-pt,1+pt]/2)’;
78 dNdxi=[-1;1]/2;
79 dNdx=dNdxi*invJ0;
80 % B
81 B=zeros(2,2*nn);
82 B(2,1:nn) = dNdx(:)’;
83 B(2,nn+1:2*nn) = -N;
84 % K
85 K(indiceB,indiceB)=K(indiceB,indiceB)+B’*B*W(q)*detJ0*C(2,2);
86 end
87 end
88 % BC
89 bcwt=mean(diag(K));
90 % condicoes fronteira (meia viga com simetria)
91 %fixedNodeW =find(xx==max(node(:)))’;
92 %fixedNodeW =find(xx==max(node(:))|xx==min(node(:)))’;
93 %fixedNodeTX=find(xx==min(node(:)))’;;
94 %fixedNodeTX=find(xx==L/2)’;
298 17 Análise de vibrações livres
95 %fixedNodeTX=fixedNodeW;
96 %
97 % encastrado ambos os bordos
98 %fixedNodeW =find(xx==min(node(:)) | xx==max(node(:)))’;
99 %fixedNodeTX=fixedNodeW;
100
101 % encastrado em x=0
102 fixedNodeW =find(xx==min(node(:)))’;
103 fixedNodeTX=fixedNodeW;
104
105 % simplesmente apoiado
106 %fixedNodeW =find(xx==min(node(:)) | xx==max(node(:)))’;
107 %fixedNodeTX=[];
108 %
109 dofs=[fixedNodeW;fixedNodeTX+numnode]
110 % exemplo livro
111 activeDof=setdiff([1:2*numnode]’,[dofs]);
112 [V,D]=eig(K(activeDof,activeDof),M(activeDof,activeDof));
113
114 D = diag(sqrt(D)*L*L*sqrt(rho*A/E0/I));
115 [D,ii] = sort(D);
116
117
118 % lee,schultz paper
119 modeNumber=4;
120 % [V,D]=eig(K(activeDof,activeDof),M(activeDof,activeDof));
121 % D = diag(sqrt(D)*L*L*sqrt(rho*thickness/E0/I));D=sqrt(D) ;
122 % [D,ii] = sort(D); V = V(:,ii);
123
124 V1=zeros(2*numnode,1);
125 V1(activeDof,1:modeNumber)=V(:,1:modeNumber);
126
127 clf
128 for j=1:modeNumber
129 u=[V1(1:numnode,j)];
130 xx = 0:.01:1; subplot(modeNumber+1,1,j);
131 plot(x’,u,’.’,’markersize’,12), grid on
132 uu = polyval(polyfit(x’,V1(1:numnode,j),numnode),xx);
133 line(xx,uu)%, axis off
134 end
135
136
137
138
100
!100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
100
!100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
100
!100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
100
!100
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 17.11. Primeiros 4 modos de vibração para uma viga encastrada (ν = 0.3)
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
5
!5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Figura 17.12. Primeiros 4 modos de vibração para uma viga simplesmente apoiada
(ν = 0.3)
17.9 Exemplo de Lee e Schultz 301
7 thickness=0.1;
8 rho=1;
9 I=thickness^3/12;% momento de inercia
10 A=1*thickness;
11 %
12 numx = 40;
13 %
14 P = 1; % pressao uniforme
15 % matriz constitutiva
16 G=E0/2/(1+nu0);
17 C=[ I*E0 0; 0 5/6*thickness*G];
18 %
19 % malha
20 node=linspace(0,L,numx+1);xx=node;x=node;
21 %
22 for i=1:size(node,2)-1
23 element(i,1)=i;
24 element(i,2)=i+1
25 end
26 %
27 numnode=size(node,2); % num. nos
28 numelem=size(element,1); % num. elementos
29 %
30 K=zeros(2*numnode,2*numnode);
31 M=zeros(2*numnode,2*numnode);
32 % rigidez
33 W=zeros(2); Q=zeros(2);
34
35 Q(1) = 0.577350269189626;
36 Q(2) =-0.577350269189626;
37
38 W(1) = 1.; W(2) = 1.;
39
40 for e=1:numelem
41 indice=element(e,:);
42 indiceB=[ indice indice+numnode];
43 indiceR=indice+numnode;
44 nn=length(indice);
45 length_element=xx(indice(2))-xx(indice(1));
46 detJ0=length_element/2;invJ0=1/detJ0;
47 for q=1:size(W,1) ;
48 pt=Q(q,:); wt=W(q);
49 pt=pt(1);
50 N=([1-pt,1+pt]/2)’;
51 dNdxi=[-1;1]/2;
52 dNdx=dNdxi*invJ0;
53 % B
54 B=zeros(2,2*nn); B(1,nn+1:2*nn) = -dNdx(:)’;
55 % K
17.9 Exemplo de Lee e Schultz 303
56 K(indiceB,indiceB)=K(indiceB,indiceB)+B’*B*W(q)*detJ0*C(1,1);
57 M(indiceR,indiceR)=M(indiceR,indiceR)+N*N’*W(q)*I*rho*detJ0;
58 M(indice,indice)=M(indice,indice)+N*N’*W(q)*thickness*rho*detJ0;
59 end
60 end
61 %
62 W=zeros(1); Q=zeros(1);
63
64 Q(1) = 0.;
65
66 W(1) = 2.;
67
68 for e=1:numelem
69 indice=element(e,:);
70 indiceB=[ indice indice+numnode];
71 nn=length(indice);
72 length_element=xx(indice(2))-xx(indice(1));
73 detJ0=length_element/2;invJ0=1/detJ0;
74 for q=1:size(W,1) ;
75 pt=Q(q,:); wt=W(q);
76 pt=pt(1);
77 N=([1-pt,1+pt]/2)’;
78 dNdxi=[-1;1]/2;
79 dNdx=dNdxi*invJ0;
80 % B
81 B=zeros(2,2*nn);
82 B(2,1:nn) = dNdx(:)’;
83 B(2,nn+1:2*nn) = -N;
84 % K
85 K(indiceB,indiceB)=K(indiceB,indiceB)+B’*B*W(q)*detJ0*C(2,2);
86 end
87 end
88 % BC
89 bcwt=mean(diag(K));
90 % condicoes fronteira (meia viga com simetria)
91 %fixedNodeW =find(xx==max(node(:)))’;
92 %fixedNodeW =find(xx==max(node(:))|xx==min(node(:)))’;
93 %fixedNodeTX=find(xx==min(node(:)))’;;
94 %fixedNodeTX=find(xx==L/2)’;
95 %fixedNodeTX=fixedNodeW;
96 %
97 % encastrado ambos os bordos
98 %fixedNodeW =find(xx==min(node(:)) | xx==max(node(:)))’;
99 %fixedNodeTX=fixedNodeW;
100
101 % encastrado em x=0
102 fixedNodeW =find(xx==min(node(:)))’;
103 fixedNodeTX=fixedNodeW;
104
304 17 Análise de vibrações livres
h3 h3
Z
1
Te = ρ hẇ2 + θ̇x2 + θ̇y2 dA (17.100)
2 A 12 12
h3 T
Z Z
1 1
Ue = χ DχdA + khγ T Dc γdA (17.101)
2 A 12 2 A
onde χ representa o vector de curvaturas da placa
17.10 Vibrações livres de placas Mindlin 305
∂θy
−
∂x
∂θx
χ= (17.102)
∂y
∂θx ∂θy
−
∂x ∂y
e
∂w
θ
y +
∂x
γ= (17.103)
∂w
−θx +
∂y
As matrizes constitutivas do material em flexão, D e corte, Dc são, res-
pectivamente obtidas por
E E
1−ν ν1−ν 0
E E
D = ν 0 (17.104)
1−ν 1−ν
E
0 0
2(1 + ν)
e
G 0
Dc = (17.105)
0 G
O vector de forças nodais equivalentes é dado por
Z
δW = pδwdA (17.106)
A
Tendo em conta uma interpolação independente para cada grau de liberdade,
obtem-se
w = Nwe (17.107)
θ x = Nθ ex (17.108)
θ y = Nθ ey (17.109)
onde a matriz de funções de forma do elemento Q4 é dada por
306 17 Análise de vibrações livres
1
Nj =
(1 + ξj ξ)(1 + ηj η) (17.110)
4
onde ξj , ηj são as coordenadas naturais no bi-quadrado [−1, +1].
Estas funções são naturalmente distintas para outros elementos, como o
Q9 (lagrangiano de 9 nós) ou o T3 (triângulo de 3 nós).
Para o elemento lagrangiano de 4 nós, Q4, definem-se os seguintes graus
de liberdade
ueT = w1
θx1 θy1 w2 θx2 θy2 ··· w4 θx4 θy4 (17.111)
podendo definir-se
uT = w θy = Nue
θx (17.112)
onde
N1 0 0 · · · N4 0 0
N = 0 N1 0 · · · 0 N4 0 (17.113)
0 0 N1 · · · 0 0 N4
Substituindo nas expressões das energias, obtém-se as matrizes de rigidez e
massa do elemento de placa espessa seguindo a teoria de Mindlin
h3 f T
Z Z
Ke = B DBf dA + khBcT Dc Bc dA (17.114)
A 12 A
h 0 0
Z
3
Me = ρNT 0 h12 0 NdA (17.115)
A h3
0 0 12
onde
∂Ni
−
∂x 0 N i
Bci = (17.119)
∂Ni
−Ni 0
∂y
Note-se que o código respeita os mesmos principios, mas organiza as ma-
trizes de forma diferente, para poder aproveitar as capacidades do MATLAB.
8 thickness=0.1;
9 I=thickness^3/12;
10 kapa=0.8601; % cccc / cccf
11 %kapa=0.822; % scsc
12 kapa=5/6; % ssss
13 numy = 10; % # elementos em xx
14 numx = 10; % # elementos em xx
15 numberOfModes=12;
16 % matriz elasticidade (duas partes)
17 % parte flexao
18 C_bending=I*E0/(1-nu0^2)*[ 1 nu0 0 0 0;
19 nu0 1 0 0 0;
17.12 Código MATLAB para exemplo de placa 313
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 0.2 0.4 0.6 0.8 1
Figura 17.13. Malha de elementos finitos, elemento Q9, 15 × 15, elemento Q4,
10 × 10 e deformada tipica
20 0 0 (1-nu0)/2 0 0;
21 0 0 0 0 0;
22 0 0 0 0 0];
23
24 % parte corte
25 C_shear=...
26 kapa*thickness*E0/2/(1+nu0)*[ 0 0 0 0 0;
27 0 0 0 0 0;
28 0 0 0 0 0;
29 0 0 0 1 0;
30 0 0 0 0 1];
31
32 %malha
33 [node, element] = MalhaRectangular(L, L, numx, numy)
34 %
35 xx=node(:,1); yy=node(:,2);
36
37 numnode=size(node,1); % numero nos
38 numelem=size(element,1); % numero elementos
39
40 % inicializacao
314 17 Análise de vibrações livres
0.5 0.5
0 0
!0.5 !0.5
!1 !1
!1 !0.5 0 0.5 1 !1 !0.5 0 0.5 1
0.5 0.5
0 0
!0.5 !0.5
!1 !1
!1 !0.5 0 0.5 1 !1 !0.5 0 0.5 1
Figura 17.14. Modos de vibração para placa encastrada, h/a = 0.1, elemento Q4,
10 × 10
0.5 0.5
0 0
!0.5 !0.5
!1 !1
!1 !0.5 0 0.5 1 !1 !0.5 0 0.5 1
0.5 0.5
0 0
!0.5 !0.5
!1 !1
!1 !0.5 0 0.5 1 !1 !0.5 0 0.5 1
Figura 17.15. Modos de vibração para placa simplesmente apoiada, h/a = 0.1,
elemento Q4, 10 × 10
&'0
&
!&'0
!(
!( !&'0 & &'0 (
!"#$%$&'()*&+*,(-&(- !"#$%$&'+.&*+)*-,&/+
) )
&'( &'(
& &
!&'( !&'(
!) !)
!) !&'( & &'( ) !) !&'( & &'( )
!"#$%$&'.&.*0-,.0,,- !"#$%$&'.*-,*,(0)++-
) )
&'( &'(
& &
!&'( !&'(
!) !)
!) !&'( & &'( ) !) !&'( & &'( )
Figura 17.16. Modos de vibração para placa SCSC, h/a = 0.01, elemento Q4,
15 × 15 (apenas os contornos)
75 B_b=zeros(5,3*nn);
76 B_b(1,nn+1:2*nn) = dNdx(:,1)’; B_b(2,2*nn+1:3*nn)= dNdx(:,2)’;
77 B_b(3,nn+1:2*nn) = dNdx(:,2)’; B_b(3,2*nn+1:3*nn)= dNdx(:,1)’;
78
79 % CORTE
80 B_s=zeros(5,3*nn);
81 B_s(4,1:nn) = dNdx(:,1)’; B_s(5,1:nn) = dNdx(:,2)’;
82 B_s(4,nn+1:2*nn) = N; B_s(5,2*nn+1:3*nn)= N;
83
84 % RIGIDEZ E MASSA NO PONTO DE QUADRATURA
85 K(indiceB,indiceB)=K(indiceB,indiceB)+B_b’*C_bending*B_b*W(q)*det(J0);
86
87 M(indice,indice)=M(indice,indice)+N*N’*thickness*rho*W(q)*det(J0);
88 M(indice+numnode,indice+numnode)=M(indice+numnode,indice+numnode)+...
89 N*N’*I*rho*W(q)*det(J0);
90 M(indice+2*numnode,indice+2*numnode)=M(indice+2*numnode,indice+2*numnode)+...
91 N*N’*I*rho*W(q)*det(J0);
17.12 Código MATLAB para exemplo de placa 317
eig = 1.092330699490 eig = 1.756645221669
1 1
0.5 0.5
0 0
!0.5 !0.5
!1 !1
!1 !0.5 0 0.5 1 !1 !0.5 0 0.5 1
0.5 0.5
0 0
!0.5 !0.5
!1 !1
!1 !0.5 0 0.5 1 !1 !0.5 0 0.5 1
Figura 17.17. Modos de vibração para placa CCCF, h/a = 0.1, elemento Q4,
15 × 15 (apenas os contornos)
92
93 % VECTOR DE CARGA NO PONTO DE QUADRATURA
94 % f(indice)=f(indice)+N*P*det(J0)*wt;
95
96 end
97 end
98
99 % MATRIZ DE RIGIDEZ (CORTE)
100 % quadratura de 1 ponto
101 Q=[0 0];
102 W=[4];
103
104 for e=1:numelem
105 indice=element(e,:);
106 indiceB=[ indice indice+numnode indice+2*numnode];
107 nn=length(indice);
108 for q=1:size(W,1)
318 17 Análise de vibrações livres
109 pt=Q(q,:);
110 wt=W(q);
111 xi=pt(1);
112 eta=pt(2);
113 % FUNCOES DE FORMA E DERIVADAS COORDENADAS NATURAIS
114 N=1/4*[ (1-xi)*(1-eta);(1+xi)*(1-eta);
115 (1+xi)*(1+eta);(1-xi)*(1+eta)];
116 dNdxi=1/4*[-(1-eta), -(1-xi);1-eta, -(1+xi);
117 1+eta, 1+xi;-(1+eta), 1-xi];
118 J0=node(indice,:)’*dNdxi;
119 invJ0=inv(J0);
120 dNdx=dNdxi*invJ0;
121 % [B]flexao
122 B_b=zeros(5,3*nn);
123 B_b(1,nn+1:2*nn) = dNdx(:,1)’; B_b(2,2*nn+1:3*nn)= dNdx(:,2)’;
124 B_b(3,nn+1:2*nn) = dNdx(:,2)’; B_b(3,2*nn+1:3*nn)= dNdx(:,1)’;
125 % [B]corte
126 B_s=zeros(5,3*nn);
127 B_s(4,1:nn) = dNdx(:,1)’; B_s(5,1:nn) = dNdx(:,2)’;
128 B_s(4,nn+1:2*nn) = N; B_s(5,2*nn+1:3*nn)= N;
129 %
130 K(indiceB,indiceB)=K(indiceB,indiceB)+B_s’*C_shear *B_s*W(q)*det(J0);
131 end
132 end
133
134 % BC
135 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
136 |xx==max(node(:,1))|yy==min(node(:,2)));
137 %next two lines: simply supported case
138 fixedNodeTX =find(yy==max(node(:,2))|yy==min(node(:,2)));
139 fixedNodeTY =find(xx==max(node(:,1))| xx==min(node(:,1)));
140
141 %next two lines: clamped case
142 %fixedNodeTX =fixedNodeW;
143 %fixedNodeTY =fixedNodeTX;
144
145 %next line: scsc case
146 %fixedNodeTX =find(xx==max(node(:,2))|xx==min(node(:,2)));
147 %fixedNodeTY=[];
148
149 %next 3 line3: cccf case
150 %fixedNodeW=find(yy==max(node(:,2))|xx==min(node(:,1))|yy==min(node(:,2)));
151 %fixedNodeTX =fixedNodeW;
152 %fixedNodeTY =fixedNodeTX;
153 dofs=[fixedNodeW;fixedNodeTX+numnode;fixedNodeTY+2*numnode]
154 activeDof=setdiff([1:3*numnode]’,[dofs]);
155 %
156 G=E0/2.6;
157 % V : mode shape
17.12 Código MATLAB para exemplo de placa 319
158 % D : frequency
159 %
160 activeDof=setdiff([1:3*numnode]’, ...
161 [fixedNodeW;fixedNodeTX+numnode;fixedNodeTY+2*numnode]);
162 [V,D] = eig(K(activeDof,activeDof),M(activeDof,activeDof));
163 D = diag(sqrt(D)*L*sqrt(rho/G));
164 [D,ii] = sort(D); ii = ii(1:numberOfModes); VV = V(:,ii);
165 activeDofW=setdiff([1:numnode]’,[fixedNodeW]);NNN=size(activeDofW);
166 %
167 VVV(1:numnode,1:numberOfModes)=0;
168 for i=1:numberOfModes
169 VVV(activeDofW,i)=VV(1:NNN,i);
170 end
171 %
172 NN=numnode;N=sqrt(NN);
173 x=linspace(-L,L,numx+1);
174 y=linspace(-L,L,numy+1);
175 % desenho de modos de vibracao
176 figure
177 [xx,yy] = meshgrid(x,y);
178 fine = -1:.02:1;
179 [xxx,yyy] = meshgrid(fine,fine);
180 uu = zeros(NN,NN);
181 [ay,ax] = meshgrid([.56 .04],[.1 .5]);
182 for i = 1:4
183 uu = reshape(VVV(1:NN,i),N,N);
184 uu = uu/norm(uu(:),inf);
185 uuu = interp2(xx,yy,uu,xxx,yyy,’cubic’);
186 subplot(’position’,[ax(i) ay(i) .38 .38])
187 contour(fine,fine,uuu,-0.9:.2:.9)
188 colormap(1e-6*[1 1 1]); axis square
189 title([’eig = ’ num2str(D(i),’%18.12f’)])
190 end
191 %
192 figure
193 [xx,yy] = meshgrid(x,y);
194 fine = -1:.02:1;
195 [xxx,yyy] = meshgrid(fine,fine);
196 uu = zeros(NN,NN);
197 [ay,ax] = meshgrid([.56 .04],[.1 .5]);
198 for i = 5:8
199 uu = reshape(VVV(1:NN,i),N,N);
200 uu = uu/norm(uu(:),inf);
201 uuu = interp2(xx,yy,uu,xxx,yyy,’cubic’);
202 subplot(’position’,[ax(i-4) ay(i-4) .38 .38])
203 contour(fine,fine,uuu,-0.9:.2:.9)
204 colormap(1e-6*[1 1 1]); axis square
205 title([’eig = ’ num2str(D(i),’%18.12f’)])
206 end
320 17 Análise de vibrações livres
207 %
208 figure
209 [xx,yy] = meshgrid(x,y);
210 fine = -1:.02:1;
211 [xxx,yyy] = meshgrid(fine,fine);
212 uu = zeros(NN,NN);
213 [ay,ax] = meshgrid([.56 .04],[.1 .5]);
214 for i = 9:12
215 uu = reshape(VVV(1:NN,i),N,N);
216 uu = uu/norm(uu(:),inf);
217 uuu = interp2(xx,yy,uu,xxx,yyy,’cubic’);
218 subplot(’position’,[ax(i-8) ay(i-8) .38 .38])
219 contour(fine,fine,uuu,-0.9:.2:.9)
220 colormap(1e-6*[1 1 1]); axis square
221 title([’eig = ’ num2str(D(i),’%18.12f’)])
222 end
223 %
224 figure
225 % Reshape them to 2D grid, interpolate to finer grid, and plot:
226 [xx,yy] = meshgrid(x,y);
227 fine_x = -1:.02:1;fine_y = -1:.02:1; [xxx,yyy] = meshgrid(fine_x,fine_y);
228 uu = zeros(NN,NN);
229 [ay,ax] = meshgrid([.56 .04],[.1 .5]); clf
230 for i = 1:4
231 uu = reshape(VVV(1:NN,i),N,N);
232 uu = uu/norm(uu(:),inf);
233 uuu = interp2(xx,yy,uu,xxx,yyy,’cubic’);
234 subplot(2,2,i)
235 meshc(xxx,yyy,uuu)
236 title([’eig = ’ num2str(real(D(i)),’%18.12f’)])
237 end
7 rho=1;
8 % geometria
9 L = 1; % lado
10 thickness=0.01;
11 I=thickness^3/12;
12 P=-1;
13 % correcao de corte
14 kapa=0.8601; % cccc / cccf
15 %kapa=0.822; % scsc
16 kapa=5/6; % ssss
17 numy = 10; % # elementos em xx
18 numx = 10; % # elementos em xx
19 %malha
20 [node, element] = MalhaRectangular(L, L, numx, numy);
21 figure
22 plot_mesh(node,element,’Q4’,’k’)
23 axis off
24 %
25 xx=node(:,1); yy=node(:,2);
26 numnode=size(node,1); % numero nos
27 numelem=size(element,1); % numero elementos
28 % matriz elasticidade (duas partes)
29 vh=E0*thickness^3/12/(1-nu0^2)*[1 nu0 0; nu0 1 0; 0 0 (1-nu0)/2];
30 vhc=kapa*E0/2/(1+nu0)*thickness*[1 0; 0 1];
31 %
32 disp([num2str(toc),’ dados ’])
33 U=zeros(3*numnode,1); % vector de deslocamentos nodais
34 f=zeros(3*numnode,1); % vector de carga externa
35 K=sparse(3*numnode,3*numnode); % matriz de rigidez
36 M=sparse(3*numnode,3*numnode); % matriz de rigidez
37
38 % rigidez
39 % quadratura
40 ih=3;ihc=2;
41 pg=.577350269189626; pg1=-.577350269189626;
42 vpg=[pg1,pg,pg,pg1;pg1,pg1,pg,pg];vwg=[1 1 1 1];
43
44 for e=1:numelem
45 indice=element(e,:);
46 indiceB=[ indice(1)*3-2 indice(1)*3-1 indice(1)*3 ...
47 indice(2)*3-2 indice(2)*3-1 indice(2)*3 ...
48 indice(3)*3-2 indice(3)*3-1 indice(3)*3 ...
49 indice(4)*3-2 indice(4)*3-1 indice(4)*3];
50 nn=length(indice);
51
52 vcore(1:2:7)=node(indice,1);
53 vcore(2:2:8)=node(indice,2);
54 %
55 [vjnx,vjny]=jacnd4(vcore) ;
17.13 Elemento Q4γ 323
56 vke=zeros(12);
57 for ig=1:4 % ponto de gauss
58 [vn,vksi,veta] =nq4(vpg(1,ig),vpg(2,ig)) ;
59 [vji,detj] =jac2d(vksi,veta,vcore) ;
60 [vb,vbc] =bq4gam(vji,vksi,veta,vjnx,vjny) ;
61 %
62 K(indiceB,indiceB)=K(indiceB,indiceB)+vb’*vh*detj*vwg(ig)*vb;
63 K(indiceB,indiceB)=K(indiceB,indiceB)+vbc’*vhc*detj*vwg(ig)*vbc;
64 %
65 f(indice*3-2)=f(indice*3-2)+vn*P*detj*vwg(ig);
66 %
67 M(indice*3-2,indice*3-2)=M(indice*3-2,indice*3-2)+...
68 vn*vn’*thickness*rho*detj*vwg(ig);
69 M(indice*3-1,indice*3-1)=M(indice*3-1,indice*3-1)+...
70 vn*vn’*I*rho*detj*vwg(ig);
71 M(indice*3,indice*3)=M(indice*3,indice*3)+...
72 vn*vn’*I*rho*detj*vwg(ig);
73 end % ponto de gauss
74 end
75
76 %noCentral=find(node(:,1)==L/2 & node(:,2)==L/2);
77 %f(noCentral*3-2)=-1.0;
78
79 % BC
80
81 fixedNodeW =find(yy==max(node(:,2))|xx==min(node(:,1))...
82 |xx==max(node(:,1))|yy==min(node(:,2)));
83
84 %next two lines: simply supported case
85 fixedNodeTX =find(yy==max(node(:,2))|yy==min(node(:,2)));
86 fixedNodeTY =find(xx==max(node(:,1))| xx==min(node(:,1)));
87
88 %next two lines: clamped case
89 %fixedNodeTX =fixedNodeW;
90 %fixedNodeTY =fixedNodeTX;
91
92 dofs=[fixedNodeW*3-2;fixedNodeTX*3-1;fixedNodeTY*3];
93 activeDof=setdiff([1:3*numnode]’,[dofs]);
94
95 U=K(activeDof,activeDof)\f(activeDof);
96 U1=zeros(3*numnode,1);
97 U1(activeDof)=U;
98
99 figure
100 plot3(xx,yy,U1(1:3:3*numnode),’.’)
101 format long
102 D1=E0*thickness^3/12/(1-nu0^2);
103 %min(U1(1:3:3*numnode))*D1/L^2
104 min(U1(1:3:3*numnode))*D1/L^4
324 17 Análise de vibrações livres
105 %
106 numberOfModes=24;
107 G=E0/2.6;
108 % VV : mode shape
109 % D : frequency
110 [V,D] = eigs(K(activeDof,activeDof),M(activeDof,activeDof),numberOfModes,0);
111 D = diag(sqrt(D)*L*sqrt(rho/G));
112 [D,ii] = sort(D); ii = ii(1:numberOfModes); VV = V(:,ii);
113 D(1:10)
2 colordef white
3 tic
4 % propriedades material
5 E0 = 10920; % mdulo Young
6 nu0 = 0.30; % coef. Poisson
7 rho=1;
8 % geometria
9 L = 1; % lado
10 thickness=0.01;
11 I=thickness^3/12;
12 P=-1;
13 % malha
14 numy = 20; % # elementos em xx
15 numx = 20; % # elementos em xx
16 %malha
17 nnx=numx+1;
18 nny=numy+1;
19 node=square_node_array([0 0],[L 0],[L L],[0 L],nnx,nny);
20
21 node_pattern1=[ 1 2 nnx+1 ];
22 node_pattern2=[ 2 nnx+2 nnx+1 ];
23 inc_u=1;
24 inc_v=nnx;
25
26 element=[make_elem(node_pattern1,numx,numy,inc_u,inc_v);
27 make_elem(node_pattern2,numx,numy,inc_u,inc_v) ];
28 %
29 xx=node(:,1); yy=node(:,2);
30 numnode=size(node,1); % numero nos
31 numelem=size(element,1); % numero elementos
32 % matriz elasticidade (duas partes)
33 vh=E0*thickness^3/12/(1-nu0^2)*[1 nu0 0; nu0 1 0; 0 0 (1-nu0)/2];
34 %
35 disp([num2str(toc),’ dados ’])
36 U=zeros(3*numnode,1); % vector de deslocamentos nodais
37 f=zeros(3*numnode,1); % vector de carga externa
38 K=sparse(3*numnode,3*numnode); % matriz de rigidez
39 M=sparse(3*numnode,3*numnode); % matriz de rigidez
40
41 % rigidez
42 % quadratura
43 ih=3;ihc=2;
44 pg= .166666666666666;
45 pg1= .666666666666666;
46 vpg=[pg ,pg1 ,pg;pg ,pg ,pg1];vwg=[pg pg pg];
47 idle=9;ike=81;innel=3;ipg=3;ih=3;
48
49 for e=1:numelem
50 indice=element(e,:);
326 17 Análise de vibrações livres
100
101 U=K(activeDof,activeDof)\f(activeDof);
102 U1=zeros(3*numnode,1);
103 U1(activeDof)=U;
104
105 figure
106 plot3(xx,yy,U1(1:3:3*numnode),’.’)
107 format long
108 D1=E0*thickness^3/12/(1-nu0^2);
109 %min(U1(1:3:3*numnode))*D1/L^2
110 min(U1(1:3:3*numnode))*D1/L^4
111 %
112 G=E0/2.6;
113 % V : mode shape
114 % D : frequency
115 [V,D] = eigs(K(activeDof,activeDof),M(activeDof,activeDof),24,0);
116 D = diag(sqrt(D)*L*sqrt(rho/G));
117 [D,ii] = sort(D);
118 D(1:10)
27
28
A
Conceitos básicos de MATLAB
A.1 Introdução
O MATLAB 1 é uma ferramenta de programaçãao interactiva baseada em
cálculo matricial. Foi desenvolvida pela MathWorks para cálculo cientifico e
apoio a engenharia.
Pretende-se neste capı́tulo ilustrar algumas das capacidades do MATLAB.
Sugere-se a consulta de livros de MATLAB e de consulta ao (muito útil) help
do MATLAB.
A.2 Matrizes
Talvez o elemento mais importante do MATLAB seja a matriz rectangular,
onde os vectores são considerados como matrizes linha ou coluna e os escalares
como matrizes 1 × 1.
As matrizes podem ser introduzidas em MATLAb de várias formas:
• por uma lista de elementos
• por funções ou expressões do próprio MATLAB
• por valores vindos de ficheiros externos
Considere-se o ambiente de trabalho, na janela MATLAB ilustrada na figura
A.1.
Seja, a tı́tulo de exemplo, a expressão A = [1 2 3; 4 5 6; 7 8 9], que
produzirá a matriz 3 por 3, sendo a esta matriz afectada a variável A. Note-se
que se pode separar os elementos duma linha por espaço, mas deve colocar-se
o ponto e vı́rgula para mudar de linha.
>> A = [1 2 3; 4 5 6; 7 8 9]
1
MATLAB é uma marca registada da The MathWorks, Inc., USA
332 A Conceitos básicos de MATLAB
A =
1 2 3
4 5 6
7 8 9
>>
Note-se também que os elementos das matrizes podem ser complexos, o que
não será aqui abordado, dada a sua irrelevância na maior parte das aplicações
de elementos finitos (senão mesmo em todas). Caso existam valores tabela-
dos num file externo, digamos dados.dat, o comando load dados.dat faz a
leitura de todos os valores e poderá colocá-los na variável que se entender útil.
Podem criar-se matrizes directamente usando algumas das matrizes já in-
cluidas no MATLAB, por exemplo, pelas funções rand ou hilb. O comando
rand(n) produz uma matriz de dimensão n com elementos gerados de forma
aleatória, como se pode ver a seguir
>> rand(3)
ans =
>>
>> rand(2,3)
ans =
>>
>> hilb(3)
ans =
ans =
1 4 9
>> [1,2,3].^2
ans =
1 4 9
a =
3
>> 3
ans =
>> ans*4
ans =
12
Note-se que o eco para o écran poderá ser suprimido se se colocar no final
da expressão o ponto e vı́rgula. Podemos ainda colocar várias expressões numa
mesma linha, desde que separadas por ponto e vı́rgula.
A.5 Funções de construção de matrizes 335
>> a=3;b=cos(10);c=20;
>>
O MATLAB é ”case-sensitive”, ou seja as variáveis a e A são interpretadas
distintamente.
Alguns comandos importantes são o who e whos que listam as variáveis no
espaço de trabalho,
>> who
A a ans b c
>>
Podemos apagar todas as variáveis (não permanentes) do espaço de trabalho,
fazendo clear all ou apagar apenas uma dada variável, fazendo clear A,
por exemplo.
A variável permanente eps dá-nos uma ideia do ”roundoff”da máquina, o
que pode ser interessante para estudos de tolerância, por exemplo, em proces-
sos iterativos. Na máquina que produziu este texto (um ibook de 12 polega-
das), aparece
>> eps
ans =
2.2204e-16
>>
Pode-se parar o cálculo fazendo CTRL-C ou maçã-C (no MAC).
Example:
x = eye(2,3,’int8’);
>>
Alguns exemplos do que foi aqui apresentado:
>> eye(3)
ans =
1 0 0
0 1 0
0 0 1
>> diag(eye(3))
ans =
1
1
1
>> magic(4)
ans =
A.5 Funções de construção de matrizes 337
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
>> ones(3,2)
ans =
1 1
1 1
1 1
>>
Podemos construir matrizes por blocos, por exemplo
B =
1 2 3 0 0
4 5 6 0 0
7 8 9 0 0
0 0 0 1 1
0 0 0 1 1
>>
A.5.1 For/End
x =
x =
1 4
338 A Conceitos básicos de MATLAB
x =
1 4 9
x =
1 4 9 16
e agora em ordem inversa
>> x = []; for i = 4:-1:1, x=[x,i^2], end
x =
16
x =
16 9
x =
16 9 4
x =
16 9 4 1
H =
>>
A.5 Funções de construção de matrizes 339
While.
A forma geral do ciclo while é while relação expressões end
As expressões são executadas repetidamente enquanto a relação for verdadeira.
Por exemplo, para um dado número a, o código a seguir indicado calcula e mostra
o menor inteiro não negativo n tal que 2n ≥ a:
n = 0; while 2n < a n = n + 1; end n
com o resultado
>> n = 0;
while 2^n < a
n = n + 1;
end
n
n =
If.
A forma geral da expressão if é if relação expressões end As expressões serão
executadas apenas se a relação for verdadeira. Podemos ter ciclos if dentro de
outros, por exemplo
if n < 0 parity = 0; elseif rem(n,2) == 0 parity = 2; else parity = 1;
end
relações.
Os operadores relacionais em MATLAB são
< menor que
> maior que
<= menor ou igual a
>= maior ou igual a
== igual
∼= diferente.
Note-se a diferença entre a igualdade “=” e a igualdade de relação “==” . As relações
podem ainda ser quantificadas pelos operadores lógicos
& e
| ou
∼ não.
As relações produzem o valor 0 ou 1, quando aplicados a escalares, como por
exemplo
ans =
1
340 A Conceitos básicos de MATLAB
ans =
ans =
a =
b =
ans =
1 1 1 1 1
0 1 1 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
sin asin exp abs round cos acos log (log natural) sqrt floor tan atan rem
(resto) sign ceil
>> A
A =
1 2 3
4 5 6
7 8 9
>> max(max(A))
ans =
>> max(A)
ans =
7 8 9
>>
y =
16.1168
-1.1168
-0.0000
produzindo um vector coluna com os valores próprios de A enquanto que
[U,D] = eig(A)
U =
D =
16.1168 0 0
0 -1.1168 0
0 0 -0.0000
produz uma matriz U cujas colunas são os vectores próprios de A e uma matriz
diagonal D com os valores próprios de A na sua diagonal.
A.9 Submatrizes 343
A.9 Submatrizes
Em MATLAB é possivel manipular os vectores e submatrizes, por forma a conseguir
ganhos de computação ou compactação de código. Por exemplo, a expressão 1:5
produz o vector [1 2 3 4 5]. Esta vectorização é altamente eficiente e não necessita
de usar apenas inteiros, como por exemplo 0.2:0.2:1.2 que produz [0.2, 0.4,
0.6, 0.8, 1.0, 1.2], e 5:-1:1 que produz [5 4 3 2 1]. A expressão seguinte
produz uma tabela de senos:
>> x = [0.0:0.5:2.0]
y = sin(x);
[x’ y’]
x =
ans =
0 0
0.5000 0.4794
1.0000 0.8415
1.5000 0.9975
2.0000 0.9093
>> x=A(2,:)’
x =
4
5
6
>> x = x(end:-1:1)
x =
344 A Conceitos básicos de MATLAB
6
5
4
A.10 M-files
O MATLAB pode executar uma sequência de expressões guardadas em ficheiros, que
terminam em ”.m”. Existem dois grandes tipos de M-files, os scripts e as functions.
Scripts.
Um ficheiro de scripts consiste numa sequência normal de comandos, que são
executados uns atrás dos outros, com variáveis globais. Uma M-file pode chamar
um conunto de outras M-files, tornando assim a programação muito organizada.
Como exemplo veja-se o file1.m, que tem o seguinte conjunto de instruções
% exemplo de m-file
a=1
b=a*3
produzindo o resultado
a =
b =
Functions.
As funções são ficheiros que contém subrotinas, funções que são usadas várias
vezes num programa ou simplesmente para tornar o programa mais legı́vel.
Note-se que as variáveis numa função são locais. Podem ser no entanto tornadas
globais.
Veja-se o seguinte exemplo
We first illustrate with a simple example of a function file.
>> [a,b,c]=antonio(2,3,4)
a =
1.0000 0.5000
0.5000 0.3333
b =
8 1 6
3 5 7
4 9 2
c =
1 0 0 0
0 1 0 0
Note-se que se pode omitir alguns dos parâmetros de saı́da, por exemplo
>> [a,b]=antonio(2,3,4)
a =
1.0000 0.5000
0.5000 0.3333
b =
8 1 6
3 5 7
4 9 2
O simbolo % indica que o resto da linha é um comentário e não representa
instruções para serem executadas.
Quando são chamados, estes formatos mantém-se até que apareça outro.
A.12 Gráficos
Gráficos 2D.
O comando plot cria gráficos x-y lineares, desde que x e y sejam vectores da
mesma dimensão, como por exemplo x = -4:.01:4; y = sin(x); plot(x,y),
que produz a figura A.2
0.8
0.6
0.4
0.2
!0.2
!0.4
!0.6
!0.8
!1
!4 !3 !2 !1 0 1 2 3 4
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
!1.5 !1 !0.5 0 0.5 1 1.5
0.8
0.6
0.4
0.2
!0.2
!0.4
!0.6
!0.8
!1
!1 !0.8 !0.6 !0.4 !0.2 0 0.2 0.4 0.6 0.8 1
0.8
0.6
0.4
0.2
!0.2
!0.4
!0.6
!0.8
!1
0 1 2 3 4 5 6 7
O comando hold on congela a figura actual até que novos gráficos possam ser
sobrepostos neste.
Podemos ainda modificar linhas, cores, pontos etc, por exemplo (figura A.6
x=0:.01:2*pi; y1=sin(x); y2=sin(2*x); y3=sin(4*x);
plot(x,y1,’--’,x,y2,’:’,x,y3,’+’)
A linhas e marcas podem ser construidas por
linhas: solido (-), tracejado (--). pontilhado (:), traço ponto (-.) marcas: ponto
(.), mais (+), estrela (*), cı́rculo (o), marca x(x)
Podemos ainda especificar as cores para as linhas ou marcas, fazendo
Cores: amarelo (y), castanho (m), vermelho (r) verde (g), azul (b), branco (w),
preto (k)
A.12 Gráficos 349
0.8
0.6
0.4
0.2
!0.2
!0.4
!0.6
!0.8
!1
0 1 2 3 4 5 6 7
Outras funções para desenhar gráficos são via help are: polar, bar, hist,
quiver, compass, feather, rose, stairs, fill
Na figura A.9 ilustra-se o efeito dos comandos
t = 0:.01:2*pi;
polar(t,sin(2*t).*cos(2*t),’--r’)
5.5
4.5
3.5
3
1 1.5 2 2.5 3 3.5 4
4.5
3.5
2.5
1 1.5 2 2.5 3 3.5 4
6 5
5.5 4.5
5
4
4.5
3.5
4
3.5 3
3 2.5
1 2 3 4 1 2 3 4
5 5
4.5 4.5
4 4
3.5 3.5
3 3
2.5 2.5
1 2 3 4 1 2 3 4
90
0.5
120 60
0.4
0.3
150 30
0.2
0.1
180 0
210 330
240 300
270
0
1 2 3 4 5 6 7 8 9 10
0.5
0
!0.2 0 0.2 0.4 0.6 0.8 1 1.2
0.5
0
1 2
Gráficos 3-D.
da mesma forma que o comando plot produz gráficos em duas dimensões, o co-
mando plot3 produz curvas em três dimensões, tendo em conta x, y, e z vectores de
idêntica dimensão. Estes vectores podem ser definidos parametricamente, conforme
os comandos
5
x 10
2.5
1.5
0.5
0
1
0.5 1
0 0.5
0
!0.5
!0.5
!1 !1
0.8
0.6
0.4
0.2
0
10
8 10
6 8
4 6
4
2 2
0 0
0.8
0.6
0.4
0.2
0
10
8 10
6 8
4 6
4
2 2
0 0
0.8
0.6
0.4
0.2
0
25
20 25
15 20
10 15
10
5 5
0 0
F =
5 2 0
8 0 2
0 4 9
T =
(1,1) -2
(2,1) 1
(1,2) 1
(2,2) -2
(3,2) 1
(2,3) 1
(3,3) -2
(4,3) 1
(3,4) 1
(4,4) -2
(5,4) 1
(4,5) 1
(5,5) -2
(6,5) 1
(5,6) 1
(6,6) -2
>> full(T)
ans =
356 A Conceitos básicos de MATLAB
-2 1 0 0 0 0
1 -2 1 0 0 0
0 1 -2 1 0 0
0 0 1 -2 1 0
0 0 0 1 -2 1
0 0 0 0 1 -2
Análogamente aos comandos eye, zeros, ones, and randn para matrizes densas,
para matrizes esparsas existem os comandos speye, sparse, spones, sprandn.
O comando sparse(m,n) cria uma matriz esparsa nula.
A.14 Referência
Algumas funções tipicas que se podem usar no MATLAB.
Gestão de variáveis
who lista variáveis correntes
whos lista variáveis correntes, forma longa
save guarda variáveis para disco
load recupera variáveis do disco
clear apaga variáveis e funções da memória
pack consolida a memória
size tamanho de uma matriz
length comprimento de um vector
disp mostra matriz ou texto
Gestão de ficheiros
cd muda o directório corrente
pwd mostra o directório corrente
dir, ls listagem do directório corrente
delete apaga ficheiro
getenv recupera variável do ambiente
diary guarda texto da sessão MATLAB
A.14 Referência 357
Caracteres especiais
= comando de afectação
[] usado para formar vectores e matrizes
, separa comandos e funções
; final de linhas ou supressão de impressão
% comentários
: geração de vectores
Variáveis especiais
ans resposta quando expressão não é afectada
eps precisão de vı́rgula flutuante
realmax maior número de vı́rgula flutuante
reammin menor número positivo de vı́rgula flutuante
pi π
i, j imaginários
inf infinito
NaN ”Not-a-Number”
flops contador de operações de vı́rgula flutuante
nargin número de argumentos de entrada de funções
nargout número de argumentos de saı́da de funções
computer tipo de computador
358 A Conceitos básicos de MATLAB
Tempo e data
date data corrente
clock informação de relógio
tic, toc funções de controlo do tempo entre operações
cputime tempo de CPU
Matrizes especiais
zeros matriz de zeros
ones matriz de uns
eye identitdade
diag diagonal
toeplitz Toeplitz
magic quadrada ”magic”
linspace vectores linearmente espaçadas
logspace vectores espaçados logaritmicamente
meshgrid matrizes para gráficos 3-D
rand números aleatórios uniformemente distribuidos
randn normally distributed randon numbers
hilb Hilbert
invhilb Hilbert inversa
vander Vandermonde
pascal Pascal
hadamard Hadamard
hankel Hankel
rosser matriz de teste para valores próprios simétricos
wilkinson matriz de teste para valores próprios de Wilkinson
gallery duas matrizes de teste pequenas
Manipulação de matrizes
diag cria ou extrai diagonais
rot90 roda a matriz 90 graus
fliplr muda a matriz da esquerda para a direita
flipud muda a matriz de cima para baixo
reshape mudar tamanho
tril matriz triangular inferior
triu matriz triangular superior
.’ transposta
: converte matriz para coluna simples; A(:)
A.14 Referência 359
Funções lógicas
exist verifica se as funções ou variáveis existem
any verdadeiro se algum elemento do vector verificar
all verdadeiro se todos os elementos do vector verificarem
find encontra indices dos elementos não nulos
isnan verdadeiro para NaNs
isinf verdadeiro para elementos infinitos
finite verdadeiro para elementos finitos
isempty verdadeiro para matriz vazia
issparse verdadeiro para matriz esparsa
isstr verdadeiro para variável de texto
strcmp compara variáveis de texto
Controle do fluxo
if comandos de execução de condições
else usado com if
elseif usado com if
end termina if, for, while
for repete comandos um determinado número de vezes
while repete comandos enquanto a condição for verdadeira
break termina a execução de ciclos for ou while
return retorno da função invocada
error mostra mensagem e aborta função
Funções trigonométricas
sin, asin, sinh, asinh seno, arco de seno, seno hiperbólico, arco de seno hiperbólico
cos, acos, cosh, acosh coseno, arco de coseno, coseno hiperbólico, arco de seno hiperbólico
tan, atan, tanh, atanh tangente, arco de tangente, tangente hiperbólica, arco de tangente hiperbólica
cot, acot, coth, acoth cotangente, arco de cotangente, cotangente hiperbólica, arco de cotangente hiperbólica
sec, asec, sech, asech secante, arco de secante, secante hiperbólica, arco de secante hiperbólica
csc, acsc, csch, acsch cosecante, arco de cosecante, cosecante hiperbólica, arco de cosecaante hiperbólica
Funções especiais
bessel função bessel
beta função beta
gamma função gamma
rat aproximação racional
rats saı́da racional
erf função de erro
erfinv função de erro inversa
ellipke integral eliptico completo
ellipj integral eliptico Jacobiano
expint integral exponencial
Condicionamento de matriz
cond número de condicionamento na 2-norm
norm normas 1-norm,2-norm,F-norm,∞-norm
rank caracteristica
A.14 Referência 361
Polinómios
poly constrói polinómio com raizes especificas
roots raı́zes polinomiais
roots1 raı́zes polinomiais — método de Laguerre
polyval calcula o polinómio
conv multiplica polinómios
deconv divide polinómios
residue resı́duos
polyfit ajustar polinómios aos dados
polyder derivação de polinómios
87. Dhatt, G. and Touzot, G. The Finite Element Method Displayed, 1984
88. Rao, S. S. The Finite Element Method in Engineering, 1982, 1989
89. Lewis, R. W. and Schrefler, B. A. The Finite Element Method in the Deforma-
tion and Consolidation of Porous Media, 1987
90. Hsu, T. R. The Finite Element Method in Thermodynamics, 1986
91. Kwon, Y. W. and Bang, H. The Finite Element Method Using MATLAB, 1996,
2000
92. Kleiber, M. and Hien, T. D. The Stochastic Finite Element Method, Basic Per-
turbation Technique and Computer Implementation, 1992
93. Beltzer, A. I. Variational and Finite Element Methods, A Symbolic Computation
Approach, 1990
94. P. A. A. Laura and R. H. Gutierrez, Analysis of vibrating Timoshenko beams
using the method of differential quadrature, Shock and Vibration, 1 (1) (1993),
89–93.
95. C. W. Bert and M. Malik, Differential quadrature method in computational
mechanics: a review, Applied Mechanics Review, 49 (1) (1996), 1–28.
96. K. M. Liew, J. B. Han and Z. M. Xiao, Vibration analysis of circular Mindlin
plates using differential quadrature method, Journal of Sound and Vibration,
205 (5) (1997), 617–630.
97. K. M. Liew, K. C. Hung and M. K. Lim, Vibration of Mindlin plates using
boundary characteristic orthogonal polynomials, Journal of Sound and Vibra-
tion, 182 (1) (1995), 77–90.
98. K. Bathe, Finite Element Procedures in Engineering Analysis, Prentice-Hall,
Englewood Cliffs, New Jersey, 1982.
99. W. Weaver and P. Johnson, Structural Dynamics by Finite Elements, Englewood
Cliffs, New Jersey, 1987.
100. J. N. Reddy, Introduction to the Finite Element Method, McGraw-Hill, New
York, 1993.
101. A. J. M. Ferreira, Free vibration analysis of Timoshenko beams and Min-
dlin plates by radial basis functions, International Journal of Computational
Methods, Vol. 2 (1), 2005, 15-31.
102. A. J. M. Ferreira, C. M. C. Roque and P. A. L. S. Martins, Radial basis
functions and higher-order theories in the analysis of laminated composite beams
and plates, Composite Structures, 66 (2004), 287–293.
103. A. J. M. Ferreira, A formulation of the multiquadric radial basis function
method for the analysis of laminated composite plates, Composite Structures,
59 (2003), 385–392.
104. A. J. M. Ferreira, C. M. C. Roque and P. A. L. S. Martins, Analysis of com-
posite plates using higher-order shear deformation theory and a finite point for-
mulation based on the multiquadric radial basis function method, Composites:
Part B, 34 (2003), 627–636.
105. A. J. M. Ferreira, Thick composite beam analysis using a global meshless ap-
proximation based on radial basis functions, Mechanics of Advanced Materials
and Structures, 10 (2003), 271–284.
106. L.N. Trefethen, Spectral Methods in Matlab, SIAM, Philadelphia, PA, (2000).
107. D. J. Dawe and O. L. Roufaeil, Rayleigh-Ritz vibration analysis of Mindlin
plates, Journal of Sound and Vibration, 69 (3) (1980), 345–359.
108. K. M. Liew, J. Wang, T. Y. Ng and M. J. Tan, Free vibration and buckling
analyses of shear-deformable plates based on FSDT meshfree method, Journal
of Sound and Vibration, 276 (2004), 997–1017.
Referências 367
109. E. Hinton, Numerical methods and software for dynamic analysis of plates and
shells, Pineridge Press, Swansea, (1988).
110. R. J. Melosh, A stiffness matriz for the analysis of thin plates in bending, J.
of Aerospace Science, 28 (1) (1961), 34-42
111. O. C. Zienkiewicz, Y. K. Cheung, The finite element method for analysis of
elastic isotropic and anisotropic slabs, Proc. Inst. Civ. Eng., 28 (1964), 471-488
112. F. K. Bogner, R. L. Fox, L. A. Schmidt, The generation of interelement com-
patible stiffness and mass matrices by the use of interpolation formulae, Proc.
Conf. Matrix Methos in Struct. Mech., Air Force Inst. of Tech., Wright Patterson
A. F. Base, Ohio, 1965
113. G. P. Bazeley, Y. K. Cheung, B. M. Irons, O. C. Zienkiewicz, triangular ele-
ments bending-conforming and non conforming solution, Proc. Conf. Matrix
Methos in Struct. Mech., Air Force Inst. of Tech., Wright Patterson A. F. Base,
Ohio, 1965
114. T. J. R. Hughes, M. Cohen, The Heterosis finite element for plate bending,
Computers and structures, 9 (1978), 445-450
115. K. J. Bathe, E. N. Dvorkin, A four-node plate bending element based on
Mindlin-Reissner plate theory and a mixed interpolation, International Jour-
nal of Numerical Methods in Engineering, 21 (1985), 367-383
116. K. J. Bathe, E. N. Dvorkin, A formulation of general shell elements - the use of
mixed interpolation of tensorial components, International Journal of Numerical
Methods in Engineering, 22 (1986), 697-722
117. J. L. Batoz, G. Dhatt, Modelisation des Structures par Elements Finis, Hermés,
1990
118. G. Prathap, B. R. Somashekar, Field- and edge-consistency synthesis of a 4-
noded quadrilateral plate bending element, International Journal of Numerical
Methods in Engineering, 26 (1988), 1693-1708
119. T. J. R. Hughes, T. E. Tezduyar, Finite elements based upon Mindlin plate
theory with particular reference to the four-node bilinear isoparametric element,
Journal of applied mechanics, 48 (1986), 587-596
120. J. L. Batoz, K. J. Bathe, L. W. Ho, A study of three-node triangular plate
bending elements, International Journal of Numerical Methods in Engineering,
15 (1980), 1771-1812
121. B. Irons, S. Ahmad, Techniques of Finite Elements, Ellis Horwood, 1980
122. Finite Element Method- Linear Static and Dynamic Finite Element Analysis,
Prentice Hall, 1987
123. D. L. Logan, A First Course in the Finite Element Method, Brooks/Cole, 2002
124. A. J. M. Ferreira, Analysis of composite plates using a layerwise deforma-
tion theory and multiquadrics discretization, Mech. Adv. Mater. Struct., 12 (2),
(2005), 99-112.
125. A. J. M. Ferreira, R. C. Batra, C. M. C. Roque, L. F. Qian and P. A. L. S. Mar-
tins, Static analysis of functionally graded plates using third-order shear defor-
mation theory and a meshless method, Composite Structures, 69 (2005), 449–
457.
126. A. J. M. Ferreira, Tese de doutoramento, FEUP, 1997
127. A. J. M. Ferreira, C. M. C. Roque and P. A. L. S. Martins, Analysis of com-
posite plates using higher-order shear deformation theory and a finite point for-
mulation based on the multiquadric radial basis function method, Composites:
Part B, 34 (2003), 627–636.
368 Referências
2[
Índice
]
barra inclinada, 73
barras, 73
Galerkin, 89
galerkin, 36
grelhas, 115
Hermite, 90
Kirchhoff, 185
método de colocação, 37
método dos deslocamentos, 40
métodos variacionais, 29
módulo de corte, 191
matriz constitutiva, 186
matriz de deformação-deslocamento, 141
matriz de deformações, 207, 211
matriz de elasticidade de sólidos 3D, 208
matriz de massa, 48, 148
matriz de rigidez, 142, 158
matriz de rigidez de barra inclinada, 75
matriz de rigidez do elemento bidimensional, 145
matriz de rigidez do elemento de pórtico plano, 94
matriz jacobiana, 210
Mindlin-Reissner, 185, 190
minimos quadrados, 37
momentos flectores, 186
Índice 371
pórticos planos, 89
pesos de integração, 142
placa de Mindlin, 190, 191, 193
plano médio, 131
pontos de integração, 142
potencial, 29
princı́pio dos trabalhos virtuais, 40, 41, 43, 44, 47
problemas tridimensionais, 207
teorema da divergência, 45
tracções de superficie, 134
treliças, 73