DM de potenciais descontínuos: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Amorim (discussão | contribs)
Amorim (discussão | contribs)
Linha 23: Linha 23:


===Otimização básica===
===Otimização básica===
Dado uma simulação de <math> N </math> partículas, determinar o valor de <math> dt_{min} </math> é da ordem de <math> N^2 </math>, ou seja, evitar fazer esse processo todo passo de tempo economiza grande parte do tempo computacional. Uma forma simples de fazer isso é determinar e armazenar o menor <math> dt_{ij} </math> para cada partícula <math> i </math> e o índice <math> j </math> antes do loop temporal e a cada passo de tempo determinar o valor de <math> dt_{min} </math> a partir dos <math> dt_{ij} </math> armazenados. Assim, a cada passo de tempo seria necessário apenas atualizar o valor de <math> dt_{ij} </math> das partículas <math> i, j </math> e das que colidiriam com <math> i </math> ou <math> j </math>.


===Implementação computacional===
===Implementação computacional===

Edição das 00h41min de 19 de junho de 2016

Dinâmica molecular de potenciais descontínuos é uma abordagem computacional utilizada para determinar o movimento de partículas duras que só interagem por forças de contato. Assim, fica evidente a diferença entre o potencial Lennard-Jones pois este se baseia em uma interação de curto alcance, como é mostrado em DM: um primeiro programa. Para entender como as colisões ocorrem, conhecer a forma do potencial a ser estudado é vital. Como estamos considerando corpos rígidos, ou seja, que não sofrem deformação, percebe-se que a força de contato entre as partículas será infinita e o tempo de interação zero, o que torna impossível a descrição do problema a partir de uma integração de movimento simples. O método utilizado, a ser explicitado aqui, que resolve este problema é o evento dirigido.

Evento dirigido

A ideia do método para resolver o problema do força infinita é, ao invés de avançar o sistema em pequenos passos de tempo dt, avançar a simulação conforme as colisões forem ocorrendo. Para isso deve-se encontrar o par de partículas i,j que colidirá no menor intervalo de tempo entre todas as partículas, denotaremos tal intervalo por dtmin, e, então, avançar o sistema. Neste ponto teremos dois objetos colados, portanto aqui deve ser feita a mudança de velocidades de tal forma a respeitar uma colisão elástica.

Determinação do tempo de colisão

Os objetos a serem usados para o cálculo do tempo de colisão entre um par de partículas i,j serão discos de raio σi, σj, de distância denotada por σ. Portanto, segue que a condição de colisão é:

|ri(t+dtij)rj(t+dtij)|=σ

Com ri sendo o vetor posição da partícula i e dtij o tempo de colisão entre as partículas i,j. Tal condição nos leva a determinação de dtij a partir da expressão:

dtij={se d<0se Δr.Δv>0Δr.Δv+dΔv.Δvnos demais casos

Onde d(Δr.Δv)2(Δv.Δv)(Δr.Δrσ2), Δr=rirj e Δv=vivj.
Com isso, consegue-se determinar o valor de dtmin encontrando o menor valor de dtij.

Mudança de velocidade em uma colisão elástica

Para fazer a mudança de velocidades temos que considerar o caso de colisão elástica entre as partículas i,j, sendo impulso dado por:

J=2mimj(Δr.Δv)σ2(mi+mj)Δr.

Assim, a variação de velocidades pode ser determinada por:

Δvi=Jmi e Δvj=Jmj.

Otimização básica

Dado uma simulação de N partículas, determinar o valor de dtmin é da ordem de N2, ou seja, evitar fazer esse processo todo passo de tempo economiza grande parte do tempo computacional. Uma forma simples de fazer isso é determinar e armazenar o menor dtij para cada partícula i e o índice j antes do loop temporal e a cada passo de tempo determinar o valor de dtmin a partir dos dtij armazenados. Assim, a cada passo de tempo seria necessário apenas atualizar o valor de dtij das partículas i,j e das que colidiriam com i ou j.

Implementação computacional

Figurinhas sensacionais

Adição do campo gravitacional