¿Cómo determino el equilibrio en una simulación Monte Carlo NVTNVTNVT?

Estoy ejecutando una simulación Monte Carlo (algoritmo Metropolis) de NVT (número constante de partículas, volumen y temperatura) de partículas en dos dimensiones que interactúan a través del potencial de Lennard-Jonse

tu = 4 ( 1 r 12 1 r 6 ) ,
(en unidades reducidas). Las condiciones de contorno son periódicas.

A partir de esta simulación estoy calculando la presión instantánea y la energía potencial. En los primeros pasos, el sistema no está en equilibrio, por lo que debo comenzar a promediar después de que el sistema esté en equilibrio.

Estoy comenzando mi simulación desde una configuración aleatoria.

Mi pregunta : incluso después de que el sistema ha alcanzado el equilibrio, fluctúa alrededor de este equilibrio. Estas fluctuaciones pueden ser grandes para temperaturas altas. Entonces, ¿cómo sé que he alcanzado el equilibrio?

Estos son algunos ejemplos de la curva:La energía vs.  paso de simulación, para una temperatura alta (un color más cálido es una densidad más alta)

La energía vs. paso de simulación, para una temperatura alta (un color más cálido es una densidad más alta)
La energía vs.  paso de simulación, para una temperatura baja (un color más cálido es una densidad más alta)

La energía vs. paso de simulación, para una temperatura baja (un color más cálido es una densidad más alta)La energía vs.  etapa de simulación, para una temperatura alta, solo para densidades bajas.  en este gráfico es más difícil saber si alcanzamos el equilibrio (un color más cálido es una densidad más alta)

La energía vs. etapa de simulación, para una temperatura alta, solo para densidades bajas. en este gráfico es más difícil saber si alcanzamos el equilibrio (un color más cálido es una densidad más alta)

Esta es una buena pregunta, pero la respuesta en la literatura científica para cuando un sistema se ha equilibrado es "cuando te apetezca". De hecho, es fácil encontrar personas que publican los resultados de nuevos fenómenos, cuando en realidad son meros artefactos de falta de equilibrio. Incluso cuando haya alcanzado un "estado estable", no se garantiza que haya encontrado un estado representativo del mínimo de energía libre. Un líquido sobreenfriado accidentalmente (por ejemplo, a través de efectos de tamaño finito) sirve como ejemplo.
interesante otro post con la misma pregunta pero en un contexto teórico Funciones y escalas de longitud
Esa pregunta es diferente a la mía, porque mi equilibrio tiene fluctuaciones...
Todo está en mi pregunta... "Estoy ejecutando una simulación Monte Carlo NVT (número constante de partículas, volumen y temperatura) (algoritmo Metropolis) de partículas en dos dimensiones que interactúan a través del potencial Lennard-Jonse (U=4(1r12− 1r6)U=4(1r12−1r6), en unidades reducidas). Las condiciones de contorno son periódicas". No entiendo qué son los parámetros de saturación. los gráficos muestran 500000 ejecuciones
La saturación de @igael es cuando se alcanza el equilibrio térmico. En una simulación MonteCarlo tratamos de estimar una integral: mi tu k T tu d tu donde la integral es sobre todos los estados posibles. entonces creamos un conjunto de sistemas que representan las configuraciones más probables (las configuraciones de equilibrio térmico). damos a cada configuración una probabilidad de mi tu k T para reflejar el término exponencial. por lo que se alcanza la "saturación" cuando hemos simulado suficientes configuraciones del sistema, de modo que podemos decir que nuestra suma finita refleja la integral infinita. Estoy preguntando cuándo se alcanza

Respuestas (5)

Veo que esta pregunta ha sido trasladada a la página de inicio nuevamente. Recientemente respondí una pregunta similar en https://math.stackexchange.com/a/2920136/575517 , así que daré la esencia aquí, en caso de que alguien lo encuentre útil.

Esta pregunta "¿Cómo sé que la ejecución de la simulación ha alcanzado el equilibrio?" a menudo se pasa por alto y se deja como una "regla general". Como se discutió en otras respuestas, generalmente se requiere que un tiempo de "equilibrado" o "quemado" sea al menos tan largo como el tiempo de correlación τ A de la variable A de interés o, mejor aún, todas las variables de interés (tomando la mayor τ ). Uno descarta esa parte de la trayectoria y comienza a acumular promedios a partir de entonces.

