Medidas dinâmicas: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
Linha 37: Linha 37:


Primeiro é importante ressaltar que precisamos comprar a posição da partícula com a posição da mesma partícula em um tempo anteior de referência, sem levar em consideração o condições de contorno periódicas. Nos trechos de códigos apresentados a seguir, consideraremos que as posições não são corrigidas quanto à este aspecto.
Primeiro é importante ressaltar que precisamos comprar a posição da partícula com a posição da mesma partícula em um tempo anteior de referência, sem levar em consideração o condições de contorno periódicas. Nos trechos de códigos apresentados a seguir, consideraremos que as posições não são corrigidas quanto à este aspecto.
Difiniremos um intervalo de passos máximo em que analisaremos o MSD.


#define numMSD 5000 // Período do MSD
Difiniremos primeiro um período de passos em que analisaremos o MSD.


<pre>
#define numMSD 1000 // Período do MSD
</pre>
Alocaremos dinamicamente na memória um vetor double com o tamanho de passos máximo. Também será necessário vetores para armazenarmos as posições de referência de cada partícula (NP = Número de partículas).
<pre>
double *x_zero  = (double *) malloc( NP * sizeof(double) );
double *y_zero  = (double *) malloc( NP * sizeof(double) );
double *msd = (double *) malloc( numMSD * sizeof(double) );
</pre>





Edição das 11h10min de 6 de maio de 2016

[Página em construção]

Em Dinâmica Molecular são chamadas de Medidas (ou Propriedades) Dinâmicas aquelas características do sistema que variam no tempo. Aqui, apresentaremos duas medidas dinâmicas de interessante importância: o deslocamento quadrático médio e a correlação entre velocidades.

Deslocamento quadrático médio

Uma introdução teórica

O Deslocamento quadrático médio, do inglês Mean square displacement (MSD), é uma medida da capacidade de dispersão (difusão) das partículas do sistema. Ela representa a média dos quadrados dos deslocamentos em relação à uma posição de referência anterior de cada partícula (Note que a média dos deslocamentos das partículas é nula, pois o centro de massa não se move, por isso a necessidade de elevarmos ao quadrado). Matematicamente, podemos expressar:

Perceba que o MSD é uma função do tempo (na verdade, do intervalo de tempo) e portanto estamos interessados em estudar como esta função varia no tempo.

Já em dinâmicas com líquidos e gases, teremos então o fenômeno da dispersão. As partículas irão "caminhar" por todo o espaço permitido em um movimento aleatório. Este movimento é conhecido como movimento Browniano e fui estudando por grandes cientistas, como Albert Einstein. Einstein consegiu modelar o deslocamento quadrático médio como uma função linear do tempo, e determinou uma constante chamada de constante de difusão (D):

Assim, este é um método amplamente usado para quantificar a difusão do sistema. Qualitativamente, classifica-se os sistemas enquanto ao MSD da seguinte forma:

: Regime confinado
: Regime subdifusivo
: Regime normalmente difusivo
: Regime superdifusivo

Em uma dinâmica com um estado sólido, esperamos que as partículas apenas vibrem, e não se deslocam grandes distâncias. Portanto, o MSD terá um limite e diremos que o regime é confinado, pois as partículas não têm espaço para se difundirem.

A imagem ao lado mostra o MSD em função do tempo para cada um destes casos.

Implementação computacional

Primeiro é importante ressaltar que precisamos comprar a posição da partícula com a posição da mesma partícula em um tempo anteior de referência, sem levar em consideração o condições de contorno periódicas. Nos trechos de códigos apresentados a seguir, consideraremos que as posições não são corrigidas quanto à este aspecto.

Difiniremos primeiro um período de passos em que analisaremos o MSD.

#define numMSD 1000 // Período do MSD

Alocaremos dinamicamente na memória um vetor double com o tamanho de passos máximo. Também será necessário vetores para armazenarmos as posições de referência de cada partícula (NP = Número de partículas).

double *x_zero  = (double *) malloc( NP * sizeof(double) );
double *y_zero  = (double *) malloc( NP * sizeof(double) );
double *msd = (double *) malloc( numMSD * sizeof(double) );


Análise de resultados e exemplos

Correlação de velocidades

A Correlação de velocidades é uma medida da variação das velocidades das partículas em um sistema.


Referências

  • Frenkel, Daan and Smit, Berend (2001). Understanding Molecular Simulation. Academic Press.