You are on page 1of 9

UFPE PROGRAMA DE PS GRADUAO EM ENGENHARIA CIVIL REA: ESTRUTURAS

TPICOS ESPECIAIS EM MTODOS NUMRICOS 3 TRIMESTRE 2016 17/10/2016

1 LISTA DE EXERCCIOS PROBLEMA 1 N.L. FSICA E SOLUO PROGRESSIVA

Prof: Paulo Marcelo Ribeiro

Aluno: Filipe Rocha Guedes

Objetivo: Ser realizado um cdigo em Python para soluo de uma barra com No-
Linearidade fsica por meio de incrementos elsticos sucessivos (estratgia progressiva
linearizao das etapas intermedirias). Posteriormente a soluo ser comparada com a
exata e com a soluo aproximada utilizando Newton-Raphson (full load).

Anexo: TEMN_FILIPE_LISTA1_Q1.py

1. Generalizao do problema de barras com No-Linearidade fsica

Considerando o problema abaixo:

Temos que, igualando as foras internas com as fora externas numa seo qualquer:

() A = P

Onde a deformao especfica ( = x/L). Para o problema linear temos () = *E (lei


de Hooke), e assim a deformao final x dada por x = PL/EA, como j conhecido.

No caso de () ser uma funo no linear, temos, de uma maneira geral (considerando a
rea da seo transversal, A, constante):

() A = P

Sendo a parcela esquerda da equao a fora interna, e a direita a fora externa. Pode-se
ento definir o resduo entre foras interna e externas como:

f(x) = () A P
E a derivada da fora interna como:

dfi(x) d((x)) d() d((x))


= A =A
dx dx d dx

Mas temos que:

d()
= ET ()
d

x d((x)) 1
(x) = = =
L dx L

Logo:

dfi(x) A
= ET ()
dx L

Podendo ser definido como a rigidez tangente do problema.

O incremento de deslocamento em cada iterao para o mtodo de Newton Raphson


ento:

f(x)
x =
f (x)

2. O Problema

O problema a seguir ser de uma barra de trelia com no-linearidade fsica, com as
seguintes propriedades e parmetros:

() = 1018 3 + 1011

A = 0.01m2 ; L = 1m ; P = 110000 N

Quer-se obter ento o diagrama de fora x deslocamento absoluto.


2.1 Soluo exata

Substituindo os valores numricos do problema na equao () A = P, tem-se:

(1018 x 3 + 1011 x) 0.01 = 110000

Utilizando um solver encontramos:

x = 1.341325 104 m

como primeira soluo de deslocamento no negativa.

2.2 Soluo com Newton-Raphson (full load)

Utilizando Newton-Raphson (no-modificado) com o cdigo criado para a questo n 2


desta lista, obteve-se o resultado para a tolerncia de erro de 0.00000001 (1e-8):

Abaixo o processamento do cdigo em Python 3 (IDLE Spyder) com chute inicial de 0:

#############################################################################

Digite nmero de funes: 1

Digite a funo 1 : f(x)=(-10**18*x**3+10**11*x)*0.01-110000

Entre com 1 elemento do vetor de partida (Chute inicial): 0

Funes: [-1.0e+16*x**3 + 1000000000.0*x - 110000]

Derivadas: ['f(x)=-3.0e+16*x**2 + 1000000000.0']

v0 = [ 0.] #Chute inicial

J0 = [[ 1.00000000e+09]] #Jacobiano inicial

Total de iteraes = 6

Resultado = [ 0.00013413]

#############################################################################################

Observa-se que o resultado obtido com Newton Raphson praticamente igual ao exato:

Exato: 0.0001341325

Newton Raphson: 0.00013413

Erro = 0,02%
2.3 Soluo por meio de incrementos elsticos sucessivos (load steps)

A ideia aqui consiste em realizar a soluo por incrementos elsticos sucessivos,


com P variando de 0 a 110 kN (110000 N), com variao DP de 10kN (10000 N). Tem-se
ento o pseudo-cdigo:

1 RODADA
E() = -3*10e18*^2+10e11
P A L0 0 E(0) 1 1
10000 0.01 1 0 10e11 P*L0/(E(0)*A) 1/L0

2 RODADA
E() = -3*10e18*^2+10e11
P A L1 1 E(1) 2 2
10000 0.01 L0 + 1 1/L0 E(1) P*L1/(E(1)*A) 2/L1

3 RODADA
E() = -3*10e18*^2+10e11
P A L2 2 E(2) 3 3
10000 0.01 L1 + 2 2/L1 E(2) P*L2/(E(2)*A) 3/L2

3. Cdigo em Python 3.5 (IDLE Spyder)

O cdigo abaixo em Python realiza a soluo do problema para as vrias etapas


intermedirias sucessivas (linearizadas):

-----------------------------------------------INCIO DO CDIGO------------------------------------------------------

