DM de potenciais descontínuos: mudanças entre as edições
Linha 2: | Linha 2: | ||
==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 <math>dt</math>, avançar a simulação conforme as colisões forem ocorrendo. Para isso deve-se encontrar o par de partículas <math>i, j</math> que colidirá no menor intervalo de tempo entre todas as partículas, denotaremos tal intervalo por <math>dt_{min}</math>, 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. | 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 <math>dt</math>, avançar a simulação conforme as colisões forem ocorrendo. Para isso deve-se encontrar o par de partículas <math>i, j</math> que colidirá no menor intervalo de tempo entre todas as partículas, denotaremos tal intervalo por <math>dt_{min}</math>, 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. | ||
[[File:flux.png|thumb|Fluxograma de um programa simples usando o método de evento dirigido com a otimização aqui explicitada.]] | |||
===Determinação do tempo de colisão=== | ===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 <math>i, j</math> serão discos de raio <math>\sigma_i</math>, <math>\sigma_j</math>, de distância denotada por <math>\sigma</math>. Portanto, segue que a condição de colisão é: | Os objetos a serem usados para o cálculo do tempo de colisão entre um par de partículas <math>i, j</math> serão discos de raio <math>\sigma_i</math>, <math>\sigma_j</math>, de distância denotada por <math>\sigma</math>. Portanto, segue que a condição de colisão é: | ||
Linha 23: | Linha 24: | ||
===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>. | 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>. | ||
Edição das 22h40min de 18 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 , avançar a simulação conforme as colisões forem ocorrendo. Para isso deve-se encontrar o par de partículas que colidirá no menor intervalo de tempo entre todas as partículas, denotaremos tal intervalo por , 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 serão discos de raio , , de distância denotada por . Portanto, segue que a condição de colisão é:
Com sendo o vetor posição da partícula e o tempo de colisão entre as partículas . Tal condição nos leva a determinação de a partir da expressão:
Onde , e .
Com isso, consegue-se determinar o valor de encontrando o menor valor de .
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 , sendo impulso dado por:
- .
Assim, a variação de velocidades pode ser determinada por:
- e .
Otimização básica
Dado uma simulação de partículas, determinar o valor de é da ordem de , 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 para cada partícula e o índice antes do loop temporal e a cada passo de tempo determinar o valor de a partir dos armazenados. Assim, a cada passo de tempo seria necessário apenas atualizar o valor de das partículas e das que colidiriam com ou .