Modelo de Potts - 2D: mudanças entre as edições
(169 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
=O Modelo= | =O Modelo= | ||
Modelo de Potts pode ser considerado uma generalização do Modelo de Ising. Enquanto no Ising, os spins podem assumir valores 1 ou -1, no Modelo de Potts, os spins podem assumir valores que dependem de uma variavél <math> | Modelo de Potts pode ser considerado uma generalização do Modelo de Ising. Enquanto no Ising, os spins podem assumir valores 1 ou -1, no Modelo de Potts, os spins podem assumir valores que dependem de uma variavél <math>Q</math> da seguinte forma: <math>\theta_n = \frac{2\pi n}{Q}</math>. A quantidade <math>\theta_n</math> nos fornece as possíveis orientações para os spins. Os valores que <math>n</math> pode assumir são <math>n=1,2,3,...,Q</math>. Dessa forma, um Modelo de Potts bidimensional com <math>Q=10</math> possui uma rede bidimensional de spins com 10 orientações diferentes. Nas figuras abaixo podemos ver três possíveis orientações dos spins. | ||
{| | |||
|[[Arquivo:spin_Q2.png|thumb|upright=1.1|center|Possibilidades de spin para <math>Q=2</math>.|200px]] | |||
|[[Arquivo:spin_Q3.png|thumb|upright=1.2|center|Possibilidades de spin para <math>Q=3</math>.|270px]] | |||
|[[Arquivo:spin_Q4.png|thumb|upright=1.2|center|Possibilidades de spin para <math>Q=4</math>.|240px]] | |||
|} | |||
O Hamiltoniano de interação, na ausência de campo magnético, pode ser escrito como | O Hamiltoniano de interação, na ausência de campo magnético, pode ser escrito como | ||
Linha 7: | Linha 12: | ||
<math>H_p = -J \sum_{(i,j)} \delta(s_i,s_j) </math> | <math>H_p = -J \sum_{(i,j)} \delta(s_i,s_j) </math> | ||
onde <math>J</math> é a constante de acoplamento que determina a intensidade da interação e <math>\delta(s_i,s_j) </math> é a delta de Kronecker, definida como | onde <math>J</math> é a constante de acoplamento que determina a intensidade da interação e <math>\delta(s_i,s_j) </math> é a delta de Kronecker, definida como 1 se <math>s_i=s_j</math> e 0 se <math>s_i\neq s_j</math>. | ||
Uma característica importante desse modelo é que as orientações em si não são relevantes, uma vez que o Hamiltoniano é definido por uma Delta de Kronecker. A única informação relevante é se os spins são iguais ou diferentes. Conforme veremos adiante, para o caso de <math>Q=2</math>, recaímos no conhecido Modelo de Ising. | |||
Se incluirmos o campo magnético, o Hamiltoniado de Potts fica | |||
<math>H_p = -J \sum_{(i,j)} \delta(s_i,s_j) - \sum_i \frac{1}{\beta} h_i s_i</math> | |||
onde <math>\beta = 1/k_B T</math> e <math>h_i</math> é o campo magnético. | |||
=Relação com o Modelo de Ising= | =Relação com o Modelo de Ising= | ||
O Modelo de Ising é obtido quando tomamos <math> | O Modelo de Ising é obtido quando tomamos <math>Q=2</math> na expressão para <math>\theta_n</math>. Para que possamos reescrever o Hamiltoniano de Potts em uma forma semelhante ao Hamiltoniano de Ising, vamos somar uma constante aditiva, de modo que o Hamiltoniano fica | ||
<math>H_I = H_p + \sum_{(i,j)}\frac{J}{2} = -J\sum_{(i,j)} \delta(s_i,s_j) + \sum_{(i,j)}\frac{J}{2} = -\frac{J}{2}\sum_{(i,j)} [2\delta(s_i,s_j) - 1]</math> | |||
<math>H_I = H_p + \sum_{(i,j)}\frac{J}{2} = -J\sum_{(i,j)} \delta(s_i,s_j) + \sum_{(i,j)}\frac{J}{2} = -\frac{J}{2}\sum_{(i,j)} | |||
Vemos que se os spins são iguais, obtemos <math>-J/2</math> e se os spins são diferentes, obtemos <math>J/2</math>. No Modelo de Ising, nós tínhamos <math>-J</math> e <math>J</math>, respectivamente. Uma consequência desse fator meio de diferença é que a temperatura crítica para o Modelo de Potts, para <math>Q=2</math>, é metade da temperatura crítica do Ising (<math>T_c\approx 1.1</math>) e os <math>\Delta Es</math> nos histogramas de energia também são metade. | |||
<math> | |||
=Algoritmo de Metropolis= | =Algoritmo de Metropolis= | ||
Linha 25: | Linha 36: | ||
O algoritmo de Metropolis é um método de Cadeia de Markov Monte Carlo (MCMC) para obter amostras aleatórias a partir de uma distribuição de probabilidade da qual a amostragem direta é difícil. O procedimento para a implementação do algoritmo é apresentado abaixo. | O algoritmo de Metropolis é um método de Cadeia de Markov Monte Carlo (MCMC) para obter amostras aleatórias a partir de uma distribuição de probabilidade da qual a amostragem direta é difícil. O procedimento para a implementação do algoritmo é apresentado abaixo. | ||
1. | 1) Escolhemos um estado inicial <math>x_0</math>, que em nosso caso será um spin orientado em uma direção dada por <math>Q</math>. | ||
2) Através de um sorteio aleatório, com <math>Prob = \frac{1}{N}</math>, escolhemos um candidato <math>x'</math>. | |||
3) Calculamos a prababilidade de aceitação desse candidato atráves de <math>A(x',x_t) = min \left(1,\frac{P(x')}{P(x_t)} \right)</math>, onde | |||
<math>P(x') = e^{-\beta E_{x'}}</math> | |||
4) E então aceitamos ou rejeitamo este novo candidato da seguinte forma: | |||
a) Geramos um número aleatório uniforme <math>u \in [0,1]</math>; | |||
b) Se <math>u\leq A(x',x_t)</math>, ou seja <math>u\leq e^{-\beta (E_{x'} - E_{x_t})}</math>, aceitamos o novo estado e definimos <math>x_{t+1}=x'</math>; | |||
c) E se <math>u>A(x',x_t)</math>, ou seja <math>u\leq e^{-\beta (E_{x'} - E_{x_t})}</math>, rejeitamos o novo estado e continuamos com o estado antigo para frente <math>x_{t+1}=x_t</math>; | |||
d) Ao final desse processo, voltamos para o passo 2). | |||
=Resultados das simulações= | |||
Definimos um Monte Carlo Step (MCS) como sendo o tempo em que a rede bidimensional quadrada com <math>L^2</math> spins é percorrida pelo algoritmo. Ao final de <math>L^2</math> flips de spin (seja com probabilidade <math>1</math> ou com probabilidade <math>\exp(-\beta \Delta E)</math>), contamos um MCS. Além disso, em todas as simulações, utilizamos <math>T=1</math> em unidades de <math>k_B</math>. | |||
Em | Em todas as simulações, o estado inicial utilizado foi uma rede quadrada de tamanho <math>L</math> com spins aleatórios. Isso justifica a diferença na energia inicial de cada simulação. Como os spins eram diferentes (ordenados de forma aleatória), a energia inicial também era diferente para cada simulação. | ||
= | ==Energia (T=1)== | ||
{| class="wikitable" style="text-align: center;" | {| class="wikitable" style="text-align: center;" | ||
!colspan="2"| | !colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | ||
|- | |- | ||
|[[Arquivo: | |[[Arquivo: Q_2_T_12.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 1.|600px]] | ||
|[[Arquivo: | |[[Arquivo: Q_2_T_13.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 1.|600px]] | ||
|- | |- | ||
|[[Arquivo: | |[[Arquivo: Q_3_T_12.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 1.|600px]] | ||
|[[Arquivo: | |[[Arquivo: Q_3_T_13.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 1.|600px]] | ||
|- | |- | ||
|[[Arquivo: Q_7_T_12.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 1.|600px]] | |||
|[[Arquivo: Q_7_T_13.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 1.|600px]] | |||
|} | |} | ||
Na primeira figura, vemos a série temporal da energia para <math>Q=2</math> e <math>T=1</math>, enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -700. | |||
Na terceira figura, vemos a série temporal da energia para <math>Q=3</math> e <math>T=1</math>, enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -1850. | |||
Na quinta figura, vemos a série temporal da energia para <math>Q=7</math> e <math>T=1</math>, enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2900. | |||
==Energia (T=2)== | |||
{| class="wikitable" style="text-align: center;" | |||
!colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | |||
|- | |||
|[[Arquivo: Q21.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 2.|600px]] | |||
|[[Arquivo: Q22.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2, L = 64 e T = 2.|600px]] | |||
|- | |||
|[[Arquivo: Q31.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 2.|600px]] | |||
|[[Arquivo: Q32.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3, L = 64 e T = 2.|600px]] | |||
|- | |||
|[[Arquivo: Q71.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 2.|600px]] | |||
|[[Arquivo: Q72.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7, L = 64 e T = 2.|600px]] | |||
|} | |||
Na primeira figura, vemos a série temporal da energia para <math>Q=2</math> e <math>T=2</math>, enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -5000. | |||
Na terceira figura, vemos a série temporal da energia para <math>Q=3</math> e <math>T=2</math>, enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2850. | |||
Na quinta figura, vemos a série temporal da energia para <math>Q=7</math> e <math>T=2</math>, enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -3400. | |||
É possível observar que para <math>T = 2</math> os valores de energia média ficaram mais dispersos que em relação à <math>T = 1</math>. Além disso, há uma grande diferença entre os resultados de <math>T = 2</math> e <math>T = 1</math> para <math>Q = 2</math>. Vemos que para uma temperatura mais baixa, a energia média converge para um valor mais bem definido. | |||
=Códigos utilizados= | =Códigos utilizados= | ||
O código foi escrito em Fortran. | |||
[[Metropolis - Potts 2D]] | [[Metropolis - Potts 2D]] |
Edição atual tal como às 19h51min de 18 de outubro de 2022
O Modelo
Modelo de Potts pode ser considerado uma generalização do Modelo de Ising. Enquanto no Ising, os spins podem assumir valores 1 ou -1, no Modelo de Potts, os spins podem assumir valores que dependem de uma variavél da seguinte forma: . A quantidade nos fornece as possíveis orientações para os spins. Os valores que pode assumir são . Dessa forma, um Modelo de Potts bidimensional com possui uma rede bidimensional de spins com 10 orientações diferentes. Nas figuras abaixo podemos ver três possíveis orientações dos spins.
O Hamiltoniano de interação, na ausência de campo magnético, pode ser escrito como
onde é a constante de acoplamento que determina a intensidade da interação e é a delta de Kronecker, definida como 1 se e 0 se .
Uma característica importante desse modelo é que as orientações em si não são relevantes, uma vez que o Hamiltoniano é definido por uma Delta de Kronecker. A única informação relevante é se os spins são iguais ou diferentes. Conforme veremos adiante, para o caso de , recaímos no conhecido Modelo de Ising.
Se incluirmos o campo magnético, o Hamiltoniado de Potts fica
onde e é o campo magnético.
Relação com o Modelo de Ising
O Modelo de Ising é obtido quando tomamos na expressão para . Para que possamos reescrever o Hamiltoniano de Potts em uma forma semelhante ao Hamiltoniano de Ising, vamos somar uma constante aditiva, de modo que o Hamiltoniano fica
Vemos que se os spins são iguais, obtemos e se os spins são diferentes, obtemos . No Modelo de Ising, nós tínhamos e , respectivamente. Uma consequência desse fator meio de diferença é que a temperatura crítica para o Modelo de Potts, para , é metade da temperatura crítica do Ising () e os nos histogramas de energia também são metade.
Algoritmo de Metropolis
Vamos implementar o Modelo de Potts utilizando o algoritmo de Metropolis.
O algoritmo de Metropolis é um método de Cadeia de Markov Monte Carlo (MCMC) para obter amostras aleatórias a partir de uma distribuição de probabilidade da qual a amostragem direta é difícil. O procedimento para a implementação do algoritmo é apresentado abaixo.
1) Escolhemos um estado inicial , que em nosso caso será um spin orientado em uma direção dada por .
2) Através de um sorteio aleatório, com , escolhemos um candidato .
3) Calculamos a prababilidade de aceitação desse candidato atráves de , onde
4) E então aceitamos ou rejeitamo este novo candidato da seguinte forma:
a) Geramos um número aleatório uniforme ;
b) Se , ou seja , aceitamos o novo estado e definimos ;
c) E se , ou seja , rejeitamos o novo estado e continuamos com o estado antigo para frente ;
d) Ao final desse processo, voltamos para o passo 2).
Resultados das simulações
Definimos um Monte Carlo Step (MCS) como sendo o tempo em que a rede bidimensional quadrada com spins é percorrida pelo algoritmo. Ao final de flips de spin (seja com probabilidade ou com probabilidade ), contamos um MCS. Além disso, em todas as simulações, utilizamos em unidades de .
Em todas as simulações, o estado inicial utilizado foi uma rede quadrada de tamanho com spins aleatórios. Isso justifica a diferença na energia inicial de cada simulação. Como os spins eram diferentes (ordenados de forma aleatória), a energia inicial também era diferente para cada simulação.
Energia (T=1)
Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | |
---|---|
Na primeira figura, vemos a série temporal da energia para e , enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -700.
Na terceira figura, vemos a série temporal da energia para e , enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -1850.
Na quinta figura, vemos a série temporal da energia para e , enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2900.
Energia (T=2)
Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis. | |
---|---|
Na primeira figura, vemos a série temporal da energia para e , enquanto na segunda figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -5000.
Na terceira figura, vemos a série temporal da energia para e , enquanto na quarta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -2850.
Na quinta figura, vemos a série temporal da energia para e , enquanto na sexta figura, vemos um histograma de energia para energia. Podemos observar que a energia tende ao valor próximo a -3400.
É possível observar que para os valores de energia média ficaram mais dispersos que em relação à . Além disso, há uma grande diferença entre os resultados de e para . Vemos que para uma temperatura mais baixa, a energia média converge para um valor mais bem definido.
Códigos utilizados
O código foi escrito em Fortran.
Referências
D. P. Landau, K. Binder. A Guide Monte Carlo Simulations in Statistical Physics. Cambridge University. New York. 2000.
L. M. Barone, E. Marinari, G. Organtini, F. Ricci-Tersengui. Scientific Programming: C-Language, Algorithms and Models in Science. World Scientific. Singapore. 2013.