Los problemas aquí son que uno necesita una estimación de τ A de antemano, y también que este argumento se basa libremente en la teoría de la respuesta lineal : es decir, que la relajación de un estado ligeramente perturbado al equilibrio ocurre en una escala de tiempo dada por τ A , que es una propiedad de la función de correlación de tiempo de equilibrio. No hay garantía de que la relajación de una configuración inicial arbitrariamente preparada siga esta ley, aunque τ A podría proporcionar una guía razonable.

Sin embargo, conozco al menos un artículo en el que John Chodera intentó abordarlo de manera objetiva: https://doi.org/10.1101/021659 , que también se publicó en J Chem Theo Comp, 12, 1799 (2016) .

No intentaré reproducir las matemáticas aquí, pero la idea básica es usar el procedimiento para estimar errores estadísticos en secuencias de datos correlacionados, lo que implica estimar el tiempo de correlación (o la ineficiencia estadística, que es el espacio entre muestras efectivamente independientes). ) - y aplicándolo al intervalo ( t 0 , t máximo ) que cubre el período entre el final (propuesto) del período de equilibrio, t 0 , y el final de todo el conjunto de datos, t máximo . Este cálculo se comporta de forma predecible si el conjunto de datos está en equilibrio: las fluctuaciones d A Δ t 2 de un promedio de tiempo finito

d A Δ t = A Δ t A , A Δ t = 1 Δ t t t + Δ t d t A ( t )
depender de manera conocida del intervalo de promediación Δ t . Los orígenes del tiempo t se eligen dentro del intervalo de interés, ( t 0 , t máximo Δ t ) ; las fluctuaciones se calculan a partir de todos los periodos Δ t que se encuentra dentro de ese intervalo. El método realiza sistemáticamente este cálculo en función de t 0 , reduciéndolo desde un valor alto inicial hacia el inicio de la ejecución. En algún momento, se espera que se observen desviaciones del comportamiento esperado. Ese punto se considera el final del período de equilibrio.

De todos modos, leer ese documento debería ser útil para aclarar este problema. El autor también proporciona una pieza de software de Python para implementar el cálculo automáticamente, por lo que también puede ser de uso práctico.

Como dicen muchos comentarios, no hay una única y mejor respuesta, cada uno usa un método diferente. La solución que encontraste es buena, pero ¿cómo defines cuándo se ha alcanzado el equilibrio?

Para ello necesitas comprobar los últimos valores de la simulación (Energía, presión, etc.), por lo que eliges un conjunto de configuraciones previas que comprobarás:

norte = 10

Y con los parámetros que definen tu equilibrio calculas el valor medio y la desviación estándar:

PAG , Δ PAG 2

Esos valores no deberían cambiar demasiado después de algunos pasos. si almacena algunos valores medios y su varianza, verá que la media converge al valor del sistema y la varianza sobre los valores medios temporales en cada paso irá a cero.

V a r ( PAG i , PAG i 1 , . . . , PAG i norte ) 0

Por lo tanto, lo que debe elegir como parámetro para el equilibrio es cuántos pasos considera para el valor medio y cuántos valores medios usa para calcular la varianza.

PD: Las fluctuaciones después de que el sistema ha alcanzado el equilibrio son normales y también que las fluctuaciones aumentan con la temperatura.

No estoy seguro de haberte entendido correctamente. cuando dices "valor medio" ( < PAG > ) ¿Quiere decir un promedio sobre N pasos de la simulación? ¿A qué te refieres cuando dices "temporal"? no hay tiempo de por medio...
Quiero decir que haces un promedio de algunos valores de <P> durante los últimos N pasos (este N es algo que tú decides, los últimos 10 o 20 pasos) y este valor promedio debe converger. Entonces guarda algunos valores promedio para verificar nuevamente la varianza que debería ser un número pequeño (otra vez otra decisión que debe tomar, ¿1e-3? 1e-2? 1e-5?). Sé que es caótico el hecho de que hagas más estadísticas con algunos datos estadísticos...
Y pido disculpas porque escribí valor medio cuando quise decir valor medio y gracias por la edición
Ok ahora te entiendo. Parece lógico que la varianza sea cero, pero ¿y si no es necesario? Debido a que tenemos la temperatura tal vez en equilibrio, ¿el sistema fluctúa con una variación constante mayor que cero? ¡Ni siquiera es lógico pensar que la varianza no es constante! Son fluctuaciones térmicas después de todo.

