¿Cómo puedo incluir un número de partículas variable en una simulación de dinámica browniana?

Programé una simulación de dinámica browniana en dos dimensiones. (Proteínas de grano grueso en superficies con potenciales de interacción, es decir, partículas irregulares). Ahora quiero permitir que las partículas entren o salgan del sistema, en otras palabras, el número de partículas no tiene que conservarse.

¿Alguien sabe una buena manera de hacer eso? ¿Cuáles son algunos errores comunes?


La base de mi simulación es la ecuación de Langevin sobreamortiguada

d X d t = D k B T ( F i norte t + F s ) .
En mi caso tengo difusión anisotrópica, así que básicamente tengo una ecuación de langevin para cada grado de libertad de cada partícula; 2 direccionales y 1 rotacional. El movimiento aleatorio de partículas se incluye en la fuerza estocástica generada a partir de un proceso estándar de Wiener. Los parches de puntos unidos a las partículas median interacciones atractivas, mientras que la repulsión se describe mediante un potencial estándar de esfera blanda. El sistema se mantiene a temperatura constante (incluido en los momentos del movimiento aleatorio). Estoy interesado en las estructuras autoensambladas al final de la simulación, es decir, grupos de diferentes tamaños.

Hasta ahora, mi simulación pasó pruebas importantes y está de acuerdo con las predicciones analíticas de los cálculos estadísticos (conjunto canónico). En experimentos reales, no es tan fácil fijar el número de partículas, ya que las partículas se difunden hacia la superficie durante todo el experimento. Quiero incluir esta observación en mi simulación por computadora, lo que significa que tengo que eliminar partículas y agregar partículas a mi sistema.

Tuve la idea de definir una velocidad a la que las partículas seleccionadas al azar se eliminan y se agregan al sistema. Ahora me temo que este enfoque es demasiado ingenuo y quería saber si alguien tiene una sugerencia para una solución adecuada a esto o al menos algunos consejos. Tal vez hay algo que me estoy perdiendo.

Preferiría tener un respaldo teórico para mi idea, como por ejemplo, las simulaciones canónicas grandiosas de Monte Carlo.

¿Estás haciendo una pregunta de programación? ¿O una pregunta de física?
En realidad, una combinación de ambos. Sé que hay algoritmos para grandes conjuntos canónicos para enfoques de Montecarlo. Estoy buscando algo similar para simulaciones de BD.
Solo estoy pensando en voz alta. Si ha estado trabajando con un área cuadrada o rectangular hasta ahora, tal vez podría intentarlo con un toroide: una molécula que pasara por el borde derecho reaparecería en el borde izquierdo. Lo mismo ocurre con los bordes superior e inferior. Luego podría recortar un rectángulo más pequeño de la superficie del toro y obtendría una cantidad variable de partículas.
Quiero agradecerles por el término "gran Monet-Carlo canónico". Buscar eso me ha hecho encontrar algunas cosas interesantes sobre las que debería aprender. Me enseñaste algo con tu pregunta.
@EricDuminil Uso condiciones de contorno periódicas aplicadas a una superficie rectangular, ¿no es esto equivalente a un toroide?

Respuestas (2)

Introducir la creación y aniquilación de partículas en la dinámica browniana implicará cuestiones similares a las de la dinámica molecular. Puede agregar los movimientos canónicos estándar de Monte Carlo (GCMC) a su esquema dinámico. El peligro práctico es que, habiendo aceptado un movimiento, las consecuencias para la dinámica a veces serán dramáticas: fuerzas muy grandes entre las partículas y, por lo tanto, desplazamientos muy grandes. Para evitar esto, se han ideado esquemas para insertar partículas gradualmente, o incluso introducir un parámetro continuo en el Lagrangiano que controla la aparición de la partícula adicional. En Agarwal et al, New J Phys , 17 , 083042 (2015), que es de acceso abierto, revisan algunos de estos métodos. Sin embargo, como señalan, tales enfoques no se han utilizado ampliamente y son algo complicados. Creo que lo mismo ocurre con el enfoque propuesto por Agarwal. No recomendaría seguir ese camino, pero al menos puedes considerar estas alternativas, con una adecuada adaptación de la dinámica molecular a la dinámica browniana.

Aquí hay otra posibilidad. Utilice Monte Carlo en lugar de la dinámica browniana. La escala de tiempo es algo ficticia, pero las partículas aún se difundirán de manera realista, y podría decirse que está abandonando la dinámica completamente realista de todos modos al agregar movimientos GCMC que permiten que las partículas aparezcan y desaparezcan.

Hay una solución intermedia. Dinámica browniana sin inercia , utiliza un algoritmo

r ( t + d t ) = r + D k T F d t + 2 D d t GRAMO
dónde D es el coeficiente de difusión, T la temperatura, F la fuerza que actúa sobre la(s) partícula(s), y GRAMO un conjunto de números aleatorios gaussianos normalizados independientes. Se puede demostrar que esto es (casi) equivalente a "Smart Monte Carlo" (SMC), volviendo a un artículo antiguo de Rossky et al, J Chem Phys , 69 , 4628 (1978) . La diferencia esencial es que SMC aplica una etapa de aceptación/rechazo al paso anterior, basada en una fórmula un poco complicada que involucra las fuerzas al principio y al final. Esto garantiza el muestreo del conjunto correcto y puede ser la forma de salvar su simulación de las consecuencias de grandes fuerzas si acaba de agregar/eliminar partículas utilizando el procedimiento habitual de GCMC. Depende de si está preparado para rechazar un (pequeño, O ( d t 2 ) ) fracción de pasos de avance.

