Las listas de celdas (también denominadas a veces listas enlazadas de celdas ) son una estructura de datos en simulaciones de dinámica molecular para encontrar todos los pares de átomos dentro de una distancia de corte dada entre sí. Estos pares son necesarios para calcular las interacciones no enlazadas de corto alcance en un sistema, como las fuerzas de Van der Waals o la parte de corto alcance de la interacción electrostática cuando se utiliza la suma de Ewald .
Las listas de celdas funcionan subdividiendo el dominio de simulación en celdas con una longitud de borde mayor o igual que el radio de corte de la interacción que se va a calcular. Las partículas se clasifican en estas celdas y se calculan las interacciones entre partículas en la misma celda o en celdas vecinas.
En su forma más básica, las interacciones no enlazadas para una distancia de corte se calculan de la siguiente manera:
Dado que la longitud de la celda es al menos en todas las dimensiones, no se puede perder ninguna partícula dentro de las otras.
Dada una simulación con partículas con una densidad de partículas homogénea, el número de células es proporcional e inversamente proporcional al radio de corte (es decir, si aumenta, también lo hace el número de células). Por lo tanto, el número promedio de partículas por célula no depende del número total de partículas. El costo de interactuar dos células está en . El número de pares de células es proporcional al número de células, que a su vez es proporcional al número de partículas . El costo total de encontrar todas las distancias por pares dentro de un corte dado está en , lo que es significativamente mejor que calcular las distancias por pares de manera ingenua.
En la mayoría de las simulaciones, se utilizan condiciones de contorno periódicas para evitar imponer condiciones de contorno artificiales. Mediante listas de celdas, estos límites se pueden implementar de dos maneras.
En el enfoque de celdas fantasma, el cuadro de simulación se envuelve en una capa adicional de celdas. Estas celdas contienen copias envueltas periódicamente de las celdas de simulación correspondientes dentro del dominio.
Aunque los datos (y normalmente también el coste computacional) se duplican para las interacciones fuera del límite periódico, este enfoque tiene la ventaja de ser sencillo de implementar y muy fácil de paralelizar, ya que las células solo interactuarán con sus vecinos geográficos.
En lugar de crear células fantasma, los pares de células que interactúan sobre un límite periódico también pueden utilizar un vector de corrección periódica . Este vector, que se puede almacenar o calcular para cada par de células , contiene la corrección que se debe aplicar para "envolver" una célula alrededor del dominio para que quede vecina de la otra. La distancia por pares entre dos partículas se calcula entonces como
Este enfoque, aunque es más eficiente que el uso de células fantasma, es menos sencillo de implementar (los pares de células deben identificarse en los límites periódicos y el vector debe calcularse/almacenarse).
A pesar de reducir el costo computacional de encontrar todos los pares dentro de una distancia de corte dada de a , el algoritmo de lista de celdas mencionado anteriormente aún tiene algunas ineficiencias.
Considere una celda computacional en tres dimensiones con una longitud de borde igual al radio de corte . Se calcula la distancia por pares entre todas las partículas en la celda y en una de las celdas vecinas. La celda tiene 26 vecinas: 6 que comparten una cara común, 12 que comparten un borde común y 8 que comparten una esquina común. De todas las distancias por pares calculadas, solo alrededor del 16% será en realidad menor o igual a . En otras palabras, el 84% de todos los cálculos de distancia por pares son espurios.
Una forma de superar esta ineficiencia es dividir el dominio en celdas con una longitud de borde menor que . Las interacciones por pares no solo se calculan entre celdas vecinas, sino entre todas las celdas entre sí (sugerido por primera vez en [1] e implementado y analizado en [2] [3] y [4] ). Este enfoque se puede llevar al límite en el que cada celda contiene como máximo una sola partícula, reduciendo así el número de evaluaciones de distancia por pares espurias a cero. Sin embargo, esta ganancia en eficiencia se ve rápidamente compensada por el número de celdas que deben inspeccionarse para cada interacción con una celda , que, por ejemplo en tres dimensiones, crece cúbicamente con la inversa de la longitud del borde de la celda. Sin embargo, establecer la longitud del borde en , ya reduce el número de evaluaciones de distancia espurias al 63%.
En Gonnet [5] se describe y prueba otro enfoque en el que las partículas se clasifican primero a lo largo del eje que conecta los centros de las celdas. Este enfoque genera solo alrededor del 40 % de cálculos de distancia por pares espurios, pero conlleva un costo adicional debido a la clasificación de las partículas.