MEF Aplicado à Dinâmica
Problemas de dinâmica estrutural são representados por equações do tipo:
[ ]
M
{ }
U
+
[ ]
C
{ }
U
+
[ ]{ } { }
K
U
=
F
com as condições iniciais:
0;
U
U
0U
V
=
=
dt
d
.
A matriz C é denominada matriz de amortecimento e as demais matrizes já foram definidas
anteriormente. Todo sistema mecânico linear tem seu comportamento dinâmico representado pela
equação acima.
Análise Modal
A análise modal permite calcular as freqüências de ressonância e modos de vibrar da
estrutura. Para isso, a estrutura é considerada em vibração livre sem levar em conta a matriz de
amortecimento, obtendo-se a equação:
[ ]
M
{ }
U
+
[ ]{ }
K
U
=
0
Substituindo
{ } { }
U
(
t
)
=
Y
e
iωte
i
=
−
1
obtém-se:
[ ]
M
( ) { }
i
ω
2Y
e
iωt+
[ ]
K
{ }
Y
e
iωt=
0
[
−
ω
2[ ] [ ]
M
+
K
]
{ }
Y
=
0
onde
ω
é denominado freqüência de ressonância e {Y} o modo de vibrar correspondente.
Quando o amortecimento é considerado utiliza-se a hipótese de Rayleigh:
[ ]
C
[ ]
M
[ ]
K
ω
β
αω
+
=
e a equação modal fica:
[ ]
M
{ }
U
+
[ ]
C
{ }
U
+
[ ]{ }
K
U
=
0
Substituindo
{ } { }
U
(
t
)
=
Y
e
iωte
i
=
−
1
obtém-se:
[ ] [ ]
[
K
+
i
β
K
]{ }
Y
=
ω
2[
[ ]
M
−
i
α
[ ]
M
]{ }
Y
A equação modal pode ser resolvida usando o comando apropriado no SCILAB ou
MATLAB. A seguir é apresentado um programa em MATLAB que calcula as freqüências de
ressonância e os modos de vibrar da viga mostrada na figura abaixo. O comando do MATLAB que
realiza a análise modal é o comando “
eig”.
%Construção do modelo de elementos finitos Nx = input('número de nós = ');
leng = input('comprimento da barra = '); EI = 1; A = 1; Row = 1; Row = Row * A; Nelx = Nx - 1; X= [ ]; for i = 1:Nx
X(i) = leng * (i - 1) / Nelx; end
%construindo a matriz de massa e rigidez SK = zeros (2 * Nx);
SM = zeros (2 * Nx); Ske = zeros (4); Sme = zeros (4); for Nel = 1:Nelx
L = X(Nel + 1) - X(Nel); i1 = Nel; i2 = Nel + 1; Ske(1,1) = 12*EI/L^3; Sme(1,1) = 13*L*Row/35; Ske(1,2) = 6 * EI / L ^ 2; Sme(1,2) = 11 * L ^2 * Row / 210; Ske(1,3) = -12 * EI / L ^ 3; Sme(1,3) = 9 * L * Row / 70; Ske(1,4) = 6 * EI / L ^ 2; Sme(1,4) = -13 * L ^2 * Row / 420; Ske(2,1) = 6 * EI / L ^ 2; Sme(2,1) = 11 * L ^2 * Row / 210; Ske(2,2) = 4 * EI / L; Sme(2,2) = L ^3 * Row / 105; Ske(2,3) = -6 * EI / L ^ 2; Sme(2,3) = 13 * L ^2 * Row / 420; Ske(2,4) = 2 * EI / L; Sme(2,4) = - (L^3*Row)/140; Ske(3,1) = -12 * EI / L ^ 3; Sme(3,1) = 9 * L * Row / 70; Ske(3,2) = -6 * EI / L ^ 2; Sme(3,2) = 13 * L ^2 * Row / 420; Ske(3,3) = 12 * EI / L ^ 3; Sme(3,3) = 13 * L * Row / 35; Ske(3,4) = -6 * EI / L ^ 2; Sme(3,4) = -11 * L ^2 * Row / 210; Ske(4,1) = 6 * EI / L ^ 2; Sme(4,1) = -13 * L ^2 * Row / 420; Ske(4,2) = 2 * EI / L; Sme(4,2) = - L ^3 * Row / 140; Ske(4,3) = -6 * EI / L ^ 2; Sme(4,3) = -11 * L ^2 * Row / 210;
Sme(4,4) = L ^3 * Row / 105;
SK(2*i1-1:2*i2,2*i1-1:2*i2)=SK(2*i1-1:2*i2,2*i1-1:2*i2)+Ske; SM(2*i1-1:2*i2,2*i1-1:2*i2)=SM(2*i1-1:2*i2,2*i1-1:2*i2)+Sme; end
%condições de contorno (suporte simples) SK(:,1)=zeros(2*Nx,1); SK(1,:)=zeros(1,2*Nx); SK (1,1)=1; SK(:,2*Nx-1)=zeros(2*Nx,1); SK(2*Nx-1,:)=zeros(1,2*Nx); SK(2*Nx-1,2*Nx-1)=1; SM(:,1)=zeros(2*Nx,1); SM(1,:)=zeros(1,2*Nx); SM(1,1)=1; SM(:,2*Nx-1)=zeros(2*Nx,1); SM(2*Nx-1,:)=zeros(1,2*Nx); SM(2*Nx-1,2*Nx-1)=1;
% Problema de autovalor. Os autovetores são normalizados de forma que a norma seja 1
[D,R]=eig(SK,SM)
%reescalando os autovetores tal que X'*SM*X=I for i = 1:2*Nx
valuei=D(:,i)'*SM*D(:,i); D(:,i)=D(:,i)/sqrt(valuei); end
%plota os modos de vibração for i = 1:2*Nx
i
xf = [ ]; Df = [ ]; ipx = 20;
for Nel = 1:Nelx
de(1) = D(2*Nel-1,i); de(2) = D(2*Nel,i); de(3) = D(2*Nel+1,i); de(4) = D(2*Nel+2,i); for ip = 1:ipx+1 L = X(Nel+1)-X(Nel); S= L*(ip-1)/ipx; N(1)=1-3*S^2/L^2+2*S^3/L^3; N(2)=S-2*S^2/L+S^3/L^2; N(3)=3*S^2/L^2-2*S^3/L^3; N(4)=-S^2/L+S^3/L^2; Df(ipx*(Nel-1)+ip)=de*N'; xf(ipx*(Nel-1)+ip)=X(Nel)+S; end end plot(xf,Df) title('autovetor') xlabel('D') ylabel('deflexao') pause end %**********************************************************************
Em softwares comerciais (como o ADINA ou ANSYS) é considerado também o efeito de
inércia da rotação da seção da viga. Esse efeito é representado pelo acréscimo de termos na matriz de
massa da viga que são função do “raio de giração” da seção. A dedução da inclusão desse efeito está
além do escopo desse curso, no entanto para o aluno poder comparar suas simulações utilizando a
rotina acima com as simulações realizadas no ADINA ou ANSYS, a matriz de massa do elemento de
viga na rotina acima deve ser alterada para:
[ ]
+
−
−
−
−
+
−
−
−
+
−
−
−
−
−
+
+
+
−
−
+
+
=
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 215
2
105
1
10
210
11
30
1
140
1
10
420
13
10
210
11
5
6
35
13
10
420
13
5
6
70
9
30
1
140
1
10
420
13
15
2
105
1
10
210
11
10
420
13
5
6
70
9
10
210
11
5
6
35
13
rg
L
L
rg
L
rg
L
L
rg
L
L
rg
L
L
rg
L
rg
L
L
rg
rg
L
L
rg
L
rg
L
L
rg
L
L
rg
L
L
rg
L
rg
L
L
rg
AL
eρ
M
onde:
A
I
Análise Transiente
A análise transiente consiste em encontrar a resposta da estrutura quando sujeita a um
carregamento que varia no tempo de forma não-periódica ,como por exemplo, uma pancada na
estrutura. Existem várias métodos para resolver esse problema, um dos mais usados são baseados no
método de diferenças finitas sendo chamados de métodos de integração direta. Entre os métodos de
integração direta o mais popular é o método de Newmark
β
.
Método Newmark
ββββ
Esse método é baseado na aproximação do deslocamento, velocidade e aceleração:
[ ]{ } [ ]{ } [ ]{ } { }
{ } { }
{ }
{
(
){ }
{ }
}
{ } { }
1{
(
){ } { }
1}
1 2 1 1 1 1 11
2
2
1
2
+ + + + + + + ++
−
∆
+
=
+
−
∆
+
∆
+
=
=
+
+
n n n n n n n n n n n n nt
t
t
a
a
v
v
a
a
v
d
d
f
d
K
v
C
a
M
γ
γ
β
β
Assim a aceleração no passo n+1 pode ser calculada como:
[ ]
{ }
[ ]
(
{ }
{
(
){ } { }
}
)
[ ]
{ }
{ }
{
(
){ }
{ }
} { }
[ ]
{ }
1{ }
1 1 1 2 1 1ˆ
ˆ
2
2
1
2
1
+ + + + + +=
=
+
−
∆
+
∆
+
+
+
+
−
∆
+
+
+
n n n n n n n n n n nt
t
t
f
a
M
f
a
a
v
d
K
a
a
v
C
a
M
β
β
γ
γ
onde:
[ ]
M
ˆ
=
[ ]
M
+
∆
t
γ
[ ]
C
+
∆
t
2β
[ ]
K
{ }
n+=
{ }
n+−
[ ]
(
{ }
n+
∆
(
−
){ }
n)
−
[ ]
{ }
n+
∆
{ }
n+
∆
(
−
){ }
nt
t
t
a
K
d
v
a
v
C
f
f
γ
1
2
β
2
1
ˆ
2 1 1Assim, calculando-se {an+1} obtém-se a velocidade {vn+1} e o deslocamento {dn+1}. Em n=0
utilizam-se as condições iniciais de velocidade e deslocamento
{ } { } { }
v
0=
v
0;
d
0=
{ }
d
0, e assumindo
que a equação dinâmica também seja satisfeita no início, obtém-se:
[ ]{ } [ ]{ } [ ]{ } { } { } [ ] { } [ ]{ } [ ]{ }
(
0 0 0)
1 0 0 0 0 0C
v
K
d
f
a
M
f
C
v
K
d
a
M
+
+
=
=
−−
−
•
Método da aceleração média constante:
{ }
[
{ } { }
1]
2
1
2
1
;
4
1
++
=
=
=
γ
a
a
na
nβ
•
Método da aceleração linear:
2
1
;
6
1
=
=
γ
β
•
Método Fox-Goodwin:
2
1
;
12
1
=
=
γ
β
•
Método de Diferença Central:
2
1
;
0
=
=
γ
β
Uma modificação do método Newmark
β
é o método
α
Método
αααα
Ao invés de usarmos:
[ ]
M
{ }
a
n+1+
[ ]
C
{ }
v
n+1+
[ ]
K
{ } { }
d
n+1=
f
n+1utiliza-se:
[ ]
M
{ } (
a
n+1+
1
+
α
)
[ ]
C
{ }
v
n+1−
α
[ ]
C
{ } (
v
n+
1
+
α
)
[ ]
K
{ }
d
n+1−
α
[ ]
K
{ } (
d
n=
1
+
α
){ } { }
f
n+1−
α
f
nonde:
α
β
(
α
)
γ
(
1
2
α
)
2
1
;
1
4
1
;
0
,
3
1
2−
=
−
=
−
∈
A seguir é apresentado um programa em MATLAB que realiza a análise transiente para a
viga mostrada na figura abaixo usando o método Newmark
β
. Viga tem comprimento 1.
%Construção do modelo de elementos finitos Nx = input('número de nós = ');
leng = input('comprimento da barra = '); EI = 1; A = 1; Row = 1; Row = Row * A; Nelx = Nx - 1; X= [ ]; for i = 1:Nx
X(i) = leng * (i - 1) / Nelx; end
tinterval = input ('tempo final = ');
nstep = input ('numero de passos de integração = '); beta = 0.25;
ganma = 0.5;
dt = tinterval / nstep;
%construindo a matriz de massa e rigidez SK = zeros (2 * Nx); SM = zeros (2 * Nx); d = zeros (2 * Nx,1); v = zeros (2 * Nx,1); a = zeros (2 * Nx,1); Ske = zeros (4); Sme = zeros (4); for Nel = 1:Nelx
L = X(Nel + 1) - X(Nel); i1 = Nel; i2 = Nel + 1; Ske(1,1) = 12 * EI / L ^ 3; Sme(1,1) = 13 * L * Row / 35; Ske(1,2) = 6 * EI / L ^ 2; Sme(1,2) = 11 * L ^2 * Row / 210; Ske(1,3) = -12 * EI / L ^ 3; Sme(1,3) = 9 * L * Row / 70; Ske(1,4) = 6 * EI / L ^ 2; Sme(1,4) = -13 * L ^2 * Row / 420; Ske(2,1) = 6 * EI / L ^ 2; Sme(2,1) = 11 * L ^2 * Row / 210; Ske(2,2) = 4 * EI / L; Sme(2,2) = L ^3 * Row / 105; Ske(2,3) = -6 * EI / L ^ 2; Sme(2,3) = 13 * L ^2 * Row / 420; Ske(2,4) = 2 * EI / L; Sme(2,4) = - L ^3 * Row / 140; Ske(3,1) = -12 * EI / L ^ 3; Sme(3,1) = 9 * L * Row / 70; Ske(3,2) = -6 * EI / L ^ 2; Sme(3,2) = 13 * L ^2 * Row / 420; Ske(3,3) = 12 * EI / L ^ 3; Sme(3,3) = 13 * L * Row / 35; Ske(3,4) = -6 * EI / L ^ 2; Sme(3,4) = -11 * L ^2 * Row / 210; Ske(4,1) = 6 * EI / L ^ 2; Sme(4,1) = -13 * L ^2 * Row / 420; Ske(4,2) = 2 * EI / L; Sme(4,2) = - L ^3 * Row / 140; Ske(4,3) = -6 * EI / L ^ 2; Sme(4,3) = -11 * L ^2 * Row / 210; Ske(4,4) = 4 * EI / L; Sme(4,4) = L ^3 * Row / 105;
SK(2 * i1 - 1:2 * i2, 2 * i1 -1: 2 * i2) = SK(2 * i1 - 1:2 * i2, 2 * i1 -1: 2 * i2) + Ske;
SM(2 * i1 1:2 * i2, 2 * i1 1: 2 * i2) = SM(2 * i1 1:2 * i2, 2 * i1 -1: 2 * i2) +Sme + (dt ^2) * beta * Ske;
end
%condições de contorno (suporte simples) SK( :,1) = zeros (2 * Nx,1);
SK( 1,: ) = zeros (1,2 * Nx); SK (1,1) = 1;
SK( 2 * Nx - 1,: ) = zeros (1,2 * Nx); SK (2 * Nx - 1, 2 * Nx - 1) = 1; SM( :,1) = zeros (2 * Nx,1); SM( 1,: ) = zeros (1,2 * Nx); SM (1,1) = 1; SM( :,2 * Nx - 1) = zeros (2 * Nx,1); SM( 2 * Nx - 1,: ) = zeros (1,2 * Nx); SM (2 * Nx - 1, 2 * Nx - 1) = 1; SMI = inv(SM); resp= [ ]; for it = 1:nstep Time = (it - 1) *dt; F = zeros ( 2 * Nx,1); F(13) = sin(5 * Time); Fn = F-SK*(d+dt*v+0.5*(dt^2)*(1-2*beta)*a); an=SMI*Fn;
d = d + dt * v + 0.5*(dt ^2) * ((1 - 2 * beta) * a + 2 * beta * an); v = v + dt * ((1 - ganma) * a + ganma * an);
a = an; resp(it,1) = d(13); resp(it,2) = v(13); resp(it,3) = a(13); xf = [ ]; Df = [ ]; ipx = 20;
for Nel = 1:Nelx
de(1) = d(2*Nel - 1); de(2) = d(2*Nel); de(3) = d(2*Nel + 1) de(4) = d(2*Nel + 2); for ip = 1:ipx + 1 L = X(Nel + 1) - X(Nel); S= L * (ip - 1) / ipx; N(1) = 1 - 3 * S ^2 / L ^ 2 +2 * S ^3 / L ^ 3; N(2) = S - 2 * S ^2 / L + S ^3 / L ^ 2; N(3) = 3 * S ^2 / L ^ 2 - 2 * S ^3 / L ^ 3; N(4) = - S ^2 / L + S ^3 / L ^ 2;
Df(ipx * (Nel - 1) + ip) = de * N'; xf(ipx * (Nel - 1) + ip) = X(Nel) + S; end end plot(xf,Df) title('deflexao') xlabel('X') ylabel('d') end plot(resp); %**********************************************************************