Modelo de Potts - 2D: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
 
(123 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 <math>1</math> ou <math>-1</math>, 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,...,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.
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>.]]
|[[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>.]]
|[[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>.]]
|[[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 11: 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 <math>1</math> se <math>s_i=s_j</math> e <math>0</math> se <math>s_i\neq 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 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>q=2</math> na expressão para <math>\theta_n</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


O Hamiltoniano de Ising pode ser escrito como o Hamiltoniano do Potts mais uma constante aditiva
<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)} [2\delta(s_i,s_j) - 1]</math>


Se incluirmos o campo magnético, o Hamiltoniado de Potts fica
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>H_p = -J \sum_{(i,j)} \delta(s_i,s_j) - \sum_i \frac{1}{\beta} h_i s_i</math>


=Algoritmo de Metropolis=
=Algoritmo de Metropolis=
Linha 29: 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. Inicialize
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>.


a) Escolha um estado inicial <math>x_0</math>;


b) Coloque <math>t=0</math>
2) Através de um sorteio aleatório, com <math>Prob = \frac{1}{N}</math>, escolhemos um candidato <math>x'</math>.


2. Itere
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>


a) Gere um estado candidato aleatório <math>x'</math> de acordo <math>g(x'|x_t)</math>
4) E então aceitamos ou rejeitamo este novo candidato da seguinte forma:


b) Calcule a probabilidade de aceitação <math>A(x',x_t) = min \left(1,\frac{P(x')}{P(x_t)} \frac{g(x_t | x')}{x'|x_t} \right)</math>
a) Geramos um número aleatório uniforme <math>u \in [0,1]</math>;


c) Aceite ou rejeite:
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>;


1) Gere um número aleatório uniforme <math>u \in [0,1]</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>;


2) E se <math>u\leq A(x',x_t)</math>, aceite o novo estado e defina <math>x_{t+1}=x'</math>;
d) Ao final desse processo, voltamos para o passo 2).


3) E se <math>u>A(x',x_t)</math>, rejeite o novo estado e copie o estado antigo para frente <math>x_{t+1}=x_t</math>;
=Resultados das simulações=
 
4) Incremente: coloque t = t + 1
 
Em nosso caso, a distribuição <math>\frac{A(x,x')}{A(x',x)}</math> será <math>e^{-\beta \Delta E}</math>, onde <math>\Delta E=E_{x'} - E_{x}</math>.


=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>.


Definimos um Monte Carlo Step (MCS) como sendo o tempo em que a rede bidimensional 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 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==
==Energia (T=1)==
{| class="wikitable" style="text-align: center;"
{| 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.
!colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis.
|-
|-
|[[Arquivo: Q_2_T_1.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 2 e L = 64.|600px]]
|[[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: Q_3_T_1.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 3 e L = 64.|600px]]
|[[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: Q_4_T_1.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 4 e L = 64.|600px]]
|[[Arquivo: Q_5_T_1.png|thumb|center|upright=4|none|alt=Alt text|Energia média por MCS para Q = 5 e L = 64.|600px]]
|-
||[[Arquivo: Q_6_T_1.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 6 e L = 64.|600px]]
|[[Arquivo: Q_7_T_1.png|thumb|center|upright=4|none|alt=Alt text|Energia média por MCS para Q = 7 e L = 64.|600px]]
|-
|-
||[[Arquivo: Q_8_T_1.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 8 e L = 64.|600px]]
|[[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: Q_9_T_1.png|thumb|center|upright=4|none|alt=Alt text|Energia média por MCS para Q = 9 e L = 64.|600px]]
|[[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_10_T_1.png|thumb|upright=4|none|alt=Alt text|Energia média por MCS para Q = 10 e L = 64.|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_100_T_1.png|thumb|center|upright=4|none|alt=Alt text|Energia média por MCS para Q = 100 e L = 64.|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]]
|}
|}


==Magnetização==
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;"
{| class="wikitable" style="text-align: center;"
!colspan="2"|Magnetização em cada MCS para Q indo de 2 até 10 e L = 64 utilizando algoritmo de Metropolis.
!colspan="2"|Energia em cada MCS para Q indo de 2 até 10 e L = 64 utilizando o algoritmo de Metropolis.
|-
|-
|[[Arquivo: mag_Q_2_T_1.png|thumb|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 2 e L = 64.|600px]]
|[[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: mag_Q_3_T_1.png|thumb|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 3 e L = 64.|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: mag_Q_4_T_1.png|thumb|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 4 e L = 64.|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: mag_Q_5_T_1.png|thumb|center|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 5 e L = 64.|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: mag_Q_6_T_1.png|thumb|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 6 e L = 64.|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: mag_Q_7_T_1.png|thumb|center|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 7 e L = 64.|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]]
|-
||[[Arquivo: mag_Q_8_T_1.png|thumb|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 8 e L = 64.|600px]]
|[[Arquivo: mag_Q_9_T_1.png|thumb|center|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 9 e L = 64.|600px]]
|-
||[[Arquivo: mag_Q_10_T_1.png|thumb|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 10 e L = 64.|600px]]
|[[Arquivo: mag_Q_100_T_1.png|thumb|center|upright=4|none|alt=Alt text|Magnetização média por MCS para Q = 100 e L = 64.|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=

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.

Possibilidades de spin para .
Possibilidades de spin para .
Possibilidades de spin para .

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.
Alt text
Energia média por MCS para Q = 2, L = 64 e T = 1.
Alt text
Energia média por MCS para Q = 2, L = 64 e T = 1.
Alt text
Energia média por MCS para Q = 3, L = 64 e T = 1.
Alt text
Energia média por MCS para Q = 3, L = 64 e T = 1.
Alt text
Energia média por MCS para Q = 7, L = 64 e T = 1.
Alt text
Energia média por MCS para Q = 7, L = 64 e T = 1.

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.
Alt text
Energia média por MCS para Q = 2, L = 64 e T = 2.
Alt text
Energia média por MCS para Q = 2, L = 64 e T = 2.
Alt text
Energia média por MCS para Q = 3, L = 64 e T = 2.
Alt text
Energia média por MCS para Q = 3, L = 64 e T = 2.
Alt text
Energia média por MCS para Q = 7, L = 64 e T = 2.
Alt text
Energia média por MCS para Q = 7, L = 64 e T = 2.

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.

Metropolis - Potts 2D

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.