Medidas dinâmicas: mudanças entre as edições
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 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.