CODIGO COMPUTACIONAL PARA CONTORNOS PERIODICOS
Cómo vamos a lidiar con los contornos periódicos y la
convención de la mínima imagen, en un programa de simulación?. Vamos a asumir
que, inicialmente, las N moléculas en la simulación, permanecen en una caja
cúbica de lado L, con el origen en su centro, i.e. todas las coordenadas
descansan en el rango de (-1/2 L, 1/2L).
Cuando la simulación procede, estas mol'eculas se mueven en
relación a un sistema periódico infinito. Cuando la molécula deja la caja cruza
uno de sus contornos, es usual poner atención en la imagen de la molécula
entera como la caja, simplemente añadiendo L o substrayendo L, de las
coordenadas apropiadas.
Una manera simple de hacer esto usa un bloque IF en FORTRAN
, para visualizar la posición
inmediatamente después de que las moléculas se han movido.
IF ( RX(I) .GT. BOXL2)
RX(I) = RX(I) - BOXL
IF ( RX(I) .LT. -BOXL2)
RX(I) = RX(I) + BOXL
Aquí, BOXL es una variable que contine la longitud de la
caja L, y BOXL2 es la mitad de la longitud de la caja, procedimientos similares
son aplicados a las coordenadas y y z.
Una alternativa para el bloque If es usar una función
aritmética calculando el número correcto
de la longitud de la caja para ser agregado o substraido :
RX(I) = RX(I)
- BOXL * ANINT ( RX(I) / BOXL)
La función ANINT(X) retorna el entero más próximo a X,
convirtiendo el resultado obtenido a REAL; entonces (-0.49) tiene el valor 0.0,
mientras que ANINT(-0.51) retorna -1.0. Usando estos métodos siempre tenemos
disponibles las coordenadas de las N moléculas que se encuentran en el centro
de la caja. Se verá más adeante como calcular los coefiocientes de transporte
correctos y de esta manera poder especificar las coordenadas de las moléculas;
pero siempre es útil tener un conjunto de coordenadas.
La convención mínima de imagen debe ser codificada de la
misma manera que los ajustes periodicos de contorno. Uno de los dos métodos
mencionados arriba el de la formula intrinseca es la que más se utiliza, por
ser más simple Inmediatamente después de
calcular un vector par de separación, el
siguiente código debe ser aplicado:
RXIJ = RXIJ - BOXL * ANINT( RXIJ / BOXL)
RYIJ = RYIJ - BOXL * ANINT( RYIJ / BOXL)
RZIJ = RZIJ - BOXL * ANINT( RZIJ / BOXL)
Este código garantiza que vamos a obtener el vector mínimo
de imagen, sin importar cuantas "longitudes de caja" aparte de la
imagen original pueden ser.
Los calculos de las distancias de imagen mínima es simplificada por el uso de
unidades reducidas: la longitud de la caja se toma para definir la unidad
fundamental de longitud que se usará en la simulación. Algunos definen a L = 1,
otros prefieren tomar L = 2. Poniendo L = 1, con coordenadas particulares
normalmente en le rango (-1/2 L, 1/2L) la imagen míniuma de corrección expuesta
se vuelve:
RXIJ = RXIJ - ANINT ( RXIJ )
RYIJ = RYIJ - ANINT ( RYIJ )
RZIJ = RZIJ - ANINT ( RZIJ )
LA CUAL ES MÁS SIMPLE, Y RÁPIDA, que el código general para
la longitud de la caja. Esta aproximación es una alternativa para usar el
potencial par para definir unidades reducidas como discutimos en el apéndice B,
y se aplica de manera más general.
No hay comentarios:
Publicar un comentario