¿Cómo medir la correlación espín-espín en una simulación de Monte Carlo del modelo de Ising?

Estoy simulando el modelo de Ising en 2D hasta 5D y quiero calcular la correlación de espín, la longitud de correlación y el exponente crítico del sistema. ¿Cuál es una buena manera de hacer esto?

En general, sé que necesito:

< s o s r >≅ 1 norte i norte s o s r

Dónde norte es el número de pruebas de Monte Carlo realizadas.

¿Cuál es una buena manera de calcular realmente s o s r ? ¿Y cómo me ayuda esto a calcular la longitud de la correlación? ξ y el exponente critico v

No, no necesita almacenar el historial de una celda para calcular la función de correlación espín-espín. La historia solo es necesaria si miras la autocorrelación de un observable en el tiempo, pero lo que se pregunta aquí es la correlación entre la dirección de dos giros al mismo tiempo. @alvarezcl: Echa un vistazo a esta pregunta . Avísame si eso ayuda.
Gracias por su ayuda, todos. @RobertRüger El enlace que pusiste ayudó, pero tengo problemas en principio. A medida que realizo cada iteración de MC, ¿cuál es un procedimiento razonable para realizar y estimar
< s o s r >
de todos los giros que tengo?
@RobertRüger, su código github habla de observables donde calcula la correlación de giro-giro. Tengo problemas para asignar su README a los archivos reales. ¿Hay un sistema allí?
@RobertRüger, encuentro su función de correlación de giro-giro, es decir, vector<double> IsingModel2d::ss_corr()en model_ising2dsqrmet.cpp ¿Le importaría decirme qué hace? Repasaré su código, pero en mi opinión, directamente desde la fuente es lo mejor.
Sí, hay una especie de sistema en el código fuente, aunque fue mi primer proyecto de C++ y hoy haría muchas cosas diferentes... Publicaré una respuesta que describe cómo funciona para el 2d IsingModel. Generalizarlo a más de 2 dimensiones no debería ser difícil entonces.

Respuestas (1)

Explicaré cómo medí la función de correlación espín-espín para el modelo 2d Ising. La generalización a más de 2 dimensiones debería ser sencilla siempre que tenga redes hipercúbicas.

Solo para aclarar la notación: usemos el nombre σ ( i , j ) para el giro en la posición r ( i , j ) = ( i j ) . Supongamos que nuestro modelo de Ising tiene L × L gira, así que tenemos 1 i , j L .

Lo primero que hay que tener en cuenta es que asumo que la función de correlación espín-espín, llamémosla x ( i , j ) ( k , yo ) - solo depende de la distancia absoluta entre los dos giros σ ( i , j ) y σ ( k , yo ) .

x ( i , j ) ( k , yo ) = x ( | r ( i , j ) r ( k , yo ) | ) = x ( r )

No estoy seguro de si esto es cierto en general, pero hay una prueba de que es cierto para el modelo 2d Ising a la temperatura crítica. (Se ha probado una función de correlación giro-giro rotacionalmente simétrica, y esa es solo otra forma de decir que depende solo de la distancia). No confíe en mi palabra, pero por ahora no me preocuparía por esta suposición. ..

Sabiendo esto, es fácil ver que en cada paso de su cadena de Markov no tiene que mirar todas las posibles L 2 pares de giros. En cambio, solo puede mirar un subconjunto de pares, donde tiene todas las distancias r le interesa dentro de este subconjunto.

Para mi implementación, elegí usar todos los giros. σ ( i , i ) a lo largo de la diagonal de la red y medir únicamente la correlación a lo largo de las dos direcciones de los vectores de la red. Así que solo considero la correlación entre σ ( i , i ) y todo σ ( i , j ) (horizontalmente) y σ ( j , i ) (verticalmente). Recuerda que la función de correlación espín-espín es rotacionalmente simétrica, por lo que no ganas nada al considerar pares de espines en cualquier otra dirección. Medir a lo largo de los ejes hace que tu vida sea mucho más fácil ya que solo tendrás distancias enteras r , lo que significa que puedes usar un simple L 1 matriz de elementos con la distancia como índice para acumular los términos de su suma. Esto es lo que debes calcular en cada paso de Monte Carlo:

suma ( r ) = i = 1 L j = 1 L ( σ ( i , i ) σ ( i , j ) + σ ( i , i ) σ ( j , i ) )  con  r = | i j |

muestras ( r ) = i = 1 L j = 1 L 2  con  r = | i j |

x norte ( r ) = suma ( r ) muestras ( r )

Esto es exactamente lo que hace esta función IsingModel2d::ss_corr() en mi código. (Solo es necesario realizar un seguimiento de las muestras porque realiza una cantidad diferente de mediciones para diferentes valores de r . Considere como ejemplo los casos extremos: todos menos dos giros σ ( i , i ) en la diagonal tiene 4 vecinos más cercanos a la distancia r = 1 , pero sólo σ ( 1 , 1 ) y σ ( L , L ) tener dos parejas cada una a distancia r = L 1 . Por lo tanto, debe compensar el hecho de que mide la correlación entre giros cercanos con más frecuencia que entre giros lejanos).

Tenga en cuenta que obtendrá una diferente x norte ( r ) en cada paso de Monte Carlo, dependiendo de su configuración actual. Al final, debe promediarlos (tal como lo hace con cualquier otro observable) para obtener el resultado final de la función de correlación espín-espín:

x ( r ) = 1 norte 1 norte = 1 norte x norte ( r )

Una vez que tengas esto, puedes encajar x ( r ) = r β donde con suerte deberías encontrar β = 0.25 . Echa un vistazo a esta otra pregunta sobre detalles sobre el ajuste.

¡Espero que esto ayude!

Gracias por su ayuda, he estado luchando con esto por un tiempo. Quizás pueda ayudar a dilucidar algunos de mis resultados aquí: enlace
Si las sumas llegan a r , no L ?
Ya veo, entonces tu s tu metro ( r ) es explícitamente una matriz, donde cada índice en r corresponde a las muestras. Estaba confundido al principio, pero ahora parece que lo entiendo.
De hecho, para cualquier r, puedes escribir que
s tu metro ( r ) = i L σ ( i , i ) ( σ ( i , i r ) + σ ( i r , i ) + σ ( i , i + r ) σ ( i + r , i ) )
Esto da los 4 valores acoplados para cada diagonal. Luego se dividiría por 4L, ya que se muestrearon L valores diagonales. Esto es lo que inicialmente estaba pidiendo; este sería solo el valor en un índice r de la matriz? Esto supone condiciones de contorno periódicas.
¿También sabría o tendría un recurso sobre cómo calcular la longitud de correlación dada la función de giro-giro?
Debe tener un poco de cuidado con las condiciones de contorno periódicas: si cruza los límites (lo cual está bien en principio), debe tener en cuenta que σ ( i , i ) y σ ( i , i + L 1 ) en realidad son los vecinos más cercanos y necesitan ir a la s tu metro ( 1 ) elemento a pesar de que parece que deben agregarse a s tu metro ( L 1 ) ...
Me temo que no puedo ayudarte con la longitud de la correlación. Sé que es infinito en el punto crítico, pero en general no estoy seguro de cómo se define...
Estoy realmente interesado en esta pregunta. ¿Has podido calcular la longitud de la correlación? Si es así, ¿cómo hiciste eso?