No puedes saberlo con seguridad.

En la simulación, el sistema cambia constantemente de manera caótica y, en general, es posible que después de algún período de relativa constancia de las variables macroscópicas, ocurra algún cambio radical, como una transición de fase.

Sin embargo, si el sistema es muy simple, como un gas de esfera dura, uno puede calcular teóricamente cómo debería ser el estado de equilibrio para restricciones dadas como el volumen y la temperatura. Entonces, si los valores derivados de la simulación se aproximan a esos valores teóricos, podemos decir que lo más probable es que estemos observando una transición al equilibrio y no va a ocurrir nada sorprendente.

Si no conocemos los valores de las variables en equilibrio termodinámico, no podemos decir que el sistema se está acercando a él.

Sin embargo, también existe la idea de equilibrio termodinámico restringido, definido solo para un período de tiempo limitado que nos interesa. Entonces, el sistema está en equilibrio, si la estimación de la energía cinética promedio es uniforme en toda la región del espacio del sistema y si se observa la fluctuación en el tiempo y el espacio es consistente con la distribución de Boltzmann, y si lo mismo es cierto para otras cantidades físicas de interés (presión promedio, energía potencial neta).

Creo que es totalmente normal tener mayores fluctuaciones de las funciones termodinámicas al aumentar la temperatura. De lo que no estoy tan seguro es si eso pertenece a una situación realista o no...

Si conoce la forma de la función de distribución de partículas resultante, puede adivinar si su sistema ha alcanzado el equilibrio mediante el cálculo de su promedio, haciendo el cálculo de la función de distribución en cada n pasos de tiempo (300 pasos de tiempo ha sido un buena n en mis simulaciones de Monte Carlo).

Debe tener en cuenta que se supone que una simulación de Monte Carlo ya está simulando un sistema de equilibrio, por lo que no debe esperar observar ningún fenómeno dinámico al usarla (no puede observar la aparición de burbujas en el grueso de una mezcla, por instancia).

Si está configurando el sistema para un amplio rango de temperaturas, cambiar el parámetro de desplazamiento podría ser una buena idea ya que la tasa de aceptación depende de la relación (energía nueva-energía antigua)/T.

Encontré una respuesta en el libro Simulaciones de Monte Carlo en física estadística: una introducción (por K.Binder, DWHermann), página 35.

Para determinar el equilibrio, necesitamos ejecutar la simulación varias veces, digamos norte r tu norte veces. definimos el promedio < > T como promedio después t pasos de la simulación:

A ( t ) T = 1 norte r tu norte yo = 1 norte r tu norte A ( t , yo )
Donde A es alguna propiedad física, la energía o la presión por ejemplo. A ( t , norte ) es el valor de esta propiedad en el tiempo (paso de simulación) t de la n-ésima simulación. Ahora definimos la "función de relajación no lineal":
ϕ A ( k ) = A ( k ) T A ( ) T A ( 0 ) T A ( ) T
Dónde A ( ) T es el promedio de A en el último paso de simulación, para norte r tu norte simulaciones Esta función de relajación llega a cero después de algún paso t. el tiempo de relajación de esta función es:
τ A = 0 ϕ ( t ) d t
Todavía no estoy seguro de por qué este es el tiempo de relajación, me encantaría que alguien pudiera explicarme. Entonces, si este es el tiempo de relajación, entonces el tiempo durante el cual el sistema alcanza el equilibrio debe ser mucho más grande que este tiempo:
t s i metro tu yo a t i o norte τ A
dado que diferentes propiedades pueden tener diferentes tiempos de relajación, debemos considerar el tiempo de relajación más lento para equilibrar el sistema.

Con respecto a su pregunta: el comportamiento de relajación típico es algo exponencial como ϕ = Exp t / τ . Ves que puedes inferir τ por integración. El problema (y estoy seguro de que el Sr. Binder lo señala) es: ¿Cómo elegir A ? Simplemente puede buscar los tiempos de relajación más largos, pero esto resultará no ser práctico. Por lo tanto, deberá encontrar la escala de tiempo en la que los procesos relevantes para su problema se han relajado.