Modelo de Potts 2D
Modelo de Potts
O "modelo de Potts de Q-estados" trata de um sistema de rede com N spins interagentes , onde um spin pode assumir valores discretos . Cada spin do sistema está limitado a interagir com outros spins em sua vizinhança e a energia da interação entre dois spins e é dada pelo potencial
onde é a função delta de Kronecker e é a constante de interação entre os spins. Dessa maneira, a interação entre dois spins vizinhos contabiliza um valor de energia ao sistema apenas se . A hamiltoniana do sistema é dada pela soma entre todas as interações entre spins vizinhos:
Este modelo é tido como uma generalização natural do Modelo de Ising e para o caso ambos modelos são equivalentes a menos de uma constante:
Nesse caso, a interação entre dois spins e assume a mesma dinâmica do modelo de Ising a contribuição para a energia do sistema será
Neste trabalho, o modelo de Potts foi estudado em uma rede quadrada 2D com vizinhança de von Neumann para primeiros vizinhos e condições de contorno periódicas. A quantidade de spins no modelo é com interações ferromagnéticas e , favorecendo vizinhanças de spins que compartilham o mesmo valor de para minimizar a energia do sistema.
Método de Monte Carlo
O método de Monte Carlo é aplicado ao modelo de Potts com o objetivo de gerar estados de equilíbrio para medir os observáveis do sistema. Os spins são iniciados com valores aleatórios de Q na rede e o método de Monte Carlo escolhe arbitrariamente um spin e gera um novo valor de para o spin. A partir disso, através de algum algoritmo específico, se escolhe como os estados serão gerados e quais serão aceitos ou não para o sistema transicionar, respeitando as condições de balanço detalhado e ergodicidade das cadeiras markovianas. Para este trabalho, foram estudados os algoritmos de Metropolis-Hasting e o algoritmo de banho térmico.
Algorítmo de Metropolis-Hasting
O primeiro algoritmo utilizado para gerar as configurações do sistema foi o algoritmo de Metropolis-Hasting. O algoritmo escolhe repetidamente um novo estado para o sistema e aceitando ou rejeitando ele de acordo com uma probabilidade de aceitação de transitar de um estado antigo para o novo estado . O algoritmo que iremos descrever utiliza a dinâmica de inversão única de spins.
Temos que a condição de balanceamento detalhado é dada por [1]:
onde é a diferença de energia entre o novo e o antigo estado.
Vamos supor que tenhamos os estados e e que temos a relação de energias: . Então, a maior das duas chances de aceitação é , portanto iremos igualar essa probabilidade a 1. Para que seja respeitada, iremos definir o valor de como . Temos, assim, o algoritmo de Metropolis-Hasting:
Dessa forma, sempre que tivermos um estado cuja energia seja menor do que a do estado atual, iremos aceitar a transição, mas se a energia for maior, teremos uma pequena probabilidade de trocarmos de estado.
Algoritmo de Banho Térmico
O algoritmo de Metropolis-Hasting para inversão única de spins é eficaz para o modelo de Potts em baixos valores de Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q} ou temperaturas acima da temperatura crítica, entretanto para valores altos de Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q} ou baixas temperaturas o algoritmo falha convergir o sistema rapidamente para a situação de equilíbrio.
Considerando um caso onde Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle Q = 100} e um spin que possui 4 vizinhos, se todos os vizinhos do spin possuem valores diferentes uns do outro e do próprio spin, poderá levar em média Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle 100/4 = 25} passos de Monte Carlo para sortear um novo valor de Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} que tem a transição aceita, e dessa forma o algoritmo irá demorar mais tempo para alcançar a configuração de equilíbrio do sistema. A dificuldade de aceitar transições é maior ainda para baixas temperaturas, onde a probabilidade de transicionar para um novo estado tem um peso maior para qualquer Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} diferente dos spins da vizinhança, dessa maneira poderá demorar 96 passos para gerar um spin que seja igual a algum spin da vizinhança e realizar a transição. Para contornar este problema podemos utilizar o algoritmo de banho térmico.
O algoritmo de banho térmico, assim como o metropolis, é um algoritmo que mudaremos um spin por vez. O algoritmo segue as seguintes etapas: primeiro escolhemos um spin na rede (Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle i} ), e independente do seu valor atual, escolhemos um novo valor para Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_i} . Esse novo valor será aceito, ou não, de acordo com a proporção dos pesos de Boltzmann. Temos que no algoritmo de Banho Térmico nós atribuímos um valor Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle n} , entre 1 e Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} , ao spin com uma probabilidade
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle A(\mu \rightarrow \nu) = \frac{e^{-\beta E_{\nu}}}{\sum_{m=1}^q e^{-\beta E_m}} }
Onde Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle E_n} é a energia do sistema quando Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle s_i = n} e o somatório é dado em todas energias possíveis. Como com esse algoritmo pode fazer que o spin assuma qualquer valor ele satisfaz a condição de ergodicidade. Temos que Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle A(\mu \rightarrow \nu) = a_{\nu}} e Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle A(\nu \rightarrow \mu) = a_{\mu}} , assim, pela descrição do algoritmo temos
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle \frac{A(\mu \rightarrow \nu)}{A(\nu \rightarrow \mu)} = \frac{a_{\nu}}{a_{\mu}} = \frac{e^{-\beta E_{\nu}}}{\sum_{m=1}^q e^{-\beta E_m}} \times \frac{\sum_{m=1}^q e^{-\beta E_m}}{e^{-\beta E_{\mu}}} = e^{-\beta \Delta E}}
Ou seja, o algoritmo de banho térmico respeita a condição de balanço detalhado.
Veremos que para valores pequenos de Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} (como Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle q = 2} , que é o modelo de Ising), o algoritmo de Metropolis é mais eficiente. Porém, para valores altos de Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle q} ou altas temperaturas o algoritmo de banho térmico é mais eficiente.
Aplicação
O sistema será simulado em uma rede quadrada de tamanho Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle L \times L = L^2} com condições de contorno periódicas. Em cada passo temporal, são realizadas Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://wikimedia.org/api/rest_v1/":): {\displaystyle L^2} iterações do algoritmo de aceitação, Metropolis ou Banho Térmico. Definimos Passo de Monte Carlo (MCS) cada um desses passos temporais. Em outras palavras: em cada passo de Monte Carlo, todos os sítios tem a possibilidade de realizar uma troca.
Otimizações Computacionais
Resultados
Programas Utilizados
Programas na linguagem C. Para utilizar os programas, abra o terminal e compile da forma
$ gcc prog.c -lm
Onde prog.c é o programa que deseja utilizar. É necessário que o programa e a biblioteca com funções para MC estejam na mesma pasta no momento da compilação. E execute da seguinte maneira
$ ./a.out Q TEMP
onde o segundo termo é o estado Q do sistema e o terceiro é a temperatura do sistema. Os programas possuem uma diretiva de compilação para visualização do sistema ao decorrer da execução. Para utilizar é necessário ter o gnuplot [2] instalado e compilar da forma
$ gcc -DVIEW prog.c -lm
e então executar da maneira
$ ./a.out Q TEMP | gnuplot
Entretanto com a visualização no gnuplot o programa pode demorar mais para executar, então é recomendado diminuir os tempos de transiente (TRAN) e medidas (TMAX).
O script possui alguns exemplos de execução através de diferentes estados e temperaturas do sistema. Copie o conteudo em um arquivo e então o deixar executável:
$ chmod +x script.sh
e então com o programa compilado pode executar da forma
$ ./script.sh
Biblioteca com funções em C para simulações de Monte Carlo
Script em bash para gerar os dados
Referências
- ↑ M. E. J. Newman, G. T. Barkema, "Monte Carlo Methods in Statistical Physics". Oxford University Press Inc., New York, 1999.
- ↑ https://fiscomp.if.ufrgs.br/index.php/Gnuplot