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

De Física Computacional
Ir para navegação Ir para pesquisar
Sem resumo de edição
 
(190 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 Modelo de Ising, os spins podem assumir valores 1 ou -1, no Modelo de Potts, os spins podem assumir valores que depedem de <math>q</math>, onde <math>\theta_n = \frac{2\pi n}{q}</math> fornece as orientações possíveis para os spins. Os valores de <math>n</math> podem assumir os valores <math>n=0,1,2,...</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
<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 0 se <math>s_i=s_j</math> e 1 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> e o Hamiltoniano de Ising pode ser escrito como o Hamiltoniano do Potts mais uma constante aditiva
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)} [2\delta(s_i,s_j) - 1]</math>


Se incluírmos o campo magnético, o Hamiltoniado 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 21: 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. Itere
2) Através de um sorteio aleatório, com <math>Prob = \frac{1}{N}</math>, escolhemos um candidato <math>x'</math>.
a) Gere um estado candidato aleatório <math>x'</math> de acordo <math>g(x'|x_t)</math>
 
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>
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
c) Aceite ou rejeite:
<math>P(x') = e^{-\beta E_{x'}}</math>
1) Gere um número aleatório uniforme <math>u \in [0,1]</math>;
 
2) E se <math>u\leq A(x',x_t)</math>, aceite o novo estado e defina <math>x_{t+1}=x'</math>;
4) E então aceitamos ou rejeitamo este novo candidato da seguinte forma:
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>;
 
4) Incremente: coloque t = t + 1
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 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;"
!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_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_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_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_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.


Em nosso caso, a distribuição <math>\frac{A(x,x')}{A(x',x)}</math> é <math>e^{-\beta \Delta E}</math>, onde <math>\Delta E=E_{x'} - E_{x}</math>
==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]]
|}


=Resultados=
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.
[[Arquivo: <arquivo> |thumb|right|500px| Simulação com o algoritmo de Metropolis para <math>T = 1K</math>.]]
 
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 22h51min 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 Q da seguinte forma: θn=2πnQ. A quantidade θn nos fornece as possíveis orientações para os spins. Os valores que n pode assumir são n=1,2,3,...,Q. Dessa forma, um Modelo de Potts bidimensional com Q=10 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 Q=2.
Possibilidades de spin para Q=3.
Possibilidades de spin para Q=4.

O Hamiltoniano de interação, na ausência de campo magnético, pode ser escrito como

Hp=J(i,j)δ(si,sj)

onde J é a constante de acoplamento que determina a intensidade da interação e δ(si,sj) é a delta de Kronecker, definida como 1 se si=sj e 0 se sisj.

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 Q=2, recaímos no conhecido Modelo de Ising.


Se incluirmos o campo magnético, o Hamiltoniado de Potts fica Hp=J(i,j)δ(si,sj)i1βhisi

onde β=1/kBT e hi é o campo magnético.

Relação com o Modelo de Ising

O Modelo de Ising é obtido quando tomamos Q=2 na expressão para θn. 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

HI=Hp+(i,j)J2=J(i,j)δ(si,sj)+(i,j)J2=J2(i,j)[2δ(si,sj)1]

Vemos que se os spins são iguais, obtemos J/2 e se os spins são diferentes, obtemos J/2. No Modelo de Ising, nós tínhamos J e J, respectivamente. Uma consequência desse fator meio de diferença é que a temperatura crítica para o Modelo de Potts, para Q=2, é metade da temperatura crítica do Ising (Tc1.1) e os ΔEs 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 x0, que em nosso caso será um spin orientado em uma direção dada por Q.


2) Através de um sorteio aleatório, com Prob=1N, escolhemos um candidato x.

3) Calculamos a prababilidade de aceitação desse candidato atráves de A(x,xt)=min(1,P(x)P(xt)), onde P(x)=eβEx

4) E então aceitamos ou rejeitamo este novo candidato da seguinte forma:

a) Geramos um número aleatório uniforme u[0,1];

b) Se uA(x,xt), ou seja ueβ(ExExt), aceitamos o novo estado e definimos xt+1=x;

c) E se u>A(x,xt), ou seja ueβ(ExExt), rejeitamos o novo estado e continuamos com o estado antigo para frente xt+1=xt;

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 L2 spins é percorrida pelo algoritmo. Ao final de L2 flips de spin (seja com probabilidade 1 ou com probabilidade exp(βΔE)), contamos um MCS. Além disso, em todas as simulações, utilizamos T=1 em unidades de kB.

Em todas as simulações, o estado inicial utilizado foi uma rede quadrada de tamanho L 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 Q=2 e T=1, 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 Q=3 e T=1, 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 Q=7 e T=1, 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 Q=2 e T=2, 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 Q=3 e T=2, 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 Q=7 e T=2, 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 T=2 os valores de energia média ficaram mais dispersos que em relação à T=1. Além disso, há uma grande diferença entre os resultados de T=2 e T=1 para Q=2. 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.