Este enfoque también se puede relacionar con "Hybrid Monte Carlo" (HMC), Duane y otros, Phys Lett B , 195 , 216 (1987) . Simplemente sustituya D = ( k T / 2 metro ) d t en la ecuación anterior para dar

r ( t + d t ) = r + 1 2 ( d t 2 / metro ) F + k T metro d t GRAMO
Este tiene la forma de un algoritmo estándar (velocidad Verlet) para dinámica molecular, donde el último término corresponde a elegir velocidades aleatorias al inicio de cada paso, a partir de la distribución de Maxwell-Boltzmann. En HMC, también escribe el resto del algoritmo de Verlet de velocidad, para avanzar las velocidades, calcular el cambio en la energía cinética sobre el paso, agregarlo al cambio en la energía potencial y usar la energía total resultante en una aceptación de Metropolis / criterio de rechazo. Luego, las velocidades se desechan y se generan de nuevo al comienzo del siguiente paso. Esto resulta ser exactamente lo mismo que SMC, pero más fácil de escribir. La razón de la pequeña fracción de movimientos rechazados, O ( d t 2 ) , es más obvio: la energía total se conserva a este orden.

Si su dinámica browniana es del tipo no inercial, este podría ser el enfoque que recomendaría:

  1. Inserte/elimine partículas a intervalos (entre pasos de avance en el tiempo) utilizando el método de Monte Carlo gran canónico estándar
  2. Incluya una decisión de aceptación/rechazo de Metropolis en los pasos de avance de tiempo, como se describe anteriormente, lo que significa que se rechazará una pequeña fracción de movimientos, pero garantizando que se muestreará el conjunto correcto.

Tengo una sugerencia más simple, que podría ser preferible o no según sus circunstancias. Siga con su dinámica browniana existente, pero haga su simulación tridimensional, en lugar de bidimensional, con una superficie plana que atraiga sus partículas de grano grueso. El resto del sistema sería un gas de baja densidad actuando como reservorio de partículas. Mucho dependerá de si puede ajustar los parámetros para hacer que el estado termodinámicamente estable de su sistema sea una monocapa adsorbida en la superficie. Si esto es posible, debería ver las partículas que llegan y salen de la superficie de una manera físicamente razonable.

Muchas gracias por tomarse el tiempo para responder a mi pregunta. Decidí hacer una simulación BD para tener fácil acceso a la posición de cada partícula. Con BD también es posible tener en cuenta la flexibilidad de la interfaz de enlace de forma natural. Su última sugerencia podría funcionar, pero creo que la implementación (cambios en mi código fuente) llevará mucho tiempo. Sin embargo, mencionaste algunas cosas interesantes y las reviso una por una.

Tu pregunta es bastante amplia. Así que mi respuesta va a ser bastante amplia.

Algunas de las cosas habituales de las que preocuparse en los cálculos de Monte-Carlo incluyen las siguientes. Pero hay más.

  • ¿Ha registrado cuidadosamente las suposiciones que usará para formar sus cálculos? Tal vez cosas como temperatura constante, ausencia de flujo de fluido, gravedad despreciada, etc. Debe buscar opciones que haya tomado y que afecten la forma en que realizó los cálculos en lugar de detalles triviales que no marcan ninguna diferencia.
  • ¿Ha prestado la atención adecuada a los problemas mundanos habituales de calidad y corrección del software? Yada yada, nombres de variables útiles, programa estructurado, pruebas básicas, al menos una documentación mínima del comportamiento del programa, facilidad de entrada, arreglo sensato de salida, etc.
  • ¿Has normalizado correctamente tu cálculo? Puede tener 1 millón de partículas en su cálculo, pero hay muchas más moléculas involucradas en un experimento real. ¿Tienes una forma razonable de escalar eso? Esto se aplica a cada aspecto de su cálculo. ¿Cómo se ajusta la temperatura del material de trabajo? ¿Cómo establecer la densidad? ¿Cómo escalar cuentas? Etcétera.
  • ¿Ha conservado las cantidades que deben conservarse? Quiere cambiar el número de partículas. ¿Coincide con el proceso físico de su experimento? Por ejemplo, partículas que pasan por el borde de su experimento. O podría tener un lugar donde inyectar partículas. Tal vez deba preocuparse por la energía o la masa total o la proporción del tipo de partícula.
  • ¿Tiene una idea de cómo están cambiando realmente las cosas que deberían cambiar? Así que inyectas nuevas partículas y las observas pasar por el movimiento browniano. ¿Cambia eso las condiciones locales de alguna manera importante? Densidad, viscosidad, temperatura, etc.
  • ¿Tiene cuentas que tengan sentido? Tal vez esté buscando la densidad del número de partículas en varios lugares. ¿Estás contando las cosas correctas y contándolas razonablemente?
  • ¿Tiene las condiciones del sistema en valores razonables? Entonces las partículas se mueven bajo el movimiento browniano. ¿Tienes valores razonables para la velocidad a la que se mueven? ¿La distancia promedio que recorren antes de chocar? ¿El ángulo al que se mueven? ¿El cambio de energía en una colisión?
  • ¿Tiene algún tipo de fuente de datos autorizada para la validación? Algunas fuentes utilizadas con frecuencia son experimentos, cálculos de algún otro programa que se sabe que es preciso o cálculos manuales que se sabe que son precisos.