lunes, 29 de febrero de 2016

CODIGO COMPUTACIONAL PARA CONTORNOS PERIODICOS

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

zen consultora

Blogger Widgets

Entrada destacada

Platzy y el payaso Freddy Vega, PLATZI APESTA, PLATZI NO SIRVE, PLATZI ES UNA ESTAFA

  Platzy y los payasos fredy vega y cvander parte 1,  PLATZI ES UNA ESTAFA Hola amigos, este post va a ir creciendo conforme vaya escribiend...