"""

Created on Wed Oct 12 15:35:11 2016

@author: Filipe Guedes

"""

import sympy as sp

import matplotlib.pyplot as plt


#Rotina para input de funes

def str_2_func(s):

lhs, rhs = s.split("=", 1)

rhs = rhs.rstrip('; ')

args = sp.sympify(lhs).args

f = sp.sympify(rhs)

return f

Et=str_2_func('Et(ep)=-3*10**18*ep**2+10**11')

f_exata=str_2_func('f(x)=(-10**18*x**3+10**11*x)*0.01')

#Loop das linearizaes sucessivas

P_total=110000

Delta=0

ep=0

Delta_P=10000

A=0.01

L=1

Delta_acum=0

iter=0

aproxLx=[0]

aproxLy=[0]

k=1

#########Para plotar grfico############

while True:

aproxLy.append(k*Delta_P)

k+=1

if k*Delta_P>P_total:

break

#######################################

while True:
print('Rodada :', iter+1)

print('epsilon: ', iter, ep)

ET=Et.subs({'ep':ep})

print('E: ', ET)

Delta=Delta_P*L/(ET*A)

print('Delta : ', iter+1, Delta)

ep=Delta/L

print('epsilon : ', iter+1, ep)

L=L+Delta

Delta_acum=Delta_acum+Delta

aproxLx.append(Delta_acum) #para plotagem

iter+=1

if iter>=P_total/Delta_P:

break

print('x = ',Delta_acum)

#plotando grficos

i=0

exatax=[]

exatay=[]

while True:

exatax.append(i)

exatay.append(f_exata.subs({'x':i}))

i+=0.00000001

if i>0.000134130:

break

plt.plot(aproxLx,aproxLy,'b--',exatax,exatay,'r--')

plt.title("Grfico - Soluo Exata x Soluo Linear Progressiva")

plt.xlabel('x - deslocamento absoluto')

plt.ylabel('Carga')

plt.show()

---------------------------------------------------FIM DO CDIGO----------------------------------------------------
4. Resultados e Concluses

Sada do cdigo para o problema em questo:


Rodada : 1

epsilon: 0 0

E: 100000000000

Delta : 1 1.00000000000000e-5

epsilon : 1 1.00000000000000e-5

Rodada : 2

epsilon: 1 1.00000000000000e-5

E: 99700000000.0000

Delta : 2 1.00301905717151e-5

epsilon : 2 1.00300902708124e-5

Rodada : 3

epsilon: 2 1.00300902708124e-5

E: 99698191867.4781

Delta : 3 1.00304730854079e-5

epsilon : 3 1.00302721771447e-5

Rodada : 4

epsilon: 3 1.00302721771447e-5

E: 99698180920.1572

Delta : 4 1.00305747951863e-5

epsilon : 4 1.00302732785149e-5

Rodada : 5

epsilon: 4 1.00302732785149e-5

E: 99698180853.8749

Delta : 5 1.00306754112614e-5

epsilon : 5 1.00302732851834e-5

Rodada : 6

epsilon: 5 1.00302732851834e-5

E: 99698180853.4736

Delta : 6 1.00307760217174e-5

epsilon : 6 1.00302732852237e-5

Rodada : 7

epsilon: 6 1.00302732852237e-5
E: 99698180853.4712

Delta : 7 1.00308766331424e-5

epsilon : 7 1.00302732852240e-5

Rodada : 8

epsilon: 7 1.00302732852240e-5

E: 99698180853.4712

Delta : 8 1.00309772455763e-5

epsilon : 8 1.00302732852240e-5

Rodada : 9

epsilon: 8 1.00302732852240e-5

E: 99698180853.4712

Delta : 9 1.00310778590194e-5

epsilon : 9 1.00302732852240e-5

Rodada : 10

epsilon: 9 1.00302732852240e-5

E: 99698180853.4712

Delta : 10 1.00311784734716e-5

epsilon : 10 1.00302732852240e-5

Rodada : 11

epsilon: 10 1.00302732852240e-5

E: 99698180853.4712

Delta : 11 1.00312790889331e-5

epsilon : 11 1.00302732852240e-5

x = 0.000110308079185431

Valor para o deslocamento final:


Exato: 0.0001341325

Newton Raphson: 0.00013413 (Erro = 0,02%)

Incrementos elsticos sucessivos (P = 10.000 , P_final = 110.000): 0.000110308 (Erro = 17.8%).

Observa-se que a estratgia progressiva por incrementos elsticos sucessivos


realiza uma aproximao razovel. O Mtodo de Newton-Raphson praticamente crava com
o resultado exato, mostrando ser muito mais eficiente. O tempo de processamento para a
estratgia progressiva tambm no se mostra ser to rpido em relao ao mtodo de
Newton-Raphson.
Para o grfico a seguir, tem-se em vermelho a soluo exata e em azul a soluo
por incrementos elsticos sucessivos.

You might also like