Skip to content
Snippets Groups Projects
Sasiri Juliana Vargas Urbano's avatar
338016f7

Proyecto Modulo de Datos

Presentado por: Sasiri Juliana Vargas Urbano (@vargass)
A cargo de: Ernesto Medina (@ernestom)
Tema: Monte Carlo cinético para un sistema de reacción-difusión


Dentro de este repositorio se encuentran los siguientes archivos:

CARPETAS:

  • Carpeta 'Archi': Carpeta necesaria para correr el código (actualmente se encuentra vacía)
  • Carpeta 'Archi_articulo': Carpeta que contiene arhivos de las simulaciones presentadas en el artículo
  • Carpeta 'Ejemplos': Carpeta que contiene arhivos ejemplos de las simulaciones
  • Carpeta Img : Contiene las imagenes de este README

ARCHIVOS:

  • Articulo.pdf : Es el documento con el artículo referente al proyecto
  • Explicaciones_cod.ipynb: Notebook de python que contiene el código y explicaciones referentes a su construcción
  • Ejemplo.ipynb : Notebook que permite visualizar los resultados del ejemplo
  • Graficas_articulo.ipynb: Notebook de python que contiene las gráficas presentadas en el artículo
  • Monte_Carlo_cinético_para_un_sistema_de_reacción_difusión.pdf : PPT de la sustentación
  • main.py: Contiene los códigos base explicados en el Notebook.ipynb para su posterior uso
  • run.py: Contiene el código para correr la simulación completa
  • Numba.py: Contiene el código dentro del main.py paralelizado y optimizado con la librería Numba

Tabla de contenido


Sistema de trabajo

Se considera una red unidimensional discreta de longitud 2L con reactantes inicialmente separados, las partículas A se encuentran en la región del espacio −L ≤ x < 0 mientras que las B en la región L > x ≥ 0. Cada sitio de la red puede estar ocupado cuando más por una sola partícula y dichas partículas están sometidas por la siguiente reacción:

donde C es una partícula inerte y β es la tasa de reacción. La dinámica del sistema se define a continuación:

  • Las partículas ejecutan saltos aleatorios exclusivamente entre sus vecinos más cercanos vacíos, moviéndose una distancia ∆x en un intervalo de tiempo ∆t. Estos saltos ocurren con una probabilidad λ∆t, en donde λ es la tasa de salto de tal forma que el coeficiente de difusión (D) está dado por λ=D/∆x2.

  • En los sitios de red −L y L, se tiene flujos de partículas A y B respectivamente, cada uno con corriente J. De esta forma, el número promedio de partículas que entran a la red en un paso de tiempo, es J∆t.

  • Por otro lado, en el sistema una reacción ocurre con una probabilidad β ∆t cuando dos partículas A y B se encuentran una al lado de la otra. Además, se define la constante de reacción como k=β∆x.

Cabe resaltar que en nuestro sistema el estado estacionario se alcanza debido a que en los extremos izquierdo y derecho del sistema se depositan partículas A y B, respectivamente lo que compensa la disminución de partículas debida a la reacción.


Objetivos

OBJETIVO GENERAL:

Encontrar la dinámica del sistema, así como su estado estacionario, por medio del método de Monte Carlo cinético. Posteriormente encontrar la distribución de espaciamientos entre las dos partículas.

OBJETIVOS ESPECIFICOS:

  • Encontrar la distribución de espaciamiento en el estado estacionario
  • Encontrar la evolución de las partículas A en el estado estacionario
  • Encontrar la evolución de las partículas B en el estado estacionario

Archivos importantes

Para entender la estructuración del código, asi como también el sistema de trabajo y los resultados obtenidos, por favor leer y/o ver:


Para correr los códigos

Se presentan los procedimientos para correr el main.py y el Numba.ipynb presentados en este repositorio.

Para correr el código se requiere ingresar los siguientes parametros:

  • L : 1/2 de la longitud del sistema
  • D : Coeficiente de difusión
  • j : Corriente de incerción
  • K : Constante de reacción
  • tiempo : Tiempo de simulación
  • rep : Repeticiones de la simulación
  • nombre: Nombre que le da el usuario a los archivos txt que se generaran

Main.py / run.py

ADVERTENCIA: Antes de correr el código, por favor correr el ejemplo o ir a la sección de uso de Numba.ipynb, ya que para las simulaciones con el main.py presentado, el costo de tiempo es bastante alto.

Las funciones principales para correr el código se encuentran en el archivo 'main.py', para correr el código con el archivo 'run.py' se requiere descargar la carpeta 'Archi' o crear una con ese mismo nombre, en el directorio donde se encuentra 'main.py' y 'run.py', en dicha carpeta se escribiran archivos de formato txt con los resultados de las simulaciones.

Escriba dentro de la terminal:
python run.py [L] [D] [j] [K] [tiempo] [rep] ['nombre']

Ejemplo:
python3 run.py 5 0.5 1 0.1 1000 5000 'Data'

Numba.ipynb

Este es el código optimizado. Para utilizarlo basta con tener una carpeta llamada 'Archi' dentro de la carpeta en donde se encuentre el notebook o descargar la carpeta 'Archi' de este repositorio. Dentro del notebook crear una nueva celda y ejecutar la función ANALISIS tal y como se muestra a continuación:

pool = mp.Pool(mp.cpu_count()) #Inicia de nuevo la paralelización ANALISIS(L=5, dx=1., dt=1., D=0.5, j=1., K=1., tiempo=2000, rep=10, opcion='graficos', nombre = 'Data')

Aquí se añade la primera línea, para que se inicie de nuevo la paralelización, esto es, por si el usuario quiere ejecutar de nuevo la función ANALISIS. Sin embargo, si se desea correr el código una vez, basta con ejecutar la función ANALISIS.


Para visualizar el ejemplo

Correr el archivo 'Ejemplo.ipynb' que contiene los resultados de simulaciones realizadas. Para su correcta visualización, se requiere tener la carpeta 'Ejemplos' en el mismo directorio donde se tiene el notebook. Dentro de este notebook se muestran las imagenes presentadas en la sección de resultados del Articulo.pdf


Referencias

  • M Hoyuelos, H O Martin, and E V Albano. Study of thesteady state of a two-species annihilation process with sepa-rated reactants.Journal of Physics A: Mathematical and Gen-eral, 28(18):L483–L489, sep 1995.
  • Diego Luis Gonz ́alez Cabrera. Notas de clase mec ́anica es-tad ́ıstica. universidad del valle, 2020
  • Daniel ben Avraham and Shlomo Havlin.Diffusion and Reac-tions in Fractals and Disordered Systems. Cambridge Univer-sity Press, 2000.
  • P. L. Krapivsky. Reaction-diffusion processes with nonlineardiffusion.Physical Review E, 86(4), Oct 2012