Problema de Fermi-Pasta-Ulam
Grupo: Augusto M Giani e Henrique Padovani
O objetivo deste trabalho é replicar os resultados do problema proposto por Fermi-Pasta-Ulam em 1953 [1] sobre sistemas dinâmicos não lineares. As análises serão sobre a solução dos modos de vibração comparados à solução analítica para poucas massas e também sobre a energia do sistema para os modos de oscilação, enquanto o sistema evolui no tempo.
O Problema
O Problema proposto constitui-se de simulações em uma rede de partículas ligadas entre si através de molas que obedecem a Lei de Hooke com uma correção não-linear quadrática ou cúbica [2]
A lei de forças que rege o comportamento deste sistema é:
.
Onde e a deformação a cada 2 massas acopladas (), é a constante elástica da mola, é um parâmetro de deformação arbitrário que controla a correção não linear quadrática e é o parâmetro que controla a correção cúbica. Importante ressaltar que se é possuir assumir um valor não nulo, real, é igual a zero no nosso sistema, ou vice-versa. Não estamos analisando correções quadráticas somadas com correções cúbicas neste trabalho.
Motivação: O paradoxo Enrico Fermi, John R. Pasta, Stanislaw M. Ulam
(wiki) In 1966, Izrailev and Chirikov proposed that the system will thermalize, if a sufficient amount of initial energy is provided.[4] The idea here is that the non-linearity changes the dispersion relation, allowing resonant interactions to take place that will bleed energy from one mode to another. A review of such models can be found in Livi et al.[5] Yet, in 1970, Ford and Lunsford insist that mixing can be observed even with arbitrarily small initial energies.[6] There is a long and complex history of approaches to the problem, see Dauxois (2008) for a (partial) survey.[7]
(wiki) In the summer of 1953 Enrico Fermi, John Pasta, Stanislaw Ulam, and Mary Tsingou conducted numerical experiments (i.e. computer simulations) of a vibrating string that included a non-linear term (quadratic in one test, cubic in another, and a piecewise linear approximation to a cubic in a third). They found that the behavior of the system was quite different from what intuition would have led them to expect. Fermi thought that after many iterations, the system would exhibit thermalization, an ergodic behavior in which the influence of the initial modes of vibration fade and the system becomes more or less random with all modes excited more or less equally. Instead, the system exhibited a very complicated quasi-periodic behavior. They published their results in a Los Alamos technical report in 1955. (Enrico Fermi died in 1954, and so this technical report was published after Fermi's death.)
https://www.scielo.br/j/rbef/a/SkRCy5fdnGbhfxNjpx5BkRD/?format=pdf&lang=pt
Discretização
A discretização deste problema gira em torno de abrir a equação das forças, e com o termo de aceleração, iterar o movimento das partículas a partir disso [3]. Partimos do problema com correção quadrática, ou seja, . Partindo de:
,
subtituímos pelas variáveis discretas:
,
Chegamos em:
Em que é a aceleração da j-ésima partícula, com ela conseguimos integrar o movimento das partículas.
[TEM QUE ESCREVER AQUI] A Energia do sistema pode ser calculada para cada oscilação, porém para obtermos algum resultado e comparar com o estudo de fermi pasta ulam, calculamos a energia dos primeiros modos de vibração da corda para demontrar o comportamento visívelmente períodico destas energias.
Resultados
NOSSO GIF DEU MAIS DE 7 MEGA -----------------> VER COMO REDUZIR O GIF JÁ NO CÓDIGO!!!! ELE TA BEM RUIM ASSIM
TEM QUE MUDAR AS FIGURAS DE BAIXO:
CASO PRECISE:
Discussões
Como o intuito era replicar os resultados através da simulação com dinâmica molecular obtivemos resultados muito parecidos comparando estudos já realizados sobre este problema (Citar estes artigos)
Implementação
Usamos XX partículas, com modo de oscilação YY
### Exemplo da iteração do movimento utilizando forcacom correção quadrática ###
### código em python
def aceleracao(pos,alpha,k,massa):
size = len(pos)
acel = [0.0 for i in range(size)]
for i in range(1,size-1):
acel[i] = (k/massa) * ((pos[i+1] + pos[i-1] - 2*pos[i]) * ( 1.0 + alpha*(pos[i+1]-pos[i-1]) ) )
return acel
def velocidade(velo, acel, dt):
size = len(velo)
new_velo = [0.0 for i in range(size)]
for i in range(size):
new_velo[i] = velo[i] + 0.5*acel[i]*dt
return new_velo
def posicao(pos, velo, dt):
size = len(posY)
new_posY = [0.0 for i in range(size)]
for i in range(size):
new_posY[i] = posY[i] + new_veloY[i]*dt
return new_posY
N = número de partículas
dt = 0.2
x = np.linspace(0, x_final, dt)
pos = np.sin( 2*x*pi / (N*dt))
while t < tmax: # Loop temporal
plt.scatter(x,pos) # plotagem dos gráficos
acel = aceleracao(pos_old,alpha,k,massa)
velo = velocidade(veloY, new_aceY,dt)
pos = posicao(posY_old, veloY, dt)
pos_old = pos.copy() #sem ".copy()" o python usa o mesmo endereço de memória para 2 variáveis
t = t + td
gera_gif()
Falar um pouco mais da implementação?
Link para Códigos
Fizemos no ambiente Colab em .ipynb, segue link do github:[1]
Referências
- ↑ ANDRADE, D. X.; ANJOS, P. H. R.; ASSIS, P. E. G.. Sobre a conexão entre alguns modelos físicos não-lineares. Rev. Bras. Ensino Fís., São Paulo , v. 39, n. 1, e1307, 2017 . Disponível em <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S1806-11172017000100407&lng=pt&nrm=iso>. http://dx.doi.org/10.1590/1806-9126-rbef-2016-0083.
- ↑ http://www.physics.utah.edu/~detar/phys6720/handouts/fpu/FermiCollectedPapers1965.pdf - Fermi, Pasta, Ulam, Studies of non linear problems
- ↑ https://en.wikipedia.org/wiki/Fermi%E2%80%93Pasta%E2%80%93Ulam%E2%80%93Tsingou_problem